[資工] 97-103電機丙數題(RB,AVL),中央101 MST
看電機丙的幾個考古希望確認
[NTUEE 100 10(a)]
F
The number of rotations per insert/delete operation in a Red-Black tree is
O(logn).
[NTUEE 97 11(d)]
T 1/30修正,謝謝FRAXIS,HiltonCool
After inserting a new node to an AVL tree, at most two rotation are needed
to re-balanced the tree.
[NTUEE 97 15(e)]
T
After inserting a new node to an Red-Black tree, at most two rotation are needed
to re-balanced the tree.
----------------------------
AVL 和 Red-Black 兩者應該都是至多花2次rotation?
至於為什麼兩種資料結構的insert/delete都是複雜度logn , 是因為找到插入(or刪除)位置
的cost(因為balanced tree不會走太深,至多logn)?
推
01/29 23:08,
01/29 23:08
→
01/29 23:09,
01/29 23:09
→
01/29 23:09,
01/29 23:09
推
01/30 00:08,
01/30 00:08
→
01/30 00:09,
01/30 00:09
→
01/30 00:10,
01/30 00:10
→
,
[NCU 101 II 3(c)]
已知 G = (V,E) , 及其MST T , 如果現在新增一個點x構成 G'=(V∪x,E∪E(x)) , 得到
G'之MST的演算法能多快? (note:E(x)包含x與G相鄰的邊)?
E(x)中可能不只一條edge可以取代T中的edge,所以必須整個G'再重跑一次MST Algo?
有辦法再linear time完成嗎?
http://exam.lib.ntu.edu.tw/sites/default/files/exam/graduate/103/103418.pdf
[NTUEE 103 DS]
1.用link list實做一個sort list,另外需額外兩個變數協助median()運作
分別為mid element的指標,與目前list的element個數 num
如此 insert() / delete() 皆須O(n)
median僅需O(1):用num判斷mid指標如何調整即可
是否有更快的方法 ?
→
01/29 23:10,
01/29 23:10
3(a)(b)
只想到用 圓心距離-半徑和 判斷是否屬於同一個 colsed region
用Disjoint Set的表示法將屬於同一個 closed region的circle指向同個區塊的某個circle
不過在題幹要求的兩個動作
op1: 回報目前colsed region數量
op2: 加入新的circle並更新colsed region數量
都需要花O(n)才能完成 //n為circle的個數
是否有更好的想法?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.82.209
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1422540457.A.C2A.html
→
01/29 22:40, , 1F
01/29 22:40, 1F
→
01/29 22:40, , 2F
01/29 22:40, 2F
推
01/29 23:08, , 3F
01/29 23:08, 3F
→
01/29 23:09, , 4F
01/29 23:09, 4F
→
01/29 23:09, , 5F
01/29 23:09, 5F
→
01/29 23:10, , 6F
01/29 23:10, 6F
→
01/29 23:10, , 7F
01/29 23:10, 7F
→
01/29 23:10, , 8F
01/29 23:10, 8F
→
01/29 23:11, , 9F
01/29 23:11, 9F
推
01/30 00:08, , 10F
01/30 00:08, 10F
→
01/30 00:09, , 11F
01/30 00:09, 11F
→
01/30 00:10, , 12F
01/30 00:10, 12F
→
01/30 00:11, , 13F
01/30 00:11, 13F
謝謝大家回覆
想補問F大 , MST那題你的想法是用到MST證明的觀念嗎?
因為如果只有一根non MST edge確實可以丟到T裡面
->檢查cycle
->捨去最大邊 , 因為MST cycle至長|V|-1 , 故複雜度是O(|V|)
不過這個方式再不只一邊的時候似乎會有問題 , 不確定你提到的O(|V|)是否和
這個想法相似 ?
NTUEE 103 3(a)(b)
這邊我的問題是
即使使用 Disjoint Set , 新加入的circle仍要一一去比對同一個set中的所有circle
(因為是取相交的circle屬於同一個set , 若A,B屬於相同set , 和A相交未必和B相交),
如果不幸地每次都恰巧和檢查到的最後一個circle才發生相交,或是input都是不相交的
circle,這樣仍無法避免worst case會需要O(n) ?
※ 編輯: qoojordon (59.115.64.42), 01/30/2015 08:52:10
推
01/30 08:10, , 14F
01/30 08:10, 14F
→
01/30 08:10, , 15F
01/30 08:10, 15F
推
01/30 10:29, , 16F
01/30 10:29, 16F
→
01/30 10:29, , 17F
01/30 10:29, 17F
推
01/30 10:42, , 18F
01/30 10:42, 18F
→
01/30 10:42, , 19F
01/30 10:42, 19F
→
01/30 10:42, , 20F
01/30 10:42, 20F
→
01/30 10:42, , 21F
01/30 10:42, 21F
→
01/30 11:18, , 22F
01/30 11:18, 22F
→
01/30 11:18, , 23F
01/30 11:18, 23F
推
01/30 12:43, , 24F
01/30 12:43, 24F
→
01/30 12:44, , 25F
01/30 12:44, 25F
謝謝w大提醒,已修證
回覆galapous:
請問你指得調整父點是?? 如果是AVL tree我做過的case都是 constant
如果是RB tree , 會往上調整的只有叔叔為R的case , 往上只會牽涉變色 ,
一但某次需要靠旋轉做調整 , 即調整完成不會在往上了 , 所以還是constant次旋轉
至於刪除考古題中出現的次數太少,我自己也不是很有把握,看回文的話 AVL tree的部分
F大和H大的回覆有些出入 , WIKI的說法比較接近F大的
http://zh.wikipedia.org/zh-tw/AVL%E6%A0%91
回覆kather:
這邊的O(n)是指在Disjoint Set已經建好的情況下去討論的 , 如果是只給 n筆circle
資料要建出滿足相交關係的 Disjoint Set以我的方法需要O(n^2)
※ 編輯: qoojordon (59.115.64.42), 01/30/2015 19:29:41
推
01/30 20:13, , 26F
01/30 20:13, 26F
→
01/30 20:13, , 27F
01/30 20:13, 27F
→
01/30 20:36, , 28F
01/30 20:36, 28F
推
01/30 20:58, , 29F
01/30 20:58, 29F
→
01/30 20:59, , 30F
01/30 20:59, 30F
A C
|---------| |----|
|-----|
B
Disjoint Set:
A
↑
B
這樣的話當C加入時需要判斷要不要和A做Union , 如果C只和A做是否相交的判斷會出錯
※ 編輯: qoojordon (59.115.64.42), 01/30/2015 21:16:49
推
01/30 21:26, , 31F
01/30 21:26, 31F
推
01/30 21:30, , 32F
01/30 21:30, 32F
推
01/30 22:00, , 33F
01/30 22:00, 33F
→
01/30 22:02, , 34F
01/30 22:02, 34F
→
01/30 22:26, , 35F
01/30 22:26, 35F
→
01/30 22:26, , 36F
01/30 22:26, 36F
推
01/30 22:55, , 37F
01/30 22:55, 37F
→
01/30 22:56, , 38F
01/30 22:56, 38F
→
01/30 22:57, , 39F
01/30 22:57, 39F
→
01/30 22:59, , 40F
01/30 22:59, 40F
→
01/30 22:59, , 41F
01/30 22:59, 41F
推
01/30 23:02, , 42F
01/30 23:02, 42F
推
01/31 00:54, , 43F
01/31 00:54, 43F
→
01/31 00:54, , 44F
01/31 00:54, 44F
→
01/31 00:55, , 45F
01/31 00:55, 45F
推
01/31 20:56, , 46F
01/31 20:56, 46F
推
02/01 08:58, , 47F
02/01 08:58, 47F
→
02/01 08:58, , 48F
02/01 08:58, 48F
推
02/01 15:19, , 49F
02/01 15:19, 49F
推
02/03 03:02, , 50F
02/03 03:02, 50F
推
02/12 23:33, , 51F
02/12 23:33, 51F