Задача минимального остовного дерева состоит в том, чтобы взять связный взвешенный граф и найти подмножество его ребер с наименьшим общим весом, сохраняя при этом связность графа (и, как следствие, ациклический граф).
Алгоритм, который я рассматриваю, следующий:
- Найдите все циклы.
- удалить наибольшее ребро из каждого цикла.
Стимулом для этой версии является среда, ограниченная «удовлетворением правил» без каких-либо итерационных конструкций. Это также может быть применимо к безумно параллельному оборудованию (то есть к системе, в которой вы ожидаете иметь в несколько раз больше степеней параллелизма, чем циклов).
Редактирует:
Вышеупомянутое выполняется без сохранения состояния (все ребра, которые не являются самыми большими ребрами в любом цикле, выбираются/сохраняются/игнорируются, все остальные удаляются).