#ifndef __ACO_H__
#define __ACO_H__



typedef struct NMesta
{
	int Mesto;
	struct NMesta *Dalsi;
}T_NMesta;
	
typedef struct 
{ 
	T_NMesta *NMesta;
	int AktMesto;//mesto ve kterem mravenec prave je	
} T_Mravenec;



double SpoctiTau0(double ***V_TabHran, int C_VelTabHran, int C_NeexistujiciHrana);
T_Mravenec *InicializujMravence(int C_PocetMest);
int **VytvorSmerovaciTabulku(double ***V_TabHran, int **V_SmerTab, int C_VelTabHran, int C_MaxMest);
int SmerovaniMravence(double ***V_TabHran, int **V_SmerTab, int C_VelTabHran, int C_MaxMest, T_Mravenec *V_Mravenec, double C_Beta, double C_q0, int C_NeexistujiciHrana);
int PohniMravencem(double ***V_TabHran, T_Mravenec *V_Mravenec, int C_CiloveMesto, double C_Ro, double C_Tau0, int *V_AktCesta);
int SpoctiDelkuAktCesty(int *V_AktCesta, double ***V_TabHran, int C_VelTabHran);
int AktualizujGlobalneFeromon(double ***V_TabHran, int *V_MinCesta, int C_VelTabHran, int C_MinDelkaCesty, double C_Ro);

#endif 
