读文件把while(<DATA>)换成while(<F>)就可以了
在 2011年7月14日 下午4:02,jie liu <[email protected]>写道: > 我刚刚也看到了,还去了作者给的一个地址(http://home.hiwaay.net/~gbacon/perl/clique.html > )看来一下,很激动!就是我要找的,谢谢大家了哈。 > > 但是,我都perl不熟,现在我把矩阵存在txt里了(1代表有边,0代表无边),我怎么把矩阵读进去,然后形成graph,然后用clique呢...朱岩的程序我使了下,没成功。朱岩的程序里我没有看到读入的操作啊(实在是对perl不熟悉...) > > > 2011/7/14 nixin <[email protected]> > >> 果然有现成的库。clique这个关键词没有掌握,搜了好一会全连通图,啥也没搜到。呵呵。 >> >> On 7月14日, 下午1时28分, 朱岩 <[email protected]> wrote: >> > 图论解法: >> > >> > 找最大完全连通子图,可以用Graph::Clique,当然应该还有更好的算法; >> > 这里只举了个10x10的小例子 >> > 用非零数的平方根作为最大子图顶点数的上限 >> > >> > use strict; >> > use Graph::Clique; >> > >> > my @edges; >> > my %h; >> > my $nnz; # num of non-zeros >> > >> > # build up undirected graph >> > >> > while(<DATA>){ >> > my $i = $.+1; >> > my @a = split(/ /,$_); >> > for my $j (0..$#a){ >> > if ($a[$j]){ >> > $nnz++; >> > my $e = $i <= $j ? $i.",".$j : $j.",".$i; >> > $h{$e}++; >> > } >> > } >> > >> > } >> > >> > foreach my $key (sort keys %h){ >> > my @a = split(/\,/, $key); >> > push @edges, [@a]; >> > >> > } >> > >> > # find maximal clique >> > >> > my @cliques; >> > >> > for (my $k=int(sqrt($nnz)); $k>3; $k--){ >> > @cliques = getcliques($k,\@edges); >> > if ($#cliques >=0){ >> > last; >> > } >> > >> > } >> > >> > print join("\n", @cliques),"\n"; >> > >> > __DATA__ >> > 0 0 1 0 1 0 0 0 0 0 >> > 0 1 1 0 0 0 0 0 0 0 >> > 1 1 1 0 1 0 0 1 0 0 >> > 1 1 1 0 0 0 0 0 0 0 >> > 1 1 1 0 1 0 0 1 0 1 >> > 0 0 0 0 0 0 0 0 0 0 >> > 0 0 0 0 0 0 0 0 0 0 >> > 0 0 1 0 1 0 0 1 0 1 >> > 0 0 0 0 0 0 0 0 0 0 >> > 0 0 0 0 1 0 0 1 0 0 >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 >> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >> >> > > > -- > Best regards, > Liu Jie > > 020-32015312 > Guangzhou Institutes of Biomedicine and Health, Chinese Academy of > Sciences > http://www.gibh.cas.cn/ > > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > -- Yours, Yan Zhu Institute of Microbiology, Chinese Academy of Sciences Datun Rd. Chaoyang District Beijing 100101 P. R. China -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
