How can I verify an isomorphism relation between two graphs that join cube and octahedron vertices?
Mostra commenti meno recenti
I have two sets of nodes, corresponding to the vertices of the cube (S1 = {1,…,8}) and the octahedron (S2 = {1,…,6}), respectively. I construct each graph G joining vertices of S_1 to vertices of S_2. Having two graphs G_1 and G_2, how can I check if there is an isomorphism relation between these two graphs?
1 Commento
Catarina Pina
il 4 Giu 2024
Risposte (1)
G_1 = graph([1 2 3 3 3 4 4 4 5 5 5 6 6 6 7 8],...
[1 1 1 4 5 1 2 5 6 2 3 6 4 3 6 6]);
G_2 = graph([1 2 3 3 3 4 4 4 5 5 5 6 6 6 7 8],...
[3 3 1 4 5 1 2 5 6 2 3 6 4 3 5 5]);
isisomorphic(G_1, G_2)
mapping = isomorphism(G_1, G_2) % Empty if there is no isomorphism
Let's look at your two graphs. If you have coordinates for the vertices you could pass them into the plot call by specifying the XData, YData, and (for a 3-D plot) ZData properties rather than letting MATLAB choose the layout itself.
subplot(1, 2, 1)
plot(G_1)
title("G_1")
subplot(1, 2, 2)
plot(G_2)
title("G_2")
Those don't look isomorphic to me. The most obvious difference is that G_1 has two nodes with a self loop while G_2 only has one. In addition the two leaves in G_1 are adjacent to one of the self-loop nodes while the two leaves in G_2 are not adjacent to the self-loop node. Are you sure you assembled the source and target vectors with which I created G_1 and G_2 correctly?
4 Commenti
I think I see what was meant here: The first input and second input to the G_1, G_2 constructors are meant to be addressing two separate sets of nodes (first input is the vertices of the cube, and second input the vertices of the octagon).
You need to add a shift so that the nodes of the octagon are indices 9, 10, ..., 14 instead of reusing the indices 1, 2, ... 6 that are already used for the cube. Then, the two graphs are isomorphic:
G_1 = graph([1 2 3 3 3 4 4 4 5 5 5 6 6 6 7 8],...
[1 1 1 4 5 1 2 5 6 2 3 6 4 3 6 6]+8);
G_2 = graph([1 2 3 3 3 4 4 4 5 5 5 6 6 6 7 8],...
[3 3 1 4 5 1 2 5 6 2 3 6 4 3 5 5]+8);
isisomorphic(G_1, G_2)
mapping = isomorphism(G_1, G_2)
subplot(1, 2, 1)
plot(G_1)
title("G_1")
subplot(1, 2, 2)
plot(G_2)
title("G_2")
Catarina Pina
il 4 Giu 2024
Catarina Pina
il 4 Giu 2024
Steven Lord
il 4 Giu 2024
Good catch, Christine!
Categorie
Scopri di più su Discrete Data Plots in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

