使用A *(A-Star)搜索解决数独难题

时间:2015-03-14 16:24:17

标签: algorithm search artificial-intelligence a-star sudoku

我想使用A *搜索来解决sudoku难题。 如何定义g(n)和h(n)?? h和g应该是什么?

我想在python中编码,但任何伪代码都会受到赞赏

1 个答案:

答案 0 :(得分:2)

A *是一种图搜索算法,可以找到源到目的地(或一组目的地)之间的最短路径。

要在问题上使用A *,您需要将其缩小为shortest path problem

在您的情况下,可以通过定义状态图 - 图中的每个节点都是部分满的数独表,边表示您可以从一个状态移动到另一个状态。

形式上:

G = (V,E)
V = { s | for each valid state s of the sudoku board}
E = { (u,v) | can move from state u to state v by adding one number }

现在,您需要找到从起始状态(您的指定电路板)到目标状态(完整有效电路板)的最短路径。