Professional Documents
Culture Documents
Dijkstra
Dijkstra
h>
#include<stdlib.h>
#define N 6
#define INF 10000
void print_distance(int [],int);
void Dijkstra(int [][N],int); //Dijkstra brze konvergira, ima samo pozitivne veze,
pohlepan je, //ne pamti cvorove preko kojih ide, samo za neusmjerene
int minD(int d[],int Q[]);//vraca indeks cvora koji je najmanje udaljen od
odredenog // cvora
int main()
{
int G[N][N]={{0,4,INF,2,INF,INF},{4,0,5,1,INF,INF},{INF,5,0,8,2,6},
{2,1,8,0,10,INF},{INF,INF,2,10,0,3},{INF,INF,6,INF,3,0}};
int n,i,j,s;
}
printf("\n");
}
Dijkstra(G,s-1);
return 0;
return min_index;
}
void Dijkstra(int G[N][N], int s)
{
int d[N],pret[N];//d[N]=niz udaljenosti svakog �vorova od source �vora,
//pret[N]=prethodnici(za rekonstrukciju najkra�eg puta
//d[i] �e sadr�avati najkracu udaljenost od source �vora do i
int i, j;
//inicijalizacija
int Q[N]={0};//Q=niz neobradenih �vorova,�lanovi inicijalizirani na nulu
int q;//q=izabrani �vor, po�injemo sa source �vorom
for(i=0;i<N;i++){
if(i!=s){
d[i]=INF;
pret[i]=-1;
}
}
d[s]=0;//udaljenost source cvora od sebe samog = 0
for (i=0;i<N-1;i++)
{
// izaberemo cvor s najmanjom udaljenoscu(koji jos nije obraden)
//u prvoj iteraciji uzimamo cvor s(source cvor)
q=minD(d,Q); //vraca manju vrijednost od ove dvije
print_distance(d,s);
}