Graph Union

Author

Eric W. Weisstein
March 2, 2024

This notebook downloaded from http://mathworld.wolfram.com/notebooks/GraphTheory/GraphUnion.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/GraphUnion.html.

©2024 Wolfram Research, Inc. except for portions noted otherwise

Graphic

Built-in

GraphicsRow[{g=PathGraph[Range[2]],h=PathGraph[Range[3]],GraphDisjointUnion[g,h]}]

Combinatorica

<<Combinatorica`

?GraphUnion

gr[g_]:=Graphics[{PointSize[.08],graphic[g]},PlotRange->All]

Show[GraphicsArray[{
gr[Path[2]],gr[Path[3]],gr[GraphUnion[Path[2],Path[3]]]}],
PlotRange->All]

Embeddings

<<MathWorld`Graphs`

"K3,3+K5"

Construction from Mohar and Thomassen 2001

Using the numbering of Glover et al. 1979 for projective planar forbidden topological minors

Construction from Glover et al. 1979

H. Glover, J. Huneke, and C. S. Wang, 103 graphs that are irreducible for the projective plane. J. Combinatorial Theory Ser. B 27 3 (1979).

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{3/2,-1/2},{5/2,-1/2},{3/2,1/2},{5/2,1/2},{3/2,3/2},{5/2,3/2}};
g0=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,2,3,4,1,5,3],e[4,5,2],e[6,7,9,11,10,8,6],{8,9},
Sequence@@(curvededges={{1,3},{4,2},{10,7},{6,11}})})],VertexCoordinates->v,VertexLabels->Automatic]

{3,#}&/@curvededges

g=CurvedEdges[g0,{{3,{1,3}},{3,{4,2}},{-3,{10,7}},{-3,{6,11}}}]

RecognizeGraph[g]

{CircuitRank[g],VertexCount[g],ReverseSort@VertexDegree[g]}

ProjectivePlanarGraphQ[g,Debug->True]//Timing

Primary

GraphData["K3,3+K5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["K3,3+K5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["K3,3+K5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["K3,3+K5","EdgeList"]]

Default embedding

GraphPlot@GraphData["K3,3+K5","Edges"]

v={};
g=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{Sequence@@curvededges={}})],VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["K3,3+K5","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["K3,3+K5","Graph","Degenerate"]

Bilateral

GraphData["K3,3+K5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["K3,3+K5","Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData["K3,3+K5"],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData["K3,3+K5"],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData["K3,3+K5","Planar"]

GraphData["K3,3+K5","Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData["K3,3+K5"]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData["K3,3+K5"],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData["K3,3+K5",{"RCN","CN"}]

GraphData["K3,3+K5","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["K3,3+K5"],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["K3,3+K5"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["K3,3+K5"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["K3,3+K5","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["K3,3+K5"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["K3,3+K5","Circulant"]

GraphData["K3,3+K5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["K3,3+K5"]]

gs=CirculantGraph1@@@Cases[GraphData["K3,3+K5","StandardNames"],{"Circulant",i_}:>i]

Halin

GraphData["K3,3+K5","Halin"]

GraphData["K3,3+K5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["K3,3+K5","Rigid"]

GraphData["K3,3+K5","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["K3,3+K5","Flexible"]

GraphData["K3,3+K5","Graph","Flexible"]//StyleGraphs

LCF

GraphData["K3,3+K5","LCF"]

GraphData["K3,3+K5","HamiltonianCycleCount"]

GraphData["K3,3+K5","LCFSignature"]

GraphData["K3,3+K5","LCFNotations"]

GraphData["K3,3+K5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["K3,3+K5","UnitDistance"]

UnitDistanceGraphQ[GraphData["K3,3+K5"],Debug->True]//Timing

GraphData["K3,3+K5","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["K3,3+K5","VertexList"],GraphData["K3,3+K5","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["K3,3+K5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["K3,3+K5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["K3,3+K5"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"K3,3+K5",l=FindSubgraphUnitDistanceEmbedding[GraphData["K3,3+K5"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["K3,3+K5","Matchstick"]

GraphData["K3,3+K5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["K3,3+K5","Edges"]]

3D All

GraphData["K3,3+K5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["K3,3+K5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["K3,3+K5","Polyhedral"]

GraphData["K3,3+K5","Graph",{"3D","Polyhedron"}]

"K4,4-e"

GraphData["K4,4-e","StandardName"]

Primary

GraphData["K4,4-e"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["K4,4-e","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["K4,4-e","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["K4,4-e","EdgeList"]]

Construction from Mohar and Thomassen 2001

Using the numbering of Glover et al. 1979 for projective planar forbidden topological minors

v=Join[UnitCirclePoints[6,Pi/2],{0,#/2}&/@{-1,1}];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,3,6,7,2,5,8,7,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Construction from Glover et al. 1979

H. Glover, J. Huneke, and C. S. Wang, 103 graphs that are irreducible for the projective plane. J. Combinatorial Theory Ser. B 27 3 (1979).

v={{0,0},{1,0},{2,0},{2,1},{1,1},{0,1},{1+1/16,1/2},{3/2,1/2}};
g=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,2,3,4,5,6,1],e[6,7,8,5],e[2,7,4],{3,8},
Sequence@@(curvededges={{2,5},{3,6},{1,4}})})],VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

DegenerateGraphEmbeddingTypes@g

v={{0,0},{1,0},{2,0},{2,1},{1,1},{0,1},{1,1/2},{3/2,1/2}};
g0=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,2,3,4,5,6,1],e[6,7,8,5],e[2,7,4],{3,8},
Sequence@@(curvededges={{2,5},{3,6},{1,4}})})],VertexCoordinates->v,VertexLabels->Automatic]

{3,#}&/@curvededges

g=CurvedEdges[g0,{{3,{2,5}},{3,{3,6}},{3,{1,4}}}]

RecognizeGraph[g]

{CircuitRank[g],VertexCount[g],ReverseSort@VertexDegree[g]}

ProjectivePlanarGraphQ[g,Debug->True]//Timing

Default embedding

GraphPlot@GraphData["K4,4-e","Edges"]

v=Join[Flatten[Table[{i,j},{i,-1/2,1/2},{j,-1,1}],1],{3#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,4,8,6,3,7,1,5,3,4,2,6,1],e[7,2,5,8]})],VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["K4,4-e","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["K4,4-e","Graph","Degenerate"]

Bilateral

GraphData["K4,4-e","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["K4,4-e","Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData["K4,4-e"],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData["K4,4-e"],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData["K4,4-e","Planar"]

GraphData["K4,4-e","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["K4,4-e",{"RCN","CN"}]

GraphData["K4,4-e","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["K4,4-e"],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["K4,4-e"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["K4,4-e"],"CrossingNumber"->cn,RandomSeed->n]],{n,250}],Max[OuterFace[#]]<=GraphData["K4,4-e","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["K4,4-e"],"CrossingNumber"->cn,RandomSeed->i],{i,250}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["K4,4-e","Circulant"]

GraphData["K4,4-e","Graph","Circulant"]//StyleGraphs

Halin

GraphData["K4,4-e","Halin"]

GraphData["K4,4-e","Graph","Halin"]//StyleGraphs

Rigid

GraphData["K4,4-e","Rigid"]

GraphData["K4,4-e","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["K4,4-e","Flexible"]

GraphData["K4,4-e","Graph","Flexible"]//StyleGraphs

LCF

GraphData["K4,4-e","LCF"]

GraphData["K4,4-e","HamiltonianCycleCount"]

GraphData["K4,4-e","LCFSignature"]

GraphData["K4,4-e","LCFNotations"]

GraphData["K4,4-e","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["K4,4-e","UnitDistance"]

UnitDistanceGraphQ[GraphData["K4,4-e"],Debug->True]//Timing

GraphData["K4,4-e","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["K4,4-e","VertexList"],GraphData["K4,4-e","EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["K4,4-e","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["K4,4-e"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["K4,4-e","Matchstick"]

GraphData["K4,4-e","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["K4,4-e","Edges"]]

3D All

GraphData["K4,4-e","Graph",{"3D","All"}]

3D UnitDistance

GraphData["K4,4-e","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["K4,4-e","Polyhedral"]

GraphData["K4,4-e","Graph",{"3D","Polyhedron"}]

"K4,5-4K2"

GraphData["K4,5-4K2","StandardName"]

Construction from Mohar and Thomassen 2001

Using the numbering of Glover et al. 1979 for projective planar forbidden topological minors

v=Join[Subdivide[{0,0},{1,0},3],Subdivide[{0,1},{1,1},3],{{1/2,2}}];
g=Graph[Range@Length@v,UndirectedEdge@@@DeleteCases[Union[Sort/@Join[Tuples[{Range[4],Range[5,8]}],Table[{i,9},{i,5,8}]]],{1,5}|{2,6}|{3,7}|{4,8}],VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Construction from Glover et al. 1979

H. Glover, J. Huneke, and C. S. Wang, 103 graphs that are irreducible for the projective plane. J. Combinatorial Theory Ser. B 27 3 (1979).

v=Join[UnitCirclePoints[4],CirclePoints[1/2/(Sqrt[2]),4],{{0,0}}];
g0=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5],{3,7},e[4,8,9,6,2],
Sequence@@(curvededges={{3,9},{1,9}})})],VertexCoordinates->v,VertexLabels->Automatic]

{3,#}&/@curvededges

g=CurvedEdges[g0,{{1,{3,9}},{1,{1,9}}}]

RecognizeGraph[g]

{CircuitRank[g],VertexCount[g],ReverseSort@VertexDegree[g]}

ProjectivePlanarGraphQ[g,Debug->True]//Timing

Primary

GraphData["K4,5-4K2"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["K4,5-4K2","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["K4,5-4K2","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["K4,5-4K2","EdgeList"]]

Default embedding

GraphPlot@GraphData["K4,5-4K2","Edges"]

v={};
g=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{Sequence@@curvededges={}})],VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["K4,5-4K2","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["K4,5-4K2","Graph","Degenerate"]

Bilateral

GraphData["K4,5-4K2","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["K4,5-4K2","Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData["K4,5-4K2"],All][[All,All,1]]]

Planar

GraphData["K4,5-4K2","Planar"]

GraphData["K4,5-4K2","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["K4,5-4K2",{"RCN","CN"}]

GraphData["K4,5-4K2","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["K4,5-4K2"],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["K4,5-4K2"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["K4,5-4K2"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["K4,5-4K2","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["K4,5-4K2"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,Pi/4]

s=1/10;
v={{0,0},{1,0},{1,1},{0,1},{1,1}/2,{1/4,s},{3/4,s},{1/4,1-s},{3/4,1-s}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,5,9,3],e[6,7,9,8,6],{2,7},{4,8},e[4,5,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[,-Pi/2]

s=1/Sqrt[2];
v=Join[UnitCirclePoints[4,Pi/2],{{0,0},{s/2,0},{-s/2,0},{0,s/3},{0,2s/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,4,1,2,3,5,8,9,1],e[2,7,5,6,4,8,2],e[7,9,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs={,};

Circulant

GraphData["K4,5-4K2","Circulant"]

GraphData["K4,5-4K2","Graph","Circulant"]//StyleGraphs

Halin

GraphData["K4,5-4K2","Halin"]

GraphData["K4,5-4K2","Graph","Halin"]//StyleGraphs

Rigid

GraphData["K4,5-4K2","Rigid"]

GraphData["K4,5-4K2","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["K4,5-4K2","Flexible"]

GraphData["K4,5-4K2","Graph","Flexible"]//StyleGraphs

LCF

GraphData["K4,5-4K2","LCF"]

GraphData["K4,5-4K2","HamiltonianCycleCount"]

GraphData["K4,5-4K2","LCFSignature"]

GraphData["K4,5-4K2","LCFNotations"]

GraphData["K4,5-4K2","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["K4,5-4K2","UnitDistance"]

UnitDistanceGraphQ[GraphData["K4,5-4K2"],Debug->True]//Timing

GraphData["K4,5-4K2","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["K4,5-4K2","VertexList"],GraphData["K4,5-4K2","EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["K4,5-4K2","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["K4,5-4K2"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["K4,5-4K2","Matchstick"]

GraphData["K4,5-4K2","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["K4,5-4K2","Edges"]]

3D All

GraphData["K4,5-4K2","Graph",{"3D","All"}]

3D UnitDistance

GraphData["K4,5-4K2","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["K4,5-4K2","Polyhedral"]

GraphData["K4,5-4K2","Graph",{"3D","Polyhedron"}]

"K7-C4"

GraphData["K7-C4","StandardName"]

GraphData["K7-C4","AlternateStandardNames"]

GraphData["K7-C4","Notation"]

GraphData["K7-C4","NotationRules"]

Construction from Mohar and Thomassen 2001

Using the numbering of Glover et al. 1979 for projective planar forbidden topological minors

v=Join[UnitCirclePoints[6],{{0,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,6,2,5,3,7,4],e[1,5,7,2,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Construction from Glover et al. 1979

H. Glover, J. Huneke, and C. S. Wang, 103 graphs that are irreducible for the projective plane. J. Combinatorial Theory Ser. B 27 3 (1979).

v={{0,0},{1,0},{2,0},{2,1},{1,1},{0,1},{1,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,4],e[3,7,6],e[2,7,5],
{1,5},{5,3},{6,2},{2,4},{2,5}
},VertexCoordinates->v,VertexLabels->Automatic]

{3,#}&/@{{1,5},{5,3},{6,2},{2,4},{2,5}}

CurvedEdges[g,{{3,{1,5}},{-3,{5,3}},{3,{6,2}},{-3,{2,4}},{-1,{2,5}}}]

RecognizeGraph[g]

{CircuitRank[g],VertexCount[g],ReverseSort@VertexDegree[g]}

ProjectivePlanarGraphQ[g,Debug->True]//Timing

Primary

GraphData["K7-C4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["K7-C4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["K7-C4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["K7-C4","EdgeList"]]

Default embedding

GraphPlot@GraphData["K7-C4","Edges"]

v=Join[UnitCirclePoints[6,Pi/2],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,4,2,7,5],e[4,6,7,3,1,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@

v=Join[CirclePoints[5],{#/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,3,5,2,4,1],e[4,6,7,2,6,3,7,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData["K7-C4","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["K7-C4","Graph","Degenerate"]

Bilateral

GraphData["K7-C4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["K7-C4","Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData["K7-C4"],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData["K7-C4"],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData["K7-C4","Planar"]

GraphData["K7-C4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["K7-C4",{"RCN","CN"}]

GraphData["K7-C4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["K7-C4"],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["K7-C4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["K7-C4"],"CrossingNumber"->cn,RandomSeed->n]],{n,100}],Max[OuterFace[#]]<=GraphData["K7-C4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["K7-C4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,-2Pi/3]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{1/2,1/4},{1/8,1/2},{-1/8,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,4,2,5,7,3,6,4,1],e[3,4,7,6,5,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["K7-C4","Circulant"]

GraphData["K7-C4","Graph","Circulant"]//StyleGraphs

Halin

GraphData["K7-C4","Halin"]

GraphData["K7-C4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["K7-C4","Rigid"]

GraphData["K7-C4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["K7-C4","Flexible"]

GraphData["K7-C4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["K7-C4","LCF"]

GraphData["K7-C4","HamiltonianCycleCount"]

GraphData["K7-C4","LCFSignature"]

GraphData["K7-C4","LCFNotations"]

GraphData["K7-C4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["K7-C4","UnitDistance"]

UnitDistanceGraphQ[GraphData["K7-C4"],Debug->True]//Timing

GraphData["K7-C4","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["K7-C4","VertexList"],GraphData["K7-C4","EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["K7-C4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["K7-C4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["K7-C4","Matchstick"]

GraphData["K7-C4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["K7-C4","Edges"]]

3D All

GraphData["K7-C4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["K7-C4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["K7-C4","Polyhedral"]

GraphData["K7-C4","Graph",{"3D","Polyhedron"}]

"2C3"

GraphData["2C3","StandardName"]

Primary

GraphData["2C3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Graph union construction

GraphData["C3","Graph","All"]

MyGraphUnion[#,2]&/@GraphData["C3","Graph","All"]

Embedding types

GraphDataEmbeddings[GraphData["2C3","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C3","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C3","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C3","Planar"]

GraphData["2C3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C3",{"RCN","CN"}]

GraphData["2C3","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C3","Circulant"]

GraphData["2C3","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C3"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["2C3","Halin"]

GraphData["2C3","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C3","LCF"]

GraphData["2C3","HamiltonianCycleCount"]

GraphData["2C3","LCFSignature"]

GraphData["2C3","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C3","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C3"],Debug->True]//Timing

GraphData["2C3","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C3","VertexList"],GraphData["2C3","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C3",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C3"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C3","Matchstick"]

GraphData["2C3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C3","Edges"]]

3D All

GraphData["2C3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C3","Polyhedral"]

GraphData["2C3","Graph",{"3D","Polyhedron"}]

"2C4"

GraphData["2C4","StandardName"]

Primary

GraphData["2C4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Graph union construction

GraphData["C4","Graph","All"]

MyGraphUnion[#,2]&/@GraphData["C4","Graph","All"]

Embedding types

GraphDataEmbeddings[GraphData["2C4","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C4","Edges"]

v=CirclePoints[8];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,4,8,5,1],e[7,2,6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C4","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C4","Planar"]

GraphData["2C4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C4",{"RCN","CN"}]

GraphData["2C4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C4","Circulant"]

GraphData["2C4","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C4"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["2C4","Halin"]

GraphData["2C4","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C4","LCF"]

GraphData["2C4","HamiltonianCycleCount"]

GraphData["2C4","LCFSignature"]

GraphData["2C4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C4","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C4"],Debug->True]//Timing

GraphData["2C4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C4","VertexList"],GraphData["2C4","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C4","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C4",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C4"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C4","Matchstick"]

GraphData["2C4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C4","Edges"]]

3D All

GraphData["2C4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C4","Polyhedral"]

GraphData["2C4","Graph",{"3D","Polyhedron"}]

"2C5"

GraphData["2C5","StandardName"]

Primary

GraphData["2C5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Graph union construction

MyGraphUnion[GraphData["C5","Graph",2],2]

Embedding types

GraphDataEmbeddings[GraphData["2C5","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C5","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C5","Planar"]

GraphData["2C5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C5",{"RCN","CN"}]

GraphData["2C5","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C5","Circulant"]

GraphData["2C5","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C5"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["2C5","Halin"]

GraphData["2C5","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C5","LCF"]

GraphData["2C5","HamiltonianCycleCount"]

GraphData["2C5","LCFSignature"]

GraphData["2C5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C5","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C5"],Debug->True]//Timing

GraphData["2C5","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C5","VertexList"],GraphData["2C5","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C5",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C5"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C5","Matchstick"]

GraphData["2C5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C5","Edges"]]

3D All

GraphData["2C5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C5","Polyhedral"]

GraphData["2C5","Graph",{"3D","Polyhedron"}]

"2C6"

GraphData["2C6","StandardName"]

Primary

GraphData["2C6"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C6","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C6","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2C6","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C6","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["C6","Graph","All"]

Degenerate

GraphData["2C6","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C6","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C6","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C6","Planar"]

GraphData["2C6","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C6",{"RCN","CN"}]

GraphData["2C6","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C6","Circulant"]

GraphData["2C6","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C6"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["2C6","Halin"]

GraphData["2C6","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C6","LCF"]

GraphData["2C6","HamiltonianCycleCount"]

GraphData["2C6","LCFSignature"]

GraphData["2C6","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C6","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C6"],Debug->True]//Timing

GraphData["2C6","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C6","VertexList"],GraphData["2C6","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C6","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C6"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2C6"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C6",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C6"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C6","Matchstick"]

GraphData["2C6","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C6","Edges"]]

3D All

GraphData["2C6","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C6","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C6","Polyhedral"]

GraphData["2C6","Graph",{"3D","Polyhedron"}]

"2C7"

GraphData["2C7","StandardName"]

Primary

GraphData["2C7"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C7","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C7","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2C7","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C7","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C7","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C7","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C7","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C7","Planar"]

GraphData["2C7","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C7",{"RCN","CN"}]

GraphData["2C7","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C7","Circulant"]

GraphData["2C7","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C7"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["2C7","Halin"]

GraphData["2C7","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C7","LCF"]

GraphData["2C7","HamiltonianCycleCount"]

GraphData["2C7","LCFSignature"]

GraphData["2C7","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C7","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C7"],Debug->True]//Timing

GraphData["2C7","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C7","VertexList"],GraphData["2C7","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C7","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C7"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2C7"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C7",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C7"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C7","Matchstick"]

GraphData["2C7","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C7","Edges"]]

3D All

GraphData["2C7","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C7","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C7","Polyhedral"]

GraphData["2C7","Graph",{"3D","Polyhedron"}]

"2C8"

GraphData["2C8","StandardName"]

Primary

GraphData["2C8"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C8","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C8","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2C8","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C8","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C8","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C8","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C8","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C8","Planar"]

GraphData["2C8","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C8",{"RCN","CN"}]

GraphData["2C8","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C8","Circulant"]

GraphData["2C8","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C8"]]

UnitDistanceGraphEmbeddingQ/@gs

Halin

GraphData["2C8","Halin"]

GraphData["2C8","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C8","LCF"]

GraphData["2C8","HamiltonianCycleCount"]

GraphData["2C8","LCFSignature"]

GraphData["2C8","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C8","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C8"],Debug->True]//Timing

GraphData["2C8","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C8","VertexList"],GraphData["2C8","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C8","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C8"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2C8"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C8",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C8"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C8","Matchstick"]

GraphData["2C8","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C8","Edges"]]

3D All

GraphData["2C8","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C8","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C8","Polyhedral"]

GraphData["2C8","Graph",{"3D","Polyhedron"}]

"2C9"

GraphData["2C9","StandardName"]

Primary

GraphData["2C9"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C9","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C9","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2C9","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C9","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C9","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C9","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C9","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C9","Planar"]

GraphData["2C9","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C9",{"RCN","CN"}]

GraphData["2C9","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C9","Circulant"]

GraphData["2C9","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C9"]]

Halin

GraphData["2C9","Halin"]

GraphData["2C9","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C9","LCF"]

GraphData["2C9","HamiltonianCycleCount"]

GraphData["2C9","LCFSignature"]

GraphData["2C9","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C9","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C9"],Debug->True]//Timing

GraphData["2C9","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C9","VertexList"],GraphData["2C9","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C9","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C9"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2C9"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C9",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C9"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C9","Matchstick"]

GraphData["2C9","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C9","Edges"]]

3D All

GraphData["2C9","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C9","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C9","Polyhedral"]

GraphData["2C9","Graph",{"3D","Polyhedron"}]

"2C10"

GraphData["2C10","StandardName"]

Primary

GraphData["2C10"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2C10","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2C10","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2C10","EdgeList"]]

Default embedding

GraphPlot@GraphData["2C10","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2C10","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2C10","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2C10","Graph","Circular"]//StyleGraphs

Planar

GraphData["2C10","Planar"]

GraphData["2C10","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2C10",{"RCN","CN"}]

GraphData["2C10","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2C10","Circulant"]

GraphData["2C10","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["2C10"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["2C10","Halin"]

GraphData["2C10","Graph","Halin"]//StyleGraphs

LCF

GraphData["2C10","LCF"]

GraphData["2C10","HamiltonianCycleCount"]

GraphData["2C10","LCFSignature"]

GraphData["2C10","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2C10","UnitDistance"]

UnitDistanceGraphQ[GraphData["2C10"],Debug->True]//Timing

GraphData["2C10","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2C10","VertexList"],GraphData["2C10","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2C10","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2C10"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2C10"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2C10",l=FindSubgraphUnitDistanceEmbedding[GraphData["2C10"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2C10","Matchstick"]

GraphData["2C10","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2C10","Edges"]]

3D All

GraphData["2C10","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2C10","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2C10","Polyhedral"]

GraphData["2C10","Graph",{"3D","Polyhedron"}]

"2K3,3"

GraphData["2K3,3","StandardName"]

Primary

GraphData["2K3,3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K3,3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K3,3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K3,3","EdgeList"]]

Construction from Mohar and Thomassen 2001

Using the numbering of Glover et al. 1979 for projective planar forbidden topological minors

Construction from Glover et al. 1979

H. Glover, J. Huneke, and C. S. Wang, 103 graphs that are irreducible for the projective plane. J. Combinatorial Theory Ser. B 27 3 (1979).

v=Flatten[Table[{i,j},{i,0,3},{j,0,2}],1];
g0=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,4,5,6,3,2,1],{2,5},e[7,10,11,12,9,8,7],{8,11},
Sequence@@(curvededges={{3,4},{1,6},{10,9},{12,7}})})],VertexCoordinates->v,VertexLabels->Automatic]

{3,#}&/@curvededges

g=CurvedEdges[g0,{{-3,{3,4}},{3,{1,6}},{3,{10,9}},{-3,{12,7}}}]

RecognizeGraph[g]

{CircuitRank[g],VertexCount[g],ReverseSort@VertexDegree[g]}

ProjectivePlanarGraphQ[g,Debug->True]//Timing

v=Flatten[Table[{i,j},{i,0,3},{j,0,2}],1];
g=Graph[Range[Length[v]],Sort[Sort/@(UndirectedEdge@@@{e[1,4,5,6,3,2,1],{2,5},e[7,10,11,12,9,8,7],{8,11},
Sequence@@(curvededges={{3,4},{1,6},{10,9},{12,7}})})],VertexCoordinates->v,VertexLabels->Automatic]

Default embedding

GraphPlot@GraphData["2K3,3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K3,3","Graph","All"]

MyGraphUnion[#,2]&/@%[[{1,-1}]]

Degenerate

GraphData["2K3,3","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K3,3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K3,3","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K3,3","Planar"]

GraphData["2K3,3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K3,3",{"RCN","CN"}]

GraphData["2K3,3","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2K3,3"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2K3,3"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2K3,3","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2K3,3"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2K3,3","Circulant"]

GraphData["2K3,3","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K3,3"],All]

Halin

GraphData["2K3,3","Halin"]

GraphData["2K3,3","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K3,3","LCF"]

GraphData["2K3,3","HamiltonianCycleCount"]

GraphData["2K3,3","LCFSignature"]

GraphData["2K3,3","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K3,3","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K3,3"],Debug->True]//Timing

GraphData["2K3,3","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K3,3","VertexList"],GraphData["2K3,3","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K3,3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K3,3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K3,3","Matchstick"]

GraphData["2K3,3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K3,3","Edges"]]

3D All

GraphData["2K3,3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K3,3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K3,3","Polyhedral"]

GraphData["2K3,3","Graph",{"3D","Polyhedron"}]

"2K3,3,3"

GraphData["2K3,3,3","StandardName"]

Primary

GraphData["2K3,3,3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K3,3,3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K3,3,3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K3,3,3","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K3,3,3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K3,3,3","Graph","All"]

gs=MyGraphUnion[#,2]&/@Take[GraphData["K3,3,3","Graph","All"],2]

Degenerate

GraphData["2K3,3,3","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K3,3,3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K3,3,3","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K3,3,3","Planar"]

GraphData["2K3,3,3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K3,3,3",{"RCN","CN"}]

GraphData["2K3,3,3","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2K3,3,3"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2K3,3,3"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2K3,3,3","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2K3,3,3"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2K3,3,3","Circulant"]

GraphData["2K3,3,3","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K3,3,3"]]

Halin

GraphData["2K3,3,3","Halin"]

GraphData["2K3,3,3","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2K3,3,3","Rigid"]

GraphData["2K3,3,3","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2K3,3,3","Flexible"]

GraphData["2K3,3,3","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2K3,3,3","LCF"]

GraphData["2K3,3,3","HamiltonianCycleCount"]

GraphData["2K3,3,3","LCFSignature"]

GraphData["2K3,3,3","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K3,3,3","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K3,3,3"],Debug->True]//Timing

GraphData["2K3,3,3","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K3,3,3","VertexList"],GraphData["2K3,3,3","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K3,3,3","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K3,3,3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K3,3,3","Matchstick"]

GraphData["2K3,3,3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K3,3,3","Edges"]]

3D All

GraphData["2K3,3,3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K3,3,3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K3,3,3","Polyhedral"]

GraphData["2K3,3,3","Graph",{"3D","Polyhedron"}]

"2K4"

GraphData["2K4","StandardName"]

Primary

GraphData["2K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

GraphData["2K4","ConnectedComponents","Name"]

GraphData["TetrahedralGraph","Graph","All"]

gs=MyGraphUnion[#,2]&/@Take[GraphData["TetrahedralGraph","Graph","All"],2]

RecognizeGraph/@%

Degenerate

GraphData["2K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K4","Planar"]

GraphData["2K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K4",{"RCN","CN"}]

GraphData["2K4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K4","Circulant"]

GraphData["2K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1[8,{2,4},Pi/2]

Halin

GraphData["2K4","Halin"]

GraphData["2K4","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K4","LCF"]

GraphData["2K4","HamiltonianCycleCount"]

GraphData["2K4","LCFSignature"]

GraphData["2K4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K4"],Debug->True]//Timing

GraphData["2K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K4","VertexList"],GraphData["2K4","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K4","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K4","Matchstick"]

GraphData["2K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K4","Edges"]]

3D All

GraphData["2K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K4","Polyhedral"]

GraphData["2K4","Graph",{"3D","Polyhedron"}]

"2K4,4"

GraphData["2K4,4","StandardName"]

Primary

GraphData["2K4,4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K4,4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K4,4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K4,4","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K4,4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K4,4","Graph","All"]

GraphData["K4,4","Graph","MinimalCrossing"]

gs=MyGraphUnion[#,2]&/@GraphData["K4,4","Graph","All"][[{2,4,6,7}]]

Degenerate

GraphData["2K4,4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K4,4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K4,4","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K4,4","Planar"]

GraphData["2K4,4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K4,4",{"RCN","CN"}]

GraphData["2K4,4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K4,4","Circulant"]

GraphData["2K4,4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K4,4"]]

Halin

GraphData["2K4,4","Halin"]

GraphData["2K4,4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2K4,4","Rigid"]

GraphData["2K4,4","Graph","Rigid"]//StyleGraphs

LCF

GraphData["2K4,4","LCF"]

GraphData["2K4,4","HamiltonianCycleCount"]

GraphData["2K4,4","LCFSignature"]

GraphData["2K4,4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K4,4","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K4,4"],Debug->True]//Timing

GraphData["2K4,4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K4,4","VertexList"],GraphData["2K4,4","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K4,4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K4,4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K4,4","Matchstick"]

GraphData["2K4,4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K4,4","Edges"]]

3D union construction

g0=GraphData["K4,4","Graph","3D"];
v=GraphEmbedding[g0];
g=Graph[Range[16],Join[EdgeList[g0],EdgeList[g0]/.k_Integer:>k+8],VertexCoordinates->Join@@Table[#+i{3/2,0,0}&/@v,{i,0 ,1}]]

UnitDistanceGraphEmbeddingQ[g]

3D All

GraphData["2K4,4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K4,4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K4,4","Polyhedral"]

GraphData["2K4,4","Graph",{"3D","Polyhedron"}]

"2K5"

GraphData["2K5","StandardName"]

Primary

GraphData["2K5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K5","EdgeList"]]

Construction from Mohar and Thomassen 2001

Using the numbering of Glover et al. 1979 for projective planar forbidden topological minors

Construction from Glover et al. 1979

H. Glover, J. Huneke, and C. S. Wang, 103 graphs that are irreducible for the projective plane. J. Combinatorial Theory Ser. B 27 3 (1979).

v1={1/4+#,#2}&@@@{{0,0},{1,0},{1,1},{0,1},{1/2,1/2}};
v=Join[{-#,#2}&@@@v1,v1];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,4,3,2,1,5,3],e[2,5,4],e[6,7,8,9,6,10,8],e[9,10,7],
{6,8},{7,9},{3,1},{2,4}
},VertexCoordinates->v,VertexLabels->Automatic]

{3,#}&/@{{6,8},{7,9},{3,1},{2,4}}

CurvedEdges[g,{{-3,{6,8}},{-3,{7,9}},{3,{3,1}},{3,{2,4}}}]

RecognizeGraph[g]

{CircuitRank[g],VertexCount[g],ReverseSort@VertexDegree[g]}

ProjectivePlanarGraphQ[g,Debug->True]//Timing

Default embedding

GraphPlot@GraphData["2K5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

GraphData["2K5","ConnectedComponents","Name"]

gs=MyGraphUnion[#,2]&/@GraphData["PentatopeGraph","Graph","All"]

RecognizeGraph/@%

Degenerate

GraphData["2K5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K5","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K5","Planar"]

GraphData["2K5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K5",{"RCN","CN"}]

GraphData["2K5","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K5","Circulant"]

GraphData["2K5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantIndices[GraphData["2K5"],All]

CirculantGraph1[10,{2,4},Pi/2]

Halin

GraphData["2K5","Halin"]

GraphData["2K5","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K5","LCF"]

GraphData["2K5","HamiltonianCycleCount"]

GraphData["2K5","LCFSignature"]

GraphData["2K5","Graph","LCF"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K5","VertexList"],GraphData["2K5","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

GraphPlot@

v=Join[UnitCirclePoints[6,-Pi/2],CirclePoints[1/2,4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,8,9,6,1,8,6,2,9,1],e[4,5,10,7,3,4,10,3,5,7,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K5","Matchstick"]

GraphData["2K5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K5","Edges"]]

3D All

GraphData["2K5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K5","Polyhedral"]

GraphData["2K5","Graph",{"3D","Polyhedron"}]

"2K5,5"

GraphData["2K5,5","StandardName"]

Primary

GraphData["2K5,5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K5,5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K5,5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K5,5","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K5,5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K5,5","Graph","All"]

gs=MyGraphUnion[#,2]&/@Take[GraphData["K5,5","Graph","All"],{2}]

Degenerate

GraphData["2K5,5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K5,5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K5,5","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K5,5","Planar"]

GraphData["2K5,5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K5,5",{"RCN","CN"}]

GraphData["2K5,5","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2K5,5"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2K5,5"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2K5,5","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2K5,5"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2K5,5","Circulant"]

GraphData["2K5,5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K5,5"]]

Halin

GraphData["2K5,5","Halin"]

GraphData["2K5,5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2K5,5","Rigid"]

GraphData["2K5,5","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2K5,5","Flexible"]

GraphData["2K5,5","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2K5,5","LCF"]

GraphData["2K5,5","HamiltonianCycleCount"]

GraphData["2K5,5","LCFSignature"]

GraphData["2K5,5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K5,5","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K5,5"],Debug->True]//Timing

GraphData["2K5,5","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K5,5","VertexList"],GraphData["2K5,5","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K5,5","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K5,5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K5,5","Matchstick"]

GraphData["2K5,5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K5,5","Edges"]]

3D All

GraphData["2K5,5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K5,5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K5,5","Polyhedral"]

GraphData["2K5,5","Graph",{"3D","Polyhedron"}]

"2K6"

GraphData["2K6","StandardName"]

Primary

GraphData["2K6"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K6","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K6","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K6","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K6","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K6","Graph","All"]

gs=MyGraphUnion[#,2]&/@%

Degenerate

GraphData["2K6","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K6","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K6","Graph","Circular"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K6"]]

Planar

GraphData["2K6","Planar"]

GraphData["2K6","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K6",{"RCN","CN"}]

GraphData["2K6","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2K6"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2K6"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2K6","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2K6"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2K6","Circulant"]

GraphData["2K6","Graph","Circulant"]//StyleGraphs

Halin

GraphData["2K6","Halin"]

GraphData["2K6","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K6","LCF"]

GraphData["2K6","HamiltonianCycleCount"]

GraphData["2K6","LCFSignature"]

GraphData["2K6","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K6","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K6"],Debug->True]//Timing

GraphData["2K6","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K6","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K6"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2K6"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData["2K6","Matchstick"]

GraphData["2K6","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K6","Edges"]]

g0=GraphData["K6","Graph","3D"]

v=GraphEmbedding[g0];
g=Graph[Range[12],UndirectedEdge@@@Join[EdgeList[g0],EdgeList[g0]/.i_Integer:>i+6],VertexCoordinates->Join[v,{#+2,#2,#3}&@@@v]]

RecognizeGraph@g

3D All

GraphData["2K6","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K6","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K6","Polyhedral"]

GraphData["2K6","Graph",{"3D","Polyhedron"}]

"2K7"

GraphData["2K7","StandardName"]

Primary

GraphData["2K7"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K7","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K7","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K7","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K7","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K7","Graph","All"]

gs=MyGraphUnion[#,2]&/@Take[GraphData["K7","Graph","All"],5]

Degenerate

GraphData["2K7","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K7","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K7","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K7","Planar"]

GraphData["2K7","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K7",{"RCN","CN"}]

GraphData["2K7","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K7","Circulant"]

GraphData["2K7","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K7"]]

Halin

GraphData["2K7","Halin"]

GraphData["2K7","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K7","LCF"]

GraphData["2K7","HamiltonianCycleCount"]

GraphData["2K7","LCFSignature"]

GraphData["2K7","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K7","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K7"],Debug->True]//Timing

GraphData["2K7","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K7","VertexList"],GraphData["2K7","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K7","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K7"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K7","Matchstick"]

GraphData["2K7","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K7","Edges"]]

3D All

GraphData["2K7","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K7","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K7","Polyhedral"]

GraphData["2K7","Graph",{"3D","Polyhedron"}]

"2K8"

GraphData["2K8","StandardName"]

Primary

GraphData["2K8"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K8","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K8","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K8","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K8","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,2]&/@GraphData["K8","Graph","All"]

Degenerate

GraphData["2K8","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K8","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K8","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K8","Planar"]

GraphData["2K8","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K8",{"RCN","CN"}]

GraphData["2K8","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K8","Circulant"]

GraphData["2K8","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K8"]]

Halin

GraphData["2K8","Halin"]

GraphData["2K8","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K8","LCF"]

GraphData["2K8","HamiltonianCycleCount"]

GraphData["2K8","LCFSignature"]

GraphData["2K8","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K8","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K8"],Debug->True]//Timing

GraphData["2K8","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K8","VertexList"],GraphData["2K8","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K8","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K8"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K8","Matchstick"]

GraphData["2K8","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K8","Edges"]]

3D All

GraphData["2K8","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K8","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K8","Polyhedral"]

GraphData["2K8","Graph",{"3D","Polyhedron"}]

"2K9"

GraphData["2K9","StandardName"]

Primary

GraphData["2K9"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K9","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K9","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K9","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K9","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,2]&/@GraphData["K9","Graph","All"]

Degenerate

GraphData["2K9","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K9","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K9","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K9","Planar"]

GraphData["2K9","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K9",{"RCN","CN"}]

GraphData["2K9","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K9","Circulant"]

GraphData["2K9","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K9"]]

Halin

GraphData["2K9","Halin"]

GraphData["2K9","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K9","LCF"]

GraphData["2K9","HamiltonianCycleCount"]

GraphData["2K9","LCFSignature"]

GraphData["2K9","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K9","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K9"],Debug->True]//Timing

GraphData["2K9","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K9","VertexList"],GraphData["2K9","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K9","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2K9"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2K9","Matchstick"]

GraphData["2K9","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K9","Edges"]]

3D All

GraphData["2K9","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K9","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K9","Polyhedral"]

GraphData["2K9","Graph",{"3D","Polyhedron"}]

"2K10"

GraphData["2K10","StandardName"]

Primary

GraphData["2K10"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2K10","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2K10","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2K10","EdgeList"]]

Default embedding

GraphPlot@GraphData["2K10","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,2]&/@GraphData["K10","Graph","All"]

Degenerate

GraphData["2K10","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2K10","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2K10","Graph","Circular"]//StyleGraphs

Planar

GraphData["2K10","Planar"]

GraphData["2K10","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2K10",{"RCN","CN"}]

GraphData["2K10","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2K10","Circulant"]

GraphData["2K10","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2K10"]]

Halin

GraphData["2K10","Halin"]

GraphData["2K10","Graph","Halin"]//StyleGraphs

LCF

GraphData["2K10","LCF"]

GraphData["2K10","HamiltonianCycleCount"]

GraphData["2K10","LCFSignature"]

GraphData["2K10","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2K10","UnitDistance"]

UnitDistanceGraphQ[GraphData["2K10"],Debug->True]//Timing

GraphData["2K10","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2K10","VertexList"],GraphData["2K10","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2K10","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2K10",l=FindSubgraphUnitDistanceEmbedding[GraphData["2K10"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2K10","Matchstick"]

GraphData["2K10","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2K10","Edges"]]

3D All

GraphData["2K10","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2K10","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2K10","Polyhedral"]

GraphData["2K10","Graph",{"3D","Polyhedron"}]

"2M4"

GraphData["2M4","StandardName"]

Primary

GraphData["2M4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2M4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2M4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2M4","EdgeList"]]

Default embedding

GraphPlot@GraphData["2M4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,2]&/@Take[GraphData["M4","Graph","All"],5]

Degenerate

GraphData["2M4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2M4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2M4","Graph","Circular"]//StyleGraphs

Planar

GraphData["2M4","Planar"]

GraphData["2M4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2M4",{"RCN","CN"}]

GraphData["2M4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2M4","Circulant"]

GraphData["2M4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2M4"]]

Halin

GraphData["2M4","Halin"]

GraphData["2M4","Graph","Halin"]//StyleGraphs

LCF

GraphData["2M4","LCF"]

GraphData["2M4","HamiltonianCycleCount"]

GraphData["2M4","LCFSignature"]

GraphData["2M4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2M4","UnitDistance"]

UnitDistanceGraphQ[GraphData["2M4"],Debug->True]//Timing

GraphData["2M4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2M4","VertexList"],GraphData["2M4","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2M4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2M4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2M4","Matchstick"]

GraphData["2M4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2M4","Edges"]]

3D All

GraphData["2M4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2M4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2M4","Polyhedral"]

GraphData["2M4","Graph",{"3D","Polyhedron"}]

"2M5"

GraphData["2M5","StandardName"]

Primary

GraphData["2M5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2M5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2M5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2M5","EdgeList"]]

Default embedding

GraphPlot@GraphData["2M5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["M5","Graph","All"]

gs=MyGraphUnion[#,2]&/@GraphData["M5","Graph","All"]

Degenerate

GraphData["2M5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2M5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2M5","Graph","Circular"]//StyleGraphs

Planar

GraphData["2M5","Planar"]

GraphData["2M5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2M5",{"RCN","CN"}]

GraphData["2M5","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2M5"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2M5"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2M5","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2M5"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2M5","Circulant"]

GraphData["2M5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2M5"]]

BilateralGraphEmbeddingQ/@%

Halin

GraphData["2M5","Halin"]

GraphData["2M5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2M5","Rigid"]

GraphData["2M5","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2M5","Flexible"]

GraphData["2M5","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2M5","LCF"]

GraphData["2M5","HamiltonianCycleCount"]

GraphData["2M5","LCFSignature"]

GraphData["2M5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2M5","UnitDistance"]

UnitDistanceGraphQ[GraphData["2M5"],Debug->True]//Timing

GraphData["2M5","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2M5","VertexList"],GraphData["2M5","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2M5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2M5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["2M5","Matchstick"]

GraphData["2M5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2M5","Edges"]]

3D All

GraphData["2M5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2M5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2M5","Polyhedral"]

GraphData["2M5","Graph",{"3D","Polyhedron"}]

"2P2" == {"LadderRung", 2}

Names

GraphData["2P2","StandardName"]

GraphData["2P2","StandardNames"]

"2P3"

Names

GraphData["2P3","StandardName"]

GraphData["2P3","StandardNames"]

Primary

GraphData["2P3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2P3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2P3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2P3","EdgeList"]]

Default embedding

GraphPlot@GraphData["2P3","Edges"]

v=UnitCirclePoints[6,Pi/6];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3],e[4,5,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistanceGraphEmbeddingQ@g

Degenerate

GraphData["2P3","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["2P3","Graph","Degenerate"]

Configuration

GraphData["2P3","Configuration"]

GraphData["2P3","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["2P3","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["2P3","Polyhedron"]

HoneycombToroidal construction

GraphData["2P3","NotationRules","HoneycombToroidal"]

HoneycombToroidalGraph[1,,]

RecognizeGraph[%]

GeneralizedHoneycombGraph construction

With[{n=6},Cases[Table[{k,g=GeneralizedHoneycombGraph[n,k],RecognizeGraph@g},{k,n-1}],{__,"2P3"}]]//Timing

g=GeneralizedHoneycombGraph[,]

RecognizeGraph@g

GeneralizedPetersen

GraphData["2P3","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["2P3","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["2P3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2P3","Graph","Circular"]//StyleGraphs

Planar

GraphData["2P3","Planar"]

GraphData["2P3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2P3",{"RCN","CN"}]

GraphData["2P3","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2P3","Circulant"]

GraphData["2P3","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["2P3","ComplementGraph","Name"]

Line graph

GraphData["2P3","Line"]

LineGraphQ[GraphData["2P3"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "2P3"&]

RootGraph[GraphData["2P3"]]

Halin

GraphData["2P3","Halin"]

GraphData["2P3","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2P3","Rigid"]

GraphData["2P3","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2P3","Flexible"]

GraphData["2P3","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2P3","LCF"]

GraphData["2P3","HamiltonianCycleCount"]

GraphData["2P3","LCFSignature"]

GraphData["2P3","LCFNotations"]

GraphData["2P3","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["2P3","UnitDistance"]

UnitDistanceGraphQ[GraphData["2P3"],Debug->True]//Timing

GraphData["2P3","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2P3","VertexList"],GraphData["2P3","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["2P3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2P3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2P3"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2P3",l=FindSubgraphUnitDistanceEmbedding[GraphData["2P3"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2P3","Matchstick"]

GraphData["2P3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2P3","Edges"]]

3D All

GraphData["2P3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2P3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2P3","Polyhedral"]

GraphData["2P3","Graph",{"3D","Polyhedron"}]

"2P4"

Names

GraphData["2P4","StandardName"]

GraphData["2P4","StandardNames"]

Primary

GraphData["2P4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2P4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2P4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2P4","EdgeList"]]

Default embedding

GraphPlot@GraphData["2P4","Edges"]

v=UnitCirclePoints[8];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,8,1,2],e[{3,6}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistanceGraphEmbeddingQ[g]

Degenerate

GraphData["2P4","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["2P4","Graph","Degenerate"]

Configuration

GraphData["2P4","Configuration"]

GraphData["2P4","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["2P4","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["2P4","Polyhedron"]

HoneycombToroidal construction

GraphData["2P4","NotationRules","HoneycombToroidal"]

HoneycombToroidalGraph[1,,]

RecognizeGraph[%]

GeneralizedHoneycombGraph construction

With[{n=8},Cases[Table[{k,g=GeneralizedHoneycombGraph[n,k],RecognizeGraph@g},{k,n-1}],{__,"2P4"}]]//Timing

g=GeneralizedHoneycombGraph[8,4]

RecognizeGraph@g

GeneralizedPetersen

GraphData["2P4","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["2P4","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["2P4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2P4","Graph","Circular"]//StyleGraphs

Planar

GraphData["2P4","Planar"]

GraphData["2P4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2P4",{"RCN","CN"}]

GraphData["2P4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2P4","Circulant"]

GraphData["2P4","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["2P4","ComplementGraph","Name"]

Line graph

GraphData["2P4","Line"]

LineGraphQ[GraphData["2P4"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "2P4"&]

RootGraph[GraphData["2P4"]]

LineGraph/@GraphData["2P5","Graph","All"]

Halin

GraphData["2P4","Halin"]

GraphData["2P4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2P4","Rigid"]

GraphData["2P4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2P4","Flexible"]

GraphData["2P4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2P4","LCF"]

GraphData["2P4","HamiltonianCycleCount"]

GraphData["2P4","LCFSignature"]

GraphData["2P4","LCFNotations"]

GraphData["2P4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["2P4","UnitDistance"]

UnitDistanceGraphQ[GraphData["2P4"],Debug->True]//Timing

GraphData["2P4","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2P4","VertexList"],GraphData["2P4","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["2P4","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2P4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2P4"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2P4",l=FindSubgraphUnitDistanceEmbedding[GraphData["2P4"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2P4","Matchstick"]

GraphData["2P4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2P4","Edges"]]

3D All

GraphData["2P4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2P4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2P4","Polyhedral"]

GraphData["2P4","Graph",{"3D","Polyhedron"}]

"2P5"

Names

GraphData["2P5","StandardName"]

GraphData["2P5","StandardNames"]

Primary

GraphData["2P5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2P5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2P5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2P5","EdgeList"]]

Default embedding

GraphPlot@GraphData["2P5","Edges"]

v=UnitCirclePoints[10];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,5}],e[{6,10}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["2P5","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["2P5","Graph","Degenerate"]

Configuration

GraphData["2P5","Configuration"]

GraphData["2P5","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["2P5","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["2P5","Polyhedron"]

GeneralizedPetersen

GraphData["2P5","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["2P5","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["2P5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2P5","Graph","Circular"]//StyleGraphs

Planar

GraphData["2P5","Planar"]

GraphData["2P5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2P5",{"RCN","CN"}]

GraphData["2P5","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["2P5","Circulant"]

GraphData["2P5","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["2P5","ComplementGraph","Name"]

Line graph

GraphData["2P5","Line"]

LineGraphQ[GraphData["2P5"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "2P5"&]

RootGraph[GraphData["2P5"]]

Halin

GraphData["2P5","Halin"]

GraphData["2P5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2P5","Rigid"]

GraphData["2P5","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2P5","Flexible"]

GraphData["2P5","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2P5","LCF"]

GraphData["2P5","HamiltonianCycleCount"]

GraphData["2P5","LCFSignature"]

GraphData["2P5","LCFNotations"]

GraphData["2P5","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["2P5","UnitDistance"]

UnitDistanceGraphQ[GraphData["2P5"],Debug->True]//Timing

GraphData["2P5","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2P5","VertexList"],GraphData["2P5","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["2P5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2P5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2P5"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2P5",l=FindSubgraphUnitDistanceEmbedding[GraphData["2P5"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2P5","Matchstick"]

GraphData["2P5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2P5","Edges"]]

3D All

GraphData["2P5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2P5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2P5","Polyhedral"]

GraphData["2P5","Graph",{"3D","Polyhedron"}]

"2Y3"

GraphData["2Y3","StandardName"]

Primary

GraphData["2Y3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2Y3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2Y3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2Y3","EdgeList"]]

Default embedding

GraphPlot@GraphData["2Y3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,2]&/@Delete[GraphData["Y3","Graph","All"],6]

Degenerate

GraphData["2Y3","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2Y3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2Y3","Graph","Circular"]//StyleGraphs

Planar

GraphData["2Y3","Planar"]

GraphData["2Y3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2Y3",{"RCN","CN"}]

GraphData["2Y3","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2Y3"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2Y3"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2Y3","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2Y3"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2Y3","Circulant"]

GraphData["2Y3","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2Y3"]]

Halin

GraphData["2Y3","Halin"]

GraphData["2Y3","Graph","Halin"]//StyleGraphs

LCF

GraphData["2Y3","LCF"]

GraphData["2Y3","HamiltonianCycleCount"]

GraphData["2Y3","LCFSignature"]

GraphData["2Y3","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2Y3","UnitDistance"]

UnitDistanceGraphQ[GraphData["2Y3"],Debug->True]//Timing

GraphData["2Y3","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2Y3","VertexList"],GraphData["2Y3","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2Y3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2Y3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2Y3"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2Y3",l=FindSubgraphUnitDistanceEmbedding[GraphData["2Y3"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2Y3","Matchstick"]

GraphData["2Y3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2Y3","Edges"]]

3D All

GraphData["2Y3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2Y3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2Y3","Polyhedral"]

GraphData["2Y3","Graph",{"3D","Polyhedron"}]

"2Y4" == "2Q3"

GraphData["2Y4","StandardName"]

"2Y5"

GraphData["2Y5","StandardName"]

Primary

GraphData["2Y5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["2Y5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["2Y5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["2Y5","EdgeList"]]

Default embedding

GraphPlot@GraphData["2Y5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["Y5","Graph","All"]

gs=MyGraphUnion[#,2]&/@GraphData["Y5","Graph","All"][[{1,2,3,4,5,6,7,-1}]]

Degenerate

GraphData["2Y5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["2Y5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["2Y5","Graph","Circular"]//StyleGraphs

Planar

GraphData["2Y5","Planar"]

GraphData["2Y5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["2Y5",{"RCN","CN"}]

GraphData["2Y5","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["2Y5"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["2Y5"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["2Y5","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["2Y5"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["2Y5","Circulant"]

GraphData["2Y5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["2Y5"]]

Halin

GraphData["2Y5","Halin"]

GraphData["2Y5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["2Y5","Rigid"]

GraphData["2Y5","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["2Y5","Flexible"]

GraphData["2Y5","Graph","Flexible"]//StyleGraphs

LCF

GraphData["2Y5","LCF"]

GraphData["2Y5","HamiltonianCycleCount"]

GraphData["2Y5","LCFSignature"]

GraphData["2Y5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["2Y5","UnitDistance"]

UnitDistanceGraphQ[GraphData["2Y5"],Debug->True]//Timing

GraphData["2Y5","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["2Y5","VertexList"],GraphData["2Y5","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["2Y5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["2Y5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["2Y5"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"2Y5",l=FindSubgraphUnitDistanceEmbedding[GraphData["2Y5"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["2Y5","Matchstick"]

GraphData["2Y5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["2Y5","Edges"]]

g0=GraphData["Y5","Graph",{"3D","UnitDistance"}][[1]]

v=GraphEmbedding[g0];
g=Graph[Range[20],UndirectedEdge@@@Join[EdgeList[g0],EdgeList[g0]/.i_Integer:>i+10],VertexCoordinates->Join[v,{#+2,#2,#3}&@@@v]]

RecognizeGraph@g

3D All

GraphData["2Y5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["2Y5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["2Y5","Polyhedral"]

GraphData["2Y5","Graph",{"3D","Polyhedron"}]

"3C5"

GraphData["3C5","StandardName"]

Primary

GraphData["3C5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3C5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3C5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3C5","EdgeList"]]

Default embedding

GraphPlot@GraphData["3C5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["3C5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["3C5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3C5","Graph","Circular"]//StyleGraphs

Planar

GraphData["3C5","Planar"]

GraphData["3C5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3C5",{"RCN","CN"}]

GraphData["3C5","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["3C5","Circulant"]

GraphData["3C5","Graph","Circulant"]//StyleGraphs

Circulant construction

gs=CirculantGraph1[Sequence@@#,GraphLayout->"UnitDistanceEmbedding"]&/@CirculantIndices[GraphData["3C5"]]

UnitDistanceGraphEmbeddingQ/@%

Halin

GraphData["3C5","Halin"]

GraphData["3C5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3C5","Rigid"]

GraphData["3C5","Graph","Rigid"]//StyleGraphs

LCF

GraphData["3C5","LCF"]

GraphData["3C5","HamiltonianCycleCount"]

GraphData["3C5","LCFSignature"]

GraphData["3C5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["3C5","UnitDistance"]

UnitDistanceGraphQ[GraphData["3C5"],Debug->True]//Timing

GraphData["3C5","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3C5","VertexList"],GraphData["3C5","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["3C5","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3C5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["3C5"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"3C5",l=FindSubgraphUnitDistanceEmbedding[GraphData["3C5"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["3C5","Matchstick"]

GraphData["3C5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3C5","Edges"]]

3D All

GraphData["3C5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3C5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3C5","Polyhedral"]

GraphData["3C5","Graph",{"3D","Polyhedron"}]

"3K3,3"

GraphData["3K3,3","StandardName"]

Primary

GraphData["3K3,3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3K3,3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3K3,3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3K3,3","EdgeList"]]

Default embedding

GraphPlot@GraphData["3K3,3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K3,3","Graph","All"]

gs=MyGraphUnion[#,3]&/@Rest[GraphData["K3,3","Graph","All"]]

Degenerate

GraphData["3K3,3","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["3K3,3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3K3,3","Graph","Circular"]//StyleGraphs

Planar

GraphData["3K3,3","Planar"]

GraphData["3K3,3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3K3,3",{"RCN","CN"}]

GraphData["3K3,3","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["3K3,3"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["3K3,3"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["3K3,3","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["3K3,3"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["3K3,3","Circulant"]

GraphData["3K3,3","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["3K3,3"]]

Halin

GraphData["3K3,3","Halin"]

GraphData["3K3,3","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3K3,3","Rigid"]

GraphData["3K3,3","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["3K3,3","Flexible"]

GraphData["3K3,3","Graph","Flexible"]//StyleGraphs

LCF

GraphData["3K3,3","LCF"]

GraphData["3K3,3","HamiltonianCycleCount"]

GraphData["3K3,3","LCFSignature"]

GraphData["3K3,3","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["3K3,3","UnitDistance"]

UnitDistanceGraphQ[GraphData["3K3,3"],Debug->True]//Timing

GraphData["3K3,3","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3K3,3","VertexList"],GraphData["3K3,3","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["3K3,3","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3K3,3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["3K3,3","Matchstick"]

GraphData["3K3,3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3K3,3","Edges"]]

3D All

GraphData["3K3,3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3K3,3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3K3,3","Polyhedral"]

GraphData["3K3,3","Graph",{"3D","Polyhedron"}]

"3K4"

GraphData["3K4","StandardName"]

Primary

GraphData["3K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["3K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

MyGraphUnion[#,3]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["3K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["3K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["3K4","Planar"]

GraphData["3K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3K4",{"RCN","CN"}]

GraphData["3K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["3K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["3K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["3K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["3K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["3K4","Circulant"]

GraphData["3K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices@GraphData["3K4"]

Halin

GraphData["3K4","Halin"]

GraphData["3K4","Graph","Halin"]//StyleGraphs

LCF

GraphData["3K4","LCF"]

GraphData["3K4","HamiltonianCycleCount"]

GraphData["3K4","LCFSignature"]

GraphData["3K4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["3K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["3K4"],Debug->True]//Timing

GraphData["3K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3K4","VertexList"],GraphData["3K4","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["3K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["3K4","Matchstick"]

GraphData["3K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3K4","Edges"]]

3D All

GraphData["3K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3K4","Polyhedral"]

GraphData["3K4","Graph",{"3D","Polyhedron"}]

"3K5"

GraphData["3K5","StandardName"]

Primary

GraphData["3K5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3K5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3K5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3K5","EdgeList"]]

Default embedding

GraphPlot@GraphData["3K5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K5","Graph","All"]

gs=MyGraphUnion[#,3]&/@GraphData["K5","Graph","All"]

Degenerate

GraphData["3K5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["3K5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3K5","Graph","Circular"]//StyleGraphs

MinimalCrossing

GraphData["3K5",{"RCN","CN"}]

GraphData["3K5","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["3K5"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["3K5"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["3K5","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["3K5"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["3K5","Circulant"]

GraphData["3K5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["3K5"]]

Halin

GraphData["3K5","Halin"]

GraphData["3K5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3K5","Graph","Rigid"]//StyleGraphs

LCF

GraphData["3K5","LCF"]

GraphData["3K5","HamiltonianCycleCount"]

GraphData["3K5","LCFSignature"]

GraphData["3K5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["3K5","UnitDistance"]

UnitDistanceGraphQ[GraphData["3K5"],Debug->True]//Timing

GraphData["3K5","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3K5","VertexList"],GraphData["3K5","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["3K5","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3K5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["3K5","Matchstick"]

GraphData["3K5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3K5","Edges"]]

3D All

GraphData["K5","Graph","3D"]

GraphData["3K5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3K5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3K5","Polyhedral"]

GraphData["3K5","Graph",{"3D","Polyhedron"}]

"3K6"

GraphData["3K6","StandardName"]

Primary

GraphData["3K6"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3K6","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3K6","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3K6","EdgeList"]]

Default embedding

GraphPlot@GraphData["3K6","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["3K6","Graph","All"]

gs=MyGraphUnion[#,3]&/@GraphData["K6","Graph","All"][[{1,3}]]

Degenerate

GraphData["3K6","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["3K6","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3K6","Graph","Circular"]//StyleGraphs

Planar

GraphData["3K6","Planar"]

GraphData["3K6","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3K6",{"RCN","CN"}]

GraphData["3K6","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["3K6"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["3K6"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["3K6","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["3K6"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["3K6","Circulant"]

GraphData["3K6","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["3K6"]]

Halin

GraphData["3K6","Halin"]

GraphData["3K6","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3K6","Graph","Rigid"]//StyleGraphs

LCF

GraphData["3K6","LCF"]

GraphData["3K6","HamiltonianCycleCount"]

GraphData["3K6","LCFSignature"]

GraphData["3K6","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["3K6","UnitDistance"]

UnitDistanceGraphQ[GraphData["3K6"],Debug->True]//Timing

GraphData["3K6","Graph","UnitDistance"]//StyleGraphs

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3K6"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"3K6",l=FindSubgraphUnitDistanceEmbedding[GraphData["3K6"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["3K6","Matchstick"]

GraphData["3K6","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3K6","Edges"]]

g0=GraphData["K6","Graph","3D"]

v=GraphEmbedding[g0];
g=Graph[Range[18],UndirectedEdge@@@Join[EdgeList[g0],EdgeList[g0]/.i_Integer:>i+6,EdgeList[g0]/.i_Integer:>i+12],VertexCoordinates->Join[v,{#+2,#2,#3}&@@@v,{#+4,#2,#3}&@@@v]]

RecognizeGraph@g

3D All

GraphData["3K6","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3K6","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3K6","Polyhedral"]

GraphData["3K6","Graph",{"3D","Polyhedron"}]

"3P2" == {"LadderRung", 3}

Names

GraphData["3P2","StandardName"]

GraphData["3P2","StandardNames"]

"3P3"

Names

GraphData["3P3","StandardName"]

GraphData["3P3","StandardNames"]

Primary

GraphData["3P3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3P3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3P3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3P3","EdgeList"]]

Default embedding

GraphPlot@GraphData["3P3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["3P3","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["3P3","Graph","Degenerate"]

Configuration

GraphData["3P3","Configuration"]

GraphData["3P3","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["3P3","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["3P3","Polyhedron"]

HoneycombToroidal construction

GraphData["3P3","NotationRules","HoneycombToroidal"]

HoneycombToroidalGraph[1,,]

RecognizeGraph[%]

GeneralizedHoneycombGraph construction

With[{n=9},Cases[Table[{k,g=GeneralizedHoneycombGraph[n,k],RecognizeGraph@g},{k,n-1}],{__,"3P3"}]]//Timing

g=GeneralizedHoneycombGraph[,]

RecognizeGraph@g

GeneralizedPetersen

GraphData["3P3","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["3P3","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["3P3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3P3","Graph","Circular"]//StyleGraphs

Planar

GraphData["3P3","Planar"]

GraphData["3P3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3P3",{"RCN","CN"}]

GraphData["3P3","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["3P3","Circulant"]

GraphData["3P3","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["3P3","ComplementGraph","Name"]

Line graph

GraphData["3P3","Line"]

LineGraphQ[GraphData["3P3"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "3P3"&]

RootGraph[GraphData["3P3"]]

Halin

GraphData["3P3","Halin"]

GraphData["3P3","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3P3","Rigid"]

GraphData["3P3","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["3P3","Flexible"]

GraphData["3P3","Graph","Flexible"]//StyleGraphs

LCF

GraphData["3P3","LCF"]

GraphData["3P3","HamiltonianCycleCount"]

GraphData["3P3","LCFSignature"]

GraphData["3P3","LCFNotations"]

GraphData["3P3","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["3P3","UnitDistance"]

UnitDistanceGraphQ[GraphData["3P3"],Debug->True]//Timing

GraphData["3P3","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3P3","VertexList"],GraphData["3P3","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["3P3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3P3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["3P3"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"3P3",l=FindSubgraphUnitDistanceEmbedding[GraphData["3P3"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["3P3","Matchstick"]

GraphData["3P3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3P3","Edges"]]

3D All

GraphData["3P3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3P3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3P3","Polyhedral"]

GraphData["3P3","Graph",{"3D","Polyhedron"}]

"3P4"

Names

GraphData["3P4","StandardName"]

GraphData["3P4","StandardNames"]

Primary

GraphData["3P4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3P4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3P4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3P4","EdgeList"]]

Default embedding

GraphPlot@GraphData["3P4","Edges"]

v=UnitCirclePoints[12];
g=RotateGraph[Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4],e[5,6,7,8],e[9,10,11,12]},VertexCoordinates->v,VertexLabels->Automatic],π]

RecognizeGraph[g]

UnitDistanceGraphEmbeddingQ[g]

Degenerate

GraphData["3P4","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["3P4","Graph","Degenerate"]

Configuration

GraphData["3P4","Configuration"]

GraphData["3P4","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["3P4","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["3P4","Polyhedron"]

HoneycombToroidal construction

GraphData["3P4","NotationRules","HoneycombToroidal"]

HoneycombToroidalGraph[]

RecognizeGraph[%]

GeneralizedHoneycombGraph construction

With[{n=12},Cases[Table[{k,g=GeneralizedHoneycombGraph[n,k],RecognizeGraph@g},{k,n-1}],{__,"3P4"}]]//Timing

g=GeneralizedHoneycombGraph[12,6]

RecognizeGraph@g

GeneralizedPetersen

GraphData["3P4","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["3P4","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["3P4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3P4","Graph","Circular"]//StyleGraphs

Planar

GraphData["3P4","Planar"]

GraphData["3P4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3P4",{"RCN","CN"}]

GraphData["3P4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["3P4","Circulant"]

GraphData["3P4","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["3P4","ComplementGraph","Name"]

Line graph

GraphData["3P4","Line"]

LineGraphQ[GraphData["3P4"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "3P4"&]

RootGraph[GraphData["3P4"]]

Halin

GraphData["3P4","Halin"]

GraphData["3P4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3P4","Rigid"]

GraphData["3P4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["3P4","Flexible"]

GraphData["3P4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["3P4","LCF"]

GraphData["3P4","HamiltonianCycleCount"]

GraphData["3P4","LCFSignature"]

GraphData["3P4","LCFNotations"]

GraphData["3P4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["3P4","UnitDistance"]

UnitDistanceGraphQ[GraphData["3P4"],Debug->True]//Timing

GraphData["3P4","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3P4","VertexList"],GraphData["3P4","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["3P4","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3P4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["3P4"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"3P4",l=FindSubgraphUnitDistanceEmbedding[GraphData["3P4"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["3P4","Matchstick"]

GraphData["3P4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3P4","Edges"]]

3D All

GraphData["3P4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3P4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3P4","Polyhedral"]

GraphData["3P4","Graph",{"3D","Polyhedron"}]

"3Y3"

GraphData["3Y3","StandardName"]

Primary

GraphData["3Y3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["3Y3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["3Y3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["3Y3","EdgeList"]]

Default embedding

GraphPlot@GraphData["3Y3","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,3]&/@Delete[GraphData["Y3","Graph","All"],6]

Degenerate

GraphData["3Y3","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["3Y3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["3Y3","Graph","Circular"]//StyleGraphs

Planar

GraphData["3Y3","Planar"]

GraphData["3Y3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["3Y3",{"RCN","CN"}]

GraphData["3Y3","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["3Y3"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["3Y3"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["3Y3","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["3Y3"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["3Y3","Circulant"]

GraphData["3Y3","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["3Y3"]]

Halin

GraphData["3Y3","Halin"]

GraphData["3Y3","Graph","Halin"]//StyleGraphs

Rigid

GraphData["3Y3","Rigid"]

GraphData["3Y3","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["3Y3","Flexible"]

GraphData["3Y3","Graph","Flexible"]//StyleGraphs

LCF

GraphData["3Y3","LCF"]

GraphData["3Y3","HamiltonianCycleCount"]

GraphData["3Y3","LCFSignature"]

GraphData["3Y3","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["3Y3","UnitDistance"]

UnitDistanceGraphQ[GraphData["3Y3"],Debug->True]//Timing

GraphData["3Y3","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["3Y3","VertexList"],GraphData["3Y3","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["3Y3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["3Y3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["3Y3"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"3Y3",l=FindSubgraphUnitDistanceEmbedding[GraphData["3Y3"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["3Y3","Matchstick"]

GraphData["3Y3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["3Y3","Edges"]]

g0=GraphData["Y3","Graph",{"3D","UnitDistance"}][[1]]

v=GraphEmbedding[g0];
g=Graph[Range[18],UndirectedEdge@@@Join[EdgeList[g0],EdgeList[g0]/.i_Integer:>i+6,EdgeList[g0]/.i_Integer:>i+12],VertexCoordinates->Join[v,{#+2,#2,#3}&@@@v,{#+4,#2,#3}&@@@v]]

RecognizeGraph@g

3D All

GraphData["3Y3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["3Y3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["3Y3","Polyhedral"]

GraphData["3Y3","Graph",{"3D","Polyhedron"}]

"3Y4" == "3Q3"

GraphData["3Y4","StandardName"]

"4K4"

GraphData["4K4","StandardName"]

Primary

GraphData["4K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["4K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["4K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["4K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["4K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["K4","Graph","All"]

gs=MyGraphUnion[#,4]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["4K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["4K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["4K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["4K4","Planar"]

GraphData["4K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["4K4",{"RCN","CN"}]

GraphData["4K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["4K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["4K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["4K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["4K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["4K4","Circulant"]

GraphData["4K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["4K4"]]

Halin

GraphData["4K4","Halin"]

GraphData["4K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["4K4","Graph","Rigid"]//StyleGraphs

LCF

GraphData["4K4","LCF"]

GraphData["4K4","HamiltonianCycleCount"]

GraphData["4K4","LCFSignature"]

GraphData["4K4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["4K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["4K4"],Debug->True]//Timing

GraphData["4K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["4K4","VertexList"],GraphData["4K4","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["4K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["4K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["4K4","Matchstick"]

GraphData["4K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["4K4","Edges"]]

3D All

GraphData["4K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["4K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["4K4","Polyhedral"]

GraphData["4K4","Graph",{"3D","Polyhedron"}]

"4K5"

GraphData["4K5","StandardName"]

Primary

GraphData["4K5"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["4K5","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["4K5","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["4K5","EdgeList"]]

Default embedding

GraphPlot@GraphData["4K5","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,4]&/@GraphData["K5","Graph","All"]

Degenerate

GraphData["4K5","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["4K5","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["4K5","Graph","Circular"]//StyleGraphs

Planar

GraphData["4K5","Planar"]

GraphData["4K5","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["4K5",{"RCN","CN"}]

GraphData["4K5","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["4K5"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["4K5"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["4K5","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["4K5"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["4K5","Circulant"]

GraphData["4K5","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["4K5"]]

Halin

GraphData["4K5","Halin"]

GraphData["4K5","Graph","Halin"]//StyleGraphs

Rigid

GraphData["4K5","Rigid"]

GraphData["4K5","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["4K5","Flexible"]

GraphData["4K5","Graph","Flexible"]//StyleGraphs

LCF

GraphData["4K5","LCF"]

GraphData["4K5","HamiltonianCycleCount"]

GraphData["4K5","LCFSignature"]

GraphData["4K5","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["4K5","UnitDistance"]

UnitDistanceGraphQ[GraphData["4K5"],Debug->True]//Timing

GraphData["4K5","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["4K5","VertexList"],GraphData["4K5","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["4K5","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["4K5"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["4K5","Matchstick"]

GraphData["4K5","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["4K5","Edges"]]

GraphData["K5","Graph","3D"]

3D All

GraphData["4K5","Graph",{"3D","All"}]

3D UnitDistance

GraphData["4K5","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["4K5","Polyhedral"]

GraphData["4K5","Graph",{"3D","Polyhedron"}]

"4P2" == {"LadderRung", 4}

Names

GraphData["4P2","StandardName"]

GraphData["4P2","StandardNames"]

"4P3"

Names

GraphData["4P3","StandardName"]

GraphData["4P3","StandardNames"]

Primary

GraphData["4P3"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["4P3","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["4P3","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["4P3","EdgeList"]]

Default embedding

GraphPlot@GraphData["4P3","Edges"]

v=CirclePoints[12];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3],e[4,5,6],e[7,8,9],e[10,11,12]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["4P3","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["4P3","Graph","Degenerate"]

Configuration

GraphData["4P3","Configuration"]

GraphData["4P3","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["4P3","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["4P3","Polyhedron"]

HoneycombToroidal construction

GraphData["4P3","NotationRules","HoneycombToroidal"]

HoneycombToroidalGraph[1,,]

RecognizeGraph[%]

GeneralizedHoneycombGraph construction

With[{n=12},Cases[Table[{k,g=GeneralizedHoneycombGraph[n,k],RecognizeGraph@g},{k,n-1}],{__,"4P3"}]]//Timing

g=GeneralizedHoneycombGraph[,]

RecognizeGraph@g

GeneralizedPetersen

GraphData["4P3","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["4P3","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["4P3","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["4P3","Graph","Circular"]//StyleGraphs

Planar

GraphData["4P3","Planar"]

GraphData["4P3","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["4P3",{"RCN","CN"}]

GraphData["4P3","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["4P3","Circulant"]

GraphData["4P3","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["4P3","ComplementGraph","Name"]

Line graph

GraphData["4P3","Line"]

LineGraphQ[GraphData["4P3"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "4P3"&]

RootGraph[GraphData["4P3"]]

Halin

GraphData["4P3","Halin"]

GraphData["4P3","Graph","Halin"]//StyleGraphs

Rigid

GraphData["4P3","Rigid"]

GraphData["4P3","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["4P3","Flexible"]

GraphData["4P3","Graph","Flexible"]//StyleGraphs

LCF

GraphData["4P3","LCF"]

GraphData["4P3","HamiltonianCycleCount"]

GraphData["4P3","LCFSignature"]

GraphData["4P3","LCFNotations"]

GraphData["4P3","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["4P3","UnitDistance"]

UnitDistanceGraphQ[GraphData["4P3"],Debug->True]//Timing

GraphData["4P3","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["4P3","VertexList"],GraphData["4P3","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["4P3","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["4P3"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["4P3"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"4P3",l=FindSubgraphUnitDistanceEmbedding[GraphData["4P3"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["4P3","Matchstick"]

GraphData["4P3","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["4P3","Edges"]]

3D All

GraphData["4P3","Graph",{"3D","All"}]

3D UnitDistance

GraphData["4P3","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["4P3","Polyhedral"]

GraphData["4P3","Graph",{"3D","Polyhedron"}]

"4P4"

Names

GraphData["4P4","StandardName"]

GraphData["4P4","StandardNames"]

Primary

GraphData["4P4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["4P4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["4P4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["4P4","EdgeList"]]

Default embedding

GraphPlot@GraphData["4P4","Edges"]

v=CirclePoints[16];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4],e[5,6,7,8],e[9,10,11,12],e[13,14,15,16]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData["4P4","Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData["4P4","Graph","Degenerate"]

Configuration

GraphData["4P4","Configuration"]

GraphData["4P4","Graph","Configuration"]//StyleGraphs

Perspective

GraphData["4P4","Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData["4P4","Polyhedron"]

HoneycombToroidal construction

GraphData["4P4","NotationRules","HoneycombToroidal"]

HoneycombToroidalGraph[1]

RecognizeGraph[%]

GeneralizedHoneycombGraph construction

With[{n=16},Cases[Table[{k,g=GeneralizedHoneycombGraph[n,k],RecognizeGraph@g},{k,n-1}],{__,"4P4"}]]//Timing

g=GeneralizedHoneycombGraph[16,8]

RecognizeGraph@g

GeneralizedPetersen

GraphData["4P4","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["4P4","Graph","IGraph"]//StyleGraphs

Bilateral

GraphData["4P4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["4P4","Graph","Circular"]//StyleGraphs

Planar

GraphData["4P4","Planar"]

GraphData["4P4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["4P4",{"RCN","CN"}]

GraphData["4P4","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["4P4","Circulant"]

GraphData["4P4","Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData["4P4","ComplementGraph","Name"]

Line graph

GraphData["4P4","Line"]

LineGraphQ[GraphData["4P4"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== "4P4"&]

RootGraph[GraphData["4P4"]]

Halin

GraphData["4P4","Halin"]

GraphData["4P4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["4P4","Rigid"]

GraphData["4P4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["4P4","Flexible"]

GraphData["4P4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["4P4","LCF"]

GraphData["4P4","HamiltonianCycleCount"]

GraphData["4P4","LCFSignature"]

GraphData["4P4","LCFNotations"]

GraphData["4P4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["4P4","UnitDistance"]

UnitDistanceGraphQ[GraphData["4P4"],Debug->True]//Timing

GraphData["4P4","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["4P4","VertexList"],GraphData["4P4","EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData["4P4","Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["4P4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["4P4"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{"4P4",l=FindSubgraphUnitDistanceEmbedding[GraphData["4P4"],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Matchstick

GraphData["4P4","Matchstick"]

GraphData["4P4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["4P4","Edges"]]

3D All

GraphData["4P4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["4P4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["4P4","Polyhedral"]

GraphData["4P4","Graph",{"3D","Polyhedron"}]

"4Y4" == "4Q3"

GraphData["4Y4","StandardName"]

"5K4"

GraphData["5K4","StandardName"]

Primary

GraphData["5K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["5K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["5K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["5K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["5K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,5]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["5K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["5K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["5K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["5K4","Planar"]

GraphData["5K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["5K4",{"RCN","CN"}]

GraphData["5K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["5K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["5K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["5K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["5K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["5K4","Circulant"]

GraphData["5K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["5K4"]]

Halin

GraphData["5K4","Halin"]

GraphData["5K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["5K4","Rigid"]

GraphData["5K4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["5K4","Flexible"]

GraphData["5K4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["5K4","LCF"]

GraphData["5K4","HamiltonianCycleCount"]

GraphData["5K4","LCFSignature"]

GraphData["5K4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["5K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["5K4"],Debug->True]//Timing

GraphData["5K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["5K4","VertexList"],GraphData["5K4","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["5K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["5K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["5K4","Matchstick"]

GraphData["5K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["5K4","Edges"]]

g=

g0=GraphData["K4","Graph",{"3D","UnitDistance"}][[1]]

v=GraphEmbedding[g0];
ee=EdgeList[g0];
g=Graph[Range[5 4],UndirectedEdge@@@Join@@Table[ee/.i_Integer:>i+4k,{k,0,4}],VertexCoordinates->Join@@Table[{#+3/2k,#2,#3}&@@@v,{k,0,4}]]

RecognizeGraph@g

3D All

GraphData["5K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["5K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["5K4","Polyhedral"]

GraphData["5K4","Graph",{"3D","Polyhedron"}]

"5Y4" == "4Q3"

GraphData["5Y4","StandardName"]

"6K4"

GraphData["6K4","StandardName"]

Primary

GraphData["6K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["6K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["6K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["6K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["6K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,6]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["6K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["6K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["6K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["6K4","Planar"]

GraphData["6K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["6K4",{"RCN","CN"}]

GraphData["6K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["6K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["6K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["6K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["6K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["6K4","Circulant"]

GraphData["6K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["6K4"]]

Halin

GraphData["6K4","Halin"]

GraphData["6K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["6K4","Rigid"]

GraphData["6K4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["6K4","Flexible"]

GraphData["6K4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["6K4","LCF"]

GraphData["6K4","HamiltonianCycleCount"]

GraphData["6K4","LCFSignature"]

GraphData["6K4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["6K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["6K4"],Debug->True]//Timing

GraphData["6K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["6K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["6K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["6K4","Matchstick"]

GraphData["6K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["6K4","Edges"]]

g0=GraphData["K4","Graph",{"3D","UnitDistance"}][[1]]

v=GraphEmbedding[g0];
ee=EdgeList[g0];
g=Graph[Range[5 4],UndirectedEdge@@@Join@@Table[ee/.i_Integer:>i+4k,{k,0,5}],VertexCoordinates->Join@@Table[{#+3/2k,#2,#3}&@@@v,{k,0,5}]]

RecognizeGraph@g

3D All

GraphData["6K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["6K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["6K4","Polyhedral"]

GraphData["6K4","Graph",{"3D","Polyhedron"}]

"6Y4" == "6Q3"

GraphData["6Y4","StandardName"]

"7K4"

GraphData["7K4","StandardName"]

Primary

GraphData["7K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["7K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["7K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["7K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["7K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,7]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["7K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["7K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["7K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["7K4","Planar"]

GraphData["7K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["7K4",{"RCN","CN"}]

GraphData["7K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["7K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["7K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["7K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["7K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["7K4","Circulant"]

GraphData["7K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["7K4"]]

Halin

GraphData["7K4","Halin"]

GraphData["7K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["7K4","Rigid"]

GraphData["7K4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["7K4","Flexible"]

GraphData["7K4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["7K4","LCF"]

GraphData["7K4","HamiltonianCycleCount"]

GraphData["7K4","LCFSignature"]

GraphData["7K4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["7K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["7K4"],Debug->True]//Timing

GraphData["7K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["7K4","VertexList"],GraphData["7K4","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["7K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

Matchstick

GraphData["7K4","Matchstick"]

GraphData["7K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["7K4","Edges"]]

3D All

GraphData["7K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["7K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["7K4","Polyhedral"]

GraphData["7K4","Graph",{"3D","Polyhedron"}]

"7Y4" == "7Q3"

GraphData["7Y4","StandardName"]

"8K4"

GraphData["8K4","StandardName"]

Primary

GraphData["8K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["8K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["8K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["8K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["8K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,8]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["8K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["8K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["8K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["8K4","Planar"]

GraphData["8K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["8K4",{"RCN","CN"}]

GraphData["8K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["8K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["8K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["8K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["8K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["8K4","Circulant"]

GraphData["8K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["8K4"]]

Halin

GraphData["8K4","Halin"]

GraphData["8K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["8K4","Rigid"]

GraphData["8K4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["8K4","Flexible"]

GraphData["8K4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["8K4","LCF"]

GraphData["8K4","HamiltonianCycleCount"]

GraphData["8K4","LCFSignature"]

GraphData["8K4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["8K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["8K4"],Debug->True]//Timing

GraphData["8K4","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["8K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["8K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["8K4","Matchstick"]

GraphData["8K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["8K4","Edges"]]

3D All

GraphData["8K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["8K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["8K4","Polyhedral"]

GraphData["8K4","Graph",{"3D","Polyhedron"}]

"8Y4" == "8Q3"

GraphData["8Y4","StandardName"]

"9K4"

GraphData["9K4","StandardName"]

Primary

GraphData["9K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["9K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["9K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["9K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["9K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=MyGraphUnion[#,9]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["9K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["9K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["9K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["9K4","Planar"]

GraphData["9K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["9K4",{"RCN","CN"}]

GraphData["9K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["9K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["9K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["9K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["9K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["9K4","Circulant"]

GraphData["9K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["9K4"]]

Halin

GraphData["9K4","Halin"]

GraphData["9K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["9K4","Rigid"]

GraphData["9K4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["9K4","Flexible"]

GraphData["9K4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["9K4","LCF"]

GraphData["9K4","HamiltonianCycleCount"]

GraphData["9K4","LCFSignature"]

GraphData["9K4","Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData["9K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["9K4"],Debug->True]//Timing

GraphData["9K4","Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["9K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["9K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["9K4","Matchstick"]

GraphData["9K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["9K4","Edges"]]

3D All

GraphData["9K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["9K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["9K4","Polyhedral"]

GraphData["9K4","Graph",{"3D","Polyhedron"}]

"9Y4" == "9Q3"

GraphData["9Y4","StandardName"]

"10K4"

GraphData["10K4","StandardName"]

Primary

GraphData["10K4"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["10K4","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["10K4","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["10K4","EdgeList"]]

Default embedding

GraphPlot@GraphData["10K4","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Union construction

gs=MyGraphUnion[#,10]&/@GraphData["K4","Graph","All"][[{1,2,6}]]

Degenerate

GraphData["10K4","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["10K4","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["10K4","Graph","Circular"]//StyleGraphs

Planar

GraphData["10K4","Planar"]

GraphData["10K4","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["10K4",{"RCN","CN"}]

GraphData["10K4","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["10K4"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["10K4"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["10K4","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["10K4"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["10K4","Circulant"]

GraphData["10K4","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["10K4"]]

Halin

GraphData["10K4","Halin"]

GraphData["10K4","Graph","Halin"]//StyleGraphs

Rigid

GraphData["10K4","Rigid"]

GraphData["10K4","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["10K4","Flexible"]

GraphData["10K4","Graph","Flexible"]//StyleGraphs

LCF

GraphData["10K4","LCF"]

GraphData["10K4","HamiltonianCycleCount"]

GraphData["10K4","LCFSignature"]

GraphData["10K4","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["10K4","UnitDistance"]

UnitDistanceGraphQ[GraphData["10K4"],Debug->True]//Timing

GraphData["10K4","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["10K4","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["10K4"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["10K4","Matchstick"]

GraphData["10K4","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["10K4","Edges"]]

3D All

GraphData["10K4","Graph",{"3D","All"}]

3D UnitDistance

GraphData["10K4","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["10K4","Polyhedral"]

GraphData["10K4","Graph",{"3D","Polyhedron"}]

"10Y4" == "10Q3"

GraphData["10Y4","StandardName"]

"Two4Antiprisms"

GraphData["Two4Antiprisms","StandardName"]

Primary

GraphData["Two4Antiprisms"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["Two4Antiprisms","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["Two4Antiprisms","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["Two4Antiprisms","EdgeList"]]

Default embedding

GraphPlot@GraphData["Two4Antiprisms","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData[{"Antiprism",4},"Graph","All"]

gs=MyGraphUnion[#,2]&/@Take[GraphData[{"Antiprism",4},"Graph","All"],5]

Degenerate

GraphData["Two4Antiprisms","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["Two4Antiprisms","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["Two4Antiprisms","Graph","Circular"]//StyleGraphs

Planar

GraphData["Two4Antiprisms","Planar"]

GraphData["Two4Antiprisms","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["Two4Antiprisms",{"RCN","CN"}]

GraphData["Two4Antiprisms","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["Two4Antiprisms"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["Two4Antiprisms"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["Two4Antiprisms","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["Two4Antiprisms"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["Two4Antiprisms","Circulant"]

GraphData["Two4Antiprisms","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["Two4Antiprisms"]]

Halin

GraphData["Two4Antiprisms","Halin"]

GraphData["Two4Antiprisms","Graph","Halin"]//StyleGraphs

Rigid

GraphData["Two4Antiprisms","Graph","Rigid"]//StyleGraphs

LCF

GraphData["Two4Antiprisms","LCF"]

GraphData["Two4Antiprisms","HamiltonianCycleCount"]

GraphData["Two4Antiprisms","LCFSignature"]

GraphData["Two4Antiprisms","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["Two4Antiprisms","UnitDistance"]

UnitDistanceGraphQ[GraphData["Two4Antiprisms"],Debug->True]//Timing

GraphData["Two4Antiprisms","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["Two4Antiprisms","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["Two4Antiprisms"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["Two4Antiprisms","Matchstick"]

GraphData["Two4Antiprisms","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["Two4Antiprisms","Edges"]]

g0=GraphData[{"Antiprism",4},"Graph","3D"]

v=GraphEmbedding[g0];
g=Graph[Range[16],Join[EdgeList[g0],EdgeList[g0]/.i_Integer:>i+8],VertexCoordinates->Join[v,{5/2+#,#2,#3}&@@@v]]

RecognizeGraph@g

3D All

GraphData["Two4Antiprisms","Graph",{"3D","All"}]

3D UnitDistance

GraphData["Two4Antiprisms","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["Two4Antiprisms","Polyhedral"]

GraphData["Two4Antiprisms","Graph",{"3D","Polyhedron"}]

"TwoOctahedra"

GraphData["TwoOctahedra","StandardName"]

Primary

GraphData["TwoOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["TwoOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["TwoOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["TwoOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["TwoOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

MyGraphUnion[#,2]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["TwoOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["TwoOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["TwoOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["TwoOctahedra","Planar"]

GraphData["TwoOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["TwoOctahedra",{"RCN","CN"}]

GraphData["TwoOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["TwoOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["TwoOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["TwoOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["TwoOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["TwoOctahedra","Circulant"]

GraphData["TwoOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["TwoOctahedra"]]

Halin

GraphData["TwoOctahedra","Halin"]

GraphData["TwoOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["TwoOctahedra","LCF"]

GraphData["TwoOctahedra","HamiltonianCycleCount"]

GraphData["TwoOctahedra","LCFSignature"]

GraphData["TwoOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["TwoOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["TwoOctahedra"],Debug->True]//Timing

GraphData["TwoOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["TwoOctahedra","VertexList"],GraphData["TwoOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["TwoOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["TwoOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["TwoOctahedra","Matchstick"]

GraphData["TwoOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["TwoOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=2},Graph[Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],VertexCoordinates->Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,n-1}]/2]]

EdgeLengths@g//FullSimplify

Polyhedron compound construction

Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronTwoCompound"]&]

3D All

GraphData["TwoOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["TwoOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["TwoOctahedra","Polyhedral"]

GraphData["TwoOctahedra","Graph",{"3D","Polyhedron"}]

"TwoSixteenCells"

GraphData["TwoSixteenCells","StandardName"]

Primary

GraphData["TwoSixteenCells"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["TwoSixteenCells","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["TwoSixteenCells","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["TwoSixteenCells","EdgeList"]]

Default embedding

GraphPlot@GraphData["TwoSixteenCells","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

GraphData["SixteenCellGraph","Graph","All"]

GraphData["SixteenCellGraph","Graph","MinimalRectilinearCrossing"]

gs=MyGraphUnion[#,2]&/@GraphData["SixteenCellGraph","Graph","All"][[{1,2,-2}]]

Degenerate

GraphData["TwoSixteenCells","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["TwoSixteenCells","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["TwoSixteenCells","Graph","Circular"]//StyleGraphs

Planar

GraphData["TwoSixteenCells","Planar"]

GraphData["TwoSixteenCells","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["TwoSixteenCells",{"RCN","CN"}]

GraphData["TwoSixteenCells","Graph","MinimalCrossing"]//StyleGraphs

MinimalRectilinearCrossing

GraphData["TwoSixteenCells",{"RCN","CN"}]

GraphData["TwoSixteenCells","Graph","MinimalRectilinearCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["TwoSixteenCells"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["TwoSixteenCells"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["TwoSixteenCells","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["TwoSixteenCells"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["TwoSixteenCells","Circulant"]

GraphData["TwoSixteenCells","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["TwoSixteenCells"]]

Halin

GraphData["TwoSixteenCells","Halin"]

GraphData["TwoSixteenCells","Graph","Halin"]//StyleGraphs

Rigid

GraphData["TwoSixteenCells","Graph","Rigid"]//StyleGraphs

LCF

GraphData["TwoSixteenCells","LCF"]

GraphData["TwoSixteenCells","HamiltonianCycleCount"]

GraphData["TwoSixteenCells","LCFSignature"]

GraphData["TwoSixteenCells","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["TwoSixteenCells","UnitDistance"]

UnitDistanceGraphQ[GraphData["TwoSixteenCells"],Debug->True]//Timing

GraphData["TwoSixteenCells","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["TwoSixteenCells","VertexList"],GraphData["TwoSixteenCells","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["TwoSixteenCells","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["TwoSixteenCells"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["TwoSixteenCells","Matchstick"]

GraphData["TwoSixteenCells","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["TwoSixteenCells","Edges"]]

g0=GraphData["SixteenCellGraph","Graph","3D"]

v=GraphEmbedding[g0];
g=Graph[Range[16],Join[EdgeList[g0],EdgeList[g0]/.i_Integer:>i+8],VertexCoordinates->Join[v,{2+#,#2,#3}&@@@v]]

RecognizeGraph@g

3D All

GraphData["TwoSixteenCells","Graph",{"3D","All"}]

3D UnitDistance

GraphData["TwoSixteenCells","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["TwoSixteenCells","Polyhedral"]

GraphData["TwoSixteenCells","Graph",{"3D","Polyhedron"}]

"ThreeOctahedra"

GraphData["ThreeOctahedra","StandardName"]

Primary

GraphData["ThreeOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["ThreeOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["ThreeOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["ThreeOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["ThreeOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,3]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["ThreeOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["ThreeOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["ThreeOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["ThreeOctahedra","Planar"]

GraphData["ThreeOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["ThreeOctahedra",{"RCN","CN"}]

GraphData["ThreeOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["ThreeOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["ThreeOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["ThreeOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["ThreeOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["ThreeOctahedra","Circulant"]

GraphData["ThreeOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["ThreeOctahedra"]]

Halin

GraphData["ThreeOctahedra","Halin"]

GraphData["ThreeOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["ThreeOctahedra","LCF"]

GraphData["ThreeOctahedra","HamiltonianCycleCount"]

GraphData["ThreeOctahedra","LCFSignature"]

GraphData["ThreeOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["ThreeOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["ThreeOctahedra"],Debug->True]//Timing

GraphData["ThreeOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["ThreeOctahedra","VertexList"],GraphData["ThreeOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["ThreeOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["ThreeOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["ThreeOctahedra","Matchstick"]

GraphData["ThreeOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["ThreeOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=3},Graph[Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],VertexCoordinates->Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,n-1}]/2]]

UnitDistanceGraphEmbeddingQ[g]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronThreeCompound"]&]

g=PolyhedronGraph[PolyhedronData[polys[[1]],"Polyhedron"]]

UnitDistanceGraphEmbeddingQ[g]

3D All

GraphData["ThreeOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["ThreeOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["ThreeOctahedra","Polyhedral"]

GraphData["ThreeOctahedra","Graph",{"3D","Polyhedron"}]

"FourOctahedra"

GraphData["FourOctahedra","StandardName"]

Primary

GraphData["FourOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["FourOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["FourOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["FourOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["FourOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,4]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["FourOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["FourOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["FourOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["FourOctahedra","Planar"]

GraphData["FourOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["FourOctahedra",{"RCN","CN"}]

GraphData["FourOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["FourOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["FourOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["FourOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["FourOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["FourOctahedra","Circulant"]

GraphData["FourOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["FourOctahedra"]]

Halin

GraphData["FourOctahedra","Halin"]

GraphData["FourOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["FourOctahedra","LCF"]

GraphData["FourOctahedra","HamiltonianCycleCount"]

GraphData["FourOctahedra","LCFSignature"]

GraphData["FourOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["FourOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["FourOctahedra"],Debug->True]//Timing

GraphData["FourOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["FourOctahedra","VertexList"],GraphData["FourOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["FourOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["FourOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["FourOctahedra","Matchstick"]

GraphData["FourOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["FourOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=4},Graph[Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],VertexCoordinates->Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,n-1}]/2]]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronFourCompound"]&]

PolyhedronData/@polys

The first of these has distinct vertices; in the second, some vertices are shared

PolyhedronData[#,"Classes"]&/@polys

gs=PolyhedronGraph[PolyhedronData[#,"Polyhedron"]]&/@polys

IsomorphicGraphQ@@gs

g=gs[[1]]

3D All

GraphData["FourOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["FourOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["FourOctahedra","Polyhedral"]

GraphData["FourOctahedra","Graph",{"3D","Polyhedron"}]

"FiveOctahedra"

GraphData["FiveOctahedra","StandardName"]

Primary

GraphData["FiveOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["FiveOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["FiveOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["FiveOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["FiveOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,5]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["FiveOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["FiveOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["FiveOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["FiveOctahedra","Planar"]

GraphData["FiveOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["FiveOctahedra",{"RCN","CN"}]

GraphData["FiveOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["FiveOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["FiveOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["FiveOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["FiveOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["FiveOctahedra","Circulant"]

GraphData["FiveOctahedra","Graph","Circulant"]//StyleGraphs

Circular construction

CirculantGraph1@@@CirculantIndices[GraphData["FiveOctahedra"]]

Halin

GraphData["FiveOctahedra","Halin"]

GraphData["FiveOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["FiveOctahedra","LCF"]

GraphData["FiveOctahedra","HamiltonianCycleCount"]

GraphData["FiveOctahedra","LCFSignature"]

GraphData["FiveOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["FiveOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["FiveOctahedra"],Debug->True]//Timing

GraphData["FiveOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["FiveOctahedra","VertexList"],GraphData["FiveOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["FiveOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["FiveOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["FiveOctahedra","Matchstick"]

GraphData["FiveOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["FiveOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=5},Graph[Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],VertexCoordinates->Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,n-1}]/2]]

UnitDistanceGraphEmbeddingQ[g]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronFiveCompound"]&]

PolyhedronData/@polys

PolyhedronData[#,"Classes"]&/@polys

gs=PolyhedronGraph[PolyhedronData[#,"Polyhedron"]]&/@polys

g=gs[[1]]

3D All

GraphData["FiveOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["FiveOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["FiveOctahedra","Polyhedral"]

GraphData["FiveOctahedra","Graph",{"3D","Polyhedron"}]

"SixOctahedra"

GraphData["SixOctahedra","StandardName"]

Primary

GraphData["SixOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["SixOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["SixOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["SixOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["SixOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,6]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["SixOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["SixOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["SixOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["SixOctahedra","Planar"]

GraphData["SixOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["SixOctahedra",{"RCN","CN"}]

GraphData["SixOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["SixOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["SixOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["SixOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["SixOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["SixOctahedra","Circulant"]

GraphData["SixOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["SixOctahedra"]]

Halin

GraphData["SixOctahedra","Halin"]

GraphData["SixOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["SixOctahedra","LCF"]

GraphData["SixOctahedra","HamiltonianCycleCount"]

GraphData["SixOctahedra","LCFSignature"]

GraphData["SixOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["SixOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["SixOctahedra"],Debug->True]//Timing

GraphData["SixOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["SixOctahedra","VertexList"],GraphData["SixOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["SixOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["SixOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["SixOctahedra","Matchstick"]

GraphData["SixOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["SixOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=6},Graph[
Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],
VertexCoordinates->Join[
Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,5-1}],
Join@@Table[#+{(4-1/2)i,-(4-1/2),0}&/@v,{i,0 ,n-6}]
]/2]]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronSixCompound"]&]

3D All

GraphData["SixOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["SixOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["SixOctahedra","Polyhedral"]

GraphData["SixOctahedra","Graph",{"3D","Polyhedron"}]

"SevenOctahedra"

GraphData["SevenOctahedra","StandardName"]

Primary

GraphData["SevenOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["SevenOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["SevenOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["SevenOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["SevenOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,7]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["SevenOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["SevenOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["SevenOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["SevenOctahedra","Planar"]

GraphData["SevenOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["SevenOctahedra",{"RCN","CN"}]

GraphData["SevenOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["SevenOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["SevenOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["SevenOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["SevenOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["SevenOctahedra","Circulant"]

GraphData["SevenOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["SevenOctahedra"]]

Halin

GraphData["SevenOctahedra","Halin"]

GraphData["SevenOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["SevenOctahedra","LCF"]

GraphData["SevenOctahedra","HamiltonianCycleCount"]

GraphData["SevenOctahedra","LCFSignature"]

GraphData["SevenOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["SevenOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["SevenOctahedra"],Debug->True]//Timing

GraphData["SevenOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["SevenOctahedra","VertexList"],GraphData["SevenOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["SevenOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["SevenOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["SevenOctahedra","Matchstick"]

GraphData["SevenOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["SevenOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=7},Graph[
Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],
VertexCoordinates->Join[
Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,5-1}],
Join@@Table[#+{(4-1/2)i,-(4-1/2),0}&/@v,{i,0 ,n-6}]
]/2]]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronSevenCompound"]&]

3D All

GraphData["SevenOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["SevenOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["SevenOctahedra","Polyhedral"]

GraphData["SevenOctahedra","Graph",{"3D","Polyhedron"}]

"EightOctahedra"

GraphData["EightOctahedra","StandardName"]

Primary

GraphData["EightOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["EightOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["EightOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["EightOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["EightOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,8]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["EightOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["EightOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["EightOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["EightOctahedra","Planar"]

GraphData["EightOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["EightOctahedra",{"RCN","CN"}]

GraphData["EightOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["EightOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["EightOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["EightOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["EightOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["EightOctahedra","Circulant"]

GraphData["EightOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["EightOctahedra"]]

Halin

GraphData["EightOctahedra","Halin"]

GraphData["EightOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["EightOctahedra","LCF"]

GraphData["EightOctahedra","HamiltonianCycleCount"]

GraphData["EightOctahedra","LCFSignature"]

GraphData["EightOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["EightOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["EightOctahedra"],Debug->True]//Timing

GraphData["EightOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["EightOctahedra","VertexList"],GraphData["EightOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["EightOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["EightOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["EightOctahedra","Matchstick"]

GraphData["EightOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["EightOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=8},Graph[
Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],
VertexCoordinates->Join[
Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,5-1}],
Join@@Table[#+{(4-1/2)i,-(4-1/2),0}&/@v,{i,0 ,n-6}]
]/2]]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronEightCompound"]&]

3D All

GraphData["EightOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["EightOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["EightOctahedra","Polyhedral"]

GraphData["EightOctahedra","Graph",{"3D","Polyhedron"}]

"NineOctahedra"

GraphData["NineOctahedra","StandardName"]

Primary

GraphData["NineOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["NineOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["NineOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["NineOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["NineOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,9]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["NineOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["NineOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["NineOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["NineOctahedra","Planar"]

GraphData["NineOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["NineOctahedra",{"RCN","CN"}]

GraphData["NineOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["NineOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["NineOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["NineOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["NineOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["NineOctahedra","Circulant"]

GraphData["NineOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["NineOctahedra"]]

Halin

GraphData["NineOctahedra","Halin"]

GraphData["NineOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["NineOctahedra","LCF"]

GraphData["NineOctahedra","HamiltonianCycleCount"]

GraphData["NineOctahedra","LCFSignature"]

GraphData["NineOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["NineOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["NineOctahedra"],Debug->True]//Timing

GraphData["NineOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["NineOctahedra","VertexList"],GraphData["NineOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["NineOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["NineOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["NineOctahedra","Matchstick"]

GraphData["NineOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["NineOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=9},Graph[
Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],
VertexCoordinates->Join[
Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,5-1}],
Join@@Table[#+{(4-1/2)i,-(4-1/2),0}&/@v,{i,0 ,n-6}]
]/2]]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronNineCompound"]&]

3D All

GraphData["NineOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["NineOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["NineOctahedra","Polyhedral"]

GraphData["NineOctahedra","Graph",{"3D","Polyhedron"}]

"TenOctahedra"

GraphData["TenOctahedra","StandardName"]

Primary

GraphData["TenOctahedra"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData["TenOctahedra","Graph","All"]//StyleGraphs

Inexact

Select[GraphData["TenOctahedra","Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData["TenOctahedra","EdgeList"]]

Default embedding

GraphPlot@GraphData["TenOctahedra","Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Graph union construction

gs=MyGraphUnion[#,10]&/@GraphData["OctahedralGraph","Graph","All"][[{1,2,9,10}]]

Degenerate

GraphData["TenOctahedra","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["TenOctahedra","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["TenOctahedra","Graph","Circular"]//StyleGraphs

Planar

GraphData["TenOctahedra","Planar"]

GraphData["TenOctahedra","Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData["TenOctahedra",{"RCN","CN"}]

GraphData["TenOctahedra","Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData["TenOctahedra"],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData["TenOctahedra"],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData["TenOctahedra","V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData["TenOctahedra"],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData["TenOctahedra","Circulant"]

GraphData["TenOctahedra","Graph","Circulant"]//StyleGraphs

Circulant construction

CirculantGraph1@@@CirculantIndices[GraphData["TenOctahedra"]]

Halin

GraphData["TenOctahedra","Halin"]

GraphData["TenOctahedra","Graph","Halin"]//StyleGraphs

LCF

GraphData["TenOctahedra","LCF"]

GraphData["TenOctahedra","HamiltonianCycleCount"]

GraphData["TenOctahedra","LCFSignature"]

GraphData["TenOctahedra","Graph","LCF"]//StyleGraphs

UnitDistance

GraphData["TenOctahedra","UnitDistance"]

UnitDistanceGraphQ[GraphData["TenOctahedra"],Debug->True]//Timing

GraphData["TenOctahedra","Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["TenOctahedra","VertexList"],GraphData["TenOctahedra","EdgeList"]]]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]]]&/@Complement@@(GraphData["TenOctahedra","Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["TenOctahedra"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData["TenOctahedra","Matchstick"]

GraphData["TenOctahedra","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["TenOctahedra","Edges"]]

3D union construction

g0=GraphData["OctahedralGraph","Graph",{"3D","Canonical"}][[1]];
v=GraphEmbedding[g0];
g=With[{n=10},Graph[
Range[6n],Join@@Table[EdgeList[g0]/.k_Integer:>k+6i,{i,0,n-1}],
VertexCoordinates->Join[
Join@@Table[#+i{4-1/2,0,0}&/@v,{i,0 ,5-1}],
Join@@Table[#+{(4-1/2)i,-(4-1/2),0}&/@v,{i,0 ,n-6}]
]/2]]

Polyhedron compound construction

polys=Select[PolyhedronData["Compound"],!FreeQ[#,"OctahedronTenCompound"]&]

PolyhedronData/@polys

PolyhedronData[#,"Classes"]&/@polys

gs=PolyhedronGraph[PolyhedronData[#,"Polyhedron"]]&/@polys

g=gs[[1]]

UnitDistanceGraphEmbeddingQ@g

3D All

GraphData["TenOctahedra","Graph",{"3D","All"}]

3D UnitDistance

GraphData["TenOctahedra","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["TenOctahedra","Polyhedral"]

GraphData["TenOctahedra","Graph",{"3D","Polyhedron"}]