离散数学-点割,边个集

本文介绍了图论中的关键概念——点割集和边割集,阐述了它们如何影响图的连通性。点割集是指删除后导致图不连通的顶点子集,而边割集则是删除后使得图分块的边子集。文中通过实例区分了点割集、边割集以及它们的特殊情况:割点和桥,并讨论了真子集在判断割集中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点割集与边割集

  关于图的连通性,有两个重要的概念,这就是点割集和边割集。

  对于连通图,常常由于删除了图中的一些顶点或边,而影响了图的连通性。

  定义7.15 设无向图,若存在顶点子集,使G删除(将中顶点及其关联的边都删除后)后,所得子图

### 的定义 在图论中,(Articulation Point)是指在一个无向连通图中,如果删除某个顶后,该图的连通分量数目增加,则这个顶被称为。换句话说,是一个关键节,它的移除会导致图的分裂[^2]。 ### 割集的定义 割集(Vertex Cut Set)是指一个顶合,如果从图中移除这个合中的所有顶及其相关的之后,图的连通性被破坏,即图变得不连通或者分解成多个部分。最小的割集称为基本割集,它不能通过减少任何成员来保持其破坏图连通性的能力[^1]。 ### 割集的判定方 为了识别一个图中的割集,通常采用深度优先搜索(DFS)算。具体步骤如下: 1. **初始化**:对图进行遍历,并为每个顶分配发现时间最低访问时间。 2. **递归探索**:使用DFS递归地探索每个未访问的顶。 3. **更新最低访问时间**:对于当前顶的每一个邻接顶,如果该邻接顶已经被访问过,则尝试用它的发现时间更新当前顶的最低访问时间。 4. **检查条件**: - 根节当且仅当它有两个或更多子节- 非根节u是当且仅当存在至少一个子节v,使得v及其后代没有指向u祖先的回(即low[v] >= disc[u])。 下面是一个Python示例代码片段,用于查图中的: ```python from collections import defaultdict class Graph: def __init__(self, vertices): self.V = vertices self.graph = defaultdict(list) self.Time = 0 def addEdge(self, u, v): self.graph[u].append(v) self.graph[v].append(u) def APUtil(self, u, visited, ap, parent, low, disc): children = 0 visited[u] = True disc[u] = self.Time low[u] = self.Time self.Time += 1 for v in self.graph[u]: if not visited[v]: parent[v] = u children += 1 self.APUtil(v, visited, ap, parent, low, disc) low[u] = min(low[u], low[v]) if parent[u] == -1 and children > 1: ap[u] = True if parent[u] != -1 and low[v] >= disc[u]: ap[u] = True elif v != parent[u]: low[u] = min(low[u], disc[v]) def articulationPoints(self): visited = [False] * (self.V) disc = [float("Inf")] * (self.V) low = [float("Inf")] * (self.V) parent = [-1] * (self.V) ap = [False] * (self.V) for i in range(self.V): if not visited[i]: self.APUtil(i, visited, ap, parent, low, disc) for index, value in enumerate(ap): if value: print("Articulation point:", index) # 示例用 g = Graph(7) g.addEdge(0, 1) g.addEdge(0, 2) g.addEdge(1, 2) g.addEdge(1, 3) g.addEdge(3, 4) g.addEdge(4, 5) g.addEdge(5, 3) g.articulationPoints() ``` 上述代码首先定义了一个`Graph`类,其中包含了寻的方`articulationPoints`以及辅助函数`APUtil`。此方利用了DFS技术来确定哪些顶
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值