1、最后统计染色种数。染色问题的算法伪代码可以描述如下: coloDFS(当前染色结点): fr i in 所有颜色 wile的已染色邻接点 i结点相邻接点被染成颜色 标记并break i未被标记 当前结点染为i色 f当前结点为最后一个结点 end e olor_DFS(nex) 3.3 数据结构设计为了实现染色算法,我们需要设计相应的数据结构。由于图的结点不多,只有2个,我们采用图的邻接矩阵来存储该图,记为mp333,map不存储数据,如果两结点i,j相邻,mpij=,否则mapij=0。为了便于计算机编程,我们将每一个地名用相应结点号来表示,:新疆,2:西藏,:青海,4:甘肃,5:内蒙古,6:
2、宁夏,7:黑龙江,8:吉林,9:辽宁,0:河北,1:北京,12:山西,13:陕西,14:山东,15:天津,6:河南,1:安徽,:江苏,1:上海,2:浙江,21:福建,2:江西,23:广东,24:湖南,25:湖北,6:重庆,7:四川,:贵州,29:云南,30:广西,1:香港,32:澳门。新疆和西藏相邻,那么我们就可以用mp11来表示。同样地,一种颜色我们也可以用一个数字来表示,在这里,我们用数字来代表颜色,比如1-红、2-蓝、3-绿、4黄。四、 C语言代码实现inlue tdio.#icldeiostreamsingamespacestd;har am10=,,青海,宁夏,黑龙江,吉林,辽宁,河
3、北,陕西山东天津,上海,浙江福建,,广东湖南云南,广西香港,澳门;car color4=,红,蓝,绿黄int mp333;intvis3;it n,m;lglo ct;/染色方法设置为nong防止溢出voi init_mp() map2=map21=1;/表示新疆和西藏连通 map13mp31=; ma14=mp4=1; map23=map321; map227ap72=1; mp229ma292=1; ap3=map43=1; mp32=ap273=1; p5=m5=1; map4=m6=1; ap41mp34=; mp427ma2741; map56=ap65=1; map57=ap751
4、; p8=map5=1; ap59=p95; p5=p105=1; p512a125; ma513=mp31; map61=map16=; p78=ma7=1; ap8=m981; map1=map109=1; m1=ap10=1; map1012=ap12101; map1014map1401; m015=mp150=1; map101=map16101; map111=ma1511=1; mp123p13=1; map121=mp16121; mp1316map63=1; mp1325=ma21=1; p1=map2611; 1322713=1; ma141=map=; mp14ma1;
5、map1418=ma184=; ma617=map716=1; map625=map25161; ap1718=ap187=; map120=ap20=1; ap22=mp21=; map725p251=; p819=map191=1; a180=map20181; m190=m019=1; p2021=map2120=1; map22=mp2=1; ap2122=mp21; map223=ap23211; map223map22=1; ma2224ma2421; map2225ma252=1; ma234a223=1; map230=ap303=; mp2331=map3123=; map2
6、332map331; map22=mp254=1; map2426=map264; map2428=ap2824; map2430=mp3024=1; m226=ap22=1; ap262=ap2726=1; map2628p2826=1; map27=map28271; a2729ma29=1; map89ap928=1; ap2830=p028=1; ma93=ma029=;od dfs(innow)/当前结点染色 it i,; f(i = ; in; +)/种颜色 int fl = 1; fr( 1; j5) it(0); for(k=;k=m;k+)/输出组染色结果 pinf(%-%s
7、 ,naek,olvik); i(k%8=0) prnf(); prtf(n/ else df(no+1);/下一个结点染色 int min() =4;/种颜色 m3;/32个省份 meet(map,,sizeof(ap);/地图全部置为0,表示未连通 eet(vis,zeo(vs); /每个顶点未染色 init_ma(); /初始化图 ct =;/染色方法数 ds();/从结点开始染色 pitf(%lld,nt); rturn 0;五、 结果分析本次实验在MAC_S操作系统进行实验,处理器为.8GHz nteli7处理器,其计算结果为051606,耗时约10s。如果加上海南省和台湾省,其最终的计算结果为3605196*1=5782736。 图1是部分染色结果(不包括台湾、海南省),事实上台湾海南省的染色任意。图1 2个结点部分染色结果六、 总结通过这个图论染色问题,加深了我对图论知识的理解。我明白了如何将理论知识应用到实际问题中来。虽然我以前也做过类似的地图染色实验,但是在这过程中我发现了自己的一些不足,比如说不够仔细,在构建一个邻接矩阵中多次忘记一些邻接边,以至于邻接矩阵错误。总之,这次实验加强了我的动手能力以及解决问题的能力,加深了我对图论知识的理解和数据结构的应用能力,总之我收获颇多。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1