繁体   English   中英

给定 2D 平面中的 N 个点,确定是否有一条线将它们分成两组 N / 2 个点 + 更多规则

[英]Given N points in a 2D plane, determine if there is a line that divides them into two sets of N / 2 points each + some more rules

给定二维平面上的 N 个点,确定是否有一条线将它们分成两组,每组 N / 2 个点。

还有两个规则:

  • 每组点到这条线的距离之和应该是相同的。
  • 线不能通过任何点。

其他(不确定是否有帮助):我们可以假设N很大(~100k); -2000 <= x[i], y[i] <= 2000

大家对这个问题有什么见解吗? 我确实尝试了很多东西,但我相信我应该使用某种相等性,或者证明类似:sum(distancesSet1[i]) = sum(distancesSet2[i])。 如果你愿意,我也可以在这里发布我尝试过但失败的东西(或者我认为它失败了),但在我想看到你的建议之前。

太感谢了!

#Edit:对于这个问题,我需要知道的是准确地说给定N个点的集合是否可能。

更新:这是试图回答最初的、更普遍的问题,即是否可以划分分数。

由您的约束定义的问题在数学上是无法解决的。 您不能保证两组的距离总和相等。

作为证据,你只需要一个反例:

S = [[-1000,0], [0,0], [1,0], [2,0]]

只有一种可能的组合来分隔这些对:

S1 = [[-1000,0], [0,0]] 
S2 = [[1,0], [2,0]]

所有点都在线L1上。 鉴于您的子弹#2,我们可以得出结论,将这些点分开的任何线L2将形成角度t wrt L1 那么距离的总和是:

sum1 = a*sin(t)   ::   1000 < a < 1002  
sum2 = b*sin(t)   ::      1 < b < 3

   t != 0
sum1 > sum2

QED

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM