此问题是ACM ICPC坎普尔地区消除回合中提出的问题的子问题:
鉴于分别由2D点(Pa, Pb)
和(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的成本)
关于这个功能的一些观察:
p
和q
中的至少一个为0或1 p
和q
找到线段的交点(可以应用三角形不等式来证明这一点)问题: 在线条倾斜且可能分离的一般情况下,我们如何最小化此功能?
答案 0 :(得分:1)
我认为您应该能够对f
和p
采用q
的偏导数,将它们设置为0,并求解p
和{ {1}}。这将给你一个(本地)最低限度。如果最小值为q
和0 <= p <= 1
,则表示已完成,否则请检查四个端点(0 <= q <= 1
,依此类推)。
我不肯定这会处理所有退化的情况,但它应该是一个良好的开端。