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