У меня есть алгоритм для нахождения набора непересекающихся контуров пути в неориентированном графе.Анализ алгоритма несвязанного краевого поиска
Start со списком всех ребер в графе
Хотя все еще доступны края в списке, выполните глубину/вширь первый поиск, чтобы найти путь. Если путь найден, сохраните его, удалить ребра из обоего списка и график и путь приращения счетчика
Удалить первый доступный край из списка и назначить его текущего пути
Try, чтобы соответствовать текущему пути к списку сохраненных края
Если не имеющийся край не совпадает, путь закончен
Если доступный край может продлить текущий путь, добавьте его в текущий путь и удалить из списка края, а затем продолжать пытаться продлить текущий путь.
Я считаю, что 2 и 3 выполняются в O (Е (V + E) + E) время, потому что
- ширина/глубина первый поиск выполняется в O (V + Е) Время
- поиска выполняется по электронным кромкам в списке
- удаления E кромки из списка и графа
последняя часть алгоритма выполняется в O (E^2) время, в связи с два петли, необходимые для итерации по списку краев.
Таким образом, у меня есть окончательный худший случай O (Е (V + Е) + E^2 + E) = O (EV + 2е^2 + Е)
Я прав?