| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 382 人关注过本帖
标题:数据结构算法
只看楼主 加入收藏
zhijinwen
Rank: 2
等 级:论坛游民
帖 子:12
专家分:12
注 册:2010-6-20
结帖率:0
收藏
已结贴  问题点数:8 回复次数:2 
数据结构算法
怎样找出一个有向图的一个点到另一个点的所有行径(各边互不相同)的条数,和回路(各边互不相同)的数量;
请哪位大侠给出算法;
2011-04-02 20:20
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:4 
我前几天复习的时候看离散数学时,图论里面有个解决这个问题的算法,刚好与楼主分享。
伪代码如下:
程序代码:
r[i][j]=a[i][j];
    for (k=1;k<=n;k++)
        for (i=1;i<=n;i++)
            for (j=1;j<=n;j++)
                r[i][j]=r[i][j]+r[i][k]*a[k][j];
矩阵a存储的是原始图的矩阵。最终矩阵r里面就得到你想要的结果了,有向图a所有的点到点的路径以及回路数量。
其实这个算法有个改进,改进过后的算法叫做Warshall算法。因为我们平常并不关心知道是否有多少条路径,而只需要知道有没有通路或者回路即可,所以我们可以把上面最后一行的代码改为布尔乘,这样最后
r[i][j]=r[i][j]|(r[i][k]&a[k][j]);

具体算法我就不描述了,如果有需要我会再手动打出文字描述,我随手打的不知道我打的有没错,楼主自己看下吧。。

[ 本帖最后由 baobaoisme 于 2011-4-3 09:28 编辑 ]
2011-04-02 21:04
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:4 
用回朔也行吧

我的地盘
2011-04-02 21:27
快速回复:数据结构算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028705 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved