Дан ориентированный граф с заданными входными и выходными степенями вершин. Сформулируйте критерии существования гамильтонова цикла и эвристику для построения такого цикла в сложных случаях

28 Окт в 11:23
11 +11
0
Ответы
1
Кратко. Сначала — необходимые общие условия, затем классические достаточные критерии (теоремы), потом практическая эвристика для построения цикла.
Необходимые условия
- Для любого вершины vvv по крайней мере одно входящее и одно исходящее ребро: deg⁡+(v)≥1, deg⁡−(v)≥1\deg^+(v)\ge 1,\ \deg^-(v)\ge 1deg+(v)1, deg(v)1 (для n>1n>1n>1).
- Суммы степеней согласованы: ∑vdeg⁡+(v)=∑vdeg⁡−(v)=m\sum_v \deg^+(v)=\sum_v \deg^-(v)=mv deg+(v)=v deg(v)=m (число дуг).
- Если для всех вершин deg⁡+(v)=deg⁡−(v)=1\deg^+(v)=\deg^-(v)=1deg+(v)=deg(v)=1, то гамильтонов цикл существует тогда и только тогда, когда орграф состоит из одной ориентированной циклической компоненты (в противном случае это покрытие циклов).
Утверждения-«достаточники» (быстрые критерии, дающие гарантию)
- Теорема Гуайла‑Хури (Ghouila‑Houri): Если орграф на nnn вершинах удовлетворяет для каждой вершины deg⁡+(v)+deg⁡−(v)≥n\deg^+(v)+\deg^-(v)\ge ndeg+(v)+deg(v)n, то в нём есть ориентированный гамильтонов цикл.
- Следствие: достаточно, чтобы δ+(D)≥n/2\delta^+(D)\ge n/2δ+(D)n/2 и δ−(D)≥n/2\delta^-(D)\ge n/2δ(D)n/2.
- Есть также «Ore‑типы» условий для орграфов (теоремы Вудалла и др.): например, если для любой пары вершин x,yx,yx,y такой, что дуги x→yx\to yxy нет, выполняется deg⁡+(x)+deg⁡−(y)≥n\deg^+(x)+\deg^-(y)\ge ndeg+(x)+deg(y)n, то цикл существует. (Эти условия — достаточные, не необходимые.)
Проверка реализуемости заданных вход/выход-степеней
- Пары последовательностей (ri)(r_i)(ri ) (out‑степени) и (si)(s_i)(si ) (in‑степени) являются реализуемыми как простой орграф тогда и только тогда, когда ∑ri=∑si\sum r_i=\sum s_iri =si и выполняется критерий типа Gale / Fulkerson–Chen–Anstee (т.е. набор неравенств для подмножеств вершин). (Это критерий диграфичности.)
Сложные случаи — эвристика построения гамильтонова цикла
(учитывая, что задача NP‑полна, в общем случае точного многополиномиального алгоритма нет)
Базовый план эвристики (рабочая последовательность действий)
1. Построить покрытие вершин ориентированными циклами (директ 1‑фактор, cycle cover): это задача назначений (перестановка). Можно найти любая такая перестановка алгоритмом максимального соответствия/венгером. Результат — набор циклов, покрывающих все вершины.
2. Пока покрытие содержит более одного цикла, пытаться «сливать» циклы:
- Ищите две разные цикловые компоненты C1,C2C_1,C_2C1 ,C2 и вершины u∈C1, v∈C2u\in C_1,\ v\in C_2uC1 , vC2 такие, что существуют дуги u→xu\to xux с x∈C2x\in C_2xC2 и y→vy\to vyv с y∈C1y\in C_1yC1 . Тогда можно выполнить 2‑перестановку: заменить дуги (u→u′)(u\to u')(uu) и (y→v)(y\to v)(yv) на (u→v)(u\to v)(uv) и (y→u′)(y\to u')(yu), что соединит циклы. Формально: заменить пару (u→u+),(y→v)(u\to u^+),(y\to v)(uu+),(yv) на (u→v),(y→u+)(u\to v),(y\to u^+)(uv),(yu+) при наличии этих дуг. Повторять.
- Если прямых пар нет, искать последовательности перестановок (цепочку замен), т.е. строить ориентированный граф компонент (вершины = циклы, ребро = наличие дуги из одного цикла в другой) и искать циклы в этом сверхграфе, которые позволяют выполнить серию обменов и объединить несколько компонент.
3. Применять метод «rotation‑extension» (адаптация Pósa): поддерживать длинную ориентированную простую путь PPP и пробовать «повороты» концов пути, заменяя последовательно дуги, чтобы освободить новые продолжения; если удаётся замкнуть путь в цикл, проверить, является ли он гамильтоновым, иначе продолжать расширять.
4. При застревании использовать локальные операторы улучшения: 2‑оп/3‑оп обмены дуг (аналог TSP‑операций), поиск кратчайших путей между циклами, использование max‑flow / matching для нахождения нужных перестановок между предшественниками и наследниками.
5. Комбинации со случайными рестартами: повторять шаги 1–4 с разными случайными исходными покрытием или случайным приоритетом вершин; сохранять лучший (или успешный) результат.
6. В трудных инстанциях формализовать задачу как SAT/ILP (переменные xuv∈{0,1}x_{uv}\in\{0,1\}xuv {0,1} для дуг u→vu\to vuv с ограничениями «вход = выход =1» и подсказками для связности) и решать оптимизатором/солвером — часто даёт решение при умеренных размерах.
Практические замечания и эвристические приоритеты
- Начинать с жадного расширения длинного пути из вершины с малого резерва (малые deg⁡+\deg^+deg+ или deg⁡−\deg^-deg) — это уменьшает вероятность «запереть» вершину.
- Отдавать приоритет объединению маленьких циклов сначала (легче найти мосты).
- Использовать структуры данных для быстрого поиска дуг между циклами (хэш/списки соседей).
- Для больших графов комбинировать многократные рестарты + локальный поиск; для средних — ILP/SAT.
Заключение
- Для гарантии существования смотрите теорему Гуайла‑Хури и родственные достаточные условия.
- На практике: получить покрытие циклов (assignment), затем последовательно сливать циклы через простые 2‑перестановки и более сложные цепочки обменов; при трудностях — комбинировать с локальными операторами, случайными рестартами или ILP/SAT‑решением.
28 Окт в 13:00
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир