我想使用A *搜索来解决sudoku难题。 如何定义g(n)和h(n)?? h和g应该是什么?
我想在python中编码,但任何伪代码都会受到赞赏
答案 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 }
现在,您需要找到从起始状态(您的指定电路板)到目标状态(完整有效电路板)的最短路径。