什么是用于表示解剖拼图碎片的智能数据结构?

时间:2015-01-13 20:15:24

标签: algorithm search data-structures puzzle

我应该保留一些解剖难题并搜索它以找到它的解决方案。 搜索和知情搜索。我应该找到一个很好的启发式。

用什么智能数据结构来表示这个解剖拼图的各个部分?我的解剖拼图就像这些图片:http://www.ics.uci.edu/~eppstein/junkyard/2-6-9-11.gif

1 个答案:

答案 0 :(得分:0)

在使用OpenGL时,由于图形的影响以及对象的表示方式,我会创建一组所有线段(边缘),每个线段都有一个名为(顶点)的(x,y)端点列表和一个唯一的指示符为了这个优势:

edge    followed by its (x,y)  vertices
____    ____________________________________
0       (2,3)  (3,7)  
1       (3,9)  (11,9)
2       (22,9)  (22,7)
...      ....

然后单独地,对于拼图的每个不规则形状,定义边界列表,其定义其边界

shape    list of edges which define its boundary
____     _________________________________________
0        3,  1,   5,  8
1        7,  2,  4,  10,  4,  20

因此在上面的示例中,形状编号0(拼图块)由四条边定义:3,1,5,8,因此将是一个四边形对象(每边都是边缘)

边缘1由其线段两端的(x,y)端点定义(所有边缘只有两个端点),例子中它们的x和y值为(2,3)和(3,7) )

为了保持我们的理智,拼图对象是通过沿逆时针方向绕着拼图块周边定义的边缘列表(或者只要你的一致就顺时针方向)。