使用搜索算法解决难题

时间:2015-09-08 14:04:28

标签: algorithm search a-star

几天前我遇到了一个谜题。它可以轻松地手动解决。但我试图建立一个解决它的算法。但我不知道该怎么办。 picture 1

在这里你可以看到我必须连接所有的彩色圆点。例如,我需要将黄点连接到另一个黄点,绿色连接到其他绿色,蓝色连接到蓝色等等。

这是一个如何解决它的例子。如果描述不清楚。 enter image description here

所以你可以看到我将黄点与另一个黄点相连。蓝色与另一个蓝色。但这会导致问题。你可以看到我已经阻挡了浅绿色的路径。我希望你明白这一点。

所以我想解决它。蛮力方法可行,但需要很长时间,我对此不感兴趣。我尝试了实现广度优先搜索,深度优先搜索和Dijkstra算法。但我认为在这种情况下他们不会好。如果我错了,请纠正我。 A *搜索可能有效,但启发式是什么?

谁能给我一些关于如何解决问题的直觉?

1 个答案:

答案 0 :(得分:1)

我的遗传算法可能是获得解决方案的适当方法。 健身功能和交叉功能必须专门针对问题进行定制。

<强>染色体:

  • 9x9 2d整数阵列(基因)
  • 您的18个独特颜色的peices将静态设置为512 | 1,512 | 2,512 | 4,512 | 8,512 | 16,512 | 32,512 | 64,512 | 128,512 | 256表示9种独特的颜色; 512(2 ^ 9)将表示它们为静态/不可变基因。
  • 彩色连接方块将具有2 ^ 0-2 ^ 8个值,这些基因可以改变并组成,值3(011b)意味着2种颜色(1和2)共享相同的方块。

健身功能脱离我的头脑

  • 1种独特颜色的空间是+ 8,2种颜色+6,3种颜色+4,4种颜色+ 2,5种颜色+0,6种颜色-2,7种颜色-4,8种颜色-6,所有9种颜色-8
  • 连接(左,右,上,下)与匹配的彩色静态空间的空间为+9
  • 在1个方向+4个方向+3个方向+3个方向+3个方向连接匹配的彩色空间+1

<强>突变

  • 具有随机非静态基因的随机颜色位(1 <&lt; Floor(Random()* 9))的逻辑XOR

交叉/育种脱离我的头脑

  • 复制2个候选染色体
  • 清除包含5种或更多重叠颜色的副本中的基因
  • 逻辑或将两条染色体组合在一起以获得结果