网站大量收购独家精品文档,联系QQ:2885784924

chemperl无向图中找简单闭合回路perl的实现(10页).doc

chemperl无向图中找简单闭合回路perl的实现(10页).doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chemperl无向图中找简单闭合回路perl的实现(10页)

1前提:对一连通分量P,将其用邻接矩阵表示法来表示 1 ) 0代表不连通,1 代表连通 2 用广度优先算法求出连通分量P的支撑树(即生成树) 生成树:是一个极小连通子图,它含有图中全部顶点,但只有n-1条边。 由深度优先搜索遍历得到的生成树,称为深度优先生成树。 由广度优先搜索遍历得到的生成树,称为广度优先生成树。 见下页无向图G7的两种生成树。 这里我们使用的是广度优先算法,所以我们得到的是图(b).广度优先生成树BFS 通过BFS算法,把边的权重改为-1; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 结果当然要放到正文里了。 ------------------------------------------------ 下面是连通信息 1 2 1 5 1 8 2 3 2 13 3 6 3 14 4 6 4 7 4 15 5 7 5 11 7 9 8 16 9 10 9 18 10 12 10 17 11 12 11 21 12 22 13 16 13 23 13 24 16 25 16 26 17 20 17 27 18 19 18 28 19 20 19 29 20 30 ------------------------------------------------------ 这里是连通信息表达的分子式 ----------------------------------------------------------------------------- 这里是我用perl写的脚本寻找环的编号, #!/usr/bin/perl -w use strict; #N=30 E=33 30个点, 33 条边 #构建邻接矩阵 my $x; my $y; my @matrix; for($x=1;$x=30;$x++) { for($y=1;$y=30;$y++) { $matrix[$x][$y]=0; } } open FH,F:\\C\\bond; while(FH) { /(\d+)\s+(\d+)/; $matrix[$1][$2]=1; $matrix[$2][$1]=1; } close FH; #for($x=1;$x=30;$x++) #{ # for($y=1;$y=30;$y++) # { # print $matrix[$x][$y]; # } # print \n; #} #打印邻接矩阵 my @color; #对每个顶点u∈V,其色彩存储于变量color中. my @parent; #结点u的父母存于变量π[u]=parent中 #如果u没有父??(例如u=s或u还没有被检索到),则 π[u]=NIL ##初始化 #把所有的点初始化为 白色 for(1..30) { $color[$_]=w; } my @box; #用来存放灰色的顶点 $parent[1]=0; #表示1号原子没有父母,也就是说任命 1号原子为root,祖宗 $color[1]=g; #把1号原子的颜色变为灰色g grey, #黑色b Black; 灰色grey g push @box,1; #把灰色的1号原子放到盒子中 #写一个子例程,用来返回 一个原子的相连原子 #print join \n,adj(2); sub adj { my @adjatoms=(); my $adj_atom=$_[0]; open FH,F:\\C\\bond; while(FH) { if($_=~/\b$adj_atom\b\s+(\d+)/ || $_=~/(\d+)\s+\b$adj_atom\b/) { push @adjatoms,$1; } } return @adjatoms ; }

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档