图的着色问题

  今天又重温了一道以前做过的ACM题目,joj1003,一道典型的图形着色问题。具体题目不列了。同学写的算法忽略了一种情况,但是我们两个找了很久才找到。

    他原来的思想是:对于每一个输入,先假设用颜色1着色,进行搜索紧跟他后面的输入,如果有输入进行了着色,就累加(用颜色2,3,4),重新对这一节点进行着色。发现问题是:可能有种情况不符合,在两个三节点强连通图进行连接后,都先对两个不是连接点的节点进行着色,再对连接点进行着色,发现连接点必须要用更加新的颜色,导致必须使用4种颜色。其实,使用三种颜色就可以了。

      后来,我着重看了一下图形着色问题,见附件中ppt。图形着色分为顶点着色和边际着色两种,边际着色可以转化为图形定点着色问题。解决方案有四种:

      1穷举法(先排序,进行穷举搜索最大覆盖)

       2回溯法(常规做法,首先把所有顶点的颜色初始化为0,然后依次为每个顶点着色。如果其中i个顶点已经着色,并且相邻两个顶点的颜色都不一样,就称当前的着色是有效的局部着色;否则,就称为无效的着色。如果由根节点到当前节点路径上的着色,对应于一个有效着色,并且路径的长度小于n,那么相应的着色是有效的局部着色。这时,就从当前节点出发,继续探索它的儿子节点,并把儿子结点标记为当前结点。在另一方面,如果在相应路径上搜索不到有效的着色,就把当前结点标记为d_结点,并把控制转移去搜索对应于另一种颜色的兄弟结点。如果对所有m个兄弟结点,都搜索不到一种有效的着色,就回溯到它的父亲结点,并把父亲结点标记为d_结点,转移去搜索父亲结点的兄弟结点。这种搜索过程一直进行,直到根结点变为d_结点,或者搜索路径长度等于n,并找到了一个有效的着色为止。)

      3贪心法(类似回溯,以顶点进行循环条件,较复杂)

      4,蚁群算法(不懂)

“四色定理”可是19世纪的世界三大难题,依赖计算机科学的发展才证明了出来。看到有人将这道题目理解为四色定理,应该是不对的,四色定理的应用有个前置条件,就是图形的顶点连线是不会交叉的,而本题的顶点连线是允许这种操作的。

你可能感兴趣的:(职场,ACM,休闲,图形着色,joj1003)