Hello to all, I am a newbie to Mathematica.
My problem is the first time I run the code works, however, if I run it then it no longer works (without recreating the graph).
Why?
listMaxNodeGraph[grafo_] :=
Block[{g = grafo},
Pick[VertexList[g], VertexDegree[g], Max[VertexDegree[g]]]];
singleNodeMaxGraph[grafo_] :=
Block[{g = grafo}, listMaxNodeGraph[g][[1]]];
degreeMaxNodeGraph[grafo_] :=
Block[{g = grafo}, VertexDegree[g, singleNodeMaxGraph[g]]];
findNotNeighbour[grafo_, vertice_] :=
Block[{g = grafo, v = vertice},
Pick[VertexList[g], AdjacencyMatrix[g][[VertexIndex[g, v]]], 0]];
findNotNeighbourUn[grafo_, vertice_] :=
Block[{g = grafo, v = vertice, notNei},
Delete[notNei = findNotNeighbour[g, v],
Position[notNei, v]]];(*Vu^**)
calculatePowerSet[grafo_] :=
Block[{g = grafo,
li}, (li = findNotNeighbourUn[g, singleNodeMaxGraph[g]];
Subsets[li, {1, Length[li]}])];
calculateIndipendentSubSet[grafo_] :=
Block[{g = grafo, grafoU, powerSet,
x}, (grafoU = VertexDelete[g, singleNodeMaxGraph[g]];
powerSet = calculatePowerSet[g];
Pick[powerSet,
Table[IndependentVertexSetQ[grafoU, x], {x, powerSet}]])];
listSubGraphIndipendent[grafo_] :=
Block[{g = grafo, grafoWithOutU, s,
x}, (grafoWithOutU = VertexDelete[g, singleNodeMaxGraph[g]];
s = calculateIndipendentSubSet[g];
Table[VertexDelete[grafoWithOutU, x], {x, s}])];
grafoArt =
Graph[{1 \[UndirectedEdge] 2, 1 \[UndirectedEdge] 3,
1 \[UndirectedEdge] 7, 2 \[UndirectedEdge] 3,
2 \[UndirectedEdge] 4, 3 \[UndirectedEdge] 5,
4 \[UndirectedEdge] 5, 4 \[UndirectedEdge] 6,
4 \[UndirectedEdge] 7, 5 \[UndirectedEdge] 7,
6 \[UndirectedEdge] 7, 6 \[UndirectedEdge] 8,
7 \[UndirectedEdge] 8, 8 \[UndirectedEdge] 9,
5 \[UndirectedEdge] 9}, GraphStyle -> "VintageDiagram"]
listSubGraphIndipendent[grafoArt]