Python图家庭作业帮助
如果节点之间的边是无向的,则图形称为无向图。如果边缘从一个顶点(节点)指向另一个顶点,则图形称为有向图。有向边被称为圆弧。虽然图可能看起来很理论,许多实际问题可以用图表示。
在我们从Python中实际绘制图形开始之前,在开始介绍处理图形的Python模块之前,我们要致力于图论的起源。
起源让我们及时回到了18世纪的Künigsberg。那时候,科尼斯堡是普鲁士的一个城市。普雷格里河穿过城镇,创造了两个岛屿。城市和岛屿都连接着七座桥梁,如图所示。这个城市的居民被移动了一个问题,如果可以到镇上散步,可以到镇上的每一个地区,穿过这座桥只一次?每个桥梁必须完全穿过,即不允许在桥梁上走一段距离,然后转过身来,然后从另一侧越过另一半。步行不需要在同一个地方开始和结束。 Leonhard Euler在1735年解决了这个问题,证明这是不可能的。他发现,在每个陆地区域内选择一条路线是无关紧要的,唯一重要的是桥梁交叉的顺序(或序列)。他提出了这个问题的抽象,消除了不必要的事实,把重点放在了陆地和连接它们的桥梁上。他创造了图论的基础。如果我们看到一个“土地面积”作为一个顶点,每个桥梁都是一个边缘,那么我们将问题“减少”为一个图形。
在我们开始对可能的Python图形表示进行处理之前,我们要介绍一些图形及其组件的一般定义。
数学和计算机科学中的“图”1由“节点”,也称为“顶点”组成。节点可以彼此连接,也可以不连接。在我们的图示中,它是图形的图示,节点“a”与节点“c”连接,但是“a”与“b”不相关。两个节点之间的连接线称为边。如果节点之间的边是无向的,则图形称为无向图。如果边缘从一个顶点(节点)指向另一个顶点,则图形称为有向图。有向边被称为圆弧。
虽然图可能看起来很理论,许多实际问题可以用图表示。他们常常用来模拟物理,生物学,心理学中的问题或情况,尤其是在计算机科学中。在计算机科学中,图形用于表示通信网络,数据组织,计算设备,计算流程,
在后一种情况下,用于表示数据组织,如操作系统的文件系统或通信网络。网站的链接结构也可以被视为图形,即有向图,因为链接是有向边或圆弧。
Python没有用于图形的内置数据类型或类,但是可以很容易地在Python中实现它们。一种数据类型是在Python中表示图形的理想选择,即字典。我们的图示可以通过以下方式实现:
graph = {“a”:[“c”],
“b”:[“c”,“e”],
“c”:[“a”,“b”,“d”,“e”],
“d”:[“c”],
“e”:[“c”,“b”],
“F” : []
}
上面的字典的键是我们图的节点。相应的值是具有通过边缘连接的节点的列表。没有更简单和更优雅的方式来表示图表。
边缘可以看作是具有节点作为元素的二元组,即(“a”,“b”)
用于生成所有边的列表的功能:
def generate_edges(graph):
edges = []
对于图中的节点:
对于图[node]中的邻居:
edges.append((node,neighbor))
返回边
print(generate_edges(graph))
此代码生成以下输出,如果与先前定义的图表字典组合:
$ python3 graph_simple.py
[(’a’,’c’),(’c’,’a’),(’c’,’b’),(’c’,’d’),(’c’,’e’ ,(’b’,’c’),(’b’,’e’),(’e’,’c’),(’e’,’b’), ]
我们可以看到,没有边缘包含节点“f”。 “f”是我们图的一个孤立节点。
以下Python函数计算给定图形的隔离节点:
def find_isolated_nodes(graph):
“”“返回孤立节点列表。”“”
孤立= []
对于图中的节点:
如果不是图[节点]:
隔离+ =节点
返回隔离
如果我们用图表来调用这个函数,那么将返回一个包含“f”的列表:[“f”]
我们现在想找到从一个节点到另一个节点的最短路径。在我们来Python代码解决这个问题之前,我们必须提出一些正式的定义。
相邻顶点:
当它们都入射到公共边缘时,两个顶点相邻。
无向图中的路径:
无向图中的路径是顶点P =(v1,v2,…,vn)∈Vx V x … x V的序列,使得vi对于1≤i而与v {i + 1}相邻<n。这样的路径P被称为从v1到vn的长度为n的路径。
简单路径:
没有重复顶点的路径称为简单路径。
例:
(a,c,e)是我们图中的简单路径,以及(a,c,e,b)。 (a,c,e,b,c,d)是路径,但不是简单路径,因为节点c出现两次。
图中的顶点v的程度是连接它的边的数量,循环计数了两次。顶点v的程度表示为deg(v)。由Δ(G)表示的曲线G的最大程度和由δ(G)表示的曲线图的最小度是其顶点的最大和最小程度。
在右侧的图中,顶点c的最大度数为5,最小度为0,即孤立的顶点f。
如果图中的所有度都相同,则该图是常规图。在常规图中,所有度数都是相同的,所以我们可以说出图的程度。
度数公式(Handshaking lemma):
Σv∈Vdeg(v)= 2 | E |
这意味着所有顶点的度数之和等于乘以2的边数。我们可以得出结论,奇数的顶点数必须是均匀的。这个说法被称为握手引语。 “握手引文”这个名字源自一个流行的数学问题:在任何一群人中,与群体中奇怪的其他人握手的人数甚少。
我们在家庭作业中为Python或Python Graph Homework提供专家帮助。我们的导师是为各级学生提供家庭作业帮助的专家。