贪心算法求最短路径,用Python实现

本文介绍使用贪心算法寻找最短路径的方法,通过迭代从源点出发,每次都选择当前距离源点最近的点,直到到达目标点。
摘要由CSDN通过智能技术生成

主要思想
首先找到离源点最近的点,然后以这个点为源点再进行迭代,重复以上步骤

#-*- coding: utf-8 -*-
if __name__ =="__main__":
    n=0
    print("请输入图中点的数量")
    n=input()
    juzhen=[[0 for i in range(n)] for m in range(n)]
    print("请依次输入矩阵")
    for i in range(n):
        for j in 
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
贪心算法单源最短路径指的是在一个加权有向图中,从给定的源点到所有其他顶点的最短路径问题。Dijkstra算法是最常用的贪心算法之一,用于解决单源最短路径问题。其基本思想是从源点开始,每次选择当前最短路径的顶点,并更新其相邻顶点的距离,直到所有顶点都被遍历。具体步骤如下: 1.初始化:将源点到所有顶点的距离初始化为无穷大,源点到自身的距离为0。 2.选择当前最短路径的顶点:从未确定最短路径的顶点中选择距离最短的顶点。 3.更新相邻顶点的距离:对于当前选定的顶点,更新其相邻顶点的距离,如果经过当前顶点到达相邻顶点的距离比原来的距离更短,则更新距离。 4.重复步骤2和3,直到所有顶点都被遍历。 以下是一个使用Dijkstra算法解单源最短路径Python代码示例: ```python import heapq def dijkstra(graph, start): # 初始化距离 distances = {vertex: float('infinity') for vertex in graph} distances[start] = 0 # 使用堆来存储顶点和距离 pq = [(0, start)] while pq: # 取出距离最小的顶点 current_distance, current_vertex = heapq.heappop(pq) # 如果当前距离大于已知最短距离,则跳过 if current_distance > distances[current_vertex]: continue # 更新相邻顶点的距离 for neighbor, weight in graph[current_vertex].items(): distance = current_distance + weight if distance < distances[neighbor]: distances[neighbor] = distance heapq.heappush(pq, (distance, neighbor)) return distances ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值