Python中如何实现曼哈顿距离查找算法

2023-04-16 00:00:00 算法 如何实现 曼哈顿

曼哈顿距离,也称为城市街区距离或L1距离,是计算两个点之间的距离的一种方法。在二维平面上,曼哈顿距离是两个点在x轴和y轴上的差的绝对值之和。

例如,如果我们有两个点A(1, 3)和B(4, 2),它们之间的曼哈顿距离是|1-4|+|3-2|=3+1=4。

在Python中,我们可以通过计算两个点的坐标之差的绝对值之和来计算曼哈顿距离。下面是一个计算曼哈顿距离的Python函数:

def manhattan_distance(point1, point2):
    """Calculate the Manhattan distance between two points."""
    x1, y1 = point1
    x2, y2 = point2
    return abs(x1 - x2) + abs(y1 - y2)

我们可以传递两个点的坐标元组给这个函数,它会返回这两个点之间的曼哈顿距离。

下面是一个使用该函数的例子:

point1 = (1, 3)
point2 = (4, 2)
distance = manhattan_distance(point1, point2)
print(distance)  # Output: 4

如果我们要查找距离给定点最近的点,我们可以将所有其他点的曼哈顿距离计算出来,然后选择距离最小的点。下面是一个使用该方法进行查找的Python函数:

def find_closest_point(points, target_point):
    """Find the point closest to the target point using Manhattan distance."""
    closest_point = None
    closest_distance = float('inf')
    for point in points:
        distance = manhattan_distance(point, target_point)
        if distance < closest_distance:
            closest_distance = distance
            closest_point = point
    return closest_point

这个函数接受一个点列表和一个目标点,然后使用曼哈顿距离找到距离目标点最近的点。它返回距离目标点最近的点。

下面是一个使用该函数的例子:

points = [(1, 3), (4, 2), (5, 6), (2, 1), (7, 5)]
target_point = (3, 4)
closest_point = find_closest_point(points, target_point)
print(closest_point)  # Output: (4, 2)

在这个例子中,我们有一些点,我们想找到距离目标点(3, 4)最近的点。该函数计算每个点与目标点之间的曼哈顿距离,然后返回距离最近的点(4, 2)。

相关文章