Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 平方欧几里得距离是一个可接受的启发式吗?_Python_Artificial Intelligence_Heuristics_Planning - Fatal编程技术网

Python 平方欧几里得距离是一个可接受的启发式吗?

Python 平方欧几里得距离是一个可接受的启发式吗?,python,artificial-intelligence,heuristics,planning,Python,Artificial Intelligence,Heuristics,Planning,我有一个网格,如图所示。到目前为止,我已经实现了以下函数作为我的启发式函数。所以这个游戏的目标是收集这个网格上的所有数字。起点A 曼哈顿距离,然后取其最大值来计算启发式 所有曼哈顿距离与放置的数字之和。(我认为这是不允许的,因为它高估了达到目标的距离,如果我错了,请纠正我) 我的问题是,第一种方法扩展的状态比我需要的多,而第二种方法是不允许的。目前,我正在实施自己的启发式方法 我想到了这个想法,计算从A到2,然后到1,然后到3和0的距离的平方欧几里德距离。没有收集号码的命令。然而问题是欧几里德距

我有一个网格,如图所示。到目前为止,我已经实现了以下函数作为我的启发式函数。所以这个游戏的目标是收集这个网格上的所有数字。起点A

  • 曼哈顿距离,然后取其最大值来计算启发式
  • 所有曼哈顿距离与放置的数字之和。(我认为这是不允许的,因为它高估了达到目标的距离,如果我错了,请纠正我)
  • 我的问题是,第一种方法扩展的状态比我需要的多,而第二种方法是不允许的。目前,我正在实施自己的启发式方法

    我想到了这个想法,计算从A到2,然后到1,然后到3和0的距离的平方欧几里德距离。没有收集号码的命令。然而问题是欧几里德距离虽然是容许的,但它扩展了太多的状态。你能帮我找到一个合适的距离或方法来完成我的任务吗


    谢谢大家!

    我怀疑您在解释您的方法时遇到了困难,因为这个问题没有用于定义“可接受性”的简单、单一目标范例。相反,你有一个小的TSP(旅行推销员问题),在其中你可以收集4个项目中的任何一个!命令。您没有描述您在方法中使用的距离,但没有简单的计算。添加所有10个距离(对于n=5个节点;5x4/2)只会超出开销,因为您将只遍历其中的4条边。同样,将从A到每个项目的距离相加也是错误的

    相反,您需要在路径的每条边上使用启发式,添加,然后为考虑中的四条边路径生成启发式估计。对于这种处理,欧几里德距离是可以接受的——但它的平方不是:它严重高估了,并且使用了错误的单位(面积,而不是距离)。曼哈顿距离可能对您更有利


    请注意,在本例中,您遇到了一个问题,因为根据您的启发式,edge 3-0将被低估4到5倍。

    可接受的启发式永远不会高估达到目标(收集所有硬币)的距离(每个区块1)。事实上,这与旅行商问题(tsp)密切相关。我建议查阅一些关于tsp和他们使用的启发法的文献。
        distance = abs(A_x-x_i)+abs(A_y-y_i)
        if distance > manhMax:
           manhMax = distance