Algorytm najmniejszej krawędzi

Info
Nazwa tego artykułu jest autorskim tłumaczeniem. Prawdopodobnie nie jest to nazwa oficjalnie używana w polskiej literaturze.
Algorytm najkrótszej krawędzi Przykładowe wykonanie algorytmu
Algorytm najmniejszej krawędzi – algorytm służący do rozwiązywania problemu komiwojażera. Jest to algorytm wykorzystujący strategię zachłanną, jednak w inny sposób, niż algorytm najbliższego sąsiada. W anglojęzycznej literaturze algorytm jest najczęściej określany po prostu jako greedy algorithm (algorytm zachłanny), w skrócie GR.

Działanie algorytmu

Algorytm działa podobnie do algorytmu Kruskala poszukującego minimalnego drzewa rozpinającego. Polega on na kolejnym dołączaniu do rozwiązania najkrótszych spośród dopuszczalnych krawędzi. Działanie algorytmu można zapisać następująco:

  1. Posortuj wszystkie krawędzie rosnąco według ich wag, umieść je w kolejce.
  2. Pobierz z kolejki krawędź o najmniejszej wadze, usuń ją z kolejki.
  3. Sprawdź, czy dołączenie tej krawędzi do rozwiązania nie spowoduje utworzenia cyklu (nie dotyczy ostatniej iteracji) lub powstania wierzchołka, z którego wychodzą trzy krawędzie. Jeśli nie, dołącz krawędź do rozwiązania.
  4. Jeśli liczba krawędzi dołączonych do rozwiązania jest równa liczbie wierzchołków, zakończ działanie algorytmu. W przeciwnym razie przejdź do punktu 2.

Złożoność i ocena jakości

Główna pętla algorytmu wykona się maksymalnie n2 razy (n jest liczbą krawędzi). W trakcie każdego przebiegu pętli trzeba jednak sprawdzić, czy daną krawędź można dołączyć do rozwiązania. Złożoność obliczeniowa algorytmu zależy od sposobu implementacji sprawdzania tego warunku, a także od sposobu sortowania kolejki krawędzi. Według pracy The Traveling Salesman Problem: A Case Study in Local Optimization (link w bibliografii) złożoność obliczeniowa algorytmu to O(n2log n).

Algorytm nie daje gwarancji znalezienia rozwiązania optymalnego. Według wspomnianej pracy The Traveling Salesman Problem: A Case Study in Local Optimization rozwiązania znalezione przez ten algorytm są średnio o ok. 16% gorsze od optymalnych. Istnieją przypadki, w których algorytm najbliższego sąsiada daje najgorsze możliwe rozwiązanie.

Bibliografia

  1. D.S. Johnson, L.A. McGeoch, The Traveling Salesman Problem: A Case Study in Local Optimization (link) [dostęp: 27 września 2016].
  2. G. Gutin, A. Yeo, A. Zverovich, Traveling salesman should not be greedy: domination analysis of greedy-type heuristics for the TSP (link) [dostęp: 8 października 2016].

Dodano: 19 października 2016 19:21
Ostatnia edycja: 8 lipca 2017 15:01