以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(中)------Python实现

从理论到实现,需要数据、需要代码、需要运气

以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(上)
基本讲清楚了最短路算法的基本原理

下面主要做几件事:
①把node和link文件导入
②把有效字段输入算法
③输出我想要的结果

核心算法如下:

import pandas as pd
import numpy as np
import seaborn as sns
sns.set(style="ticks", color_codes=True)

def dijkstra(start, adjacency_matrix):
    passed = [start]  
    nopass = [x for x in range(len(adjacency_matrix)) if x != start]  
    dis = adjacency_matrix[start]  
    
    while len(nopass):
        idx = nopass[0]
        for i in nopass:
            if dis[i] < dis[idx]:
                idx = i

        nopass.remove(idx)
        passed.append(idx)

        for i in nopass:
            if dis[idx] + adjacency_matrix[idx][i] < dis[i]:
                dis[i] = dis[idx] + adjacency_matrix[idx][i]
                route_list_index[i].append(idx)

    return dis

下面就是些导入数据之类的:

class ReadData:
    def __init__(self, node, link):  # 类属性
        self.node = 'node.csv'
        self.link = 'link.csv'

    def read_node(self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值