优化线段上的2参数距离函数(ACM ICPC Regionals Elim。)

时间:2010-10-30 19:44:28

标签: algorithm minimization

此问题是ACM ICPC坎普尔地区消除回合中提出的问题的子问题:

鉴于分别由2D点(Pa, Pb)(Pc, Pd)限定的2个线段,找到最小化的pq(在[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的成本)

关于这个功能的一些观察:

  1. 平行线段始终会导致pq中的至少一个为0或1
  2. 相交的线段总是会导致pq找到线段的交点(可以应用三角形不等式来证明这一点)
  3. 问题: 在线条倾斜且可能分离的一般情况下,我们如何最小化此功能?

1 个答案:

答案 0 :(得分:1)

我认为您应该能够对fp采用q的偏导数,将它们设置为0,并求解p和{ {1}}。这将给你一个(本地)最低限度。如果最小值为q0 <= p <= 1,则表示已完成,否则请检查四个端点(0 <= q <= 1,依此类推)。

我不肯定这会处理所有退化的情况,但它应该是一个良好的开端。