前言:

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

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

延伸:

无向图

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

有向图

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

多重图

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

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

平时我们可以用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

Python绘制拓扑图(无向图)、有向图、多重图。最短路径计算的更多相关文章

  1. 使用 jsPlumb 绘制拓扑图 —— 异步加载与绘制的实现

    本文实现的方法可以边异步加载数据边绘制拓扑图. 有若干点需要说明一下: 1.  一次性获取所有数据并绘制拓扑图, 请参见文章: <使用 JsPlumb 绘制拓扑图的通用方法> ; 本文实现 ...

  2. 使用 jsPlumb 绘制拓扑图 —— 异步载入与绘制的实现

    本文实现的方法能够边异步载入数据边绘制拓扑图. 有若干点须要说明一下: 1.  一次性获取全部数据并绘制拓扑图. 请參见文章: <使用 JsPlumb 绘制拓扑图的通用方法> ; 本文实现 ...

  3. 使用JsPlumb绘制拓扑图的通用方法

    转自:http://www.it165.net/pro/html/201311/7616.html 使用JsPlumb绘制拓扑图的通用方法 一. 实现目标 绘制拓扑图, 实际上是个数据结构和算法的问题 ...

  4. 使用python绘制根轨迹图

    最近在学自动控制原理,发现根轨迹这一张全是绘图的,然而书上教的全是使用matlab进行计算机辅助绘图.但国内对于使用python进行这种绘图的资料基本没有,后来发现python-control包已经将 ...

  5. ROC,AUC,PR,AP介绍及python绘制

    这里介绍一下如题所述的四个概念以及相应的使用python绘制曲线: 参考博客:http://kubicode.me/2016/09/19/Machine%20Learning/AUC-Calculat ...

  6. 使用 JsPlumb 绘制拓扑图的通用方法

    摘要: 实现 JsPlumb 绘制拓扑图的通用方法. 只要服务端返回一个符合指定格式的数据结构,就可以绘制相应的拓扑图. 难度: 中级 示例工程见:  http://download.csdn.net ...

  7. Python绘制正态分布曲线

      使用Python绘制正态分布曲线,借助matplotlib绘图工具: \[ f(x) = \dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\dfrac{(x-\mu)^2}{2 ...

  8. Python绘制PDF文件~超简单的小程序

    Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...

  9. Python绘制3d螺旋曲线图实例代码

    Axes3D.plot(xs, ys, *args, **kwargs) 绘制2D或3D数据 参数 描述 xs, ys X轴,Y轴坐标定点 zs Z值,每一个点的值都是1 zdir 绘制2D集合时使用 ...

随机推荐

  1. 信用卡号码格式验证-C#实现

    /// <summary> /// Is valid? /// </summary> /// <param name="context">Val ...

  2. postgresql 中文排序

    select c_wsxx from fjfl.t_case_anyou order by convert_to(c_wsxx,'GBK') asc;

  3. Python 初级 6 循环 (二)

    一.复习 1 for循环 for looper in [1, 2, 3, 4]: print("hello") 1) 每次循环开始,会依次把列表中的数按顺序赋值给looper,第一 ...

  4. Influx Sql系列教程三:measurement 表

    在influxdb中measurement相当于mysql中的表,可以理解为一条一条记录都是存与measurent中的,一个数据库中可以有多个measurement,一个measurement中可以存 ...

  5. LInux学习之路

    linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...

  6. idea设置内存大小

    1.打开idea安装路径下bin,编辑.vmoptions两个文件 然后重启一下idea 2.直接打开idea的.vmoptions文件进行编辑

  7. jquery json对象转换

    jquery json对象转换 <pre>//json数组转json串var arr = [1,2,3, { a : 1 } ];JSON.stringify( arr ); //json ...

  8. c++快速排序原理及优化

    快速排序 快速排序的时间复杂度为O(logn) 注意:快速排序主要是标志数的选取,如果所选的数恰好为最小或者最大,则是最糟糕的情况,即一轮下来数据没有发生变化! 如何选取中间的标志数成为了算法的关键. ...

  9. 92. 反转链表 II

    反转从位置 m 到 n 的链表.请使用一趟扫描完成反转.   说明: 1 ≤ m ≤ n ≤ 链表长度.   示例: 输入: 1->2->3->4->5->NULL, m ...

  10. C++Primer 5th Chap4 Expressions

    左值和右值:左值:用的是对象的身份(内存中的位置),右值:用的是对象的值(内容) 解引用与递增(递减)运算符连用: *ivec++:取ivec当前值并向后移动一个元素,等价于*(ivec++),本来+ ...