http://en.wikipedia.org/wiki/Minimum_spanning_treeNajszybszy algorytm minimum drzewo rozpinające
Czekam na benchmarku moje minimum rozpinające algorytm drzewa przeciw najlepszym z najlepszych. Czy ktoś wie, gdzie mogę znaleźć implementację C++ tych algorytmów? Ja binged i googled i nic nie znalazłem. Jeśli te algorytmy są najlepsze, to na pewno musi być gdzieś implementacja C++?
Najszybszy minimum Spanning Tree algorytm do tej pory został opracowany przez David Karger, Philipa Klein i Robert Tarjan, który znalazł czas liniowy randomizowane algorytm oparty na kombinacji algorytm borůvki i odwrotnej -delete algorytm. [2] [3] Najszybszy, nieza-randomizowany algorytm, autorstwa Bernarda Chazelle, oparty jest na miękkim stercie o numerze , o przybliżonym priorytecie, . [4] [5] Jego czas działania wynosi O (m α (m, n)), gdzie m jest liczbą krawędzi , n jest liczbą wierzchołków, a α jest klasyczną funkcjonalną odwrotnością funkcji Ackermanna. Funkcja α rośnie bardzo wolno, więc dla wszystkich celów praktycznych może być uważana za stałą nie większą niż 4; tak więc algorytm Chazelle'a zajmuje bardzo blisko czasu liniowego. Jeśli grubości krawędzi są liczbami całkowitymi z ograniczoną długością bitową , wówczas znane są deterministyczne algorytmy o liniowym czasie trwania . [6] Niezależnie od tego, czy istnieje , algorytm deterministyczny o liniowym czas działania dla ogólnych mas to to wciąż otwarte pytanie. Jednak Seth Petie i Vijaya Ramachandran mają ustalili możliwie optymalny algorytm minimalnego drzewa opinającego, którego złożoność obliczeniowa jest nieznana. [7]
Już testuję algorytmy wykresu Boost C++.
świetna odpowiedź. Powinieneś dodać, że czasami Big O ma również kilka zastrzeżeń, takich jak tablice hash i ich zależność od "dobrej" funkcji mieszania. Podczas gdy nie omawiamy tutaj funkcji mieszania, takie same rzeczy mogą się zdarzyć w przypadku drzew rozłącznych i innych. – wheaties
Więc nie ma kodu! Brak wyników eksperymentalnych! Gdzie jest metoda naukowa, którą uwielbiam :) – toto