我正在创建一个以最低成本解决这个难题的程序
滑动标题拼图由三个黑色标题,三个白色标题和图中所示配置中的空白空间组成。
WWW_BBB
拼图的目标是将所有白色瓷砖放在右侧 黑色瓷砖,而空间的位置无关紧要
function encode(functionName, argumentsPassed) {
var data = [functionName].concat(argumentsPassed);
var json = JSON.stringify(data);
return Utilities.base64Encode(json);
}
我很难理解如何创建要在算法中实现的启发式算法。
我理解Dijkstra算法在这个问题中的实现,但是无法弄清楚如何将它变成A *算法。
答案 0 :(得分:3)
假设您想在拼图状态图上使用A *,其边缘可通过两个规则之一到达的状态,那么使用的好启发式将是反转次数:https://en.wikipedia.org/wiki/Inversion_(discrete_mathematics)
这是W,B对的数量不正常(假设相同颜色的瓷砖的相对顺序不会改变)。当版本数为0时,W和B按顺序排列,每种移动类型固定的反转次数小于或等于其成本。因此,作为启发式算法的反转次数永远不会高估最佳序列的成本。