四色定理(four color map theorem)是一个著名的数学定理[1],即对任意的(平面上的)地图染色,要求相邻的国家颜色不同,四种颜色即可完成着色。

南非数学家法兰西斯·古德里在1852年提出“四色问题”或“四色猜想”。证明宽松一点的“五色定理”(即“只用五种颜色就能为所有地图染色”)很容易,但是四色定理证明持续了很长时间。

四色定理不是地图学的定理,四色定理是第一个由计算机证明的数学定理。1976年,哈肯及其学生在伊利诺伊大学(即现在UIUC)的IBM360电脑上编程,经过电脑1200小时的验证,他们终于在6月证明四色定理。1976年6月22日,哈肯和阿佩尔在于多伦多大学召开的美国数学学会(A.M.S.)夏季会议公布他们的结果。不久,伊利诺伊大学数学系的邮戳上加上了“四种颜色就够了”(FOUR COLORS SUFFICE)的一句话,以庆祝四色猜想得到解决。1977年,哈肯和阿佩尔将结果写成名为《任何平面地图都能用四种颜色染色》(Every planar map is four colorable)的论文,分成上下两部分,发表在《伊利诺伊数学杂志》(Illinois Journal of Mathematics)上[2][3].

图1 四色定理的证明(自[4])

这是现在伊利诺伊大学大学厄巴纳香槟分校数学系主楼(离我们CyberGIS办公楼大约2分钟步行距离)。我和同事曾在午饭后参观过UIUC数学楼,学术氛围非常浓厚。

图2UIUC数学楼

四色定理被证明后,经历了十几年争议、修正和改进的过程。1986年,哈肯和阿佩尔应《数学情报》杂志的邀请,发表了1篇清晰易懂的证明总结文章,1989年的最终的定稿超过400页(貌似图论中的经典定理证明都比较长)。

图3 四色定理专著(自[4])

四色定理不是地图学定理,但它是地图学的经典问题。地图设计的专著中对四色定理描述很少。四色定理在地图中的应用其实没有想象的那么广,其实原因比较多,第一个是地图着色中可能会有飞地,即两个不连通的区域属于同一个国家(例如美国的阿拉斯加州),而地图着色时仍需要这两个区域涂上同样颜色。即使很多情况下,有些地图可以用四色着色,但是实际成图中依然用多种颜色(大于等于5种)[5]。我认为还有个原因是四种颜色来着色上千个多边形,四种颜色交错、不够美观。5年前我看到有学者基于强化学习来计算平面点集的凸包时,曾想过基于强化学习求解地图着色问题,这或许可行?

图4 地图设计原理

关于四色定理算法的综述、算法和应用的文献资源比较多,我推荐两个参考资源。作为一个GISer,Marco关于图着色研究的算法进展[6]和Joe介绍的多种着色算法[7](比如经典的DSATUR算法等)值得一看。

图 5 DSATUR算法原理

后记:大约十几年前,我曾在北京超图软件股份有限公司(SuperMap)的研究院(之前称为研发中心)完成四色算法的编码实现,针对全国2800多个县市级数据,当时的着色算法能在秒内时间完成5着色,4着色大概需要十几秒?SuperMap iDesktop新版本中的地图着色算法,想必已经被同事们提升了更高的计算效率。

参考:

1. 维基百科四色定理. https://zh.wikipedia.org/wiki/%E5%9B%9B%E8%89%B2%E5%AE%9A%E7%90%86

2. K. Appel, W. Haken. (1977). Every planar map is four colorable part I. discharging. Illinois Journal of Mathematics, 21, 429-490.

3. K. Appel, W. Haken, J. Koch. (1977). Every planar map is four colorable. Part II: Reducibility. Illinois Journal of Mathematics, 21(3), 491-567.

4. https://www.math.ku.dk/formidling/moed-math/moed-math-2014/oplaegholdere/WilsonFOURCS.pdf

5. Tyner, J. A. (2014). Principles of map design. Guilford Publications.2014.

6.http://www.imada.sdu.dk/~marco/gcp/

7.http://webdocs.cs.ualberta.ca/~joe/Coloring/

java 地图四色着色算法_趣味地图系列之6 四色定理之我见相关推荐

  1. java 地图四色着色算法_继陈景润之后周立敬攻破世界三大数学难题之一:地图四色难题...

    地图四色问题又称四色猜想,与哥德巴赫猜想.费马猜想一起并称为为世界三大数学猜想.世界三大数学难题. 1965年5月,陈景润发表论文<大偶数表示一个素数及一个不超过2个素数的乘积之和>,最接 ...

  2. java 地图四色着色算法_四色定理的简单证明:从四色猜想到四域公理

    摘要 "四色猜想"也称"四色定理",一直以来都没有一种简捷明快的证明方法,然而,本文认为"四色猜想"可以作为一个平面区域相邻关系的" ...

  3. Python实现地图四色原理的遗传算法(GA)着色实现

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个由多个小图斑组成的矢量图层,如下图所示:我们需要找到一种由4种颜色组成的配色方案,对该矢量图层各图斑进行着色,使得各相邻小图斑间 ...

  4. 地图四色着图的C语言实现

    四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...

  5. c语言电子地图程序,地图四色着图的C语言实现

    四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...

  6. 算法_趣味分数_Question5_列出真分数序列(java实现)

    这篇文章讲述的是算法趣味分数部分的列出真分数序列问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. ...

  7. 算法_趣味分数_Question7_分数比大小(java实现)

    这篇文章讲述的是算法趣味分数部分的分数比大小问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. 问题 ...

  8. 图的四色着色(C语言)

    2017计算机学硕复试真题 用四种颜色给地图着色,要求相邻块颜色不同,图用邻接矩阵存储,求所有着色方案. 思路: (草稿) 递归,如用下图,做出邻接矩阵: map[N][N] = {   0,1,1, ...

  9. java 最少使用(lru)置换算法_「Redis源码分析」Redis中的LRU算法实现

    如果对我的文章感兴趣.希望阅读完可以得到你的一个[三连],这将是对我最大的鼓励和支持. LRU是什么 LRU(least recently used)是一种缓存置换算法.即在缓存有限的情况下,如果有新 ...

最新文章

  1. python若干整数的最大值_实例讲解Python中整数的最大值输出
  2. 用 C 语言开发一门编程语言 — 条件分支
  3. python从1到n出现了多少个1-Python解决 从1到n整数中1出现的次数
  4. 深入理解模板模式及实际应用
  5. hbase 学习(十四)Facebook针对hbase的优化方案分析
  6. [蓝桥杯2016决赛]反幻方-next_permutation枚举
  7. pytorch利用rnn通过sin预测cos 利用lstm预测手写数字
  8. 计算与推断思维 十七、更新预测
  9. 企业者的福音之8266接入阿里智能,点亮一盏灯
  10. U-Boot>WebHome翻译
  11. Ubuntu下好用的小工具
  12. function signature是什么
  13. Codeforce 1800Difficulty Graphs 20 questions
  14. Hibernate学习(八):检索方式
  15. java 企业级安全_《企业级Java安全性—构建安全的J2EE应用》 尹亚 【正版电子纸书阅读_PDF下载】- 书问...
  16. aic准则和bic准则_用户故事准则
  17. 高德地图 删除marker(指定marker)
  18. vue-cli3打包时图片压缩处理
  19. C语言提取字符对应的ASCAl,ascall码对照表(ASCII码表)
  20. 用青龙跑渤海宣传员(收益很稳定)

热门文章

  1. [ROC-RK3568-PC] [Firefly-Android] 10min带你了解ADC的使用
  2. TIA博途V16专业版与博途V15.1专业版或其他版本能否安装在同一台PC中?
  3. 万字长文细说 Code Review 的正确姿势
  4. Correcting Chinese Spelling Errors with Phonetic Pre-training
  5. 大数据挖掘-伤寒论和金匮要略(COVID-19用药启示录)
  6. office之PPT插入页码没有反应
  7. 2017北京ICPC -G - Liaoning Ship’s Voyage (HihoCoder - 1633)几何
  8. 读研攻略--如何选择你的研究方向并展开学习
  9. 如何用计算机名安装打印机,如何添加打印机(如何在电脑上安装打印机?)
  10. Unity3D--加载界面、开始界面