找到一个共同的子图

时间:2012-12-10 17:57:53

标签: algorithm math graph

我试图找到给出两个图的共同子图。 如果我有2个图形G1 =(v1,e1)和G2 =(v2,e2)我必须找到公共子图G =(V,E),如G1和G2的任何其他公共子图形必须不包含更多然后E arris的红衣主教。

鉴于图1是

A - B

A - C

B - D

D - E

图2是

A - B

A - E

B - D

比算法应该返回

A - B

B - D

你能帮我一个算法,告诉我要参加哪些步骤? 谢谢!

1 个答案:

答案 0 :(得分:3)

您没有正式描述您的问题,但是从您的示例 1 ,您似乎正在寻找 edge 的最大公共子集。

要实现它 - 您只需要E1和E2的intersection

<强>证明:

( - &gt;)假设(a,b)位于E1 [intersection] E2。根据集合交集的定义 - 它对E1和E2都是共同的 - 因此对G1和G2也是如此。

(&lt; - )假设(a,b)与G1和G2相同 - 然后(a,b)位于E1(a,b)位于E2 {1}} - 根据交集的定义,(a,b)位于E1 [intersection] E2


(1)我得出结论,因为(A,C)不是“共同的”,而(A,B)在子图中 - 这意味着这不是限制找到可以创建所需的顶点子集子图(因为那时A应该从结果中排除。)