Prob_Solve 板


LINE

各位版友好 今天我有n個點,求每一個點到直線L的距離,最終找出其中一點 且此點到直線L的距離最長 直觀的來講我只需要做n次並用max函數即可 但我希望速度能夠更快 所以想請教各位是否有演算法可以加速計算此部分 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.61.182.113
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Prob_Solve/M.1431787607.A.711.html
1F:→ yr: 那就邊做算把 max 存著,這樣快了一些 :p 05/17 00:16
2F:→ firingmoon: 這部分我有做了 05/17 00:19
3F:推 RealJack: 我認為距離公式有乘除又有根號,計算量很大 05/17 00:25
4F:→ RealJack: 如果先做convex hull再對外圍頂點做距離公式,取其最大值 05/17 00:26
5F:→ RealJack: 這樣應該會比較快,但或許有更好的方式啦 05/17 00:27
6F:→ EdisonX: 分母部份應該可以省掉,只要算分子。 05/17 00:27
7F:推 Leeng: 是不是只要求哪個點就好,距離的值不care?其他的點也不care 05/17 00:35
對 值不care 所以我沒有計算分母 let ax+b-y = 0 for (i=1,i<10000,i++) { dis = abs(a*xpoint[i]+b-ypoint[i]) if (dis>dismax) { dismax = dis point = i <-------這是我的目的 想要找哪一個點 } } 這是我的程式碼 不知道是否有任何地方可以讓他計算速度變更快
8F:→ Leeng: 那就每次只要算|ax+by+c|;比前一個小就discard 05/17 00:36
9F:→ Leeng: 後面根號那一坨根本就不用算,或最後取完點後,算一次就好 05/17 00:37
※ 編輯: firingmoon (113.61.182.113), 05/17/2015 01:07:32
10F:推 Leeng: 不能先排序吧 一排序就是NlogN 除非你在輸入資料的時候 05/17 01:09
11F:→ firingmoon: 抱歉 剛剛才想到排序這樣做不行Orz 05/17 01:09
12F:推 Leeng: 就先建好,不過那也是要N量級 05/17 01:11
13F:→ Leeng: 想到一個啦 假如取index[i]會耗時的話 就用指標++ .... 05/17 01:12
14F:→ Leeng: 不過你的data可能是文件讀進來的吧 那可能連陣列都不用存 05/17 01:14
15F:→ firingmoon: 不好意思 這部分我不太懂你的意思是指? 05/17 01:14
16F:→ Leeng: 邊讀就能邊算、邊discard 05/17 01:14
17F:→ Leeng: 是寫C/C++ ? 05/17 01:14
18F:→ firingmoon: 對 data是從文件讀進來,再丟去陣列 但這部分比較 05/17 01:14
19F:→ firingmoon: 不care 05/17 01:14
20F:→ firingmoon: 我是用C# 05/17 01:15
21F:→ azureblaze: 指標++和index[i]最佳化開下去是一樣的東西 05/17 01:15
22F:→ azureblaze: 我不認為有O(N)以下的方法 05/17 01:16
23F:→ azureblaze: 平行處理吧 分k組個別求最大,在比較各組冠軍 05/17 01:17
24F:→ azureblaze: 再來就你真的嫌太慢還是只是想做? 05/17 01:18
25F:→ azureblaze: 這種狀況讀檔可能比計算慢 05/17 01:19
26F:→ firingmoon: 讀檔的部分在時間上我可以不在意,我只在意計算距離 05/17 01:19
27F:→ firingmoon: 找點的部分 05/17 01:20
28F:→ firingmoon: 我只是想試著看看沒有更快的方式 05/17 01:20
29F:推 Leeng: 如果還有其他幾何可能的話,只能有請高斯了 05/17 01:20
30F:推 RealJack: 只求一次的話就直接算吧,也會對其他線求最大值那做個 05/17 01:25
31F:→ RealJack: convex hull,第二次會快很多 05/17 01:26
32F:→ azureblaze: 你的n個點有任何特殊性質嗎?像照著某種順序給? 05/17 01:31
33F:推 RealJack: 還有你的檔案是文字格式還是可直接序列化的二進制格式 05/17 01:31
34F:→ RealJack: 這兩者速度會差上數百倍 05/17 01:32
35F:→ firingmoon: 我的n個點是時間序列,沒有甚麼特別性質 05/17 01:49
36F:→ firingmoon: RealJack抱歉 不太懂你的意思 05/17 01:51
37F:→ EdisonX: (1) 對 10K 個點找最近,是只會做一次還是會重覆做 ? 05/17 01:54
38F:→ EdisonX: (2) 你的來源資料是你可以讀得懂的文字檔嗎 ? 05/17 01:54
39F:→ EdisonX: (3) n個點是時間序列沒錯,已知是2維,還有沒有特殊性質 ? 05/17 01:55
40F:→ EdisonX: 結果上述的問題。然後平行化+1. 05/17 01:55
41F:→ EdisonX: 抱歉修正一下, 是對 10K 個點找最遠 @@ 05/17 01:56
(1)只做一次 (2)讀得懂 基本上這部分不用太在意 (3)沒有特殊,單純就a[1],a[2],a[3]......... ※ 編輯: firingmoon (113.61.182.113), 05/17/2015 02:01:33
42F:→ azureblaze: 改用C 平行處理 SIMD 能用的方法大概就這些 05/17 02:04
43F:推 LiloHuang: 這類問題很適合用 GLSL 或者 OpenCL 來做平行計算 05/17 15:10
44F:→ LiloHuang: 我找到一個 GLSL 版本供你參考 http://goo.gl/SokaVC 05/17 15:21
45F:推 FRAXIS: 依照我的經驗 dis 的計算和 if condition 會造成 delay 05/17 21:45
46F:→ FRAXIS: 你可以手動用類似 software pipeling 的方法加快一點 05/17 21:46
47F:→ FRAXIS: 你可以試著用 profiling tool 去觀察每個 instruction 05/17 21:47
48F:→ FRAXIS: 的時間 然後再思考怎麼改進 05/17 21:47
49F:→ FRAXIS: 你的問題 O(n) 的時間是不能避免的了 但是或許可以減少 05/17 21:48
50F:→ FRAXIS: outer loop 呼叫這 function 的次數.. 05/17 21:48
51F:→ firingmoon: 感謝各位版友的幫助 我會試著你們給的建議測試看看 05/18 10:39
52F:→ sulf: 矩陣旋轉,把直線當成新X軸,只要計算新的y座標比較 11/13 12:01







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燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP