我有一個具有非常特定算法需求的程序。我需要搜索一個數字列表來查找列表中與一對搜索數字最匹配的位置。我將「最佳排列」定義爲該排列的差異總和。在數字列表中查找數字對最接近匹配的算法
舉例來說,如果我有一個數字的下面的列表:
12 18 -20 45 11 34 6 -8
...和我在尋找一對,則算法應該返回3,因爲這是對齊最好的(僅具有5的總差值),和3是其中所述對準我目前使用一個明顯的蠻力方法始於
index: 0 1 2 3 4 5 6 7
list: 12 18 -20 45 11 34 6 -8
search alignment: -- -- -- 43 14 -- -- --
difference: -- -- -- 2 3 -- -- --
索引 - 簡單地找到用於每個對準的差和記住最好。但是,這對我的程序來說是一個瓶頸,所以任何改進都會有所幫助。
我提出的唯一優化有點微不足道:如果對於對中的第一個數字的差異超過當前最佳總差異,則跳到下一個對齊而不打擾檢查第二個數字對。它有幫助,但不是很多。
如果相關,列表會被多次搜索,所以如果有某種初始排序會加速未來的搜索,我會很感興趣。
我很感激任何人的想法,即使它只是一個鏈接到維基百科頁面的相關算法。謝謝!
同心圓圈是危險的。點(6,6)比點(10,1)更接近(0,0)。但就我們的任務而言,後者比前者好。 –
對於1-範數距離,圓是菱形。 –