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]