2014-10-27 2 views
0

Я пытаюсь реализовать алгоритм Dijsktra в C#.Алгоритм Dijsktra в C#

У моего кода есть ошибка в функции, чтобы найти вершину с минимальным значением расстояния, из набора вершин, еще не включенных в кратчайшее дерево путей.

Ошибка: использование неназначенной локальной переменной min_index. и это происходит по возврату min_index;

Можете ли вы сказать мне, что я сделал неправильно, пожалуйста?

Вот код функции =

// Utility function to find the vertex with minimum distance value, from 
    // the set of vertices not yet included in shortest path tree 
    int minDistance (int[] dist, bool[] sptSet) 
    { 
     // Initialize min value 
     int min = INT_MAX, min_index; 

     for (int v = 0; v < V; v++) 
     { 
      if (sptSet[v] == false && dist[v] <= min) 
      { 
       min = dist[v]; 
       min_index = v; 
      } 
     } 

     return min_index; 
    } 

Спасибо.

+0

Это не ответ на ваш вопрос, но лучше сказать '! SptSet [v]' вместо 'sptSet [v] == false'. – ahruss

ответ

3

Ваш метод может Возвращаемое значение min_index, которое никогда не было установлено.
Вы должны инициализировать его перед:

int min = INT_MAX; 
int min_index = -1; 
0

Я думаю, что в случае, если ваш, если условие не выполняется каждый раз, когда вы пытаетесь вернуть значение, которое Unassigned.

Смежные вопросы