Re: [問題] 主席樹?

看板Prob_Solve (計算數學 Problem Solving)作者 (...)時間9年前 (2015/02/05 13:46), 9年前編輯推噓7(709)
留言16則, 3人參與, 最新討論串2/4 (看更多)

02/05 01:26,
可不可以簡單介紹一下莫隊算法的功用啊?
02/05 01:26
現在有許多個區間查詢 Q = { [a1,b1] , [a2,b2] , ... , [ak,bk] } 預計其查詢結果是 r[a1,b1] ... r[ak,bk] 假設問題具備此性質: 已知 r[a,b] ,可以快速求得邊界差一的結果如 r[a-1,b] r[a+1,b] r[a,b-1] r[a,b+1] 令計算時間為 O(f(n)) 那麼,已知 r[ai,bi] 推得 r[aj,bj] 的時間就是 O((|ai-aj| + |bi-bj|) * f(n)) 即 rectangular distance (L1) 我們現在替 Q 中所有查詢,安排適當計算順序,讓總時間最少。 查詢視為座標,即 minimum spanning tree with rectangular distance O(k log k) 找到樹之後,跑個DFS或BFS,就得到最佳的計算順序。 (理論上 steiner tree 效果更好,不過它是 NP-hard ...) 我理解的莫隊算法是這樣。 至於為什麼莫隊算法宣稱 O(n^1.5) ,我還沒搞清楚... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.78.113 ※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1423115208.A.6A7.html ※ 編輯: DJWS (111.250.78.113), 02/05/2015 13:56:52 ※ 編輯: DJWS (111.250.78.113), 02/05/2015 13:57:31

02/05 16:13, , 1F
總覺得這種食後要貼出那個Let me google that for you..
02/05 16:13, 1F

02/05 23:17, , 2F
挺有趣的技巧 我研究看看
02/05 23:17, 2F

02/05 23:20, , 3F
我有點搞不懂 那是不是把所有ai, bi 排序 一個一個作就好?
02/05 23:20, 3F

02/06 19:32, , 4F

02/06 19:32, , 5F
按照XY座標排序之後順序 總距離通常較長
02/06 19:32, 5F

02/06 19:33, , 6F
然後圖中的直線改成階梯狀就是 rectangular distance
02/06 19:33, 6F

02/06 22:17, , 7F
了解了 感謝
02/06 22:17, 7F

02/06 22:38, , 8F
但是不能把整個空間分塊嗎? 然後每一區塊選一個中心
02/06 22:38, 8F

02/06 22:38, , 9F
這樣就可以先preprocess 來 speed-up查詢
02/06 22:38, 9F

02/07 04:20, , 10F
我上網看了一下 大概了解是在幹嘛了..
02/07 04:20, 10F

02/07 04:20, , 11F
http://ppt.cc/vPsR 似乎是個複雜度的證明..
02/07 04:20, 11F

02/07 12:16, , 12F
這個算法跟區間查詢其實沒有直接關係
02/07 12:16, 12F

02/07 12:17, , 13F
這個技巧其實還可以套用到 dynamic programming 狀態轉移
02/07 12:17, 13F

02/07 12:20, , 14F
然後你講的也是一個好方法 應該就是ALT Algorithm
02/07 12:20, 14F

02/07 23:11, , 15F
http://ppt.cc/9~oW 我的看法比較類似這個
02/07 23:11, 15F

02/07 23:11, , 16F
這技巧應該是因為實作比較容易
02/07 23:11, 16F
文章代碼(AID): #1KqmF8Qd (Prob_Solve)
討論串 (同標題文章)
本文引述了以下文章的的內容:
9
36
完整討論串 (本文為第 2 之 4 篇):
9
36
7
16
文章代碼(AID): #1KqmF8Qd (Prob_Solve)