Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Algorithm 利用曼哈顿距离寻找最近对_Algorithm - Fatal编程技术网

Algorithm 利用曼哈顿距离寻找最近对

Algorithm 利用曼哈顿距离寻找最近对,algorithm,Algorithm,我试图用曼哈顿距离来实现最近对算法。对于欧几里德距离,它运行良好,但是对于曼哈顿距离,它给出了错误的结果。CLRS练习33.4-3要求我们将欧几里德距离替换为曼哈顿距离。他们只是要求我们更改一行代码,但这不是下面代码中需要修改的内容 lst = [(2,2),(4,2),(5,3)] min_dist = float("inf") for i in range(len(lst)): for j in range(i + 1 , len(lst)): dist = ab

我试图用曼哈顿距离来实现最近对算法。对于欧几里德距离,它运行良好,但是对于曼哈顿距离,它给出了错误的结果。CLRS练习33.4-3要求我们将欧几里德距离替换为曼哈顿距离。他们只是要求我们更改一行代码,但这不是下面代码中需要修改的内容

lst = [(2,2),(4,2),(5,3)]

min_dist = float("inf")

for i in range(len(lst)):
    for j in range(i + 1 , len(lst)):
        dist = abs(lst[i][0] - lst[j][0]) + abs(lst[i][1] - lst[j][1])
        if(dist < min_dist):
            min_dist = dist
            global minp1, minp2
            minp1 = lst[i]
            minp2 = lst[j]
lst=[(2,2)、(4,2)、(5,3)]
最小距离=浮动(“inf”)
对于范围内的i(len(lst)):
对于范围(i+1,len(lst))内的j:
dist=abs(lst[i][0]-lst[j][0])+abs(lst[i][1]-lst[j][1])
如果(距离<最小距离):
最小距离=距离
全局minp1,minp2
minp1=lst[i]
minp2=lst[j]

我猜两种距离的程序的结果是不同的。 事实上,在欧几里德距离中,最近的一对是
(4,2)-(5,3)
,而在曼哈顿距离中,
(2,2)-(4,2)
(4,2)-(5,3)
都是最近的一对。给定您的程序,您只会按照出现的顺序选择第一个,结果是
(2,2)-(4,2)
。如果您的程序将返回所有最近的对,您将看到
(4,2)-(5,3)


但总的来说,没有理由两个项目的结果是相同的。例如,在您的示例中,将
(5,3)
更改为
(5,3.1)
。为了具体了解这两种距离的不同程度,您可以使用标准来绘制“单位圆”,您将看到曼哈顿圆更像正方形而不是圆形。

我猜两种距离的程序的结果是不同的。 事实上,在欧几里德距离中,最近的一对是
(4,2)-(5,3)
,而在曼哈顿距离中,
(2,2)-(4,2)
(4,2)-(5,3)
都是最近的一对。给定您的程序,您只会按照出现的顺序选择第一个,结果是
(2,2)-(4,2)
。如果您的程序将返回所有最近的对,您将看到
(4,2)-(5,3)

但总的来说,没有理由两个项目的结果是相同的。例如,在您的示例中,将
(5,3)
更改为
(5,3.1)
。为了具体了解这两种距离有多大的不同,您可能需要绘制“单位圆”作为标准,这样您就会看到曼哈顿圆更像正方形而不是圆形。

请解释您得到的错误结果和您的预期。巧合?请解释一下你得到了什么错误的结果和你的预期。巧合?