Самый быстрый алгоритм минимального связующего дерева

http://en.wikipedia.org/wiki/Minimum_spanning_tree

Я хочу сравнить свой алгоритм минимального связующего дерева с лучшими из лучших . Кто-нибудь знает, где я могу найти реализацию этих алгоритмов на C ++? Я напился, погуглил и ничего не нашел. Если эти алгоритмы являются лучшими, неужели где-то должна быть реализация на C ++?

Самое быстрое минимальное связующее дерево алгоритм на сегодняшний день был разработан Дэвид Каргер, Филип Кляйн и Роберт Тарджан, нашедший линейное время рандомизированный алгоритм на основе сочетание алгоритма Борувки и алгоритм обратного удаления. [2] [3] Самый быстрый нерандомизированный алгоритм, Бернара Шазеля, основан на мягкая куча, примерный приоритет очередь. [4] [5] Его время работы O (м α (m, n)), где m - количество ребер, n - количество вершин и α - классический функциональный обратный функции Аккермана. В функция α растет чрезвычайно медленно, поэтому что для всех практических целей это может считаться константой не больше чем 4; таким образом, алгоритм Шазеля занимает время, очень близкое к линейному. Если веса ребер - целые числа с ограниченная длина в битах, затем детерминированная известны алгоритмы с линейными время работы. [6] Существует ли детерминированный алгоритм с линейным время работы для обычных весов все еще открытый вопрос. Однако Сет Пити и Виджая Рамачандран имеют нашел доказуемо оптимальный детерминированный алгоритм минимального остовного дерева, вычислительная сложность которого неизвестно. [7]

Я уже тестировал графические алгоритмы Boost C ++.

9
задан toto 7 February 2011 в 17:16
поделиться