Skip to content

billzi2016/Four-Color-Theorem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

四色定理 — 简化版 Appel-Haken 框架

用 Python 演示四色定理证明的核心思想:放电法 + 可归约性 + Kempe 链


四色定理是什么

任何平面地图,只需四种颜色,就能使相邻区域颜色各不相同。

1976 年,Appel 与 Haken 借助计算机完成了人类历史上第一个重要定理的计算机辅助证明,共检验 1,936 种不可避免构型。1997 年 Robertson 等人将其简化至 633 种。本项目演示该证明的骨架框架。


证明思路

欧拉公式  V - E + F = 2
    ↓
Σ(6 - deg(v)) ≥ 12 > 0        ← 放电法
    ↓
任意平面图必含"不可避免构型"(度数 ≤ 5 的顶点等)
    ↓
假设存在最小 4 色反例 G*
    ↓
G* 必含上述构型  →  该构型可归约(Kempe 链论证)  →  矛盾
    ↓
最小 4 色反例不存在  →  所有平面图均可 4 着色  □

三个核心概念

概念 说明
放电法 (Discharging) 给每个顶点赋电荷 6 - deg(v),由欧拉公式总电荷 ≥ 12 > 0,证明低度数顶点必然存在
Kempe 链 颜色 a/b 的交替连通分量;交换链上颜色不破坏合法着色,可为新顶点腾出颜色
可归约性 低度数构型不可能出现在最小反例中:deg ≤ 3 平凡可归约,deg = 4 由 Kempe 链 + 平面性保证,deg = 5 由 Birkhoff 菱形论证(1913)

项目结构

Four-Color-Theorem/
├── four_color_appel_haken.py   Python 演示程序
├── results/
│   ├── result_1.txt            轮图 W5 的运行结果
│   ├── result_2.txt            3×3 网格的运行结果
│   ├── result_3.txt            十二面体图的运行结果
│   └── result_4.txt            二十面体图的运行结果
└── animation/                  浏览器可视化动画
    ├── index.html
    ├── css/style.css
    └── js/
        ├── voronoi.js          像素化 Voronoi 计算(最近邻法)
        ├── coloring.js         四着色回溯算法 + 轨迹记录
        ├── scene.js            场景生成(随机多层布点)
        ├── renderer.js         逐像素渲染
        └── main.js             动画主循环与状态机

Python 模块

模块 功能
Graph 无向图(邻接集),含平面性检测
discharging_analysis() 阶段一:放电法,展示欧拉推导与电荷分配
explain_reducibility() 阶段二:可归约性说明,含 Kempe 链论证文字证明
KempeChain Kempe 链查找与颜色交换
four_color() 阶段三:最小度优先贪心 + Kempe 链 + 回溯兜底
verify_and_print() 验证着色合法性并输出结果
appel_haken_demo() 主演示框架,串联三个阶段

浏览器动画

直接用浏览器打开 animation/index.html(无需服务器)。

每一轮随机生成一张由 380–600 个 Voronoi 区域构成的复杂平面图,然后实时演示 Welsh-Powell 排序 + 回溯法 的四着色过程:

  • 每次试色(赋颜色)和退色(回溯)都逐步可见
  • 全图着色完成后静止展示,随后淡出切换到新图
  • 切换期间后台预算下一张,过渡无卡顿

点击或按任意键 可立即跳到下一张。


快速开始

依赖

pip install networkx

运行

python3 four_color_appel_haken.py

按提示选择测试图:

1. 轮图 W5         — 简单,含高度数中心顶点
2. 3×3 网格        — 所有顶点 deg ≤ 4,Kempe 链基础演示
3. 十二面体图      — 所有顶点 deg=3,经典案例
4. 二十面体图      — 所有顶点 deg=5,Kempe 链最复杂场景

测试图说明

顶点数 边数 顶点度数 特点
轮图 W5 6 10 中心 deg=5,外圈 deg=3 最简单
3×3 网格 9 12 ≤ 4 贪心直接可解
十二面体图 20 30 全 deg=3 经典三正则平面图
二十面体图 12 30 全 deg=5 最具挑战性,充分体现 Kempe 链

与完整证明的差距

本程序演示的是证明骨架,与 Appel-Haken 完整证明的差距在于:

  • 不可避免构型集:完整证明需检验 1,936 种构型,本程序仅处理度数 ≤ 5 这一族
  • 可归约性验证:完整证明对每个构型用计算机穷举验证"D-可归约性",本程序用 Kempe 链给出教学论证
  • 放电规则:完整证明使用数十条精细放电规则,本程序仅展示最基础的两条

完整的形式化验证由 Gonthier(2005)在 Coq 定理证明器中完成,代码约 60,000 行。


参考文献

  • Appel, K. & Haken, W. (1977). Every planar map is four colorable. Illinois Journal of Mathematics, 21(3).
  • Robertson, N., Sanders, D., Seymour, P., & Thomas, R. (1997). The four-colour theorem. Journal of Combinatorial Theory, Series B, 70(1), 2–44.
  • Gonthier, G. (2008). Formal proof — The four-color theorem. Notices of the AMS, 55(11), 1382–1393.
  • Kempe, A. B. (1879). On the geographical problem of the four colours. American Journal of Mathematics, 2(3), 193–200.

About

Python demonstration of the Four Color Theorem proof skeleton, covering discharging, reducibility, and Kempe-chain reasoning.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors