Quintic Graph

Author

Eric W. Weisstein
October 26, 2023

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

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

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

Counts

All

A165626

0, 0, 1, 3, 60, 7849, 3459386, 2585136741, 2807105258926

Total[Boole[Get[#]]]&/@FileNames["*.m",FileNameJoin[{$GraphDataDirectory,"Nodes","Quintic"}]]

Table[Total[Boole[QuinticGraphQ/@Graphs[n]]],{n,10}]//Timing

Table[Length@GraphData["Quintic",n],{n,12}]

Connected

A006821

0, 0, 1, 3, 60, 7848, 3459383, 2585136675, 2807105250897

Table[Total[Boole[Get[FileNameJoin[{$GraphDataDirectory,"Nodes","Quintic","Quintic_"<>If[n<10,"0",""]<>ToString[n]<>".m"}]][[ConnectedGraphIndices[n]]]]],{n,10}]

Table[Total[Boole[QuinticGraphQ/@ConnectedGraphs[n]]],{n,10}]//Timing

Table[Length@GraphData[{"Quintic","Connected"},n],{n,2,16,2}]

Length/@Table[RegularConnectedGraphs[5,n],{n,12}]

Disconnected

A165655

0, 0, 0, 0, 0, 1, 3, 66, 8029, 3484760, 2595985770, 2815099031417

Table[Total[Boole[Get[FileNameJoin[{$GraphDataDirectory,"Nodes","Quintic","Quintic_"<>If[n<10,"0",""]<>ToString[n]<>".m"}]][[DisconnectedGraphIndices[n]]]]],{n,10}]

Table[Length@GraphData[{"Quintic","Disconnected"},n],{n,2,16,2}]

Figure

GraphicsGrid[Partition[Show[GraphData[#],PlotLabel->TextCell[GraphData[#,"Name"],PageWidth->78,TextAlignment->Center,Hyphenation->True],BaseStyle->{Italic,FontSize->9}]&/@Take[l2,55],5,5,{1,1},{}]/.AbsolutePointSize[_]:>AbsolutePointSize[4],ImageSize->400]

Table

Grid[GraphData[#,{"Name","V","Symmetric"}]&/@SortBy[DeleteCases[GraphData["Quintic"],{"Antiprism"|"Circulant"|"Haar"|"JohnsonSkeleton"|"Quintic"|"QuinticSymmetric"|"QuinticTransitive"|"VertexTransitive",_}],GraphData[#,"V"]&]/.{True->"yes",False->"no"},Dividers->All,Alignment->{{Left,Right,Left},Automatic}]//TraditionalForm

Classes

Archimedean

GraphData[{"Quintic","Archimedean"}]

ArchimedeanDual

GraphData[{"Quintic","ArchimedeanDual"}]

Circulant

GraphData[{"Quintic","Circulant"}]

Platonic

GraphData[{"Quintic","Platonic"}]

Special cases

{“Quintic”,{66,1}}

Example of a 5-regular planar graph that is (obviously) not Hamiltonian (bridge), and also not Class 1 (easy to prove).  From Stan Wagon, Feb 26, 2013.

g=System`Graph[Range[66],UndirectedEdge@@@{{1,2},{1,5},{1,6},{1,10},{1,16},{2,3},{2,6},{2,7},{2,15},{3,4},{3,7},{3,8},{3,14},{4,5},{4,8},{4,9},{5,9},{5,10},{6,7},{6,10},{7,8},{8,9},{9,10},{6,11},{7,11},{8,11},{9,11},{10,11},{12,13},{12,16},{12,17},{12,21},{12,26},{13,14},{13,17},{13,18},{13,25},{14,15},{14,18},{14,19},{15,16},{15,19},{15,20},{16,20},{16,21},{17,18},{17,21},{18,19},{19,20},{20,21},{17,22},{18,22},{19,22},{20,22},{21,22},{5,23},{23,24},{23,27},{23,28},{23,32},{4,24},{24,25},{24,28},{24,29},{25,26},{25,29},{25,30},{26,27},{26,30},{26,31},{27,31},{27,32},{28,29},{28,32},{29,30},{30,31},{31,32},{28,33},{29,33},{30,33},{31,33},{32,33},{34,35},{34,38},{34,39},{34,43},{34,49},{35,36},{35,39},{35,40},{35,48},{36,37},{36,40},{36,41},{36,47},{37,38},{37,41},{37,42},{38,42},{38,43},{39,40},{39,43},{40,41},{41,42},{42,43},{39,44},{40,44},{41,44},{42,44},{43,44},{45,46},{45,49},{45,50},{45,54},{45,59},{46,47},{46,50},{46,51},{46,58},{47,48},{47,51},{47,52},{48,49},{48,52},{48,53},{49,53},{49,54},{50,51},{50,54},{51,52},{52,53},{53,54},{50,55},{51,55},{52,55},{53,55},{54,55},{38,56},{56,57},{56,60},{56,61},{56,65},{37,57},{57,58},{57,61},{57,62},{58,59},{58,62},{58,63},{59,60},{59,63},{59,64},{60,64},{60,65},{61,62},{61,65},{62,63},{63,64},{64,65},{61,66},{62,66},{63,66},{64,66},{65,66},{27,60}},VertexCoordinates->{{-0.951`,0.309`},{-0.588`,-0.809`},{0.588`,-0.809`},{0.951`,0.309`},{0.`,1.`},{-0.385`,-0.125`},{0.`,-0.405`},{0.385`,-0.125`},{0.238`,0.328`},{-0.237`,0.327`},{0.00010000000000000009`,-2.2204460492503132`*^-17},{0.4954625849323946`,-3.9441155627834394`},{1.282178986363397`,-3.070748341209688`},{0.6941789863633969`,-2.0523024663591887`},{-0.4555374150676055`,-2.2969352447854376`},{-0.5784609690826525`,-3.4660254037844385`},{0.588317610174841`,-3.2369451842414474`},{0.6383047232344837`,-2.7635254037844383`},{0.20331761017484096`,-2.5701056233274295`},{-0.11549189773950985`,-2.923911357683742`},{0.12287412766427463`,-3.3347734244813507`},{0.28751443470178606`,-2.96593880124406`},{3.4555374150676057`,-0.5648844372165601`},{2.305821013636603`,-0.32025165879031126`},{1.717821013636603`,-1.3386975336408111`},{2.504537415067605`,-2.2120647552145623`},{3.5784609690826525`,-1.7339745962155613`},{2.796682389825159`,-0.8380548157585523`},{2.3616952767655164`,-1.0314745962155611`},{2.411682389825159`,-1.5048943766725702`},{2.87749189773951`,-1.6040886423162577`},{3.1141258723357255`,-1.1922265755186492`},{2.712385565298214`,-1.2340611987559398`},{9.951`,0.309`},{9.588`,-0.809`},{8.412`,-0.809`},{8.049`,0.309`},{9.`,1.`},{9.385`,-0.125`},{9.`,-0.405`},{8.615`,-0.125`},{8.762`,0.328`},{9.237`,0.327`},{8.9999`,-2.2204460492503132`*^-17},{8.504537415067606`,-3.9441155627834394`},{7.717821013636603`,-3.070748341209688`},{8.305821013636603`,-2.0523024663591887`},{9.455537415067605`,-2.2969352447854376`},{9.578460969082652`,-3.4660254037844385`},{8.41168238982516`,-3.2369451842414474`},{8.361695276765516`,-2.7635254037844383`},{8.79668238982516`,-2.5701056233274295`},{9.11549189773951`,-2.923911357683742`},{8.877125872335725`,-3.3347734244813507`},{8.712485565298214`,-2.96593880124406`},{5.544462584932394`,-0.5648844372165601`},{6.694178986363397`,-0.32025165879031126`},{7.282178986363397`,-1.3386975336408111`},{6.495462584932395`,-2.2120647552145623`},{5.421539030917348`,-1.7339745962155613`},{6.203317610174841`,-0.8380548157585523`},{6.638304723234484`,-1.0314745962155611`},{6.58831761017484`,-1.5048943766725702`},{6.12250810226049`,-1.6040886423162577`},{5.885874127664275`,-1.1922265755186492`},{6.287614434701786`,-1.2340611987559398`}}]

RecognizeGraph[g]

GraphEmbedding[g]//Chop

file=OpenWrite["~/quintic.m"]

WriteString[file,GraphDataString[g,
"StandardName"->{"Quintic",{66,1}},
"Name"->"66\[Hyphen]quintic graph 1",
"Information"->"QuinticGraph",
"Classes"->{"Planar","Nonhamiltonian","Class2","Quintic","Regular"},
"Skip"->{"IndependencePolynomial"},
Debug->True,
MemoryConstraint->1*^9,
TimeConstraint->60]
]

Close[file]

Construct disconnected

n==14

FrobeniusSolve[Range[6,13],14]

GraphData[{"Quintic","Connected"},#]&/@{6,7,8}//Column

gs=(GraphDisjointUnion@@GraphData/@{{"Complete",6},#})&/@{{"Circulant",{8,{1,2,4}}},{"Circulant",{8,{1,3,4}}},{"Cone",{5,3}}}

QuinticGraphQ/@gs

ToEntity/@gs

Head/@%

Embeddings

<<MathWorld`Graphs`

6

TextGrid[Sort[{FirstCase[GraphData[#,"StandardNames"],{"Quintic",n_}:>n],#}&/@GraphData["Quintic",6]],Dividers->All]

{"Quintic", {6, 1}} == {"Complete", 6}

Names

GraphData[{"Quintic",{6,1}},"StandardName"]

GraphData[{"Quintic",{6,1}},"StandardNames"]

8

TextGrid[Sort[{FirstCase[GraphData[#,"StandardNames"],{"Quintic",n_}:>n],#}&/@GraphData["Quintic",8]],Dividers->All]

{"Quintic", {8, 1}} == {"Circulant", {8, {1, 3, 4}}}

Names

GraphData[{"Quintic",{8,1}},"StandardName"]

GraphData[{"Quintic",{8,1}},"StandardNames"]

{"Quintic", {8, 2}} == {"Circulant", {8, {1, 2, 4}}}

Names

GraphData[{"Quintic",{8,2}},"StandardName"]

GraphData[{"Quintic",{8,2}},"StandardNames"]

{"Quintic", {8, 3}} == {"Cone", {5, 3}}

Names

GraphData[{"Quintic",{8,3}},"StandardName"]

GraphData[{"Quintic",{8,3}},"StandardNames"]

10

TextGrid[Sort[{FirstCase[GraphData[#,"StandardNames"],{"Quintic",n_}:>n],#}&/@GraphData["Quintic",10]],Dividers->All]

{"Quintic", {10, 1}}

Names

GraphData[{"Quintic",{10,1}},"StandardName"]

GraphData[{"Quintic",{10,1}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,1}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,1}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,1}},"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->None]

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

RecognizeGraph[g]

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

Degenerate

GraphData[{"Quintic",{10,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,1}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,1}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,1}},"Planar"]

GraphData[{"Quintic",{10,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,1}},{"RCN","CN"}]

GraphData[{"Quintic",{10,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,1}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,1}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,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[{"Quintic",{10,1}},"Circulant"]

GraphData[{"Quintic",{10,1}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,1}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,1}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,1}}&]

RootGraph[GraphData[{"Quintic",{10,1}}]]

Halin

GraphData[{"Quintic",{10,1}},"Halin"]

GraphData[{"Quintic",{10,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,1}},"Rigid"]

GraphData[{"Quintic",{10,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,1}},"Flexible"]

GraphData[{"Quintic",{10,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,1}},"LCF"]

GraphData[{"Quintic",{10,1}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,1}},"LCFSignature"]

GraphData[{"Quintic",{10,1}},"LCFNotations"]

GraphData[{"Quintic",{10,1}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,1}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,1}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,1}}],Debug->True]//Timing

GraphData[{"Quintic",{10,1}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

GraphPlot@

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,1}},"Matchstick"]

GraphData[{"Quintic",{10,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,1}},"Edges"]]

3D All

GraphData[{"Quintic",{10,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,1}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,1}},"Polyhedral"]

{"Quintic", {10, 2}}

GraphData[{"Quintic",{10,2}},"StandardName"]

All

GraphData[{"Quintic",{10,2}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,2}},"LCFSignature"]

GraphData[{"Quintic",{10,2}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,2}}],Debug->True]

GraphData[{"Quintic",{10,2}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,2}},{"RCN","CN"}]

GraphData[{"Quintic",{10,2}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,2}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,2}},"Edges"]

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

VertexDegree[g]

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,2}}],"CrossingNumber"->5,RandomSeed->1111],Pi/2]

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 3}} == {"Circulant", {10, {1, 4, 5}}}

Names

GraphData[{"Quintic",{10,3}},"StandardName"]

GraphData[{"Quintic",{10,3}},"StandardNames"]

{"Quintic", {10, 4}}

GraphData[{"Quintic",{10,4}},"StandardName"]

All

GraphData[{"Quintic",{10,4}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,4}},"LCFSignature"]

GraphData[{"Quintic",{10,4}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,4}}],Debug->True]

GraphData[{"Quintic",{10,4}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,4}},{"RCN","CN"}]

GraphData[{"Quintic",{10,4}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,4}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,4}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,4}}],"CrossingNumber"->5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 5}}

Names

GraphData[{"Quintic",{10,5}},"StandardName"]

GraphData[{"Quintic",{10,5}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,5}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,5}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Quintic",{10,5}},"Edges"],Pi/2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"Quintic",{10,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,5}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,5}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,5}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,5}},"Planar"]

GraphData[{"Quintic",{10,5}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,5}},{"RCN","CN"}]

GraphData[{"Quintic",{10,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

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

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,5}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

GraphPlot@RotateGraph[,Pi/4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[,-2Pi/3]

GraphPlot@RotateGraph[,2Pi/3]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs=UnlabelGraph/@{,,}

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

GraphData[{"Quintic",{10,5}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,5}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,5}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,5}}&]

RootGraph[GraphData[{"Quintic",{10,5}}]]

Halin

GraphData[{"Quintic",{10,5}},"Halin"]

GraphData[{"Quintic",{10,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,5}},"Rigid"]

GraphData[{"Quintic",{10,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,5}},"Flexible"]

GraphData[{"Quintic",{10,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,5}},"LCF"]

GraphData[{"Quintic",{10,5}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,5}},"LCFSignature"]

GraphData[{"Quintic",{10,5}},"LCFNotations"]

GraphData[{"Quintic",{10,5}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,5}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,5}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,5}}],Debug->True]//Timing

GraphData[{"Quintic",{10,5}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,Pi/2]

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

RecognizeGraph@g

GraphPlot@RotateGraph[,{1,2}]

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,5}},"Matchstick"]

GraphData[{"Quintic",{10,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,5}},"Edges"]]

3D All

GraphData[{"Quintic",{10,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,5}},"Polyhedral"]

{"Quintic", {10, 6}}

GraphData[{"Quintic",{10,6}},"StandardName"]

All

GraphData[{"Quintic",{10,6}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,6}},"LCFSignature"]

GraphData[{"Quintic",{10,6}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,6}}],Debug->True]

GraphData[{"Quintic",{10,6}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,6}},{"RCN","CN"}]

GraphData[{"Quintic",{10,6}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,6}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,6}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,6}}],"CrossingNumber"->5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 7}}

GraphData[{"Quintic",{10,7}},"StandardName"]

All

GraphData[{"Quintic",{10,7}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,7}},"LCFSignature"]

GraphData[{"Quintic",{10,7}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,7}}],Debug->True]

GraphData[{"Quintic",{10,7}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,7}},{"RCN","CN"}]

GraphData[{"Quintic",{10,7}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,7}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,7}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,7}}],"CrossingNumber"->5,RandomSeed->1111]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 8}}

Names

GraphData[{"Quintic",{10,8}},"StandardName"]

GraphData[{"Quintic",{10,8}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,8}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,8}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Quintic",{10,8}},"Edges"],-Pi/2]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,8}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,8}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,8}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,8}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,8}},"Planar"]

GraphData[{"Quintic",{10,8}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,8}},{"RCN","CN"}]

GraphData[{"Quintic",{10,8}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,8}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,8}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,8}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,8}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs={,,,,,,,,,,,,,,,};

Circulant

GraphData[{"Quintic",{10,8}},"Circulant"]

GraphData[{"Quintic",{10,8}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,8}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,8}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,8}}&]

RootGraph[GraphData[{"Quintic",{10,8}}]]

Halin

GraphData[{"Quintic",{10,8}},"Halin"]

GraphData[{"Quintic",{10,8}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,8}},"Rigid"]

GraphData[{"Quintic",{10,8}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,8}},"Flexible"]

GraphData[{"Quintic",{10,8}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,8}},"LCF"]

GraphData[{"Quintic",{10,8}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,8}},"LCFSignature"]

GraphData[{"Quintic",{10,8}},"LCFNotations"]

GraphData[{"Quintic",{10,8}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,8}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,8}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

i=0;
gs={};
t0=AbsoluteTime[];
count=Length[order2];
Monitor[
Do[
If[!MissingQ[g=BilateralLCFGraph[LCFGraph@@order2[[i]]]],AppendTo[gs,g]],
{i,count}
],
Column[{
ProgressIndicator[i,{1,count}],
Row[{i,"/",count}],
Row[{"estimated time remaining: ",Round[(AbsoluteTime[]-t0) (count/i-1)]," s"}],
Row[{Length[gs]," bilateral graphs"}]
}]
];//Timing

UnitDistance

GraphData[{"Quintic",{10,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,8}}],Debug->True]//Timing

GraphData[{"Quintic",{10,8}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{4,5}]

v[[5]]

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

RecognizeGraph@g

GraphPlot@RotateGraph[,{8,9}]

RotateGraph[GraphicsToGraph@,Pi/2]

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

RecognizeGraph@g

gs=UnlabelGraph/@{,}

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,8}},"Matchstick"]

GraphData[{"Quintic",{10,8}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,8}},"Edges"]]

3D All

GraphData[{"Quintic",{10,8}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,8}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,8}},"Polyhedral"]

{"Quintic", {10, 9}}

Names

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

GraphData[{"Quintic",{10,9}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Bilateral

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

Circular

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

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

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

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

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,9}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,9}}],"CrossingNumber"->cn,RandomSeed->i],{i,2000}]//Union

GraphPlot@

RegionIntersection[Line@v[[{3,5}]],InfiniteLine@v[[{8,9}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Line graph

GraphData[{"Quintic",{10,9}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,9}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,9}}&]

RootGraph[GraphData[{"Quintic",{10,9}}]]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,9}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,9}}],All])[[All,2]]]//Timing

lcf

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

{"Quintic", {10, 10}}

Names

GraphData[{"Quintic",{10,10}},"StandardName"]

GraphData[{"Quintic",{10,10}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,10}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,10}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Bilateral

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

Circular

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

Planar

GraphData[{"Quintic",{10,10}},"Planar"]

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

MinimalCrossing

GraphData[{"Quintic",{10,10}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,10}}],TimeConstraint->1])//AbsoluteTiming

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

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,10}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

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

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,10}},"Circulant"]

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

Line graph

GraphData[{"Quintic",{10,10}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,10}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,10}}&]

RootGraph[GraphData[{"Quintic",{10,10}}]]

Halin

GraphData[{"Quintic",{10,10}},"Halin"]

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

Rigid

GraphData[{"Quintic",{10,10}},"Rigid"]

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

Flexible

GraphData[{"Quintic",{10,10}},"Flexible"]

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

LCF

GraphData[{"Quintic",{10,10}},"LCF"]

GraphData[{"Quintic",{10,10}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,10}},"LCFSignature"]

GraphData[{"Quintic",{10,10}},"LCFNotations"]

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

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,10}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,10}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,10}},"UnitDistance"]

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

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

UnitDistance by refinement

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

GraphPlot@RotateGraph[,{8,10}]

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

GraphPlot@RotateGraph[,{5,6}]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,10}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Quintic",{10,10}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Quintic",{10,10}},"Polyhedral"]

{"Quintic", {10, 11}}

Names

GraphData[{"Quintic",{10,11}},"StandardName"]

GraphData[{"Quintic",{10,11}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,11}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,11}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,11}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,11}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,11}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,11}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,11}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,11}},"Planar"]

GraphData[{"Quintic",{10,11}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,11}},{"RCN","CN"}]

GraphData[{"Quintic",{10,11}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,11}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,11}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,11}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,11}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,11}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs=UnlabelGraph/@{,,,,,}

Circulant

GraphData[{"Quintic",{10,11}},"Circulant"]

GraphData[{"Quintic",{10,11}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,11}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,11}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,11}}&]

RootGraph[GraphData[{"Quintic",{10,11}}]]

Halin

GraphData[{"Quintic",{10,11}},"Halin"]

GraphData[{"Quintic",{10,11}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,11}},"Rigid"]

GraphData[{"Quintic",{10,11}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,11}},"Flexible"]

GraphData[{"Quintic",{10,11}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,11}},"LCF"]

GraphData[{"Quintic",{10,11}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,11}},"LCFSignature"]

GraphData[{"Quintic",{10,11}},"LCFNotations"]

GraphData[{"Quintic",{10,11}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,11}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,11}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@lcf//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,11}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,11}}],Debug->True]//Timing

GraphData[{"Quintic",{10,11}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,11}},"Matchstick"]

GraphData[{"Quintic",{10,11}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,11}},"Edges"]]

3D All

GraphData[{"Quintic",{10,11}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,11}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,11}},"Polyhedral"]

GraphData[{"Quintic",{10,11}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 12}}

Names

GraphData[{"Quintic",{10,12}},"StandardName"]

GraphData[{"Quintic",{10,12}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,12}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,12}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,12}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,12}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,12}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,12}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,12}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,12}},"Planar"]

GraphData[{"Quintic",{10,12}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,12}},{"RCN","CN"}]

GraphData[{"Quintic",{10,12}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,12}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,12}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,12}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,12}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,12}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,12}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,12}}],"CrossingNumber"->cn,RandomSeed->i],{i,250}]//Union

GraphPlot@

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

RecognizeGraph@g

RectilinearCrossingCount@g

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs=Join[UnlabelGraph/@{,},{,,,,,,,,,,,,,,,,,,,}]

Circulant

GraphData[{"Quintic",{10,12}},"Circulant"]

GraphData[{"Quintic",{10,12}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,12}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,12}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,12}}&]

RootGraph[GraphData[{"Quintic",{10,12}}]]

Halin

GraphData[{"Quintic",{10,12}},"Halin"]

GraphData[{"Quintic",{10,12}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,12}},"Rigid"]

GraphData[{"Quintic",{10,12}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,12}},"Flexible"]

GraphData[{"Quintic",{10,12}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,12}},"LCF"]

GraphData[{"Quintic",{10,12}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,12}},"LCFSignature"]

GraphData[{"Quintic",{10,12}},"LCFNotations"]

GraphData[{"Quintic",{10,12}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,12}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,12}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@lcf//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,12}}],Debug->True]//Timing

GraphData[{"Quintic",{10,12}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,12}},"Matchstick"]

GraphData[{"Quintic",{10,12}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,12}},"Edges"]]

3D All

GraphData[{"Quintic",{10,12}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,12}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,12}},"Polyhedral"]

GraphData[{"Quintic",{10,12}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 13}} == {"Rook", {2, 5}}

Names

GraphData[{"Quintic",{10,13}},"StandardName"]

GraphData[{"Quintic",{10,13}},"StandardNames"]

{"Quintic", {10, 14}}

Names

GraphData[{"Quintic",{10,14}},"StandardName"]

GraphData[{"Quintic",{10,14}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,14}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,14}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Quintic",{10,14}},"Edges"],GraphLayout->"SpringEmbedding"],Pi/2]

Norm@Mean[v[[{2,6}]]]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,14}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,14}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,14}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,14}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,14}},"Planar"]

GraphData[{"Quintic",{10,14}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,14}},{"RCN","CN"}]

GraphData[{"Quintic",{10,14}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,14}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,14}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,14}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,14}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,14}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[,3Pi/4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,14}},"Circulant"]

GraphData[{"Quintic",{10,14}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,14}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,14}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,14}}&]

RootGraph[GraphData[{"Quintic",{10,14}}]]

Halin

GraphData[{"Quintic",{10,14}},"Halin"]

GraphData[{"Quintic",{10,14}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,14}},"Rigid"]

GraphData[{"Quintic",{10,14}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,14}},"Flexible"]

GraphData[{"Quintic",{10,14}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,14}},"LCF"]

GraphData[{"Quintic",{10,14}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,14}},"LCFSignature"]

GraphData[{"Quintic",{10,14}},"LCFNotations"]

GraphData[{"Quintic",{10,14}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,14}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,14}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@lcf//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,14}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,14}}],Debug->True]//Timing

GraphData[{"Quintic",{10,14}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

GraphPlot@

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

g=RotateGraph[LabelGraph@,{4,5}]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,14}},"Matchstick"]

GraphData[{"Quintic",{10,14}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,14}},"Edges"]]

3D All

GraphData[{"Quintic",{10,14}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,14}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,14}},"Polyhedral"]

GraphData[{"Quintic",{10,14}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 15}}

Names

GraphData[{"Quintic",{10,15}},"StandardName"]

GraphData[{"Quintic",{10,15}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,15}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,15}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Quintic",{10,15}},"Edges"],GraphLayout->"RadialEmbedding"],{8,9}]

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

RecognizeGraph[g]

g=GraphPlot@GraphData[{"Quintic",{10,15}},"Edges"]

GraphPlot[GraphData[{"Quintic",{10,15}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph[g]

g=GraphPlot@GraphData[{"Quintic",{10,15}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,15}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,15}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,15}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,15}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,15}},"Planar"]

GraphData[{"Quintic",{10,15}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,15}},{"RCN","CN"}]

GraphData[{"Quintic",{10,15}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,15}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,15}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,15}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,15}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,15}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,15}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,15}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,15}}],"CrossingNumber"->5,RandomSeed->1111],-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,15}},"Circulant"]

GraphData[{"Quintic",{10,15}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,15}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,15}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,15}}&]

RootGraph[GraphData[{"Quintic",{10,15}}]]

Halin

GraphData[{"Quintic",{10,15}},"Halin"]

GraphData[{"Quintic",{10,15}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,15}},"Rigid"]

GraphData[{"Quintic",{10,15}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,15}},"Flexible"]

GraphData[{"Quintic",{10,15}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,15}},"LCF"]

GraphData[{"Quintic",{10,15}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,15}},"LCFSignature"]

GraphData[{"Quintic",{10,15}},"LCFNotations"]

GraphData[{"Quintic",{10,15}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,15}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,15}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,15}}],Debug->True]//Timing

GraphData[{"Quintic",{10,15}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,15}},"Matchstick"]

GraphData[{"Quintic",{10,15}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,15}},"Edges"]]

3D All

GraphData[{"Quintic",{10,15}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,15}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,15}},"Polyhedral"]

GraphData[{"Quintic",{10,15}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 16}}

Names

GraphData[{"Quintic",{10,16}},"StandardName"]

GraphData[{"Quintic",{10,16}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,16}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,16}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,16}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,16}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,16}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,16}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,16}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,16}},"Planar"]

GraphData[{"Quintic",{10,16}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,16}},{"RCN","CN"}]

GraphData[{"Quintic",{10,16}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,16}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,16}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,16}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,16}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,16}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,16}},"Circulant"]

GraphData[{"Quintic",{10,16}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,16}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,16}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,16}}&]

RootGraph[GraphData[{"Quintic",{10,16}}]]

Halin

GraphData[{"Quintic",{10,16}},"Halin"]

GraphData[{"Quintic",{10,16}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,16}},"Rigid"]

GraphData[{"Quintic",{10,16}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,16}},"Flexible"]

GraphData[{"Quintic",{10,16}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,16}},"LCF"]

GraphData[{"Quintic",{10,16}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,16}},"LCFSignature"]

GraphData[{"Quintic",{10,16}},"LCFNotations"]

GraphData[{"Quintic",{10,16}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,16}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,16}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@lcf//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,16}}],Debug->True]//Timing

GraphData[{"Quintic",{10,16}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

GraphPlot@RotateGraph[,{4,10}]

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

RecognizeGraph@g

Matchstick

GraphData[{"Quintic",{10,16}},"Matchstick"]

GraphData[{"Quintic",{10,16}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,16}},"Edges"]]

3D All

GraphData[{"Quintic",{10,16}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,16}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,16}},"Polyhedral"]

GraphData[{"Quintic",{10,16}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 17}}

Names

GraphData[{"Quintic",{10,17}},"StandardName"]

GraphData[{"Quintic",{10,17}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,17}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,17}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,17}},"Edges"]

v=Join[CirclePoints[7],CirclePoints[x,3]];

Solve[v[[10,2]]==v[[6,2]],x]

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

RecognizeGraph[g]

gs=Join[UnlabelGraph/@{,},{,,,,,,,,,,,,,,}]

Degenerate

GraphData[{"Quintic",{10,17}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,17}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,17}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,17}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,17}},"Planar"]

GraphData[{"Quintic",{10,17}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,17}},{"RCN","CN"}]

GraphData[{"Quintic",{10,17}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,17}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,17}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,17}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,17}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,17}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,17}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,17}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,17}}],"CrossingNumber"->4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,17}},"Circulant"]

GraphData[{"Quintic",{10,17}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,17}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,17}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,17}}&]

RootGraph[GraphData[{"Quintic",{10,17}}]]

Halin

GraphData[{"Quintic",{10,17}},"Halin"]

GraphData[{"Quintic",{10,17}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,17}},"Rigid"]

GraphData[{"Quintic",{10,17}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,17}},"Flexible"]

GraphData[{"Quintic",{10,17}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,17}},"LCF"]

GraphData[{"Quintic",{10,17}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,17}},"LCFSignature"]

GraphData[{"Quintic",{10,17}},"LCFNotations"]

GraphData[{"Quintic",{10,17}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,17}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,17}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,17}}],Debug->True]//Timing

GraphData[{"Quintic",{10,17}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,17}},"Matchstick"]

GraphData[{"Quintic",{10,17}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,17}},"Edges"]]

3D All

GraphData[{"Quintic",{10,17}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,17}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,17}},"Polyhedral"]

GraphData[{"Quintic",{10,17}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 18}}

Names

GraphData[{"Quintic",{10,18}},"StandardName"]

GraphData[{"Quintic",{10,18}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,18}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,18}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Quintic",{10,18}},"Edges"],Pi/2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Quintic",{10,18}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,18}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,18}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,18}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,18}},"Planar"]

GraphData[{"Quintic",{10,18}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,18}},{"RCN","CN"}]

GraphData[{"Quintic",{10,18}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,18}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,18}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,18}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,18}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,18}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,18}},"Circulant"]

GraphData[{"Quintic",{10,18}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,18}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,18}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,18}}&]

RootGraph[GraphData[{"Quintic",{10,18}}]]

Halin

GraphData[{"Quintic",{10,18}},"Halin"]

GraphData[{"Quintic",{10,18}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,18}},"Rigid"]

GraphData[{"Quintic",{10,18}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,18}},"Flexible"]

GraphData[{"Quintic",{10,18}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,18}},"LCF"]

GraphData[{"Quintic",{10,18}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,18}},"LCFSignature"]

GraphData[{"Quintic",{10,18}},"LCFNotations"]

GraphData[{"Quintic",{10,18}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,18}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,18}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@lcf//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,18}}],Debug->True]//Timing

GraphData[{"Quintic",{10,18}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,18}},"Matchstick"]

GraphData[{"Quintic",{10,18}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,18}},"Edges"]]

3D All

GraphData[{"Quintic",{10,18}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,18}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,18}},"Polyhedral"]

GraphData[{"Quintic",{10,18}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 19}}

Names

GraphData[{"Quintic",{10,19}},"StandardName"]

GraphData[{"Quintic",{10,19}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,19}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,19}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,19}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

g=GraphPlot@GraphData[{"Quintic",{10,19}},"Edges"]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,19}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,19}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,19}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,19}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,19}},"Planar"]

GraphData[{"Quintic",{10,19}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,19}},{"RCN","CN"}]

GraphData[{"Quintic",{10,19}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,19}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,19}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,19}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,19}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,19}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,19}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,19}},"Circulant"]

GraphData[{"Quintic",{10,19}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,19}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,19}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,19}}&]

RootGraph[GraphData[{"Quintic",{10,19}}]]

Halin

GraphData[{"Quintic",{10,19}},"Halin"]

GraphData[{"Quintic",{10,19}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,19}},"Rigid"]

GraphData[{"Quintic",{10,19}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,19}},"Flexible"]

GraphData[{"Quintic",{10,19}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,19}},"LCF"]

GraphData[{"Quintic",{10,19}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,19}},"LCFSignature"]

GraphData[{"Quintic",{10,19}},"LCFNotations"]

GraphData[{"Quintic",{10,19}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,19}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,19}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,19}}],Debug->True]//Timing

GraphData[{"Quintic",{10,19}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,19}},"Matchstick"]

GraphData[{"Quintic",{10,19}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,19}},"Edges"]]

3D All

GraphData[{"Quintic",{10,19}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,19}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,19}},"Polyhedral"]

GraphData[{"Quintic",{10,19}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 20}}

Names

GraphData[{"Quintic",{10,20}},"StandardName"]

GraphData[{"Quintic",{10,20}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,20}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,20}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,20}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,20}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,20}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,20}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,20}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,20}},"Planar"]

GraphData[{"Quintic",{10,20}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,20}},{"RCN","CN"}]

GraphData[{"Quintic",{10,20}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,20}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,20}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,20}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,20}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,20}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,20}},"Circulant"]

GraphData[{"Quintic",{10,20}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,20}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,20}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,20}}&]

RootGraph[GraphData[{"Quintic",{10,20}}]]

Halin

GraphData[{"Quintic",{10,20}},"Halin"]

GraphData[{"Quintic",{10,20}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,20}},"Rigid"]

GraphData[{"Quintic",{10,20}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,20}},"Flexible"]

GraphData[{"Quintic",{10,20}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,20}},"LCF"]

GraphData[{"Quintic",{10,20}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,20}},"LCFSignature"]

GraphData[{"Quintic",{10,20}},"LCFNotations"]

GraphData[{"Quintic",{10,20}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,20}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,20}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,20}}],Debug->True]//Timing

GraphData[{"Quintic",{10,20}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,20}},"Matchstick"]

GraphData[{"Quintic",{10,20}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,20}},"Edges"]]

3D All

GraphData[{"Quintic",{10,20}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,20}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,20}},"Polyhedral"]

GraphData[{"Quintic",{10,20}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 21}}

Names

GraphData[{"Quintic",{10,21}},"StandardName"]

GraphData[{"Quintic",{10,21}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,21}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,21}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Quintic",{10,21}},"Edges"],GraphLayout->"HighDimensionalEmbedding"],-Pi/2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,21}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,21}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,21}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,21}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,21}},"Planar"]

GraphData[{"Quintic",{10,21}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,21}},{"RCN","CN"}]

GraphData[{"Quintic",{10,21}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,21}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,21}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,21}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,21}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,21}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[HighlightGraph[GraphicsToGraph@,Range[11,14]],-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,21}},"Circulant"]

GraphData[{"Quintic",{10,21}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,21}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,21}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,21}}&]

RootGraph[GraphData[{"Quintic",{10,21}}]]

Halin

GraphData[{"Quintic",{10,21}},"Halin"]

GraphData[{"Quintic",{10,21}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,21}},"Rigid"]

GraphData[{"Quintic",{10,21}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,21}},"Flexible"]

GraphData[{"Quintic",{10,21}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,21}},"LCF"]

GraphData[{"Quintic",{10,21}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,21}},"LCFSignature"]

GraphData[{"Quintic",{10,21}},"LCFNotations"]

GraphData[{"Quintic",{10,21}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,21}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,21}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,21}}],Debug->True]//Timing

GraphData[{"Quintic",{10,21}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,21}},"Matchstick"]

GraphData[{"Quintic",{10,21}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,21}},"Edges"]]

3D All

GraphData[{"Quintic",{10,21}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,21}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,21}},"Polyhedral"]

GraphData[{"Quintic",{10,21}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 22}}

Names

GraphData[{"Quintic",{10,22}},"StandardName"]

GraphData[{"Quintic",{10,22}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,22}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,22}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,22}},"Edges"]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,22}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,22}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,22}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,22}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,22}},"Planar"]

GraphData[{"Quintic",{10,22}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,22}},{"RCN","CN"}]

GraphData[{"Quintic",{10,22}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,22}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,22}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,22}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,22}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,22}}],"CrossingNumber"->5],Pi/2]

GraphPlot@RotateGraphe[,-2Pi/3]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,22}}],"CrossingNumber"->5],Pi/2]

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,22}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,22}}],"CrossingNumber"->5],Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,22}},"Circulant"]

GraphData[{"Quintic",{10,22}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,22}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,22}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,22}}&]

RootGraph[GraphData[{"Quintic",{10,22}}]]

Halin

GraphData[{"Quintic",{10,22}},"Halin"]

GraphData[{"Quintic",{10,22}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,22}},"Rigid"]

GraphData[{"Quintic",{10,22}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,22}},"Flexible"]

GraphData[{"Quintic",{10,22}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,22}},"LCF"]

GraphData[{"Quintic",{10,22}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,22}},"LCFSignature"]

GraphData[{"Quintic",{10,22}},"LCFNotations"]

GraphData[{"Quintic",{10,22}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,22}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,22}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,22}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,22}}],Debug->True]//Timing

GraphData[{"Quintic",{10,22}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,22}},"Matchstick"]

GraphData[{"Quintic",{10,22}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,22}},"Edges"]]

3D All

GraphData[{"Quintic",{10,22}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,22}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,22}},"Polyhedral"]

GraphData[{"Quintic",{10,22}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 23}}

Names

GraphData[{"Quintic",{10,23}},"StandardName"]

GraphData[{"Quintic",{10,23}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,23}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,23}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Quintic",{10,23}},"Edges"],-Pi/2]

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

RecognizeGraph@g

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

RecognizeGraph[g]

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

RecognizeGraph[g]

gs=UndirectedGraph/@{,,,,,,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,23}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,23}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,23}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,23}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,23}},"Planar"]

GraphData[{"Quintic",{10,23}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,23}},{"RCN","CN"}]

GraphData[{"Quintic",{10,23}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,23}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,23}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,23}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,23}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,23}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,23}}],"CrossingNumber"->5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,23}},"Circulant"]

GraphData[{"Quintic",{10,23}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,23}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,23}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,23}}&]

RootGraph[GraphData[{"Quintic",{10,23}}]]

Halin

GraphData[{"Quintic",{10,23}},"Halin"]

GraphData[{"Quintic",{10,23}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,23}},"Rigid"]

GraphData[{"Quintic",{10,23}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,23}},"Flexible"]

GraphData[{"Quintic",{10,23}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,23}},"LCF"]

GraphData[{"Quintic",{10,23}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,23}},"LCFSignature"]

GraphData[{"Quintic",{10,23}},"LCFNotations"]

GraphData[{"Quintic",{10,23}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,23}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,23}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,23}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,23}}],Debug->True]//Timing

GraphData[{"Quintic",{10,23}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,23}},"Matchstick"]

GraphData[{"Quintic",{10,23}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,23}},"Edges"]]

3D All

GraphData[{"Quintic",{10,23}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,23}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,23}},"Polyhedral"]

GraphData[{"Quintic",{10,23}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 24}}

Names

GraphData[{"Quintic",{10,24}},"StandardName"]

GraphData[{"Quintic",{10,24}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,24}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,24}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,24}},"Edges"]

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

RecognizeGraph[g]

g=GraphPlot@GraphData[{"Quintic",{10,24}},"Edges"]

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

RecognizeGraph[g]

RotateGraph[,Pi/2]

v=Join[UnitCirclePoints[6],CirclePoints[r,3],{{0,0}}];

Solve[v[[7,1]]==1/2,r]

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

RecognizeGraph@g

gs=UnlabelGraph/@{,,,,,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,24}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,24}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,24}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,24}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,24}},"Planar"]

GraphData[{"Quintic",{10,24}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,24}},{"RCN","CN"}]

GraphData[{"Quintic",{10,24}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,24}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,24}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,24}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,24}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,24}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@

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

RecognizeGraph@g

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,24}},"Circulant"]

GraphData[{"Quintic",{10,24}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,24}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,24}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,24}}&]

RootGraph[GraphData[{"Quintic",{10,24}}]]

Halin

GraphData[{"Quintic",{10,24}},"Halin"]

GraphData[{"Quintic",{10,24}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,24}},"Rigid"]

GraphData[{"Quintic",{10,24}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,24}},"Flexible"]

GraphData[{"Quintic",{10,24}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,24}},"LCF"]

GraphData[{"Quintic",{10,24}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,24}},"LCFSignature"]

GraphData[{"Quintic",{10,24}},"LCFNotations"]

GraphData[{"Quintic",{10,24}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,24}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,24}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,24}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,24}}],Debug->True]//Timing

GraphData[{"Quintic",{10,24}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,24}},"Matchstick"]

GraphData[{"Quintic",{10,24}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,24}},"Edges"]]

3D All

GraphData[{"Quintic",{10,24}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,24}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,24}},"Polyhedral"]

GraphData[{"Quintic",{10,24}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 25}}

Names

GraphData[{"Quintic",{10,25}},"StandardName"]

GraphData[{"Quintic",{10,25}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,25}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,25}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,25}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,25}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,25}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,25}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,25}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,25}},"Planar"]

GraphData[{"Quintic",{10,25}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,25}},{"RCN","CN"}]

GraphData[{"Quintic",{10,25}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,25}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,25}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,25}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,25}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,25}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,25}}],"CrossingNumber"->5],-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,25}},"Circulant"]

GraphData[{"Quintic",{10,25}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,25}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,25}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,25}}&]

RootGraph[GraphData[{"Quintic",{10,25}}]]

Halin

GraphData[{"Quintic",{10,25}},"Halin"]

GraphData[{"Quintic",{10,25}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,25}},"Rigid"]

GraphData[{"Quintic",{10,25}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,25}},"Flexible"]

GraphData[{"Quintic",{10,25}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,25}},"LCF"]

GraphData[{"Quintic",{10,25}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,25}},"LCFSignature"]

GraphData[{"Quintic",{10,25}},"LCFNotations"]

GraphData[{"Quintic",{10,25}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,25}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,25}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,25}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,25}}],Debug->True]//Timing

GraphData[{"Quintic",{10,25}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,25}},"Matchstick"]

GraphData[{"Quintic",{10,25}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,25}},"Edges"]]

3D All

GraphData[{"Quintic",{10,25}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,25}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,25}},"Polyhedral"]

GraphData[{"Quintic",{10,25}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 26}}

Names

GraphData[{"Quintic",{10,26}},"StandardName"]

GraphData[{"Quintic",{10,26}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,26}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,26}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,26}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,26}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,26}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,26}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,26}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,26}},"Planar"]

GraphData[{"Quintic",{10,26}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,26}},{"RCN","CN"}]

GraphData[{"Quintic",{10,26}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,26}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,26}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,26}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,26}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,26}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,26}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,26}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,26}}]],Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,26}},"Circulant"]

GraphData[{"Quintic",{10,26}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,26}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,26}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,26}}&]

RootGraph[GraphData[{"Quintic",{10,26}}]]

Halin

GraphData[{"Quintic",{10,26}},"Halin"]

GraphData[{"Quintic",{10,26}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,26}},"Rigid"]

GraphData[{"Quintic",{10,26}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,26}},"Flexible"]

GraphData[{"Quintic",{10,26}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,26}},"LCF"]

GraphData[{"Quintic",{10,26}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,26}},"LCFSignature"]

GraphData[{"Quintic",{10,26}},"LCFNotations"]

GraphData[{"Quintic",{10,26}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,26}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,26}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,26}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,26}}],Debug->True]//Timing

GraphData[{"Quintic",{10,26}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,26}},"Matchstick"]

GraphData[{"Quintic",{10,26}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,26}},"Edges"]]

3D All

GraphData[{"Quintic",{10,26}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,26}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,26}},"Polyhedral"]

GraphData[{"Quintic",{10,26}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 27}}

Names

GraphData[{"Quintic",{10,27}},"StandardName"]

GraphData[{"Quintic",{10,27}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,27}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,27}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,27}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

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

RecognizeGraph@g

GraphPlot@GraphData[{"Quintic",{10,27}},"Edges"]

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

RecognizeGraph[g]

GraphPlot@GraphData[{"Quintic",{10,27}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,27}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,27}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,27}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,27}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,27}},"Planar"]

GraphData[{"Quintic",{10,27}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,27}},{"RCN","CN"}]

GraphData[{"Quintic",{10,27}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,27}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,27}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,27}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,27}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,27}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,27}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,27}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,27}}],"CrossingNumber"->5],Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,27}},"Circulant"]

GraphData[{"Quintic",{10,27}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,27}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,27}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,27}}&]

RootGraph[GraphData[{"Quintic",{10,27}}]]

Halin

GraphData[{"Quintic",{10,27}},"Halin"]

GraphData[{"Quintic",{10,27}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,27}},"Rigid"]

GraphData[{"Quintic",{10,27}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,27}},"Flexible"]

GraphData[{"Quintic",{10,27}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,27}},"LCF"]

GraphData[{"Quintic",{10,27}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,27}},"LCFSignature"]

GraphData[{"Quintic",{10,27}},"LCFNotations"]

GraphData[{"Quintic",{10,27}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,27}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,27}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,27}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,27}}],Debug->True]//Timing

GraphData[{"Quintic",{10,27}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,27}},"Matchstick"]

GraphData[{"Quintic",{10,27}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,27}},"Edges"]]

3D All

GraphData[{"Quintic",{10,27}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,27}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,27}},"Polyhedral"]

GraphData[{"Quintic",{10,27}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 28}}

Names

GraphData[{"Quintic",{10,28}},"StandardName"]

GraphData[{"Quintic",{10,28}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,28}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,28}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Quintic",{10,28}},"Edges"],GraphLayout->"HighDimensionalEmbedding"],Pi/2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,}

Degenerate

GraphData[{"Quintic",{10,28}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,28}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,28}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,28}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,28}},"Planar"]

GraphData[{"Quintic",{10,28}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,28}},{"RCN","CN"}]

GraphData[{"Quintic",{10,28}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,28}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,28}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,28}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,28}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,28}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,28}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,28}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,28}},"Circulant"]

GraphData[{"Quintic",{10,28}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,28}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,28}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,28}}&]

RootGraph[GraphData[{"Quintic",{10,28}}]]

Halin

GraphData[{"Quintic",{10,28}},"Halin"]

GraphData[{"Quintic",{10,28}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,28}},"Rigid"]

GraphData[{"Quintic",{10,28}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,28}},"Flexible"]

GraphData[{"Quintic",{10,28}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,28}},"LCF"]

GraphData[{"Quintic",{10,28}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,28}},"LCFSignature"]

GraphData[{"Quintic",{10,28}},"LCFNotations"]

GraphData[{"Quintic",{10,28}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,28}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,28}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,28}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,28}}],Debug->True]//Timing

GraphData[{"Quintic",{10,28}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,28}},"Matchstick"]

GraphData[{"Quintic",{10,28}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,28}},"Edges"]]

3D All

GraphData[{"Quintic",{10,28}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,28}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,28}},"Polyhedral"]

GraphData[{"Quintic",{10,28}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 29}}

Names

GraphData[{"Quintic",{10,29}},"StandardName"]

GraphData[{"Quintic",{10,29}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,29}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,29}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,29}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,29}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,29}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,29}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,29}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,29}},"Planar"]

GraphData[{"Quintic",{10,29}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,29}},{"RCN","CN"}]

GraphData[{"Quintic",{10,29}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,29}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,29}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,29}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,29}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

GraphPlot@

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

RecognizeGraph@g

GraphPlot@

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

RecognizeGraph@g

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,29}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,29}}],"CrossingNumber"->4]

gs={,,,,,,,,,,,,,,,,,,,,,,,,,,,}

g=GraphPlot@GraphData[{"Quintic",{10,29}},"Edges"]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,29}},"Circulant"]

GraphData[{"Quintic",{10,29}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,29}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,29}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,29}}&]

RootGraph[GraphData[{"Quintic",{10,29}}]]

Halin

GraphData[{"Quintic",{10,29}},"Halin"]

GraphData[{"Quintic",{10,29}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,29}},"Rigid"]

GraphData[{"Quintic",{10,29}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,29}},"Flexible"]

GraphData[{"Quintic",{10,29}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,29}},"LCF"]

GraphData[{"Quintic",{10,29}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,29}},"LCFSignature"]

GraphData[{"Quintic",{10,29}},"LCFNotations"]

GraphData[{"Quintic",{10,29}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,29}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,29}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,29}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,29}}],Debug->True]//Timing

GraphData[{"Quintic",{10,29}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{3,9}]

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

RecognizeGraph@g

GraphPlot@RotateGraph[,{7,10}]

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

GraphPlot@

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

RecognizeGraph@g

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

RecognizeGraph@g

gs=UnlabelGraph/@{,,}

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,29}},"Matchstick"]

GraphData[{"Quintic",{10,29}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,29}},"Edges"]]

3D construction

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

RecognizeGraph@g

3D All

GraphData[{"Quintic",{10,29}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,29}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,29}},"Polyhedral"]

GraphData[{"Quintic",{10,29}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 30}}

Names

GraphData[{"Quintic",{10,30}},"StandardName"]

GraphData[{"Quintic",{10,30}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,30}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,30}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Quintic",{10,30}},"Edges"],GraphLayout->"HighDimensionalEmbedding"],Pi/2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,30}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,30}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,30}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,30}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,30}},"Planar"]

GraphData[{"Quintic",{10,30}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,30}},{"RCN","CN"}]

GraphData[{"Quintic",{10,30}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,30}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,30}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,30}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,30}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,30}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,30}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,30}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,30}},"Circulant"]

GraphData[{"Quintic",{10,30}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,30}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,30}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,30}}&]

RootGraph[GraphData[{"Quintic",{10,30}}]]

Halin

GraphData[{"Quintic",{10,30}},"Halin"]

GraphData[{"Quintic",{10,30}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,30}},"Rigid"]

GraphData[{"Quintic",{10,30}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,30}},"Flexible"]

GraphData[{"Quintic",{10,30}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,30}},"LCF"]

GraphData[{"Quintic",{10,30}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,30}},"LCFSignature"]

GraphData[{"Quintic",{10,30}},"LCFNotations"]

GraphData[{"Quintic",{10,30}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,30}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,30}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,30}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,30}}],Debug->True]//Timing

GraphData[{"Quintic",{10,30}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,30}},"Matchstick"]

GraphData[{"Quintic",{10,30}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,30}},"Edges"]]

3D All

GraphData[{"Quintic",{10,30}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,30}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,30}},"Polyhedral"]

GraphData[{"Quintic",{10,30}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 31}}

Names

GraphData[{"Quintic",{10,31}},"StandardName"]

GraphData[{"Quintic",{10,31}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,31}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,31}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,31}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,31}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,31}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,31}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,31}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,31}},"Planar"]

GraphData[{"Quintic",{10,31}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,31}},{"RCN","CN"}]

GraphData[{"Quintic",{10,31}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,31}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,31}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,31}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,31}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,31}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,31}}],"CrossingNumber"->4]

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,31}},"Circulant"]

GraphData[{"Quintic",{10,31}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,31}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,31}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,31}}&]

RootGraph[GraphData[{"Quintic",{10,31}}]]

Halin

GraphData[{"Quintic",{10,31}},"Halin"]

GraphData[{"Quintic",{10,31}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,31}},"Rigid"]

GraphData[{"Quintic",{10,31}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,31}},"Flexible"]

GraphData[{"Quintic",{10,31}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,31}},"LCF"]

GraphData[{"Quintic",{10,31}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,31}},"LCFSignature"]

GraphData[{"Quintic",{10,31}},"LCFNotations"]

GraphData[{"Quintic",{10,31}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,31}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,31}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,31}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,31}}],Debug->True]//Timing

GraphData[{"Quintic",{10,31}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,31}},"Matchstick"]

GraphData[{"Quintic",{10,31}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,31}},"Edges"]]

3D All

GraphData[{"Quintic",{10,31}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,31}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,31}},"Polyhedral"]

GraphData[{"Quintic",{10,31}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 32}}

Names

GraphData[{"Quintic",{10,32}},"StandardName"]

GraphData[{"Quintic",{10,32}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,32}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,32}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,32}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

GraphPlot[GraphData[{"Quintic",{10,32}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

g=GraphPlot@GraphData[{"Quintic",{10,32}},"Edges"]

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

RecognizeGraph[g]

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

RecognizeGraph@g

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

RecognizeGraph@g

gs=UnlabelGraph/@{,,,,,,,,,,,,,,,,}

Degenerate

GraphData[{"Quintic",{10,32}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,32}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,32}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,32}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,32}},"Planar"]

GraphData[{"Quintic",{10,32}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,32}},{"RCN","CN"}]

GraphData[{"Quintic",{10,32}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,32}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,32}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,32}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,32}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,32}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,-Pi/4]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,32}}],"CrossingNumber"->5,RandomSeed->1111],-Pi/4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,32}},"Circulant"]

GraphData[{"Quintic",{10,32}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,32}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,32}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,32}}&]

RootGraph[GraphData[{"Quintic",{10,32}}]]

Halin

GraphData[{"Quintic",{10,32}},"Halin"]

GraphData[{"Quintic",{10,32}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,32}},"Rigid"]

GraphData[{"Quintic",{10,32}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,32}},"Flexible"]

GraphData[{"Quintic",{10,32}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,32}},"LCF"]

GraphData[{"Quintic",{10,32}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,32}},"LCFSignature"]

GraphData[{"Quintic",{10,32}},"LCFNotations"]

GraphData[{"Quintic",{10,32}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,32}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,32}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,XXX}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,32}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,32}}],Debug->True]//Timing

GraphData[{"Quintic",{10,32}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

GraphPlot@

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

RecognizeGraph@g

GraphPlot@RotateGraph[,{6,1}]

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

RecognizeGraph@g

GraphPlot@RotateGraph[,{2,9}]

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

RecognizeGraph@g

gs=UnlabelGraph/@{,,}

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,32}},"Matchstick"]

GraphData[{"Quintic",{10,32}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,32}},"Edges"]]

3D All

GraphData[{"Quintic",{10,32}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,32}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,32}},"Polyhedral"]

GraphData[{"Quintic",{10,32}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 33}}

Names

GraphData[{"Quintic",{10,33}},"StandardName"]

GraphData[{"Quintic",{10,33}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,33}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,33}},"EdgeList"]]

Default embedding

RotateGraph[Graph@GraphData[{"Quintic",{10,33}},"Edges"],-Pi/2]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,33}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,33}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,33}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,33}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,33}},"Planar"]

GraphData[{"Quintic",{10,33}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,33}},{"RCN","CN"}]

GraphData[{"Quintic",{10,33}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,33}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,33}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,33}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,33}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,33}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,33}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,33}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,33}}],"CrossingNumber"->5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,33}},"Circulant"]

GraphData[{"Quintic",{10,33}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,33}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,33}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,33}}&]

RootGraph[GraphData[{"Quintic",{10,33}}]]

Halin

GraphData[{"Quintic",{10,33}},"Halin"]

GraphData[{"Quintic",{10,33}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,33}},"Rigid"]

GraphData[{"Quintic",{10,33}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,33}},"Flexible"]

GraphData[{"Quintic",{10,33}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,33}},"LCF"]

GraphData[{"Quintic",{10,33}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,33}},"LCFSignature"]

GraphData[{"Quintic",{10,33}},"LCFNotations"]

GraphData[{"Quintic",{10,33}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,33}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,33}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,33}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,33}}],Debug->True]//Timing

GraphData[{"Quintic",{10,33}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,33}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,33}},"Matchstick"]

GraphData[{"Quintic",{10,33}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,33}},"Edges"]]

3D All

GraphData[{"Quintic",{10,33}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,33}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,33}},"Polyhedral"]

GraphData[{"Quintic",{10,33}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 34}}

Names

GraphData[{"Quintic",{10,34}},"StandardName"]

GraphData[{"Quintic",{10,34}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,34}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,34}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,34}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,34}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,34}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,34}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,34}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,34}},"Planar"]

GraphData[{"Quintic",{10,34}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,34}},{"RCN","CN"}]

GraphData[{"Quintic",{10,34}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,34}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,34}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,34}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,34}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,34}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,34}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,34}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

GraphPlot@RotateGraph[,Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

DegenerateGraphEmbeddingTypes[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs=UnlabelGraph/@{,}

Circulant

GraphData[{"Quintic",{10,34}},"Circulant"]

GraphData[{"Quintic",{10,34}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,34}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,34}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,34}}&]

RootGraph[GraphData[{"Quintic",{10,34}}]]

Halin

GraphData[{"Quintic",{10,34}},"Halin"]

GraphData[{"Quintic",{10,34}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,34}},"Rigid"]

GraphData[{"Quintic",{10,34}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,34}},"Flexible"]

GraphData[{"Quintic",{10,34}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,34}},"LCF"]

GraphData[{"Quintic",{10,34}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,34}},"LCFSignature"]

GraphData[{"Quintic",{10,34}},"LCFNotations"]

GraphData[{"Quintic",{10,34}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,34}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,34}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,34}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,34}}],Debug->True]//Timing

GraphData[{"Quintic",{10,34}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{2,1}]

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

RecognizeGraph@g

GraphPlot@RotateGraph[,{10,2}]

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

RecognizeGraph@g

gs=UnlabelGraph/@{,}

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,34}},"Matchstick"]

GraphData[{"Quintic",{10,34}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,34}},"Edges"]]

3D All

GraphData[{"Quintic",{10,34}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,34}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,34}},"Polyhedral"]

GraphData[{"Quintic",{10,34}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 35}}

Names

GraphData[{"Quintic",{10,35}},"StandardName"]

GraphData[{"Quintic",{10,35}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,35}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,35}},"EdgeList"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,35}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,35}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,35}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,35}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,35}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,35}},"Planar"]

GraphData[{"Quintic",{10,35}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,35}},{"RCN","CN"}]

GraphData[{"Quintic",{10,35}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,35}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,35}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,35}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"Quintic",{10,35}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,35}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"Quintic",{10,35}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,35}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@

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

RecognizeGraph@g

RectilinearCrossingCount@g

Circulant

GraphData[{"Quintic",{10,35}},"Circulant"]

GraphData[{"Quintic",{10,35}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,35}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,35}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,35}}&]

RootGraph[GraphData[{"Quintic",{10,35}}]]

Halin

GraphData[{"Quintic",{10,35}},"Halin"]

GraphData[{"Quintic",{10,35}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,35}},"Rigid"]

GraphData[{"Quintic",{10,35}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,35}},"Flexible"]

GraphData[{"Quintic",{10,35}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,35}},"LCF"]

GraphData[{"Quintic",{10,35}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,35}},"LCFSignature"]

GraphData[{"Quintic",{10,35}},"LCFNotations"]

GraphData[{"Quintic",{10,35}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,35}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,35}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,35}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,35}}],Debug->True]//Timing

GraphData[{"Quintic",{10,35}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

RotateGraph[,{2,1}]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,35}},"Matchstick"]

GraphData[{"Quintic",{10,35}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,35}},"Edges"]]

3D All

GraphData[{"Quintic",{10,35}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,35}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,35}},"Polyhedral"]

GraphData[{"Quintic",{10,35}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 36}}

GraphData[{"Quintic",{10,36}},"StandardName"]

All

GraphData[{"Quintic",{10,36}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,36}},"LCFSignature"]

GraphData[{"Quintic",{10,36}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,36}}],Debug->True]

GraphData[{"Quintic",{10,36}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,36}},{"RCN","CN"}]

GraphData[{"Quintic",{10,36}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,36}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,36}}],"CrossingNumber"->4,RandomSeed->1111]

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 37}}

GraphData[{"Quintic",{10,37}},"StandardName"]

All

GraphData[{"Quintic",{10,37}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,37}},"LCFSignature"]

GraphData[{"Quintic",{10,37}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,37}}],Debug->True]

GraphData[{"Quintic",{10,37}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,37}},{"RCN","CN"}]

GraphData[{"Quintic",{10,37}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,37}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,37}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,37}}],"CrossingNumber"->5,RandomSeed->2111],-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 38}}

Names

GraphData[{"Quintic",{10,38}},"StandardName"]

GraphData[{"Quintic",{10,38}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,38}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,38}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,38}},"Edges"]

Mean[{RegionIntersection[Line[v[[{2,10}]]],Line[v[[{3,9}]]]][[1,1]],v[[2]],v[[3]]}]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"Quintic",{10,38}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Quintic",{10,38}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,38}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,38}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,38}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,38}},"Planar"]

GraphData[{"Quintic",{10,38}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,38}},{"RCN","CN"}]

GraphData[{"Quintic",{10,38}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,38}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,38}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,38}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,38}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs=UnlabelGraph/@{,}

Circulant

GraphData[{"Quintic",{10,38}},"Circulant"]

GraphData[{"Quintic",{10,38}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,38}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,38}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,38}}&]

RootGraph[GraphData[{"Quintic",{10,38}}]]

Halin

GraphData[{"Quintic",{10,38}},"Halin"]

GraphData[{"Quintic",{10,38}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,38}},"Rigid"]

GraphData[{"Quintic",{10,38}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,38}},"Flexible"]

GraphData[{"Quintic",{10,38}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,38}},"LCF"]

GraphData[{"Quintic",{10,38}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,38}},"LCFSignature"]

GraphData[{"Quintic",{10,38}},"LCFNotations"]

GraphData[{"Quintic",{10,38}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,38}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,38}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

UnitDistance

GraphData[{"Quintic",{10,38}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,38}}],Debug->True]//Timing

GraphData[{"Quintic",{10,38}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,38}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,38}},"Matchstick"]

GraphData[{"Quintic",{10,38}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,38}},"Edges"]]

3D All

GraphData[{"Quintic",{10,38}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,38}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,38}},"Polyhedral"]

GraphData[{"Quintic",{10,38}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 39}}

GraphData[{"Quintic",{10,39}},"StandardName"]

All

GraphData[{"Quintic",{10,39}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,39}},"LCFSignature"]

GraphData[{"Quintic",{10,39}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,39}}],Debug->True]

GraphData[{"Quintic",{10,39}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,39}},{"RCN","CN"}]

GraphData[{"Quintic",{10,39}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,39}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,39}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,39}}],"CrossingNumber"->5],-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 42}}

Names

GraphData[{"Quintic",{10,42}},"StandardName"]

GraphData[{"Quintic",{10,42}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,42}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,42}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,42}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,42}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,42}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,42}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,42}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,42}},"Planar"]

GraphData[{"Quintic",{10,42}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,42}},{"RCN","CN"}]

GraphData[{"Quintic",{10,42}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,42}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,42}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,42}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,42}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,42}},"Circulant"]

GraphData[{"Quintic",{10,42}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,42}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,42}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,42}}&]

RootGraph[GraphData[{"Quintic",{10,42}}]]

Halin

GraphData[{"Quintic",{10,42}},"Halin"]

GraphData[{"Quintic",{10,42}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,42}},"Rigid"]

GraphData[{"Quintic",{10,42}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,42}},"Flexible"]

GraphData[{"Quintic",{10,42}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,42}},"LCF"]

GraphData[{"Quintic",{10,42}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,42}},"LCFSignature"]

GraphData[{"Quintic",{10,42}},"LCFNotations"]

GraphData[{"Quintic",{10,42}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,42}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,42}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,42}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,42}}],Debug->True]//Timing

GraphData[{"Quintic",{10,42}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,42}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,42}},"Matchstick"]

GraphData[{"Quintic",{10,42}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,42}},"Edges"]]

3D All

GraphData[{"Quintic",{10,42}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,42}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,42}},"Polyhedral"]

GraphData[{"Quintic",{10,42}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 43}}

Names

GraphData[{"Quintic",{10,43}},"StandardName"]

GraphData[{"Quintic",{10,43}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,43}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,43}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,43}},"Edges"]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"Quintic",{10,43}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,43}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,43}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,43}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,43}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,43}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,43}},"Planar"]

GraphData[{"Quintic",{10,43}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,43}},{"RCN","CN"}]

GraphData[{"Quintic",{10,43}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,43}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,43}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,43}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,43}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@HighlightGraph[RotateGraph[GraphicsToGraph@,Pi/2],Range[10+1,10+5]]

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

RecognizeGraph@g

RectilinearCrossingCount@g

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,43}},"Circulant"]

GraphData[{"Quintic",{10,43}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,43}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,43}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,43}}&]

RootGraph[GraphData[{"Quintic",{10,43}}]]

Halin

GraphData[{"Quintic",{10,43}},"Halin"]

GraphData[{"Quintic",{10,43}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,43}},"Rigid"]

GraphData[{"Quintic",{10,43}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,43}},"Flexible"]

GraphData[{"Quintic",{10,43}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,43}},"LCF"]

GraphData[{"Quintic",{10,43}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,43}},"LCFSignature"]

GraphData[{"Quintic",{10,43}},"LCFNotations"]

GraphData[{"Quintic",{10,43}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,43}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,43}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,43}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,43}}],Debug->True]//Timing

GraphData[{"Quintic",{10,43}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceGraphEmbeddingQ[%]

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,43}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,43}},"Matchstick"]

GraphData[{"Quintic",{10,43}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,43}},"Edges"]]

3D All

GraphData[{"Quintic",{10,43}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,43}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,43}},"Polyhedral"]

GraphData[{"Quintic",{10,43}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 44}}

Names

GraphData[{"Quintic",{10,44}},"StandardName"]

GraphData[{"Quintic",{10,44}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,44}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,44}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,44}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,44}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,44}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,44}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,44}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,44}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,44}},"Planar"]

GraphData[{"Quintic",{10,44}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,44}},{"RCN","CN"}]

GraphData[{"Quintic",{10,44}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,44}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,44}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,44}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,44}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,44}}],"CrossingNumber"->4],Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,44}},"Circulant"]

GraphData[{"Quintic",{10,44}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,44}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,44}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,44}}&]

RootGraph[GraphData[{"Quintic",{10,44}}]]

Halin

GraphData[{"Quintic",{10,44}},"Halin"]

GraphData[{"Quintic",{10,44}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,44}},"Rigid"]

GraphData[{"Quintic",{10,44}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,44}},"Flexible"]

GraphData[{"Quintic",{10,44}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,44}},"LCF"]

GraphData[{"Quintic",{10,44}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,44}},"LCFSignature"]

GraphData[{"Quintic",{10,44}},"LCFNotations"]

GraphData[{"Quintic",{10,44}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,44}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,44}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,44}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,44}}],Debug->True]//Timing

GraphData[{"Quintic",{10,44}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,44}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,44}},"Matchstick"]

GraphData[{"Quintic",{10,44}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,44}},"Edges"]]

3D All

GraphData[{"Quintic",{10,44}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,44}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,44}},"Polyhedral"]

GraphData[{"Quintic",{10,44}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 45}}

Names

GraphData[{"Quintic",{10,45}},"StandardName"]

GraphData[{"Quintic",{10,45}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,45}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,45}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,45}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,45}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,45}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,45}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,45}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,45}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,45}},"Planar"]

GraphData[{"Quintic",{10,45}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,45}},{"RCN","CN"}]

GraphData[{"Quintic",{10,45}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,45}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,45}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,45}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,45}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,2Pi/3]

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,45}},"Circulant"]

GraphData[{"Quintic",{10,45}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,45}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,45}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,45}}&]

RootGraph[GraphData[{"Quintic",{10,45}}]]

Halin

GraphData[{"Quintic",{10,45}},"Halin"]

GraphData[{"Quintic",{10,45}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,45}},"Rigid"]

GraphData[{"Quintic",{10,45}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,45}},"Flexible"]

GraphData[{"Quintic",{10,45}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,45}},"LCF"]

GraphData[{"Quintic",{10,45}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,45}},"LCFSignature"]

GraphData[{"Quintic",{10,45}},"LCFNotations"]

GraphData[{"Quintic",{10,45}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,45}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,45}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,45}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,45}}],Debug->True]//Timing

GraphData[{"Quintic",{10,45}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

GraphPlot@

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,45}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,45}},"Matchstick"]

GraphData[{"Quintic",{10,45}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,45}},"Edges"]]

3D All

GraphData[{"Quintic",{10,45}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,45}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,45}},"Polyhedral"]

GraphData[{"Quintic",{10,45}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 49}}

GraphData[{"Quintic",{10,49}},"StandardName"]

All

GraphData[{"Quintic",{10,49}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,49}},"LCFSignature"]

GraphData[{"Quintic",{10,49}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,49}}],Debug->True]

GraphData[{"Quintic",{10,49}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,49}},{"RCN","CN"}]

GraphData[{"Quintic",{10,49}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,49}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,49}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,49}}],"CrossingNumber"->5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 50}}

Names

GraphData[{"Quintic",{10,50}},"StandardName"]

GraphData[{"Quintic",{10,50}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,50}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,50}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Quintic",{10,50}},"Edges"],Pi/2]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"Quintic",{10,50}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

Degenerate

GraphData[{"Quintic",{10,50}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,50}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,50}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,50}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,50}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,50}},"Planar"]

GraphData[{"Quintic",{10,50}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,50}},{"RCN","CN"}]

GraphData[{"Quintic",{10,50}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,50}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,50}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,50}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,50}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@

GraphPlot@RotateGraph[,-Pi/2]

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

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

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,50}},"Circulant"]

GraphData[{"Quintic",{10,50}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,50}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,50}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,50}}&]

RootGraph[GraphData[{"Quintic",{10,50}}]]

Halin

GraphData[{"Quintic",{10,50}},"Halin"]

GraphData[{"Quintic",{10,50}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,50}},"Rigid"]

GraphData[{"Quintic",{10,50}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,50}},"Flexible"]

GraphData[{"Quintic",{10,50}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,50}},"LCF"]

GraphData[{"Quintic",{10,50}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,50}},"LCFSignature"]

GraphData[{"Quintic",{10,50}},"LCFNotations"]

GraphData[{"Quintic",{10,50}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,50}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,50}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,50}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,50}}],Debug->True]//Timing

GraphData[{"Quintic",{10,50}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

gs={RotateGraph[,{1,10}],RotateGraph[,{9,2}]}

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,50}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,50}},"Matchstick"]

GraphData[{"Quintic",{10,50}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,50}},"Edges"]]

3D All

GraphData[{"Quintic",{10,50}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,50}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,50}},"Polyhedral"]

GraphData[{"Quintic",{10,50}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 52}}

Names

GraphData[{"Quintic",{10,52}},"StandardName"]

GraphData[{"Quintic",{10,52}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,52}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,52}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,52}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,52}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,52}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,52}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,52}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,52}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,52}},"Planar"]

GraphData[{"Quintic",{10,52}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,52}},{"RCN","CN"}]

GraphData[{"Quintic",{10,52}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,52}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,52}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,52}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,52}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,52}},"Circulant"]

GraphData[{"Quintic",{10,52}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,52}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,52}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,52}}&]

RootGraph[GraphData[{"Quintic",{10,52}}]]

Halin

GraphData[{"Quintic",{10,52}},"Halin"]

GraphData[{"Quintic",{10,52}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,52}},"Rigid"]

GraphData[{"Quintic",{10,52}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,52}},"Flexible"]

GraphData[{"Quintic",{10,52}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,52}},"LCF"]

GraphData[{"Quintic",{10,52}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,52}},"LCFSignature"]

GraphData[{"Quintic",{10,52}},"LCFNotations"]

GraphData[{"Quintic",{10,52}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,52}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,52}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,52}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,52}}],Debug->True]//Timing

GraphData[{"Quintic",{10,52}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,52}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

GraphPlot@RotateGraph[,{3,10}]

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

VertexDegree[g]

RecognizeGraph@g

Matchstick

GraphData[{"Quintic",{10,52}},"Matchstick"]

GraphData[{"Quintic",{10,52}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,52}},"Edges"]]

3D All

GraphData[{"Quintic",{10,52}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,52}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,52}},"Polyhedral"]

GraphData[{"Quintic",{10,52}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 53}}

Names

GraphData[{"Quintic",{10,53}},"StandardName"]

GraphData[{"Quintic",{10,53}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,53}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,53}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,53}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,53}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,53}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,53}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,53}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,53}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,53}},"Planar"]

GraphData[{"Quintic",{10,53}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,53}},{"RCN","CN"}]

GraphData[{"Quintic",{10,53}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,53}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,53}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,53}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,53}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

,,

RotateGraph[,-2Pi/3]

GraphPlot@

GraphPlot@

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,53}},"Circulant"]

GraphData[{"Quintic",{10,53}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,53}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,53}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,53}}&]

RootGraph[GraphData[{"Quintic",{10,53}}]]

Halin

GraphData[{"Quintic",{10,53}},"Halin"]

GraphData[{"Quintic",{10,53}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,53}},"Rigid"]

GraphData[{"Quintic",{10,53}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,53}},"Flexible"]

GraphData[{"Quintic",{10,53}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,53}},"LCF"]

GraphData[{"Quintic",{10,53}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,53}},"LCFSignature"]

GraphData[{"Quintic",{10,53}},"LCFNotations"]

GraphData[{"Quintic",{10,53}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,53}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,53}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,53}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,53}}],Debug->True]//Timing

GraphData[{"Quintic",{10,53}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

gs={RotateGraph[,{5,10}],RotateGraph[,{3,8}]}

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,53}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,53}},"Matchstick"]

GraphData[{"Quintic",{10,53}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,53}},"Edges"]]

3D All

GraphData[{"Quintic",{10,53}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,53}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,53}},"Polyhedral"]

GraphData[{"Quintic",{10,53}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 54}}

GraphData[{"Quintic",{10,54}},"StandardName"]

All

GraphData[{"Quintic",{10,54}},"Graph","All"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,54}},"LCFSignature"]

GraphData[{"Quintic",{10,54}},"Graph","LCF"]//StyleGraphs

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{10,54}}],Debug->True]

GraphData[{"Quintic",{10,54}},"Graph","UnitDistance"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,54}},{"RCN","CN"}]

GraphData[{"Quintic",{10,54}},"Graph","MinimalCrossing"]//StyleGraphs

3D

Graph3D[GraphData[{"Quintic",{10,54}},"Edges"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{10,54}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{10,54}}],"CrossingNumber"->5,RandomSeed->1231235],-Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"Quintic", {10, 55}}

Names

GraphData[{"Quintic",{10,55}},"StandardName"]

GraphData[{"Quintic",{10,55}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,55}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,55}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Quintic",{10,55}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

VertexDegree[g]

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,55}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,55}},"Graph","Degenerate"]

Bilateral

GraphData[{"Quintic",{10,55}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,55}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,55}},"Planar"]

GraphData[{"Quintic",{10,55}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,55}},{"RCN","CN"}]

GraphData[{"Quintic",{10,55}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,55}}],TimeConstraint->1])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,55}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

GraphPlot@RotateGraph[,2Pi/3]

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

RecognizeGraph@g

RectilinearCrossingCount@g

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,55}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,55}}],"CrossingNumber"->5,RandomSeed->n],{n,5000}]//Union//Timing

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

GraphPlot@RotateGraph[,Pi/4]

GraphPlot[GraphData[{"Quintic",{10,55}},"Edges"]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,55}},"Circulant"]

GraphData[{"Quintic",{10,55}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,55}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,55}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,55}}&]

RootGraph[GraphData[{"Quintic",{10,55}}]]

Halin

GraphData[{"Quintic",{10,55}},"Halin"]

GraphData[{"Quintic",{10,55}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,55}},"Rigid"]

GraphData[{"Quintic",{10,55}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,55}},"Flexible"]

GraphData[{"Quintic",{10,55}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,55}},"LCF"]

GraphData[{"Quintic",{10,55}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,55}},"LCFSignature"]

GraphData[{"Quintic",{10,55}},"LCFNotations"]

GraphData[{"Quintic",{10,55}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,55}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,55}}],All])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}]
(* order-1 bilateral only *)
}])//Timing

Length[gs]

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,55}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,55}}],Debug->True]//Timing

GraphData[{"Quintic",{10,55}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

gs={RotateGraph[,{6,1}],RotateGraph[,{2,4}]}

DegenerateGraphEmbeddingTypes/@%

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Quintic",{10,55}},"Matchstick"]

GraphData[{"Quintic",{10,55}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,55}},"Edges"]]

3D All

GraphData[{"Quintic",{10,55}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,55}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,55}},"Polyhedral"]

{"Quintic", {10, 56}}

Names

GraphData[{"Quintic",{10,56}},"StandardName"]

GraphData[{"Quintic",{10,56}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,56}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,56}},"EdgeList"]]

Default embedding

GraphPlot[Graph[GraphData[{"Quintic",{10,56}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,56}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,56}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,56}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,56}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,56}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,56}},"Planar"]

GraphData[{"Quintic",{10,56}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,56}},{"RCN","CN"}]

GraphData[{"Quintic",{10,56}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,56}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,56}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,56}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,56}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,2Pi/3]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{10,56}}],"CrossingNumber"->5,RandomSeed->1234]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,56}},"Circulant"]

GraphData[{"Quintic",{10,56}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,56}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,56}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,56}}&]

RootGraph[GraphData[{"Quintic",{10,56}}]]

Halin

GraphData[{"Quintic",{10,56}},"Halin"]

GraphData[{"Quintic",{10,56}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,56}},"Rigid"]

GraphData[{"Quintic",{10,56}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,56}},"Flexible"]

GraphData[{"Quintic",{10,56}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,56}},"LCF"]

GraphData[{"Quintic",{10,56}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,56}},"LCFSignature"]

GraphData[{"Quintic",{10,56}},"LCFNotations"]

GraphData[{"Quintic",{10,56}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,56}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,56}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,56}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,56}}],Debug->True]//Timing

GraphData[{"Quintic",{10,56}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{9,10}]

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,56}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,56}},"Matchstick"]

GraphData[{"Quintic",{10,56}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,56}},"Edges"]]

3D All

GraphData[{"Quintic",{10,56}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,56}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,56}},"Polyhedral"]

GraphData[{"Quintic",{10,56}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 57}}

Names

GraphData[{"Quintic",{10,57}},"StandardName"]

GraphData[{"Quintic",{10,57}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,57}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,57}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,57}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,57}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,57}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,57}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,57}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,57}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,57}},"Planar"]

GraphData[{"Quintic",{10,57}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,57}},{"RCN","CN"}]

GraphData[{"Quintic",{10,57}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,57}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,57}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,57}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,57}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@

GraphPlot@HighlightGraph[RotateGraph[GraphicsToGraph@,Pi/4],Range[11,16]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,57}},"Circulant"]

GraphData[{"Quintic",{10,57}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,57}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,57}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,57}}&]

RootGraph[GraphData[{"Quintic",{10,57}}]]

Halin

GraphData[{"Quintic",{10,57}},"Halin"]

GraphData[{"Quintic",{10,57}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,57}},"Rigid"]

GraphData[{"Quintic",{10,57}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,57}},"Flexible"]

GraphData[{"Quintic",{10,57}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,57}},"LCF"]

GraphData[{"Quintic",{10,57}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,57}},"LCFSignature"]

GraphData[{"Quintic",{10,57}},"LCFNotations"]

GraphData[{"Quintic",{10,57}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,57}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,57}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,57}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,57}}],Debug->True]//Timing

GraphData[{"Quintic",{10,57}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

LabelGraph@RotateGraph[,{7,10}]

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

RecognizeGraph@g

LabelGraph@RotateGraph[,{4,9}]

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

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

graph[q_,r_]:=Module[{v=Join[CirclePoints[5],CirclePoints[{r,q},5]]},
Graph[Range[10],UndirectedEdge@@@{e[1,2,3,4,5,1,7,3,9,5,6,2,8,4,10,1,6,8,10,7,9,6],{2,7},{5,10},{3,8},{4,9}},VertexCoordinates->v,VertexLabels->Automatic]]

gs=graph@@@{{Pi/2-4Pi/5,(1/4) (-1+(Sqrt[5]))},{Pi/2,(1/4) (-1+(Sqrt[5]))},{-Pi/2-2Pi/5,1/2},{-Pi/2,3/5},{Pi/2-2Pi/5,1/2}}

gs={,,,,};

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,57}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{10,57}},"Matchstick"]

GraphData[{"Quintic",{10,57}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,57}},"Edges"]]

3D All

GraphData[{"Quintic",{10,57}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,57}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,57}},"Polyhedral"]

GraphData[{"Quintic",{10,57}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 58}}

Names

GraphData[{"Quintic",{10,58}},"StandardName"]

GraphData[{"Quintic",{10,58}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{10,58}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{10,58}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{10,58}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{10,58}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{10,58}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{10,58}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{10,58}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{10,58}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{10,58}},"Planar"]

GraphData[{"Quintic",{10,58}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{10,58}},{"RCN","CN"}]

GraphData[{"Quintic",{10,58}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{10,58}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{10,58}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{10,58}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{10,58}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

{,,}

GraphPlot@RotateGraph[,2Pi/3]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{10,58}},"Circulant"]

GraphData[{"Quintic",{10,58}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{10,58}},"Line"]

LineGraphQ[GraphData[{"Quintic",{10,58}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{10,58}}&]

RootGraph[GraphData[{"Quintic",{10,58}}]]

Halin

GraphData[{"Quintic",{10,58}},"Halin"]

GraphData[{"Quintic",{10,58}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{10,58}},"Rigid"]

GraphData[{"Quintic",{10,58}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{10,58}},"Flexible"]

GraphData[{"Quintic",{10,58}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{10,58}},"LCF"]

GraphData[{"Quintic",{10,58}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{10,58}},"LCFSignature"]

GraphData[{"Quintic",{10,58}},"LCFNotations"]

GraphData[{"Quintic",{10,58}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{10,58}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{10,58}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{10,58}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{10,58}}],Debug->True]//Timing

GraphData[{"Quintic",{10,58}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{10,58}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

GraphPlot@RotateGraph[,{4,5}]

Matchstick

GraphData[{"Quintic",{10,58}},"Matchstick"]

GraphData[{"Quintic",{10,58}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{10,58}},"Edges"]]

3D All

GraphData[{"Quintic",{10,58}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{10,58}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{10,58}},"Polyhedral"]

GraphData[{"Quintic",{10,58}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {10, 59}} == {"Circulant", {10, {1, 2, 5}}}

Names

GraphData[{"Quintic",{10,59}},"StandardName"]

GraphData[{"Quintic",{10,59}},"StandardNames"]

{"Quintic", {10, 60}} == {"CompleteBipartite", {5, 5}}

Names

GraphData[{"Quintic",{10,60}},"StandardName"]

GraphData[{"Quintic",{10,60}},"StandardNames"]

12

GraphData[{"Quintic","Disconnected"},12]

TextGrid[Sort[{Cases[GraphData[#,"StandardNames"],{"Quintic",n_}:>n][[-1]],#}&/@GraphData[{"Quintic","Connected"},12]],Dividers->All]

TextGrid[Sort[{Cases[GraphData[#,"StandardNames"],{"Quintic",n_}:>n][[-1]],#}&/@Cases[GraphData[{"Quintic","Connected"},12],{"Quintic",_}]],Dividers->All]

{"Quintic", {12, 897}}

GraphData[{"Quintic",{12,2}},"StandardName"]

Primary

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

All

GraphData[{"Quintic",{12,2}},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{12,2}},"EdgeList"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{12,2}},"Edges"]

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

RecognizeGraph[g]

GraphData[%]

Degenerate

GraphData[{"Quintic",{12,2}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{12,2}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{12,2}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{12,2}},"Planar"]

GraphData[{"Quintic",{12,2}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{12,2}},{"RCN","CN"}]

GraphData[{"Quintic",{12,2}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing Construction

GraphPlot@MinimalCrossingGraph[GraphData[{"Quintic",{12,2}}],"CrossingNumber"->4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

(cn=CrossingNumber[GraphData[{"Quintic",{12,2}}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Quintic",{12,2}}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,2}}],"CrossingNumber"->cn]]

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{12,2}},"Circulant"]

GraphData[{"Quintic",{12,2}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{12,2}},"Halin"]

GraphData[{"Quintic",{12,2}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{12,2}},"LCF"]

GraphData[{"Quintic",{12,2}},"LCFSignature"]

GraphData[{"Quintic",{12,2}},"Graph","LCF"]//StyleGraphs

Tally[LCFFromEmbedding[#][[2]]&/@%]

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Quintic",{12,2}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{12,2}}],All])[[All,2]]]//Timing

gs=LCFGraph@@@lcf//StyleGraphs

gs=Join[LCFGraph@@@DeleteCases[lcf,{_,1}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,1}]]]

Length[gs]

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{12,2}}],Debug->True]

GraphData[{"Quintic",{12,2}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{12,2}},"Matchstick"]

GraphData[{"Quintic",{12,2}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{12,2}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Quintic",{12,2}},"Polyhedral"]

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

{"Quintic", {12, 1142}}

GraphData[{"Quintic",{12,6}},"StandardName"]

Primary

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

All

GraphData[{"Quintic",{12,6}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Quintic",{12,6}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{12,6}},"EdgeList"]]

Degenerate

GraphData[{"Quintic",{12,6}},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Quintic",{12,6}},"Graph","Circular"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{12,6}},"Graph","Bilateral"]//StyleGraphs

Planar

GraphData[{"Quintic",{12,6}},"Planar"]

GraphData[{"Quintic",{12,6}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{12,6}},{"RCN","CN"}]

GraphData[{"Quintic",{12,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

CrossingNumber[GraphData[{"Quintic",{12,6}}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,6}}],"CrossingNumber"->cn]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{12,6}},"Circulant"]

GraphData[{"Quintic",{12,6}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{12,6}},"Halin"]

GraphData[{"Quintic",{12,6}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{12,6}},"LCF"]

GraphData[{"Quintic",{12,6}},"LCFSignature"]

GraphData[{"Quintic",{12,6}},"Graph","LCF"]//StyleGraphs

Tally[LCFFromEmbedding[#][[2]]&/@%]

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Quintic",{12,6}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{12,6}}],All])[[All,2]]]

gs=LCFGraph@@@lcf

gs=Join[With[{g=BilateralLCFEmbedding[#]},If[MissingQ[g],#,g]]&/@LCFGraph@@@DeleteCases[lcf,{_,1}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,1}]]]

Length[gs]

UnitDistance

GraphData[{"Quintic",{12,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{12,6}}],Debug->True]//Timing

GraphData[{"Quintic",{12,6}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{12,6}},"Matchstick"]

GraphData[{"Quintic",{12,6}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{12,6}},"Edges"]]

3D All

GraphData[{"Quintic",{12,6}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{12,6}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{12,6}},"Polyhedral"]

GraphData[{"Quintic",{12,6}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {12, 2471}}

Names

GraphData[{"Quintic",{12,2471}},"StandardName"]

GraphData[{"Quintic",{12,2471}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{12,2471}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Quintic",{12,2471}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{12,2471}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{12,2471}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{12,2471}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{12,2471}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{12,2471}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{12,2471}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{12,2471}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{12,2471}},"Planar"]

GraphData[{"Quintic",{12,2471}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{12,2471}},{"RCN","CN"}]

GraphData[{"Quintic",{12,2471}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{12,2471}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{12,2471}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{12,2471}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{12,2471}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,1}}],"CrossingNumber"->5],-3Pi/4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,1}}],"CrossingNumber"->cn]]

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

GraphPlot@RotateGraph[,-Pi/2]

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

gs=UnlabelGraph/@{,}

Circulant

GraphData[{"Quintic",{12,2471}},"Circulant"]

GraphData[{"Quintic",{12,2471}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{12,2471}},"Line"]

LineGraphQ[GraphData[{"Quintic",{12,2471}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{12,2471}}&]

RootGraph[GraphData[{"Quintic",{12,2471}}]]

Halin

GraphData[{"Quintic",{12,2471}},"Halin"]

GraphData[{"Quintic",{12,2471}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{12,2471}},"Rigid"]

GraphData[{"Quintic",{12,2471}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{12,2471}},"Flexible"]

GraphData[{"Quintic",{12,2471}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{12,2471}},"LCF"]

GraphData[{"Quintic",{12,2471}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{12,2471}},"LCFSignature"]

GraphData[{"Quintic",{12,2471}},"LCFNotations"]

GraphData[{"Quintic",{12,2471}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{12,2471}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{12,2471}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,XXX}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{12,2471}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{12,2471}}],Debug->True]//Timing

GraphData[{"Quintic",{12,2471}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Quintic",{12,2471}},"VertexList"],GraphData[{"Quintic",{12,2471}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{12,2471}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{12,2471}},"Matchstick"]

GraphData[{"Quintic",{12,2471}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{12,2471}},"Edges"]]

3D All

GraphData[{"Quintic",{12,2471}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{12,2471}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{12,2471}},"Polyhedral"]

GraphData[{"Quintic",{12,2471}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {12, 4108}}

GraphData[{"Quintic",{12,4}},"StandardName"]

Primary

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

All

GraphData[{"Quintic",{12,4}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Quintic",{12,4}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{12,4}},"EdgeList"]]

Degenerate

GraphData[{"Quintic",{12,4}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{12,4}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{12,4}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{12,4}},"Planar"]

GraphData[{"Quintic",{12,4}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{12,4}},{"RCN","CN"}]

GraphData[{"Quintic",{12,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{12,4}}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Quintic",{12,4}}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,4}}],"CrossingNumber"->cn]]

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

Cases[GraphData[{"Quintic",{12,4}},"StandardNames"],{"Circulant",_}]

GraphData[{"Quintic",{12,4}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{12,4}},"Halin"]

GraphData[{"Quintic",{12,4}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{12,4}},"LCF"]

GraphData[{"Quintic",{12,4}},"LCFSignature"]

GraphData[{"Quintic",{12,4}},"Graph","LCF"]//StyleGraphs

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Quintic",{12,4}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{12,4}}],All])[[All,2]]]

gs=LCFGraph@@@DeleteCases[lcf,{_,1}]

gs=Join[LCFGraph@@@DeleteCases[lcf,{_,1}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,1}]]]

Length[gs]

UnitDistance

GraphData[{"Quintic",{12,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{12,4}}],Debug->True]//Timing

GraphData[{"Quintic",{12,4}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{12,4}},"Matchstick"]

GraphData[{"Quintic",{12,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{12,4}},"Edges"]]

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

RecognizeGraph[g]

3D All

GraphData[{"Quintic",{12,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{12,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{12,4}},"Polyhedral"]

GraphData[{"Quintic",{12,4}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {12, 4135}}

GraphData[{"Quintic",{12,5}},"StandardName"]

Primary

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

All

GraphData[{"Quintic",{12,5}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Quintic",{12,5}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{12,5}},"EdgeList"]]

Degenerate

GraphData[{"Quintic",{12,5}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{12,5}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{12,5}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{12,5}},"Planar"]

GraphData[{"Quintic",{12,5}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{12,5}},{"RCN","CN"}]

GraphData[{"Quintic",{12,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

CrossingNumber[GraphData[{"Quintic",{12,5}}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,5}}],"CrossingNumber"->cn],Pi/4]

GraphPlot@HighlightGraph[RotateGraph[GraphicsToGraph@,{3,2}],Range[13,16]]

Union[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,5}}],"CrossingNumber"->cn,RandomSeed->n]],{n,200}]]//Timing

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{12,5}},"Circulant"]

GraphData[{"Quintic",{12,5}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{12,5}},"Halin"]

GraphData[{"Quintic",{12,5}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{12,5}},"LCF"]

GraphData[{"Quintic",{12,5}},"LCFSignature"]

GraphData[{"Quintic",{12,5}},"Graph","LCF"]//StyleGraphs

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Quintic",{12,5}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{12,5}}],All])[[All,2]]]

gs=LCFGraph@@@DeleteCases[lcf,{_,1}]

UnitDistance

GraphData[{"Quintic",{12,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{12,5}}],Debug->True]//Timing

GraphData[{"Quintic",{12,5}},"Graph","UnitDistance"]//StyleGraphs

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

Matchstick

GraphData[{"Quintic",{12,5}},"Matchstick"]

GraphData[{"Quintic",{12,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{12,5}},"Edges"]]

3D All

GraphData[{"Quintic",{12,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{12,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{12,5}},"Polyhedral"]

GraphData[{"Quintic",{12,5}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {12, 7603}}

GraphData[{"Quintic",{12,3}},"StandardName"]

Primary

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

All

GraphData[{"Quintic",{12,3}},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{12,3}},"EdgeList"]]

Default embedding

g=GraphPlot@GraphData[{"Quintic",{12,3}},"Edges"]

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

RecognizeGraph[g]

GraphPlot@GraphData[{"Quintic",{12,3}},"Edges"]

Pentagonal embedding

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{12,3}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{12,3}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{12,3}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{12,3}},"Planar"]

GraphData[{"Quintic",{12,3}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{12,3}},{"RCN","CN"}]

GraphData[{"Quintic",{12,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing Construction

RecognizeGraph[g]

RectilinearCrossingCount[g]

(cn=CrossingNumber[GraphData[{"Quintic",{12,3}}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Quintic",{12,3}}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{12,3}}],"CrossingNumber"->cn]]

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{12,3}},"Circulant"]

GraphData[{"Quintic",{12,3}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{12,3}},"Halin"]

GraphData[{"Quintic",{12,3}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{12,3}},"LCF"]

GraphData[{"Quintic",{12,3}},"LCFSignature"]

GraphData[{"Quintic",{12,3}},"Graph","LCF"]//StyleGraphs

Tally[LCFFromEmbedding[#][[2]]&/@%]

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Quintic",{12,3}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{12,3}}],All])[[All,2]]]//Timing

gs=LCFGraph@@@lcf//StyleGraphs

gs=Join[LCFGraph@@@DeleteCases[lcf,{_,1}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,1}]]]

UnitDistance

UnitDistanceGraphQ[GraphData[{"Quintic",{12,3}}],Debug->True]

GraphData[{"Quintic",{12,3}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{12,3}},"Matchstick"]

GraphData[{"Quintic",{12,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{12,3}},"Edges"]]

3D All

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

3D UnitDistance

GraphData[{"Quintic",{12,3}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{12,3}},"Polyhedral"]

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

14

GraphData[{"Disconnected","Quintic"},14]

TextGrid[Sort[{Cases[GraphData[#,"StandardNames"],{"Quintic",n_}:>n][[-1]],#}&/@GraphData[{"Connected","Quintic"},14]],Dividers->All]

{"Quintic", {14, 1813}}

Names

GraphData[{"Quintic",{14,1813}},"StandardName"]

GraphData[{"Quintic",{14,1813}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{14,1813}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{14,1813}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{14,1813}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{14,1813}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{14,1813}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{14,1813}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{14,1813}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{14,1813}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{14,1813}},"Planar"]

GraphData[{"Quintic",{14,1813}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{14,1813}},{"RCN","CN"}]

GraphData[{"Quintic",{14,1813}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{14,1813}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{14,1813}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{14,1813}}],"CrossingNumber"->cn])//PolyhedralGraphQ

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{14,1813}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{14,1813}},"Circulant"]

GraphData[{"Quintic",{14,1813}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{14,1813}},"Line"]

LineGraphQ[GraphData[{"Quintic",{14,1813}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{14,1813}}&]

RootGraph[GraphData[{"Quintic",{14,1813}}]]

Halin

GraphData[{"Quintic",{14,1813}},"Halin"]

GraphData[{"Quintic",{14,1813}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{14,1813}},"Rigid"]

GraphData[{"Quintic",{14,1813}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{14,1813}},"Flexible"]

GraphData[{"Quintic",{14,1813}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{14,1813}},"LCF"]

GraphData[{"Quintic",{14,1813}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{14,1813}},"LCFSignature"]

GraphData[{"Quintic",{14,1813}},"LCFNotations"]

GraphData[{"Quintic",{14,1813}},"Graph","LCF"]//StyleGraphs

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{14,1813}}],All][[All,All,1]]]//Timing

UnitDistance

GraphData[{"Quintic",{14,1813}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{14,1813}}],Debug->True]//Timing

GraphData[{"Quintic",{14,1813}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{14,1813}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{14,1813}},"Matchstick"]

GraphData[{"Quintic",{14,1813}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{14,1813}},"Edges"]]

3D All

GraphData[{"Quintic",{14,1813}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{14,1813}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{14,1813}},"Polyhedral"]

GraphData[{"Quintic",{14,1813}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {14, 32460}} == {"Circulant", {14, {1, 6, 7}}}

Names

GraphData[{"Quintic",{14,32460}},"StandardName"]

GraphData[{"Quintic",{14,32460}},"StandardNames"]

{"Quintic", {14, 546643}}

Names

GraphData[{"Quintic",{14,546643}},"StandardName"]

GraphData[{"Quintic",{14,546643}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{14,546643}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{14,546643}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{14,546643}},"Edges"]

RotateGraph[,.2]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{14,546643}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{14,546643}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{14,546643}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{14,546643}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{14,546643}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{14,546643}},"Planar"]

GraphData[{"Quintic",{14,546643}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{14,546643}},{"RCN","CN"}]

GraphData[{"Quintic",{14,546643}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{14,546643}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{14,546643}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{14,546643}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{14,546643}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@

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

VertexDegree[g]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{14,546643}},"Circulant"]

GraphData[{"Quintic",{14,546643}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Quintic",{14,546643}},"Line"]

LineGraphQ[GraphData[{"Quintic",{14,546643}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{14,546643}}&]

RootGraph[GraphData[{"Quintic",{14,546643}}]]

Halin

GraphData[{"Quintic",{14,546643}},"Halin"]

GraphData[{"Quintic",{14,546643}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{14,546643}},"Rigid"]

GraphData[{"Quintic",{14,546643}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{14,546643}},"Flexible"]

GraphData[{"Quintic",{14,546643}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{14,546643}},"LCF"]

GraphData[{"Quintic",{14,546643}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{14,546643}},"LCFSignature"]

GraphData[{"Quintic",{14,546643}},"LCFNotations"]

GraphData[{"Quintic",{14,546643}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{14,546643}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{14,546643}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

(gs=Flatten[{
(* all LCF's with order >1, sorted by order and with bilateral graphs first *)
Join[DeleteCases[#,{_Missing,_}][[All,1]],Cases[#,{_Missing,_}][[All,2]]]&/@Map[{BilateralLCFGraph@#,#}&,Map[LCFGraph@@#&,SplitBy[DeleteCases[lcf,{_,1}],Last],{2}],{2}],
(* order-1 bilateral only *)
DeleteMissing[BilateralLCFGraph@@@Cases[lcf,{_,1}]]}])//Timing

Length[gs]

UnitDistance

GraphData[{"Quintic",{14,546643}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{14,546643}}],Debug->True]//Timing

GraphData[{"Quintic",{14,546643}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{14,546643}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{14,546643}},"Matchstick"]

GraphData[{"Quintic",{14,546643}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{14,546643}},"Edges"]]

3D All

GraphData[{"Quintic",{14,546643}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{14,546643}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{14,546643}},"Polyhedral"]

GraphData[{"Quintic",{14,546643}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {14, 3175820}} == {"VertexTransitive", {14, 16}}

Names

GraphData[{"Quintic",{14,3175820}},"StandardName"]

GraphData[{"Quintic",{14,3175820}},"StandardNames"]

{"Quintic", {14, 3184637}} == {"Circulant", {14, {2, 4, 7}}}

Names

GraphData[{"Quintic",{14,3184637}},"StandardName"]

GraphData[{"Quintic",{14,3184637}},"StandardNames"]

{"Quintic", {14, 3296702}} == {"Circulant", {14, {1, 2, 7}}}

Names

GraphData[{"Quintic",{14,3296702}},"StandardName"]

GraphData[{"Quintic",{14,3296702}},"StandardNames"]

{"Quintic", {14, 3459382}} == {"Circulant", {14, {1, 3, 7}}}

Names

GraphData[{"Quintic",{14,3459382}},"StandardName"]

GraphData[{"Quintic",{14,3459382}},"StandardNames"]

{"Quintic", {14, 3459383}} == {"Andrasfai", 5}

Names

GraphData[{"Quintic",{14,3459383}},"StandardName"]

GraphData[{"Quintic",{14,3459383}},"StandardNames"]

16

TextGrid[Sort[{FirstCase[GraphData[#,"StandardNames"],{"Quintic",n_}:>n],#}&/@GraphData["Quintic",16]],Dividers->All]

{"Quintic", {16, 1}}

Names

GraphData[{"Quintic",{16,1}},"StandardName"]

GraphData[{"Quintic",{16,1}},"StandardNames"]

Primary

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

All

GraphData[{"Quintic",{16,1}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{16,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{16,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{16,1}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Quintic",{16,1}},"Graph","Degenerate"]

Perspective

GraphData[{"Quintic",{16,1}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Quintic",{16,1}},"Polyhedron"]

Bilateral

GraphData[{"Quintic",{16,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{16,1}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{16,1}},"Planar"]

GraphData[{"Quintic",{16,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{16,1}},{"RCN","CN"}]

GraphData[{"Quintic",{16,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Quintic",{16,1}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Quintic",{16,1}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"Quintic",{16,1}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

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

Table[MinimalCrossingGraph[GraphData[{"Quintic",{16,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[{"Quintic",{16,1}},"Circulant"]

GraphData[{"Quintic",{16,1}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"Quintic",{16,1}},"ComplementGraph","Name"]

Line graph

GraphData[{"Quintic",{16,1}},"Line"]

LineGraphQ[GraphData[{"Quintic",{16,1}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Quintic",{16,1}}&]

RootGraph[GraphData[{"Quintic",{16,1}}]]

Halin

GraphData[{"Quintic",{16,1}},"Halin"]

GraphData[{"Quintic",{16,1}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Quintic",{16,1}},"Rigid"]

GraphData[{"Quintic",{16,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Quintic",{16,1}},"Flexible"]

GraphData[{"Quintic",{16,1}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Quintic",{16,1}},"LCF"]

GraphData[{"Quintic",{16,1}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{16,1}},"LCFSignature"]

GraphData[{"Quintic",{16,1}},"LCFNotations"]

GraphData[{"Quintic",{16,1}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Quintic",{16,1}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{16,1}}],All])[[All,2]]]//Timing

lcf

LCFGraph@@@lcf//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

UnitDistance

GraphData[{"Quintic",{16,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{16,1}}],Debug->True]//Timing

GraphData[{"Quintic",{16,1}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Quintic",{16,1}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Quintic",{16,1}},"Matchstick"]

GraphData[{"Quintic",{16,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{16,1}},"Edges"]]

3D All

GraphData[{"Quintic",{16,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{16,1}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{16,1}},"Polyhedral"]

GraphData[{"Quintic",{16,1}},"Graph",{"3D","Polyhedron"}]

18

TextGrid[Sort[{FirstCase[GraphData[#,"StandardNames"],{"Quintic",n_}:>n],#}&/@GraphData["Quintic",18]],Dividers->All]

20

TextGrid[Sort[{FirstCase[GraphData[#,"StandardNames"],{"Quintic",n_}:>n],#}&/@GraphData["Quintic",20]],Dividers->All]

{"Quintic", {20, 1}}

GraphData[{"Quintic",{20,1}},"StandardName"]

Primary

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

All

GraphData[{"Quintic",{20,1}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{20,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Quintic",{20,1}},"Edges"]

v=Join[UnitCirclePoints[10],CirclePoints[1,10]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,10},1,12,3,14,5,16,7,18,9,20,1],e[10,11,2,13,4,15,6,17,8,19,10],e[20,18,16,14,12,20],e[19,17,15,13,11,19],Sequence@@Table[{i,i+10},{i,10}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{20,1}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{20,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{20,1}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{20,1}},"Planar"]

GraphData[{"Quintic",{20,1}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Quintic",{20,1}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Quintic",{20,1}}],"OuterFace"->#]&/@faces

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

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

(1/8)((v[[14,2]])/(v[[19,2]]))//FullSimplify

v=Join[UnitCirclePoints[5],c=CirclePoints[{ (Sqrt[1-(2/(Sqrt[5]))]),-Pi/2},5],Mean/@Partition[c,2,1,1],CirclePoints[{(NumericalApproximation[Root, (RowDefault["0.100", FEExpressionsNumericalApproximationElider]), Root[1-100 ((#1)^2)+80 ((#1)^4)&,3], ]),-Pi/2},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,2,8,3,9,4,10,5,6,1,11,7,12,8,13,9,14,10,15,6,11,17,18,19,20,16,17,12,18,13,19,14,20,15,16,11],{2,12},{3,13},{4,14},{5,15},{9,19},{8,18},{7,17},{6,16},{10,20}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Delete[Join[{{-1,0},{1,0},{0,Sqrt[3]}},Join[{{0,1/4}},Flatten[Table[{i,j},{i,-1/4,1/4,1/8},{j,{1/2,1}}],1],Table[{i,3/4},{i,-1/4,1/4,1/14}]]],List/@{15,22}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,14,3,6,1,5,7,9,11,13,2],e[5,6,8,10,12,14,13,20,14],e[5,15,6],e[5,4,7,15,8,16,7],e[11,20,12,19,11,18,10,17,9,18],e[15,16,17,18,19,20],e[8,17],{9,16},{10,19},{4,13},{3,12}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

v[[11,1]]

v=Delete[Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{-1/2,3/4},{0,3/4},{1/2,3/4}},Table[{i,1/2},{i,-1/2,1/2,1/6}]],{13}];
v=Join[v,{{-1/3,3/8},{0,3/8},{1/3,3/8},{-1/3,5/8},{1/3,5/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,9,3,7,1,10,11,12,13,14,15,2],e[4,10,7,8,9,15,6],e[10,19,8,20,15],{3,8},e[19,11,16,4,11],e[20,14,18,6,14],e[12,19,7],e[17,13,20,9],e[5,17,12],e[16,17,18,5,16,12],{13,18}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Quintic",{20,1}},"Circulant"]

GraphData[{"Quintic",{20,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{20,1}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{20,1}},"LCF"]

GraphData[{"Quintic",{20,1}},"LCFSignature"]

GraphData[{"Quintic",{20,1}},"Graph","LCF"]//StyleGraphs

Tally[LCFFromEmbedding[#][[2]]&/@%]

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Quintic",{20,1}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Quintic",{20,1}}],All])[[All,2]]]//Timing

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,3,2])]//Timing

Length[gs]

gs

gs=Join[LCFGraph@@@DeleteCases[lcf,{_,1|2}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,2}]]]

gs=Join[LCFGraph@@@DeleteCases[lcf,{_,1|2}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,1|2}]]]

UnitDistance

GraphData[{"Quintic",{20,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{20,1}}],Debug->True]//Timing

GraphData[{"Quintic",{20,1}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{20,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{20,1}},"Edges"]]

3D All

GraphData[{"Quintic",{20,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{20,1}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{20,1}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Quintic",{20,1}},"Polyhedron"]}]

3D Canonical

GraphData[{"Quintic",{20,1}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Quintic",{20,1}},"Polyhedron"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Quintic",{20,1}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->10000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

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

(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]

32

GraphData["Quintic",32]

{"Quartic", {32, 1}}

GraphData[{"Quintic",{32,1}},"StandardName"]

Construction from source

https://mathoverflow.net/questions/430153/how-to-construct-a-5-regular-1-planar-bipartite-graph

v=Join[CirclePoints[{Csc[Pi/12]/2,-Pi/2},12],CirclePoints[{((Sqrt[2+(Sqrt[3])])/2),-Pi/2},4]];
base=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,12},1,13,14,15,16,13],e[11,13,3],e[2,14,6],e[9,15,5],e[8,16,12],{7,15},{4,14},{10,16}},VertexCoordinates->v,VertexLabels->Automatic]

c=CirclePoints[Csc[Pi/12]/2,12];
v=Join[Append[#,0]&/@c,Append[#,3]&/@c];
ee=Sort[Sort/@Join[Table[{i,12+Mod[i-1,12,1]},{i,12}],Table[{i,12+Mod[i+1,12,1]},{i,12}],Partition[Range[12],2,1,1],Partition[Range[13,24],2,1,1]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->Automatic]

bot={e[3,26,11],e[2,25,6],e[5,27,9],e[8,28,12],{7,27},{4,25},{10,28},{1,26},e[25,26,28,27,25]};
top={e[18,29,14],e[17,31,21],e[20,32,24],e[23,30,15],{16,29},{31,19},{22,32},{13,30},e[30,29,31,32,30]};

v2=Join[v,Mean[v[[#]]]&/@{{2,6},{3,11},{5,9},{8,12}},Mean[v[[12+#]]]&/@{{2,6},{3,11},{5,9},{8,12}}];
e2=Join[ee,bot,top];
g2=Graph[Range[Length[v2]],Sort[Sort/@UndirectedEdge@@@e2],VertexCoordinates->v2,VertexLabels->Automatic]

RecognizeGraph[g2]

Tally[VertexDegree[g2]]

Primary

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

All

GraphData[{"Quintic",{32,1}},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{32,1}},"EdgeList"]]

Inexact

Select[GraphData[{"Quintic",{32,1}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Quintic",{32,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Quintic",{32,1}},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Quintic",{32,1}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Quintic",{32,1}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{32,1}},"Planar"]

GraphData[{"Quintic",{32,1}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{32,1}},{"RCN","CN"}]

GraphData[{"Quintic",{32,1}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

CrossingNumber[GraphData[{"Quintic",{32,1}}],TimeConstraint->10]//AbsoluteTiming

CrossingNumber[GraphData[{"Quintic",{32,1}}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{32,1}}],"CrossingNumber"->20]]

RecognizeGraph[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{32,1}},"Circulant"]

GraphData[{"Quintic",{32,1}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{32,1}},"Halin"]

GraphData[{"Quintic",{32,1}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{32,1}},"LCF"]

GraphData[{"Quintic",{32,1}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{32,1}},"LCFSignature"]

GraphData[{"Quintic",{32,1}},"LCFNotations"]

GraphData[{"Quintic",{32,1}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute random

ComputeRandomLCFNotation[{"Quintic",{32,1}},2,TimeConstraint->120]

LCFGraph@@{{{-15,3,5},{-15,13,15},{-3,11,15},{-3,9,11},{-5,5,7},{-13,-7,-5},{-15,3,5},{-13,3,15},{-13,5,13},{-5,-3,3},{-3,3,13},{-7,-5,13},{-13,-9,-3},{-11,-5,-3},{-13,-11,7},{3,5,13}},2}

BilateralLCFGraph@%

LCF compute 2*^6

With[{g=GraphData[{"Quintic",{32,1}}]},Tally[(lcf=LCF[EdgeList[g],FindHamiltonianCycle[g,2*^6][[All,All,1]],All])[[All,2]]]]//Timing

MaxMemoryUsed[]/10^9.

gs=LCFGraph@@@DeleteCases[lcf,{_,1}]

LCF compute 5*^6

With[{g=GraphData[{"Quintic",{32,1}}]},Tally[(lcf=LCF[EdgeList[g],FindHamiltonianCycle[g,5*^6][[All,All,1]],All])[[All,2]]]]//Timing

MaxMemoryUsed[]/10^9.

gs=LCFGraph@@@DeleteCases[lcf,{_,1}]

DeleteMissing[BilateralLCFGraph/@gs]//Timing

UnitDistance

GraphData[{"Quintic",{32,1}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{32,1}}],Debug->True]//Timing

GraphData[{"Quintic",{32,1}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{32,1}},"Matchstick"]

GraphData[{"Quintic",{32,1}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{32,1}},"Edges"]]

3D All

GraphData[{"Quintic",{32,1}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Quintic",{32,1}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Quintic",{32,1}},"Polyhedral"]

GraphData[{"Quintic",{32,1}},"Graph",{"3D","Polyhedron"}]

{"Quintic", {32, 2}}

GraphData[{"Quintic",{32,1}},"StandardName"]

Construction of rotated version from source

https://mathoverflow.net/questions/430153/how-to-construct-a-5-regular-1-planar-bipartite-graph

v=Join[CirclePoints[{Csc[Pi/12]/2,-Pi/2},12],CirclePoints[{((Sqrt[2+(Sqrt[3])])/2),-Pi/2},4]];
base=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,12},1,13,14,15,16,13],e[11,13,3],e[2,14,6],e[9,15,5],e[8,16,12],{7,15},{4,14},{10,16}},VertexCoordinates->v,VertexLabels->Automatic]

c=CirclePoints[Csc[Pi/12]/2,12];
v=Join[Append[#,0]&/@c,Append[#,3]&/@c];
ee=Sort[Sort/@Join[Table[{i,12+Mod[i-1,12,1]},{i,12}],Table[{i,12+Mod[i+1,12,1]},{i,12}],Partition[Range[12],2,1,1],Partition[Range[13,24],2,1,1]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->Automatic]

bot={e[3,26,11],e[2,25,6],e[5,27,9],e[8,28,12],{7,27},{4,25},{10,28},{1,26},e[25,26,28,27,25]};
top={e[15,29,19],e[18,31,22],e[21,32,13],e[24,30,16],e[29,31,32,30,29],{20,31},{29,17},{30,14},{32,23}};
v2=Join[v,Mean[v[[#]]]&/@{{2,6},{3,11},{5,9},{8,12}},Mean[v[[#]]]&/@(12+{{3,7},{4,12},{6,10},{9,1}})];
e2=Join[ee,bot,top];
g3=Graph[Range[Length[v2]],Sort[Sort/@UndirectedEdge@@@e2],VertexCoordinates->v2,VertexLabels->Automatic]

g3=

RecognizeGraph[g3]

Tally[VertexDegree[g3]]

Primary

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

All

GraphData[{"Quintic",{32,2}},"Graph","All"]//StyleGraphs

Inexact

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

Default embedding

GraphPlot@GraphData[{"Quintic",{32,2}},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Quintic",{32,2}},"EdgeList"]]

Degenerate

GraphData[{"Quintic",{32,2}},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Quintic",{32,2}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Quintic",{32,2}},"Planar"]

GraphData[{"Quintic",{32,2}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Quintic",{32,2}},{"RCN","CN"}]

GraphData[{"Quintic",{32,2}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

CrossingNumber[GraphData[{"Quintic",{32,2}}],TimeConstraint->10]//AbsoluteTiming

CrossingNumber[GraphData[{"Quintic",{32,2}}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Quintic",{32,2}}],"CrossingNumber"->20]]

RecognizeGraph[g]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Quintic",{32,2}},"Circulant"]

GraphData[{"Quintic",{32,2}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Quintic",{32,2}},"Halin"]

GraphData[{"Quintic",{32,2}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Quintic",{32,2}},"LCF"]

GraphData[{"Quintic",{32,2}},"HamiltonianCycleCount"]

GraphData[{"Quintic",{32,2}},"LCFSignature"]

GraphData[{"Quintic",{32,2}},"LCFNotations"]

GraphData[{"Quintic",{32,2}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute random

ComputeRandomLCFNotation[{"Quintic",{32,2}},2,TimeConstraint->120]

LCFGraph@@{{{-15,-13,3},{-13,-5,15},{-3,3,11},{-3,9,13},{7,9,13},{-3,3,5},{-13,-11,-7},{-15,3,7},{-15,-3,15},{5,13,15},{-5,-3,3},{-7,3,11},{-9,3,5},{-11,-9,-3},{-7,-5,-3},{-3,3,7}},2}

BilateralLCFGraph@%

LCF compute 2*^6

With[{g=GraphData[{"Quintic",{32,2}}]},Tally[(lcf=LCF[EdgeList[g],FindHamiltonianCycle[g,1*^6][[All,All,1]],All])[[All,2]]]]//Timing

MaxMemoryUsed[]/10^9.

gs=LCFGraph@@@DeleteCases[lcf,{_,1}]

LCF compute 5*^6

With[{g=GraphData[{"Quintic",{32,2}}]},Tally[(lcf=LCF[EdgeList[g],FindHamiltonianCycle[g,5*^6][[All,All,1]],All])[[All,2]]]]//Timing

MaxMemoryUsed[]/10^9.

gs=LCFGraph@@@DeleteCases[lcf,{_,1}]

gs={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};

DeleteMissing[BilateralLCFGraph/@gs]//Timing

UnitDistance

GraphData[{"Quintic",{32,2}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Quintic",{32,2}}],Debug->True]//Timing

GraphData[{"Quintic",{32,2}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Quintic",{32,2}},"Matchstick"]

GraphData[{"Quintic",{32,2}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Quintic",{32,2}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Quintic",{32,2}},"Polyhedral"]

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

GraphData

GraphDataString

Do[MapIndexed[
Print[If[(r=RecognizeGraph[#])=!={}&&!MatchQ[r,{_Integer,_Integer}],{r,{"Quintic",{n,#2[[1]]}}},GraphDataString[#1,
"StandardName"->{"Quintic",{n,#2[[1]]}},
"Name"->ToString[n]<>"-quintic graph "<>ToString[#2[[1]]],
"Vertices"->None,
"Skip"->{"Cycles"},
TimeConstraint->120
]]]&,RegularConnectedGraphs[5,n]],{n,6,10,2}];