给出一个图表,其中节点代表3x3x1房间,顶点表示需要亲近。如何将它们放置在3D空间中以优化整体贴近度?
示例(随机)数据结构:
{
room1: [room2, room3],
room2: [room1, room4],
room3: [room5],
room4: [room2, room5, room1],
room5: []
}
(我不确定我应该问这个问题,因为它与我在stackoverflow上看到的大多数不同。我对编程解决方案/启发式算法感兴趣。)
答案 0 :(得分:2)
我认为你想要邻接。
在backtracking search中,维护一个房间队列,按照图表中连接的其他房间数量排序(最受约束的变量启发式)。然后,对于队列中的每个房间:
答案 1 :(得分:2)
闻起来像是3D bin packing problem的表兄弟,这是NP完全的。尝试构造启发式(第一次拟合,最佳拟合递减,......),然后是元启发式(禁忌搜索,模拟退火,遗传算法......)。 那里有开源软件,例如Drools Planner,openTS,jgap,......