zoukankan      html  css  js  c++  java
  • Python绘制拓扑图(无向图)、有向图、多重图。最短路径计算

    前言:

    数学中,“图论”研究的是定点和边组成的图形。

    计算机中,“网络拓扑”是数学概念中“图”的一个子集。因此,计算机网络拓扑图也可以由节点(即顶点)和链路(即边)来进行定义和绘制。

    延伸:

    无向图

    两个节点之间只有一条线相连接,且没有方向。

     有向图

    两个节点之间只有一条线相连接,且有方向。方向可以单向,也可以双向。

     多重图

    两个节点之间只有多条线相连接。

    网络拓扑是网络工程师日常工作的基础。网络规划阶段、网络建设阶段、维护阶段都离不开网络拓扑图。

    平时我们可以用Microsoft Visio 和Office PowerPoint 绘制出漂亮的网络拓扑,但不方便转为格式化的数据关系。

    也可以用DOT语言(拓扑数据结构的描述性语言)绘制。

    这里我重点讲解python的networkx工具来绘制网络拓扑图。

    python代码案例:

    import networkx as nx
    import matplotlib.pyplot as plt
    
    nodes=[
        'A',
        'B',
        'C',
        'D',
        'E',
        'F',
        'G'
    ]
    
    G=nx.Graph()
    # G=nx.DiGraph()
    # G=nx.MultiGraph()
    
    for node in nodes:
        G.add_node(node)
    
    edges=[
        ('A','B'),
        ('A','C'),
        ('B','C'),
        ('D','B'),
        ('B','D'),
        ('D','C'),
        ('E','B'),
        ('E','A'),
        ('F','B'),
        ('F','A'),
        ('G','C'),
        ('G','A')
    ]
    
    r=G.add_edges_from(edges)
    
    # 计算最短路径。
    shortest_way=nx.shortest_path(G,"F","D")
    print(shortest_way)
    
    nx.draw(G, with_labels=True,node_color='y',)
    plt.show()
    

     输出:

    F到D的最短路径:

    ['F', 'B', 'D']

    节点关系绘图参考:

    https://www.cnblogs.com/minglex/p/9205160.html

  • 相关阅读:
    IDEA tomcat热部署方法及乱码问题解决
    访问WEB-INF下JSP资源的几种方式(转)
    SpringMVC 静态资源处理
    SpringMVC中的拦截器
    SpringMVC中的异常处理
    SpringMVC实现文件上传
    IDEA 热部署
    响应数据和结果视图
    SpringMVC中的常用注解
    js获取当前根目录的方法
  • 原文地址:https://www.cnblogs.com/andy9468/p/11310700.html
Copyright © 2011-2022 走看看