📜  图同态

📅  最后修改于: 2021-10-25 03:06:46             🧑  作者: Mango

G是一组顶点和一组连接这些顶点的边的集合。它由两组组成:

  • 顶点集: V = {v1, v2, …, vn}
  • 边集: E = {e1, e2, …, en}

图 G 表示为 G = (V, E)。

图的同态:图同态是两个图之间的映射,尊重它们的结构,即将一个图的相邻顶点映射到另一个图的相邻顶点。从图G到图H 的同态是从V GV H 的映射 这需要边到边。

定义:从图G = (V, E)到图G’ = (V’, E’)的图同态F写为:

上述定义扩展到有向图。然后,对于同态 f: G –> G’ 是; {f(u), f(v)} 是G’的弧,仅当(u, v)是 G的弧。如果存在同态; f: G –> G’ ,则写成G–>G’ G 被称为G’同态。

同构:如果同态 f: G –> G’ 是一个双射(一一映射),其逆也是图同态,则 f 是图同构。

示例 1:下面是 2 个图 G = (V, E),其中 V = {a, b, c, d, e} 和 E = {(a, b), (b, c), (c, d) , (d, e), (e, a)} 和 G’ = (V’, E’) 其中 V’ = {x, y, z} 和 E’ = {(x, y), (y, z ), (z, x)}。

存在一个映射 f: G –> G’使得 {u, v} ∈ E ⇒ {f(u), f(v)} ∈ E’。

解决方案

假设 f(a) = x, f(b) = y, f(c) = z, f(d) = x 和 f(e) = z。

  • 如果 (a, b) 是 G 中的一条边,那么 (f(a), f(b)) 一定是 E’ 中的一条边。
f(a) = x and f(b) = y  ⇒  (f(a), f(b)) = (x, y) ∈ E'
  • 如果 (b, c) 是 G 中的一条边,那么 (f(b), f(c)) 一定是 E’ 中的一条边。
f(b) = y and f(c) = z  ⇒  (f(b), f(c)) = (y, z) ∈ E'
  • 如果 (c, d) 是 G 中的一条边,那么 (f(c), f(d)) 一定是 E’ 中的一条边。
f(c) = z and f(d) = x  ⇒  (f(c), f(d)) = (z, x) ∈ E'
  • 如果 (d, e) 是 G 中的一条边,那么 (f(d), f(e)) 必须是 E’ 中的一条边
f(d) = x and f(e) = z  ⇒  (f(d), f(e)) = (x, z) ∈ E'
  • 如果 (e, a) 是 G 中的一条边,那么 (f(e), f(a)) 必须是 E’ 中的一条边
f(e) = z and f(a) = x  ⇒  (f(c), f(d)) = (z, x) ∈ E'

因此,可以看出∀{u, v} ∈ E ⇒ ∃{f(u), f(v)} ∈ E’。所以 f 是同态。

示例 2:下面是 2 个图 G = (V, E),其中 V = {a, b, c, d, e, h} 和 E = {(a, b), (b, c), (c, d), (d, e), (e, h), (f, a) } 和 G’ = (V’, E’) 且 V’ = {1, 2, 3, 4} 和
E’ = { (1, 2), (2, 3), (3, 4), (4, 1), (4, 2)}。

存在一个映射: G–> G’ 使得 {u, v} ∈ E ⇒ {f(u), f(v)} ∈ E’。

解决方案

假设 f(a) = 1, f(b) = 4, f(c) = 2, f(d) = 4, f(e) = 2 and f(h) = 4。

  • 如果 (a, b) 是 G 中的一条边,那么 (f(a), f(b)) 一定是 E’ 中的一条边。
f(a) = 1 and f(b) = 4  ⇒  (f(a), f(b)) = (1, 4) ∈ E'
  • 如果 (b, c) 是 G 中的一条边,那么 (f(b), f(c)) 一定是 E’ 中的一条边。
f(b) = 4 and f(c) = 2  ⇒  (f(b), f(c)) = (4, 2) ∈ E'
  • 如果 (c, d) 是 G 中的一条边,那么 (f(c), f(d)) 一定是 E’ 中的一条边。
f(c) = 2 and f(d) = 4  ⇒  (f(c), f(d)) = (2, 4) ∈ E'. 
Note- (2, 4) is the same as (4, 2).
  • 如果 (d, e) 是 G 中的一条边,那么 (f(d), f(e)) 必定是 E’ 中的一条边。
f(d) = 4 and f(e) = 2  ⇒  (f(d), f(e)) = (4, 2) ∈ E'
  • 如果 (e, h) 是 G 中的一条边,那么 (f(e), f(h)) 必须是 E’ 中的一条边。
f(e) = 2 and f(a) = 4 ⇒  (f(c), f(d)) = (2, 4) ∈ E'
  • 如果 (h, a) 是 G 中的一条边,那么 (f(h), f(a)) 必定是 E’ 中的一条边。
f(h) = 4 and f(a) = 1 ⇒  (f(c), f(d)) = (4, 1) ∈ E'

因此,可以看出∀{u, v} ∈ E ⇒ ∃{f(u), f(v)} ∈ E’。所以 f 是同态。

示例 3:下面是 2 个图 G = (V, E),其中 V = {a, b, c, d, e} 和 E = {(a, b), (b, c), (d, e) , (e, h)} 和 G’ = (V’, E’) 其中 V’ = {1, 2} 和 E’ = { (1, 2)}。

解决方案

假设 f(a) = 1, f(b) = 2, f(c) = 1, f(d) = 2, f(e) = 1

  • 如果 (a, b) 是 G 中的一条边,那么 (f(a), f(b)) 一定是 E’ 中的一条边。
f(a) = 1 and f(b) = 2 ⇒  (f(a), f(b)) = (1, 2) ∈ E'
  • 如果 (b, c) 是 G 中的一条边,那么 (f(b), f(c)) 一定是 E’ 中的一条边。
f(b) = 2 and f(c) = 1  ⇒  (f(b), f(c)) = (2, 1) ∈ E'
  • 如果 (d, e) 是 G 中的一条边,那么 (f(d), f(e)) 必定是 E’ 中的一条边。
f(d) = 2 and f(e) = 1  ⇒  (f(d), f(e)) = (2, 1) ∈ E'

在这里,可以看出(b, e)不是G中的一条边,但是(fb), f(e) ) = (2, 1)是图G’中的一条边。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。