Java 用A*算法解8字谜
我想用Java中的A*算法解决/实现8个难题。我在问是否有人能帮助我,向我解释解决这个问题必须遵循的步骤。我在网上读过A*是如何工作的,但我不知道如何开始用Java实现 如果你们能帮助我,给我一些指导方针,让我自己用Java实现它,我将非常感激。我真的很想这样做,以便能够理解它,所以我只需要开始的指导方针Java 用A*算法解8字谜,java,algorithm,Java,Algorithm,我想用Java中的A*算法解决/实现8个难题。我在问是否有人能帮助我,向我解释解决这个问题必须遵循的步骤。我在网上读过A*是如何工作的,但我不知道如何开始用Java实现 如果你们能帮助我,给我一些指导方针,让我自己用Java实现它,我将非常感激。我真的很想这样做,以便能够理解它,所以我只需要开始的指导方针 我将使用优先级队列,并从文本文件中读取初始配置,例如: 4 3 6 1 2 5 7 8 欢迎指向其他站点以获取更多解释/教程。我首先决定如何表示游戏板状态, 然后执行操作(例
我将使用优先级队列,并从文本文件中读取初始配置,例如:
4 3 6
1 2 5
7 8
欢迎指向其他站点以获取更多解释/教程。我首先决定如何表示游戏板状态, 然后执行操作(例如,向上移动(空白)平铺,向下移动(空白)平铺,…)。 通常,您将有一个数据结构来表示开放列表(即这些状态 已发现但尚未探索(即与目标状态相比)和另一个 封闭列表(即发现和探索的那些状态,发现它们不是目标状态)。 您使用起始状态为打开列表种子,并重复使用“下一个”状态 从开放列表中进行探索,对其应用运算符以生成新的可能状态 等等 我多年前在以下网站准备了一个教程:
不过,它远不是状态空间搜索的权威词汇,它只是对那些全新概念的人的一种教育工具。A*与Djikstra的算法非常相似,只是它包含了一个启发式算法。你可能想读一读,或者读一读关于单源最短路径算法的一般知识 很多基本的东西都很重要,但很明显。你需要代表电路板并创建一个方法来生成可能的下一个状态
任何位置的基本分数显然都是达到该位置的实际移动的最小数量。要使A*起作用,您需要一个启发式,可以帮助您选择可能的下一个状态的最佳选项。一个启发式可能是正确位置的碎片数。检查它描述了解决这个问题的方法。您需要登录链接。