NetworkX系列教程(9)-线性代数相关
学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后,如何快速得到这些信息.详细官方文档在这里
目录:
注意:如果代码出现找不库,请返回第一个教程,把库文件导入.
10线性代数相关
10.1图矩阵
- #定义图的节点和边
- nodes=['0','1','2','3','4','5','a','b','c']
- edges=[('0','0',1),('0','1',1),('0','5',1),('0','5',2),('1','2',3),('1','4',5),('2','1',7),('2','4',6),('a','b',0.5),('b','c',0.5),('c','a',0.5)]
- plt.subplots(1,2,figsize=(10,3))
- #定义一个无向图和有向图
- G1 = nx.Graph()
- G1.add_nodes_from(nodes)
- G1.add_weighted_edges_from(edges)
- G2 = nx.DiGraph()
- G2.add_nodes_from(nodes)
- G2.add_weighted_edges_from(edges)
- pos1=nx.circular_layout(G1)
- pos2=nx.circular_layout(G2)
- #画出无向图和有向图
- plt.subplot(121)
- nx.draw(G1,pos1, with_labels=True, font_weight='bold')
- plt.title('无向图',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.subplot(122)
- nx.draw(G2,pos2, with_labels=True, font_weight='bold')
- plt.title('有向图',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #控制numpy输出小数位数
- import numpy as np
- np.set_printoptions(precision=3)
- #邻接矩阵
- A = nx.adjacency_matrix(G1)
- print('邻接矩阵:\n',A.todense())
- #关联矩阵
- I = nx.incidence_matrix(G1)
- print('\n关联矩阵:\n',I.todense())
- #拉普拉斯矩阵
- L=nx.laplacian_matrix(G1)
- print('\n拉普拉斯矩阵:\n',L.todense())
- #标准化的拉普拉斯矩阵
- NL=nx.normalized_laplacian_matrix(G1)
- print('\n标准化的拉普拉斯矩阵:\n',NL.todense())
- #有向图拉普拉斯矩阵
- DL=nx.directed_laplacian_matrix(G2)
- print('\n有向拉普拉斯矩阵:\n',DL)
- #拉普拉斯算子的特征值
- LS=nx.laplacian_spectrum(G1)
- print('\n拉普拉斯算子的特征值:\n',LS)
- #邻接矩阵的特征值
- AS=nx.adjacency_spectrum(G1)
- print('\n邻接矩阵的特征值:\n',AS)
- #无向图的代数连通性
- AC=nx.algebraic_connectivity(G1)
- print('\n无向图的代数连通性:\n',AC)
- #图的光谱排序
- SO=nx.spectral_ordering(G1)
- print('\n图的光谱排序:\n',SO)
- #两个矩阵的解释看:https://blog.csdn.net/Hanging_Gardens/article/details/55670356

输出:
- 邻接矩阵:
- [[0. 0. 0. 0. 5. 0. 0. 0. 6. ]
- [0. 0. 0. 2. 0. 0. 0. 0. 0. ]
- [0. 0. 0. 0. 0. 0.5 0.5 0. 0. ]
- [0. 2. 0. 1. 1. 0. 0. 0. 0. ]
- [5. 0. 0. 1. 0. 0. 0. 0. 7. ]
- [0. 0. 0.5 0. 0. 0. 0.5 0. 0. ]
- [0. 0. 0.5 0. 0. 0.5 0. 0. 0. ]
- [0. 0. 0. 0. 0. 0. 0. 0. 0. ]
- [6. 0. 0. 0. 7. 0. 0. 0. 0. ]]
- 关联矩阵:
- [[1. 1. 0. 0. 0. 0. 0. 0. 0.]
- [0. 0. 1. 0. 0. 0. 0. 0. 0.]
- [0. 0. 0. 1. 1. 0. 0. 0. 0.]
- [0. 0. 1. 0. 0. 1. 0. 0. 0.]
- [0. 1. 0. 0. 0. 1. 0. 1. 0.]
- [0. 0. 0. 1. 0. 0. 0. 0. 1.]
- [0. 0. 0. 0. 1. 0. 0. 0. 1.]
- [0. 0. 0. 0. 0. 0. 0. 0. 0.]
- [1. 0. 0. 0. 0. 0. 0. 1. 0.]]
- 拉普拉斯矩阵:
- [[11. 0. 0. 0. -5. 0. 0. 0. -6. ]
- [ 0. 2. 0. -2. 0. 0. 0. 0. 0. ]
- [ 0. 0. 1. 0. 0. -0.5 -0.5 0. 0. ]
- [ 0. -2. 0. 3. -1. 0. 0. 0. 0. ]
- [-5. 0. 0. -1. 13. 0. 0. 0. -7. ]
- [ 0. 0. -0.5 0. 0. 1. -0.5 0. 0. ]
- [ 0. 0. -0.5 0. 0. -0.5 1. 0. 0. ]
- [ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
- [-6. 0. 0. 0. -7. 0. 0. 0. 13. ]]
- 标准化的拉普拉斯矩阵:
- [[ 1. 0. 0. 0. -0.418 0. 0. 0. -0.502]
- [ 0. 1. 0. -0.707 0. 0. 0. 0. 0. ]
- [ 0. 0. 1. 0. 0. -0.5 -0.5 0. 0. ]
- [ 0. -0.707 0. 0.75 -0.139 0. 0. 0. 0. ]
- [-0.418 0. 0. -0.139 1. 0. 0. 0. -0.538]
- [ 0. 0. -0.5 0. 0. 1. -0.5 0. 0. ]
- [ 0. 0. -0.5 0. 0. -0.5 1. 0. 0. ]
- [ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
- [-0.502 0. 0. 0. -0.538 0. 0. 0. 1. ]]
- 有向拉普拉斯矩阵:
- [[ 0.889 -0.117 -0.029 -0.087 -0.319 -0.029 -0.029 -0.129 -0.242]
- [-0.117 0.889 -0.026 -0.278 -0.051 -0.026 -0.026 -0.114 -0.056]
- [-0.029 -0.026 0.994 -0.012 -0.009 -0.481 -0.481 -0.025 -0.01 ]
- [-0.087 -0.278 -0.012 0.757 -0.097 -0.012 -0.012 -0.052 -0.006]
- [-0.319 -0.051 -0.009 -0.097 0.994 -0.009 -0.009 -0.041 -0.434]
- [-0.029 -0.026 -0.481 -0.012 -0.009 0.994 -0.481 -0.025 -0.01 ]
- [-0.029 -0.026 -0.481 -0.012 -0.009 -0.481 0.994 -0.025 -0.01 ]
- [-0.129 -0.114 -0.025 -0.052 -0.041 -0.025 -0.025 0.889 -0.045]
- [-0.242 -0.056 -0.01 -0.006 -0.434 -0.01 -0.01 -0.045 0.994]]
- 拉普拉斯算子的特征值:
- [-1.436e-15 0.000e+00 4.610e-16 7.000e-01 1.500e+00 1.500e+00
- 4.576e+00 1.660e+01 2.013e+01]
- 邻接矩阵的特征值:
- [12.068+0.000e+00j 2.588+0.000e+00j -7.219+0.000e+00j -4.925+0.000e+00j
- -1.513+0.000e+00j 1. +0.000e+00j -0.5 +2.393e-17j -0.5 -2.393e-17j
- 0. +0.000e+00j]
- 无向图的代数连通性:
- 0.0
- 图的光谱排序:
- ['4', '2', '1', '0', '5', 'b', 'c', 'a', '3']
后面还有两个小节,由于对图论算法不是很明白,所以先讲明白算法原理,再使用networkX实现,如无须读算法,可以跳过算法原理部分.
NetworkX系列教程(9)-线性代数相关的更多相关文章
- NetworkX系列教程(1)-创建graph
小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...
- NetworkX系列教程(11)-graph和其他数据格式转换
小书匠 Graph 图论 学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...
- NetworkX系列教程(10)-算法之五:广度优先与深度优先
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- NetworkX系列教程(10)-算法之四:拓扑排序与最大流问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- NetworkX系列教程(10)-算法之三:关键路径问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- NetworkX系列教程(10)-算法之二:最小/大生成树问题
小书匠 Graph 图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定 ...
- NetworkX系列教程(10)-算法之一:最短路径问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- NetworkX系列教程(8)-Drawing Graph
小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...
- NetworkX系列教程(2)-graph生成器
小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...
随机推荐
- 几个有益的 CSS 小知识
样式的顺序 CSS 代码: HTML 代码: 记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) 答案你们应该是知道的. 可以这样提升 CSS 性能 后代选择器 ...
- 自定义AuthorizeFilter
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization.Infrastructure; u ...
- Java帖子
IDEA新手使用教程(详解):https://cloud.tencent.com/developer/article/1448115 Java学习文档:https://www.sxt.cn/Java_ ...
- H5表单新特性
1.HTML5表单新特性之——新的input type <input type=" "> HTML5之前已有的input type: text.password.rad ...
- js防抖节流
防抖(debounce) 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间. 防抖函数分为非立即执行版和立即执行版. 非立即执行版: 第一 ...
- MM-发票校验与收货的差异处理
SAP FI-财务发票校验修改金额后没有进入差异科目问题:公司新建物料采购订单,在MM科目自动确定配置完成后,做发票校验时,修改金额没修改数量时,差异进入了原材料科目 换采购订单继续测试时,修改金额没 ...
- FreeRTOS 任务创建和删除(动态)
TaskHandle_t taskhandle; TaskHandle_t taskhandle1; void vTask(void *t) { int i = 0; while(1) { i++; ...
- Haddop完全分布式集群搭建
hadoop完全分布式搭建 建议(遇到的坑): 如果自己用的操作系统就是linux,我本身是deepin系统,装了两台虚拟机,结果,用户名没有配置,导致启动不了,因为hadoop的master节点启动 ...
- Win10开启蓝屏信息记录及文件查看位置的方法
蓝屏,是电脑最常见的故障,一般出现蓝屏时都会显示详细的蓝屏错误信息,方便用户排查故障.但是如果系统未开启蓝屏记录,下文介绍蓝屏日志开启及蓝屏日志文件存放位置.我用的是win10系统 蓝屏日志开启方法步 ...
- Linux命令——chkconfig
拓展:如何增加一个系统服务service chkconfig本身用法不复杂,其作用是控制service是否开机启动. 对于CentOS而言,7.X版本已经不再使用SysV,SysV相关的命令基本上没有 ...