A *启发式实现

时间:2018-02-13 01:31:40

标签: algorithm search artificial-intelligence heuristics

我正在创建一个以最低成本解决这个难题的程序

滑动标题拼图由三个黑色标题,三个白色标题和图中所示配置中的空白空间组成。

WWW_BBB

  

拼图的目标是将所有白色瓷砖放在右侧   黑色瓷砖,而空间的位置无关紧要

function encode(functionName, argumentsPassed) {
  var data = [functionName].concat(argumentsPassed);
  var json = JSON.stringify(data);
  return Utilities.base64Encode(json);
}

我很难理解如何创建要在算法中实现的启发式算法。

我理解Dijkstra算法在这个问题中的实现,但是无法弄清楚如何将它变成A *算法。

1 个答案:

答案 0 :(得分:3)

假设您想在拼图状态图上使用A *,其边缘可通过两个规则之一到达的状态,那么使用的好启发式将是反转次数:https://en.wikipedia.org/wiki/Inversion_(discrete_mathematics)

这是W,B对的数量不正常(假设相同颜色的瓷砖的相对顺序不会改变)。当版本数为0时,W和B按顺序排列,每种移动类型固定的反转次数小于或等于其成本。因此,作为启发式算法的反转次数永远不会高估最佳序列的成本。