跳到主要内容

京都大学 情報学研究科 数理工学専攻 2018年8月実施 アルゴリズム基礎

Author​

祭音Myyura

Description​

大学公表の原題 Let G=(V,E)G=(V,E) be a connected simple undirected graph with a set VV of n≥2n\ge 2 vertices and a set EE of edges, let T=(V,F)T=(V,F) be a spanning tree of GG rooted at a vertex s∈Vs\in V, and let ℓ:V→{1,2,…,n}\ell:V\to \{1,2,\ldots,n\} be a numbering on VV, where we assume that the following conditions (a) and (b) hold.

(a) For each edge uv∈Euv\in E, vertex uu is either an ancestor or a descendant of vv in TT.

(b) For each vertex v∈V∖{s}v\in V\setminus\{s\} and the parent uu of vv in TT, ℓ(u)<ℓ(v)\ell(u)<\ell(v).

Let LL denote the set of leaves in TT. For each vertex v∈Vv\in V, let N(v)N(v) denote the set of neighbors of vv in GG, and let D(v)D(v) denote the set consisting of vertex vv and the descendants of vv in TT. Define a function

lowpt⁡:V∖(L∪{s})→{1,2,…,n}\operatorname{lowpt}: V\setminus (L\cup\{s\}) \to \{1,2,\ldots,n\}

such that

lowpt⁡(v)=min⁡{ℓ(y)∣y∈⋃x∈D(v)N(x)}, v∈V∖(L∪{s}).\operatorname{lowpt}(v) = \min\left\{ \ell(y)\mid y\in \bigcup_{x\in D(v)}N(x) \right\}, \ v\in V\setminus (L\cup\{s\}).

Answer the following questions.

(i) Prove that no leaf u∈Lu\in L is a cut-vertex in GG.

(ii) Prove that a necessary and sufficient condition for the root ss to be a cut-vertex in GG is that ss has at least two children in TT.

(iii) Prove that a necessary and sufficient condition for a vertex u∈V∖(L∪{s})u\in V\setminus(L\cup\{s\}) to be a cut-vertex in GG is that uu has a child vv in TT such that

lowpt⁡(v)≥ℓ(u).\operatorname{lowpt}(v)\ge \ell(u).

题目描述​

设 G=(V,E)G=(V,E) 是含 n≥2n\ge2 个顶点的连通简单无向图,T=(V,F)T=(V,F) 是以 s∈Vs\in V 为根的生成树,ℓ:V→{1,2,…,n}\ell:V\to\{1,2,\ldots,n\} 是顶点编号,并满足:

  1. 对每条边 uv∈Euv\in E,uu 在 TT 中是 vv 的祖先或后代;
  2. 对每个非根顶点 vv 及其父顶点 uu,有 ℓ(u)<ℓ(v)\ell(u)<\ell(v)。

令 LL 为 TT 的叶集,N(v)N(v) 为 vv 在 GG 中的邻接点集合,D(v)D(v) 为 vv 及其在 TT 中所有后代组成的集合。对每个非根顶点 v∈V∖(L∪{s})v\in V\setminus(L\cup\{s\}) 定义

lowpt⁡(v)=min⁡{ℓ(y) |y∈⋃x∈D(v)N(x)}.\operatorname{lowpt}(v)= \min\left\{\ell(y)\ \middle| y\in\bigcup_{x\in D(v)}N(x)\right\}.

回答:

  1. 证明任一叶顶点 u∈Lu\in L 都不是 GG 的割点。
  2. 证明根 ss 是割点的充要条件是 ss 在 TT 中至少有两个子顶点。
  3. 证明非叶、非根顶点 u∈V∖(L∪{s})u\in V\setminus(L\cup\{s\}) 是割点的充要条件是:uu 在 TT 中存在子顶点 vv 满足 lowpt⁡(v)≥ℓ(u)\operatorname{lowpt}(v)\ge\ell(u)。

Kai​

以下では lowpt を同じ式で全ての非根頂点に定義する。葉 vv でも親が隣接するので最小値は存在します。

(1)​

Let u∈Lu \in L, i.e., uu is a leaf of TT.

Sinc TT is a spanning tree of GG, TT is connected.

After removing the vertex uu from TT, the remaining graph T−uT - u is still connected and spans all the vertices V∖{u}V \setminus \{u\}.

Note that T−uT - u is a subgraph of G−uG - u, hence G−uG - u is connected, which implies that uu is not a cut-vertex.

(2)​

(Necessity) Assume that ss is a cut-vertex.

If ss has only one child, then T−sT-s is precisely the subtree rooted at that child and is connected. Hence G−sG-s is connected.

This contradicts the assumption that ss is a cut-vertex.

(Sufficiency) Assume that ss has at least two children in TT. Let two of them be v1v_1 and v2v_2.

Consider the two subtrees D(v1)D(v_1) and D(v2)D(v_2). Since v1v_1 and v2v_2 are different children of the root ss, the vertices in D(v1)D(v_1) and D(v2)D(v_2) are not in an ancestor-descendant relationship with each other.

By condition (a), there cannot be any edge between a vertex in D(v1)D(v_1) and a vertex in D(v2)D(v_2).

After deleting ss, the two subtrees D(v1)D(v_1) and D(v2)D(v_2) cannot be connected to each other. Hence G−sG - s is disconnected, which implies that ss is a cut-vertex.

(3)​

(Necessity) Assume that uu is a cut-vertex.

We prove that there must exist a child vv of uu such that lowpt(v)≥ℓ(u)\text{lowpt}(v) \ge \ell(u) by contradiction.

Suppose that every child vv of uu satisfies lowpt(v)<ℓ(u)\text{lowpt}(v) < \ell(u). Then for each child vv of uu, there exist some vertex x∈D(v)x \in D(v) and some neighbor y∈N(x)y \in N(x) such that ℓ(y)<ℓ(u)\ell(y) < \ell(u).

Since x∈D(v)x \in D(v), the vertex xx is a descendant of uu. By condition (b), every descendant of uu has numbering greater than ℓ(u)\ell(u).

Therefore, the vertex yy of ℓ(y)<ℓ(u)\ell(y) < \ell(u) is not in D(v)D(v).

By condition (a), since xx is a descendant of uu, and yy has numbering smaller than ℓ(u)\ell(u), the vertex yy must be a proper ancestor of uu.

Thus every child subtree D(v)D(v) of uu has an edge to some proper ancestor of uu, i.e., after deleting uu, every child subtree D(v)D(v) can still connect to the part above uu through an edge to a proper ancestor of uu.

Therefore, G−uG - u remains connected, which contradicts the assumption that uu is a cut-vertex.

(Sufficiency) Assume that uu has a child vv satisfying lowpt(v)≥ℓ(u)\text{lowpt}(v) \ge \ell(u).

Note that vv is a neighbor of uu, i.e., uv∈Euv \in E, when computing lowpt(v)\text{lowpt}(v), the vertex uu can be reached from vv by one graph edge.

Hence lowpt(v)≤ℓ(u)\text{lowpt}(v) \le \ell(u), together with the assumption we have

lowpt(v)=ℓ(u)\text{lowpt}(v) = \ell(u)

This means that the subtree D(v)D(v) cannot reach any proper ancestor of uu through a graph edge. The smallest numbered vertex reachable from D(v)D(v) is exactly uu.

Equivalently, D(v)D(v) has no edge to any proper ancestor of uu.

After deleting uu, the subtree D(v)D(v) is disconnected from the part of the graph above uu. Therefore G−uG - u is disconnected.

Hence uu is a cut-vertex.