Открыть сервисСервис

Круги Эйлера в графовой теории

Круг Эйлера — замкнутый путь в графе, проходящий по каждому ребру ровно один раз. Если такой путь существует, граф называется эйлеровым. Задача о нахождении круга Эйлера (или констатации его отсутствия) — одна из классических задач теории графов, решаемая за линейное время относительно числа рёбер.

История

Задача берёт начало от «Кёнигсбергского моста» (1736), решённой Леонардом Эйлером: нужно было пройти по всем семи мостам Кёнигсберга, побывав на каждом острове и берегу не более одного раза. Эйлер показал, что задача неразрешима, и сформулировал общий критерий существования такого обхода — тем самым заложил основы теории графов.

Критерий существования

Для графа без изолированных вершин:

  • Неориентированный граф содержит круг Эйлера тогда и только тогда, когда он связен (в смысле рёберного связного остова) и все его вершины имеют чётную степень.
  • Ориентированный граф содержит ориентированный круг Эйлера тогда и только тогда, когда его остов связен и для каждой вершины число входящих рёбер равно числу исходящих (баланс потоков).

Если условие чётности нарушено ровно у двух вершин, существует путь Эйлера (не замкнутый), начинающийся в одной из этих вершин и заканчивающийся в другой.

Алгоритмы нахождения

Алгоритм Флори

Простейший способ построить круг Эйлера в эйлеровом графе:

  1. Выбрать любую стартовую вершину.
  2. Идти по любым неиспользованным рёбрам, помечая их использованными, пока не вернёмся в стартовую вершину.
  3. Если остались неиспользованные рёбра, выбрать вершину полученного цикла, из которой исходят неиспользованные рёбра, и вставить в неё новый цикл, построенный по шагу 2.
  4. Повторять, пока все рёбра не будут использованы.

Сложность — O(|E|), где |E| — число рёбер.

Алгоритм Хиршнера

Рекурсивный вариант: обойти граф, «сворачивая» найденные циклы в один. Реализуется стеком или рекурсией; на практике уступает Флори по простоте, но даёт тот же результат.

Алгоритм Тарьяна

Стековый итеративный алгоритм, строящий круг Эйлера за линейное время. Использует поиск в глубину с отложенным добавлением вершины в результат (аналогично топологической сортировке), что позволяет обойтись без рекурсии и работать на больших графах.

Ориентированные графы

Для ориентированного графа алгоритм аналогичен: на каждом шаге выбирается любое исходящее неиспользованное ребро. Критерий — баланс входящих и исходящих рёбер в каждой вершине плюс связность остова. Алгоритм Флори применим без изменений.

Мультиграфы и графы с петлями

Условия теоремы распространяются на мультиграфы (несколько рёбер между одной парой вершин). Петля добавляет вершине 2 к степени, поэтому не влияет на чётность — граф с петлями может быть эйлеровым.

Связанные задачи

  • Задача коммивояжёра — поиск кратчайшего гамильтонова цикла; в отличие от круга Эйлера, является NP-полной.
  • Кит-граф (Chinese Postman Problem) — поиск кратчайшего замкнутого пути, покрывающего все рёбра графа с повторениями. Для эйлеровых графов решение тривиально (путь Эйлера); для неэйлеровых требуется минимизировать суммарную длину добавляемых дублирующих рёбер.
  • Разложение графа на циклы — любой граф с чётными степенями вершин раскладывается на простые циклы.

Применение

Алгоритмы круга Эйлера используются при построении замкнутых траекторий для ЧП-обработки и 3D-печати, в задачах планирования маршрутов (например, обслуживание улиц), при проверке корректности цепей в электронике и в биоинформатике для сшивки фрагментов ДНК (задача о сборке генома из композиционного спектра сводится к нахождению пути Эйлера в графе ДеБрюйна).

История

Задача берёт начало от «Кёнигсбергского моста» (1736), решённой Леонардом Эйлером: нужно было пройти по всем семи мостам Кёнигсберга, побывав на каждом острове и берегу не более одного раза. Эйлер показал, что задача неразрешима, и сформулировал общий критерий существования такого обхода — тем самым заложил основы теории графов.

Критерий существования

Для графа без изолированных вершин:

  • Неориентированный граф содержит круг Эйлера тогда и только тогда, когда он связен (в смысле рёберного связного остова) и все его вершины имеют чётную степень.
  • Ориентированный граф содержит ориентированный круг Эйлера тогда и только тогда, когда его остов связен и для каждой вершины число входящих рёбер равно числу исходящих (баланс потоков).

Если условие чётности нарушено ровно у двух вершин, существует путь Эйлера (не замкнутый), начинающийся в одной из этих вершин и заканчивающийся в другой.

Алгоритмы нахождения

Алгоритм Флори

Простейший способ построить круг Эйлера в эйлеровом графе:

  1. Выбрать любую стартовую вершину.
  2. Идти по любым неиспользованным рёбрам, помечая их использованными, пока не вернёмся в стартовую вершину.
  3. Если остались неиспользованные рёбра, выбрать вершину полученного цикла, из которой исходят неиспользованные рёбра, и вставить в неё новый цикл, построенный по шагу 2.
  4. Повторять, пока все рёбра не будут использованы.

Сложность — O(|E|), где |E| — число рёбер.

Алгоритм Хиршнера

Рекурсивный вариант: обойти граф, «сворачивая» найденные циклы в один. Реализуется стеком или рекурсией; на практике уступает Флори по простоте, но даёт тот же результат.

Алгоритм Тарьяна

Стековый итеративный алгоритм, строящий круг Эйлера за линейное время. Использует поиск в глубину с отложенным добавлением вершины в результат (аналогично топологической сортировке), что позволяет обойтись без рекурсии и работать на больших графах.

Ориентированные графы

Для ориентированного графа алгоритм аналогичен: на каждом шаге выбирается любое исходящее неиспользованное ребро. Критерий — баланс входящих и исходящих рёбер в каждой вершине плюс связность остова. Алгоритм Флори применим без изменений.

Мультиграфы и графы с петлями

Условия теоремы распространяются на мультиграфы (несколько рёбер между одной парой вершин). Петля добавляет вершине 2 к степени, поэтому не влияет на чётность — граф с петлями может быть эйлеровым.

Связанные задачи

  • Задача коммивояжёра — поиск кратчайшего гамильтонова цикла; в отличие от круга Эйлера, является NP-полной.
  • Кит-граф (Chinese Postman Problem) — поиск кратчайшего замкнутого пути, покрывающего все рёбра графа с повторениями. Для эйлеровых графов решение тривиально (путь Эйлера); для неэйлеровых требуется минимизировать суммарную длину добавляемых дублирующих рёбер.
  • Разложение графа на циклы — любой граф с чётными степенями вершин раскладывается на простые циклы.

Применение

Алгоритмы круга Эйлера используются при построении замкнутых траекторий для ЧП-обработки и 3D-печати, в задачах планирования маршрутов (например, обслуживание улиц), при проверке корректности цепей в электронике и в биоинформатике для сшивки фрагментов ДНК (задача о сборке генома из композиционного спектра сводится к нахождению пути Эйлера в графе ДеБрюйна).

История

Задача берёт начало от «Кёнигсбергского моста» (1736), решённой Леонардом Эйлером: нужно было пройти по всем семи мостам Кёнигсберга, побывав на каждом острове и берегу не более одного раза. Эйлер показал, что задача неразрешима, и сформулировал общий критерий существования такого обхода — тем самым заложил основы теории графов.

Критерий существования

Для графа без изолированных вершин:

  • Неориентированный граф содержит круг Эйлера тогда и только тогда, когда он связен (в смысле рёберного связного остова) и все его вершины имеют чётную степень.
  • Ориентированный граф содержит ориентированный круг Эйлера тогда и только тогда, когда его остов связен и для каждой вершины число входящих рёбер равно числу исходящих (баланс потоков).

Если условие чётности нарушено ровно у двух вершин, существует путь Эйлера (не замкнутый), начинающийся в одной из этих вершин и заканчивающийся в другой.

Алгоритмы нахождения

Алгоритм Флори

Простейший способ построить круг Эйлера в эйлеровом графе:

  1. Выбрать любую стартовую вершину.
  2. Идти по любым неиспользованным рёбрам, помечая их использованными, пока не вернёмся в стартовую вершину.
  3. Если остались неиспользованные рёбра, выбрать вершину полученного цикла, из которой исходят неиспользованные рёбра, и вставить в неё новый цикл, построенный по шагу 2.
  4. Повторять, пока все рёбра не будут использованы.

Сложность — O(|E|), где |E| — число рёбер.

Алгоритм Хиршнера

Рекурсивный вариант: обойти граф, «сворачивая» найденные циклы в один. Реализуется стеком или рекурсией; на практике уступает Флори по простоте, но даёт тот же результат.

Алгоритм Тарьяна

Стековый итеративный алгоритм, строящий круг Эйлера за линейное время. Использует поиск в глубину с отложенным добавлением вершины в результат (аналогично топологической сортировке), что позволяет обойтись без рекурсии и работать на больших графах.

Ориентированные графы

Для ориентированного графа алгоритм аналогичен: на каждом шаге выбирается любое исходящее неиспользованное ребро. Критерий — баланс входящих и исходящих рёбер в каждой вершине плюс связность остова. Алгоритм Флори применим без изменений.

Мультиграфы и графы с петлями

Условия теоремы распространяются на мультиграфы (несколько рёбер между одной парой вершин). Петля добавляет вершине 2 к степени, поэтому не влияет на чётность — граф с петлями может быть эйлеровым.

Связанные задачи

  • Задача коммивояжёра — поиск кратчайшего гамильтонова цикла; в отличие от круга Эйлера, является NP-полной.
  • Кит-граф (Chinese Postman Problem) — поиск кратчайшего замкнутого пути, покрывающего все рёбра графа с повторениями. Для эйлеровых графов решение тривиально (путь Эйлера); для неэйлеровых требуется минимизировать суммарную длину добавляемых дублирующих рёбер.
  • Разложение графа на циклы — любой граф с чётными степенями вершин раскладывается на простые циклы.

Применение

Алгоритмы круга Эйлера используются при построении замкнутых траекторий для ЧП-обработки и 3D-печати, в задачах планирования маршрутов (например, обслуживание улиц), при проверке корректности цепей в электронике и в биоинформатике для сшивки фрагментов ДНК (задача о сборке генома из композиционного спектра сводится к нахождению пути Эйлера в графе ДеБрюйна).

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru