官方文档:

https://networkx.github.io/documentation/networkx-1.10/reference/algorithms.html

最短路和最小生成树:

import networkx as nx
import matplotlib.pyplot as plt G = nx.Graph()
#G.add_node(1) #添加一个节点1
#G.add_edge(2,3,10) #添加一条边2-3(隐含着添加了两个节点2、3)
#G.add_edge(3,2) #对于无向图,边3-2与边2-3被认为是一条边
#G.add_weighted_edges_from([(1,2,8)])
#G.add_weighted_edges_from([(1,3,10)])
#G.add_weighted_edges_from([(2,3,6)]) G.add_edge('A', 'B', weight=4)
G.add_edge('B', 'D', weight=2)
G.add_edge('A', 'C', weight=3)
G.add_edge('C', 'D', weight=5)
G.add_edge('A', 'D', weight=6)
G.add_edge('C', 'F', weight=7)
G.add_edge('A', 'G', weight=1)
G.add_edge('H', 'B', weight=2)
for u,v,d in G.edges(data=True):
print(u,v,d['weight'])
edge_labels=dict([((u,v,),d['weight']) for u,v,d in G.edges(data=True)])
#fixed_position = {'A':[ 1., 2.],
# 'B': [ 1., 0.],
# 'D': [ 5., 5.],
# 'C': [ 0.,6.]}#每个点在坐标轴中的位置
#pos=nx.spring_layout(G,pos = fixed_position)#获取结点的位置,每次点的位置都是随机的
pos = nx.spring_layout(G) #也可以不固定点
nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels,font_size=14)#绘制图中边的权重 print(edge_labels)
print("nodes:", G.nodes()) #输出全部的节点: [1, 2, 3]
print("edges:", G.edges()) #输出全部的边:[(2, 3)]
print("number of edges:", G.number_of_edges()) #输出边的数量 nx.draw_networkx(G,pos,node_size=400)
plt.savefig("wuxiangtu.png")
plt.show() # 生成邻接矩阵
mat = nx.to_numpy_matrix(G)
print(mat) # 计算两点间的最短路
# dijkstra_path
print('dijkstra方法寻找最短路径:')
path=nx.dijkstra_path(G, source='H', target='F')
print('节点H到F的路径:', path)
print('dijkstra方法寻找最短距离:')
distance=nx.dijkstra_path_length(G, source='H', target='F')
print('节点H到F的距离为:', distance) # 一点到所有点的最短路
p=nx.shortest_path(G,source='H') # target not specified
d=nx.shortest_path_length(G,source='H')
for node in G.nodes():
print("H 到",node,"的最短路径为:",p[node])
print("H 到",node,"的最短距离为:",d[node]) # 所有点到一点的最短距离
p=nx.shortest_path(G,target='H') # target not specified
d=nx.shortest_path_length(G,target='H')
for node in G.nodes():
print(node,"到 H 的最短路径为:",p[node])
print(node,"到 H 的最短距离为:",d[node]) # 任意两点间的最短距离
p=nx.shortest_path_length(G)
p=dict(p)
d=nx.shortest_path_length(G)
d=dict(d)
for node1 in G.nodes():
for node2 in G.nodes():
print(node1,"到",node2,"的最短距离为:",d[node1][node2]) # 最小生成树
T=nx.minimum_spanning_tree(G) # 边有权重
print(sorted(T.edges(data=True))) mst=nx.minimum_spanning_edges(G,data=False) # a generator of MST edges
edgelist=list(mst) # make a list of the edges
print(sorted(edgelist)) # 使用A *算法的最短路径和路径长度
p=nx.astar_path(G, source='H', target='F')
print('节点H到F的路径:', path)
d=nx.astar_path_length(G, source='H', target='F')
print('节点H到F的距离为:', distance) # 找回路
hl = nx.algorithms.find_cycle(G)
print(hl) # 二分图匹配
G = nx.complete_bipartite_graph(2, 3)
nx.draw_networkx(G)
left, right = nx.bipartite.sets(G)
list(left) #[0, 1]
list(right) #[2, 3, 4]
p = nx.bipartite.maximum_matching(G)
print("输出匹配:",p) # 最大流
# graph's maximum flow
# flow is computed between vertex 0 and vertex n-1
# expected input format:
# n
# m
#g = nx.DiGraph()
#n, m = int(input()), int(input())
#for i in range(n):
# g.add_node(i)
#for _ in range(m):
# a, b, c = [ int(i) for i in input().split(' ') ]
# g.add_edge(a, b, capacity=c)
#max_flow = nx.algorithms.flow.maxflow.maximum_flow(g, 0, n-1)[0]
#print(max_flow)
g = nx.DiGraph()
n, m = 4, 5
for i in range(n):
g.add_node(i)
edge=["0 1 3","1 3 2","0 2 2","2 3 3","0 3 1"]
for x in edge:
a, b, c = [ int(i) for i in x.split(' ') ]
g.add_edge(a, b, capacity=c)
nx.draw(g)
max_flow = nx.algorithms.flow.maxflow.maximum_flow(g, 0, n-1)[0]
print(max_flow)

python图论包networks(最短路,最小生成树带包)的更多相关文章

  1. javac编译带包的java文件需要在命令处加参数

    不带包:javac aaa.java 带包:javac -d . aaa.java 带包就是 java文件中含有 package com.aaa;

  2. matlab学习——04图与网络(最短路,最小生成树,最大流)

    04图与网络 1.最短路 (1) 自己写的dijstra算法 format compact; clc,clear all a=zeros(6); a(1,2)=50;a(1,4)=40;a(1,5)= ...

  3. Python之旅.第四章.模块与包.总结(未完待遇)

    一.模块 模块: 一系列功能的集合体,在python中一个py文件就是一个模块,模块名就是py文件的文件名: 模块的好处: 1.减少重复的代码 2.拿来主义 定义模块: 就是创建一个py文件: 使用模 ...

  4. Python【第四课】 模块 and 包

    本篇内容 模块基础和导入(import,from...import...) 包常识和导入(import,from...import...) 函数式第一类对象 1.模块基础和导入 1.1 模块认识 什么 ...

  5. Python数据分析必备Anaconda安装、快捷键、包安装

    Python数据分析必备: 1.Anaconda操作 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便 ...

  6. Py修行路 python基础 (二十三)模块与包

    一.模块 1)定义: 模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2)为何要用模块: 退出python解释器然后重新进入,那之前定义的函数或者变量都将丢失,因 ...

  7. python's twenty ninthday for me 模块和包

    模块 和 脚本的 区别:   如果一个py文件被导入了,就是一个模块. 如果这个py文件被直接执行,这个被直接执行的文件就是一个脚本. 模块:1,没有具体的调用过程.2,能对外提供功能. pyc文件: ...

  8. Python及bs4、lxml、numpy模块包的安装

    http://blog.csdn.net/tiantiancsdn/article/details/51046490(转载) Python及bs4.lxml.numpy模块包的安装 Python 的安 ...

  9. Python标准库08 多线程与同步 (threading包)

    Python主要通过标准库中的threading包来实现多线程.在当今网络时代,每个服务器都会接收到大量的请求.服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率.Python是一种 ...

随机推荐

  1. PAT Advanced 1073 Scientific Notation (20 分)

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  2. Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制

    FileInputStream/FileOutputStream的笔记: /**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④c ...

  3. python获取本机的IP

    转载:https://www.cnblogs.com/whu-2017/p/8986842.html 方法一: 通常使用socket.gethostbyname()方法即可获取本机IP地址,但有时候获 ...

  4. elasticsearch查询:启动项目报错No property ... found for...Did you mean '...'?

    网上找的案例是: 实体类字段定义:private String sku_no;dao中接口名定义:Goods findBySkuNo(String skuNo);spring-data按照接口方法定义 ...

  5. 为什么size_t重要?(Why size_t matters)

    之前在<内存拷贝的注意事项>一文中提到过size_t,可能许多人对这个类型不太熟悉没有用过或者根本不敢去用,最近看到一篇文章对这个类型讲的比较详细,便翻译过来让不熟悉的同学可以知道它产生的 ...

  6. keil结合st-link使用SWO的两种调试方法笔记

    通过strongerHuang的教程,实现了SWO的两种调试方法, 1.在keil调试的过程中,使用debug printf viewer打印信息, 2.在STM32 ST-LINK Utility中 ...

  7. Java8-Concurrency

    import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public class Concurrency1 { pu ...

  8. spring boot项目接入xxl-job

    关于分布式任务调度平台XXL-JOB,作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里就不做过多的介绍了.按照文档搭建xxl-job,做此纪录. 1.源码下载地址 GitHub:https: ...

  9. java http 上传文件夹

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...

  10. vue3.x 错误记录

    1:css报错 This dependency was not found: * !!vue-style-loader!css-loader?{"minimize":false,& ...