我試圖解決距離轉換問題(使用曼哈頓的距離)。基本上,使以0和1點的矩陣,程序必須分配的每個位置的距離至最接近1.例如,對於這一個算法:距離變換 - 任何更快的算法?
0000
0100
0000
0000
距離變換矩陣是從我的頭
2123
1012
2123
3234
可能的解決方案是:
最慢的人(最慢的,因爲我已經嘗試實現他們 - 他們落後於非常大的矩陣):
蠻力 - 每1該程序讀取,從開始發生相應的變化,直到距離終點。
0的廣度優先搜索 - 每一個0,程序查找最近1裏面出來。
同2,但1的標記內每間隔開始。
快得多1的
1. Assign all values in the distance matrix to -1 or very big value. 2. While reading matrix, put all positions of 1's into queue. 3. While queue is not empty a. Dequeue position - let it be x b. For each position around x (that has distance 1 from it) if position is valid (does not exceed matrix dimensions) then if distance is not initialized or is greater than (distance of x) + 1 then I. distance = (distance of x) + 1 II. enqueue position into queue
我想問問,如果有更快的解決這一問題(從別人的代碼讀取)
廣度優先搜索。我試圖搜索距離變換的算法,但其中大部分都在處理歐幾里德距離。
在此先感謝。
4)是一個以'1's – CodesInChaos 2013-05-06 16:15:36
編輯開頭的廣度優先搜索,謝謝 – 2013-05-06 16:18:46