Дивно, але ми не мали жодних проблем з розфарбуванням графіків!
Давши непрямий графік, ми можемо надати кожній вершині такий колір, щоб жодна дві сусідні вершини не мали однакового кольору. Найменше число χ різних кольорів, необхідних для досягнення цього, називається хроматичним числом графіка.
Наприклад, нижче показано дійсне забарвлення з використанням мінімальної кількості кольорів:
(Знайдено у Вікіпедії)
Отже, хроматичне число цього графа дорівнює χ = 3 .
Напишіть програму або функцію, яка за кількістю вершин N <16 (які пронумеровані від 1 до N ) та список ребер визначає хроматичне число графа.
Ви можете отримувати вхід і виробляти вихід у будь-якому зручному форматі, доки вхід не буде попередньо оброблений. Тобто ви можете використовувати рядок або масив, додавати зручні роздільники до рядка або використовувати вкладений масив, але що б ви не зробили, сплющена структура повинна містити ті самі числа, що і в наведених нижче прикладах (у тому самому порядку).
Ви не можете використовувати вбудовані функції, пов'язані з теорією графів (наприклад, Mathematica ChromaticNumber
).
Ви можете припустити, що на графіку немає петлі (краю, що з'єднує вершину з собою), як це зробило б графік небарвним.
Це кодовий гольф, найкоротша відповідь (у байтах) виграє.
Приклади
Ваша програма повинна принаймні вирішити все це за розумну кількість часу. (Він повинен вирішити всі входи правильно, але це може зайняти більше часу для великих входів.)
Щоб скоротити публікацію, у наступних прикладах я представляю краї в одному списку, розділеному комами. Натомість ви можете використовувати розриви рядків або очікувати введення в якомусь зручному форматі масиву, якщо вам зручніше.
Трикутник (χ = 3)
3
1 2, 2 3, 1 3
"Кільце" з 6 вершин (χ = 2)
6
1 2, 2 3, 3 4, 4 5, 5 6, 6 1
"Кільце" з 5 вершин (χ = 3)
5
1 2, 2 3, 3 4, 4 5, 5 1
Приклад зображення вище (χ = 3)
6
1 2, 2 3, 3 4, 4 5, 5 6, 6 1, 1 3, 2 4, 3 5, 4 6, 5 1, 6 2
Узагальнення викладеного для 7 вершин (χ = 4)
7
1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 1, 1 3, 2 4, 3 5, 4 6, 5 7, 6 1, 7 2
Граф Петерсенса (χ = 3)
10
1 2, 2 3, 3 4, 4 5, 5 1, 1 6, 2 7, 3 8, 4 9, 5 10, 6 8, 7 9, 8 10, 9 6, 10 7
Повний графік з 5 вершин, плюс відключена вершина (χ = 5)
6
1 2, 1 3, 1 4, 1 5, 2 3, 2 4, 2 5, 3 4, 3 5, 4 5
Повний графік з 8 вершин (χ = 8)
8
1 2, 1 3, 1 4, 1 5, 1 6, 1 7, 1 8, 2 3, 2 4, 2 5, 2 6, 2 7, 2 8, 3 4, 3 5, 3 6, 3 7, 3 8, 4 5, 4 6, 4 7, 4 8, 5 6, 5 7, 5 8, 6 7, 6 8, 7 8
Трикутна решітка з 15 вершинами (χ = 3)
15
1 2, 1 3, 2 3, 2 4, 2 5, 3 5, 3 6, 4 5, 5 6, 4 7, 4 8, 5 8, 5 9, 6 9, 6 10, 7 8, 8 9, 9 10, 7 11, 7 12, 8 12, 8 13, 9 13, 9 14, 10 14, 10 15, 11 12, 12 13, 13 14, 14 15