带权重的有向图求最短路径

本文介绍了一种使用Python实现有向图中计算最短路径的方法,通过定义图、节点和边的实体类,并利用邻接表来表示图。通过一个最短路径计算类,找到图中的最短路径。文章还提到,通过增加节点坐标,可以将该算法应用到地图上的路径规划问题。
摘要由CSDN通过智能技术生成

  首先新建一个网图如下:

  图的表示法有好多中,最常用的应该是邻接矩阵与邻接表。上面的图,边很少,用邻接表来表示就很不错。

  对于以上图,可以对象出3个类。图、节点、边。3个实体类代码如下:

  边Edge:

    public class Edge
    {
        public string StartNodeID
        {
            get;
            set;
        }
        public string EndNodeID
        {
            get;
            set;
        }
        public int Weight
        {
            get;
            set;
        }
    }

  节点Node:

    public class Node
    {
        private string id;
        private IList<Edge> edgeList;
        public Node(string nid)
        {
            id = nid;
            edgeList = new List<Edge>();
        }

        public string Id
        {
            get
            {
                return id;
            }
        }

        public IList<Edge> EdgeList
        {
            get
            {
                return edgeList;
            }
        }
    }

  图Graph:

    public class Graph
    {
        public List<Node> NodeList = new List<Node>();
    }

  由于要求的就是最短路径,路径对象模拟如下:

    public class Path
    {
        public string CurrentNodeId;
        public bool IsProcessed = false;
        public int Weight = 99999999
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值