Исследуйте задачу по теории графов: при каких условиях граф с заданной степенной последовательностью можно построить; примените критерий Хavel-Hakimi и объясните процедуру на примере
Рассматриваем простые неориентированные графы (без петель и кратных рёбер). Пусть дана не возрастающая последовательность неотрицательных целых чисел d=(d1≥d2≥…≥dn)d=(d_1\ge d_2\ge\ldots\ge d_n)d=(d1≥d2≥…≥dn). Вопрос: когда существует граф с этой степенной последовательностью? Критерии (кратко) - Необходимое условие: сумма степеней чётна: ∑i=1ndi\sum_{i=1}^n d_i∑i=1ndi — должно быть чётным, и каждый di≤n−1d_i\le n-1di≤n−1. - Теорема Эрдёша—Галлая (эквивалентный жёсткий критерий): последовательность ddd графическая тогда и только тогда, когда ∑i=1ndi\sum_{i=1}^n d_i∑i=1ndi чётно и для всех k=1,2,…,nk=1,2,\dots,nk=1,2,…,n выполнено ∑i=1kdi≤k(k−1)+∑i=k+1nmin(di,k).
\sum_{i=1}^k d_i \le k(k-1)+\sum_{i=k+1}^n \min(d_i,k). i=1∑kdi≤k(k−1)+i=k+1∑nmin(di,k).
- Критерий Хавела—Хакими (процедурный): последовательность графическая тогда и только тогда, когда итеративная редукция заканчивается нулевой последовательностью (и на промежутке не возникает отрицательных чисел). Алгоритм Хавела—Хакими (процедура) 1. Отсортировать ddd по невозрастанию. 2. Если все члены равны 000, то последовательность графическая (строим граф по накопленным связям). 3. Если любой член отрицателен или первый член d1d_1d1 больше числа оставшихся вершин (d1>n−1)(d_1> n-1)(d1>n−1) или сумма степеней нечётна — не графическая. 4. Иначе удалить первый элемент d1d_1d1 и вычесть 111 из следующих d1d_1d1 элементов (т.е. предполагаем, что вершина с этой степенью соединена с d1d_1d1 вершинами с наибольшими степенями). Повторить с полученной последовательностью (снова отсортировав её). Пример 1 — графическая последовательность Возьмём d=(3,3,2,2,2).
d=(3,3,2,2,2). d=(3,3,2,2,2).
Шаги Хавела—Хакими: - Удаляем 333 и вычитаем 111 из следующих трёх: остаётся (2,1,1,2)(2,1,1,2)(2,1,1,2). Отсортируем: (2,2,1,1)(2,2,1,1)(2,2,1,1). - Удаляем 222 и вычитаем 111 из следующих двух: остаётся (1,0,1)(1,0,1)(1,0,1). Отсортируем: (1,1,0)(1,1,0)(1,1,0). - Удаляем 111 и вычитаем 111 из следующего одного: остаётся (0,0)(0,0)(0,0). - Все нули ⇒ последовательность графическая. Можно одновременно строить граф: вершины v1,…,v5v_1,\dots,v_5v1,…,v5 с начальными степенями как в ddd. - Связать v1v_1v1 с v2,v3,v4v_2,v_3,v_4v2,v3,v4. - Затем связать следующую вершину с остаточной степенью 222 (например, v2v_2v2) с v5v_5v5 и v3v_3v3. - Затем связать оставшиеся пары — в итоге рёбра: (v1,v2),(v1,v3),(v1,v4),(v2,v5),(v2,v3),(v4,v5)(v_1,v_2),(v_1,v_3),(v_1,v_4),(v_2,v_5),(v_2,v_3),(v_4,v_5)(v1,v2),(v1,v3),(v1,v4),(v2,v5),(v2,v3),(v4,v5). Пример 2 — не графическая последовательность Возьмём d=(3,3,3,1).
d=(3,3,3,1). d=(3,3,3,1).
Шаги: - Удаляем 333, вычитаем 111 из следующих трёх: остаётся (2,2,0)(2,2,0)(2,2,0). - Удаляем 222, вычитаем 111 из следующих двух: остаётся (1,−1)(1,-1)(1,−1) — появилось отрицательное число ⇒ последовательность не графическая. Заключение - Используйте сначала проверку на чётность суммы и условие di≤n−1d_i\le n-1di≤n−1 (быстрая фильтрация). - Для окончательного ответа применяйте либо неравенства Эрдёша—Галлая, либо алгоритм Хавела—Хакими (последний удобен на практике и конструктивен — даёт способ построить граф при успехе).
Критерии (кратко)
- Необходимое условие: сумма степеней чётна: ∑i=1ndi\sum_{i=1}^n d_i∑i=1n di — должно быть чётным, и каждый di≤n−1d_i\le n-1di ≤n−1.
- Теорема Эрдёша—Галлая (эквивалентный жёсткий критерий): последовательность ddd графическая тогда и только тогда, когда ∑i=1ndi\sum_{i=1}^n d_i∑i=1n di чётно и для всех k=1,2,…,nk=1,2,\dots,nk=1,2,…,n выполнено
∑i=1kdi≤k(k−1)+∑i=k+1nmin(di,k). \sum_{i=1}^k d_i \le k(k-1)+\sum_{i=k+1}^n \min(d_i,k).
i=1∑k di ≤k(k−1)+i=k+1∑n min(di ,k). - Критерий Хавела—Хакими (процедурный): последовательность графическая тогда и только тогда, когда итеративная редукция заканчивается нулевой последовательностью (и на промежутке не возникает отрицательных чисел).
Алгоритм Хавела—Хакими (процедура)
1. Отсортировать ddd по невозрастанию.
2. Если все члены равны 000, то последовательность графическая (строим граф по накопленным связям).
3. Если любой член отрицателен или первый член d1d_1d1 больше числа оставшихся вершин (d1>n−1)(d_1> n-1)(d1 >n−1) или сумма степеней нечётна — не графическая.
4. Иначе удалить первый элемент d1d_1d1 и вычесть 111 из следующих d1d_1d1 элементов (т.е. предполагаем, что вершина с этой степенью соединена с d1d_1d1 вершинами с наибольшими степенями). Повторить с полученной последовательностью (снова отсортировав её).
Пример 1 — графическая последовательность
Возьмём
d=(3,3,2,2,2). d=(3,3,2,2,2).
d=(3,3,2,2,2). Шаги Хавела—Хакими:
- Удаляем 333 и вычитаем 111 из следующих трёх: остаётся (2,1,1,2)(2,1,1,2)(2,1,1,2). Отсортируем: (2,2,1,1)(2,2,1,1)(2,2,1,1).
- Удаляем 222 и вычитаем 111 из следующих двух: остаётся (1,0,1)(1,0,1)(1,0,1). Отсортируем: (1,1,0)(1,1,0)(1,1,0).
- Удаляем 111 и вычитаем 111 из следующего одного: остаётся (0,0)(0,0)(0,0).
- Все нули ⇒ последовательность графическая.
Можно одновременно строить граф: вершины v1,…,v5v_1,\dots,v_5v1 ,…,v5 с начальными степенями как в ddd.
- Связать v1v_1v1 с v2,v3,v4v_2,v_3,v_4v2 ,v3 ,v4 .
- Затем связать следующую вершину с остаточной степенью 222 (например, v2v_2v2 ) с v5v_5v5 и v3v_3v3 .
- Затем связать оставшиеся пары — в итоге рёбра: (v1,v2),(v1,v3),(v1,v4),(v2,v5),(v2,v3),(v4,v5)(v_1,v_2),(v_1,v_3),(v_1,v_4),(v_2,v_5),(v_2,v_3),(v_4,v_5)(v1 ,v2 ),(v1 ,v3 ),(v1 ,v4 ),(v2 ,v5 ),(v2 ,v3 ),(v4 ,v5 ).
Пример 2 — не графическая последовательность
Возьмём
d=(3,3,3,1). d=(3,3,3,1).
d=(3,3,3,1). Шаги:
- Удаляем 333, вычитаем 111 из следующих трёх: остаётся (2,2,0)(2,2,0)(2,2,0).
- Удаляем 222, вычитаем 111 из следующих двух: остаётся (1,−1)(1,-1)(1,−1) — появилось отрицательное число ⇒ последовательность не графическая.
Заключение
- Используйте сначала проверку на чётность суммы и условие di≤n−1d_i\le n-1di ≤n−1 (быстрая фильтрация).
- Для окончательного ответа применяйте либо неравенства Эрдёша—Галлая, либо алгоритм Хавела—Хакими (последний удобен на практике и конструктивен — даёт способ построить граф при успехе).