Pensieve header: Experiments with graphs.

Graph[{1\[UndirectedEdge]2}]

vs=Tuples[v[0,1],4]

es=Flatten@Table[
Insert[#, •, k]&  /@ Tuples[e[0,1],3],
{k,4}
]

Graph[((v@@# /. •->0)\[UndirectedEdge](v@@#/.•->1))& /@ es, VertexLabels -> "Name"]

g=Graph[Flatten[
{(v@@# /. •->0)\[UndirectedEdge]#, #\[UndirectedEdge](v@@#/.•->1)}& /@ es
], VertexLabels -> "Name"]

pf=FindShortestPath[g]

pf[v[0,0,0,0], v[1,1,1,1]]

es1=Flatten@Table[
Insert[#, •, k]&  /@ Tuples[e[0,1],3],
{k,3}
];

g1=Graph[((v@@# /. •->0)\[UndirectedEdge](v@@#/.•->1))& /@ es1, VertexLabels -> "Name"]

FindShortestPath[g1, v[0,0,0,0], v[1,1,1,0]]

FindShortestPath[g1, v[0,0,0,0], v[1,1,1,1]]

ConnectedComponents[g1]

?Graph