【发布时间】:2014-11-16 22:06:36
【问题描述】:
我有一个列表列表,每个列表都包含多边形的边长。例如:
[[0, 1, 2],
[0, 1.1, 2],
[0, 1.2, 2],
[0, 1.3, 2],
[4.5, 1.1],
[4.4, 1.1],
[5, 1, 2],
[5, 1.1, 2],
[5, 1.2, 2]
[6, 1, 7, 4],
[6, 1.1, 7, 4.1]]
我希望能够找到一个近似最小的“覆盖”,因为对于“覆盖”的每个元素,它的所有值都在它所覆盖的元素的指定容差范围内。例如,如果给定上面的列表,我想得到的公差是 0.1:
[[0, 1, 2],
[0, 1.2, 2],
[4, 1],
[4.5, 1.1],
[5, 1.1, 2],
[6, 1, 7, 4],]
我对 python 有点陌生,所以希望我对术语的使用不会太远。也许解释我的动机会有所帮助。我是一名试图优化给定表面面板的建筑师。由于制造公差,边缘长度相差某个固定值的面板可以被认为是相同的(在上面的示例中,所有边缘可以相差 0.1 并且仍然被认为是相同的)。我正在尝试找到可以生产的最少面板集,并且仍然可以对表面进行面板化。
【问题讨论】:
-
您有没有尝试解决这个问题?请记住,这不是代码编写服务。
-
您有一个子列表
[4,1]。这意味着一个双边多边形。现在我很困惑 -
您的所有最终值是否都是您的容差值的倍数(或者您愿意将它们转换成这样)?如果是这样,您可以简单地对值进行四舍五入,然后创建
set以消除重复项。 -
inpectorG4dget - 我删除了你提到的那个子列表。我制作的列表仅显示输入和输出的示例,并非来自我的数据集。 [4,1] 子列表的主要原因是表明输入值在维度上有所不同。很抱歉造成混乱。
-
罗杰,是的。我有一个解决方案,但它不是一个最小的列表。我的解决方案会给我 [5,1,2] 和 [5,1.2] 而不是 [5,1.1,2]。我环顾四周,这个问题似乎类似于几何圆盘覆盖问题(除了我的圆盘必须是最暗的球),不管我不明白我找到的关于这个问题的文件