Re: [问题] is_spanning_tree

楼主: Usoul   2012-05-06 16:27:36
※ 引述《victoret (戏言~)》之铭言:
: 根据上篇讨论的内文和助教的推文...
: is_spanning_tree 需要顾虑到的东西有:
: 1. vertex 总数
: 过多:constant time
: 过少:要整个 tree 检查一遍
: 2. 结构是否为一个 spanning tree
: 有 cyclic、有没接到的 vertex:整个 tree 检查一遍
: 上面那两个功能要做出来,complexity 感觉都是可以接受的范围
: 不过...
这部分的功能很容易,你可以计算 Vertex 数目和 edge 数目,
|T(V)| == |V|
|T(V)| == |T(E)|+1
(可以采数学归纳法证明之:每增加一点,必为叶,必增加一边。)
之后再 traverse 一次看有没有 cycle 就可以判断了。
: 3. edge
: edge 的增加(ex:原图只有 v1
楼主: Usoul   2012-05-06 16:35:00
我对3的回答,主要是针对快速比对 weight 的问题
作者: jcmli (jcmli)   2012-05-06 18:59:00
用adjacent matrix较快;但是用adjacency list应该也不会爆炸victoret同学可以再将你的问题解释更清楚一点吗?
作者: victoret (戏言~)   2012-05-06 19:40:00
啊...抱歉...其实也不太确定会不会爆炸(还没写)只是觉得对于每一个 edge 都去检查的话,检查次数可能会超过 E 次...不过没什么根据就是了...抱歉...刚才再想想觉得应该不会超过 E 次的说...
楼主: Usoul   2012-05-06 21:38:00
傍晚老师和我稍微算了一下,即使是list,复杂度也是可接受的顺便补充第一点,|T(V)|=|T(E)|+1 这等式应该用不上如果用上的话,只需要检查Connectivity,不用检查cycle
作者: vincere (vin)   2012-05-10 21:22:00
想要再请问一下 拿去检查is_spanning_tree的档案名称中的数字 是否也是等于vertex数(|T(V)|) 所以我们直接检查|T(E)|相等即可呢?
楼主: Usoul   2012-05-10 22:13:00
不能这样假设哦,要假设档名跟图名都没有实际意义
作者: vincere (vin)   2012-05-10 22:43:00
谢谢助教 所以我想确定一下 拿去建bfs_tree/dfs_tree/MST的vertex数即等于它们的gn#.dot的# 而要拿去检查is_spann的则不一定?
作者: kickpp (踢屁屁)   2012-05-11 02:40:00
同楼上问题+1
楼主: Usoul   2012-05-11 09:57:00
原则上,会拿你们生出来的档案去测试所以不保证档名或图名的命名方式

Links booklink

Contact Us: admin [ a t ] ucptt.com