Triangulated Graph

Author

Eric W. Weisstein
September 9, 2024

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

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

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

Counts

All == Connected

A000109

1, 1, 1, 2, 5, 14, 50, 233, 1249, 7595, 49566, 339722, 2406841, 17490241, 129664753, 977526957, 7475907149, 57896349553, 453382272049, 3585853662949, 28615703421545

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

Length/@Table[GraphData["Triangulated",n],{n,10}]

Disconnected

0 by definition

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

Table[Length@GraphData[{"Triangulated","Disconnected"},n],{n,10}]

Enumeration

Export from TriangulatedGraphQ on graphsN.g6

SetDirectory["/Users/eww/Documents/Mathematica/Paclets/GraphData/Nodes/Triangulated"]

files=FileNames["*"]

Do[
Print[{n,Length[pos=Flatten[Position[Get["Triangulated_"<>(indx=If[n==10,"","0"]<>ToString[n])<>".m"],True]]],
Export[
"/Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/Triangulated/Triangulated_"<>indx<>".g6",ImportString[#,"Graph6"]&/@Import["/Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/McKay/graph"<>ToString[n]<>".g6","Lines"][[pos]],"Header"->False]//AbsoluteTiming}],
{n,3,10}]

plantri

plantri 6 -g

Do[Run["/Users/eww/bin/plantri "<>ToString[n]<>" -g /Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/Triangulated/plantri/Triangulated_"<>If[n<10,"0",""]<>ToString[n]<>".g6"],{n,3,13}]

files=FileNames["/Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/Triangulated/plantri/*.g6"]

Length[Import[#,{"Graph6","GraphList"}]]&/@files

Table

TextGrid[Table[{n,GraphData[#,"Name"]&/@GraphData["Triangulated",n]},{n,7}],Dividers->All]

Table[{n,GraphData[#,"Notation"]&/@GraphData["Triangulated",n]},{n,7}]//Column

Figure

GraphicsGrid[Map[Show[GraphData[#]/.g_System`Graph:>SetProperty[g,{VertexSize->{"Scaled",.07},System`VertexStyle->Red,System`EdgeStyle->Black}],PlotLabel->TextCell[Style[GraphData[#,"Name"],{Black,Italic,FontFamily->"Times"}],PageWidth->80,TextAlignment->Center]]&,DeleteCases[Table[GraphData["Triangulated",n],{n,7}],{}],{2}],ImageSize->400,Spacings->{-50,20},Dividers->{{Thick,{True},Thick},Thick}]

Embeddings

<<MathWorld`Graphs`

1

GraphData["Triangulated",1]

2

GraphData["Triangulated",2]

3

GraphData["Triangulated",3]

{"Triangulated", {3, 1}} == "TriangleGraph"

Names

GraphData[{"Triangulated",{3,1}},"StandardName"]

GraphData[{"Triangulated",{3,1}},"StandardNames"]

4

GraphData["Triangulated",4]

{"Triangulated", {4, 1}} == "TetrahedralGraph"

Names

GraphData[{"Triangulated",{4,1}},"StandardName"]

GraphData[{"Triangulated",{4,1}},"StandardNames"]

5

GraphData["Triangulated",5]

{"Triangulated", {5, 1}} == {"Dipyramid", 3}

Names

GraphData[{"Triangulated",{5,1}},"StandardName"]

GraphData[{"Triangulated",{5,1}},"StandardNames"]

6

GraphData["Triangulated",6]

{"Triangulated", {6, 1}} == "TritetrahedralGraph"

Names

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

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

{"Triangulated", {6, 2}} == "OctahedralGraph"

Names

GraphData[{"Triangulated",{6,2}},"StandardName"]

GraphData[{"Triangulated",{6,2}},"StandardNames"]

7

GraphData["Triangulated",7]

{"Triangulated", {7, 1}} == {"KTree", {3, {7, 5}}}

Names

GraphData[{"Triangulated",{7,1}},"StandardName"]

GraphData[{"Triangulated",{7,1}},"StandardNames"]

{"Triangulated", {7, 2}} == {"KTree", {3, {7, 3}}}

Names

GraphData[{"Triangulated",{7,2}},"StandardName"]

GraphData[{"Triangulated",{7,2}},"StandardNames"]

{"Triangulated", {7, 3}} == {"Apollonian", 2}

Names

GraphData[{"Triangulated",{7,3}},"StandardName"]

GraphData[{"Triangulated",{7,3}},"StandardNames"]

{"Triangulated", {7, 4}} == {"Dipyramid", 5}

Names

GraphData[{"Triangulated",{7,4}},"StandardName"]

GraphData[{"Triangulated",{7,4}},"StandardNames"]

{"Triangulated", {7, 5}} == {"Heptahedral", 34}

Names

GraphData[{"Triangulated",{7,5}},"StandardName"]

GraphData[{"Triangulated",{7,5}},"StandardNames"]

8

Note: these are not in the same order as TriangulatedGraphs[8] for historical reasons

GraphData["Triangulated",8]

{"Triangulated", {8, 1}} == "TriakisTetrahedralGraph"

Names

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

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

{"Triangulated", {8, 2}}

Names

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

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

Primary

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

All

GraphData[{"Triangulated",{8,2}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,2}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,2}},"VertexList"],GraphData[{"Triangulated",{8,2}},"Edges"]]]

Degenerate

GraphData[{"Triangulated",{8,2}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,2}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,2}},"Configuration"]

GraphData[{"Triangulated",{8,2}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,2}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{8,2}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,2}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,2}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,2}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,2}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,2}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,2}},"Hamiltonian"]

GraphData[{"Triangulated",{8,2}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,2}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,2}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,2}},"Planar"]

GraphData[{"Triangulated",{8,2}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,2}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,2}}]],10]

GraphPlot@RotateGraph[,{1,4}]

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

RecognizeGraph@g

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,2}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,2}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,2}}]]

Tally[ReverseSort[Length/@faces]]

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

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

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,2}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,2}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"Triangulated",{8,2}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,2}},"Graph","MinimalLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{8,2}},"Circulant"]

GraphData[{"Triangulated",{8,2}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{8,2}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,2}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,2}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,2}}&]

RootGraph[GraphData[{"Triangulated",{8,2}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,2}},"Halin"]

GraphData[{"Triangulated",{8,2}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,2}},"Rigid"]

GraphData[{"Triangulated",{8,2}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,2}},"Flexible"]

GraphData[{"Triangulated",{8,2}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,2}},"LCF"]

GraphData[{"Triangulated",{8,2}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{8,2}},"LCFSignature"]

GraphData[{"Triangulated",{8,2}},"LCFNotations"]

GraphData[{"Triangulated",{8,2}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{8,2}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,2}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,2}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{8,2}},"Matchstick"]

GraphData[{"Triangulated",{8,2}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{8,2}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{8,2}},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,2}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,2}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,2}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,2}}],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]

{"Triangulated", {8, 3}}

Names

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

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

Primary

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

All

GraphData[{"Triangulated",{8,3}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,3}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,3}},"VertexList"],GraphData[{"Triangulated",{8,3}},"Edges"]]]

Degenerate

GraphData[{"Triangulated",{8,3}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,3}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,3}},"Configuration"]

GraphData[{"Triangulated",{8,3}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,3}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,3}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,3}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,3}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,3}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,3}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,3}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,3}},"Hamiltonian"]

GraphData[{"Triangulated",{8,3}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,3}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,3}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,3}},"Planar"]

GraphData[{"Triangulated",{8,3}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,3}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,3}}]],10]

GraphPlot@RotateGraph[,{8,1}]

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

RecognizeGraph@g

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,3}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,3}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,3}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,3}}],"OuterFace"->#]&/@faces

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

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,3}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"Triangulated",{8,3}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,3}},"Graph","MinimalLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{8,3}},"Circulant"]

GraphData[{"Triangulated",{8,3}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{8,3}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,3}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,3}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,3}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,3}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,3}}&]

RootGraph[GraphData[{"Triangulated",{8,3}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,3}},"Halin"]

GraphData[{"Triangulated",{8,3}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,3}},"Rigid"]

GraphData[{"Triangulated",{8,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,3}},"Flexible"]

GraphData[{"Triangulated",{8,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,3}},"LCF"]

GraphData[{"Triangulated",{8,3}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{8,3}},"LCFSignature"]

GraphData[{"Triangulated",{8,3}},"LCFNotations"]

GraphData[{"Triangulated",{8,3}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{8,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,3}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,3}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{8,3}},"Matchstick"]

GraphData[{"Triangulated",{8,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{8,3}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{8,3}},"Polyhedral"]

GraphData[{"Triangulated",{8,3}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,3}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,3}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,3}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,3}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"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]

{"Triangulated", {8, 4}}

Names

GraphData[{"Triangulated",{8,4}},"StandardName"]

GraphData[{"Triangulated",{8,4}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{8,4}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,4}}]]

Default embedding

GraphPlot@RotateGraph[Graph[Graph[GraphData[{"Triangulated",{8,4}},"VertexList"],GraphData[{"Triangulated",{8,4}},"Edges"]],GraphLayout->"HighDimensionalEmbedding"],Pi/2]

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

RecognizeGraph@g

Degenerate

GraphData[{"Triangulated",{8,4}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,4}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,4}},"Configuration"]

GraphData[{"Triangulated",{8,4}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,4}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{8,4}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,4}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,4}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,4}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,4}},"Hamiltonian"]

GraphData[{"Triangulated",{8,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,4}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,4}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,4}},"Planar"]

GraphData[{"Triangulated",{8,4}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,4}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,4}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,4}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,4}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,4}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,4}}],"OuterFace"->#]&/@faces

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

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,4}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

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

(cn=CrossingNumber[GraphData[{"Triangulated",{8,4}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,4}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,4}}],TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,4}}],TimeConstraint->86400])//AbsoluteTiming

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,4}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Select[gs,Max[OuterFace[#]]<=GraphData[{"Triangulated",{8,4}},"V"]&]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,4}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,4}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,4}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

GraphPlot@RotateGraph[,2Pi/3]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

gs=UnlabelGraph/@{,}

MinimalLocalCrossing

GraphData[{"Triangulated",{8,4}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,4}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

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

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,4}}],"CrossingNumber"->cn,RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,4}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,4}}],"CrossingNumber"->(cn=XXX),RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,4}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Circulant

GraphData[{"Triangulated",{8,4}},"Circulant"]

GraphData[{"Triangulated",{8,4}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{8,4}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,4}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,4}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,4}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,4}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,4}}&]

RootGraph[GraphData[{"Triangulated",{8,4}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,4}},"Halin"]

GraphData[{"Triangulated",{8,4}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,4}},"Rigid"]

GraphData[{"Triangulated",{8,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,4}},"Flexible"]

GraphData[{"Triangulated",{8,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,4}},"LCF"]

GraphData[{"Triangulated",{8,4}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{8,4}},"LCFSignature"]

GraphData[{"Triangulated",{8,4}},"LCFNotations"]

GraphData[{"Triangulated",{8,4}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{8,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,4}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,4}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{8,4}},"Matchstick"]

GraphData[{"Triangulated",{8,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{8,4}},"Edges"]]

3D All

GraphData[{"Triangulated",{8,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{8,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{8,4}},"Polyhedral"]

GraphData[{"Triangulated",{8,4}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,4}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,4}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,4}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,4}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->10000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 5}}

Names

GraphData[{"Triangulated",{8,5}},"StandardName"]

GraphData[{"Triangulated",{8,5}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{8,5}},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,5}}]]

Default embedding

GraphPlot@RotateGraph[Graph[Graph[GraphData[{"Triangulated",{8,5}},"VertexList"],GraphData[{"Triangulated",{8,5}},"Edges"]],GraphLayout->"SpringEmbedding"],Pi]

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

RecognizeGraph@g

GraphData[%,"Graph","All"]

Degenerate

GraphData[{"Triangulated",{8,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,5}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,5}},"Configuration"]

GraphData[{"Triangulated",{8,5}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,5}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,5}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,5}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,5}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,5}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,5}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,5}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,5}},"Hamiltonian"]

GraphData[{"Triangulated",{8,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,5}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,5}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,5}},"Planar"]

GraphData[{"Triangulated",{8,5}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,5}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,5}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,5}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,5}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,5}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,5}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

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

RecognizeGraph/@gs

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,5}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"Triangulated",{8,5}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,5}},"Graph","MinimalLocalCrossing"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{8,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,5}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,5}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,5}}&]

RootGraph[GraphData[{"Triangulated",{8,5}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,5}},"Rigid"]

GraphData[{"Triangulated",{8,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,5}},"Flexible"]

GraphData[{"Triangulated",{8,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,5}},"LCFSignature"]

GraphData[{"Triangulated",{8,5}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Triangulated",{8,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,5}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,5}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{8,5}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Triangulated",{8,5}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Triangulated",{8,5}},"Edges"]

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

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Triangulated",{8,5}},"Edges"]]

3D All

GraphData[{"Triangulated",{8,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{8,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{8,5}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,5}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,5}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,5}},"Polyhedron"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,5}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 6}}

Names

GraphData[{"Triangulated",{8,6}},"StandardName"]

GraphData[{"Triangulated",{8,6}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{8,6}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,6}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,6}},"VertexList"],GraphData[{"Triangulated",{8,6}},"Edges"]],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph@g

Degenerate

GraphData[{"Triangulated",{8,6}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,6}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,6}},"Configuration"]

GraphData[{"Triangulated",{8,6}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,6}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,6}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{1,1,0}]

GraphPlot@RotateGraph[,Pi/2]

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

RecognizeGraph@g

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{1,0,1,-Pi/2}]

GraphPlot@RotateGraph[,-Pi/2]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,6}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,6}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,6}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,6}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,6}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,6}},"Hamiltonian"]

GraphData[{"Triangulated",{8,6}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,6}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,6}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,6}},"Planar"]

GraphData[{"Triangulated",{8,6}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,6}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,6}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,6}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,6}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,6}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,6}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2 Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Halin

GraphData[{"Triangulated",{8,6}},"Graph","Halin"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{8,6}},"Circulant"]

GraphData[{"Triangulated",{8,6}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{8,6}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,6}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,6}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,6}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,6}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,6}}&]

RootGraph[GraphData[{"Triangulated",{8,6}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,6}},"Halin"]

GraphData[{"Triangulated",{8,6}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,6}},"Rigid"]

GraphData[{"Triangulated",{8,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,6}},"Flexible"]

GraphData[{"Triangulated",{8,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,6}},"LCFSignature"]

GraphData[{"Triangulated",{8,6}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Triangulated",{8,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,6}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,6}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{8,6}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Triangulated",{8,6}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Triangulated",{8,6}},"Edges"]

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

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Triangulated",{8,6}},"Edges"]]

3D All

GraphData[{"Triangulated",{8,6}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{8,6}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{8,6}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,6}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,6}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,6}},"Polyhedron"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,6}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 7}} == {"Dipyramid", 6}

Names

GraphData[{"Triangulated",{8,7}},"StandardName"]

GraphData[{"Triangulated",{8,7}},"StandardNames"]

{"Triangulated", {8, 8}}

Names

GraphData[{"Triangulated",{8,8}},"StandardName"]

GraphData[{"Triangulated",{8,8}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,8}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,8}},"VertexList"],GraphData[{"Triangulated",{8,8}},"Edges"]]]

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

RecognizeGraph@g

GraphPlot@GraphData[{"Triangulated",{8,8}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{8,8}},"Configuration"]

GraphData[{"Triangulated",{8,8}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,8}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,8}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{1,0,1,-Pi/2}]

GraphPlot@

GraphReplot@

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

RecognizeGraph@g

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,8}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,8}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,8}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,8}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,8}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

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

Circular construction

GraphData[{"Triangulated",{8,8}},"Hamiltonian"]

GraphData[{"Triangulated",{8,8}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,8}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,8}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,8}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,8}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,8}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,8}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,8}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,8}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,8}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

gs=UnlabelGraph/@{,}

Tutte embedding construction 3 #1

GraphPlot@

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot@RotateGraph[,2Pi/3]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,8}},{"RCN","CN"}]

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

MinimalCrossing construction

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

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

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

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

(cn=CrossingNumber[GraphData[{"Triangulated",{8,8}}],TimeConstraint->5 3600])//AbsoluteTiming

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

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,8}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Select[gs,Max[OuterFace[#]]<=GraphData[{"Triangulated",{8,8}},"V"]&]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,8}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,8}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,8}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

MinimalLocalCrossing

GraphData[{"Triangulated",{8,8}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,8}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

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

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,8}}],"CrossingNumber"->cn,RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,8}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,8}}],"CrossingNumber"->(cn=XXX),RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,8}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Circulant

GraphData[{"Triangulated",{8,8}},"Circulant"]

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

Circulant construction

GraphData[{"Triangulated",{8,8}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,8}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,8}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,8}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,8}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,8}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,8}}&]

RootGraph[GraphData[{"Triangulated",{8,8}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,8}},"Halin"]

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

Rigid

GraphData[{"Triangulated",{8,8}},"Rigid"]

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

Flexible

GraphData[{"Triangulated",{8,8}},"Flexible"]

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

LCF

GraphData[{"Triangulated",{8,8}},"LCF"]

GraphData[{"Triangulated",{8,8}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{8,8}},"LCFSignature"]

GraphData[{"Triangulated",{8,8}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"Triangulated",{8,8}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{8,8}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"Triangulated",{8,8}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Triangulated",{8,8}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{8,8}},"Polyhedral"]

GraphData[{"Triangulated",{8,8}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,8}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,8}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,8}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction from PolyhedralEmbedding

g=GraphData[{"Triangulated",{8,8}},"Graph","Planar"][[1]]

Show[g2=PolyhedralEmbedding[g,"Circular"->True,"Scale"->3],Boxed->True]//Quiet

With[
{faces=PlanarFaceList[Graph[EdgeList[g2]]],v=GraphEmbedding@g2},
Graphics3D[{Point[{0,0,0}],Opacity[.5],Sphere[],FaceForm[Green,Red],
poly=Polyhedron[1.2v,faces]}]]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->20000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/5,"PlanarFactor"->1/5,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,8}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 9}}

Names

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

GraphData[{"Triangulated",{8,9}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{8,9}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,9}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,9}},"VertexList"],GraphData[{"Triangulated",{8,9}},"Edges"]]]

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

RecognizeGraph@g

Degenerate

GraphData[{"Triangulated",{8,9}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,9}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,9}},"Configuration"]

GraphData[{"Triangulated",{8,9}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,9}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,9}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,9}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,9}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,9}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,9}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,9}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,9}},"Hamiltonian"]

GraphData[{"Triangulated",{8,9}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,9}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,9}},"Planar"]

GraphData[{"Triangulated",{8,9}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,9}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,9}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,9}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,9}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,9}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #5

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Halin

GraphData[{"Triangulated",{8,9}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,9}},"LCFSignature"]

GraphData[{"Triangulated",{8,9}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Triangulated",{8,9}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,9}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,9}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Triangulated",{8,9}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{8,9}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{8,9}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,9}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,9}},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,9}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

3D Canonical construction from PolyhedralEmbedding

g=GraphData[{"Triangulated",{8,9}},"Graph","Planar"][[1]]

Show[g2=PolyhedralEmbedding[g,"Circular"->True,"Scale"->3],Boxed->True]//Quiet

With[
{faces=PlanarFaceList[Graph[EdgeList[g2]]],v=GraphEmbedding@g2},
Graphics3D[{Point[{0,0,0}],Opacity[.5],Sphere[],FaceForm[Green,Red],
poly=Polyhedron[1.2v,faces]}]]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->20000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/5,"PlanarFactor"->1/5,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]

{"Triangulated", {8, 10}}

Names

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

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,10}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,10}},"VertexList"],GraphData[{"Triangulated",{8,10}},"Edges"]]]

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

RecognizeGraph@g

GraphPlot@GraphData[{"Triangulated",{8,10}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

GraphData[{"Triangulated",{8,10}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,10}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{1,0.01,0}]

GraphPlot@RotateGraph[,Pi]

v=Join[CirclePoints[5],CirclePoints[{a,-Pi/2},3]];

Solve[v[[4,2]]==v[[8,2]],a]

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

RecognizeGraph@g

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,10}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,10}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,10}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,10}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,10}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

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

Circular construction

GraphData[{"Triangulated",{8,10}},"Hamiltonian"]

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

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,10}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,10}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,10}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,10}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,10}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,10}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,10}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,10}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

gs=UnlabelGraph/@{,}

Tutte embedding construction 3 #1

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

v={{-1,0},{1,0},{0,Sqrt[3]},{-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,2,3,1,4,5,6,2,8,5,7,1],e[4,7,3,8,6],{3,5},e[1,5,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphData[%,"Graph","All"]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

MinimalCrossing construction

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

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

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

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

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

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

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,10}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Select[gs,Max[OuterFace[#]]<=GraphData[{"Triangulated",{8,10}},"V"]&]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,10}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,10}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,10}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

MinimalLocalCrossing

GraphData[{"Triangulated",{8,10}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,10}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

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

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,10}}],"CrossingNumber"->cn,RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,10}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,10}}],"CrossingNumber"->(cn=XXX),RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,10}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Circulant

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

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

Circulant construction

GraphData[{"Triangulated",{8,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,10}},"ComplementGraph","Name"]

Line graph

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

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

RootGraph

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

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

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{8,10}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"Triangulated",{8,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Triangulated",{8,10}}],TimeConstraint->300,"Results"->All]//Timing}

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

GraphData[{"Triangulated",{8,10}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,10}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,10}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,10}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,10}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

3D Canonical construction from PolyhedralEmbedding

g=GraphData[{"Triangulated",{8,10}},"Graph","Planar"][[1]]

Show[g2=PolyhedralEmbedding[g,"Circular"->True,"Scale"->3],Boxed->True]//Quiet

With[
{faces=PlanarFaceList[Graph[EdgeList[g2]]],v=GraphEmbedding@g2},
Graphics3D[{Point[{0,0,0}],Opacity[.5],Sphere[],FaceForm[Green,Red],
poly=Polyhedron[1.2v,faces]}]]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->20000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/5,"PlanarFactor"->1/5,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 11}}

Names

GraphData[{"Triangulated",{8,11}},"StandardName"]

All

GraphData[{"Triangulated",{8,11}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Triangulated",{8,11}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,11}},"LCFSignature"]

GraphData[{"Triangulated",{8,11}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Triangulated",{8,11}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,11}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,11}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Triangulated",{8,11}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Triangulated",{8,11}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,11}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Triangulated",{8,11}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,11}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Triangulated",{8,11}},"Edges"]]

3D All

GraphData[{"Triangulated",{8,11}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{8,11}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{8,11}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,11}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,11}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,11}},"Polyhedron"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,11}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

3D Canonical construction from PolyhedralEmbedding

g=GraphData[{"Triangulated",{8,11}},"Graph","Planar"][[1]]

Show[g2=PolyhedralEmbedding[g,"Circular"->True,"Scale"->3],Boxed->True]//Quiet

With[
{faces=PlanarFaceList[Graph[EdgeList[g2]]],v=GraphEmbedding@g2},
Graphics3D[{Point[{0,0,0}],Opacity[.5],Sphere[],FaceForm[Green,Red],
poly=Polyhedron[1.2v,faces]}]]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->20000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/5,"PlanarFactor"->1/5,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 12}}

Names

GraphData[{"Triangulated",{8,12}},"StandardName"]

GraphData[{"Triangulated",{8,12}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{8,12}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,12}}]]

Default embedding

GraphPlot[Graph[GraphData[{"Triangulated",{8,12}},"VertexList"],GraphData[{"Triangulated",{8,12}},"Edges"]]]

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

RecognizeGraph@g

Degenerate

GraphData[{"Triangulated",{8,12}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,12}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,12}},"Configuration"]

GraphData[{"Triangulated",{8,12}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,12}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,12}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,12}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,12}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,12}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,12}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,12}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,12}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,12}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,12}},"Hamiltonian"]

GraphData[{"Triangulated",{8,12}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,12}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,12}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,12}},"Planar"]

GraphData[{"Triangulated",{8,12}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,12}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,12}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,12}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,12}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,12}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

gs=UnlabelGraph/@{,,,}

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

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

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,12}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,12}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

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

(cn=CrossingNumber[GraphData[{"Triangulated",{8,12}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,12}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,12}}],TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,12}}],TimeConstraint->86400])//AbsoluteTiming

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,12}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Select[gs,Max[OuterFace[#]]<=GraphData[{"Triangulated",{8,12}},"V"]&]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,12}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,12}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,12}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

MinimalLocalCrossing

GraphData[{"Triangulated",{8,12}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,12}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

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

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,12}}],"CrossingNumber"->cn,RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,12}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,12}}],"CrossingNumber"->(cn=XXX),RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,12}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Circulant

GraphData[{"Triangulated",{8,12}},"Circulant"]

GraphData[{"Triangulated",{8,12}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{8,12}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,12}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,12}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,12}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{8,12}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,12}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,12}}&]

RootGraph[GraphData[{"Triangulated",{8,12}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,12}},"Halin"]

GraphData[{"Triangulated",{8,12}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,12}},"Rigid"]

GraphData[{"Triangulated",{8,12}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,12}},"Flexible"]

GraphData[{"Triangulated",{8,12}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,12}},"LCF"]

GraphData[{"Triangulated",{8,12}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{8,12}},"LCFSignature"]

GraphData[{"Triangulated",{8,12}},"LCFNotations"]

GraphData[{"Triangulated",{8,12}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{8,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,12}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,12}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{8,12}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"Triangulated",{8,12}},"Matchstick"]

GraphData[{"Triangulated",{8,12}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{8,12}},"Edges"]]

3D All

GraphData[{"Triangulated",{8,12}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{8,12}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{8,12}},"Polyhedral"]

GraphData[{"Triangulated",{8,12}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,12}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,12}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,12}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,12}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

3D Canonical construction from PolyhedralEmbedding

g=GraphData[{"Triangulated",{8,12}},"Graph","Planar"][[1]]

Show[g2=PolyhedralEmbedding[g,"Circular"->True,"Scale"->3],Boxed->True]//Quiet

With[
{faces=PlanarFaceList[Graph[EdgeList[g2]]],v=GraphEmbedding@g2},
Graphics3D[{Point[{0,0,0}],Opacity[.5],Sphere[],FaceForm[Green,Red],
poly=Polyhedron[1.2v,faces]}]]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->20000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/5,"PlanarFactor"->1/5,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {8, 13}}  == "TriakisTetrahedralGraph"

Names

GraphData[{"Triangulated",{8,13}},"StandardName"]

GraphData[{"Triangulated",{8,13}},"StandardNames"]

{"Triangulated", {8, 14}}

Names

GraphData[{"Triangulated",{8,14}},"StandardName"]

GraphData[{"Triangulated",{8,14}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{8,14}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{8,14}}]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{8,14}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"Triangulated",{8,14}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{8,14}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{8,14}},"Configuration"]

GraphData[{"Triangulated",{8,14}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{8,14}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{8,14}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{1,0.01,0}]

GraphPlot@

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

RecognizeGraph@g

GraphData[%,"Graph","All"]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{8,14}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{8,14}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{8,14}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{8,14}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{8,14}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingQ[#],GraphSymmetryGroup[#]}&/@GraphData[{"Triangulated",{8,14}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"Triangulated",{8,14}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{8,14}},"Hamiltonian"]

GraphData[{"Triangulated",{8,14}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{8,14}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{8,14}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{8,14}},"Planar"]

GraphData[{"Triangulated",{8,14}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{8,14}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{8,14}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{8,14}}]])//Timing

Length[plemb]

GraphData[{"Triangulated",{8,14}},"PlanarEmbeddingCount"]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{8,14}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{8,14}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

Tutte embedding construction 3 #1

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

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

RecognizeGraph[g]

gs={}

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

Mean[v[[{5,6,4}]]]//FullSimplify

e[l__]:=Sequence@@Partition[{l},2,1]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{8,14}},{"RCN","CN"}]

GraphData[{"Triangulated",{8,14}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

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

(cn=CrossingNumber[GraphData[{"Triangulated",{8,14}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,14}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,14}}],TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"Triangulated",{8,14}}],TimeConstraint->86400])//AbsoluteTiming

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,14}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Select[gs,Max[OuterFace[#]]<=GraphData[{"Triangulated",{8,14}},"V"]&]

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

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,14}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,14}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,14}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

MinimalLocalCrossing

GraphData[{"Triangulated",{8,14}},"LocalCrossingNumber"]

GraphData[{"Triangulated",{8,14}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

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

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,14}}],"CrossingNumber"->cn,RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,14}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

(gs=Select[Table[MinimalCrossingGraph[GraphData[{"Triangulated",{8,14}}],"CrossingNumber"->(cn=XXX),RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Select[gs,GraphSymmetryGroup[#,AdditionalData->Join[Table[True,GraphData[{"Triangulated",{8,14}},"V"]],Table[False,cn]],SameTest->Equal]=!=TransformationGroup[{}]&]

Circulant

GraphData[{"Triangulated",{8,14}},"Circulant"]

GraphData[{"Triangulated",{8,14}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{8,14}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{8,14}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"Triangulated",{8,14}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"Triangulated",{8,14}},"ComplementGraph","Name"]

GraphData[compl,"Graph","All"]

gs=GraphComplement/@%

Select[%,!DegenerateGraphEmbeddingQ[#]&]

Line graph

GraphData[{"Triangulated",{8,14}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{8,14}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{8,14}}&]

RootGraph[GraphData[{"Triangulated",{8,14}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{8,14}},"Halin"]

GraphData[{"Triangulated",{8,14}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{8,14}},"Rigid"]

GraphData[{"Triangulated",{8,14}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{8,14}},"Flexible"]

GraphData[{"Triangulated",{8,14}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{8,14}},"LCF"]

GraphData[{"Triangulated",{8,14}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{8,14}},"LCFSignature"]

GraphData[{"Triangulated",{8,14}},"LCFNotations"]

GraphData[{"Triangulated",{8,14}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{8,14}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{8,14}}],Debug->True]//Timing

GraphData[{"Triangulated",{8,14}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{4,3}]

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{8,14}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Triangulated",{8,14}},"Matchstick"]

GraphData[{"Triangulated",{8,14}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{8,14}},"Edges"]]

3D All

GraphData[{"Triangulated",{8,14}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{8,14}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{8,14}},"Polyhedral"]

GraphData[{"Triangulated",{8,14}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{8,14}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{8,14}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{8,14}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{8,14}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->500,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

3D Canonical construction from PolyhedralEmbedding

g=GraphData[{"Triangulated",{8,14}},"Graph","Planar"][[1]]

Show[g2=PolyhedralEmbedding[g,"Circular"->True,"Scale"->3],Boxed->True]//Quiet

With[
{faces=PlanarFaceList[Graph[EdgeList[g2]]],v=GraphEmbedding@g2},
Graphics3D[{Point[{0,0,0}],Opacity[.5],Sphere[],FaceForm[Green,Red],
poly=Polyhedron[1.2v,faces]}]]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->100,MaxIterations->20000,PrecisionGoal->20,"ProgressInterval"->100,"TangentFactor"->1/5,"PlanarFactor"->1/5,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]

9

{"Triangulated", {9, 1}}

Names

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

GraphData[{"Triangulated",{9,1}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot@Graph[GraphData[{"Triangulated",{9,1}},"Edges"],GraphLayout->"RadialEmbedding",VertexLabels->None]

GraphPlot@Graph[GraphData[{"Triangulated",{9,1}},"Edges"],GraphLayout->"CircularEmbedding"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,1}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,1}},"Configuration"]

GraphData[{"Triangulated",{9,1}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,1}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,1}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,1}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,1}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,1}},"Hamiltonian"]

GraphData[{"Triangulated",{9,1}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,1}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,1}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,1}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,1}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,1}}]]

Tally[ReverseSort[Length/@faces]]

PlanarGraphEmbedding/@(IGraphM`IGLayoutTutte[GraphData[{"Triangulated",{9,1}}],"OuterFace"->#]&/@faces)

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot@

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,1}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,1}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,1}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,1}}&]

RootGraph[GraphData[{"Triangulated",{9,1}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"Triangulated",{9,1}},"Rigid"]

GraphData[{"Triangulated",{9,1}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,1}},"Flexible"]

GraphData[{"Triangulated",{9,1}},"Graph","Flexible"]//StyleGraphs

LCF

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

GraphData[{"Triangulated",{9,1}},"HamiltonianCycleCount"]

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

GraphData[{"Triangulated",{9,1}},"LCFNotations"]

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,1}},"Polyhedral"]

GraphData[{"Triangulated",{9,1}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,1}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,1}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,1}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,1}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"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]

{"Triangulated", {9, 2}}

Names

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

GraphData[{"Triangulated",{9,2}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,2}},"Edges"]

GraphPlot@RotateGraph[,-Pi/2+.05]

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

RecognizeGraph[g]

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,2}},"Configuration"]

GraphData[{"Triangulated",{9,2}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,2}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,2}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,2}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,2}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,2}},"Hamiltonian"]

GraphData[{"Triangulated",{9,2}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,2}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Triangulated",{9,2}},"Planar"]

GraphData[{"Triangulated",{9,2}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,2}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,2}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,2}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,2}}]])//Timing

Length[plemb]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,2}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,2}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,2}},"Circulant"]

GraphData[{"Triangulated",{9,2}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,2}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,2}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,2}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,2}}&]

RootGraph[GraphData[{"Triangulated",{9,2}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,2}},"Halin"]

GraphData[{"Triangulated",{9,2}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,2}},"Rigid"]

GraphData[{"Triangulated",{9,2}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,2}},"Flexible"]

GraphData[{"Triangulated",{9,2}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,2}},"LCF"]

GraphData[{"Triangulated",{9,2}},"HamiltonianCycleCount"]

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

GraphData[{"Triangulated",{9,2}},"LCFNotations"]

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{9,2}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Triangulated",{9,2}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,2}},"Polyhedral"]

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

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

3D Canonical

GraphData[{"Triangulated",{9,2}},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,2}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"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]

{"Triangulated", {9, 3}}

Names

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

GraphData[{"Triangulated",{9,3}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

GraphPlot@RotateGraph[,.2]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,3}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,3}},"Configuration"]

GraphData[{"Triangulated",{9,3}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,3}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,3}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,3}},"Hamiltonian"]

GraphData[{"Triangulated",{9,3}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,3}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,3}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,3}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,3}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,3}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,3}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,3}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,3}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,3}}&]

RootGraph[GraphData[{"Triangulated",{9,3}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"Triangulated",{9,3}},"Rigid"]

GraphData[{"Triangulated",{9,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,3}},"Flexible"]

GraphData[{"Triangulated",{9,3}},"Graph","Flexible"]//StyleGraphs

LCF

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

GraphData[{"Triangulated",{9,3}},"HamiltonianCycleCount"]

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

GraphData[{"Triangulated",{9,3}},"LCFNotations"]

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,3}},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,3}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,3}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,3}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,3}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 4}}

Names

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

GraphData[{"Triangulated",{9,4}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

GraphPlot@RotateGraph[,.1]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,4}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,4}},"Configuration"]

GraphData[{"Triangulated",{9,4}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,4}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,4}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,4}},"Hamiltonian"]

GraphData[{"Triangulated",{9,4}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,4}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,4}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,4}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,4}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,4}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,4}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,4}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,4}}&]

RootGraph[GraphData[{"Triangulated",{9,4}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"Triangulated",{9,4}},"Rigid"]

GraphData[{"Triangulated",{9,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,4}},"Flexible"]

GraphData[{"Triangulated",{9,4}},"Graph","Flexible"]//StyleGraphs

LCF

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

GraphData[{"Triangulated",{9,4}},"HamiltonianCycleCount"]

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

GraphData[{"Triangulated",{9,4}},"LCFNotations"]

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,4}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,4}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,4}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,4}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 5}}

Names

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

GraphData[{"Triangulated",{9,5}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

GraphPlot@

m=Mean[v[[{4,5}]]]

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

RecognizeGraph@g

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,5}},"Configuration"]

GraphData[{"Triangulated",{9,5}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,5}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,5}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,5}},"Hamiltonian"]

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,5}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,5}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,5}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,5}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

GraphData[{"Triangulated",{9,5}},"Circulant"]

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

Complement graph

compl=GraphData[{"Triangulated",{9,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,5}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,5}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,5}}&]

RootGraph[GraphData[{"Triangulated",{9,5}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

GraphData[{"Triangulated",{9,5}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,5}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,5}},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,5}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 6}}

Names

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

GraphData[{"Triangulated",{9,6}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot[GraphData[{"Triangulated",{9,6}},"Edges"],GraphLayout->"RadialEmbedding"]

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

GraphPlot@

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

RecognizeGraph[g]

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,6}},"Configuration"]

GraphData[{"Triangulated",{9,6}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,6}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,6}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,6}},"Hamiltonian"]

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,6}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,6}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,6}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,6}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,6}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,6}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,6}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,6}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,6}}&]

RootGraph[GraphData[{"Triangulated",{9,6}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,6}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,6}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,6}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,6}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 7}}

Names

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

GraphData[{"Triangulated",{9,7}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{9,7}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,7}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,7}},"Edges"]

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

RecognizeGraph[g]

GraphPlot@

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

RecognizeGraph[g]

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

Degenerate

GraphData[{"Triangulated",{9,7}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,7}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,7}},"Configuration"]

GraphData[{"Triangulated",{9,7}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,7}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,7}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,7}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,7}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,7}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,7}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,7}},"Hamiltonian"]

GraphData[{"Triangulated",{9,7}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,7}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

GraphData[{"Triangulated",{9,7}},"Planar"]

GraphData[{"Triangulated",{9,7}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,7}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,7}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,7}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,7}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,7}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,7}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,7}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,7}},"Circulant"]

GraphData[{"Triangulated",{9,7}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,7}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,7}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,7}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,7}}&]

RootGraph[GraphData[{"Triangulated",{9,7}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,7}},"Halin"]

GraphData[{"Triangulated",{9,7}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,7}},"Rigid"]

GraphData[{"Triangulated",{9,7}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,7}},"Flexible"]

GraphData[{"Triangulated",{9,7}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,7}},"LCF"]

GraphData[{"Triangulated",{9,7}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,7}},"LCFSignature"]

GraphData[{"Triangulated",{9,7}},"LCFNotations"]

GraphData[{"Triangulated",{9,7}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{9,7}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,7}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,7}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{9,7}},"Matchstick"]

GraphData[{"Triangulated",{9,7}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,7}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,7}},"Polyhedral"]

GraphData[{"Triangulated",{9,7}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,7}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,7}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,7}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,7}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 8}}

Names

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

GraphData[{"Triangulated",{9,8}},"StandardNames"]

Primary

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

All

GraphData[{"Triangulated",{9,8}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,8}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,8}},"Edges"]

GraphPlot@

m=Mean[v[[{6,7}]]]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,8}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,8}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,8}},"Configuration"]

GraphData[{"Triangulated",{9,8}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,8}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,8}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,8}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,8}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,8}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,8}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,8}},"Hamiltonian"]

GraphData[{"Triangulated",{9,8}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,8}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,8}},"Planar"]

GraphData[{"Triangulated",{9,8}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,8}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,8}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,8}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,8}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,8}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,8}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,8}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,8}},"Circulant"]

GraphData[{"Triangulated",{9,8}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,8}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,8}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,8}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,8}}&]

RootGraph[GraphData[{"Triangulated",{9,8}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,8}},"Halin"]

GraphData[{"Triangulated",{9,8}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,8}},"Rigid"]

GraphData[{"Triangulated",{9,8}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,8}},"Flexible"]

GraphData[{"Triangulated",{9,8}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,8}},"LCF"]

GraphData[{"Triangulated",{9,8}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,8}},"LCFSignature"]

GraphData[{"Triangulated",{9,8}},"LCFNotations"]

GraphData[{"Triangulated",{9,8}},"Graph","LCF"]//StyleGraphs

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

UnitDistance

GraphData[{"Triangulated",{9,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,8}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,8}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{9,8}},"Matchstick"]

GraphData[{"Triangulated",{9,8}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,8}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,8}},"Polyhedral"]

GraphData[{"Triangulated",{9,8}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,8}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,8}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,8}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,8}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 9}}

Names

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

GraphData[{"Triangulated",{9,9}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,9}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,9}},"Edges"]

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

RecognizeGraph[g]

GraphPlot@RotateGraph[,-Pi/2-.2]

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

RecognizeGraph@g

gs=UnlabelGraph/@{,,}

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,9}},"Configuration"]

Perspective

GraphData[{"Triangulated",{9,9}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,9}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,9}},"Hamiltonian"]

GraphData[{"Triangulated",{9,9}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,9}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,9}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,9}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,9}}]])//Timing

Length[plemb]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

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

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

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,9}},{"RCN","CN"}]

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

Circulant

GraphData[{"Triangulated",{9,9}},"Circulant"]

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

Complement graph

compl=GraphData[{"Triangulated",{9,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,9}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,9}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,9}}&]

RootGraph[GraphData[{"Triangulated",{9,9}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,9}},"Halin"]

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

Rigid

GraphData[{"Triangulated",{9,9}},"Rigid"]

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

Flexible

GraphData[{"Triangulated",{9,9}},"Flexible"]

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

LCF

GraphData[{"Triangulated",{9,9}},"LCF"]

GraphData[{"Triangulated",{9,9}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,9}},"LCFSignature"]

GraphData[{"Triangulated",{9,9}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"Triangulated",{9,9}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{9,9}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Triangulated",{9,9}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,9}},"Polyhedral"]

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

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

3D Canonical

GraphData[{"Triangulated",{9,9}},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,9}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 10}}

Names

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

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

RotateGraph[,.2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,10}},"Configuration"]

GraphData[{"Triangulated",{9,10}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,10}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,10}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,10}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,10}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,10}},"Hamiltonian"]

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,10}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,10}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,10}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,10}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,10}},"ComplementGraph","Name"]

Line graph

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

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

RootGraph

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

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

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,10}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,10}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,10}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,10}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 11}}

Names

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

GraphData[{"Triangulated",{9,11}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

GraphPlot@RotateGraph[,1.45+Pi/2]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,11}},"Configuration"]

GraphData[{"Triangulated",{9,11}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,11}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,11}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,11}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,11}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,11}},"Hamiltonian"]

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,11}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,11}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,11}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,11}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,11}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,11}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,11}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,11}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,11}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,11}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,11}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,11}}&]

RootGraph[GraphData[{"Triangulated",{9,11}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,11}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,11}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,11}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,11}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 12}}

Names

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

GraphData[{"Triangulated",{9,12}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

GraphPlot@RotateGraph[,3.1]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,12}},"Configuration"]

GraphData[{"Triangulated",{9,12}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,12}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,12}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,12}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,12}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,12}},"Hamiltonian"]

GraphData[{"Triangulated",{9,12}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,12}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

quad

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,12}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,12}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,12}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,12}}]])//Timing

Length[plemb]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,12}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,12}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,12}},"Circulant"]

GraphData[{"Triangulated",{9,12}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,12}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,12}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,12}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,12}}&]

RootGraph[GraphData[{"Triangulated",{9,12}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

GraphData[{"Triangulated",{9,12}},"LCF"]

GraphData[{"Triangulated",{9,12}},"HamiltonianCycleCount"]

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

GraphData[{"Triangulated",{9,12}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"Triangulated",{9,12}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Triangulated",{9,12}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,12}},"Polyhedral"]

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

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

3D Canonical

GraphData[{"Triangulated",{9,12}},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,12}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 13}}

Names

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

GraphData[{"Triangulated",{9,13}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

GraphPlot@RotateGraph[,3.15]

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

RecognizeGraph[g]

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

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,13}},"Configuration"]

GraphData[{"Triangulated",{9,13}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,13}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,13}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,13}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,13}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,13}},"Hamiltonian"]

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,13}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

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

quad

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,13}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,13}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,13}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,13}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,13}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,13}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,13}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,13}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,13}}&]

RootGraph[GraphData[{"Triangulated",{9,13}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,13}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,13}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,13}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,13}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 14}}

Names

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

GraphData[{"Triangulated",{9,14}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,14}},"Edges"]

GraphPlot@RotateGraph[,Pi]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Configuration

GraphData[{"Triangulated",{9,14}},"Configuration"]

GraphData[{"Triangulated",{9,14}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,14}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,14}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,14}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,14}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

GraphData[{"Triangulated",{9,14}},"Hamiltonian"]

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,14}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,14}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,14}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,14}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,14}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,14}}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Complement graph

compl=GraphData[{"Triangulated",{9,14}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,14}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,14}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,14}}&]

RootGraph[GraphData[{"Triangulated",{9,14}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Triangulated",{9,14}},"Polyhedral"]

GraphData[{"Triangulated",{9,14}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,14}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,14}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,14}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,14}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 15}}

Names

GraphData[{"Triangulated",{9,15}},"StandardName"]

GraphData[{"Triangulated",{9,15}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,15}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,15}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,15}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,15}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,15}},"Edges"]

GraphPlot@RotateGraph[,2Pi/3]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{-1/2,3/4},{1/2,3/4},{1/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,8,3,7,1,4,5,6,9,8],e[4,7,5,9,3,5],{2,6},{2,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,15}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,15}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,15}},"Configuration"]

GraphData[{"Triangulated",{9,15}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,15}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,15}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,15}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,15}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,15}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,15}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,15}},"Hamiltonian"]

GraphData[{"Triangulated",{9,15}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,15}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,15}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,15}},"Planar"]

GraphData[{"Triangulated",{9,15}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,15}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,15}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,15}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,15}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,15}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,15}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,15}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,15}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,15}},"Circulant"]

GraphData[{"Triangulated",{9,15}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,15}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,15}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,15}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,15}}&]

RootGraph[GraphData[{"Triangulated",{9,15}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,15}},"Halin"]

GraphData[{"Triangulated",{9,15}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,15}},"Rigid"]

GraphData[{"Triangulated",{9,15}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,15}},"Flexible"]

GraphData[{"Triangulated",{9,15}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,15}},"LCF"]

GraphData[{"Triangulated",{9,15}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,15}},"LCFSignature"]

GraphData[{"Triangulated",{9,15}},"LCFNotations"]

GraphData[{"Triangulated",{9,15}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,15}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,15}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,15}},"VertexList"],GraphData[{"Triangulated",{9,15}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,15}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,15}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,15}},"Matchstick"]

GraphData[{"Triangulated",{9,15}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,15}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,15}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,15}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,15}},"Polyhedral"]

GraphData[{"Triangulated",{9,15}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,15}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,15}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,15}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,15}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 16}}

Names

GraphData[{"Triangulated",{9,16}},"StandardName"]

GraphData[{"Triangulated",{9,16}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,16}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,16}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,16}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,16}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,16}},"Edges"]

GraphPlot@RotateGraph[,.3]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{-1/2,1/2},{1/2,1/2},{-1/4,3/4},{0,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1],e[4,5,3,7,8,9,3,6,2],e[5,6,8,5,7],{6,9},{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,16}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,16}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,16}},"Configuration"]

GraphData[{"Triangulated",{9,16}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,16}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,16}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,16}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,16}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,16}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,16}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,16}},"Hamiltonian"]

GraphData[{"Triangulated",{9,16}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,16}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,16}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,16}},"Planar"]

GraphData[{"Triangulated",{9,16}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,16}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,16}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,16}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,16}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,16}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,16}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,16}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,16}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,16}},"Circulant"]

GraphData[{"Triangulated",{9,16}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,16}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,16}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,16}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,16}}&]

RootGraph[GraphData[{"Triangulated",{9,16}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,16}},"Halin"]

GraphData[{"Triangulated",{9,16}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,16}},"Rigid"]

GraphData[{"Triangulated",{9,16}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,16}},"Flexible"]

GraphData[{"Triangulated",{9,16}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,16}},"LCF"]

GraphData[{"Triangulated",{9,16}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,16}},"LCFSignature"]

GraphData[{"Triangulated",{9,16}},"LCFNotations"]

GraphData[{"Triangulated",{9,16}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,16}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,16}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,16}},"VertexList"],GraphData[{"Triangulated",{9,16}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,16}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,16}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,16}},"Matchstick"]

GraphData[{"Triangulated",{9,16}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,16}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,16}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,16}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,16}},"Polyhedral"]

GraphData[{"Triangulated",{9,16}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,16}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,16}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,16}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,16}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 17}}

Names

GraphData[{"Triangulated",{9,17}},"StandardName"]

GraphData[{"Triangulated",{9,17}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,17}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,17}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,17}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,17}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,17}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,π/2]

v={{0,0},{1/2,0},{1,0},{1,1/2},{1,1},{1/2,1},{0,1},{0,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,8,1,9,3],e[2,4,6,8,2,9,6],e[8,9,4,8],e[7,9,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[,.1]

GraphPlot@

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"Triangulated",{9,17}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,17}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,17}},"Configuration"]

GraphData[{"Triangulated",{9,17}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,17}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,17}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,17}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,17}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,17}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,17}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,17}},"Hamiltonian"]

GraphData[{"Triangulated",{9,17}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,17}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,17}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,17}},"Planar"]

GraphData[{"Triangulated",{9,17}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,17}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,17}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,17}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,17}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,17}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,17}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{0,1/4},{1/4,1/4},{-1/4,5/8},{0,5/8},{1/4,5/8}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,8,1,7,8,9,2],e[4,8,6],e[1,5,2],e[7,3,9],{8,3},{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,17}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,17}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,17}},"Circulant"]

GraphData[{"Triangulated",{9,17}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,17}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,17}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,17}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,17}}&]

RootGraph[GraphData[{"Triangulated",{9,17}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,17}},"Halin"]

GraphData[{"Triangulated",{9,17}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,17}},"Rigid"]

GraphData[{"Triangulated",{9,17}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,17}},"Flexible"]

GraphData[{"Triangulated",{9,17}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,17}},"LCF"]

GraphData[{"Triangulated",{9,17}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,17}},"LCFSignature"]

GraphData[{"Triangulated",{9,17}},"LCFNotations"]

GraphData[{"Triangulated",{9,17}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,17}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,17}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,17}},"VertexList"],GraphData[{"Triangulated",{9,17}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,17}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,17}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,17}},"Matchstick"]

GraphData[{"Triangulated",{9,17}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,17}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,17}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,17}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,17}},"Polyhedral"]

GraphData[{"Triangulated",{9,17}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,17}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,17}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,17}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,17}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 18}}

Names

GraphData[{"Triangulated",{9,18}},"StandardName"]

GraphData[{"Triangulated",{9,18}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,18}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,18}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,18}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,18}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Triangulated",{9,18}},"Edges"]],Pi/2]

v=Join[CirclePoints[{1,Pi/2},8],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,9,5,2,8,5,7,9,3,5],e[4,9,6],e[2,9,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"Triangulated",{9,18}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,18}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,18}},"Configuration"]

GraphData[{"Triangulated",{9,18}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,18}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,18}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,18}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,18}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,18}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,18}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,18}},"Hamiltonian"]

GraphData[{"Triangulated",{9,18}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,18}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,18}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,18}},"Planar"]

GraphData[{"Triangulated",{9,18}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,18}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,18}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,18}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,18}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,18}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,18}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot@RotateGraph[,-2Pi/3]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/2,1/2},{-1/4,1/2},{1/4,1/2},{1/2,1/2},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,9,1,5,6,4,7,8,2],e[4,9,3],e[5,9,8],e[6,9,7],e[5,4,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/2,1/2},{0,1/2},{1/2,1/2},{-1/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,1,5,3,7,2],e[4,6,3,8,6,9,7,6,5,8],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,18}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,18}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,18}},"Circulant"]

GraphData[{"Triangulated",{9,18}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,18}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,18}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,18}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,18}}&]

RootGraph[GraphData[{"Triangulated",{9,18}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,18}},"Halin"]

GraphData[{"Triangulated",{9,18}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,18}},"Rigid"]

GraphData[{"Triangulated",{9,18}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,18}},"Flexible"]

GraphData[{"Triangulated",{9,18}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,18}},"LCF"]

GraphData[{"Triangulated",{9,18}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,18}},"LCFSignature"]

GraphData[{"Triangulated",{9,18}},"LCFNotations"]

GraphData[{"Triangulated",{9,18}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,18}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,18}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,18}},"VertexList"],GraphData[{"Triangulated",{9,18}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,18}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,18}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,18}},"Matchstick"]

GraphData[{"Triangulated",{9,18}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,18}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,18}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,18}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,18}},"Polyhedral"]

GraphData[{"Triangulated",{9,18}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,18}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,18}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,18}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,18}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 19}}

Names

GraphData[{"Triangulated",{9,19}},"StandardName"]

GraphData[{"Triangulated",{9,19}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,19}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,19}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,19}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,19}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,19}},"Edges"]

v=Join[CirclePoints[{1,Pi/2},8],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,9,5,2,8,5,7,9,3,5],{2,4},{6,8},e[2,9,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[,-Pi/2]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"Triangulated",{9,19}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,19}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,19}},"Configuration"]

GraphData[{"Triangulated",{9,19}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,19}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,19}},"NotationRules","HoneycombToroidal"]

IGraph

GraphData[{"Triangulated",{9,19}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,19}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,19}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,19}},"Hamiltonian"]

GraphData[{"Triangulated",{9,19}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,19}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,19}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,19}},"Planar"]

GraphData[{"Triangulated",{9,19}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,19}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,19}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,19}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,19}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,19}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,19}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,-2Pi/3]

v=Delete[Join[CirclePoints[{1,Pi/2},3],CirclePoints[{1/3,-Pi/2},3],CirclePoints[{1/6,-Pi/2},3],{{0,0}}],{7}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,9,4,2,6,1,5,3,4],e[2,9,7,5],e[3,9,8,6],e[2,8,1],e[1,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{-1/2,1/2},{1/2,1/2},{0,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,7,1,2,3,1,4,5,6,2,8,6],e[1,9,2,5,1],e[5,9,3],e[7,9,8],e[7,5,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,19}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,19}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,19}},"Circulant"]

GraphData[{"Triangulated",{9,19}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,19}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,19}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,19}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,19}}&]

RootGraph[GraphData[{"Triangulated",{9,19}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,19}},"Halin"]

GraphData[{"Triangulated",{9,19}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,19}},"Rigid"]

GraphData[{"Triangulated",{9,19}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,19}},"Flexible"]

GraphData[{"Triangulated",{9,19}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,19}},"LCF"]

GraphData[{"Triangulated",{9,19}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,19}},"LCFSignature"]

GraphData[{"Triangulated",{9,19}},"LCFNotations"]

GraphData[{"Triangulated",{9,19}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,19}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,19}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,19}},"VertexList"],GraphData[{"Triangulated",{9,19}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,19}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,19}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,19}},"Matchstick"]

GraphData[{"Triangulated",{9,19}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,19}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,19}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,19}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,19}},"Polyhedral"]

GraphData[{"Triangulated",{9,19}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,19}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,19}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,19}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,19}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 20}}

Names

GraphData[{"Triangulated",{9,20}},"StandardName"]

GraphData[{"Triangulated",{9,20}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,20}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,20}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,20}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,20}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,20}},"Edges"]

GraphPlot@RotateGraph[,-1.4]

v=Join[{{-1,0} ,{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/4},{1/2,1/4},3],{{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,6,2,7,6,5,4,1,9,2,8,5,1,8,9,3],{6,8},{4,8},{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,20}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,20}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,20}},"Configuration"]

GraphData[{"Triangulated",{9,20}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,20}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,20}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,20}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,20}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,20}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,20}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,20}},"Hamiltonian"]

GraphData[{"Triangulated",{9,20}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,20}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,20}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Triangulated",{9,20}},"Planar"]

GraphData[{"Triangulated",{9,20}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,20}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,20}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,20}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,20}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,20}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,20}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,20}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,20}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,20}},"Circulant"]

GraphData[{"Triangulated",{9,20}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,20}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,20}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,20}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,20}}&]

RootGraph[GraphData[{"Triangulated",{9,20}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,20}},"Halin"]

GraphData[{"Triangulated",{9,20}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,20}},"Rigid"]

GraphData[{"Triangulated",{9,20}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,20}},"Flexible"]

GraphData[{"Triangulated",{9,20}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,20}},"LCF"]

GraphData[{"Triangulated",{9,20}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,20}},"LCFSignature"]

GraphData[{"Triangulated",{9,20}},"LCFNotations"]

GraphData[{"Triangulated",{9,20}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,20}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,20}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,20}},"VertexList"],GraphData[{"Triangulated",{9,20}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,20}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,20}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,20}},"Matchstick"]

GraphData[{"Triangulated",{9,20}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,20}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,20}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,20}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,20}},"Polyhedral"]

GraphData[{"Triangulated",{9,20}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,20}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,20}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,20}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,20}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 21}}

Names

GraphData[{"Triangulated",{9,21}},"StandardName"]

GraphData[{"Triangulated",{9,21}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,21}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,21}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,21}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,21}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,21}},"Edges"]

v={{0,0},{1,0},{1,1/2},{1,1},{1/2,1},{0,1},{0,1/2},{1/3,1/4},{2/3,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[2,3,4,5,6,7,1,9,2,8,1],e[8,9,3,5,7,8,5,9],{6,8},{4,9},{7,9},{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[,Pi+2Pi/3]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{0,5/4},{1/8,3/4},{3/8,1/2}};
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,2,3,1,5,2,6,5,4,1,7,2,9,8,7,4],e[3,7,5,9,7],{5,8},{6,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"Triangulated",{9,21}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,21}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,21}},"Configuration"]

GraphData[{"Triangulated",{9,21}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,21}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,21}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,21}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,21}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,21}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,21}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,21}},"Hamiltonian"]

GraphData[{"Triangulated",{9,21}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,21}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,21}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,21}},"Planar"]

GraphData[{"Triangulated",{9,21}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,21}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,21}}]],10]

PlanarGraphEmbeddings

GraphData[{"Triangulated",{9,21}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,21}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,21}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,21}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,21}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,21}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,21}},"Circulant"]

GraphData[{"Triangulated",{9,21}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,21}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,21}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,21}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,21}}&]

RootGraph[GraphData[{"Triangulated",{9,21}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,21}},"Halin"]

GraphData[{"Triangulated",{9,21}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,21}},"Rigid"]

GraphData[{"Triangulated",{9,21}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,21}},"Flexible"]

GraphData[{"Triangulated",{9,21}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,21}},"LCF"]

GraphData[{"Triangulated",{9,21}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,21}},"LCFSignature"]

GraphData[{"Triangulated",{9,21}},"LCFNotations"]

GraphData[{"Triangulated",{9,21}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,21}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,21}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,21}},"VertexList"],GraphData[{"Triangulated",{9,21}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,21}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,21}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,21}},"Matchstick"]

GraphData[{"Triangulated",{9,21}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,21}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,21}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,21}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,21}},"Polyhedral"]

GraphData[{"Triangulated",{9,21}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,21}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,21}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,21}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,21}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 22}}

Names

GraphData[{"Triangulated",{9,22}},"StandardName"]

GraphData[{"Triangulated",{9,22}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,22}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,22}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,22}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,22}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,22}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"Triangulated",{9,22}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,22}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,22}},"Configuration"]

GraphData[{"Triangulated",{9,22}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,22}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,22}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,22}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,22}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,22}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,22}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,22}},"Hamiltonian"]

GraphData[{"Triangulated",{9,22}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,22}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,22}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,22}},"Planar"]

GraphData[{"Triangulated",{9,22}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,22}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,22}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,22}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,22}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,22}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v[[5,2]]

v=Join[{{-1,0},{1,0},{-1/4,((Sqrt[3])/5)},{1/4,((Sqrt[3])/5)}},Rest@Subdivide[{0,0},{0,Sqrt[3]},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,5,2,4,5,3,1,6,2,7,1,8,2],e[3,6,4],e[5,6,7,8,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[CirclePoints[3],CirclePoints[{1/3,-Pi/2},3]];
v=Join[v,Rest@Subdivide[v[[4]],{0,0},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,3,4,1,9,6],e[3,9,5],e[3,7,1,8,3],e[4,7,8,9,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,22}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,22}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,22}},"Circulant"]

GraphData[{"Triangulated",{9,22}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,22}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,22}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,22}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,22}}&]

RootGraph[GraphData[{"Triangulated",{9,22}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,22}},"Halin"]

GraphData[{"Triangulated",{9,22}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,22}},"Rigid"]

GraphData[{"Triangulated",{9,22}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,22}},"Flexible"]

GraphData[{"Triangulated",{9,22}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,22}},"LCF"]

GraphData[{"Triangulated",{9,22}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,22}},"LCFSignature"]

GraphData[{"Triangulated",{9,22}},"LCFNotations"]

GraphData[{"Triangulated",{9,22}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,22}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,22}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,22}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,22}},"VertexList"],GraphData[{"Triangulated",{9,22}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,22}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,22}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,22}},"Matchstick"]

GraphData[{"Triangulated",{9,22}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,22}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,22}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,22}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,22}},"Polyhedral"]

GraphData[{"Triangulated",{9,22}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,22}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,22}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,22}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,22}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 23}}

Names

GraphData[{"Triangulated",{9,23}},"StandardName"]

GraphData[{"Triangulated",{9,23}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,23}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,23}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,23}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,23}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,23}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"Triangulated",{9,23}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,23}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,23}},"Configuration"]

GraphData[{"Triangulated",{9,23}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,23}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,23}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,23}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,23}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,23}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,23}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,23}},"Hamiltonian"]

GraphData[{"Triangulated",{9,23}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,23}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,23}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,23}},"Planar"]

GraphData[{"Triangulated",{9,23}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,23}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,23}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,23}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,23}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,23}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,1/2},{0,1/2},{1/4,1/2},{0,1},{0,3/2-1/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,5,1,8,2,9,1],e[4,6,8,9,3],e[5,8,7],e[1,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,3/4},{0,3/4},{1/4,3/4},{0,5/4},{0,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,9,1,5,6,7,2,8,1],e[4,9,6,8,3],e[5,8,7],e[1,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,23}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,23}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,23}},"Circulant"]

GraphData[{"Triangulated",{9,23}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,23}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,23}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,23}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,23}}&]

RootGraph[GraphData[{"Triangulated",{9,23}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,23}},"Halin"]

GraphData[{"Triangulated",{9,23}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,23}},"Rigid"]

GraphData[{"Triangulated",{9,23}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,23}},"Flexible"]

GraphData[{"Triangulated",{9,23}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,23}},"LCF"]

GraphData[{"Triangulated",{9,23}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,23}},"LCFSignature"]

GraphData[{"Triangulated",{9,23}},"LCFNotations"]

GraphData[{"Triangulated",{9,23}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,23}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,23}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,23}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,23}},"VertexList"],GraphData[{"Triangulated",{9,23}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,23}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,23}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,23}},"Matchstick"]

GraphData[{"Triangulated",{9,23}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,23}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,23}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,23}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,23}},"Polyhedral"]

GraphData[{"Triangulated",{9,23}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,23}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,23}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,23}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,23}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 24}}

Names

GraphData[{"Triangulated",{9,24}},"StandardName"]

GraphData[{"Triangulated",{9,24}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,24}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,24}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,24}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,24}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,24}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

v=CirclePoints[9];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,9},1,4,9,6,1,5,9,7,1,3],e[8,1],e[9,2],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@

v=Join[{{0,Sqrt[3]},{0,1/4}},Most@Subdivide[{-1,0},{0,1},4],Subdivide[{1,0},{0,1},4][[{1,3,4}]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,3,7,1,2,3,4,5,6,2,7,8,9,1],e[9,2,8],e[1,4,2,5,1,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,24}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,24}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,24}},"Configuration"]

GraphData[{"Triangulated",{9,24}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,24}},"Graph","Perspective"]//StyleGraphs

HoneycombToroidal construction

GraphData[{"Triangulated",{9,24}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,24}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,24}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,24}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,24}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,24}},"Hamiltonian"]

GraphData[{"Triangulated",{9,24}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,24}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,24}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,24}},"Planar"]

GraphData[{"Triangulated",{9,24}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,24}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,24}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,24}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,24}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,24}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0}},Rest@Subdivide[{0,0},{0,Sqrt[3]},7]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,3,2,4,1,5,2,6,1,7,2,8,1],e[{3,9}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,24}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,24}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,24}},"Circulant"]

GraphData[{"Triangulated",{9,24}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,24}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,24}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,24}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,24}}&]

RootGraph[GraphData[{"Triangulated",{9,24}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,24}},"Halin"]

GraphData[{"Triangulated",{9,24}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,24}},"Rigid"]

GraphData[{"Triangulated",{9,24}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,24}},"Flexible"]

GraphData[{"Triangulated",{9,24}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,24}},"LCF"]

GraphData[{"Triangulated",{9,24}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,24}},"LCFSignature"]

GraphData[{"Triangulated",{9,24}},"LCFNotations"]

GraphData[{"Triangulated",{9,24}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,24}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,24}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,24}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,24}},"VertexList"],GraphData[{"Triangulated",{9,24}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,24}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,24}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,24}},"Matchstick"]

GraphData[{"Triangulated",{9,24}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,24}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,24}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,24}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,24}},"Polyhedral"]

GraphData[{"Triangulated",{9,24}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,24}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,24}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,24}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,24}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 25}} == {"Dipyramid", 7}

Names

GraphData[{"Triangulated",{9,25}},"StandardName"]

GraphData[{"Triangulated",{9,25}},"StandardNames"]

{"Triangulated", {9, 26}}

Names

GraphData[{"Triangulated",{9,26}},"StandardName"]

GraphData[{"Triangulated",{9,26}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,26}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,26}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,26}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,26}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,26}},"Edges"]

RotateGraph[GraphicsToGraph@,-Pi/2]

v=Join[CirclePoints[7],{0,#}&/@{-1/2,0}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,9,7,8,1],e[6,8,2,9,6],e[5,3,9,5],e[5,8,3],{4,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,}

Degenerate

GraphData[{"Triangulated",{9,26}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,26}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,26}},"Configuration"]

GraphData[{"Triangulated",{9,26}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,26}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,26}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,26}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,26}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,26}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,26}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,26}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,26}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,26}},"Hamiltonian"]

GraphData[{"Triangulated",{9,26}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,26}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,26}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Quiet//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,26}},"Planar"]

GraphData[{"Triangulated",{9,26}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,26}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,26}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,26}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,26}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,26}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-2/3,1/4},{0,1/4},{2/3,1/4},{-1/4,3/4},{1/4,3/4}}];
AppendTo[v,Mean[v[[{5,7,8}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[2,5,1,2,3,1,4,5,6,2],e[4,3,6,8,3,7,4],e[5,8,7,5,9,8],{7,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/4,3/4},{1/4,3/4},3],{0,#}&/@{1/4,1/2}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,8,2,9,1,4,3,7,2],e[8,9,5,3,6,9,7,6,5,4,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{{0,5/4},{0,1/4}},Subdivide[{-1/3,1/2},{1/3,1/2},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,4,1,6,7,8,9,2],e[3,4,6,5,9,4,7,5,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[CirclePoints[3],c=CirclePoints[1/2,3]];
v=Join[v,Mean/@Partition[c,2,1,1]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,9,3,6,9,4,1],e[6,8,5,7,4],{2,5},e[2,8,9,7,8],{2,7},e[6,2,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,26}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,26}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,26}},"Circulant"]

GraphData[{"Triangulated",{9,26}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"Triangulated",{9,26}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"Triangulated",{9,26}}]])//Timing

Complement graph

compl=GraphData[{"Triangulated",{9,26}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,26}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,26}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,26}}&]

RootGraph[GraphData[{"Triangulated",{9,26}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,26}},"Halin"]

GraphData[{"Triangulated",{9,26}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,26}},"Rigid"]

GraphData[{"Triangulated",{9,26}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,26}},"Flexible"]

GraphData[{"Triangulated",{9,26}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,26}},"LCF"]

GraphData[{"Triangulated",{9,26}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,26}},"LCFSignature"]

GraphData[{"Triangulated",{9,26}},"LCFNotations"]

GraphData[{"Triangulated",{9,26}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,26}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,26}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,26}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,26}},"VertexList"],GraphData[{"Triangulated",{9,26}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,26}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,26}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,26}},"Matchstick"]

GraphData[{"Triangulated",{9,26}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,26}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,26}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,26}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,26}},"Polyhedral"]

GraphData[{"Triangulated",{9,26}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,26}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,26}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,26}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,26}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 27}}

Names

GraphData[{"Triangulated",{9,27}},"StandardName"]

GraphData[{"Triangulated",{9,27}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,27}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,27}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,27}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,27}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,27}},"Edges"]

GraphPlot@RotateGraph[,.2]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/2},{1/2,1/2},4]];
AppendTo[v,v[[5]]+1/3Normalize[v[[3]]-v[[5]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,1,2,3,1,4,5,6,7,8,2,7,3,6,2,5,9,3,4,9,6],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,27}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,27}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,27}},"Configuration"]

GraphData[{"Triangulated",{9,27}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,27}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,27}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,27}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,27}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,27}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,27}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,27}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,27}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,27}},"Hamiltonian"]

GraphData[{"Triangulated",{9,27}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,27}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,27}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,27}},"Planar"]

GraphData[{"Triangulated",{9,27}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,27}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,27}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,27}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,27}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,27}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,27}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,27}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,27}},"Circulant"]

GraphData[{"Triangulated",{9,27}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,27}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,27}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,27}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,27}}&]

RootGraph[GraphData[{"Triangulated",{9,27}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,27}},"Halin"]

GraphData[{"Triangulated",{9,27}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,27}},"Rigid"]

GraphData[{"Triangulated",{9,27}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,27}},"Flexible"]

GraphData[{"Triangulated",{9,27}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,27}},"LCF"]

GraphData[{"Triangulated",{9,27}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,27}},"LCFSignature"]

GraphData[{"Triangulated",{9,27}},"LCFNotations"]

GraphData[{"Triangulated",{9,27}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,27}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,27}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,27}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,27}},"VertexList"],GraphData[{"Triangulated",{9,27}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,27}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,27}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,27}},"Matchstick"]

GraphData[{"Triangulated",{9,27}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,27}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,27}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,27}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,27}},"Polyhedral"]

GraphData[{"Triangulated",{9,27}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,27}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,27}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,27}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,27}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 28}}

Names

GraphData[{"Triangulated",{9,28}},"StandardName"]

GraphData[{"Triangulated",{9,28}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,28}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,28}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,28}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,28}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,28}},"Edges"]

GraphPlot@RotateGraph[,Pi/2]

v=Join[{{-1,0},{1,0}},Subdivide[{0,1/4},{0,Sqrt[3]},4],{{-1/2,1/4},{1/2,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,7,1,3,2,9,3,8,1,5,2,6,1],e[8,5,9],e[3,4,5,6,7],e[8,4,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"Triangulated",{9,28}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,28}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,28}},"Configuration"]

GraphData[{"Triangulated",{9,28}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,28}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,28}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,28}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,28}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,28}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,28}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,28}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,28}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,28}},"Hamiltonian"]

GraphData[{"Triangulated",{9,28}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,28}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,28}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,28}},"Planar"]

GraphData[{"Triangulated",{9,28}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,28}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,28}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,28}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,28}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,28}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0}},Subdivide[{0,1/4},{0,Sqrt[3]},4]];
v=Join[v,v[[4]]+#{1/6,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,7,1,3,2,9,4,8,1,5,2,6,1],e[3,8,5,9,3,4,5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{0,1/4},{0,1},3]];
v=Join[v,v[[7]]+#{1/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,2,9,3,8,1],e[4,5,6,7,3],e[8,7,9,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,28}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,28}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,28}},"Circulant"]

GraphData[{"Triangulated",{9,28}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,28}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,28}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,28}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,28}}&]

RootGraph[GraphData[{"Triangulated",{9,28}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,28}},"Halin"]

GraphData[{"Triangulated",{9,28}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,28}},"Rigid"]

GraphData[{"Triangulated",{9,28}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,28}},"Flexible"]

GraphData[{"Triangulated",{9,28}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,28}},"LCF"]

GraphData[{"Triangulated",{9,28}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,28}},"LCFSignature"]

GraphData[{"Triangulated",{9,28}},"LCFNotations"]

GraphData[{"Triangulated",{9,28}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,28}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,28}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,28}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,28}},"VertexList"],GraphData[{"Triangulated",{9,28}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,28}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,28}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,28}},"Matchstick"]

GraphData[{"Triangulated",{9,28}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,28}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,28}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,28}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,28}},"Polyhedral"]

GraphData[{"Triangulated",{9,28}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,28}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,28}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,28}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,28}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 29}}

Names

GraphData[{"Triangulated",{9,29}},"StandardName"]

GraphData[{"Triangulated",{9,29}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,29}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,29}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,29}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,29}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,29}},"Edges"]

v={#2,#}&@@@{{0,0},{1/2,0},{1,0},{1,1/2},{1,1},{1/2,1},{0,1},{1/4,1/2},{1/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7,4,1],e[6,8,2,9,6,4,2],e[3,9,5],e[8,9,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"Triangulated",{9,29}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,29}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,29}},"Configuration"]

GraphData[{"Triangulated",{9,29}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,29}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,29}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,29}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,29}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,29}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,29}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,29}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,29}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,29}},"Hamiltonian"]

GraphData[{"Triangulated",{9,29}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,29}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,29}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,29}},"Planar"]

GraphData[{"Triangulated",{9,29}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,29}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,29}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,29}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,29}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,29}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=4/5Join[{{-5/4,0},{5/4,0},{0,5/4Sqrt[3]},{0,1/4},{0,5/4},{-1/4,3/4},{1/4,3/4},{-1/2,3/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,9,3,8,1],e[8,6,5,7,9],e[6,4,7],e[4,5,3],e[8,5,9,4,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{-1/6,3/4},{0,3/4},{1/6,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,5,1],e[4,3,6,8,4,7,3,9,6],e[7,8,9],e[5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,29}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,29}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,29}},"Circulant"]

GraphData[{"Triangulated",{9,29}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,29}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,29}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,29}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,29}}&]

RootGraph[GraphData[{"Triangulated",{9,29}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,29}},"Halin"]

GraphData[{"Triangulated",{9,29}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,29}},"Rigid"]

GraphData[{"Triangulated",{9,29}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,29}},"Flexible"]

GraphData[{"Triangulated",{9,29}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,29}},"LCF"]

GraphData[{"Triangulated",{9,29}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,29}},"LCFSignature"]

GraphData[{"Triangulated",{9,29}},"LCFNotations"]

GraphData[{"Triangulated",{9,29}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,29}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,29}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,29}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,29}},"VertexList"],GraphData[{"Triangulated",{9,29}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,29}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,29}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,29}},"Matchstick"]

GraphData[{"Triangulated",{9,29}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,29}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,29}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,29}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,29}},"Polyhedral"]

GraphData[{"Triangulated",{9,29}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,29}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,29}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,29}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,29}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 30}}

Names

GraphData[{"Triangulated",{9,30}},"StandardName"]

GraphData[{"Triangulated",{9,30}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,30}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,30}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,30}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,30}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,30}},"Edges"]

v=Join[CirclePoints[{1,Pi/2},8],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,9,5,8,9,2,5],e[4,6,1,4],e[3,1,7],{2,4},{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"Triangulated",{9,30}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,30}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,30}},"Configuration"]

GraphData[{"Triangulated",{9,30}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,30}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,30}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,30}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,30}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,30}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,30}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,30}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,30}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,30}},"Hamiltonian"]

GraphData[{"Triangulated",{9,30}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,30}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,30}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,30}},"Planar"]

GraphData[{"Triangulated",{9,30}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,30}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,30}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,30}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,30}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,30}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}}];
v=Join[v,CirclePoints[Mean[v[[{1,2,3}]]],{1/3,Pi/4},4]];
v=Join[v,Mean[v[[#]]]&/@{{4,5},{6,7}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,9,2,4,3,5,1,6,9,7,4,8,5,6],{2,7},e[9,8,3],e[5,9,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,30}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,30}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,30}},"Circulant"]

GraphData[{"Triangulated",{9,30}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,30}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,30}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,30}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,30}}&]

RootGraph[GraphData[{"Triangulated",{9,30}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,30}},"Halin"]

GraphData[{"Triangulated",{9,30}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,30}},"Rigid"]

GraphData[{"Triangulated",{9,30}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,30}},"Flexible"]

GraphData[{"Triangulated",{9,30}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,30}},"LCF"]

GraphData[{"Triangulated",{9,30}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,30}},"LCFSignature"]

GraphData[{"Triangulated",{9,30}},"LCFNotations"]

GraphData[{"Triangulated",{9,30}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,30}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,30}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,30}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,30}},"VertexList"],GraphData[{"Triangulated",{9,30}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,30}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,30}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,30}},"Matchstick"]

GraphData[{"Triangulated",{9,30}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,30}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,30}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,30}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,30}},"Polyhedral"]

GraphData[{"Triangulated",{9,30}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,30}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,30}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,30}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,30}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 31}}

Names

GraphData[{"Triangulated",{9,31}},"StandardName"]

GraphData[{"Triangulated",{9,31}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,31}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,31}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,31}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,31}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,31}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

v=Join[UnitCirclePoints[7],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,9,3],e[7,8,4,9,2,8,6,9],e[6,4,2],e[5,8,1],e[7,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[,-Pi/2]

v=Join[{{-1,0},{1,0}},Rest@Subdivide[{0,0},{0,Sqrt[3]},5]];
v=Join[v,{v[[4]]-{1/3,0}}];
AppendTo[v,Mean[v[[{4,5,8}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,7,1,3,2,4,1,8,6],e[3,4,5,6,7],e[8,5,9,4,8,9],{7,8},{2,6},{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@

gs=UnlabelGraph/@{,,,,,,,,,,}

Degenerate

GraphData[{"Triangulated",{9,31}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,31}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,31}},"Configuration"]

GraphData[{"Triangulated",{9,31}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,31}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,31}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,31}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,31}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,31}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,31}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,31}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,31}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,31}},"Hamiltonian"]

GraphData[{"Triangulated",{9,31}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,31}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,31}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,31}},"Planar"]

GraphData[{"Triangulated",{9,31}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,31}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,31}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,31}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,31}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,31}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,31}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,31}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,31}},"Circulant"]

GraphData[{"Triangulated",{9,31}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,31}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,31}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,31}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,31}}&]

RootGraph[GraphData[{"Triangulated",{9,31}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,31}},"Halin"]

GraphData[{"Triangulated",{9,31}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,31}},"Rigid"]

GraphData[{"Triangulated",{9,31}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,31}},"Flexible"]

GraphData[{"Triangulated",{9,31}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,31}},"LCF"]

GraphData[{"Triangulated",{9,31}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,31}},"LCFSignature"]

GraphData[{"Triangulated",{9,31}},"LCFNotations"]

GraphData[{"Triangulated",{9,31}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,31}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,31}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,31}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,31}},"VertexList"],GraphData[{"Triangulated",{9,31}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,31}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,31}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,31}},"Matchstick"]

GraphData[{"Triangulated",{9,31}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,31}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,31}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,31}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,31}},"Polyhedral"]

GraphData[{"Triangulated",{9,31}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,31}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,31}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,31}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,31}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 32}}

Names

GraphData[{"Triangulated",{9,32}},"StandardName"]

GraphData[{"Triangulated",{9,32}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,32}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,32}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,32}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,32}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Triangulated",{9,32}},"Edges"],-Pi/2]

v=Join[CirclePoints[5],{{-1/5,-1/2},{1/5,-1/2},{-1/5,0},{1/5,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,4,5,1,9,3,8,5,9,2,8,4,9,7,5,6,1,7],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"Triangulated",{9,32}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,32}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,32}},"Configuration"]

GraphData[{"Triangulated",{9,32}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,32}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,32}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,32}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,32}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,32}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,32}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,32}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,32}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,32}},"Hamiltonian"]

GraphData[{"Triangulated",{9,32}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,32}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,32}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,32}},"Planar"]

GraphData[{"Triangulated",{9,32}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,32}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,32}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,32}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,32}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,32}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,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,2,3,1,4,2,5,1,9,2],e[4,5,8,9,6,5,7,9,3],e[6,7,8],{1,6},{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,32}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,32}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,32}},"Circulant"]

GraphData[{"Triangulated",{9,32}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,32}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,32}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,32}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,32}}&]

RootGraph[GraphData[{"Triangulated",{9,32}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,32}},"Halin"]

GraphData[{"Triangulated",{9,32}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,32}},"Rigid"]

GraphData[{"Triangulated",{9,32}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,32}},"Flexible"]

GraphData[{"Triangulated",{9,32}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,32}},"LCF"]

GraphData[{"Triangulated",{9,32}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,32}},"LCFSignature"]

GraphData[{"Triangulated",{9,32}},"LCFNotations"]

GraphData[{"Triangulated",{9,32}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,32}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,32}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,32}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,32}},"VertexList"],GraphData[{"Triangulated",{9,32}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,32}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,32}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,32}},"Matchstick"]

GraphData[{"Triangulated",{9,32}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,32}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,32}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,32}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,32}},"Polyhedral"]

GraphData[{"Triangulated",{9,32}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,32}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,32}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,32}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,32}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 33}}

Names

GraphData[{"Triangulated",{9,33}},"StandardName"]

GraphData[{"Triangulated",{9,33}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,33}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,33}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,33}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,33}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,33}},"Edges"]

RotateGraph[GraphicsToGraph@,Pi]

v=Join[CirclePoints[7],{#/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,9,4,8,7,5,9,2],e[6,8,3,9,7],e[5,8,1,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[,.2]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{0,1/4},{1/4,1/4},{-1/4,1/2},{0,1/2},{1/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,1,2,3,1,4,5,6,2,9,3,6,8,5,7,4],e[1,7,3,8,7],{6,9},{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs=UnlabelGraph/@{,,,,,,,,}

Degenerate

GraphData[{"Triangulated",{9,33}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,33}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,33}},"Configuration"]

GraphData[{"Triangulated",{9,33}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,33}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,33}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,33}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,33}},"NotationRules","HoneycombToroidal"]

IGraph

GraphData[{"Triangulated",{9,33}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,33}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,33}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,33}},"Hamiltonian"]

GraphData[{"Triangulated",{9,33}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,33}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,33}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,33}},"Planar"]

GraphData[{"Triangulated",{9,33}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,33}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,33}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,33}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,33}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,33}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,33}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,33}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,33}},"Circulant"]

GraphData[{"Triangulated",{9,33}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,33}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,33}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,33}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,33}}&]

RootGraph[GraphData[{"Triangulated",{9,33}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,33}},"Halin"]

GraphData[{"Triangulated",{9,33}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,33}},"Rigid"]

GraphData[{"Triangulated",{9,33}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,33}},"Flexible"]

GraphData[{"Triangulated",{9,33}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,33}},"LCF"]

GraphData[{"Triangulated",{9,33}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,33}},"LCFSignature"]

GraphData[{"Triangulated",{9,33}},"LCFNotations"]

GraphData[{"Triangulated",{9,33}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,33}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,33}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,33}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,33}},"VertexList"],GraphData[{"Triangulated",{9,33}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,33}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,33}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,33}},"Matchstick"]

GraphData[{"Triangulated",{9,33}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,33}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,33}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,33}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,33}},"Polyhedral"]

GraphData[{"Triangulated",{9,33}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,33}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,33}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,33}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,33}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 34}}

Names

GraphData[{"Triangulated",{9,34}},"StandardName"]

GraphData[{"Triangulated",{9,34}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,34}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,34}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,34}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,34}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,34}},"Edges"]

v=Join[CirclePoints[7],{0,#}&/@{0,-1/2}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,9,6,8,3,1,4,7,5,8,2,9,8,4],{7,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,,}

Degenerate

GraphData[{"Triangulated",{9,34}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,34}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,34}},"Configuration"]

GraphData[{"Triangulated",{9,34}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,34}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,34}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,34}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,34}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,34}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,34}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,34}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,34}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,34}},"Hamiltonian"]

GraphData[{"Triangulated",{9,34}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,34}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,34}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,34}},"Planar"]

GraphData[{"Triangulated",{9,34}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,34}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,34}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,34}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,34}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,34}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/2},{0,1/2},{1/4,1/2},{-1/4,3/4},{0,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,9,3,7,1,4,8,6,2],e[4,7,8,9,6,5,4],e[5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-2/6,2/3},{2/6,2/3},3],{{0,(13/12)}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,3,5,1],e[3,9,5,4,8,9],e[5,6,7,8],e[4,6,9,7,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/2,1/2},{0,1/2},{1/2,1/2},{-1/6,1},{1/6,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,3,5,1],e[4,7,9,8,5,4,6,9,3,8,6],e[5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,34}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,34}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,34}},"Circulant"]

GraphData[{"Triangulated",{9,34}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,34}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,34}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,34}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,34}}&]

RootGraph[GraphData[{"Triangulated",{9,34}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,34}},"Halin"]

GraphData[{"Triangulated",{9,34}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,34}},"Rigid"]

GraphData[{"Triangulated",{9,34}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,34}},"Flexible"]

GraphData[{"Triangulated",{9,34}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,34}},"LCF"]

GraphData[{"Triangulated",{9,34}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,34}},"LCFSignature"]

GraphData[{"Triangulated",{9,34}},"LCFNotations"]

GraphData[{"Triangulated",{9,34}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,34}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,34}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,34}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,34}},"VertexList"],GraphData[{"Triangulated",{9,34}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,34}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,34}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,34}},"Matchstick"]

GraphData[{"Triangulated",{9,34}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,34}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,34}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,34}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,34}},"Polyhedral"]

GraphData[{"Triangulated",{9,34}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,34}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,34}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,34}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,34}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 35}}

Names

GraphData[{"Triangulated",{9,35}},"StandardName"]

GraphData[{"Triangulated",{9,35}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,35}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,35}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,35}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,35}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,35}},"Edges"]

GraphPlot@RotateGraph[,Pi/2]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/4,1/4},{-1/4,1},3],{{1/4,1/4},{1/4,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,1,4,8,2,6,9,7,6,5,4],e[1,5,8,6],e[6,1,7,3,9,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,35}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,35}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,35}},"Configuration"]

GraphData[{"Triangulated",{9,35}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,35}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,35}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,35}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,35}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,35}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,35}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,35}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,35}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,35}},"Hamiltonian"]

GraphData[{"Triangulated",{9,35}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,35}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,35}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,35}},"Planar"]

GraphData[{"Triangulated",{9,35}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,35}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,35}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,35}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,35}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,35}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,35}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,35}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,35}},"Circulant"]

GraphData[{"Triangulated",{9,35}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,35}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,35}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,35}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,35}}&]

RootGraph[GraphData[{"Triangulated",{9,35}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,35}},"Halin"]

GraphData[{"Triangulated",{9,35}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,35}},"Rigid"]

GraphData[{"Triangulated",{9,35}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,35}},"Flexible"]

GraphData[{"Triangulated",{9,35}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,35}},"LCF"]

GraphData[{"Triangulated",{9,35}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,35}},"LCFSignature"]

GraphData[{"Triangulated",{9,35}},"LCFNotations"]

GraphData[{"Triangulated",{9,35}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,35}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,35}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,35}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,35}},"VertexList"],GraphData[{"Triangulated",{9,35}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,35}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,35}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,35}},"Matchstick"]

GraphData[{"Triangulated",{9,35}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,35}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,35}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,35}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,35}},"Polyhedral"]

GraphData[{"Triangulated",{9,35}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,35}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,35}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,35}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,35}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 36}}

Names

GraphData[{"Triangulated",{9,36}},"StandardName"]

GraphData[{"Triangulated",{9,36}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,36}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,36}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,36}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,36}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,36}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"Triangulated",{9,36}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,36}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,36}},"Configuration"]

GraphData[{"Triangulated",{9,36}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,36}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,36}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,36}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,36}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,36}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,36}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,36}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,36}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,36}},"Hamiltonian"]

GraphData[{"Triangulated",{9,36}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,36}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,36}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,36}},"Planar"]

GraphData[{"Triangulated",{9,36}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,36}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,36}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,36}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,36}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,36}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{0,1},{-1/8,5/4},{1/8,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,2,7,1,8,3,9,2],e[4,5,6,7,8,9,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/8,1/2},{1/8,1/2},{0,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1,7,2,8,1,9,2],e[7,5,4,6,7,8,9,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/2,1/2},{1/2,1/2},{0,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,3,5,1],e[4,6,5,4],e[5,7,6,8,5,9,6],e[7,8,9,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{2#,(#2)2/3}&@@@{{0,1/4},{0,1/2},{0,3/4},{0,1},{-1/8,5/4},{1/8,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,9,3,8,1],e[4,9,8,4,5,6,7,9],e[7,8,6,9,5,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,36}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,36}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,36}},"Circulant"]

GraphData[{"Triangulated",{9,36}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,36}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,36}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,36}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,36}}&]

RootGraph[GraphData[{"Triangulated",{9,36}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,36}},"Halin"]

GraphData[{"Triangulated",{9,36}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,36}},"Rigid"]

GraphData[{"Triangulated",{9,36}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,36}},"Flexible"]

GraphData[{"Triangulated",{9,36}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,36}},"LCF"]

GraphData[{"Triangulated",{9,36}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,36}},"LCFSignature"]

GraphData[{"Triangulated",{9,36}},"LCFNotations"]

GraphData[{"Triangulated",{9,36}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,36}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,36}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,36}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,36}},"VertexList"],GraphData[{"Triangulated",{9,36}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,36}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,36}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,36}},"Matchstick"]

GraphData[{"Triangulated",{9,36}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,36}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,36}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,36}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,36}},"Polyhedral"]

GraphData[{"Triangulated",{9,36}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,36}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,36}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,36}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,36}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 37}}

Names

GraphData[{"Triangulated",{9,37}},"StandardName"]

GraphData[{"Triangulated",{9,37}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,37}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,37}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,37}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,37}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,37}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs={,,,,}

Degenerate

GraphData[{"Triangulated",{9,37}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,37}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,37}},"Configuration"]

GraphData[{"Triangulated",{9,37}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,37}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,37}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,37}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,37}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,37}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,37}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,37}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,37}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,37}},"Hamiltonian"]

GraphData[{"Triangulated",{9,37}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,37}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,37}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,37}},"Planar"]

GraphData[{"Triangulated",{9,37}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,37}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,37}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,37}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,37}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,37}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{-1/6,1},{1/6,1},{0,3/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,2,8,7,1,9,2],e[4,5,6,8,9,7,6],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/8,3/4},{1/8,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,7,2,8,1,9,2],e[4,5,7,8,9,3],e[5,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,1],e[4,5,6,8,9,3,7,8],{5,7},e[3,6,9,7],e[6,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{-1/4,1},{1/4,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,3,7,1],e[4,8,9,7,4,5,6,8,7,6],e[7,5,8],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,37}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,37}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,37}},"Circulant"]

GraphData[{"Triangulated",{9,37}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,37}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,37}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,37}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,37}}&]

RootGraph[GraphData[{"Triangulated",{9,37}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,37}},"Halin"]

GraphData[{"Triangulated",{9,37}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,37}},"Rigid"]

GraphData[{"Triangulated",{9,37}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,37}},"Flexible"]

GraphData[{"Triangulated",{9,37}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,37}},"LCF"]

GraphData[{"Triangulated",{9,37}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,37}},"LCFSignature"]

GraphData[{"Triangulated",{9,37}},"LCFNotations"]

GraphData[{"Triangulated",{9,37}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,37}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,37}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,37}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,37}},"VertexList"],GraphData[{"Triangulated",{9,37}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,37}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,37}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,37}},"Matchstick"]

GraphData[{"Triangulated",{9,37}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,37}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,37}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,37}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,37}},"Polyhedral"]

GraphData[{"Triangulated",{9,37}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,37}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,37}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,37}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,37}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 38}}

Names

GraphData[{"Triangulated",{9,38}},"StandardName"]

GraphData[{"Triangulated",{9,38}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,38}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,38}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,38}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,38}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,38}},"Edges"]

GraphPlot@RotateGraph[,Pi/2-.1]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{1/4,1/4},{0,1/2},{1/4,1/2},{0,3/4},{0,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,6,7,8,9,7,2,9,3],e[9,1,5,6,1,8],e[4,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,38}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,38}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,38}},"Configuration"]

GraphData[{"Triangulated",{9,38}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,38}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,38}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,38}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,38}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,38}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,38}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,38}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,38}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,38}},"Hamiltonian"]

GraphData[{"Triangulated",{9,38}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,38}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,38}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,38}},"Planar"]

GraphData[{"Triangulated",{9,38}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,38}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,38}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,38}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,38}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,38}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,38}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,38}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,38}},"Circulant"]

GraphData[{"Triangulated",{9,38}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,38}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,38}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,38}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,38}}&]

RootGraph[GraphData[{"Triangulated",{9,38}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,38}},"Halin"]

GraphData[{"Triangulated",{9,38}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,38}},"Rigid"]

GraphData[{"Triangulated",{9,38}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,38}},"Flexible"]

GraphData[{"Triangulated",{9,38}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,38}},"LCF"]

GraphData[{"Triangulated",{9,38}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,38}},"LCFSignature"]

GraphData[{"Triangulated",{9,38}},"LCFNotations"]

GraphData[{"Triangulated",{9,38}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,38}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,38}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,38}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,38}},"VertexList"],GraphData[{"Triangulated",{9,38}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,38}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,38}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,38}},"Matchstick"]

GraphData[{"Triangulated",{9,38}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,38}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,38}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,38}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,38}},"Polyhedral"]

GraphData[{"Triangulated",{9,38}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,38}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,38}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,38}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,38}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 39}}

Names

GraphData[{"Triangulated",{9,39}},"StandardName"]

GraphData[{"Triangulated",{9,39}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,39}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,39}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,39}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,39}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,39}},"Edges"]

v={{0,0},{1,0},{2,0},{2,1/2},{2,1},{1,1},{0,1},{1/2,1/2},{3/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7,9,1],e[2,6,9,3],e[5,9,2,4,6],e[2,8,6],{4,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"Triangulated",{9,39}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,39}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,39}},"Configuration"]

GraphData[{"Triangulated",{9,39}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,39}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,39}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,39}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,39}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,39}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,39}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,39}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,39}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,39}},"Hamiltonian"]

GraphData[{"Triangulated",{9,39}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,39}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,39}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,39}},"Planar"]

GraphData[{"Triangulated",{9,39}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,39}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,39}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,39}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,39}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,39}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/8,1/2},{1/8,1/2},{-1/4,3/4},{0,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1,7,8,9,2],e[4,6],e[9,3,7],e[5,4],e[5,8,6],{3,8},e[1,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{0,1/4},{1/4,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,5,1,7,2,9,8,1],e[5,7,9,3,8,7],e[4,7,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/2,1/2},{1/2,1/2},{-1/4,3/4},{0,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1],e[4,6,3,5,4],e[5,8,6,9,3,7,5],e[7,8,9],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,39}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,39}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,39}},"Circulant"]

GraphData[{"Triangulated",{9,39}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,39}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,39}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,39}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,39}}&]

RootGraph[GraphData[{"Triangulated",{9,39}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,39}},"Halin"]

GraphData[{"Triangulated",{9,39}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,39}},"Rigid"]

GraphData[{"Triangulated",{9,39}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,39}},"Flexible"]

GraphData[{"Triangulated",{9,39}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,39}},"LCF"]

GraphData[{"Triangulated",{9,39}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,39}},"LCFSignature"]

GraphData[{"Triangulated",{9,39}},"LCFNotations"]

GraphData[{"Triangulated",{9,39}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,39}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,39}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,39}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,39}},"VertexList"],GraphData[{"Triangulated",{9,39}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,39}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,39}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,39}},"Matchstick"]

GraphData[{"Triangulated",{9,39}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,39}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,39}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,39}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,39}},"Polyhedral"]

GraphData[{"Triangulated",{9,39}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,39}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,39}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,39}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,39}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 40}}

Names

GraphData[{"Triangulated",{9,40}},"StandardName"]

GraphData[{"Triangulated",{9,40}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,40}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,40}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,40}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,40}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,40}},"Edges"]

v={{0,0},{1,0},{2,0},{2,1},{1,1},{0,1},{1/3,1/2},{2/3,1/2},{3/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,6,8,1],e[5,2,7,5,8,2,9,4,8,3,9,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,}

Degenerate

GraphData[{"Triangulated",{9,40}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,40}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,40}},"Configuration"]

GraphData[{"Triangulated",{9,40}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,40}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,40}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,40}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,40}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,40}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,40}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,40}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,40}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,40}},"Hamiltonian"]

GraphData[{"Triangulated",{9,40}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,40}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,40}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,40}},"Planar"]

GraphData[{"Triangulated",{9,40}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,40}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,40}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,40}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,40}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,40}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,1/4},{-1/8,1/2},{1/8,1/2},{0,3/4},{-1/4,1},{1/4,1},{0,Sqrt[3]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,3,2,8,9,7,1,6,2,5,4,1],e[4,3,5,6,4],e[6,7,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[CirclePoints[3],CirclePoints[{1/3,-Pi/2},3],CirclePoints[1/9,3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,3,4,1],e[5,6,4,5,8,6,9,4,7,5],e[7,8,9,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/2,1/2},{1/2,1/2},{0,3/4},{-1/6,1},{1/6,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1],e[5,4,6,3,5,8,9,6,7,5],e[7,8,3,9,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,40}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,40}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,40}},"Circulant"]

GraphData[{"Triangulated",{9,40}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,40}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,40}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,40}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,40}}&]

RootGraph[GraphData[{"Triangulated",{9,40}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,40}},"Halin"]

GraphData[{"Triangulated",{9,40}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,40}},"Rigid"]

GraphData[{"Triangulated",{9,40}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,40}},"Flexible"]

GraphData[{"Triangulated",{9,40}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,40}},"LCF"]

GraphData[{"Triangulated",{9,40}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,40}},"LCFSignature"]

GraphData[{"Triangulated",{9,40}},"LCFNotations"]

GraphData[{"Triangulated",{9,40}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,40}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,40}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,40}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,40}},"VertexList"],GraphData[{"Triangulated",{9,40}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,40}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,40}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,40}},"Matchstick"]

GraphData[{"Triangulated",{9,40}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,40}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,40}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,40}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,40}},"Polyhedral"]

GraphData[{"Triangulated",{9,40}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,40}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,40}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,40}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,40}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 41}}

Names

GraphData[{"Triangulated",{9,41}},"StandardName"]

GraphData[{"Triangulated",{9,41}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,41}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,41}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,41}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,41}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Triangulated",{9,41}},"Edges"],Pi/2]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

v=Join[CirclePoints[7],{#/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,{1,7},1,9,4,8,7],e[3,8,5,9,2,7],e[8,6,9,3],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,,,,}

Degenerate

GraphData[{"Triangulated",{9,41}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,41}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,41}},"Configuration"]

GraphData[{"Triangulated",{9,41}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,41}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,41}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,41}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,41}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,41}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,41}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,41}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,41}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,41}},"Hamiltonian"]

GraphData[{"Triangulated",{9,41}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,41}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,41}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,41}},"Planar"]

GraphData[{"Triangulated",{9,41}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,41}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,41}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,41}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,41}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,41}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,3,6,1],e[4,7,8,6,5,7,9,6,4,5,8,9,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,41}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,41}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,41}},"Circulant"]

GraphData[{"Triangulated",{9,41}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,41}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,41}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,41}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,41}}&]

RootGraph[GraphData[{"Triangulated",{9,41}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,41}},"Halin"]

GraphData[{"Triangulated",{9,41}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,41}},"Rigid"]

GraphData[{"Triangulated",{9,41}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,41}},"Flexible"]

GraphData[{"Triangulated",{9,41}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,41}},"LCF"]

GraphData[{"Triangulated",{9,41}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,41}},"LCFSignature"]

GraphData[{"Triangulated",{9,41}},"LCFNotations"]

GraphData[{"Triangulated",{9,41}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,41}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,41}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,41}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,41}},"VertexList"],GraphData[{"Triangulated",{9,41}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,41}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,41}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,41}},"Matchstick"]

GraphData[{"Triangulated",{9,41}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,41}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,41}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,41}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,41}},"Polyhedral"]

GraphData[{"Triangulated",{9,41}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,41}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,41}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,41}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,41}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 42}}

Names

GraphData[{"Triangulated",{9,42}},"StandardName"]

GraphData[{"Triangulated",{9,42}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,42}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,42}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,42}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,42}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,42}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,42}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,42}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,42}},"Configuration"]

GraphData[{"Triangulated",{9,42}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,42}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,42}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,42}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,42}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,42}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,42}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,42}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,42}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,42}},"Hamiltonian"]

GraphData[{"Triangulated",{9,42}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,42}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,42}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,42}},"Planar"]

GraphData[{"Triangulated",{9,42}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,42}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,42}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,42}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,42}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,42}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[CirclePoints[3],CirclePoints[{1/8,-Pi/2},3],Rest@CirclePoints[{2/8,-Pi/2},3],CirclePoints[{3/8,-Pi/2},3][[{2}]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,9,2,8,3,4,1,7,2,6,3],e[8,6,4,5,7,9],{5,6},e[2,5,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,42}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,42}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,42}},"Circulant"]

GraphData[{"Triangulated",{9,42}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,42}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,42}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,42}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,42}}&]

RootGraph[GraphData[{"Triangulated",{9,42}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,42}},"Halin"]

GraphData[{"Triangulated",{9,42}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,42}},"Rigid"]

GraphData[{"Triangulated",{9,42}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,42}},"Flexible"]

GraphData[{"Triangulated",{9,42}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,42}},"LCF"]

GraphData[{"Triangulated",{9,42}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,42}},"LCFSignature"]

GraphData[{"Triangulated",{9,42}},"LCFNotations"]

GraphData[{"Triangulated",{9,42}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,42}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,42}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,42}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,42}},"VertexList"],GraphData[{"Triangulated",{9,42}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,42}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,42}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,42}},"Matchstick"]

GraphData[{"Triangulated",{9,42}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,42}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,42}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,42}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,42}},"Polyhedral"]

GraphData[{"Triangulated",{9,42}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,42}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,42}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,42}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,42}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 43}}

Names

GraphData[{"Triangulated",{9,43}},"StandardName"]

GraphData[{"Triangulated",{9,43}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,43}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,43}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,43}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,43}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,43}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"Triangulated",{9,43}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,43}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,43}},"Configuration"]

GraphData[{"Triangulated",{9,43}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,43}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,43}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,43}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,43}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,43}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,43}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,43}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,43}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,43}},"Hamiltonian"]

GraphData[{"Triangulated",{9,43}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,43}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,43}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,43}},"Planar"]

GraphData[{"Triangulated",{9,43}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,43}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,43}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,43}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,43}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,43}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,1/2},{1/4,1/2},{0,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1,8,2,9,1],e[4,6,7,5,4],e[7,8,9,3],e[5,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,1/4},{-1/4,1/2},{1/4,1/2},{0,3/4},{0,1},{0,5/4},{0,Sqrt[3]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,3,2,5,4,1,8,2],e[3,5,6,4,3],e[5,7,4],e[6,7,8,9],e[4,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,1/4},{0,1/2},{0,3/4},{0,1},{-1/8,5/4},{1/8,5/4},{0,Sqrt[3]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,3,2,4,1,7,9,8,2],e[3,4,5,6,8,7,6],e[7,4,8,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{0,1},{-1/8,5/4},{1/8,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,2,9,3,8,1],e[4,5,6,7,8,9,7],e[8,6,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,43}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,43}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,43}},"Circulant"]

GraphData[{"Triangulated",{9,43}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,43}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,43}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,43}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,43}}&]

RootGraph[GraphData[{"Triangulated",{9,43}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,43}},"Halin"]

GraphData[{"Triangulated",{9,43}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,43}},"Rigid"]

GraphData[{"Triangulated",{9,43}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,43}},"Flexible"]

GraphData[{"Triangulated",{9,43}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,43}},"LCF"]

GraphData[{"Triangulated",{9,43}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,43}},"LCFSignature"]

GraphData[{"Triangulated",{9,43}},"LCFNotations"]

GraphData[{"Triangulated",{9,43}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,43}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,43}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,43}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,43}},"VertexList"],GraphData[{"Triangulated",{9,43}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,43}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,43}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,43}},"Matchstick"]

GraphData[{"Triangulated",{9,43}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,43}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,43}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,43}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,43}},"Polyhedral"]

GraphData[{"Triangulated",{9,43}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,43}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,43}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,43}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,43}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 44}}

Names

GraphData[{"Triangulated",{9,44}},"StandardName"]

GraphData[{"Triangulated",{9,44}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,44}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,44}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,44}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,44}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Triangulated",{9,44}},"Edges"],GraphLayout->"SpringEmbedding"]

vec=v[[6]]-v[[1]]

v=Join[CirclePoints[{1,Pi/2},6],{v[[5]]+vec,v[[3]]+{-1,1}vec,v[[4]]-{0,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,3,5,1],e[2,4,6,2,8,4,7,6],{3,8},{5,7},e[3,9,5],{4,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,,}

Degenerate

GraphData[{"Triangulated",{9,44}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,44}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,44}},"Configuration"]

GraphData[{"Triangulated",{9,44}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,44}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,44}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,44}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,44}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,44}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,44}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,44}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,44}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,44}},"Hamiltonian"]

GraphData[{"Triangulated",{9,44}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,44}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,44}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,44}},"Planar"]

GraphData[{"Triangulated",{9,44}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,44}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,44}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,44}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,44}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,44}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-1/2,1/2},{1/2,1/2},3],{{0,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,5,1,6,3,7,2],e[8,3,5],e[4,7,9,6,4],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-1/2,1/2},{1/2,1/2},3],{{0,3/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,5,1,9,2],e[4,7,9,6,4],{1,6},{2,7},{3,9},e[5,9,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

Mean[v[[{5,8,9}]]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{0,1/4},{1/4,1/4},{0,(7/12)},{-1/4,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,5,4,1,8,9,2],e[8,5,9,3,8,7,9,6],{4,8},{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,1/2},{0,1/2},{1/4,1/2},{-1/4,1},{1/4,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,1,8,9,2,7,6,5,1],e[4,6,9,3,8,6],{5,8},{7,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,44}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,44}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,44}},"Circulant"]

GraphData[{"Triangulated",{9,44}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,44}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,44}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,44}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,44}}&]

RootGraph[GraphData[{"Triangulated",{9,44}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,44}},"Halin"]

GraphData[{"Triangulated",{9,44}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,44}},"Rigid"]

GraphData[{"Triangulated",{9,44}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,44}},"Flexible"]

GraphData[{"Triangulated",{9,44}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,44}},"LCF"]

GraphData[{"Triangulated",{9,44}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,44}},"LCFSignature"]

GraphData[{"Triangulated",{9,44}},"LCFNotations"]

GraphData[{"Triangulated",{9,44}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,44}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,44}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,44}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,44}},"VertexList"],GraphData[{"Triangulated",{9,44}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,44}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,44}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,44}},"Matchstick"]

GraphData[{"Triangulated",{9,44}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,44}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,44}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,44}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,44}},"Polyhedral"]

GraphData[{"Triangulated",{9,44}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,44}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,44}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,44}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,44}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 45}}

Names

GraphData[{"Triangulated",{9,45}},"StandardName"]

GraphData[{"Triangulated",{9,45}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,45}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,45}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,45}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,45}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,45}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"Triangulated",{9,45}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,45}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,45}},"Configuration"]

GraphData[{"Triangulated",{9,45}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,45}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,45}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,45}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,45}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,45}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,45}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,45}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,45}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,45}},"Hamiltonian"]

GraphData[{"Triangulated",{9,45}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,45}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,45}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,45}},"Planar"]

GraphData[{"Triangulated",{9,45}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,45}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,45}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,45}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,45}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,45}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[CirclePoints[3],CirclePoints[{1/3,-Pi/2},3],CirclePoints[{1/6,-Pi/2},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,3,4,1,8,2,9,3,7,1],e[6,9,7,8,9],{5,8},{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{-1/4,1/4},{0,1/4},{1/4,1/4},{-1/4,3/4},{1/4,3/4},{0,3/2},{0,Sqrt[3]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,4,2,5,4,3,1,6,7,2,8,1],e[9,8,6,3],e[8,7,5],e[6,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[CirclePoints[3],Rest@CirclePoints[{1/3,-Pi/2},3],CirclePoints[{1/6,-Pi/2},3],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,3,6,1,7,2,8,3],e[5,8,9,7,4],e[6,7,8,6],{6,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[CirclePoints[3],c=CirclePoints[2/5,3]];
v=Join[v,Mean/@Partition[c,2,1,1]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,7,2,8,3,9,1,4,7,5,8,6,9,4],{2,5},{3,6},e[7,8,9,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,45}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,45}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,45}},"Circulant"]

GraphData[{"Triangulated",{9,45}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,45}},"ComplementGraph","Name"]

GraphData[compl,"Graph","All"]

gs=GraphComplement/@%

Line graph

GraphData[{"Triangulated",{9,45}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,45}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,45}}&]

RootGraph[GraphData[{"Triangulated",{9,45}}]]

RecognizeGraph[%]

GraphData[roots[[1]],"Graph","All"]

gs=LineGraph/@%

v=Join[CirclePoints[3],CirclePoints[{1/2,Pi/2},6]];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,9,2,5,3,7,1,8,9,4,5,6,7,8,4,6,8],{3,6},e[7,5,9,7],{2,4}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Halin

GraphData[{"Triangulated",{9,45}},"Halin"]

GraphData[{"Triangulated",{9,45}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,45}},"Rigid"]

GraphData[{"Triangulated",{9,45}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,45}},"Flexible"]

GraphData[{"Triangulated",{9,45}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,45}},"LCF"]

GraphData[{"Triangulated",{9,45}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,45}},"LCFSignature"]

GraphData[{"Triangulated",{9,45}},"LCFNotations"]

GraphData[{"Triangulated",{9,45}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,45}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,45}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,45}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,45}},"VertexList"],GraphData[{"Triangulated",{9,45}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,45}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,45}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,45}},"Matchstick"]

GraphData[{"Triangulated",{9,45}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,45}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,45}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,45}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,45}},"Polyhedral"]

GraphData[{"Triangulated",{9,45}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,45}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,45}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,45}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,45}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 46}}

Names

GraphData[{"Triangulated",{9,46}},"StandardName"]

GraphData[{"Triangulated",{9,46}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,46}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,46}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,46}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,46}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,46}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"Triangulated",{9,46}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,46}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,46}},"Configuration"]

GraphData[{"Triangulated",{9,46}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,46}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,46}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,46}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,46}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,46}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,46}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,46}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,46}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,46}},"Hamiltonian"]

GraphData[{"Triangulated",{9,46}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,46}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,46}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,46}},"Planar"]

GraphData[{"Triangulated",{9,46}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,46}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,46}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,46}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,46}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,46}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{-1/4,1},{1/4,1},{0,3/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,9,2,8,7,1,4,2],e[4,8,9,7,4,5,6,8],{6,7},e[7,5,8],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,7,2],e[4,5,7,9,6,5],e[6,8,7],e[8,9,3],e[6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4},{0,5/4},{0,3/2},{0,Sqrt[3]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,3,2,6,5,1,7,2,8,1],e[3,4,6,7,5,4],e[7,8,9],e[5,3,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{-1/4,1},{1/4,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,2,8,7,1],e[4,5,6,8,9,3],e[9,7,6],e[7,3,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,46}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,46}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,46}},"Circulant"]

GraphData[{"Triangulated",{9,46}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,46}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,46}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,46}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,46}}&]

RootGraph[GraphData[{"Triangulated",{9,46}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,46}},"Halin"]

GraphData[{"Triangulated",{9,46}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,46}},"Rigid"]

GraphData[{"Triangulated",{9,46}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,46}},"Flexible"]

GraphData[{"Triangulated",{9,46}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,46}},"LCF"]

GraphData[{"Triangulated",{9,46}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,46}},"LCFSignature"]

GraphData[{"Triangulated",{9,46}},"LCFNotations"]

GraphData[{"Triangulated",{9,46}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,46}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,46}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,46}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,46}},"VertexList"],GraphData[{"Triangulated",{9,46}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,46}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,46}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,46}},"Matchstick"]

GraphData[{"Triangulated",{9,46}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,46}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,46}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,46}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,46}},"Polyhedral"]

GraphData[{"Triangulated",{9,46}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,46}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,46}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,46}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,46}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 47}}

Names

GraphData[{"Triangulated",{9,47}},"StandardName"]

GraphData[{"Triangulated",{9,47}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,47}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,47}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,47}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,47}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,47}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"Triangulated",{9,47}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,47}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,47}},"Configuration"]

Perspective

GraphData[{"Triangulated",{9,47}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,47}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,47}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,47}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,47}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,47}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,47}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,47}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,47}},"Hamiltonian"]

GraphData[{"Triangulated",{9,47}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,47}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,47}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,47}},"Planar"]

GraphData[{"Triangulated",{9,47}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,47}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,47}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,47}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,47}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,47}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4},{0,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,1,9,2],e[4,5,7,8,6,4,7],{5,6},e[6,9,7],e[8,9,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,1/4},{0,1/2},{0,3/4},{-1/8,1},{1/8,1},{0,3/2},{0,Sqrt[3]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,9,1,3,2,4,1,8,2],e[3,4,5,7,8,6,5],e[4,7,6,4],{8,9},{1,6},{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,3/4},{1/4,3/4},{0,1},{0,3/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,7,2,9,1],e[4,5,7,8,6,5],e[8,9,3],e[6,9,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{0,3/4},{-1/4,1},{1/4,1},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,7,8,2],e[4,5,6,8,9,7,5,8],e[6,7,3,8],{3,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,47}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,47}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,47}},"Circulant"]

GraphData[{"Triangulated",{9,47}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,47}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,47}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,47}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,47}}&]

RootGraph[GraphData[{"Triangulated",{9,47}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,47}},"Halin"]

GraphData[{"Triangulated",{9,47}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,47}},"Rigid"]

GraphData[{"Triangulated",{9,47}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,47}},"Flexible"]

GraphData[{"Triangulated",{9,47}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,47}},"LCF"]

GraphData[{"Triangulated",{9,47}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,47}},"LCFSignature"]

GraphData[{"Triangulated",{9,47}},"LCFNotations"]

GraphData[{"Triangulated",{9,47}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,47}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,47}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,47}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,47}},"VertexList"],GraphData[{"Triangulated",{9,47}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,47}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,47}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,47}},"Matchstick"]

GraphData[{"Triangulated",{9,47}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,47}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,47}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,47}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,47}},"Polyhedral"]

GraphData[{"Triangulated",{9,47}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,47}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,47}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,47}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,47}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 48}}

Names

GraphData[{"Triangulated",{9,48}},"StandardName"]

GraphData[{"Triangulated",{9,48}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,48}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,48}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,48}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,48}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,48}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"Triangulated",{9,48}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,48}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,48}},"Configuration"]

GraphData[{"Triangulated",{9,48}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,48}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,48}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,48}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,48}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,48}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,48}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,48}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,48}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,48}},"Hamiltonian"]

GraphData[{"Triangulated",{9,48}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,48}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,48}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,48}},"Planar"]

GraphData[{"Triangulated",{9,48}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,48}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,48}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,48}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,48}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,48}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{0,Sqrt[3]},{1,0},{0,1/4},{-1/4,1/2},{0,1/2},{1/4,1/2},{0,3/4},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,1,4,3,7,6,5,1,9,3],e[4,7,8,5,4,6,8,9,2],e[5,9,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,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,2,3,1,4,2,5,1,6,7,8,2],e[4,5,8,9,6,5,7,9,3,6],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,48}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,48}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,48}},"Circulant"]

GraphData[{"Triangulated",{9,48}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,48}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,48}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,48}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,48}}&]

RootGraph[GraphData[{"Triangulated",{9,48}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,48}},"Halin"]

GraphData[{"Triangulated",{9,48}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,48}},"Rigid"]

GraphData[{"Triangulated",{9,48}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,48}},"Flexible"]

GraphData[{"Triangulated",{9,48}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,48}},"LCF"]

GraphData[{"Triangulated",{9,48}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,48}},"LCFSignature"]

GraphData[{"Triangulated",{9,48}},"LCFNotations"]

GraphData[{"Triangulated",{9,48}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,48}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,48}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,48}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,48}},"VertexList"],GraphData[{"Triangulated",{9,48}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,48}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,48}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,48}},"Matchstick"]

GraphData[{"Triangulated",{9,48}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,48}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,48}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,48}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,48}},"Polyhedral"]

GraphData[{"Triangulated",{9,48}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,48}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,48}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,48}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,48}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 49}}

Names

GraphData[{"Triangulated",{9,49}},"StandardName"]

GraphData[{"Triangulated",{9,49}},"StandardNames"]

Primary

GraphData[{"Triangulated",{9,49}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Triangulated",{9,49}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Triangulated",{9,49}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Triangulated",{9,49}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Triangulated",{9,49}},"Edges"]

GraphPlot@

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,3/4},{0,3/4},{1/4,3/4},{0,5/4}};
AppendTo[v,Mean[v[[{4,6,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,3,5,1],e[4,7,6,5,4,6,8,7,9,4],{6,9},e[5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"Triangulated",{9,49}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Triangulated",{9,49}},"Graph","Degenerate"]

Configuration

GraphData[{"Triangulated",{9,49}},"Configuration"]

GraphData[{"Triangulated",{9,49}},"Graph","Configuration"]//StyleGraphs

Perspective

GraphData[{"Triangulated",{9,49}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"Triangulated",{9,49}},"Polyhedron"]

PolyhedronGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Triangulated",{9,49}},"Polyhedron"],{1,1,1}]

HoneycombToroidal construction

GraphData[{"Triangulated",{9,49}},"NotationRules","HoneycombToroidal"]

GeneralizedPetersen

GraphData[{"Triangulated",{9,49}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"Triangulated",{9,49}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"Triangulated",{9,49}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Triangulated",{9,49}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"Triangulated",{9,49}},"Hamiltonian"]

GraphData[{"Triangulated",{9,49}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"Triangulated",{9,49}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"Triangulated",{9,49}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Triangulated",{9,49}},"Planar"]

GraphData[{"Triangulated",{9,49}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"Triangulated",{9,49}}],Method->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"Triangulated",{9,49}}]],10]

PlanarGraphEmbeddings

(plemb=PlanarGraphEmbeddings[GraphData[{"Triangulated",{9,49}}]])//Timing

Length[plemb]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Triangulated",{9,49}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Triangulated",{9,49}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Triangulated",{9,49}},{"RCN","CN"}]

GraphData[{"Triangulated",{9,49}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Triangulated",{9,49}},"Circulant"]

GraphData[{"Triangulated",{9,49}},"Graph","Circulant"]//StyleGraphs

Complement graph

compl=GraphData[{"Triangulated",{9,49}},"ComplementGraph","Name"]

Line graph

GraphData[{"Triangulated",{9,49}},"Line"]

LineGraphQ[GraphData[{"Triangulated",{9,49}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Triangulated",{9,49}}&]

RootGraph[GraphData[{"Triangulated",{9,49}}]]

RecognizeGraph[%]

Halin

GraphData[{"Triangulated",{9,49}},"Halin"]

GraphData[{"Triangulated",{9,49}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Triangulated",{9,49}},"Rigid"]

GraphData[{"Triangulated",{9,49}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Triangulated",{9,49}},"Flexible"]

GraphData[{"Triangulated",{9,49}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Triangulated",{9,49}},"LCF"]

GraphData[{"Triangulated",{9,49}},"HamiltonianCycleCount"]

GraphData[{"Triangulated",{9,49}},"LCFSignature"]

GraphData[{"Triangulated",{9,49}},"LCFNotations"]

GraphData[{"Triangulated",{9,49}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"Triangulated",{9,49}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Triangulated",{9,49}}],Debug->True]//Timing

GraphData[{"Triangulated",{9,49}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"Triangulated",{9,49}},"VertexList"],GraphData[{"Triangulated",{9,49}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"Triangulated",{9,49}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"Triangulated",{9,49}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"Triangulated",{9,49}},"Matchstick"]

GraphData[{"Triangulated",{9,49}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Triangulated",{9,49}},"Edges"]]

3D All

GraphData[{"Triangulated",{9,49}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Triangulated",{9,49}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Triangulated",{9,49}},"Polyhedral"]

GraphData[{"Triangulated",{9,49}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Triangulated",{9,49}},"Polyhedron"]}]

3D Canonical

GraphData[{"Triangulated",{9,49}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Triangulated",{9,49}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Triangulated",{9,49}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->50,MaxIterations->50000,PrecisionGoal->20,"ProgressInterval"->1000,"TangentFactor"->1/10,"PlanarFactor"->1/10,Debug->True])//Timing

SimplePolyhedronQ[can]

If[%===False,Quit[]]

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]

{"Triangulated", {9, 50}} == "FritschGraph"

Names

GraphData[{"Triangulated",{9,50}},"StandardName"]

GraphData[{"Triangulated",{9,50}},"StandardNames"]

10

GraphData

GraphDataClassString

GraphDataClassString["Triangulated"]

GraphDataString

file=OpenWrite["~/triangulated.m"]

gs=Cases[MapIndexed[{{"Triangulated",{9,#2[[1]]}},RecognizeGraph[#,"Cache"->"InternalOnly"],PlanarGraphEmbedding@#}&,TriangulatedGraphs[9]],{gn_,{},g_}:>{gn,g}]

WriteString[file,
GraphDataString[#2,
"StandardName"->#,
"Name"->"("<>StringReplace[StringTake[ToString[#[[2]]],{2,-2}]," "->""]<>")\[Hyphen]triangulated graph",
"Information"->"TriangulatedGraph",
"NotationRules"->{Rule@@#}
]]&@@@gs

Close[file]