python - 如何在Python中的仅节点图中找到输入节点列表的最短路径
问题描述
我对图表这个话题很陌生,所以也许这是一个已知问题,我只是没有找到合适的名称。所以来解释一下。想象一下,我们有一个包含n 个节点的图 - 存储为邻接表。这是一个无向加权图,位于笛卡尔平面上(因此您可以获得每个节点之间的距离)。但是你只有顶点,没有边,就像这张图片:
现在我输入一个节点列表(随机排序),例如[n2,n7,n1]
,算法应该找到如何以最小距离连接这些节点的路径,然后返回有序数组 - 例如[n1, n2, n7]
对我来说,这似乎与寻路算法不同,因为您正在输入节点列表,知道如何解决这个问题吗?谢谢!
解决方案
这看起来像旅行商问题。你可以找到很多关于它的文献,但你可以从维基百科页面开始。
为了适应您的问题,您可以创建一个包含所有节点的图,并添加一个与所有其他节点具有相等距离的任意节点,这将作为您的旅行推销员的起点。
旅行商问题的求解技术取决于问题的大小、您希望与最优解的接近程度、您希望算法的速度等。
推荐阅读
- c# - 将 Socks5 代理与 Chrome Selenium C# 一起使用
- arrays - 如何将二维数组点传递给其他函数?
- java - 将集合名称存储在 firestore Project 类文件的类中是否安全?
- c++ - 通信服务器客户端 C++
- python - 尝试将 Python 连接到 mySQL 数据库时出现“访问死亡错误”
- caching - Bigquery 物化视图计费 - 是否有 10mb 的最小值?
- python - 从 Python 中的子列表列表中删除具有固定百分比的元素
- python - 在 keras 中,model.predict() 的结果是什么以及加载模型的预测有问题
- python - 内存是否分配给 CPython 中堆栈上的指针?
- java - (JDA) 静音命令在代码的第四行中断