Принцип работы алгоритма поиска пути Эйлера заключается в построении замкнутого маршрута (эйлерова цикла), в котором каждое ребро графа встречается точно один раз. intuit.ru
Алгоритм похож на поиск в глубину, но главное отличие в том, что как пройденные помечаются не вершины, а рёбра графа. intuit.ru neerc.ifmo.ru
Процесс происходит так: intuit.ru
- Начиная с произвольно выбранной стартовой вершины, строят путь, выбирая каждый раз для дальнейшего продвижения ещё не пройденное ребро. intuit.ru
- Вершины пути накапливаются в стеке. intuit.ru
- Через некоторое количество шагов наступает тупик: все рёбра, инцидентные активной (последней посещённой) вершине, уже пройдены. intuit.ru
- Для обнаружения ещё не пройденных рёбер возвращаются по пройденному пути, перекладывая вершины из стека в другой стек, пока не встретят вершину, которой инцидентно непройденное ребро. intuit.ru
- Тогда возобновляют движение вперёд по непройденным рёбрам, пока не достигнут нового тупика и так далее. intuit.ru
- Процесс заканчивается, когда в очередном тупике обнаруживают, что стек пуст. intuit.ru В этот момент в стеке находится последовательность вершин эйлерова цикла. intuit.ru