🍠Python竞技比赛流体动力学艺术品和药物质量图学习

关键词

Python | 图论 | 表征 | 树 | 算法 | 代数 | 数学 | 顶点 | 边 | 深度 | 高度 | 双向图 | 二分图 | 遍历 | 权重 | 匹配 | 路径 | 有序图 | 无序图 | 回溯 | 枚举 | 二叉树 | 有序树 | 无序树 | 最短路径 | 同构 | 基数 | 自下而上 | 分层布局 | 自顶向下 | 艺术品 | 竞技 | 流体动力学 | 药物 | 质量

🏈指点迷津 | Brief

🎯要点

  1. 🎯邻接图表征类:🖊边生成图算法 | 🖊生成顶点标记图算法 | 🖊图深度优先遍历算法 | 🖊图深度优先生成树的算法 | 🖊双向图最左边深度优先遍历的算法 | 🖊图广度优先遍历算法 | 🖊图广度优先生成树的算法 | 🖊图广度优先生成树最短路径算法 | 🖊二分图最大基数匹配算法 | 🖊二分图匹配增广路径算法 | 🖊二分图最大权重匹配算法 | 🖊二分图两个顶点匹配增广路径算法 | 🖊有序图同构算法 | 🖊枚举图团回溯算法 | 🖊枚举图最大团回溯算法 | 🖊图的最大团分支定界算法。

  2. 🎯树结构表征类:🖊边生成树算法 | 🖊生成节点标记完全二叉树算法 | 🖊有序树距离简单算法 | 🖊有序树距离回溯算法 | 🖊有序树距离分支定界算法 | 🖊有序树距离分而治之算法 | 🖊有序树距离自顶向下、自底向上动态规划算法 | 🖊树前序遍历递归和迭代算法 | 🖊节点树前序、后序遍历迭代算法 | 🖊节点树后序遍历递归算法 | 🖊自上而下遍历树迭代算法 | 🖊自上而下遍历节点树迭代算 | 🖊自下而上遍历树迭代算法 | 🖊自下而上遍历节点树迭代算法 | 🖊计算树节点深度、高度和分层布局算法 | 🖊测试有序、无序树同构算法 | 🖊有序树、无序树自顶向下子树同构算法 | 🖊枚举有序树、无序树自下而上子树同构算法 | 🖊有序树、无序树自顶向下最大公共子树同构算法 | 🖊有序树、无序树自底向上最大公共子树同构算法。

  3. 🎯代数计算图算法 | 🎯图学习博物馆艺术品 | 🎯竞技比赛流体动力学策略图学习 | 🎯图学习药物精度控制

🍇Python图分析

在图论中,图具有连接到两个元素 (E) 的有限顶点集 (V)。 连接两个目的地或节点的每个顶点 (v) 称为链接或边。 考虑下面的自行车道图:集合 {K,L}、{F,G}、{J,H}、{H,L}、{A,B} 和 {C,E} 是边的示例。

每个节点的边总数就是该节点的度。在上图中,M 的阶数为 2({M,H} 和 {M,L}),而 B 的阶数为 1({B,A})。度正式描述为:

di(g)=j=1ngij\begin{aligned} d_i(g) & =\sum_{j=1}^n g_{i j} \end{aligned}

通过使用多个边的连接称为路径。 {F, H, M, L, H, J, G, I} 是路径的示例。 简单路径是指不重复节点的路径——正式称为欧拉路径。 {I, G, J, H, F} 是简单路径的示例。 最短的简单路径称为测地线。 I 和 J 之间的测地线是 {I, G, J} 或 {I, K, J}。 最后,循环是指路径的起点和终点相同(例如{H,M,L,H})。 在一些笔记本中,循环被正式称为欧拉循环。

并非图系统中的所有网络都是互连的。断开是在分量形成时发生的。如下图所示,只有当每个节点都有到其他节点的路径时,分量才会形成。

在 Python 中,networkx 通常用于应用图论,也称为网络分析。 该包具有快速总结图形特征的有用功能。

首先,下面的代码创建一个图空对象 P。接下来的步骤添加节点并描述边。

 P = nx.Graph() 
 ​
 P.add_nodes_from(['A','B','C','D', 'E'])
 P.add_edges_from ([('B','C'), ('A','C'), ('B','D'), ('D','A'), ('D','E'), ('B','E')])
 print(P.nodes())
 print(P.edges())

最后,nx.draw 用于可视化网络。

 %matplotlib inline
 import matplotlib.pyplot as plt
 nx.draw(P, with_labels = True)

下面的练习一将使用航班的数据。数据集包括出发地和目的地机场以及描述航班的属性,包括飞行时间和延误(天气、安全或航空公司相关)。

 import pandas as pd
 import numpy as np
 ​
 path = "INSERT YOUR PATH"
 file = pd.read_csv(path + "flights.csv", low_memory = False)
 file.shape
 #review data
 file.head()

由于我们已经有了出发地和目的地数据,字段 ORIGIN_AIRPORT 和 DESTINATION_AIRPORT 将用作节点和边的源字段 - 无需像我们在第一个练习中那样创建节点或边。 一旦定义了节点,<object>.edges() 将提供它们之间的所有成对关系。 最后,nx.draw 将帮助生成一个到边缘的图形。

 import networkx as nx
 FG = nx.from_pandas_edgelist(file2, source='ORIGIN_AIRPORT', target='DESTINATION_AIRPORT', edge_attr=True)
 FG.nodes()
 nx.draw(FG, with_labels = True)

示例2:

 ​
 NG.add_nodes_from(['A','B','C','D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']) # Add a list of nodes by passing a  
 NG.add_edges_from([('A', 'B'),('C','E'),('D','E'), ('F','G'), ('F','H'), ('G', 'J'), ('H', 'J'), ('H', 'M'), ('H','L'), ('M', 'L'), ('J', 'K'), ('J', 'G'), ('K', 'I'), ('I', 'G'), ('L', 'K')])
 s
 NG = nx.from_pandas_edgelist(ntwrk, source='source', target='target', edge_attr=True)
 NG.nodes()
 ​
 NG.edges()
 ​
 nx.draw(NG, with_labels = True)
 ​
 djk_path = nx.dijkstra_path(NG, source='L', target='F')
 djk_path

Last updated