🌓

曼哈顿距离 动态学习

欢迎来到曼哈顿距离的互动学习页面!曼哈顿距离(Manhattan Distance),也称为 L1 距离或城市街区距离,是计算两点在标准坐标系上绝对轴距总和的度量方式。

d((x₁,y₁),(x₂,y₂)) = |x₁−x₂| + |y₁−y₂|

想象一下在像曼哈顿那样的网格状城市街道上行走,你只能沿着街道(水平或垂直)移动,不能斜穿街区。两点之间的最短行程就是曼哈顿距离。它在路径规划、图像处理、机器学习等领域有广泛应用。

概念动态演示

坐标输入 (0-9)

提示:你也可以在下面的网格上直接拖动点A和点B。

曼哈顿距离计算

d(A, B) = |1 − 8| + |2 − 7|

         = |-7| + |-5|

         = 7 + 5

= 12

当前步数: 0 / 12

典型案例分析

案例一:计算两点间的曼哈顿距离

问题: 计算点 P1(2, 3) 到点 P2(7, 8) 的曼哈顿距离。

分析: 我们需要计算 x 坐标差的绝对值和 y 坐标差的绝对值,然后将它们相加。

d(P1, P2) = |x₁ - x₂| + |y₁ - y₂|

             = |2 - 7| + |3 - 8|

             = |-5| + |-5|

             = 5 + 5

             = 10

结论: 点 P1(2, 3) 到点 P2(7, 8) 的曼哈顿距离为 10 个单位长度。上图演示了其中一条可能的路径(先水平移动 5 格,再垂直移动 5 格)。

案例二:城市网格中的最短路径

问题: 在一个城市网格中,从 A 区 (1, 1) 到 B 区 (4, 6) 需要走多少个街区(曼哈顿距离)?有多少条不同的最短路径?

分析: 首先计算曼哈顿距离确定最短路径长度。然后,考虑总步数中水平和垂直步数的组合来计算路径数量。

距离计算:

d(A, B) = |x₁ - x₂| + |y₁ - y₂|

           = |1 - 4| + |1 - 6|

           = |-3| + |-5|

           = 3 + 5 = 8

路径数量计算:

总步数 = 8

水平步数 (Δx) = 3

垂直步数 (Δy) = 5

路径数 = 总步数中选择水平步数的位置 = C(总步数, 水平步数) = C(8, 3)

           = 8! / (3! * (8-3)!) = 8! / (3! * 5!) = (8 × 7 × 6) / (3 × 2 × 1) = 56

结论: 从 A 区到 B 区的最短路径长度(曼哈顿距离)是 8 个街区。总共有 56 条不同的最短路径可以走。上图随机展示了其中几条路径。

巩固练习

选择题

1. 在坐标平面上,点 P(3, 5) 与点 Q(7, 2) 的曼哈顿距离是多少?
正确答案:B. 7
解析:
曼哈顿距离 d = |x₁ - x₂| + |y₁ - y₂|
d = |3 - 7| + |5 - 2|
d = |-4| + |3|
d = 4 + 3 = 7
2. 在一个城市街区(网格状)中,从十字路口 (0, 0) 到十字路口 (3, 4) 至少需要走多少个街区?
正确答案:B. 7
解析:
这个问题等同于计算 (0, 0) 和 (3, 4) 的曼哈顿距离。
d = |0 - 3| + |0 - 4|
d = |-3| + |-4|
d = 3 + 4 = 7
因此,至少需要走 7 个街区。
3. 在一个标准的 8×8 国际象棋棋盘上(格子编号从 0 到 7),一个棋子从左下角格子 (0, 0) 移动到右上角格子 (7, 7),如果每次只能水平或垂直移动一格,最短需要移动多少步?
正确答案:B. 14
解析:
这同样是计算曼哈顿距离的问题。
起点 (x₁, y₁) = (0, 0)
终点 (x₂, y₂) = (7, 7)
d = |0 - 7| + |0 - 7|
d = |-7| + |-7|
d = 7 + 7 = 14
最短需要移动 14 步。
4. 以下哪对点到原点 (0, 0) 的曼哈顿距离是相等的?
正确答案:D. (1, 5) 和 (3, 3)
解析:
计算每个点到原点(0, 0)的曼哈顿距离:
A: d(3,2) = |3-0|+|2-0|=5; d(2,4) = |2-0|+|4-0|=6. 不相等。
B: d(4,1) = |4-0|+|1-0|=5; d(3,3) = |3-0|+|3-0|=6. 不相等。
C: d(5,0) = |5-0|+|0-0|=5; d(4,2) = |4-0|+|2-0|=6. 不相等。
D: d(1,5) = |1-0|+|5-0|=6; d(3,3) = |3-0|+|3-0|=6. 相等。
因此,选项 D 中的两个点到原点的曼哈顿距离都是 6。
5. 从点 (1, 1) 到点 (4, 5),使用曼哈顿距离测量的最短路径,有多少条不同的走法?
正确答案:C. 35
解析:
首先计算需要移动的总步数(即曼哈顿距离):
d = |1 - 4| + |1 - 5| = |-3| + |-4| = 3 + 4 = 7 步。
其中,需要向右移动 3 步(Δx = 3),向上移动 4 步(Δy = 4)。
总共有 7 步,其中需要选择 3 步向右(或者选择 4 步向上)。这是一个组合问题。
不同路径的数量 = C(总步数, 水平步数) = C(7, 3)
C(7, 3) = 7! / (3! * (7-3)!) = 7! / (3! * 4!) = (7 × 6 × 5) / (3 × 2 × 1) = 35
或者 C(7, 4) = 7! / (4! * 3!) = 35。
因此,共有 35 条不同的最短路径。

填空题

6. 点 A(-2, 4) 与点 B(5, 1) 之间的曼哈顿距离是
正确答案:9
解析:
d = |x₁ - x₂| + |y₁ - y₂|
d = |-2 - 5| + |4 - 1|
d = |-7| + |3|
d = 7 + 3 = 9
7. 如果一个点 P(x, y) 到原点 (0, 0) 的曼哈顿距离为 6,且该点在第一象限 (x > 0, y > 0),请写出一个可能的点 P 的坐标(格式:x,y)。例如:。 (答案不唯一,符合条件即可)
可能答案:1,5 或 2,4 或 3,3 或 4,2 或 5,1 (填入其中任意一个格式正确的即可算对)
解析:
曼哈顿距离 d = |x - 0| + |y - 0| = |x| + |y|。
因为点在第一象限,x > 0 且 y > 0,所以 |x| = x, |y| = y。
因此,我们需要找到 x + y = 6 的正整数解 (x, y)。
可能的解有:(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)。
8. 在一个网格地图上,机器人从 (2, 8) 移动到 (6, 4)。它只能水平或垂直移动。它移动的最短距离是 个单位。
正确答案:8
解析:
计算两点的曼哈顿距离:
d = |2 - 6| + |8 - 4|
d = |-4| + |4|
d = 4 + 4 = 8
9. 已知点 M(x, 3) 到点 N(1, -2) 的曼哈顿距离为 8。如果 x > 1,那么 x 的值是
正确答案:4 (需要更新,下面解析是错的) 答案应该是 4
解析:
曼哈顿距离 d = |x - 1| + |3 - (-2)| = 8
d = |x - 1| + |3 + 2| = 8
d = |x - 1| + |5| = 8
d = |x - 1| + 5 = 8
|x - 1| = 8 - 5 = 3
因为 x > 1,所以 x - 1 > 0,因此 |x - 1| = x - 1。
x - 1 = 3
x = 3 + 1 = 4
所以 x 的值是 4。
10. 从点 (0, 0) 到点 (5, 5) 的所有曼哈顿最短路径中,必须经过点 (2, 3) 的路径有多少条? 提示:先计算从 (0,0)到(2,3)的路径数,再计算从(2,3)到(5,5)的路径数,然后相乘。答案是
正确答案:30 (需要更新,下面解析是错的) 答案是 30
解析:
问题分解为两部分: 1. 从 (0, 0) 到 (2, 3) 的最短路径数: 水平移动 Δx = 2-0 = 2 步,垂直移动 Δy = 3-0 = 3 步。总步数 = 2 + 3 = 5。 路径数 = C(5, 2) = 5! / (2! * 3!) = (5 × 4) / (2 × 1) = 10 条。 2. 从 (2, 3) 到 (5, 5) 的最短路径数: 水平移动 Δx = 5-2 = 3 步,垂直移动 Δy = 5-3 = 2 步。总步数 = 3 + 2 = 5。 路径数 = C(5, 3) = 5! / (3! * 2!) = (5 × 4) / (2 × 1) = 10 条。 根据乘法原理,总的必须经过点 (2, 3) 的最短路径数 = (从 (0,0)到(2,3)的路径数) × (从(2,3)到(5,5)的路径数) 总路径数 = 10 × 10 = 100 条。