Математика · Теорія графів · Комбінаторика
📅 Квітень 2026 ⏱ ≈ 11 хв читання 🎯 Середній · Останнє оновлення: 28 травня 2026 р.

Теорема про чотири фарби — розфарбовування графів та комп’ютерне доведення

Будь-яку географічну карту — хоч би якою складною вона була — можна розфарбувати щонайбільше чотирма фарбами так, щоб жодні два сусідні регіони не мали однакового кольору. Це, на перший погляд, просте спостереження, висловлене Френсісом Ґатрі 1852 року, залишалося недоведеним 124 роки. Остаточне доведення Аппеля та Гакена 1976 року стало першою значною математичною теоремою, перевіреною з істотною комп’ютерною допомогою, що спричинило філософські дискусії про природу математичного доведення, які тривають і досі.

1. Теорема та її історія

Теорема про чотири фарби: за будь-якого поділу площини на суцільні регіони ці регіони можна розфарбувати щонайбільше чотирма фарбами так, щоб жодні два сусідні регіони не мали однакового кольору. (Два регіони є сусідніми, якщо вони мають спільний відрізок межі додатної довжини; кутові точки не рахуються.)

2. Формулювання мовою теорії графів

Задача розфарбовування карти еквівалентна задачі розфарбовування графа. Перетворіть карту на планарний граф: одна вершина на регіон, одне ребро між вершинами, регіони яких мають спільну межу. Тоді теорема про чотири фарби стверджує: кожен планарний граф є 4-розфарбовуваним.

Термінологія: χ(G) = хроматичне число = мінімальна кількість фарб, потрібна для розфарбовування графа G так, щоб жодні дві суміжні вершини не мали однакового кольору 4CT: для кожного планарного графа G, χ(G) ≤ 4 Ключовий факт: K_4 (повний граф на 4 вершинах) є планарним і потребує 4 фарб. K_5 НЕ є планарним (теорема Куратовського); інакше 5 могло б вистачити. Формула Ейлера для зв’язних планарних графів: V - E + F = 2 Наслідок: кожен планарний граф має вершину степеня ≤ 5. (Якби всі вершини мали степінь ≥ 6: E ≥ 3V → суперечить E ≤ 3V-6)

3. Теорема про п’ять фарб

Простіша теорема про п’ять фарб має витончене доведення сильною індукцією, що не потребує комп’ютера:

  1. Кожен планарний граф має вершину v степеня ≤ 5 (за міркуванням із формулою Ейлера).
  2. Вилучіть v; за індукцією решта графа є 5-розфарбовуваною.
  3. Поверніть v. Якщо її ≤5 сусідів використовують ≤4 фарб, призначте v п’яту фарбу. Готово.
  4. Якщо всі 5 сусідів використовують усі 5 фарб (у циклічному порядку c₁, c₂, c₃, c₄, c₅ навколо v), потрібен прийом Кемпе:
  5. Розгляньте підграф, породжений фарбами c₁ та c₃. Якщо v₁ та v₃ належать до різних зв’язних компонент, поміняйте фарби в компоненті v₁ — тепер і v₁, і v₃ використовують фарби з {c₁,c₃}, звільняючи одну для v.
  6. Якщо вони в одній компоненті: існує c₁-c₃-шлях від v₁ до v₃. Тоді v₂ та v₄ мають належати до різних компонент c₂-c₄-підграфа (вони не можуть перетнути шлях). Поміняйте фарби в компоненті v₂, щоб звільнити c₂ для v.

Те, що це не вдається безпосередньо поширити на чотири фарби, і є причиною, чому доведення для чотирьох фарб потребує перевірки тисяч конфігурацій — «виправлення» Кемпе не завжди працює для кроку 4, коли намагаємося довести, що чотирьох достатньо.

4. Доведення Аппеля–Гакена

Стратегія доведення використовує два ключові поняття:

Аппель і Гакен знайшли неминучий набір із 1936 конфігурацій і довели, що кожна звідна. Разом це гарантує: будь-який планарний граф містить звідну конфігурацію, тож його можна розфарбувати чотирма фарбами індукцією за розміром.

Чому були потрібні комп’ютери: кожна перевірка звідності потребувала підтвердження того, що для кожної конфігурації не існує жодної валідної перешкоди типу «ланцюга Кемпе» — скінченне, але величезне обчислення. Початкова перевірка зайняла 1200 годин процесорного часу на IBM 360. Сучасні доведення (Робертсон та ін.) скоротили неминучий набір до 633 конфігурацій і завершили перевірку за хвилини.

5. Жадібне розфарбовування графів

Для практичного розфарбовування графів (не обов’язково оптимального) жадібний алгоритм послідовно призначає кожній вершині найменшу доступну фарбу:

function greedyColor(graph) {
  const color = new Array(graph.n).fill(-1);
  for (let v = 0; v < graph.n; v++) {
    const usedColors = new Set(
      graph.adj[v].filter(u => color[u] !== -1).map(u => color[u])
    );
    let c = 0;
    while (usedColors.has(c)) c++;
    color[v] = c;
  }
  return color;
}

Жадібне розфарбовування використовує щонайбільше Δ(G) + 1 фарб (де Δ(G) — максимальний степінь), але може використати більше, ніж хроматичне число χ(G). Порядок вершин має велике значення — оптимальні порядки включають «найбільші першими» (за степенем), «найменші останніми» та DSatur (евристику динамічного насичення).

Знаходження точного хроматичного числа χ(G) загалом є NP-повним. Для планарних графів 4-розфарбовуваність завжди гарантована, але ефективне (за поліноміальний час) знаходження 4-розфарбовування досі є відкритою проблемою — ми знаємо лише, що P-алгоритми існують для {2,3}-розфарбовування планарних графів.

6. Хроматичний многочлен

Хроматичний многочлен P(G, k) підраховує кількість правильних k-розфарбовувань графа G:

Для шляхового графа Pₙ: P(Pₙ, k) = k(k-1)^(n-1) Для циклу Cₙ: P(Cₙ, k) = (k-1)^n + (-1)^n(k-1) Для повного графа Kₙ: P(Kₙ, k) = k(k-1)(k-2)···(k-n+1) Для дерева на n вершинах: P(T, k) = k(k-1)^(n-1) Рекурентне співвідношення вилучення-стягування: P(G, k) = P(G\e, k) - P(G/e, k), де G\e вилучає ребро e, а G/e стягує ребро e (зливає кінцеві вершини).

Хроматичне число χ(G) — це найменше k > 0, для якого P(G, k) > 0. Обчислення P(G, k) загалом є #P-складним — експоненційно важчим, ніж просто визначити розфарбовуваність.

7. Застосування поза картами

🔍 Дослідіть симуляції лабіринтів і графів →