PacMan:主要使用哪些启发式方法?

2024-02-08

除了 A*、BFS、DFS 等之外,Pacman 中还广泛使用其他哪些好的寻路算法/启发式算法?如果吃豆人可以找到不止一种水果,我认为我提到的那些不会起作用。

我需要一些好的寻路算法,PacMan 可以使用它们以尽可能少的步数完成迷宫。我试图四处寻找指南,但到目前为止还没有运气。曼哈顿距离的 A* 随处可见,但它只适用于只有一个(或两个?或者可能最多几个?)水果的迷宫。

顺便说一句,为了简单起见,假设周围没有鬼魂。

原始 PacMan 问题的一些示例:First https://code.google.com/p/pacman-search/source/browse/trunk/+pacman-search+--username+hnly228078@gmail.com/src/layouts/bigSearch.lay?r=2, Second https://code.google.com/p/pacman-search/source/browse/trunk/+pacman-search+--username+hnly228078@gmail.com/src/layouts/trickySearch.lay?r=2 and Third https://code.google.com/p/pacman-search/source/browse/trunk/+pacman-search+--username+hnly228078@gmail.com/src/layouts/mediumCorners.lay?r=2


如果你知道迷宫的外观,启发式对我有用:

  1. 找到迷宫中当前最远的两个水果之间的真实距离 - 让我们称之为x.
  2. 找到从当前吃豆人位置到前两个水果中较近的一个的真实距离 - 让我们称之为y.

那么,答案就是:x + y.

请注意,实际距离不是曼哈顿距离,而是real迷宫中的距离 - 你可以计算它(如果你愿意的话甚至可以预先计算),因为你知道迷宫的外观(你知道所有的墙壁,......)。该信息(迷宫中某些两点之间的实际距离)是静态的,因为墙壁不会改变。

对此的解释x + y公式可能是这样的:

  • x- 无论哪种方式,你都必须走这段距离,至少在最后
  • y- 当您到达两个最远的水果中的一些时,最好收集靠近它的食物,这样您就不必返回

如果您正在解决这个问题作为伯克利人工智能类项目的一部分,为了计算两点之间的实际距离,您可以使用函数mazeDistance(pos1, pos2, gameState)它已经实现并且正在使用您的 bfs 实现。另外,这个启发式是可以接受的 and 持续的,至少对于他们的测试用例来说是这样。顺便说一句,通过这种启发,我成功地仅扩展了 376 个节点trickySearch maze.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PacMan:主要使用哪些启发式方法? 的相关文章

  • Google 文档如何处理编辑冲突?

    我一直在尝试编写自己的 Javascript 编辑器 其功能类似于 Google Docs 允许多人同时使用 我不明白一件事 假设用户 A 和用户 B 直接相互连接 网络延迟为 10 毫秒 我假设编辑器使用 diff 系统 据我了解 Doc
  • 从原点开始在离散 2D 网格上迭代向外螺旋的算法

    例如 这是预期螺旋的形状 以及迭代的每个步骤 y 16 15 14 13 12 17 4 3 2 11 18 5 0 1 10 x 19 6 7 8 9 20 21 22 23 24 其中线条是 x 轴和 y 轴 以下是算法每次迭代 返回
  • 定点数学比浮点运算快吗?

    多年前 即 20 世纪 90 年代初期 我构建了图形软件包 该软件包基于定点算术和预先计算的 cos sin 表格以及使用牛顿近似方法进行 sqrt 和对数近似的缩放方程来优化计算 这些先进技术似乎已经成为图形和内置数学处理器的一部分 大约
  • 数独算法,暴力破解[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 如果启用优化,JIT 是否会始终内联此方法?

    我并不期望得到明确的 是 或 否 您可能拥有的任何知识我都会考虑作为答案 private String CalculateCharge Nullable
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 颜色逻辑算法

    我们正在构建一个体育应用程序 并希望将团队颜色融入到应用程序的各个部分 现在 每个团队都可以使用几种不同的颜色来表示 我想做的是执行检查以验证两个团队颜色是否在彼此一定的范围内 这样我就不会显示两个相似的颜色 因此 如果团队 1 的主要团队
  • 当满足动态条件时退出递归函数

    使用来自的函数生成汉明距离 t 内的所有比特序列 https stackoverflow com questions 40813022 generate all sequences of bits within hamming distan
  • sigmoid 的导数

    我正在使用反向传播技术创建一个神经网络进行学习 我知道我们需要找到所使用的激活函数的导数 我正在使用标准 sigmoid 函数 f x 1 1 e x 我已经看到它的导数是 dy dx f x f x 1 f x 这可能是一个愚蠢的问题 但
  • 我如何开始玩五子棋?

    我读到Gomoku http en wikipedia org wiki Gomoku它可以使用 Minimax 和 Alpha Beta 剪枝算法来实现 所以 我阅读了这些算法 现在了解了游戏将如何解决 但是当我坐下来编写代码时 我面临着
  • 大 ר 符号到底代表什么?

    我真的很困惑大 O 大 Omega 和大 Theta 表示法之间的区别 我知道大 O 是上限 大 Omega 是下限 但是大 theta 到底代表什么 我读过这意味着紧束缚 但是 这是什么意思 首先我们来了解一下什么是大O 大Theta和大
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 从二叉堆中查找第 k 个最小元素的 O(klogk) 时间算法

    我们有一个 n 节点二叉堆 其中包含n不同的项目 根部的最小项目 为一个k lt n 发现O klogk 时间算法选择kth堆中的最小元素 O klogn 很明显 但无法找出O klogk 一 也许我们可以使用第二个堆 但不确定 好吧 你的
  • 用于在链表中查找结点的生产代码

    我在一次采访中被问到这个问题 我被要求编写代码 用于在 O 1 空间和线性时间的生产环境中在链表 其形式为 Y 形式 双臂不一定相等 中查找结点 我想出了这个解决方案 我以前在某处见过 1 Measure lengths of both l
  • 高度并行化的Levenshtein距离算法

    实际上 我必须实现一个字符串比较 最后得到匹配百分比 不仅仅是布尔结果匹配 不匹配 为此 我找到了 Levenstein 距离算法 但现在的问题是性能 例如 我有 1k 个字符串需要相互比较 现在大约需要 10 分钟 对于每个算法 我已经并
  • 有向未加权图中的最长非循环路径

    什么算法可用于找到未加权有向无环图中的最长路径 动态规划 http en wikipedia org wiki Dynamic programming 它也被引用于最长路径问题 http en wikipedia org wiki Long
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该

随机推荐

  • 更改 R data.frame 的列名称的两种看似相同的方法 - 只有另一种有效

    我有一个数据框 我需要为一些变量名称添加后缀 就我而言 这是将变量扩展为宽格式后的所有数值变量 有人可以解释一下为什么第一个选项不起作用但第二个选项起作用 df lt data frame ID id var1 1 var2 2 var3
  • 使用 Swift 的 TTTAttributedLabel 中的可点击链接

    我想做一个UILabel一些带有可点击链接的文本 不是指向网页的链接 而是指向像我所做的那样的操作UIButton 所以我用了TTTAttributedLabel这是完美配合Objective C 现在我想做同样的事情Swift 所以我写了
  • 在 Android 中禁用/删除 EditText 中的文本选择句柄

    当用户单击 EditText 时 光标会出现文本选择句柄 文本选择手柄可以移动到字段中的不同位置 文本选择句柄是 有什么方法可以删除它 使其不显示吗 为了解决这个问题 我创建了一个空的形状图像
  • 使用 fullPage.js 中的“afterRender”回调通过 jQuery 事件运行代码

    我正在使用一个名为 fullPage js 的库来创建一个网站 在此我使用 setTimeout 函数来更改背景图像 setTimeout function bg opacity css opacity 1 background image
  • Codeigniter:如果下拉数据来自数据库,则使用 set_select()

    我有一个下拉 字段 它从数据库获取其值 我目前正在寻找一种使用方法set select 但没有成功 这是我现有的观点
  • Swift:沿路径部分移动 UIImage

    我正在使用此代码沿曲线移动 UIImage paint curve for sun let path UIBezierPath let imageSunName small sun png let imageSun UIImage name
  • 如何在 Quarkus 中以编程方式注册 bean?

    我正在尝试找到一种在 quarkus DI 中以编程方式创建 bean 的方法 但没有成功 在这个框架下可以吗 看起来BeanManager尚未实现所需的方法 首先我们要明确什么 以编程方式创建bean 确切的意思是 但首先我们应该定义什么
  • 从 NSDate 对象获取 UTC 时间和本地时间

    在 Objective C 中 以下代码使用以下命令生成 UTC 日期时间信息date API NSDate currentUTCDate NSDate date 然而在斯威夫特中 let date NSDate date 结果为本地日期和
  • 如何在 Golang 的单元测试中测试 net.Conn?

    我目前正在考虑为 Go 中的 net Conn 接口以及在该功能之上构建的其他函数创建一些单元测试 我想知道在 Google Go 中进行单元测试的最佳方法是什么 我的代码如下所示 conn net Dial tcp 127 0 0 1 8
  • 对 SQL Server 存储过程进行版本控制的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 设置 rhc(红帽客户端工具)时出错

    我已经按照 Openshift 网站上的说明安装了 rhc 当我跑步时一切看起来都很好gem install rhc and hgem update rhc但当我尝试打电话时rhc我在下面收到以下消息 我尝试重新安装 ruby 和 git
  • SSD 驱动器会让 Maven 构建更快吗?

    好帖子在这里 https stackoverflow com questions 4557934 would a ssd vs fast hdd drive make my eclipse run compile faster据说使用 SS
  • 如何使用公共函数从 Bytes 返回 KB、MB 和 GB

    我正在编写一个返回文件大小 以 B KB MB GB 为单位 的 函数 VB Net 代码总是首先获取以字节为单位的大小 因此当文件的大小 以字节为单位 小于 100 时 它返回 B 如果它 gt 1000 则将其除以 1000 然后返回
  • EJB 3.1 |通过 JNDI 调用远程会话 bean 时出错

    我试图从 Java SE 简单类 调用一个简单的无状态会话 bean 这是我的豆子 import javax ejb Stateless author MMRUser Stateless public class CapitalBean i
  • Android 11 5G 获取小区参数

    我正在新的 Android studio 预览版上尝试网络类型 5G 上的 Android 11 我的目标是获取单元信息详细信息 但是 方法 getAllCellInfo 在模拟器上返回空 空列表 Android 11 之前的所有模拟器都会
  • Android 在可扩展列表视图中禁用自动滚动

    我在可扩展列表视图中使用 当我打开列表视图中的某个项目时 我的滚动会自动聚焦在打开的项目上 我可以阻止列表聚焦在新项目上并停留在同一个地方吗 我尝试从打开的视图中删除可聚焦的内容 但它不起作用 您需要重写 OnGroupClickListe
  • 无法从 EC2 实例元数据服务检索凭证

    我正在尝试使用 SDK 通过 AWS SES API 发送电子邮件 我的代码基于此处的官方文档 https docs aws amazon com ses latest DeveloperGuide examples send using
  • 最少使用的 unicode 分隔符

    我正在尝试在特定位置使用分隔符标记我的文本 稍后将使用该分隔符进行解析 我想使用最不常用的分隔符 我当前正在查看 2 或 U 0002 字符 使用起来足够安全吗 还有哪些其他建议 文本为 unicode 同时包含英语和非英语字符 A想要使用
  • 字体真棒图标在 Chrome 中显示为正方形?

    我正在尝试在按钮中使用字体很棒的图标 该图标在 Firefox 中工作正常 但当我在 Chrome 中使用它时 它显示为正方形 我环顾四周 唯一发现的是字体的路径可能不正确 但我后来尝试了 cdn 版本here http www boots
  • PacMan:主要使用哪些启发式方法?

    除了 A BFS DFS 等之外 Pacman 中还广泛使用其他哪些好的寻路算法 启发式算法 如果吃豆人可以找到不止一种水果 我认为我提到的那些不会起作用 我需要一些好的寻路算法 PacMan 可以使用它们以尽可能少的步数完成迷宫 我试图四