当前位置: 首页 > 知识库问答 >
问题:

有谁能更清楚地解释尼尔森在8-拼图中的序列得分吗?

裴曜灿
2023-03-14

我正在学习一个关于8-拼图问题的*算法。

我没有关于A*的问题,但有一些关于启发式分数--尼尔森序列分数的问题。

Justin Heyes-Jones网页-A*算法非常清楚地解释了A*。它有一张尼尔森序列分数的照片。

对于不在中心的每个瓷砖,如果顺时针方向的瓷砖不是应该顺时针方向的瓷砖,则得分2

将这个序列乘以三,最后加上将每个瓷砖移回其正确位置所需的总距离。

我不明白上面计算分数的步骤。

+---+---+---+
|   | A | C |
+---+---+---+
| H | B | D |
+---+---+---+
| G | F | E |
+---+---+---+

共有1个答案

罗绪
2023-03-14

让我们给平方编号如下:

+---+---+---+
| 0 | 1 | 2 |
+---+---+---+
| 7 | 8 | 3 |
+---+---+---+
| 6 | 5 | 4 |
+---+---+---+

现在,让n(x)为tilex的当前平方数。因此,例如,如果一个瓷砖a在平方数3,那么n(a)=3。请注意,“平铺”可以在这些方块中的任何一个中,并且每个方块的个数保持不变(因此左上角的方块将始终是0)。

序列得分由:

for each tile x in (A, B, C, ..., H)
    score += distance from N(x) to the correct square for tile x
    if N(x) == 8  # i.e. the tile is in the center
       score += 3*1
    else if N(next(x)) != (N(x) + 1) % 8
       score += 3*2
    null
 类似资料:
  • 问题内容: 我正在学习spark,但是我不明白此功能。 输出为: 首先,我很困惑:第二步在哪里?我从结果中找不到。 其次,我阅读了的功能说明,但对算法流程感到困惑。 问题答案: 该调用不会尝试合并/合并值,因此这是一项昂贵的操作。 因此,调用就是这样的优化。当使用值在每个分区上合并为一个值时,则每个分区值将合并为单个值。值得注意的是,合并值的类型不必与原始值的类型匹配,并且通常不需要。该函数以3个

  • 问题内容: 我有地图清单的要求 现在我需要将其设置为flatMap,使其看起来像 在上面的示例中,输出为 目前,我有以下代码: 我们如何使用Java8和Lambda表达式编写这段代码? 问题答案: 我不会为此使用任何lambda,但是我已经使用了Java 8中引入的和方法参考。 您也可以使用s 执行此操作:

  • 问题内容: 我有一个具有以下结构的User对象: 我有一个具有以下结构的JSON字符串: 属性的键是字符串,属性的值可以是字符串,整数,数组,布尔值,映射等。 我尝试像这样用Gson反序列化此JSON字符串: 字段“ id”和“名称”已正确注入,但字段“属性”保持为空。 你知道我在做什么错吗?在此先感谢您的帮助! 问题答案: 对我来说这段代码: 打印此: 但是,请记住,我在解析的文件中剥离了包装的

  • 问题内容: 我无法理解网页的的文档中。 谁能简单地向我解释一下? 问题答案: 背后的想法是它将转换您的数据,使其分布的平均值为0,标准差为1。 对于多变量数据,这是按功能进行的(换句话说,独立于数据的每一列) 。 给定数据的分布,数据集中的每个值都将减去平均值,然后除以整个数据集(或多变量情况下的特征)的标准差。

  • 我对javascript还是个新手,只知道基本知识。有人能解释一下下面的代码,就像在调用init函数时发生的流中一样吗? 我对下面代码的理解是,一旦调用init函数,就会设置一个全局变量输出,该输出映射到一个带有id输出的HTML元素。然后调用。这将创建一个WebSocket对象。这之后是我不完全理解的部分。 在行中,WebSocket对象有一个名为open的属性,我们将它设置为任何返回的属性 。