python海龟怎么填色,python小海龟填充颜色

  python海龟怎么填色,python小海龟填充颜色

  一.导言

  不知道本文使用的这种图像着色方案是否有前人提出过。如果没有人提出来,也是一个新的解决方案。虽然没有深入研究具体的性能对比,但是所需要的解决方案与网站中的最佳解决方案基本相同。

  我们知道很多问题可以转化为图的着色问题来解决,所以文中的例子都是无向图。

  第二,解决方案

  不成熟的想法:

  有很多配色方案可以让相邻点的颜色不一样,那么哪种配色方案使用的颜色最少呢?

  首先,当我第一次看到这个问题的时候,我的第一想法是用最少的颜色一次给尽可能多的点上色。

  _

  _

  _

  _

  _

  上面是一个简单的示意图,但是我选择的步骤如下。

  1.找出度数最大的顶点2、3、5(所有度数都是4)。

  2,2上的着色C1,遍历相邻点

  彩色C2在3和1

  给4和3上的C2上色,与1碰撞,给C3上色。

  5,5 C2着色,无碰撞。

  给6号和4号C2上色,给5号碰撞上色,给C3上色。

  7,4,C1着色,无碰撞。

  从一次结束一种颜色开始:

  我想实现之前的想法,但是在整理的过程中,我有了一个新的想法,结合之前运筹学课上学到的方法,可以更高效高质量的解决问题。

  步骤如下。

  第一步是在具有最大浓度的未着色点的顶点上着色Ci,并且生成同色点集作为不与该顶点相邻的未着色点集。

  第二步:遍历相同颜色的点集,用Ci对点集中的点进行着色,从之前的每个点生成相同颜色的点集。这是一组不与上述Ci点相邻的未着色点,直到具有相同颜色的点组为空。

  步骤3,更新未着色点集,i=i 1,返回步骤1

  示例:下面是myciel3.col的数据图,需要至少出现几种颜色。

  相邻矩阵是

  每个顶点的度数是4,4,4,4,3,3,3,3,5,度数最大的顶点是第11个顶点。

  1.您可以在V11上给C1上色,这样相同的颜色集就是{V1,V2,V3,V4,V5}。

  2.您可以在V1上给C1上色,这样相同的颜色集就是{V3,V5}

  3.V3上的彩色C1,并设置相同的颜色集{}

  4.给V2上的C2着色可以得到相同的颜色集{V4,V7,V9,V10}

  5.C2可以在V4上着色,因此相同的颜色集是{V7,V9}

  6.在V7上着色C2,并设置同色组{V9}

  7.在V9上给C2上色,收集相同的颜色集{}

  8.在V5上给C3着色可以得到相同的颜色集{V6,V8,V10}

  9.您可以在V6上为C3着色,以形成相同的颜色集{V10}

  10.在V10上给C3上色,并设置相同的颜色集{}

  11.彩色C4在V8上,并设置相同的颜色集{}

  彩色图片:

  使用了四种颜色,这与已知的最佳解决方案相同。

  三。python代码的实现

  1 defgetadjmatrix(path):2 edge=[]3 point num=04 with open)path, r )asfp:5 for line infp . read lines(:6 if line . starts with)p ):7 point num=int)line . split)233609 edd rtswith)e )and point num 0:11 edge)int)line . starts with))and point num 03

  12 edge[int()[2])-1)[int(line . split)]-1]=1

  13回到边缘,点数14

  15

  16defmain(:17edge,point num=getad jmatrix(r f:(Tim film(test . txt )18 print) 19 fori inedge 336666 end=

  27 #要记录每个顶点的着色,初始化颜色列表。

  28 color=[]29 for iinrange(point num):30 color . append(0)0)31 edge num=[sum(e)forein edge]32 forkin range

  34 maxedgepoint=[ iforiinrange [点数] ifedgenum [ I ]==max [边数] andedgenum [ I ]!=0(35)最大横向长度

  3 forpinmaxedgepoint 336037 ifpnotidisabled:38 #选择尚未着色且强度最高的点P开始着色。

  39 color[p]=colorNum 1

  4 disabled . append(p)41 edge num)=042 # temp用于查找该颜色可用于着色的下一个顶点。

  3 temp=edge[p]44 for iinrange(point num):45 ifinodindisabled 336046 if temp[I]==03:47 #为不碰撞的顶点着色

  48 color[i]=colorNum 1

  49名残疾人。追加(i) 50edge num [i]=051 #)增加当前颜色的禁忌点。

  5temp=[xy for (x,y in zip]edge[I],temp] 53 #需要新的颜色。

  54 colorNum=colorNum 1

  55

  6 #每个顶点都已着色。

  57如果0不在颜色中:58断开

  5打印(彩色)60打印(彩色号码)61

  62

  63 main())

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: