怎么理解图的同构?怎么判断两个图是否同构?

我们知道,边数相同,图的阶数相同,度序列相同的两个图,不一定同构。那图的同构的定义到底什么,怎么理解图的同构 和同构呢
关注者
60
被浏览
227,510
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

跟边数,阶数,度序列都没啥关系。

如果图 G_{1}=(V_1,E_1) 与图 G_2=(V_2,E_2) 同构,那么存在一个从集合V_1 到集合V_2双射 \pi 满足下述条件:

1,如果(u,v)\in E_1 ,那么 (\pi(v),\pi(u))\in E_2

2,如果 (\pi(v),\pi(u))\in E_2 ,那么 (u,v)\in E_1 .

(其实条件1,2可以合并成一个条件,即 (u,v)\in E_1 \Leftrightarrow (\pi(v),\pi(u))\in E_2 )

同构想讲的是一个什么事呢?通俗的说,就是在两个没啥直接关系的图中去找到他们结构上的相同点。这个结构指的是什么呢?就是关系(Relation),到了图中,两个点之间有关系,说得就是它们之间有一条边相连(假设是简单图)。

那么,就很好理解什么叫做图同构了,图 G_1 的全部顶点被映射到图 G_2 后,这些顶点可能标号变了,但是如果在“旧”的图中有的关系,在“新”图中依然保留,只不过是“位置”变了。你可以想象这样一个场景:我们把人与人之间的关系画成一张图,如果两个人是朋友,就在地图上给这两个人的家之间连一条线,你可能会改名字,可能搬家去任何一个地方,但是都不影响你与朋友之间的交情,你们之间依然会有一条线连接。你搬家之后画的图与旧图就是同构的。

另一个对于理解同构可能有帮助的是对双射的理解。

有限集合到自身的双射,又被称作Permutation,一般被翻译成置换,排列。而图论一般考虑的顶点对象都是有限集合中的元素,所以可以思考一下为什么同构中的对应关系会用Permutation这个词来描述,同构映射又为什么可以看作是到自身的映射。有的文献里直接把这样的过程叫成图顶点的重新标号(Relabel)。事实上,对于一个图,其上任何一个给定的置换(双射),都一定能构造出一个图与当前图同构。构造方法如下:

对于图 G=(V,E), \piG 上任意的一个置换,构造集合 F

F=\left\{(\pi(u),\pi(v))|(u,v)\in E \right\}

H=(V,F),GH 同构.

简单总结一下理解图同构的两个“侧面”:

1,一个图我们可以把它想象成一些小球被绳子绑在了一起,小球就是顶点,绳子就是边。现在随意移动小球,小球可以去任何地方,绳子也会随着小球到处移动。在移动过程中每一个时刻所形成的图都是同构的。

2,假设图中每一个顶点都有一个名字,比如:1, 2, 3, ... ,n。现在擦去这些顶点上的名字。擦完后随机给这些顶点写上新的名字,可以是任何的名字,相当于给它们换了一个“身份”。前后的两个图是同构的。


下面回答第二个问题,怎么判定两个图同构?

要证明两个图同构(或不同构),就必须找到它们之间的一个同构双射(或证明这样的双射不存在)。任意图的同构判定是一个十分困难的问题(不过也没有被证明为NPC,当然也没有被证明为是P类或者BPP类),有效算法并没有被找到(不考虑一些平凡的情况,比如:恒等变换的结果一定同构;两个图顶点个数不相等,肯定不会是同构的)。在图同构问题上,有一个公开的猜想:

Ulam猜想(Ulam,1929)设图 Gn 个顶点 u_1,u_2,...,u_n,Hn 个顶点 v_1,v_2,...,v_n, 如果对每个 i(1\leq i\leq n), 均满足

G-u_iH-v_i 同构

则有 GH 同构。