曼哈頓距離與切比雪夫距離
阿新 • • 發佈:2019-01-22
曼哈頓距離
定義
設平面空間記憶體在兩點,它們的座標為(x1,y1),(x2,y2)
則dis=|x1−x2|+|y1−y2|
即兩點橫縱座標差之和
切比雪夫距離
定義
設平面空間記憶體在兩點,它們的座標為(x1,y1),(x2,y2)
則dis=max(|x1−x2|,|y1−y2|)
即兩點橫縱座標差的最大值
兩者之間的關係
兩者的定義看上去好像毛線關係都沒有,但實際上,這兩種距離可以相互轉化!
我們考慮最簡單的情況,在一個二維座標系中,設原點為(0,0)
如果用曼哈頓距離表示,則與原點距離為1的點會構成一個邊長為21/2的正方形
如果用切比雪夫距離表示,則與原點距離為1的點會構成一個邊長為2的正方形
仔細對比這兩個圖形,我們會發現這兩個圖形長得差不多,他們應該可以通過某種變換互相轉化。
事實上,
將一個點(x,y)的座標變為(x+y,x−y)後,原座標系中的曼哈頓距離 = 新座標系中的切比雪夫距離
將一個點(x,y)的座標變為((x+y)/2,(x−y)/2) 後,原座標系中的切比雪夫距離 = 新座標系中的曼哈頓距離
用處
切比雪夫距離在計算的時候需要取max,往往不是很好優化,對於一個點,計算其他點到該的距離的複雜度為O(n)
而曼哈頓距離只有求和以及取絕對值兩種運算,我們把座標排序後可以去掉絕對值的影響,進而用字首和優化,可以把複雜度降為O(1)