Quasi-Cubic Graph

Author

Eric W. Weisstein
February 10, 2023

This notebook downloaded from http://mathworld.wolfram.com/notebooks/GraphTheory/Quasi-CubicGraph.nb.

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

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

Examples

quasicubic=SortBy[GraphData[#,{"V","#"}]&/@Select[GraphData["QuasiRegular"],QuasiRegularGraphQ[GraphData[#],3]&],First];

TextGrid[{#[[1,1]],#[[All,2]]}&/@SplitBy[quasicubic,First],Dividers->All]

GraphicsGrid[Partition[Show[GraphData[#]//StyleGraphs,PlotLabel->TextCell[Style[GraphData[#,"Name"],Directive[Black,Italic,FontFamily->"Times New Roman"]],TextAlignment->Center,PageWidth->110]]&/@quasicubic[[All,2]],UpTo[6]],ImageSize->700,Alignment->Top,Dividers->All]

Enumerate

Connected

Do[Print[{n,Length[ConnectedGraphs[n]]//Timing}],{n,9}]//Timing

Table[Count[ConnectedGraphs[n],_?(QuasiRegularGraphQ[#,3]&)],{n,9}]

Table[Count[GraphData["Connected",n],_?(QuasiRegularGraphQ[GraphData[#],3]&)],{n,10}]

All

Do[Print[{n,Length[Graphs[n]]//Timing}],{n,9}]

Table[Count[Graphs[n],_?(QuasiRegularGraphQ[#,3]&)],{n,9}]

Table[Count[GraphData[n],_?(QuasiRegularGraphQ[GraphData[#],3]&)],{n,10}]

RecognizeGraph/@Select[Graphs[9],QuasiRegularGraphQ[#,3]&]

new=Complement[%,GraphData[All]]

Graphs[#][[#2]]&@@@new

(RecognizeGraph/@ConnectedGraphComponents[#])&/@%

Table

TextGrid[DeleteCases[Table[{n,gs=Select[GraphData[n],QuasiRegularGraphQ[GraphData[#],3]&],Show[GraphData[#],ImageSize->50]&/@gs},{n,10}],{_,{},_}],Dividers->All]

Embeddings

<<MathWorld`Graphs`

GraphData["QuasiCubic*"]

9

Intersection[GraphData["QuasiCubic*"],GraphData[9]]

{"QuasiCubic", {9, 1}}

GraphData[{"QuasiCubic",{9,1}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,1}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,1}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,1}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,1}},"EdgeList"]]

Degenerate

GraphData[{"QuasiCubic",{9,1}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"QuasiCubic",{9,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,1}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,1}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,1}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,1}},"Planar"]

GraphData[{"QuasiCubic",{9,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,1}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

g=RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,1}}],"CrossingNumber"->-1]]

RecognizeGraph[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,1}},"Circulant"]

GraphData[{"QuasiCubic",{9,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,1}},"Halin"]

GraphData[{"QuasiCubic",{9,1}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,1}},"LCF"]

GraphData[{"QuasiCubic",{9,1}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,1}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,1}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,1}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"QuasiCubic",{9,1}},"Matchstick"]

GraphData[{"QuasiCubic",{9,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,1}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,1}},"Graph",{"3D","UnitDistance"}]

{"QuasiCubic", {9, 2}}

GraphData[{"QuasiCubic",{9,2}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,2}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,2}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,2}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"QuasiCubic",{9,2}},"Edges"],Pi/2]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,2}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,2}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,2}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,2}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,2}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,2}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"QuasiCubic",{9,2}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"QuasiCubic",{9,2}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

RegionIntersection[Line[v[[{1,6}]]],Line[v[[{5,8}]]]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

LCF

GraphData[{"QuasiCubic",{9,2}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,2}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,2}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,2}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,2}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"QuasiCubic",{9,2}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"QuasiCubic",{9,2}},"Edges"],Pi/2]

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"QuasiCubic",{9,2}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"QuasiCubic",{9,2}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"QuasiCubic",{9,2}}]]

Graphics3D[{FaceForm[Green,Red],poly}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"QuasiCubic", {9, 3}}

GraphData[{"QuasiCubic",{9,3}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,3}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,3}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,3}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,3}},"EdgeList"]]

Degenerate

GraphData[{"QuasiCubic",{9,3}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"QuasiCubic",{9,3}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,3}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,3}}],All][[All,All,1]]]

CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,3}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,3}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,3}},"Planar"]

GraphData[{"QuasiCubic",{9,3}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,3}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

g=RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,3}}],"CrossingNumber"->-1]]

RecognizeGraph[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,3}},"Circulant"]

GraphData[{"QuasiCubic",{9,3}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,3}},"Halin"]

GraphData[{"QuasiCubic",{9,3}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,3}},"LCF"]

GraphData[{"QuasiCubic",{9,3}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,3}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,3}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,3}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"QuasiCubic",{9,3}},"Matchstick"]

GraphData[{"QuasiCubic",{9,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,3}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,3}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,3}},"Graph",{"3D","UnitDistance"}]

{"QuasiCubic", {9, 4}}

GraphData[{"QuasiCubic",{9,4}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,4}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,4}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,4}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,4}},"EdgeList"]]

Degenerate

GraphData[{"QuasiCubic",{9,4}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"QuasiCubic",{9,4}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,4}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,4}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,4}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,4}},"Planar"]

GraphData[{"QuasiCubic",{9,4}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,4}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

g=RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,4}}],"CrossingNumber"->-1]]

RecognizeGraph[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,4}},"Circulant"]

GraphData[{"QuasiCubic",{9,4}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,4}},"Halin"]

GraphData[{"QuasiCubic",{9,4}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,4}},"LCF"]

GraphData[{"QuasiCubic",{9,4}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,4}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,4}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,4}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"QuasiCubic",{9,4}},"Matchstick"]

GraphData[{"QuasiCubic",{9,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,4}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,4}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,4}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 5}}

GraphData[{"QuasiCubic",{9,5}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,5}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,5}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,5}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,5}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,5}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,5}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,5}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,5}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,5}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,5}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{9,5}},"Planar"]

GraphData[{"QuasiCubic",{9,5}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,5}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,5}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,5}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,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[{"QuasiCubic",{9,5}},"Circulant"]

GraphData[{"QuasiCubic",{9,5}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,5}},"Halin"]

GraphData[{"QuasiCubic",{9,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,5}},"Rigid"]

GraphData[{"QuasiCubic",{9,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,5}},"Flexible"]

GraphData[{"QuasiCubic",{9,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,5}},"LCF"]

GraphData[{"QuasiCubic",{9,5}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,5}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,5}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,5}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,5}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,5}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,5}},"VertexList"],GraphData[{"QuasiCubic",{9,5}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,5}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,5}},"Matchstick"]

GraphData[{"QuasiCubic",{9,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,5}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,5}},"Polyhedral"]

{"QuasiCubic", {9, 6}}

GraphData[{"QuasiCubic",{9,6}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,6}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,6}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,6}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,6}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,6}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph[],Pi/2]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,6}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,6}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,6}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,6}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,6}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,6}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{9,6}},"Planar"]

GraphData[{"QuasiCubic",{9,6}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,6}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,6}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,6}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,6}}],"CrossingNumber"->cn,RandomSeed->n]],{n,500}],Max[OuterFace[#]]<=GraphData[{"QuasiCubic",{9,6}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,6}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,6}},"Circulant"]

GraphData[{"QuasiCubic",{9,6}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,6}},"Halin"]

GraphData[{"QuasiCubic",{9,6}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,6}},"Rigid"]

GraphData[{"QuasiCubic",{9,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,6}},"Flexible"]

GraphData[{"QuasiCubic",{9,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,6}},"LCF"]

GraphData[{"QuasiCubic",{9,6}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,6}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,6}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,6}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,6}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,6}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,6}},"VertexList"],GraphData[{"QuasiCubic",{9,6}},"EdgeList"]],MaxIterations->500]

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

GraphPlot@

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,6}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,6}},"Matchstick"]

GraphData[{"QuasiCubic",{9,6}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,6}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,6}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,6}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,6}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,6}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 7}} == {"Halin", {9, 1}}

GraphData[{"QuasiCubic",{9,7}},"StandardName"]

{"QuasiCubic", {9, 8}} == {"UnitDistanceForbidden", {9, 14, 13}}

GraphData[{"QuasiCubic",{9,8}},"StandardName"]

{"QuasiCubic", {9, 9}} == {"Halin", {9, 2}}

GraphData[{"QuasiCubic",{9,9}},"StandardName"]

{"QuasiCubic", {9, 10}}

GraphData[{"QuasiCubic",{9,10}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,10}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,10}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,10}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,10}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,10}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,10}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,10}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,10}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,10}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,10}}],All][[All,All,1]]]

Planar

GraphData[{"QuasiCubic",{9,10}},"Planar"]

GraphData[{"QuasiCubic",{9,10}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,10}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,10}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,10}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,10}},"Circulant"]

GraphData[{"QuasiCubic",{9,10}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,10}},"Halin"]

GraphData[{"QuasiCubic",{9,10}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,10}},"Rigid"]

GraphData[{"QuasiCubic",{9,10}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,10}},"Flexible"]

GraphData[{"QuasiCubic",{9,10}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,10}},"LCF"]

GraphData[{"QuasiCubic",{9,10}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,10}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,10}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,10}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,10}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,10}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,10}},"VertexList"],GraphData[{"QuasiCubic",{9,10}},"EdgeList"]],MaxIterations->500]

GraphPlot@

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,10}},"Matchstick"]

GraphData[{"QuasiCubic",{9,10}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,10}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,10}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,10}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,10}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,10}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 11}}

GraphData[{"QuasiCubic",{9,11}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,11}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,11}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,11}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,11}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,11}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,11}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,11}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,11}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,11}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,11}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,11}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,11}},"Planar"]

GraphData[{"QuasiCubic",{9,11}},"Graph","Planar"]//StyleGraphs

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,11}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,11}},"Circulant"]

GraphData[{"QuasiCubic",{9,11}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,11}},"Halin"]

GraphData[{"QuasiCubic",{9,11}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,11}},"Rigid"]

GraphData[{"QuasiCubic",{9,11}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,11}},"Flexible"]

GraphData[{"QuasiCubic",{9,11}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,11}},"LCF"]

GraphData[{"QuasiCubic",{9,11}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,11}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,11}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,11}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,11}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,11}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,11}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,11}},"VertexList"],GraphData[{"QuasiCubic",{9,11}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,11}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,11}},"Matchstick"]

GraphData[{"QuasiCubic",{9,11}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,11}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,11}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,11}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,11}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,11}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 12}}

GraphData[{"QuasiCubic",{9,12}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,12}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,12}},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,12}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,12}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,12}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,12}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,12}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,12}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,12}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,12}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{9,12}},"Planar"]

GraphData[{"QuasiCubic",{9,12}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"QuasiCubic",{9,12}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"QuasiCubic",{9,12}}],"OuterFace"->#]&/@faces

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

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/2]]

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

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Halin

GraphData[{"QuasiCubic",{9,12}},"Halin"]

GraphData[{"QuasiCubic",{9,12}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,12}},"Rigid"]

GraphData[{"QuasiCubic",{9,12}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,12}},"Flexible"]

GraphData[{"QuasiCubic",{9,12}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,12}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,12}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,12}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,12}},"Graph","UnitDistance"]//StyleGraphs

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"QuasiCubic",{9,12}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,12}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance construction

GraphPlot[GraphData[{"QuasiCubic",{9,12}},"EdgeList"]]

No solutions with horizontal parallelogram:

soln=Solve[{
x^2+y^2==1,
(u-1/2)^2+(v+s)^2==1,
(x-u)^2+(y-v)^2==1,
(x+1-2)^2+y^2==1},{x,y,u,v},Reals]

Graph[Range[9],UndirectedEdge@@@{{8,9},{5,8},{7,9},{5,6},{4,8},{2,4},{1,4},{1,2},{2,3},{3,6}},VertexCoordinates->({{0,0},{1,0},{2,0},{1/2,-s},{x,y},{x+1,y},{3/2,-s},{u,v},{u+1,v}}/.#),VertexLabels->"Name"]&/@Take[soln,-2]

gs=Graph[Range[9],UndirectedEdge@@@{{8,9},{5,8},{7,9},{5,6},{4,8},{2,4},{1,4},{1,2},{2,3},{3,6},{2,7},{3,7},{6,9},{1,5}},VertexCoordinates->({{0,0},{1,0},{2,0},{1/2,-s},{x,y},{x+1,y},{3/2,-s},{u,v},{u+1,v}}/.#),VertexLabels->"Name"]&/@With[{uu=1/2},{{x->1/2,y->-(Sqrt[3])/2,v->-((Sqrt[3])/2)-(Sqrt[(3/4)+uu-(uu^2)]),u->uu},{x->1/2,y->-(Sqrt[3])/2,v->-((Sqrt[3])/2)+(Sqrt[(3/4)+uu-(uu^2)]),u->uu}}]

Manipulate[Graph[Range[9],UndirectedEdge@@@{{8,9},{5,8},{7,9},{5,6},{4,8},{2,4},{1,4},{1,2},{2,3},{3,6},{2,7},{3,7},{6,9},{1,5}},VertexCoordinates->({{0,0},{1,0},{2,0},{1/2,-s},{x,y},{x+1,y},{3/2,-s},{u,v},{u+1,v}}/.#),VertexLabels->"Name"]&/@{{x->1/2,y->-(Sqrt[3])/2,v->-((Sqrt[3])/2)-(Sqrt[(3/4)+uu-(uu^2)]),u->uu},{x->1/2,y->-(Sqrt[3])/2,v->-((Sqrt[3])/2)+(Sqrt[(3/4)+uu-(uu^2)]),u->uu}},{uu,-1,2}]

soln=NSolve[{
x^2+y^2==1,
(u-1/2)^2+(v+s)^2==1,
(x-u)^2+(y-v)^2==1,
(q-2)^2+r^2==1,
(x-q)^2+(y-r)^2==1
},{x,y,u,v,q,r},Reals]

Manipulate[With[{x=Cos[q1],y=Sin[q1]},With[{q=x+Cos[q2],r=y+Sin[q2]},
With[{u=x+Cos[q3],v=r+Sin[q3]},g=Graph[Range[9],UndirectedEdge@@@{{8,9},{5,8},{7,9},{5,6},{4,8},{2,4},{1,4},{1,2},{2,3},{3,6},{2,7},{3,7},{6,9},{1,5}},VertexCoordinates->({{0,0},{1,0},{2,0},{1/2,-s},{x,y},{q,r},{3/2,-s},{x,y}+{Cos[q3],Sin[q3]},{q,r}+{Cos[q3],Sin[q3]}}),VertexLabels->"Name"];
Column[{
EdgeLengths[g]//N,
soln={x,y,q,r,u,v},
g
}]]]],{{q1,5.3},0,2π},{{q2,6},0,2π},{{q3,5},0,2π}]

GraphEmbedding[g]

start=Transpose[{{x,y,q,r,u,v},soln}]

rt=FindRoot[{
x^2+y^2==1,
(u-1/2)^2+(v+s)^2==1,
(x-u)^2+(y-v)^2==1,
(q-2)^2+r^2==1,
(x-q)^2+(y-r)^2==1,
(u+q-x)^2+(v+r-y)^2==1
},Evaluate[start]]

Graph[Range[9],UndirectedEdge@@@{{8,9},{5,8},{7,9},{5,6},{4,8},{2,4},{1,4},{1,2},{2,3},{3,6},{2,7},{3,7},{6,9},{1,5}},VertexCoordinates->({{0,0},{1,0},{2,0},{1/2,-s},{x,y},{q,r},{3/2,-s},{u,v},{u+q-x,v+r-y}}/.rt)]

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

EdgeLengths/@gs

NSolve[{
(c-u)^2+(d-v)^2==1,
c^2+(d-1)^2==1,
(c-r)^2+(d-q)^2==1,
(u-a)^2+(v-b)^2==1,
(a-1)^2+(b-1)^2==1,
(x-a)^2+(y-b)^2==1,
r^2+q^2==1,
(r-u)^2+(q-v)^2==1,
(u-x)^2+(v-y)^2==1,
(x-1)^2+y^2==1},{x,y,u,v,r,q,a,b,c,d},Reals]

soln=%;

Length[soln]

gs=Graph[Range[9],UndirectedEdge@@@{{1,2},{2,3},{1,8},{2,8},{2,9},{3,9},{4,5},{5,7},{6,7},{4,6},{6,8},{4,1},{7,9},{3,5}},VertexCoordinates->({{c,d},{u,v},{a,b},{0,1},{1,1},{0,0},{1,0},{r,q},{x,y}}/.#),VertexLabels->"Name"]&/@Take[soln,All]

RecognizeGraph/@gs

soln=Solve[{
(u-1/2)^2+(v-1)^2==1,
x^2+(y-h)^2==1,
(x-u)^2+(y-v)^2==1,
(x-1/2)^2+y^2==1,
u^2+(v-h)^2==1},{u,v,x,y,h},Reals]//FullSimplify

gs=Graph[Range[9],UndirectedEdge@@@{{1,2},{2,3},{1,8},{2,8},{2,9},{3,9},{4,5},{5,7},{6,7},{4,6},{6,8},{4,1},{7,9},{3,5}},VertexCoordinates->({{-u,v},{0,h},{u,v},{-1/2,1},{1/2,1},{-1/2,0},{1/2,0},{-x,y},{x,y}}/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

RecognizeGraph/@gs

g=gs[[-1]]

g=;

r=RecognizeGraph[g]

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{9,12}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,12}}],TimeConstraint->300,"Results"->All]//Timing}

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

Matchstick

GraphData[{"QuasiCubic",{9,12}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"QuasiCubic",{9,12}},"Edges"]

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

RecognizeGraph[g]

3D All

GraphData[{"QuasiCubic",{9,12}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,12}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"QuasiCubic",{9,12}},"Polyhedron"]}]

3D Polyhedron Canonical

Graphics3D[{Opacity[.5],Red,GraphData[{"QuasiCubic",{9,12}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"QuasiCubic",{9,12}}]]

Graphics3D[{FaceForm[Green,Red],poly}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"QuasiCubic", {9, 13}}

GraphData[{"QuasiCubic",{9,13}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,13}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,13}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,13}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,13}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,13}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,13}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,13}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,13}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,13}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,13}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,13}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,13}},"Planar"]

GraphData[{"QuasiCubic",{9,13}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,13}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,13}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,13}}],TimeConstraint->1])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,13}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,-2Pi/6]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,13}},"Circulant"]

GraphData[{"QuasiCubic",{9,13}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,13}},"Halin"]

GraphData[{"QuasiCubic",{9,13}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,13}},"Rigid"]

GraphData[{"QuasiCubic",{9,13}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,13}},"Flexible"]

GraphData[{"QuasiCubic",{9,13}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,13}},"LCF"]

GraphData[{"QuasiCubic",{9,13}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,13}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,13}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,13}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,13}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,13}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,13}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,13}},"VertexList"],GraphData[{"QuasiCubic",{9,13}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,13}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,13}},"Matchstick"]

GraphData[{"QuasiCubic",{9,13}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,13}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,13}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,13}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,13}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,13}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 14}}

GraphData[{"QuasiCubic",{9,14}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,14}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,14}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,14}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,14}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"QuasiCubic",{9,14}},"Edges"],GraphLayout->"RadialEmbedding"],Pi/5.1]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"QuasiCubic",{9,14}},"Edges"],GraphLayout->"SpringEmbedding"]

RegionIntersection[InfiniteLine@v[[{2,5}]],InfiniteLine[{{0,v[[6,2]]},{1,v[[6,2]]}}]]

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

RecognizeGraph@g

gs={,,};

Degenerate

GraphData[{"QuasiCubic",{9,14}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,14}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,14}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,14}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,14}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,14}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{9,14}},"Planar"]

GraphData[{"QuasiCubic",{9,14}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,14}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,14}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,14}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,14}},"Circulant"]

GraphData[{"QuasiCubic",{9,14}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,14}},"Halin"]

GraphData[{"QuasiCubic",{9,14}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,14}},"Rigid"]

GraphData[{"QuasiCubic",{9,14}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,14}},"Flexible"]

GraphData[{"QuasiCubic",{9,14}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,14}},"LCF"]

GraphData[{"QuasiCubic",{9,14}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,14}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,14}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,14}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,14}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,14}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,14}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,14}},"VertexList"],GraphData[{"QuasiCubic",{9,14}},"EdgeList"]],MaxIterations->500]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,14}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,14}},"Matchstick"]

GraphData[{"QuasiCubic",{9,14}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,14}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,14}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,14}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,14}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,14}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 15}}

GraphData[{"QuasiCubic",{9,15}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,15}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,15}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,15}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,15}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,15}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,15}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,15}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,15}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,15}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,15}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,15}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,15}},"Planar"]

GraphData[{"QuasiCubic",{9,15}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,15}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,15}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,15}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,15}},"Circulant"]

GraphData[{"QuasiCubic",{9,15}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,15}},"Halin"]

GraphData[{"QuasiCubic",{9,15}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,15}},"Rigid"]

GraphData[{"QuasiCubic",{9,15}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,15}},"Flexible"]

GraphData[{"QuasiCubic",{9,15}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,15}},"LCF"]

GraphData[{"QuasiCubic",{9,15}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,15}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,15}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,15}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,15}}],Debug->True]//Timing

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,15}},"VertexList"],GraphData[{"QuasiCubic",{9,15}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,15}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,15}},"Matchstick"]

GraphData[{"QuasiCubic",{9,15}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,15}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,15}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,15}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,15}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,15}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 16}}

GraphData[{"QuasiCubic",{9,16}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,16}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,16}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,16}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,16}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,16}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,16}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,16}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,16}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,16}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,16}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,16}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,16}},"Planar"]

GraphData[{"QuasiCubic",{9,16}},"Graph","Planar"]//StyleGraphs

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,16}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,16}},"Circulant"]

GraphData[{"QuasiCubic",{9,16}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,16}},"Halin"]

GraphData[{"QuasiCubic",{9,16}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,16}},"Rigid"]

GraphData[{"QuasiCubic",{9,16}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,16}},"Flexible"]

GraphData[{"QuasiCubic",{9,16}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,16}},"LCF"]

GraphData[{"QuasiCubic",{9,16}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,16}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,16}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,16}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,16}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,16}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,16}},"VertexList"],GraphData[{"QuasiCubic",{9,16}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,16}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,16}},"Matchstick"]

GraphData[{"QuasiCubic",{9,16}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,16}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,16}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,16}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,16}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,16}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 17}}

GraphData[{"QuasiCubic",{9,17}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,17}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,17}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,17}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,17}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,17}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,17}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,17}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,17}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,17}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,17}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,17}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{9,17}},"Planar"]

GraphData[{"QuasiCubic",{9,17}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,17}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,17}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,17}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,17}},"Circulant"]

GraphData[{"QuasiCubic",{9,17}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,17}},"Halin"]

GraphData[{"QuasiCubic",{9,17}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,17}},"Rigid"]

GraphData[{"QuasiCubic",{9,17}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,17}},"Flexible"]

GraphData[{"QuasiCubic",{9,17}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,17}},"LCF"]

GraphData[{"QuasiCubic",{9,17}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,17}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,17}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,17}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,17}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,17}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,17}},"VertexList"],GraphData[{"QuasiCubic",{9,17}},"EdgeList"]],MaxIterations->500]

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

UnitDistance construction

LabelGraph@(g0=)

s=Sqrt[3]/2;
v={{1/2,-s},{0,a},{-1,0},{1,0},{0,a-1},{-1/2,-s},{-x,y},{x,y},{0,0}};
ee=EdgeList[g0];
eqn=UnitEdgeEquations[v,ee]//FullSimplify//Union

var=Variables[Subtract@@@eqn]

soln=Solve[eqn,var,Reals]//FullSimplify

gs=Graph[Range[Length[v]],ee,VertexCoordinates->(v/.#)]&/@soln

gs={,};

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,17}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,17}},"Matchstick"]

GraphData[{"QuasiCubic",{9,17}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,17}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,17}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,17}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,17}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,17}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 18}}

GraphData[{"QuasiCubic",{9,18}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,18}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,18}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,18}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,18}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,18}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,18}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,18}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,18}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,18}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,18}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,18}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Planar

GraphData[{"QuasiCubic",{9,18}},"Planar"]

GraphData[{"QuasiCubic",{9,18}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"QuasiCubic",{9,18}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"QuasiCubic",{9,18}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Tutte embedding construction 5 #1

GraphPlot[RotateGraph[,4Pi/5]]

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

RecognizeGraph[g]

Tutte embedding construction 5 #2

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5]];
v=Join[v,Table[Mean[v[[{1,5}]]]+(v[[3]]-Mean[v[[{1,5}]]])i/5,{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,7,8,9,3],e[7,2],{5,6},e[9,4,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,Pi/2]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,-2Pi/3]]

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

RecognizeGraph[g]

LCF

GraphData[{"QuasiCubic",{9,18}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,18}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,18}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,18}},"Graph","UnitDistance"]//StyleGraphs

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"QuasiCubic",{9,18}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,18}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{9,18}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,18}}],TimeConstraint->300,"Results"->All]//Timing}

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

gs={,,};

Matchstick

GraphData[{"QuasiCubic",{9,18}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,18}},"Edges"]

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

RecognizeGraph[g]

3D All

GraphData[{"QuasiCubic",{9,18}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,18}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"QuasiCubic",{9,18}},"Polyhedron"]}]

3D Polyhedron Canonical

Graphics3D[{Opacity[.5],Red,GraphData[{"QuasiCubic",{9,18}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"QuasiCubic",{9,18}}]]

Graphics3D[{FaceForm[Green,Red],poly}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"QuasiCubic", {9, 19}}

GraphData[{"QuasiCubic",{9,19}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,19}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,19}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,19}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,19}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,19}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,19}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,19}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,19}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,19}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,19}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,19}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{9,19}},"Planar"]

GraphData[{"QuasiCubic",{9,19}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,19}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,19}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,19}}]],-Pi/5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,19}},"Circulant"]

GraphData[{"QuasiCubic",{9,19}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,19}},"Halin"]

GraphData[{"QuasiCubic",{9,19}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,19}},"Rigid"]

GraphData[{"QuasiCubic",{9,19}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,19}},"Flexible"]

GraphData[{"QuasiCubic",{9,19}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,19}},"LCF"]

GraphData[{"QuasiCubic",{9,19}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,19}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,19}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,19}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,19}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,19}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,19}},"VertexList"],GraphData[{"QuasiCubic",{9,19}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,19}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,19}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{9,19}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,19}}],TimeConstraint->300,"Results"->All]//Timing}

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

Matchstick

GraphData[{"QuasiCubic",{9,19}},"Matchstick"]

GraphData[{"QuasiCubic",{9,19}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,19}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,19}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,19}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,19}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,19}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 20}}

GraphData[{"QuasiCubic",{9,20}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,20}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,20}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,20}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,20}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,20}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,20}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,20}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,20}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,20}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,20}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,20}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,20}},"Planar"]

GraphData[{"QuasiCubic",{9,20}},"Graph","Planar"]//StyleGraphs

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,20}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,20}},"Circulant"]

GraphData[{"QuasiCubic",{9,20}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,20}},"Halin"]

GraphData[{"QuasiCubic",{9,20}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,20}},"Rigid"]

GraphData[{"QuasiCubic",{9,20}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,20}},"Flexible"]

GraphData[{"QuasiCubic",{9,20}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,20}},"LCF"]

GraphData[{"QuasiCubic",{9,20}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,20}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,20}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,20}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,20}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,20}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance construction

GraphPlot[GraphData[{"QuasiCubic",{9,20}},"EdgeList"]]

cs[q_]:=Through[{Cos,Sin}[q]]
s=Sqrt[3]/2;

Manipulate[Module[{p,v},
p={{-1/2,0},{1/2,0},{0,s},{0,-s},
{0,-s}+cs[q1],{0,-s}+cs[q1+60Degree],
{0,-s}+cs[q1]+cs[q2],{0,-s}+cs[q1+60Degree]+cs[q2]};
v=Join[p,{Mean[p[[{7,8}]]]+s1 s Normalize[{-1,1}Reverse[p[[7]]-p[[8]]]]}];
Column[{
EuclideanDistance@@v[[{3,9}]]//N,
g=Graph[Range[Length[v]],UndirectedEdge@@@{{1,2},{2,3},{1,3},{2,4},{1,4},{4,5},{4,6},{5,6},{5,7},{6,8},{7,8},{7,9},{8,9},{3,9}},VertexCoordinates->v,VertexLabels->"Name"]
}]],
{s1,{-1,1}},
{{q1,0},-π,π},
{{q2,0},-π,π}]

GraphEmbedding[g][[{5,7}]]

GraphEmbedding[g][[{6,8}]]

RecognizeGraph[g]

e=EdgeList[g]

e={1\[UndirectedEdge]2,2\[UndirectedEdge]3,1\[UndirectedEdge]3,2\[UndirectedEdge]4,1\[UndirectedEdge]4,4\[UndirectedEdge]5,4\[UndirectedEdge]6,5\[UndirectedEdge]6,5\[UndirectedEdge]7,6\[UndirectedEdge]8,7\[UndirectedEdge]8,7\[UndirectedEdge]9,8\[UndirectedEdge]9,3\[UndirectedEdge]9};

eqn=(x[#]-x[#2])^2+(y[#]-y[#2])^2-1&@@@e

emb=GraphEmbedding[g]

vars=Transpose[{Flatten[Transpose[{Array[x,9],Array[y,9]}]],Flatten[emb]}]

eqn/.Rule@@@vars

{x,y}+RotationMatrix[-60Degree].{u-x,v-y}//FullSimplify

verts={{-1/2,0},{1/2,0},{0,s},{0,-s},{x+q-u,y+r-v},{q,r},{x,y},{u,v},{(1/2) (u+(Sqrt[3]) v+x-(Sqrt[3]) y),(1/2) (-(Sqrt[3]) u+v+(Sqrt[3]) x+y)}};

Soln1

neweqn={
(u-x)^2+(v-y)^2-1,
SquaredEuclideanDistance[{(1/2) (u+(Sqrt[3]) v+x-(Sqrt[3]) y),(1/2) (-(Sqrt[3]) u+v+(Sqrt[3]) x+y)},{0,s}]-1/.Abs->Identity,
(u-q)^2+(v-r)^2-1,
(x+q-u)^2+(y+r-v+s)^2-1,
q^2+(r+s)^2-1,
-((71297 q)/91374)-((173881 r)/182748)+((20993 u)/30458)-((19857 v)/30458)+((11342 x)/15229)-((27178 y)/45687)-1
};

nsoln=NSolve[Thread[neweqn==0],{x,y,u,v,q,r},Reals]

neweqn/.nsoln

Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->(verts/.#),VertexLabels->"Name"]&/@nsoln

RecognizeGraph/@%

UnitDistanceGraphEmbeddingQ/@%%

soln=Solve[Thread[neweqn==0],{x,y,u,v,q,r},Reals]

Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->(verts/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@%

soln[[{1,4}]]

RootReduce[%]

gs=Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->(verts/.#),VertexLabels->"Name"]&/@%179

UnitDistanceGraphEmbeddingQ/@gs

RecognizeGraph/@gs

DegenerateEmbeddingQ/@gs

g=gs[[1]]

r=RecognizeGraph@g

Soln2

Rationalize[-0.85318685595932`,10^-3]

neweqn={
(u-x)^2+(v-y)^2-1,
SquaredEuclideanDistance[{(1/2) (u+(Sqrt[3]) v+x-(Sqrt[3]) y),(1/2) (-(Sqrt[3]) u+v+(Sqrt[3]) x+y)},{0,s}]-1/.Abs->Identity,
(u-q)^2+(v-r)^2-1,
(x+q-u)^2+(y+r-v+s)^2-1,
q^2+(r+s)^2-1,
q+(29/34)
};

nsoln=NSolve[Thread[neweqn==0],{x,y,u,v,q,r},Reals]

neweqn/.nsoln

Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->(verts/.#),VertexLabels->"Name"]&/@nsoln

GraphData[{"QuasiCubic",{9,20}},"Graph","All"]

UnitDistanceGraphEmbeddingQ[]

RecognizeGraph[]

soln=Solve[Thread[neweqn==0],{x,y,u,v,q,r},Reals]

gs=Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->FullSimplify[RootReduce[verts/.#]],VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

DegenerateEmbeddingQ/@gs

g=gs[[-2]]

GraphEmbedding[g]

r=RecognizeGraph[g]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,20}},"VertexList"],GraphData[{"QuasiCubic",{9,20}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,20}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,20}},"Matchstick"]

GraphData[{"QuasiCubic",{9,20}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,20}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,20}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,20}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,20}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,20}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 21}}

GraphData[{"QuasiCubic",{9,21}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,21}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,21}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,21}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,21}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,21}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,21}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,21}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,21}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,21}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,21}}],All][[All,All,1]]]

CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,21}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,21}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,21}},"Planar"]

GraphData[{"QuasiCubic",{9,21}},"Graph","Planar"]//StyleGraphs

MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,21}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,21}},"Circulant"]

GraphData[{"QuasiCubic",{9,21}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,21}},"Halin"]

GraphData[{"QuasiCubic",{9,21}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,21}},"Rigid"]

GraphData[{"QuasiCubic",{9,21}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,21}},"Flexible"]

GraphData[{"QuasiCubic",{9,21}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,21}},"LCF"]

GraphData[{"QuasiCubic",{9,21}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,21}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,21}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,21}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,21}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,21}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,21}},"VertexList"],GraphData[{"QuasiCubic",{9,21}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,21}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,21}},"Matchstick"]

GraphData[{"QuasiCubic",{9,21}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,21}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,21}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,21}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,21}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,21}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 22}}

GraphData[{"QuasiCubic",{9,22}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,22}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,22}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,22}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,22}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,22}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,22}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,22}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,22}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,22}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,22}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,22}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,22}},"Planar"]

GraphData[{"QuasiCubic",{9,22}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,22}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,22}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,22}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,22}}],"CrossingNumber"->cn,RandomSeed->n]],{n,200}],Max[OuterFace[#]]<=GraphData[{"QuasiCubic",{9,22}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,22}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,22}},"Circulant"]

GraphData[{"QuasiCubic",{9,22}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,22}},"Halin"]

GraphData[{"QuasiCubic",{9,22}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,22}},"Rigid"]

GraphData[{"QuasiCubic",{9,22}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,22}},"Flexible"]

GraphData[{"QuasiCubic",{9,22}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,22}},"LCF"]

GraphData[{"QuasiCubic",{9,22}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,22}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,22}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,22}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,22}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,22}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,22}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,22}},"VertexList"],GraphData[{"QuasiCubic",{9,22}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,22}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,22}},"Matchstick"]

GraphData[{"QuasiCubic",{9,22}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,22}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,22}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,22}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,22}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,22}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 23}}

GraphData[{"QuasiCubic",{9,23}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,23}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,23}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,23}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,23}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,23}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,23}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,23}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,23}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,23}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,23}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,23}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,23}},"Planar"]

GraphData[{"QuasiCubic",{9,23}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,23}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,23}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,23}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,23}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,23}}],"CrossingNumber"->cn,RandomSeed->n]],{n,200}],Max[OuterFace[#]]<=GraphData[{"QuasiCubic",{9,23}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,23}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,23}},"Circulant"]

GraphData[{"QuasiCubic",{9,23}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,23}},"Halin"]

GraphData[{"QuasiCubic",{9,23}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,23}},"Rigid"]

GraphData[{"QuasiCubic",{9,23}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,23}},"Flexible"]

GraphData[{"QuasiCubic",{9,23}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,23}},"LCF"]

GraphData[{"QuasiCubic",{9,23}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,23}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,23}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,23}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,23}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,23}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,23}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,23}},"VertexList"],GraphData[{"QuasiCubic",{9,23}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,23}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"QuasiCubic",{9,23}},"Matchstick"]

GraphData[{"QuasiCubic",{9,23}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,23}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,23}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,23}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,23}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,23}},"Graph",{"3D","Polyhedron"}]

{"QuasiCubic", {9, 24}}

GraphData[{"QuasiCubic",{9,24}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,24}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,24}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,24}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,24}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,24}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,24}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,24}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,24}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,24}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,24}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,24}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,24}},"Planar"]

GraphData[{"QuasiCubic",{9,24}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"QuasiCubic",{9,24}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"QuasiCubic",{9,24}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Tutte embedding construction 5 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 5 #2

GraphPlot[RotateGraph[,-2Pi/5]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,Pi/4]]

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

RecognizeGraph[g]

Tutte embedding construction #3 1

GraphPlot[RotateGraph[,-2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction #3 2

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

LCF

GraphData[{"QuasiCubic",{9,24}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,24}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,24}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,24}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,24}},"Graph","UnitDistance"]//StyleGraphs

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"QuasiCubic",{9,24}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,24}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{9,24}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,24}}],TimeConstraint->300,"Results"->All]//Timing}

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

gs={,,,,,};

Matchstick

GraphData[{"QuasiCubic",{9,24}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,24}},"Edges"]

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

RecognizeGraph[g]

3D All

GraphData[{"QuasiCubic",{9,24}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,24}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"QuasiCubic",{9,24}},"Polyhedron"]}]

3D Polyhedron Canonical

Graphics3D[{Opacity[.5],Red,GraphData[{"QuasiCubic",{9,24}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"QuasiCubic",{9,24}}]]

Graphics3D[{FaceForm[Green,Red],poly}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"QuasiCubic", {9, 25}} == {"Halin", {9, 6}}

GraphData[{"QuasiCubic",{9,25}},"StandardName"]

{"QuasiCubic", {9, 26}} == {"Harary", {3, 9}}

GraphData[{"QuasiCubic",{9,26}},"StandardName"]

{"QuasiCubic", {9, 27}}

GraphData[{"QuasiCubic",{9,27}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{9,27}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{9,27}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{9,27}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{9,27}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{9,27}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{9,27}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{9,27}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{9,27}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{9,27}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{9,27}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{9,27}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{9,27}},"Planar"]

GraphData[{"QuasiCubic",{9,27}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{9,27}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{9,27}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{9,27}}],TimeConstraint->1])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{9,27}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{9,27}},"Circulant"]

GraphData[{"QuasiCubic",{9,27}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{9,27}},"Halin"]

GraphData[{"QuasiCubic",{9,27}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{9,27}},"Rigid"]

GraphData[{"QuasiCubic",{9,27}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{9,27}},"Flexible"]

GraphData[{"QuasiCubic",{9,27}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{9,27}},"LCF"]

GraphData[{"QuasiCubic",{9,27}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{9,27}},"LCFSignature"]

GraphData[{"QuasiCubic",{9,27}},"LCFNotations"]

GraphData[{"QuasiCubic",{9,27}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{9,27}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{9,27}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{9,27}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance construction

GraphPlot[GraphData[{"QuasiCubic",{9,27}},"EdgeList"]]

s=Sqrt[3]/2;

soln=NSolve[{
(u-1)^2+v^2==1,
(x-u)^2+(y-v)^2==1,
(q-x)^2+(r-y)^2==1,
q^2+r^2==1,
(a+u-x-q-1/2)^2+(b+v-y-r-s)^2==1,
(a-x)^2+(b-y)^2==1,
a^2+b^2==1
},{x,y,u,v,q,r,a,b},Reals]

{{x->-1.4135377097155008`*^-15,y->-2.395184424480427`*^-15,u->0.49999999999999933`,v->-0.8660254037844398`,q->-0.7398573752198947`,r->-0.6727637507570775`,a->-0.9957061566505824`,b->0.09257024148249537`},{x->-0.9925323136346019`,y->0.12198199207734169`,u->0.007467686365404054`,v->0.1219819920773425`,q->-0.39062665287408727`,r->0.9205491937231732`,a->-0.3906266528740962`,b->0.9205491937231751`},{x->-0.8974022514125909`,y->-0.4412133261355777`,u->0.10259774858741112`,v->-0.44121332613557657`,q->-0.06659917678465405`,r->-0.997779810204443`,a->-0.06659917678465681`,b->-0.9977798102044436`},{x->3.1753113802939904`*^-15,y->-2.0832300710502706`*^-15,u->0.4999999999999999`,v->-0.8660254037844383`,q->0.8703134369823561`,r->-0.49249824508109785`,a->0.9696496365648981`,b->0.24449863457608353`},{x->-0.9911969392099068`,y->-0.13239572387703874`,u->0.008803060790098696`,v->-0.1323957238770367`,q->-0.6102565298348958`,r->0.7922038675706341`,a->-0.6102565298349032`,b->0.7922038675706351`},{x->-0.9024076512574845`,y->-0.6121198311776795`,u->0.03678169054742299`,v->-0.26872009291327725`,q->0.01938118168902372`,r->-0.999812167257604`,a->-0.9217888329465065`,b->0.38769233607992054`},{x->-8.916420374089269`*^-16,y->-2.7376871493405725`*^-15,u->0.4999999999999994`,v->-0.8660254037844396`,q->0.30368431136390767`,r->-0.952772711107659`,a->-0.6945254694119283`,b->0.719468117666195`},{x->-6.169314018152521`*^-16,y->-2.8069973875386527`*^-15,u->0.49999999999999933`,v->-0.866025403784439`,q->0.49710535534254835`,r->-0.8676901899236661`,a->-0.5028946445742438`,b->0.8643477173328692`},{x->0.0007443198258892753`,y->0.00042930698461350093`,u->0.49999999999999933`,v->-0.866025403784439`,q->0.5000000000000013`,r->-0.866025403784443`,a->-0.49925568017411004`,b->0.866454710769053`},{x->0.857709912927468`,y->0.06780735329437525`,u->0.4999999999999993`,v->-0.8660254037844388`,q->0.5000000000000008`,r->-0.8660254037844435`,a->0.35770991292747056`,b->0.9338327570788145`},{x->-0.7971740395460373`,y->0.6037495761272648`,u->0.20282596045396345`,v->0.6037495761272693`,q->-0.9214494902233197`,r->-0.38849818142069503`,a->-0.9214494902233185`,b->-0.38849818142069487`},{x->0.5258326620349294`,y->-0.24573818405580522`,u->1.2063387399288803`,v->-0.9784806203520713`,q->-0.1422426864657857`,r->-0.9898318130606876`,a->0.6680753485007199`,b->0.7440936290048765`}}

gs=Graph[Range[9],UndirectedEdge@@@{{1,2},{2,6},{6,9},{8,9},{5,8},{1,5},{1,4},{2,3},{3,7},{4,8},{4,9},{6,7},{5,7},{3,8}},VertexCoordinates->({{q+1/2,r+s},{a+u-x,b+v-y},{a,b},{1/2,s},{q,r},{u,v},{x,y},{0,0},{1,0}}/.#),VertexLabels->"Name"]&/@soln

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

EdgeLengths[gs[[-1]]]

GraphEmbedding[gs[[-1]]]

{{0.3577573135342143`,-0.12380640927624897`},{1.348581426394671`,0.01135119270862045`},{0.6680753485007199`,0.7440936290048765`},{(1/2),((Sqrt[3])/2)},{-0.1422426864657857`,-0.9898318130606876`},{1.2063387399288803`,-0.9784806203520713`},{0.5258326620349294`,-0.24573818405580522`},{0,0},{1,0}}

soln=With[{x=-.8},NSolve[{
(u-1)^2+v^2==1,
(x-u)^2+(y-v)^2==1,
(q-x)^2+(r-y)^2==1,
q^2+r^2==1,
(a+u-x-q-1/2)^2+(b+v-y-r-s)^2==1,
(a-x)^2+(b-y)^2==1,
a^2+b^2==1
},{y,u,v,q,r,a,b},Reals]]

Pick[soln,DuplicateFreeQ[Round[10^3.{{q+1/2,r+s},{a+u-x,b+v-y},{a,b},{1/2,s},{q,r},{u,v},{x,y},{0,0},{1,0}}]/.#]&/@soln]

Union[%95,SameTest->(N[#[[All,2]],10]==N[#2[[All,2]],10]&)]

Do[Print[{x,
soln=NSolve[{
(u-1)^2+v^2==1,
(x-u)^2+(y-v)^2==1,
(q-x)^2+(r-y)^2==1,
q^2+r^2==1,
(a+u-x-q-1/2)^2+(b+v-y-r-s)^2==1,
(a-x)^2+(b-y)^2==1,
a^2+b^2==1
},{y,u,v,q,r,a,b},Reals];
If[soln==={},{},
soln=Union[soln,SameTest->(N[#[[All,2]],10]==N[#2[[All,2]],10]&)];soln=Pick[soln,DuplicateFreeQ[Round[10^3.{{q+1/2,r+s},{a+u-x,b+v-y},{a,b},{1/2,s},{q,r},{u,v},{x,y},{0,0},{1,0}}]/.#]&/@soln];
Graph[Range[9],UndirectedEdge@@@{{1,2},{2,6},{6,9},{8,9},{5,8},{1,5},{1,4},{2,3},{3,7},{4,8},{4,9},{6,7},{5,7},{3,8}},VertexCoordinates->({{q+1/2,r+s},{a+u-x,b+v-y},{a,b},{1/2,s},{q,r},{u,v},{x,y},{0,0},{1,0}}/.#),VertexLabels->"Name"]&/@soln]}//Timing],{x,-1,1,.2}]

soln=Solve[{
(u-1)^2+v^2==1,
(x-u)^2+(y-v)^2==1,
(q-x)^2+(r-y)^2==1,
q^2+r^2==1,
(a+u-x-q-1/2)^2+(b+v-y-r-s)^2==1,
(a-x)^2+(b-y)^2==1,
a^2+b^2==1,
y==v,
1<x<12/10
},{x,y,u,v,q,r,a,b},Reals]

soln=Solve[{
(u-1)^2+v^2==1,
(x-u)^2+(y-v)^2==1,
(q-x)^2+(r-y)^2==1,
q^2+r^2==1,
(a+u-x-q-1/2)^2+(b+v-y-r-s)^2==1,
(a-x)^2+(b-y)^2==1,
a^2+b^2==1,
x==5/10
},{x,y,u,v,q,r,a,b},Reals]

soln=Union[soln,SameTest->(N[#[[All,2]],10]==N[#2[[All,2]],10]&)];soln=Pick[soln,DuplicateFreeQ[Round[10^3.{{q+1/2,r+s},{a+u-x,b+v-y},{a,b},{1/2,s},{q,r},{u,v},{x,y},{0,0},{1,0}}]/.#]&/@soln]

TimeConstrained[RootReduce[soln],300]//Timing

gs=Graph[Range[9],UndirectedEdge@@@{{1,2},{2,6},{6,9},{8,9},{5,8},{1,5},{1,4},{2,3},{3,7},{4,8},{4,9},{6,7},{5,7},{3,8}},VertexCoordinates->({{q+1/2,r+s},{a+u-x,b+v-y},{a,b},{1/2,s},{q,r},{u,v},{x,y},{0,0},{1,0}}/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

RecognizeGraph/@gs

g=gs[[1]]

r=RecognizeGraph@g

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{9,27}},"VertexList"],GraphData[{"QuasiCubic",{9,27}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,27}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,27}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{9,27}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{9,27}}],TimeConstraint->300,"Results"->All]//Timing}

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

Matchstick

GraphData[{"QuasiCubic",{9,27}},"Matchstick"]

GraphData[{"QuasiCubic",{9,27}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{9,27}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{9,27}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{9,27}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{9,27}},"Polyhedral"]

GraphData[{"QuasiCubic",{9,27}},"Graph",{"3D","Polyhedron"}]

11

Intersection[GraphData["QuasiCubic*"],GraphData[11]]

{"QuasiCubic", {11, 1}}

GraphData[{"QuasiCubic",{11,1}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{11,1}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{11,1}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{11,1}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{11,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{11,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{11,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{11,1}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{11,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{11,1}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{11,1}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{11,1}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{11,1}},"Planar"]

GraphData[{"QuasiCubic",{11,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{11,1}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{11,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{11,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{11,1}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{11,1}}],"CrossingNumber"->cn,RandomSeed->n]],{n,500}],Max[OuterFace[#]]<=GraphData[{"QuasiCubic",{11,1}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{11,1}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{11,1}},"Circulant"]

GraphData[{"QuasiCubic",{11,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{11,1}},"Halin"]

GraphData[{"QuasiCubic",{11,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{11,1}},"Rigid"]

GraphData[{"QuasiCubic",{11,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{11,1}},"Flexible"]

GraphData[{"QuasiCubic",{11,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{11,1}},"LCF"]

GraphData[{"QuasiCubic",{11,1}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{11,1}},"LCFSignature"]

GraphData[{"QuasiCubic",{11,1}},"LCFNotations"]

GraphData[{"QuasiCubic",{11,1}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{11,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{11,1}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{11,1}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance construction

GraphData[{"QuasiCubic",{11,1}},"Graphics"]

g=Graph[Range[11],UndirectedEdge@@@{{1,2},{1,5},{1,6},{2,7},{2,3},{3,4},{3,8},{4,6},{4,9},{5,8},{5,10},{6,7},{7,8},{7,11},{9,10},{9,11},{10,11}},VertexCoordinates->{{-1,0},{0,0},{1,0},{-1/2,1/2},{1/2,1/2},{-1,1},{0,1},{1,1},{-1/2,3/2},{1/2,3/2},{0,3/2+Sqrt[3]/2}},VertexLabels->"Name"]

RecognizeGraph@g

GraphPlot[g,VertexLabels->None]

s=Sqrt[3]/2;

soln=Solve[{
x^2+y^2==1,
(a+x)^2+(y-b)^2==1,
(x-a)^2+(y+1-b)^2==1,
(a-1/2)^2+(2-s-b)^2==1},{x,y,a,b},Reals]

gs=Graph[Range[11],UndirectedEdge@@@{{1,2},{1,4},{1,3},{2,3},{2,7},{3,8},{4,5},{4,6},{4,10},{5,7},{5,9},{6,8},{6,11},{7,11},{8,9},{9,10},{10,11}},VertexCoordinates->({{0,2},{-1/2,2-s},{1/2,2-s},{0,1},{-x,y+1},{x,y+1},{-a,b},{a,b},{-x,y},{0,0},{x,y}}/.#),VertexLabels->"Name"]&/@soln

<<MathWorld`Graphs`

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

DegenerateEmbeddingQ/@gs

gs=Delete[%8,3]

GraphEmbedding[gs[[1]]]//RootReduce

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{11,1}},"VertexList"],GraphData[{"QuasiCubic",{11,1}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{11,1}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{11,1}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{11,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{11,1}}],TimeConstraint->300,"Results"->All]//Timing}

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

Matchstick

GraphData[{"QuasiCubic",{11,1}},"Matchstick"]

GraphData[{"QuasiCubic",{11,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{11,1}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{11,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{11,1}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{11,1}},"Polyhedral"]

GraphData[{"QuasiCubic",{11,1}},"Graph",{"3D","Polyhedron"}]

13

Intersection[GraphData["QuasiCubic*"],GraphData[13]]

{"QuasiCubic", {13, 1}}

GraphData[{"QuasiCubic",{13,1}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{13,1}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{13,1}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{13,1}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{13,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{13,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{13,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{13,1}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{13,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{13,1}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{13,1}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{13,1}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{13,1}},"Planar"]

GraphData[{"QuasiCubic",{13,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{13,1}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{13,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{13,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{13,1}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{13,1}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot[RotateGraph[,8Pi/5]]

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

RecognizeGraph@g

RectilinearCrossingCount@g

Circulant

GraphData[{"QuasiCubic",{13,1}},"Circulant"]

GraphData[{"QuasiCubic",{13,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{13,1}},"Halin"]

GraphData[{"QuasiCubic",{13,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{13,1}},"Rigid"]

GraphData[{"QuasiCubic",{13,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{13,1}},"Flexible"]

GraphData[{"QuasiCubic",{13,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{13,1}},"LCF"]

GraphData[{"QuasiCubic",{13,1}},"HamiltonianCycleCount"]

GraphData[{"QuasiCubic",{13,1}},"LCFSignature"]

GraphData[{"QuasiCubic",{13,1}},"LCFNotations"]

GraphData[{"QuasiCubic",{13,1}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{13,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{13,1}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{13,1}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance construction

gg=Graph[{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, {UndirectedEdge[1, 6], UndirectedEdge[1, 13], UndirectedEdge[2, 3], UndirectedEdge[2, 11], UndirectedEdge[3, 8], UndirectedEdge[4, 5], UndirectedEdge[4, 13], UndirectedEdge[5, 10], UndirectedEdge[6, 7], UndirectedEdge[7, 8], UndirectedEdge[8, 9], UndirectedEdge[9, 10], UndirectedEdge[11, 12], UndirectedEdge[12, 13], UndirectedEdge[9, 13], UndirectedEdge[5, 6], UndirectedEdge[10, 11], UndirectedEdge[3, 4]}, {VertexLabels -> {"Name"}}]

GraphPlot[Graph[{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, {1\[UndirectedEdge]6,1\[UndirectedEdge]13,2\[UndirectedEdge]3,2\[UndirectedEdge]11,3\[UndirectedEdge]8,4\[UndirectedEdge]5,4\[UndirectedEdge]13,5\[UndirectedEdge]10,6\[UndirectedEdge]7,7\[UndirectedEdge]8,8\[UndirectedEdge]9,9\[UndirectedEdge]10,11\[UndirectedEdge]12,12\[UndirectedEdge]13,9\[UndirectedEdge]13,5\[UndirectedEdge]6,10\[UndirectedEdge]11,3\[UndirectedEdge]4,1\[UndirectedEdge]2,7\[UndirectedEdge]12},VertexCoordinates->GraphEmbedding[gg]]]

v=Join[
c1=CirclePoints[Csc[Pi/5]/2,5],
c2=CirclePoints[1.1,9];
(#+c1[[3]]-c2[[5]])&/@Delete[c2,5]];

g=Graph[Range[Length[v]],UndirectedEdge@@@{{1,3},{3,5},{2,5},{2,4},{1,4},{3,10},{10,11},{11,12},{12,13},{6,13},{6,7},{7,8},{8,9},{3,9},{2,8},{4,11},{7,10},{9,12},{5,13},{1,6}},VertexCoordinates->N@v,VertexLabels->"Name"]

RecognizeGraph@g

GraphPlot[g,VertexLabels->None]

(nsoln=NSolve[{(a-1/2)^2+b^2==1,(x-1/2)^2+y^2==1,(x+1/2)^2+(y-h)^2==1,(a+e)^2+(b-f)^2==1,x^2+(y-z)^2==1,(c-1/2)^2+(d-h)^2==1,(a-c)^2+(b-d)^2==1,(e-c)^2+(f-d)^2==1,e^2+(f-z)^2==1},{h,z,x,y,a,b,c,d,e,f},Reals])//Timing

Length[nsoln]

gs=Select[Graph[Range[13],UndirectedEdge@@@{{1,2},{1,3},{1,10},{1,11},{2,4},{2,9},{3,7},{3,8},{4,5},{4,8},{5,6},{5,11},{6,10},{6,7},{7,9},{8,12},{9,13},{10,12},{11,13},{12,13}},VertexCoordinates->({{0,z},{-e,f},{e,f},{-c,d},{-1/2,h},{1/2,h},{c,d},{-a,b},{a,b},{-x,y},{x,y},{-1/2,0},{1/2,0}}/.#),VertexLabels->"Name"]&/@nsoln,UnitDistanceGraphEmbeddingQ]

Length[gs]

RecognizeGraph/@gs

EdgeLengths[gs[[1]]]

UnitDistanceGraphEmbeddingQ/@gs

soln=Solve[{
(a-1/2)^2+b^2==1,
(x-1/2)^2+y^2==1,
(x+1/2)^2+(y-h)^2==1,
(a+e)^2+(b-f)^2==1,
x^2+(y-z)^2==1,
(c-1/2)^2+(d-h)^2==1,
(a-c)^2+(b-d)^2==1,
(e-c)^2+(f-d)^2==1,
e^2+(f-z)^2==1},{h,z,x,y,a,b,c,d,e,f},Reals]

ran overnight

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"QuasiCubic",{13,1}},"VertexList"],GraphData[{"QuasiCubic",{13,1}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{13,1}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{13,1}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{13,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{13,1}}],TimeConstraint->300,"Results"->All]//Timing}

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

Matchstick

GraphData[{"QuasiCubic",{13,1}},"Matchstick"]

GraphData[{"QuasiCubic",{13,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"QuasiCubic",{13,1}},"Edges"]]

3D All

GraphData[{"QuasiCubic",{13,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"QuasiCubic",{13,1}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"QuasiCubic",{13,1}},"Polyhedral"]

GraphData[{"QuasiCubic",{13,1}},"Graph",{"3D","Polyhedron"}]

15

Intersection[GraphData["QuasiCubic*"],GraphData[15]]

{"QuasiCubic", {15, 1}}

GraphData[{"QuasiCubic",{15,1}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{15,1}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{15,1}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{15,1}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{15,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{15,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{15,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{15,1}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{15,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{15,1}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{15,1}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{15,1}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{15,1}},"Planar"]

GraphData[{"QuasiCubic",{15,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{15,1}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{15,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{15,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{15,1}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{15,1}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"QuasiCubic",{15,1}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{15,1}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{15,1}},"Circulant"]

GraphData[{"QuasiCubic",{15,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{15,1}},"Halin"]

GraphData[{"QuasiCubic",{15,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{15,1}},"Rigid"]

GraphData[{"QuasiCubic",{15,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{15,1}},"Flexible"]

GraphData[{"QuasiCubic",{15,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{15,1}},"LCFSignature"]

GraphData[{"QuasiCubic",{15,1}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{15,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{15,1}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{15,1}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistanceEmbeddingRefine

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"QuasiCubic",{15,1}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{15,1}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

{{"QuasiCubic",{15,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{15,1}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"QuasiCubic",{15,1}},"Graph","Matchstick"]//StyleGraphs

3D All

GraphData[{"QuasiCubic",{15,1}},"Graph",{"3D","All"}]

17

Intersection[GraphData["QuasiCubic*"],GraphData[17]]

{"QuasiCubic", {17, 1}}

GraphData[{"QuasiCubic",{17,1}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{17,1}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{17,1}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{17,1}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{17,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{17,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{17,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{17,1}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{17,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{17,1}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{17,1}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{17,1}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

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

Planar

GraphData[{"QuasiCubic",{17,1}},"Planar"]

GraphData[{"QuasiCubic",{17,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{17,1}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{17,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{17,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{17,1}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{17,1}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,2Pi/5]

v={{0,0},{1,0},{1,1},{1/2,Sqrt[3]/2+1},{0,1},{1/5,1/5},{4/5,1/5},{2/5,2/5},{3/5,2/5},{1/5,3/5},{2/5,3/5},{3/5,3/5},{4/5,3/5},{2/5,4/5},{3/5,4/5},{1/5,1},{4/5,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,9,12,15,4,14,11,8,7,2],e[5,16,17,3],e[6,10,16],e[7,13,17],{8,15},{9,14},{10,11},{12,13}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{17,1}},"Circulant"]

GraphData[{"QuasiCubic",{17,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{17,1}},"Halin"]

GraphData[{"QuasiCubic",{17,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{17,1}},"Rigid"]

GraphData[{"QuasiCubic",{17,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{17,1}},"Flexible"]

GraphData[{"QuasiCubic",{17,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{17,1}},"LCFSignature"]

GraphData[{"QuasiCubic",{17,1}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{17,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{17,1}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{17,1}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistanceEmbeddingRefine

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"QuasiCubic",{17,1}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindSubgraphUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{17,1}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

{{"QuasiCubic",{17,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{17,1}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"QuasiCubic",{17,1}},"Graph","Matchstick"]//StyleGraphs

3D All

GraphData[{"QuasiCubic",{17,1}},"Graph",{"3D","All"}]

19

Intersection[GraphData["QuasiCubic*"],GraphData[19]]

{"QuasiCubic", {19, 1}}

GraphData[{"QuasiCubic",{19,1}},"StandardName"]

Primary

GraphData[{"QuasiCubic",{19,1}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"QuasiCubic",{19,1}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"QuasiCubic",{19,1}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"QuasiCubic",{19,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"QuasiCubic",{19,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"QuasiCubic",{19,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"QuasiCubic",{19,1}},"Graph","Degenerate"]

Bilateral

GraphData[{"QuasiCubic",{19,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"QuasiCubic",{19,1}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"QuasiCubic",{19,1}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"QuasiCubic",{19,1}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"QuasiCubic",{19,1}},"Planar"]

GraphData[{"QuasiCubic",{19,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"QuasiCubic",{19,1}},{"RCN","CN"}]

GraphData[{"QuasiCubic",{19,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"QuasiCubic",{19,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"QuasiCubic",{19,1}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"QuasiCubic",{19,1}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"QuasiCubic",{19,1}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"QuasiCubic",{19,1}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,Pi/6]

v={#/6,#2/7}&@@@{{0,0},{6,0},{1,1},{3,1},{5,1},{5,2},{1,3},{5,3},{1,4},{2,4},{3,4},{4,4},{5,4},{1,5},{5,5},{1,6},{5,6},{0,7},{6,7}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,15,17,19,6,5,1,14,16,18,7,3,4,5],{2,3},e[7,9,14],{16,12},{10,17},e[9,10,11,12,13,15],e[6,8,13],{4,11},{7,8},{18,19}},VertexCoordinates->v,VertexLabels->Automatic]

VertexDegree[g]

RecognizeGraph@g

GraphPlot@MinimalCrossingGraph[GraphData[{"QuasiCubic",{19,1}}],"CrossingNumber"->5]

GraphPlot@RotateGraph[HighlightGraph[GraphicsToGraph@,Range[19+1,19+5]],{16,15}]

v={{0,0},{5,0},{1,1},{4,1},{4,2},{2,3},{3,3},{4,3},{2,4},{3,4},{4,4},{4,5},{0,6},{2,6},{3,6},{4,6},{4,9},{3,10},{5,10}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,19,18,13,1,2,12],e[4,5,8,11,12,16,17],e[1,3,9,17,19],e[3,7,10,15,18],e[14,9,6,10],{13,14},{15,16},e[2,4,6],{14,11},{7,8}},VertexCoordinates->v,VertexLabels->"Name"]

r=RecognizeGraph[g]

RectilinearCrossingCount[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"QuasiCubic",{19,1}},"Circulant"]

GraphData[{"QuasiCubic",{19,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"QuasiCubic",{19,1}},"Halin"]

GraphData[{"QuasiCubic",{19,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"QuasiCubic",{19,1}},"Rigid"]

GraphData[{"QuasiCubic",{19,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"QuasiCubic",{19,1}},"Flexible"]

GraphData[{"QuasiCubic",{19,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"QuasiCubic",{19,1}},"LCFSignature"]

GraphData[{"QuasiCubic",{19,1}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"QuasiCubic",{19,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"QuasiCubic",{19,1}}],Debug->True]//Timing

GraphData[{"QuasiCubic",{19,1}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistanceEmbeddingRefine

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"QuasiCubic",{19,1}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"QuasiCubic",{19,1}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindSubgraphUnitDistanceEmbedding

{{"QuasiCubic",{19,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"QuasiCubic",{19,1}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"QuasiCubic",{19,1}},"Graph","Matchstick"]//StyleGraphs

3D All

GraphData[{"QuasiCubic",{19,1}},"Graph",{"3D","All"}]

GraphData

Add new

Table[cubicquasi[n],{n,1,10,2}]

gs={{},{},{},{,,,},{,,,,,,,,,,,,,,,,,,,,,,,,,,}};

data=Flatten[MapIndexed[{#,{2#2[[1]]-1,#2[[2]]},If[(r=RecognizeGraph[#])==={},#,r]}&,gs,{2}],1]

altstdnames=Select[data,MemberQ[GraphData[All],#[[3]]]&]

Add:

l={#3,{0,SortBy[Join[{{"QuasiCubic",#2}},GraphData[#3,"AlternateStandardNames"]],Function[s,First[Flatten[{s}]]]]}}&@@@altstdnames

l={#3,{0,Sort[Join[{"("<>StringTake[StringReplace[ToString[#2], " "->""],{2,-2}]<>")\[Hyphen]quasi\[Hyphen]cubic graph"},GraphData[#3,"AlternateNames"]]]}}&@@@altstdnames

Length[l]

New:

newgraphs=Select[data,!MemberQ[GraphData[All],#[[3]]]&]

{9,10}{9,13}{9,15}

newgraphs={{,{9,1},{9,69913}},{,{9,2},{9,71758}},{,{9,3},{9,94617}},{,{9,4},{9,102973}},{,{9,5},{9,109639}},{,{9,6},{9,109769}},{,{9,7},{9,110337}},{,{9,9},{9,111612}},{,{9,10},{9,113312}},{,{9,11},{9,113504}},{,{9,12},{9,115309}},{,{9,13},{9,115871}},{,{9,14},{9,120457}},{,{9,15},{9,163653}},{,{9,16},{9,164745}},{,{9,17},{9,170243}},{,{9,18},{9,170652}},{,{9,19},{9,172353}},{,{9,20},{9,174799}},{,{9,21},{9,174968}},{,{9,22},{9,176265}},{,{9,23},{9,177969}},{,{9,24},{9,179240}},{,{9,25},{9,179319}},{,{9,27},{9,181507}}};

Length[newgraphs]

GraphData

Close[file]

file=OpenAppend["~/degree-diameter.m"]

Position[newgraphs[[All,2]],{9,16}]

WriteString[file,GraphDataString[#1,
"StandardName"->{"QuasiCubic",#2},
"Name"->"("<>StringTake[StringReplace[ToString[#2], " "->""],{2,-2}]<>")\[Hyphen]quasi\[Hyphen]cubic graph",
"Skip"->{"DistinguishingNumber","GracefulLabelings"},
TimeConstraint->60,
Debug->True
]]&@@@Drop[newgraphs,15];

Close[file]

g9=ConnectedGraphs[9];

Length[q9=Select[g9,QuasiRegularGraphQ[#,3]&]]//Timing

Select[q9,PlanarGraphQ[#]===False&&GraphDiameter[#]==2&]

RecognizeGraph/@%

Disconnected

file=OpenWrite["~/wtet.m"]

g=MyGraphUnion[GraphData["W5"],GraphData["K4"],"Scaling"->False]

QuasiRegularGraphQ[g]

WriteString[file,GraphDataString[g,
"StandardName"->"W5+K4",
"Name"->"5\[Hyphen]wheel and tetrahedral graph",
"AlternateStandardNames"->"K4+W5"
]]

Close[file]