diff --git a/route-planning.md b/route-planning.md new file mode 100644 index 0000000..e49be7b --- /dev/null +++ b/route-planning.md @@ -0,0 +1,56 @@ +# Route planning + +## Spis treści +* [Informacje](#informacje) +* [Pętla główna](#definicja pętli głównej strategii przeszukiwania) +* [Funkcja następnika](#definicja funkcji następnika) +* [Heurystyka](#definicja przyjętej heurystyki) + + +## Informacje + +Omawiane fragmenty kodu znajdują się w pliku ```dijkstra.py```. +Po uruchomieniu programu, użytkownik ma do wyboru samodzielne sterowanie traktorem przy pomocy strzałek (1) lub podawanie punktów wykorzystujące planowanie ruchu (0). Przy wyborze drugiej z opcji, aby wykonać ruch, użytkownik w aktywnym oknie programu naciska spację, po czym podaje dwa punkty. + +## Pętla główna + +Implementacja algorytmu Dijkstry: + +``` +def dijkstra(src): + dist = [sys.maxsize] * len(graph) + dist[src] = 0 + sptSet = [False] * len(graph) + + for cout in range(len(graph)): + u = minDistance(dist, sptSet) + sptSet[u] = True + for v in range(len(graph)): + if graph[u][v] > 0 and sptSet[v] == False and dist[v] > dist[u] + graph[u][v]: + dist[v] = dist[u] + graph[u][v] + + return dist +``` + +Dla ```src``` będącego wierzchołkiem źródłowym, funkcja zwraca koszt przejścia do każdego punktu w grafie w postaci listy ```dist```. + +Dopóki nie zostaną rozpatrzone wszystkie wierzchołki, pętla: +* za wierzchołek ```u``` przyjmuje wierzchołek najbliższy źródła, który nie został jeszcze rozważony +* dla każdego sąsiada ```v``` wierzchołka ```u```, jeżeli przez ```u``` da się dojść do ```v``` szybciej niż dotychczasową ścieżką, to wykonuje podstawienie: ```dist[v] = dist[u] + graph[u][v]```. + + +## Funkcja następnika + +``` +def minDistance(dist, sptSet): + mini = sys.maxsize + for v in range(len(graph)): + if dist[v] < mini and sptSet[v] == False: + mini = dist[v] + min_index = v + return min_index +``` + +Funkcja zwraca indeks wierzchołka, który jest najbliższej źródła, a nie został jeszcze rozważony, przeszukując w tym celu pozostałe wierzchołki grafu. + +## Heurystyka \ No newline at end of file