/// <summary> /// Dijsktra algoritam za trazenje najmanjeg rastojanja i odgovarajucih /// putanja. Graf mora imati sve pozitivne tezine grana ali moze da bude neusmeren /// i/ili da sadrzi cikluse (petlje). /// </summary> /// <param name="start"></param> public void Dijkstra_shortest_path(IUndirectedGraph <TVertex, TEdge> graph, TVertex start) { //Inicijalizujemo kolekcije Initialize(graph, start); minQueue.Clear(); minQueue.Insert(start); while (minQueue.Count > 0) { TVertex u = minQueue.Remove(); if (vertexColors[u] == VertexColor.Black) { continue; } vertexColors[u] = VertexColor.Black; OnExamineVertex(u); foreach (TEdge edge in graph.AdjacentEdges(u)) { TVertex v = graph.MateOf(u, edge); if (RelaxEdge(u, v, edge)) { vertexColors[edge.Target] = VertexColor.Gray; minQueue.Insert(v); OnEdgeRelaxed(edge); } } } }