VF2算法步骤举例
有人能用简单的话解释一下图同构的VF2算法的步骤吗?我正在学习这个算法,但如果没有有效的例子,它会很苛刻。有人能引导我正确的方向吗?谢谢。
Can someone explain the steps of the VF2 algorithm for graph isomorphism in simple words? I am learning this algorithm, but it is harsh without a working example. Can someone lead me the right direction? Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我将尝试向您快速解释我之前对这个问题的回答:
VF2 算法的任何工作示例吗?
我将使用与我之前的答案中的示例相同的示例:
上面的 2 个图是 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
这是函数 f 匹配图 G 和 H 的一个很好的例子:
希望通过这张图你能更好地理解这个算法。
I will try to give you a quick explaination of my previous answer to this question :
Any working example of VF2 algorithm?
I will use the same example as the one in my previous answer :
The 2 graphs above are V and V' .(V' is not in the drawing but it's the one on the right)
The VF2 algorithm is described in the graph.
Step by step
I want to know if V and V' are isomorphic.
I will use the following notations : XV is the node X in V
In the VF2 algorithm I will try to match each node in V with a node in V'.
step 1 :
I match empty V with empty V' : it always works
step 2 :
I can match 1V with 1V',2V' or 3V'
I match 1V with 1V' : it always works
step 3 :
I can match 2V with 2V' or 3V'
I match 2V with 2V' : it works because {1V 2V} and {1V' 2V} are isomorphic
step 4 :
I try to match 3V with a node in V' : I cannot! {it would be possible if there were an edge between node 3 and 2 in V', and no edge between 3 and 1)
So I go back to step 2
step 5:
I match 2V with 3V'
step 6:
same as step 4
I go back to step 2. there is no solution in step 2 , I go back to step 1
step 7:
I match 1V with 2V'
step 8:
I match 2V with 1V'
step 9 :
I match 3V with 3V'
it works I matched {1V 2V 3V} with { 2V' 1V' 3V'}
The graphs are isomorphic.
If I test all the solution and it never works the graph would not be isomorphic.
Hope this helps
About your question on "matching", have a look at the wikipedia article on graph isomorphism :
http://en.wikipedia.org/wiki/Graph_isomorphism
this is a good example of a function f that matches graph G and H :
Hope you can better understand this algorithm with this illustration.