首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用A*算法求解8道难题

用A*算法求解8道难题
EN

Stack Overflow用户
提问于 2010-11-22 23:29:09
回答 3查看 18.2K关注 0票数 11

我想用Java中的A*算法来解决/实现8道难题。我问是否有人能帮助我,向我解释我必须遵循的步骤来解决这个问题。我在网上读过A*是如何工作的,但我不知道如何开始使用Java实现。

如果你们能帮助我,给我指导方针,让我自己用Java实现它,我将非常感激。我真的很想去理解它,所以我只是需要指南来开始。

我将使用优先级队列,并从文本文件中读取初始配置,例如:

代码语言:javascript
复制
4  3  6
1  2  5
7  8  

欢迎指向其他站点以获得更多解释/教程。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-22 23:36:52

我将从决定你想如何代表游戏的棋盘状态开始,然后实现运营商(例如。移动(空白)瓷砖向上,移动(空白)瓷砖向下,.)。通常,您将有一个数据结构来表示打开的列表(即。那些州发现了,但还没有被发现。与目标状态相比)和另一个用于封闭列表(即。这些州发现,探索,发现不是目标状态)。您用起始状态为打开的列表添加种子,并反复从打开的列表中获取要探索的"next“状态,将运算符应用到它以生成新的可能状态,等等。

许多年前,我在以下网站上编写了一篇教程:

http://www.cs.rmit.edu.au/AI-Search/

然而,它远不是关于状态空间搜索的决定性词汇,它只是一个全新概念的教育工具。

票数 7
EN

Stack Overflow用户

发布于 2010-11-23 08:05:38

查看2004/启发式.2004,它描述了解决这个问题的方法。

票数 3
EN

Stack Overflow用户

发布于 2010-11-23 01:32:22

A*很像Djikstra的算法,但它包含了一个启发式算法。您可能希望阅读该维基或阅读一般的单源最短路径算法。

很多基本的东西都很重要,但很明显。您将需要表示板并创建生成可能的下一个状态的方法。

任何位置的基本得分显然都是实际移动的最小数目。要使A*工作,您需要一个启发式,它可以帮助您选择可能的下一个状态的最佳选项。一种启发式方法可能是正确位置上的片段数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4251295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档