求教:如何判断一个有向图是否存在生成树?(高手狂进)

slindley 2003-05-21 05:18:13
求一个算法判断一个有向图是不是存在生成树,强连通的有向图一定是存在生成树的,请问非强连通的有向图该怎么判断是不是存在生成树呢?
请高手解答,另外一个有向网如果存在生成树,如何求它的最小生成树?
...全文
2204 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
slindley 2003-05-26
  • 打赏
  • 举报
回复 1
多谢,我先看看书,不懂,再来讨教,多谢诸位帮忙,尤其多谢 ZhangYv(多看问题少回答)Riemann() 两位了。
ZhangYv 2003-05-25
  • 打赏
  • 举报
回复
可以判断任意的图,数据结构任意。对此,楼主可以认真复习一下图的遍历就明白了。
Riemann 2003-05-25
  • 打赏
  • 举报
回复
0-1邻接矩阵
slindley 2003-05-25
  • 打赏
  • 举报
回复
还有Warshall算法是采用什么数据结构来表示图的?
slindley 2003-05-25
  • 打赏
  • 举报
回复
多谢楼上的各位的热心帮助,但是还有问题求教 ZhangYv(多看问题少回答) ,你给出的算法是判断有向网是否连通的吗?还有,它采用什么数据结构来表示有向网呢? 多谢了!
ZhangYv 2003-05-24
  • 打赏
  • 举报
回复
其实原理知道了,程序是很简单的,这是一种解法:
bool IsConnetivity()
{
bool visited[MAXSIZE];
int i;
for (i = 0; i < MAXSIZE; i++)
visited[i] = FLASE;
dfs(1, visited);//从标号为1的节点开始搜索判断是否为连通图
for (i = 0; i < MAXSIZE; i++)
if (!visited[i])
return FLASE;
return TRUE;
}
ZhangYv 2003-05-23
  • 打赏
  • 举报
回复
楼上的意思也就是说只要证明此图是连通图即可...
Riemann 2003-05-23
  • 打赏
  • 举报
回复
Warshall算法是用于求关系的传递闭包的,在左孝凌等所写的《离散数学》中有介绍。
LeeMaRS 2003-05-23
  • 打赏
  • 举报
回复
在吴文虎的那本 图论算法 上面有这个算法的介绍 好像是叫 最小树形图
slindley 2003-05-23
  • 打赏
  • 举报
回复
那位能否详细的给出一份算法呢?拜托了,我还是有点搞不定,多谢ZhangYv()和 Riemann() 两位的热心帮忙,还请再次赐教!
另外,什么是Warshall算法?关于什么的?
eion 2003-05-22
  • 打赏
  • 举报
回复
注意别用kruskal算法,用prim算法
eion 2003-05-22
  • 打赏
  • 举报
回复
肯定不是最优算法,

只要用最小生成树算法去生成,如果有就一定能够生成,没有就生成不了了

注意要挨个点的去搜索(开始结点要挨个点去试)。
ZhangYv 2003-05-22
  • 打赏
  • 举报
回复
prim和kruskal算法都利用了MST(最小生成树)性质,根据MST性质可证明对于连通图算法的正确性。非连通图是没有生成树的。MST是针对所有带权连通图的,你只要能找出图是非连通的,它就没有最小生成树。
slindley 2003-05-22
  • 打赏
  • 举报
回复
回 ZhangYv() 任何图都有生成树,所以任何图都有最小生成树。Prim Or Kruskal
好像并不是你说得那样吧? 非连通图没有生成树吧?生成树是指图中所有的结点均在树中,非连通图最多有生成森林而已。我说的是生成树!!!
请问BlueSky2008() 破圈算法适合于判断有向图是否存在生成树吗?请给予详细解答,谢谢!

另外如何判断有向图是否有生成树呢?再盼高手解答!
Riemann 2003-05-22
  • 打赏
  • 举报
回复
判断是否存在生成树很简单,只需执行Warshall算法(离散中的,求传递闭包)即可,如果得到的矩阵由某行全为1,证明存在生成树,否则,不存在。
至于最小生成树的求法,偶没想到好方法。
ZhangYv 2003-05-22
  • 打赏
  • 举报
回复
对图G的的某个节点K开始深度优先搜索,寻找和K连通的子图GA,如果GA == G则图G存在最小生成树,否则就不存在。
ZhangYv 2003-05-22
  • 打赏
  • 举报
回复
深度优先搜索,只要找出有部分图是非连通的,它就没有最小生成树,否则就存在.最小生成树
slindley 2003-05-22
  • 打赏
  • 举报
回复
上面的各位能不能详细的说一下,最好能给出一份算法,多谢了!
BlueSky2008 2003-05-21
  • 打赏
  • 举报
回复
破圈算法是1975年由我国数学家管梅谷教授提出来的。
基本思想:在给定的图中任意找出一个回路,删去该回路中权最大的边。然后在余下的图中再任意找出一个回路,再删去这个新找出的回路中权最大的边,……一直重复上述过程,直到剩余的图中没有回路。这个没有回路的剩余图便是最小生成树。
破圈法的前提是输入的图必须是一个连通图。
ZhangYv 2003-05-21
  • 打赏
  • 举报
回复
忘了,上面第一个生成树指的是最大点生成有向树...
加载更多回复(3)

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧