Dijkstra's Algorithm Method 2
C Program For Dijkstra's Algorithm(Greedy Algorithm) Method 2 Source Code: #include<stdio.h> #include<conio.h> #define F 9999 int search_for_qm(char[],int); int search_vstar(char[],int[],int); void display(char[],int[],char[],int); void main() { int i,sv,dist[50],vstar,n,j,s=0; char status[50],next[50]; int matrix[7][7]={{F,3,6,F,F,F,F},{3,F,2,4,F,F,F},{6,2,F,1,4,2,F},{F,4,1,F,2,F,4}, {F,F,4,2,F,2,1},{F,F,2,F,2,F,1},{F,F,F,4,1,1,F}}; clrscr(); printf("\n executing the dijkstra algooooo"); sv=0; n=7; status[sv]='!'; dist[sv]=0; next[sv]='*'; for(i=0;idist[vstar]+matrix[vstar][i]) { dist[i]=dist[vstar]+matrix[vstar][i]; next[i]=vstar+65; } } } display(status,dist,next,n); } printf("\n printing d considr vector............"); for(i=1;i to%c",next[i],i+65); printf("\n d shortest paTH.............."); for(i=1;i<n;i++) { for(j=0;j<n;j++) { if(next[i]==j+65) { if(i==n-1) printf("%d",matrix[j][i]); else printf("%d+",matrix[j][i]); s=s+matrix[j][i]; break; } } } printf("= %d",s); getch(); } int search_for_qm(char status[],int n) { int i=0; while(i!=n && status[i]!='?') i++; if(i==n) return 0; else return 1; } int search_vstar(char status[],int dist[],int n) { int i,minpos=-1; for(i=0;i<n;i++) { if(status[i]=='?') { if(minpos==-1) minpos=i; else if(dist[i]<dist[minpos]) minpos=i; } } return minpos; } void display(char status[],int dist[],char next[],int n) { int i; printf("\n vertex|"); for(i=0;i<n;i++) printf("%c",i+65); printf("\n status|"); for(i=0;i<n;i++) printf("%c", status[i]); printf("\n dist |"); for(i=0;i<n;i++) { if(dist[i]==F) { printf("-"); } else printf("%d",dist[i]); } printf("\n next |"); for(i=0;i<n;i++) printf("%c", next[i]); printf("\n"); }
Tags:
Graph
0 comments