此问题是 ACM ICPC 坎普尔地区淘汰赛中提出的问题的子问题:
(Pa, Pb)
给定由 2D 点和(Pc, Pd)
分别界定的 2 条线段,找到最小化函数的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
定位线段的交点(可以应用三角不等式来证明这一点)
问题:在线条倾斜并可能分开的一般情况下,我们如何最小化此功能?