我最近为我的孩子买了一辆玩具火车。在组装时,我想知道我是否可以创建一个应用程序,你可以放入什么样的和平以及它们有多少,结果是轨道图,租用了一个闭路。所以,我的意见是每种类型的和平,这是类型:
输出将是这样的:
我可以使用什么算法来实现这一点,如果您有任何建议或指示,请告诉我。
答案 0 :(得分:1)
您可以使用蛮力方法,从第一部分开始,然后尝试第二部分的所有剩余部分,然后是第三部分的所有剩余部分,依此类推。您可以并行构建大量布局,例如
Piece1-Piece2-Piece3 -...
Piece1-Piece3-Piece4 -...
Piece1-Piece4-Piece5 -...
...
(其中 - 表示加入)。
如果您指出布局无效,您可以停止并将其从列表中删除。
这种方法的一个优点是,如果有的话,它会找到解决方案。缺点是可能需要很长时间。
如果您在单一布局之后,问题是如何确定哪个是“最佳”。一种方法可能是为不同的部分分配不同的权重,然后您可以使用这些分数评估您的布局。
你可以通过对你的作品进行分类来优化这一点,例如将它们分成直的和弯曲的,然后根据你拥有的部分进行一些扣除。例如,如果你有4个弯曲的部分和16个直的部分,你可以得出结论,你有4个角,其他的必须是边。因此,从这个起点开始,你会想出几个平行的布局,当你到达布局变得无效的点时,你可以停下来并将它从你的列表中删除。
另一个优化可能是创建一个样本布局列表并构建它们。例如,如果您有一个样本循环布局作为起点,您可以尝试用一组点替换一个直片,然后从那里构建。