heuristics相关内容

为什么允许对角线移动会使A*和曼哈顿距离不可接受?

我对使用A*和曼哈顿距离度量的网格中的对角移动有些困惑。有没有人能解释一下为什么使用对角线移动会使其不可接受?在对角运动中,到达目标状态所需的步骤比上下、左下、右少,难道不会找到更好的最优解吗?还是我错过了什么? 推荐答案 正如贝克的评论所表明的那样,曼哈顿距离将高估一个州与其对角可访问的州之间的距离。根据定义,超出估计距离的启发式是不允许的。 现在,到底为什么会这样? 假 ..

选择 Java 集合实现的经验法则?

在 Java Collection 接口的不同实现(如 List、Map 或 Set)之间进行选择时,有没有人有好的经验法则? 例如,通常为什么或在什么情况下我更喜欢使用 Vector 或 ArrayList、Hashtable 或 HashMap? 解决方案 我总是根据用例逐个做出这些决定,例如: 我需要保留订单吗? 我会有空键/值吗?重复? 是否会被多个线程访问 我需 ..
发布时间:2021-12-27 17:51:32 Java开发

用于线程推文的一组好的启发式方法是什么?

每个人都知道,如果您想发送电子邮件,请使用 JamieZawinski 的算法.但这是一个新世纪,有一个新的消息服务. 线程状态更新的最佳算法是什么?推特? 我绝对喜欢它处理的事情: 简单的部分:使用in_reply_to_status_id,in_reply_to_user_id 和 in_reply_to_screen_name.(顺便说一句,找到这些值的正确文档本身就很有用 ..
发布时间:2021-12-25 20:34:30 其他开发

将递归算法转换为迭代算法的设计模式

是否有任何通用的启发式方法、技巧、技巧或通用设计范式可用于将递归算法转换为迭代算法?我知道这是可以做到的,我想知道这样做时是否有值得牢记的做法. 解决方案 您通常可以完全保留递归算法的原始结构,但避免堆栈,通过使用尾调用并更改为继续传递strong>,正如此博客条目所建议的那样.(我真的应该编写一个更好的独立示例.) ..
发布时间:2021-12-06 19:49:28 其他开发

是否有任何经验法则可以根据人类可读的描述构造 SQL 查询?

每当我们面前有查询的任何描述时,我们都会尝试应用启发式和头脑风暴来构建查询. 是否有任何系统的分步或数学方法可以根据给定的人类可读描述构造 SQL 查询? 例如,如何确定 SQL 查询是否需要连接而不是子查询,是否需要 group by,是否需要 IN 子句等.... 例如,任何学习过数字电子学的人都会知道卡诺图或昆麦克劳斯基方法等方法.这些是一些简化数字逻辑的系统方法. ..

当网格图中有多个目标时,如何设计 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开发

如果我使用 4xManhattan 距离作为 15-Puzzle 的启发式,为什么 A* 更快

我已经实现了一个 A* 算法来解决 15 拼图.我进行了一项研究,以寻找一些可行的或可接受的启发式方法,寻找快速解决方案,我发现使用 4*曼哈顿距离作为启发式方法总是可以在不到一秒的时间内解决任何 15 难题.我试过这个并且有效地工作.我试图找到答案,但我找不到. 谁能解释一下? 解决方案 4* manhattan distance 是不可接受的启发式算法,这使得算法首先表现得“更接 ..
发布时间:2021-11-30 13:07:14 其他开发

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

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

使用 A 星寻找路径的启发式函数

我正在尝试为以下问题找到最佳解决方案 每个节点内表示的数字表示为(x,y). 一个节点的相邻节点总是有一个 y 值,即(当前节点 y 值 +1). 当我们从一个节点到其相邻节点时,x 值的变化成本为 1 如果 x 的值没有变化,则从节点到其相邻节点没有成本. 没有 2 个具有相同 y 值的节点被认为是相邻的. 最优方案是成本最低的方案,我正在考虑使用 A* 寻路算法来寻找最优方 ..

A-star (A*) 的曼哈顿启发式函数

我发现了这个算法 这里. 我有一个问题,我似乎无法理解如何设置和传递我的启发式函数. 静态公共路径AStar(TNode开始,TNode目的地,Func距离,Func估计),其中 TNode : IHasNeighbours{var closed = new HashSet();var queue = ..
发布时间:2021-11-30 13:06:28 C#/.NET

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

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

为 A* 算法寻找启发式的一些好方法是什么?

您有一张方形图块的地图,您可以在其中向 8 个方向中的任何一个方向移动.鉴于你有一个名为 cost(tile1, tile2) 的函数,它告诉你从一个相邻的瓷砖移动到另一个的成本,你如何找到一个既可以接受的启发式函数 h(y,goal)并且一致?在给定此设置的情况下,是否可以推广用于查找启发式的方法,还是会根据 cost 函数而有所不同? 解决方案 Amit 的教程是我在 A* 上见过的最 ..
发布时间:2021-11-30 13:03:23 其他开发

A* 允许在网格上滚动的启发式算法

我需要一些帮助来为以下问题找到一个好的启发式方法: 您将获得一个 R-by-C 网格和一个六面骰子.让 start 和end 是此网格上的两个不同单元格.找到从 start 到 end 的路径,使得当骰子沿着路径转动时,向上看的骰子面的总和是最小. 骰子的起始方向如下(“2"朝南): 我对这个问题建模的方法是将骰子的面值视为图中边的成本.图的顶点采用 (row, col, die ..
发布时间:2021-11-30 13:03:01 其他开发

如果序列是随机的,是否可以证明?

考虑以下输入: 1,1,2,3,5,8 - 这不是随机的 2,4,8,16,32 - 这两者都不是 4,1,2,11,5,9- 这个看起来像随机序列 请问有没有这样的算法来证明输入是随机的还是不是? 解决方案 不,没有这样的证明——如果你有完全随机数,每个长度为 n 的序列的概率是相等的.但是,有一些统计测试可以评估随机数生成器的质量,这可能是您正在寻找的.请参阅顽 ..
发布时间:2021-10-26 18:46:35 其他开发