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