【问题标题】:Calculating Manhattan Distance计算曼哈顿距离
【发布时间】:2011-11-22 09:24:13
【问题描述】:

我在 Java 2D 数组 int[][] 状态下实现 NxN puzzels。我需要通过以下方式使用曼哈顿启发式:

             the sum of the vertical and horizontal distances from 
                the current node to the goal node/tile

                                +(plus)

    the number of moves to reach the goal node from the initial position

目前我不知道如何更进一步。我是 2D 数组益智游戏编程的初学者,所以很难理解某些概念。如何用 Java 编写这段代码?

【问题讨论】:

    标签: java algorithm


    【解决方案1】:

    这更像是一道数学题,但无论如何曼哈顿距离是水平距离和垂直距离的绝对值之和

    int distance = Math.abs(x1-x0) + Math.abs(y1-y0);
    

    更多信息:http://en.wikipedia.org/wiki/Taxicab_geometry

    【讨论】:

    • 感谢您的回复。我只需要计算水平和垂直距离吗?我是初学者,所以需要帮助。我想也许我必须从一个瓷砖移动到另一个瓷砖,每次累积成本加 1。
    • 我给出的代码仅适用于普通的曼哈顿距离 - 如果我正确理解了这个谜题,你必须添加移动的数量。
    • Eddy:是的,因为马哈坦距离是一样的,不管你走哪条“街”去那里。
    • 由于某种原因,当我上 AI 课时,我的印象是曼哈顿距离是欧几里得距离的平方(就像节省一个 sqrt)谢谢你为我的学生节省了一些积分跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多