artificial-intelligence相关内容

当网格图中有多个目标时,如何设计 A* 的启发式?

我面临一个问题,我必须使用 A* 来搜索地图,而这张地图中有多个目标要达到.我的目标是扩展地图中的最少节点,关于如何设计此 A* 算法的启发式方法有任何想法吗?谢谢 解决方案 假设“多个目标"是指您想要达到任何一个,只需采用所有启发式中的最小值.假设您的启发式是一致,这是仍然是一致的启发式. 如果您想覆盖所有人,这基本上是旅行商问题,NP-Complete. ..

有哪些常见的可接受的距离启发式方法?

在智能搜索问题中最常用的用于估计距离的启发式方法是什么?特别是,我对可以(通常)用作 A* 搜索的可接受启发式的指标感兴趣.我遇到了直线距离和曼哈顿距离,还有其他的吗? 解决方案 启发式方法往往针对给定的问题非常具体,因为它的想法是结合您可能拥有的关于该问题的其他知识.所以“一般启发式"不是一个非常有用的类别.也就是说,听起来您是在专门讨论距离度量,它是一个定义更明确的子集. 就距离 ..
发布时间:2021-11-30 13:09:21 AI人工智能

曼哈顿距离启发式的 A* 算法

我一直在用 C 语言开发一个 15 拼图解算器.我的代码使用了大量内存,但我遇到了一些问题. 我不会发布我的代码,因为它太长了......我已经实现了我正在使用的大部分库,它可能只会给你带来困惑.让我们从基础开始. 我现在使用的东西是:(所有这些都是用 C 实现的) - 斐波那契堆: /* 斐波那契堆的结构 */类型定义结构_fiboheap {整数大小;//堆中的节点数节点最 ..

有人可以在曼哈顿为我解释 java 中的 8 谜题吗?

我正在编写一个 A* 算法,它可以解决 Java 中的 8 拼图,到目前为止,我已经使用不合适的图块数量实现了 DFS、BFS、A*,我只需要使用启发式算法来实现它曼哈顿距离. 您可能知道曼哈顿距离是每个瓦片位移与其当前位置及其在目标状态下的索引的总和. 我在谷歌上搜索并找到了这些关于流主题的堆栈: 计算曼哈顿距离A* 中的曼哈顿距离 返回以下代码: int manha ..
发布时间:2021-11-30 13:07:54 Java开发

AI:查找路径是否存在的最快算法?

我正在寻找一种寻路算法,用于控制 2D 网格中实体的 AI 需要找到从 A 到 B 的路径.它不一定是最短路径,但需要非常快速地计算.网格是静态的(从不改变),一些网格单元被障碍物占据. 我目前正在使用 A*,但它对我来说太慢了,因为它总是试图计算最快的路径.当路径不存在时会出现主要的性能问题,在这种情况下,A* 将尝试探索过多的单元格. 如果路径不必是最短路径,我是否可以使用其他算法 ..

在有界子图之间寻找最小割集

如果一个游戏地图被划分为子图,如何最小化子图之间的边? 我遇到了一个问题,我试图通过像吃豆子或推箱子这样的基于网格的游戏进行 A* 搜索,但我需要找到“外壳".我说的外壳是什么意思?给定最大尺寸和最小数字尺寸的子图,尽可能少 切割边作为软约束的每个子图的顶点数. 或者你可以说我正在寻找子图之间的桥梁,但它通常是相同的问题. 示例 基于网格的游戏地图示例 http://dl.dr ..

您如何使用 A-Star 或 Dijkstra 算法解决 15 难题?

我在我的一本 AI 书籍中读到,在模拟或游戏中用于寻路的流行算法(A-Star、Dijkstra)也用于解决众所周知的“15 拼图". 谁能给我一些关于如何将 15 拼图简化为节点和边图以便我可以应用其中一种算法的指示? 如果我将图中的每个节点都视为一个游戏状态,那这棵树会不会变得很大?或者这只是这样做的方式? 解决方案 对于 A-Star 的 15 谜题来说,一个很好的启发式 ..

为什么 A* 在内存中的复杂度是指数级的?

维基百科对 A* 复杂性的说明如下(此处链接): 比那个时代更成问题复杂度是 A* 的内存使用量.在最坏的情况,它也必须记住指数数量的节点. 我看不出这是正确的,因为: 假设我们探索节点 A,有后继节点 B、C 和 D.然后我们将 B、C 和 D 添加到开放节点列表中,每个节点都伴随着对 A 的引用,然后我们从开放节点中移动 A到封闭节点. 如果在某个时候我们找到另一条通往 ..

带有传送器的网格上的 A* 可接受的启发式方法?

假设您有一个 2D 单元格网格,其中一些被墙填充.角色可以从一个方格走一步到与其水平或垂直一步的任何方格,但不能跨墙. 给定一个开始位置和一个结束位置,我们可以通过使用具有可接受启发式的 A* 算法找到从开始位置到结束位置的最短路径.在当前设置中,曼哈顿距离是可以接受的,因为它永远不会高估到目的地的距离. 现在假设除了墙壁之外,世界还有成对的传送器.踏上传送器会立即将角色传送到链接的传 ..

A* 算法的正确公式化

我在看 A* 寻路算法的定义,似乎在不同的地方定义有点不同. 区别在于在遍历节点的后继节点时执行的操作,并发现后继节点在关闭列表中. 一种方法(由维基百科和这篇文章) 说:如果继任者是在关闭的列表中,忽略它 另一种方法(建议此处 和 这里,例如)说:如果继任者在封闭名单上,检查它的成本.如果它高于当前计算的分数,请从关闭列表中删除该项目以备将来检查. 我很困惑 - 哪种方法是正 ..

A* 中的曼哈顿距离

我正在使用 A* 搜索算法并使用曼哈顿距离作为启发式实现 NxN 拼图求解器,但我遇到了一个奇怪的 bug (?). 考虑这些谜题(0 个元素是空格): (初始) 1 0 2 7 5 4 8 6 3 (目标) 1 2 3 4 5 6 7 8 0 从初始状态达到解的最小移动次数是 11.但是,我的求解器在 17 次移动中达到目标. 这就是问题所在——我的 ..

最佳优先搜索和 A* 搜索有什么区别?

在我的教科书中,我注意到这两种算法的工作原理几乎完全相同,我试图了解它们之间的主要区别. 教科书使用A*遍历这个例子,就像使用最佳优先搜索一样. 任何帮助将不胜感激. 解决方案 Best-first search 算法基于启发式函数访问下一个状态f(n) = h with最低启发式值(通常称为贪婪).它不考虑通往该特定状态的路径成本.它只关心当前状态的下一个状态具有最低的启发式 ..
发布时间:2021-11-30 13:03:12 AI人工智能

如何最佳地解决洪水填充难题?

我喜欢玩益智游戏 Flood-It,可以在线玩: https://www.lemoda.net/javascript/flood-it/game.html 它还可以作为 iGoogle 小工具使用.目的是用最少的连续充填次数填满整个棋盘. 我正在尝试编写一个可以最佳解决这个难题的程序.解决这个问题的最佳方法是什么?理想情况下,我想使用 A* 算法,但我不知道估计剩余步数的函数应该 ..

PyTorch 二进制分类 - 相同的网络结构,“更简单"的数据,但性能更差?

为了掌握 PyTorch(以及一般的深度学习),我首先研究了一些基本的分类示例.一个这样的例子是对使用 sklearn 创建的非线性数据集进行分类(完整代码可作为 notebook 这里) n_pts = 500X, y = datasets.make_circles(n_samples=n_pts,random_state=123,噪声=0.1,因子=0.2)x_data = torch.Fl ..

简单的井字游戏 AI

我知道这已经被问了很多,我已经搜索了其他代码,但我所看到的大部分内容似乎并不完美(永远不会丢失),而且简单、优雅和高效.而且我无法决定哪种类型的解决方案适合该描述. 我见过的解决方案是: (1) 使用极小极大值和 alpha-beta 剪枝.这对我来说似乎很复杂,对于这样一个简单的游戏来说可能没有必要?是不是太复杂了?如果没有,我是否需要进行大量硬编码,还是我误解了算法? (2) ..
发布时间:2021-11-28 22:32:45 AI人工智能

周围有没有自我改进的编译器?

我不知道有任何自我改进的编译器,但话说回来,我不是一个编译器人. 是否有任何自我改进的编译器? 请注意,我说的是一个自我改进的编译器 - 而不是一个改进它编译的代码的编译器. 感谢任何指点! 旁注:如果您想知道我为什么要问,请查看 这篇文章.即使我同意大多数论点,我也不太确定以下几点: 我们有可以改进的计划他们的代码现在无需人工输入——它们被称为编译器. ... ..

ValueError:具有形状 (3,1) 的不可广播输出操作数与广播形状 (3,4) 不匹配

我最近开始在 YouTube 上学习 Siraj Raval 的深度学习教程,但是当我尝试运行我的代码时出现错误.代码来自他的系列的第二集,如何制作神经网络.当我运行代码时出现错误: 回溯(最近一次调用最后一次):文件“C:\Users\dpopp\Documents\Machine Learning\first_neural_net.py",第 66 行,在 中.神经网络.训 ..
发布时间:2021-11-28 22:32:28 AI人工智能