有人能用简单的单词解释VF2算法的图形同构的步骤吗?我正在学习这个算法,但没有一个有效的例子就很苛刻。有人能引导我正确的方向吗?谢谢。
答案 0 :(得分:15)
我将尽力向您简要解释我之前对此问题的回答:
Any working example of VF2 algorithm?
我将使用与之前答案中相同的示例:
上面的2个图是V和V'。(图中没有V',但右边是V)
图中描述了VF2算法。
我想知道V和V'是否同构。
我将使用以下符号:XV是V中的节点X
在VF2算法中,我将尝试将V中的每个节点与V'中的节点进行匹配。
第1步:
我将空V与空V'匹配:它始终有效
第2步: 我可以将1V与1V',2V'或3V'匹配
我将1V与1V'匹配:它始终有效
第3步:
我可以将2V与2V'或3V'匹配
我将2V与2V'匹配:它起作用,因为{1V 2V}和{1V'2V}是同构的
第4步:
我尝试将3V与V'中的节点匹配:我不能! {如果在V'中节点3和2之间存在边缘,并且在3和1之间没有边缘则可能存在)
所以我回到第2步
第5步:
我将2V与3V'匹配
第6步:
与第4步相同
我回到第2步。步骤2中没有解决方案,我回到第1步
第7步:
我将1V与2V'匹配
第8步:
我将2V与1V'匹配
第9步:
我将3V与3V'匹配
它有效我将{1V 2V 3V}与{2V'1V'3V'}匹配
图表是同构的。
如果我测试所有解决方案并且它永远不会工作,那么图形将不会是同构的。
希望这有帮助
关于“匹配”的问题,请看维基百科关于图同构的文章:
http://en.wikipedia.org/wiki/Graph_isomorphism
这是匹配图G和H的函数f的一个很好的例子:
希望你能用这个例子更好地理解这个算法。
答案 1 :(得分:0)
提供了VF算法的高级概述:
PROCEDURE Match(s) INPUT: an intermediate state s; the initial state s0 has M(s0)= OUTPUT: the mappings between the two graphs IF M(s) covers all the nodes of G2 THEN OUTPUT M(s) ELSE Compute the set P(s) of the pairs candidate for inclusion in M(s) FOREACH (n, m) P(s) IF F(s, n, m) THEN Compute the state s´ obtained by adding (n, m) to M(s) CALL Match(s ) END IF END FOREACH Restore data structures END IF END PROCEDURE