用python3.6编程实现最近邻算法

2024-09-28 20:42:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程非常陌生,可能已经吃得太多了。我正在尝试创建一个程序,通过导入包含公园名称和每个公园之间距离的csv文件,可以找到访问所有国家公园的最短路线。理想情况下,我希望它能提示用户从哪个公园开始,然后穿过其他公园,找到最短的距离(例如,如果你想从黄石公园开始,它会找到离黄石最近的公园,然后是离那个公园最近的公园,等等,然后把所有这些距离加起来,返回总里程和公园访问顺序)我想我需要导入csv文件作为字典,这样我就可以使用公园名称作为密钥,但我不知道如何将密钥放入算法中。到目前为止,根据我有限的知识,我总结了以下几点:

import csv
import numpy as np

distances = csv.DictReader(open("ds.csv"))

for row in distances:
    print(row)
startingPark = input('Which park would you like to test?')

def NN(distanceArray, start):    
    path = [start]
    cost = 0
    N = A.shape[0]
    mask = np.ones(N, dtype=bool)
    mask[start] = False

    for i in range(N-1):
        last = path[-1]
        next_ind = np.argmin(distanceArray[last][mask]) # find minimum of remaining locations
        next_loc = np.arange(N)[mask][next_ind] # convert to original location
        path.append(next_loc)
        mask[next_loc] = False
        cost += distanceArray[last, next_loc]

    return path, cost
print (NN(distanceArray,0))

我知道我必须改变代码中实际算法部分的所有数组内容(这只是我在这里通过研究找到的一些代码,我用它作为起点),但我不确定A:如何让它实际使用我提供的输入;B:如何使算法与字典一起工作,而不是与作为代码本身一部分输入的数组一起工作。我试过使用文档之类的东西,但有点过头了。很明显,我不希望任何人只是为我做这件事,但我会感谢任何人可能有的指针或资源。我很努力地学习,但没有任何人真正的指导,知道他们在做什么,我很难。你知道吗

编辑:以下是我必须处理的数据示例。我从Google地图中提取了所有的距离,并将它们输入到csv文件中。我认为我的x也可能是一个问题,可能需要用0或类似的东西来替换,但我还没有处理这个问题。(抱歉,不只是上传图片,还没有足够的代表发布图片) https://imgur.com/a/I4c1T


Tags: 文件csvpath代码算法距离npmask