笛卡尔平面中任意两点之间的最小曼哈顿距离是各自 X 轴和 Y 轴的绝对差之和。就像,如果我们有两个点 (X,Y) 和 (U,V),那么距离将是:ABS(XU) + ABS(YV)。现在,我应该如何确定仅平行于坐标轴移动的几对点之间的最小距离,以便不需要在所选路径中访问某些给定点。我需要一个非常有效的算法,因为避免点的数量可以达到 10000,而查询数量的范围相同。点的坐标将小于 ABS(50000)。一开始我会得到一组要避免的点,所以我可能会使用一些离线算法和/或预计算。
例如,(0,0) 和 (1,1) 之间的曼哈顿距离是 2 从路径 (0,0)->(1,0)->(1,1) 或 (0,0)- >(0,1)->(1,1)。但是,如果我们的条件是 (1,0) 和 (0,1) 不能被访问,则最小距离增加到 6。这样的一条路径将是:(0,0)->(0,-1 )->(1,-1)->(2,-1)->(2,0)->(2,1)->(1,1)。