Метрики
Метрика определяет расстояние между двумя точками. Обычное евклидово расстояние между точками
Манхэттенское расстояние между точками
На рисунке ниже евклидово расстояние между точками равно
а манхэттенское расстояние между ними же равно
На рисунке ниже показано, как выглядят единичные круги – множества точек, удаленных от центра на расстояние, не большее
Некоторые задачи проще решить, если использовать манхэттенское, а не евклидово расстояние. Например, пусть дано множество точек на плоскости и требуется найти пару точек, для которых манхэттенское расстояние максимально. Так, на рисунке ниже манхэттенское расстояние между точками
При работе с манхэттенским расстоянием бывает полезно применить преобразование координат
Рассмотрим теперь две точки
Например, если
Преобразование координат дает простой способ работать с манхэттенскими расстояниями, потому что координаты x
и y
можно рассматривать порознь. В частности, чтобы максимизировать манхэттенское расстояние, необходимо найти такие две точки, что их преобразованные координаты доставляют максимум величине
Это легко, потому что должна быть максимальна разность горизонтальных или вертикальных координат после преобразования.
Пример 1
Найдите евклидово расстояние между точками
from math import dist
p1 = list(map(int, input().split()))
p2 = list(map(int, input().split()))
d1 = dist(p1, p2) # с использованием функции dist
d2 = ((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) ** 0.5 # по формуле
print(f"{d1:.2f}\n{d2:.2f}")
2 1
5 2
3.16
3.16
Пример 2
Найдите манхэттенское расстояние между точками
p1 = list(map(int, input().split()))
p2 = list(map(int, input().split()))
d = abs(p1[0] - p2[0]) + abs(p1[1] - p2[1])
print(f"{d}")
2 1
5 2
4