PDA

View Full Version : کوتاه ترین مسیر( دیکسترا)



hamed_z2001
سه شنبه 21 خرداد 1392, 12:04 عصر
درود.من کد دیکسترا نوشتم ولی هر کاریش میکنم جواب نمیده.کدشو میذارم .کسی میتونه منوراهنمایی کنه؟؟؟




public static void Dijkstra(int n){
int Max = 100;
int unlimited = 10000000;
int [] distance = new int [Max];
int parent [] = new int [Max];
boolean visited[] = new boolean[Max];
int weight [][]=new int [Max][Max];
int cost [] = new int [Max];
for (int i = 1; i <=n; i++) {
distance[i] = unlimited;
parent[i] = 0;
visited[i] = false;
}
distance[1]=0;
for (int j = 1; j <=n; j++) {
int x = -1 , min = unlimited;
for (int i = 1; i <= n; i++) {
if(!visited [i] && distance[i]< min)
{
min = distance[i];
x=1;
}
if (x== -1)
return ;
visited[x]=true;
for (int y = 1; y <= n; y++) {
if(!visited[i] && distance [x] + weight [x][y]<distance[y]){
distance[y]=distance[x];
parent[y]=x;
}
}
}
}

yegane8
چهارشنبه 22 خرداد 1392, 16:56 عصر
خوب شما باید اول cost رو مقدار دهی کنی بعد با توجه به Cost اولین عنصر ی رو که cost اش از هم کمتره رو به عنوان visited بگیری بعد باز با توجه به cost اونی که visit شده با عناصری همجوار dist ها رو مشخص کنی و اوونی که کمترین dist رو داشت بگیری به عنوان visted بعدی همین طور تا اخر