نمايش پست تنها
قديمي ۰۹-۱۹-۱۳۹۰, ۱۰:۰۵ قبل از ظهر   #1 (لینک دائم)
venouse
عضو جدید
 
آواتار venouse
 
تاريخ عضويت: مهر ۱۳۸۹
پست ها: 3
تشكرها: 1
0 تشكر در 0 پست
پيش فرض الگوریم دیکسترا

با سلام . اگه کسی راجع به مرتبه اجرایی این الگوریتم راهنماییم کنه ممنون میشم.


1. #include<stdio.h>
2. #include<conio.h>
3. #define INFINITY 100
4. #define MEMBER 1
5. #define NOMEMBER 0
6. #define M 5
7. void shortest(intw[][M],int s,int t,int *pd)
8. int main()
9. {
10. int w[m][m]={{100,7,4,6,1},
11. {100,100,100,100,100},
12. {100,2,100,5,100},
13. {100,3,100,100,100},
14. {100,100,100,1,100}};
15. int pd,s=0,t=1;
16. clrscr();
17. shortest(w,s,t,&pd);
18. printf("Sourse is %d, Destination is %d\n",s,t)
19. printf("length of shortest path is:%d",pd)
20. getch();
21. return 0;
22. }
23. void shortest(intw[][M],int s,int t,int *pd)
24. {
25. int distance[M],found[M];
26. int current,i,k,dc;
27. int smallDist,newDist;
28. //initialization
29. for(i=0;i<m;i++)
30. {
31. found[i]=NOMEMBER;
32. distance[i]=INTIFINITY;
33. }
34. found[s]=MEMBER;
35. distance[s]=0;
36. current=s;
37. while(current!=t)
38. {
39. smallDist=INTIFINITY;
40. dc=distance[current];
41. for(i=0;i<m;i++)
42. if(found[i]==NOMEMBER)
43. {
44. newDist=dc+w[current][i];
45. if(newDist<distance[i])
46. distance[i]=newDist;
47. //determin the smallest distance
48. if(distance[i]<smallDist)
49. {
50. smallDist=distance[i];
51. k=i;
52. }
53. }//end of for,if
54. current=k;
55. found[current]=MEMBER;
56. }//end of while
57. *pd=distance[t];
58. }

venouse آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online