Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VF2 algorithm steps with example

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.

like image 327
Abdul Samad Avatar asked Nov 18 '11 00:11

Abdul Samad


2 Answers

high-level overview of the VF algorithm is presented:

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
like image 173
Adam Avatar answered Oct 17 '22 04:10

Adam


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 :

enter image description here

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 : enter image description here

Hope you can better understand this algorithm with this illustration.

like image 34
Ricky Bobby Avatar answered Oct 17 '22 05:10

Ricky Bobby