Prob_Solve 板


LINE

變數假設 struct Point { float x , y ; } Point a[m]; Point b[n]; 最大點對 問題是在 a 裡面,找最近的兩點 , ( ↑雖然這我也不會有效的方法 ) 但我的問題是,把 a[i] 依序放入 b 中, 從 b 裡找出與 a[i] 最近的點, 暴力法用虛碼表示如下 for(i = 0 : m-1 ) { min_idx = 0 ; min_dist = distance( a[i], b[min_idx] ); for(j = 1 : n-1) { dist = distance( a[i] , b[j] ) ; if ( dist < min_dist) { min_dist = dist ; min_idx = j; } } // min_dist , min_idx 是要求的 , 到時候會全部存下來 } 想請教是否有什麼算法可較快完成上述需求? 或我該找什麼 keyword ? 先謝謝各位。 -- 「自從我學了 C# , 人都變聰明 , 考試都考一百分」 「自從我學了 VB , 皮膚都變好 , 人也變漂亮了 」 「自從我學了 Java , 明顯變壯 , 個子也變高了 」 「自從我學了 C++ , 內分泌失調 , 頭都禿了... 」 < Kuso 星爺語錄 > --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.74.8
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Prob_Solve/M.1414674032.A.1D6.html
1F:→ bibo9901: closest pair problem 10/30 21:02
這算法是找 b[n] 裡的最近兩點不是嗎? 但我想找的 "比較像 (但似乎不完全是)" 是, 給定一點 c , 求 c 與 b[n] 裡最近的一點, 還是這問題一樣可以從 最小點對 (closest pair) 問題轉過來? 謝謝您的回答。 ※ 編輯: EdisonX (180.177.74.8), 10/30/2014 21:09:39
2F:推 FRAXIS: nearest neighbor query 10/30 21:06
3F:→ EdisonX: 疑!想一下也像是 knn(k==1) , 實作上似乎麻煩多 Orz 10/30 21:28
4F:→ EdisonX: 謝謝 FRAXIS , 我再搜一下有什麼算法解這問題 , 感謝 10/30 21:29
5F:推 m80126colin: 有個東西叫做 Voronoi Diagram,不知道有沒有相關? 10/31 04:27
7F:→ scwg: 是你要的嗎? 還是你要 min_dist/idx forall a? 10/31 09:11
8F:→ scwg: kd-tree for b should help anyway 10/31 09:11
9F:→ EdisonX: @scwg , 嗯 , 我要的是 min_dist/idx forall a? , 謝謝 10/31 09:28
10F:→ EdisonX: 提供的 keyword , 感謝。 10/31 09:29
今天抽時間稍試了下,kd-tree, 在 asize = bsize = 40M , dim==2 的情況下, 雖然比暴力法很好多, 似乎還是要花費不少時間 , 我試著去優化 code , 節省還是有限 . 不知道有沒有人對這議題有所研究可再提供點方向? 謝謝各位。 ※ 編輯: EdisonX (180.177.74.8), 10/31/2014 21:28:35
11F:→ LPH66: kd-tree 主要是查詢省時間, 點集固定查詢點很多時很有用 11/01 00:28
12F:推 FRAXIS: 因為你的b是靜態的 先建Voronoi diagram 11/01 06:07
13F:→ FRAXIS: 然後建立point location的查詢 應該會比較快 11/01 06:08
14F:推 DJWS: scholar.google.com.tw/scholar?&q=nearest+neighbor+query 11/01 07:39
15F:→ DJWS: books.google.com.tw/books?&q=nearest+neighbor+query 11/01 07:41
16F:→ DJWS: 這個題目有成千上萬人做過 方向很多 11/01 07:42
17F:→ DJWS: 比較淺顯易懂的介紹 http://www.cs.uu.nl/geobook/ 11/01 07:51
18F:→ EdisonX: 明天我整理下目前所做的 code 放上來 , 先謝謝各位給的 11/01 22:31
19F:→ EdisonX: 資訊,真的非常感謝! 11/01 22:32
先說下吧,我用的是 http://rosettacode.org/wiki/K-d_tree 這網頁的 code 抓下來改, 整個順序如同 FRAXIS , LPH66 所言,一堆 b 事先做 make_tree 後, 再逐一將每個 a 點丟到 nearest 做查詢, 效能上是比暴力法提升了一百多倍,唯需求上盡可能還需再快, 想請教這效能是否已是上限? 若說明不夠,需再放我手上版本的 code , 我可再附上。 謝謝各位。 ※ 編輯: EdisonX (180.177.74.8), 11/03/2014 23:55:21
20F:推 FRAXIS: Kd-Tree是支援dynamic insert/delete的 11/04 03:25
21F:→ FRAXIS: 你的問題中b是靜態的 所以要找static data structure 11/04 03:25







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP