子图同构问题
子图同构(Subgraph Isomorphism)是指在图论中,两个图之间是否存在一种关系,使得其中一个图的顶点集合和边集合可以通过对应的方式映射到另一个图的顶点集合和边集合上,且保持原来的边和顶点的关系不变。
具体来说,给定两个图G=(VG,EG)G=(V_G,E_G)G=(VG,EG)和H=(VH,EH)H=(V_H,E_H)H=(VH,EH),若存在一种从GGG到HHH的映射ϕ:VG→VH\phi:V_G\rightarrow V_Hϕ:VG→VH,满足:
对于VGV_GVG中的任意两个不同的顶点viv_ivi和vjv_jvj,如果在EGE_GEG中有边连接它们,那么在EHE_HEH中ϕ(vi)\phi(v_i)ϕ(vi)和ϕ(vj)\phi(v_j)ϕ(vj)也必须有一条边连接;
对于VHV_HVH中的任意两个不同的顶点vi′v'_ivi′和vj′v'_jvj′,如果在EHE_HEH中有边连接它们,那么在EGE_GEG中存在viv_ivi和vjv_jvj,满足ϕ(vi)=vi′\phi(v_i)=v'_iϕ(vi)=vi′,ϕ(vj)=vj′\phi(v_j)=v'_jϕ(vj)=vj′,且在EGE_GEG中也有边连接viv_ivi和vjv_jvj。
如果这样的映射ϕ\phiϕ存在,则称图GGG是图HHH的子图,并称ϕ\phiϕ为从GGG到HHH的子图同构映射。
这左图与右图子图同构
存在如下映射关系:
用MA,MBMA, M BMA,MB分别表示左图A,和右图B的对应的邻接矩阵,其中MA[i][j]=1MA[i][j] = 1MA[i][j]=1表示顶点iii与jjj存在一条边, MA[i][j]=0MA[i][j] = 0MA[i][j]=0表示无边
M′M'M′表示映射从MAM AMA到MBM BMB的映射矩阵,M[i][j]=1M [i][j] = 1M[i][j]=1表示A中第iii个顶点vivivi对应到MBM BMB中的第jjj个顶点,否则为000表示没有对应
上图是一个图同构的例子,顶点之间并没有颜色区分,为了更好地看出顶点间的映射关系,加上了颜色。
子图同构在图形识别、化学结构分析、计算机视觉、网络安全等领域都有广泛应用。但是在实际问题中,子图同构问题往往是 NP 难问题,因此需要采用各种方法进行求解。
单射函数和双射函数
单射函数和双射函数都是函数的特殊类型。
单射函数(injective function),也称为一对一函数,是指一个函数f:A→B,其中任意一个B中的元素b,都最多只对应一个A中的元素a,即对于任意的b∈B,都有至多一个a∈A,使得f(a)=b。
双射函数(bijective function),也称为一一对应函数,是指一个函数f:A→B,其中A和B是两个集合,满足下面两个条件:
对于任意的a∈Aa∈Aa∈A,都存在一个b∈Bb∈Bb∈B,使得f(a)=bf(a)=bf(a)=b。
对于任意的b∈Bb∈Bb∈B,都存在一个a∈Aa∈Aa∈A,使得f(a)=bf(a)=bf(a)=b。
换言之,双射函数是一种既是单射函数又是满射函数的函数。
区别在于,单射函数保证了每个B中的元素最多只对应一个A中的元素,但不保证每个B中的元素都有对应的A中的元素;而双射函数则保证了每个B中的元素都有对应的A中的元素,并且每个B中的元素最多只对应一个A中的元素。
同构(isomorphic)和同态(homomorphism)
简单来讲,对于两个不带标签的无向图,假设G1=(E1,V1),G2=(E2,V2)G1=(E1,V1),G2=(E2,V2)G1=(E1,V1),G2=(E2,V2),如果存在一种映射关系MMM ,使得M(v1)∈G2,(M(v1),M(v1′))∈G2M(v1)∈G2,(M(v1),M(v1′))∈G2M(v1)∈G2,(M(v1),M(v1′))∈G2,对于每个v1,v1′∈G1v1,v1′∈G1v1,v1′∈G1,那么图同态;若MMM是一个单射函数,则G1,G2G1,G2G1,G2同构。该定义可以扩充到其他更复杂类型的图中。
因此,同构必定是同态的。
对于上面的图,是一个同态图但是不是同构图。
因为存在这样一个映射函数f满足:f(a)=x,f(b)=y,f(c)=z,f(d)=x,f(e)=yf(a)=x,f(b)=y,f(c)=z,f(d)=x,f(e)= yf(a)=x,f(b)=y,f(c)=z,f(d)=x,f(e)=y。显然映射函数f不是单射函数,所以这两个图同态但不同构。