Triangulated Graph

Author

Eric W. Weisstein
May 1, 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`

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

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

{"Triangulated", {8, 2}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

MinimalCrossing

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

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

Default embedding

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

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

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,2}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],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}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Triangulated",{8,3}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

UnitDistance FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

Matchstick

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

MinimalCrossing

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

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

Default embedding

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

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

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,3}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],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}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

MinimalCrossing

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

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

Default embedding

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

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

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,4}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],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}}

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

Primary

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

All

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

Planar

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

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

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

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]

Halin

GraphData[{"Triangulated",{8,5}},"Graph","Halin"]//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

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}}

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

Primary

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

All

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

Planar

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

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

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

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

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}

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

{"Triangulated", {8, 8}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

MinimalCrossing

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

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

Default embedding

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]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,8}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],Yellow,Sphere[]}]

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]

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]

{"Triangulated", {8, 9}}

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

All

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

Planar

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

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

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

Default embedding

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

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

RecognizeGraph[g]

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}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

MinimalCrossing

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

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

Default embedding

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]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,10}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],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}}

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}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

MinimalCrossing

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

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

Default embedding

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

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

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,12}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],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}}  == {"JohnsonSkeleton", 84}

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

{"Triangulated", {8, 14}}

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

Primary

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

All

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

Planar

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

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

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}]&/@{}

Tutte embedding construction 3 #1

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

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

RecognizeGraph[g]

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]

Halin

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

MinimalCrossing

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

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

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]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Triangulated",{8,14}}],"CrossingNumber"->-1]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

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}},"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"],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]

GraphData

GraphDataClassString

GraphDataClassString["Triangulated"]