Эта проблема является подзадачей задачи, поставленной в ACM ICPC Kanpur Regionals Раунда. Раунд:
Для двух отрезков, ограниченных 2D точками (Pa, Pb)
и (Pc, Pd)
соответственно, найдите p
q
(в диапазоне [0,1]
), который минимизирует функцию
f(p, q) = D(Px, Pa) + D(Py, Pd) + k D(Px, Py) where
2 <= k <= 5,
Px = p Pa + (1-p) Pb,
Py = q Pc + (1-q) Pd and
D(x, y) is the euclidean distance between points x and y
(фактически Px и Py - это точки на отрезках, а функция кодирует стоимость перехода от Pa к Pd черезсвязующее звено, стоимость которого в k раз превышает евклидово расстояние)
Некоторые замечания относительно этой функции:
- Параллельные отрезки всегда будут вызывать хотя бы один из
p
и q
быть либо 0, либо 1 - Пересекающиеся отрезки всегда будут вызывать
p
и q
для определения точки пересечения отрезков (для подтверждения этого можно применить неравенство треугольника)
Вопрос: в общем случае, когда линии наклонены и потенциально разделены, как мы минимизируем эту функцию?