24得票1回答
曼哈顿距离过于高估,让我感到很疯狂。

我正在使用曼哈顿距离来实现A星算法以解决8数码难题(使用C语言编写)。它似乎工作得非常好,并通过了许多单元测试,但在一个案例中未能找到最短路径(它找到了27步而不是25步)。 当我将启发式函数更改为汉明距离时,它可以在25步内找到答案。 当我让曼哈顿距离函数返回实际成本的一半时,也可以在25...

40得票5回答
A*可行启发式算法在网格上掷骰子问题中的应用

我需要一些帮助来找到以下问题的良好启发式方法: 给定一个R行×C列的网格和一个六面骰子。 假设start和 end是该网格上的两个不同单元格。 找到从start 到 end 的路径, 使得沿着路径旋转时,骰子朝上的面的总和最小。 骰子的起始朝向如下所示(“2”面向南)...

7得票2回答
何时使用和不使用每种开发范式?

鉴于软件开发有各种不同的方法,我们能否总结出一些启发式方法,以确定在什么情况下使用哪种方法,例如: 基于案例的开发 基于模型的开发 行为驱动开发 测试驱动开发 统一过程 Jackson 结构化设计 等等 没有任何一种方法太老旧、专业化或“过时” ;-) 请每个答案只列出一种方法,并包...

43得票7回答
将递归算法转化为迭代算法的设计模式

有没有通用的启发式算法、技巧、诀窍或常见的设计范例可以用来将递归算法转换为迭代算法?我知道它是可以完成的,但我想知道在这样做时需要牢记哪些实践经验。

15得票8回答
计算机象棋树搜索的现状是什么?

我对只能提高少数百分比速度的微小优化不感兴趣。 我对alpha-beta搜索中最重要的启发式和评估函数的最重要组成部分感兴趣。 我特别关注具有最高(改进/代码大小)比率的算法。(而不是改进/复杂性)。 谢谢。 附言 杀手着法启发式是一个完美的例子——易于实现且功能强大。 启发式数据库太过复杂。

9得票3回答
如何设计一个适合Connect 4的优秀评估函数?

我有一个Java实现的“Connect 4”游戏(具有可变列数和行数)。 根据用户选择,此实现使用Mini-max算法或Alpha-beta剪枝的Mini-max算法,在搜索的最大深度为maxDepth时停止。 我的问题是设计一个良好的状态评估函数来评估棋盘(这是在maxDepth返回的值...

81得票6回答
有哪些算法可以比较两个字符串的相似程度?

我需要比较字符串以判断它们是否代表相同的事物。这与人类输入的案件标题有关,其中缩写和其他细节可能会有所不同。例如,请考虑以下两个标题:std::string first = "Henry C. Harper v. The Law Offices of Huey & Luey, LLP"...

49得票3回答
启发式和元启发式之间有什么区别?

经过一些关于算法的研究,我发现了两个术语让我很困惑。我至少阅读了20篇论文,然而,没有一个清晰的定义可以说明它们之间的差异。我希望有人能帮助我解释启发式算法和元启发式算法之间的区别。如果可能的话,请附上信息来源。 注:我已经知道这些词的意思,但我不知道它们在计算机科学中的确切区别。 提前感谢您。

47得票4回答
一致且可接受的启发式函数

任何一种连贯的启发式算法都是可接受的。但是什么情况下启发式算法是可接受的而不是连贯的(单调)? 请提供一个这种情况的例子。

32得票3回答
检测照片方向的算法

我希望能够自动旋转照片,即使图像方向的EXIF元数据不可用。 是否有好的算法来检测照片的方向?这些图像是数码相机拍摄的照片。该算法不必完美,但任何减少人类干预旋转照片所需数量的改进都将是受益的。 我已经找到了这两篇论文: 自动图像方向的预分类 (2006) 通过置信度为基础集成低级和语...