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

标签 algorithm search artificial-intelligence a-star sudoku

<分区>

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

我想用 python 编写代码,但任何伪代码都将不胜感激

最佳答案

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 }

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

关于algorithm - 使用 A*(A-Star) 搜索解决数独难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051272/

相关文章:

jquery - Android 浏览器因 Google Site Search 而崩溃

python - 如何标准化 scikit learn 中的排名数据?

java - 矩形到N个矩形碰撞检测的逻辑流程

java - 将 for 循环转换为 while 循环 (java)

regex - 如何删除一行中匹配项之间的所有文本?

compiler-construction - 如果我想从事人工智能和机器学习工作,我必须了解编译器理论吗

c# - 动态切换 Microsoft.Speech 配置文件

javascript - 如何在 JavaScript 中获取字符串与给定替换的所有组合?

algorithm - 使用 O(k) 内存的 O(N) 运行时间哈希

ios - 如何在 UISearchController 中使用自定义 View Controller 获取结果?