📅  最后修改于: 2023-12-03 15:39:57.555000             🧑  作者: Mango
欢迎来到“数学 | 图论基础 - 第 2 组”!在这个小组中,我们将学习基本的图论概念、算法和应用。这里是一些内容示例:
图由节点和边组成,我们可以用邻接矩阵或邻接表来表示图。节点之间的边可以是有向的或无向的,边上可以有权重。我们将讨论如何创建、遍历和搜索图。
遍历图是指按照一定的方式访问图中的所有节点。常用的两种遍历方式是深度优先搜索和广度优先搜索。我们将讨论它们的差异、实现和应用。
给定有权重的图和两个节点,求它们之间的最短路径。我们将讨论 Dijkstra 算法和 Bellman-Ford 算法,它们分别适用于无负权边和带负权边的情况。
给定一个连通的、无向的带权图,求一个生成树,使得所有边权之和最小。我们将讨论 Kruskal 算法和 Prim 算法,它们都可以达到最优解。
以上只是一小部分内容示例。我们还将涉及诸如图的连通性、拓扑排序、欧拉回路、哈密顿回路等问题。我们会使用 Python,但内容基本上是独立于编程语言的。如果你对图论感兴趣,欢迎加入我们的学习小组!
"""
这是一个简单的示例,展示如何用邻接矩阵表示图。
"""
INF = float("inf") # “无穷”
n = 5 # 节点数
# 假设这个图是无向的,边上有权重。
edges = [
[0, 2, INF, 1, 4],
[2, 0, 3, 2, INF],
[INF, 3, 0, INF, INF],
[1, 2, INF, 0, 2],
[4, INF, INF, 2, 0],
]
# 打印这个邻接矩阵。
for row in edges:
print(row)
在上面的示例中,我们用了邻接矩阵来表示一个五个节点的图,如下图所示:
.----2----.
/ \ / \
0 1---3---4
其中每个节点用一个数字表示,边上的数字表示该边的权重。因为这是一个无向图,所以邻接矩阵是对称的。INF 表示“无穷”(即没有边相连)。