Octahedral Graph

Author

Eric W. Weisstein
November 27, 2023

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

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

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

Projections

Manipulate[PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{a,b,c}],{a,-1,1},{b,-1,1},{c,-1,1}]

{0, 0, 1}

PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{0,0,1},VertexLabels->"Name"]

{0, 1, 1}

PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{0,1,1},VertexLabels->"Name"]

{1, 0, 3}

PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{z,0,1},VertexLabels->"Name"]

v=Lookup[Options[%],VertexCoordinates];

FullSimplify[(v[[1]]-v[[4]])-(v[[4]]-v[[3]]),z>0]

Solve[((-1+3 z)/((Sqrt[2]) (Sqrt[1+(z^2)])))==0,z]

PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{1,0,3},VertexLabels->"Name"]

{1, 1, 1}

PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{1,1,1},VertexLabels->"Name"]

{2, 1, 1}

g=PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{2,1,1},VertexLabels->"Name"]

{3, 1, 1}

g=PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{3,1,1},VertexLabels->"Name"]

{2, 1, 5}

PolyhedronProjectionGraph[PolyhedronData["Octahedron","Polyhedron"],{2,1,5},VertexLabels->"Name"]

Stereographic projections

PolyhedronData["Octahedron","Orientations"]

Quiet@GraphPlot[SkeletonGraph[PolyhedronData[{"Octahedron","C2"},"Faces"]//Normal,#],Method->None]&/@Range[.2,1.5,.1]

GraphPlot[SkeletonGraph[PolyhedronData[{"Octahedron","C3"},"Faces"]//Normal,#],Method->None]&/@Range[.2,2,.1]

Quiet@GraphPlot[SkeletonGraph[PolyhedronData[{"Octahedron","C4"},"Faces"]//Normal,#],Method->None]&/@Range[.2,1.5,.1]

Properties

Classes

GraphData["OctahedralGraph","Classes"]

Matrices

GraphicsRow[GraphMatrixPlot[GraphData["OctahedralGraph"]]]

Properties

TableForm[GraphDataTable["OctahedralGraph",x],TableDepth->2]//TraditionalForm

Embeddings

<<MathWorld`Graphs`

GraphData["Octahedral*"]

"OctahedralGraph"

Names

GraphData["OctahedralGraph","StandardName"]

GraphData["OctahedralGraph","StandardNames"]

Primary

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

Construction from Read and Wilson

Construction from distanceregular.org

g=DistanceRegularGraph["http://www.distanceregular.org/graphdata/octahedron.am"]

RecognizeGraph@g

All

GraphData["OctahedralGraph","Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData["OctahedralGraph","EdgeList"]]

Default embedding

GraphPlot@GraphData["OctahedralGraph","Edges"]

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

RecognizeGraph[g]

RegionIntersection[Line@v[[{1,4}]],Line@v[[{2,5}]]][[1,1]]//FullSimplify

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

RecognizeGraph@g

Degenerate

GraphData["OctahedralGraph","Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData["OctahedralGraph","Graph","Bilateral"]//StyleGraphs

Circular

GraphData["OctahedralGraph","Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData["OctahedralGraph"],All][[All,All,1]]]

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

gs=bilat

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

quad

Planar

GraphData["OctahedralGraph","Planar"]

GraphData["OctahedralGraph","Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData["OctahedralGraph"]]

Tally[ReverseSort[Length/@faces]]

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

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

GraphData["OctahedralGraph",{"RCN","CN"}]

GraphData["OctahedralGraph","Graph","MinimalCrossing"]//StyleGraphs

Integral

IntegralDrawing/@GraphData["OctahedralGraph","Graph","Integral"]//StyleGraphs

MinimalIntegral

IntegralDrawing/@GraphData["OctahedralGraph","Graph","MinimalIntegral"]//StyleGraphs

MinimalIntegralConstruction

IntegralDrawing@With[{x=(Sqrt[5])},Graph[UndirectedEdge@@@{{4,1},{2,3},{3,4},{1,2},{2,5},{1,5},{4,6},{3,6},{6,1},{6,2},{3,5},{4,5}},VertexCoordinates->{{x,2},{x,-2},{-x,2},{-x,-2},{x+(Sqrt[5]),0},{-x-(Sqrt[5]),0}}]]//StyleGraphs

IntegralDrawing@With[{h=(Sqrt[(3^2)-(1/4)(((8-5))^2)])},Graph[UndirectedEdge@@@{{1,3},{1,4},{3,4},{4,5},{2,5},{1,2},{3,2},{1,5},{6,3},{6,5},{6,4},{6,2}},VertexCoordinates->{{0,0},{5,0},{-3/2,h},{3/2,h},{5+3/2,h},{3/2,h}+5{1/2,(Sqrt[3])/2}}]]//StyleGraphs

Reduce[
(-5/2+x2)^2+h^2==7^2&&
(-x3+5/2)^2+y^2==3^2&&
(x3-x2)^2+(y-h)^2==5^2&&
(-x3-5/2)^2+y^2==7^2&&x2>0&&x3>0&&0<y<h,
{x2,x3,y,h},Reals]

IntegralDrawing@With[{x2=3/2,x3=4,y=3(Sqrt[3])/2,h=4(Sqrt[3])},Graph[UndirectedEdge@@@{{1,2},{5,6},{2,4},{1,3},{3,5},{4,6},{3,6},{1,4},{5,4},{3,2},{1,5},{2,6}},VertexCoordinates->{{-5/2,0},{5/2,0},{-x3,y},{x3,y},{-x2,h},{x2,h}}]]//StyleGraphs

MinimalCrossing

GraphData["OctahedralGraph",{"RCN","CN"}]

GraphData["OctahedralGraph","Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData["OctahedralGraph","Circulant"]

GraphData["OctahedralGraph","NotationRules","Circulant"]

Cases[GraphData["OctahedralGraph","StandardNames"],{"Circulant",_}]

GraphData["OctahedralGraph","Graph","Circulant"]//StyleGraphs

Halin

GraphData["OctahedralGraph","Halin"]

GraphData["OctahedralGraph","Graph","Halin"]//StyleGraphs

LCF

GraphData["OctahedralGraph","LCF"]

GraphData["OctahedralGraph","LCFSignature"]

GraphData["OctahedralGraph","Graph","LCF"]//StyleGraphs

LCF compute

Length[FindHamiltonianCycle[GraphData["OctahedralGraph"],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData["OctahedralGraph"],All])[[All,2]]]

gs=LCFGraph@@@DeleteCases[lcf,{_,1|2}]

UnitDistance

GraphData["OctahedralGraph","UnitDistance"]

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

GraphData["OctahedralGraph","Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["OctahedralGraph","VertexList"],GraphData["OctahedralGraph","EdgeList"]]]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData["OctahedralGraph","Matchstick"]

GraphData["OctahedralGraph","Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData["OctahedralGraph","Edges"]]

3D All

GraphData["OctahedralGraph","Graph",{"3D","All"}]

3D UnitDistance

GraphData["OctahedralGraph","Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData["OctahedralGraph","Polyhedral"]

GraphData["OctahedralGraph","Graph",{"3D","Polyhedron"}]

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

3D Canonical

GraphData["OctahedralGraph","Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 2}

GraphData[{"Octahedral",2},"StandardName"]

Primary

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

All

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

Inexact

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

Default embedding

GraphPlot@GraphData[{"Octahedral",2},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",2},"EdgeList"]]

Degenerate

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

Bilateral

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",2},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #6

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

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",2},"Circulant"]

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

Halin

GraphData[{"Octahedral",2},"Halin"]

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

LCF

GraphData[{"Octahedral",2},"LCF"]

GraphData[{"Octahedral",2},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",2},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",2},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",2},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",2},"Polyhedral"]

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

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

3D Canonical

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

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

3D Canonical construction

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

{"Octahedral", 3}

GraphData[{"Octahedral",3},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",3},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",3},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",3},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,2Pi/5]]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",3},"Circulant"]

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

Halin

GraphData[{"Octahedral",3},"Halin"]

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

LCF

GraphData[{"Octahedral",3},"LCF"]

GraphData[{"Octahedral",3},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",3},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",3},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",3},"Edges"]]

3D All

GraphData[{"Octahedral",3},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",3},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",3},"Polyhedral"]

GraphData[{"Octahedral",3},"Graph",{"3D","Polyhedron"}]

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

3D Canonical

GraphData[{"Octahedral",3},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 4}

GraphData[{"Octahedral",4},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",4},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",4},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",4},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #6

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #7

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #8

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #9

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #10

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",4},"Circulant"]

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

Halin

GraphData[{"Octahedral",4},"Halin"]

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

LCF

GraphData[{"Octahedral",4},"LCF"]

GraphData[{"Octahedral",4},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",4},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",4},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",4},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",4},"Polyhedral"]

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

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

3D Canonical

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

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

3D Canonical construction

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

{"Octahedral", 5}

GraphData[{"Octahedral",5},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",5},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",5},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",5},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",5},"Circulant"]

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

Halin

GraphData[{"Octahedral",5},"Halin"]

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

LCF

GraphData[{"Octahedral",5},"LCF"]

GraphData[{"Octahedral",5},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",5},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",5},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",5},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",5},"Polyhedral"]

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

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

3D Canonical

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

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

3D Canonical construction

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

{"Octahedral", 6}

GraphData[{"Octahedral",6},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",6},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",6},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",6},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction  4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction  4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",6},"Circulant"]

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

Halin

GraphData[{"Octahedral",6},"Halin"]

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

LCF

GraphData[{"Octahedral",6},"LCF"]

GraphData[{"Octahedral",6},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",6},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",6},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",6},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",6},"Polyhedral"]

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

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

3D Canonical

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

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

3D Canonical construction

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

{"Octahedral", 7}

GraphData[{"Octahedral",7},"StandardName"]

Primary

GraphData[{"Octahedral",7}]//StyleGraphs[#,ImageSize->Small]&

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",7},"Edges"]

RotateGraph[GraphicsToGraph@,Pi/2]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",7},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",7},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",7},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",7}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",7},"Planar"]

GraphData[{"Octahedral",7},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",7}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

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

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

RecognizeGraph[g]

Tutte embedding construction  3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",7},"Circulant"]

GraphData[{"Octahedral",7},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",7},"Halin"]

GraphData[{"Octahedral",7},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",7},"LCF"]

GraphData[{"Octahedral",7},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",7},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",7}],Debug->True]//Timing

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

Matchstick

GraphData[{"Octahedral",7},"Matchstick"]

GraphData[{"Octahedral",7},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",7},"Edges"]]

3D All

GraphData[{"Octahedral",7},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",7},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",7},"Polyhedral"]

GraphData[{"Octahedral",7},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",7},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",7},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 8}

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

Primary

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

All

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

Default embedding

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

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",8},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction  6

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

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

RecognizeGraph[g]

Circulant

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

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

Halin

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

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

LCF

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

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

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

UnitDistance

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

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

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

3D Canonical

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

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

3D Canonical construction

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

{"Octahedral", 9}

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

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",9},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",9},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",9},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",9},"Circulant"]

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

Halin

GraphData[{"Octahedral",9},"Halin"]

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

LCF

GraphData[{"Octahedral",9},"LCF"]

GraphData[{"Octahedral",9},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",9},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",9},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",9},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",9},"Polyhedral"]

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

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

3D Canonical

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

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

3D Canonical construction

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

{"Octahedral", 10}

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

Primary

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

All

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

Default embedding

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

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

RecognizeGraph[g]

Embedding types

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

Degenerate

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

Circular

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

Circular construction

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

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

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

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

Halin

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

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

LCF

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

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

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

UnitDistance

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

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",10},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",10},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 11}

GraphData[{"Octahedral",11},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",11},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",11},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",11},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",11}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",11},"Circulant"]

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

Halin

GraphData[{"Octahedral",11},"Halin"]

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

LCF

GraphData[{"Octahedral",11},"LCF"]

GraphData[{"Octahedral",11},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",11},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",11},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",11},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",11},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",11},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",11},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 12} == {"SelfDual", {8, 1}}

GraphData[{"Octahedral",12},"StandardName"]

{"Octahedral", 13} == {"SelfDual", {8, 2}}

GraphData[{"Octahedral",13},"StandardName"]

{"Octahedral", 14}

GraphData[{"Octahedral",14},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",14},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",14},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",14},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",14}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",14},"Circulant"]

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

Halin

GraphData[{"Octahedral",14},"Halin"]

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

LCF

GraphData[{"Octahedral",14},"LCF"]

GraphData[{"Octahedral",14},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",14},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",14},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",14},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",14},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",14},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",14},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 15}

GraphData[{"Octahedral",15},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",15},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",15},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",15},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",15}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",15},"Circulant"]

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

Halin

GraphData[{"Octahedral",15},"Halin"]

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

LCF

GraphData[{"Octahedral",15},"LCF"]

GraphData[{"Octahedral",15},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",15},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",15},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",15},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",15},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",15},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",15},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 16}

GraphData[{"Octahedral",16},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",16},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",16},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",16},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",16}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",16},"Circulant"]

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

Halin

GraphData[{"Octahedral",16},"Halin"]

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

LCF

GraphData[{"Octahedral",16},"LCF"]

GraphData[{"Octahedral",16},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",16},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",16},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",16},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",16},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",16},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",16},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 17}

GraphData[{"Octahedral",17},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",17},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",17},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",17},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",17}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",17},"Circulant"]

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

Halin

GraphData[{"Octahedral",17},"Halin"]

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

LCF

GraphData[{"Octahedral",17},"LCF"]

GraphData[{"Octahedral",17},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",17},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",17},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",17},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",17},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",17},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",17},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 18}

GraphData[{"Octahedral",18},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",18},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",18},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",18},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

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

h=Mean[v[[{4,5}]]][[2]]//FullSimplify

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",18},"Circulant"]

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

Halin

GraphData[{"Octahedral",18},"Halin"]

GraphData[{"Octahedral",18},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",18},"LCF"]

GraphData[{"Octahedral",18},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",18},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",18},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",18},"Edges"]]

3D All

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

3D UnitDistance

GraphData[{"Octahedral",18},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",18},"Polyhedral"]

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

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

3D Canonical

GraphData[{"Octahedral",18},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 19}

GraphData[{"Octahedral",19},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",19},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",19},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",19},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",19}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",19},"Circulant"]

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

Halin

GraphData[{"Octahedral",19},"Halin"]

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

LCF

GraphData[{"Octahedral",19},"LCF"]

GraphData[{"Octahedral",19},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",19},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",19},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Octahedral",19},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Octahedral",19},"Polyhedral"]

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",19},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",19},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 20}

GraphData[{"Octahedral",20},"StandardName"]

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Octahedral",20},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",20},"EdgeList"]]

Degenerate

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

Circular

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

Circular construction

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

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

Planar

GraphData[{"Octahedral",20},"Planar"]

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

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",20}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",20},"Circulant"]

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

Halin

GraphData[{"Octahedral",20},"Halin"]

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

LCF

GraphData[{"Octahedral",20},"LCF"]

GraphData[{"Octahedral",20},"LCFSignature"]

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

UnitDistance

GraphData[{"Octahedral",20},"UnitDistance"]

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

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

Matchstick

GraphData[{"Octahedral",20},"Matchstick"]

GraphData[{"Octahedral",20},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",20},"Edges"]]

3D All

GraphData[{"Octahedral",20},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",20},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",20},"Polyhedral"]

GraphData[{"Octahedral",20},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",20},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",20},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 21}

GraphData[{"Octahedral",21},"StandardName"]

Primary

GraphData[{"Octahedral",21}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",21},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",21},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",21},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",21},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",21},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",21}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",21},"Planar"]

GraphData[{"Octahedral",21},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",21}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",21},"Circulant"]

GraphData[{"Octahedral",21},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",21},"Halin"]

GraphData[{"Octahedral",21},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",21},"LCF"]

GraphData[{"Octahedral",21},"LCFSignature"]

GraphData[{"Octahedral",21},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",21},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",21}],Debug->True]//Timing

GraphData[{"Octahedral",21},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",21},"Matchstick"]

GraphData[{"Octahedral",21},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",21},"Edges"]]

3D All

GraphData[{"Octahedral",21},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",21},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",21},"Polyhedral"]

GraphData[{"Octahedral",21},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",21},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",21},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 22}

GraphData[{"Octahedral",22},"StandardName"]

Primary

GraphData[{"Octahedral",22}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",22},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",22},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",22},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",22},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",22},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",22}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",22},"Planar"]

GraphData[{"Octahedral",22},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",22}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",22},"Circulant"]

GraphData[{"Octahedral",22},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",22},"Halin"]

GraphData[{"Octahedral",22},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",22},"LCF"]

GraphData[{"Octahedral",22},"LCFSignature"]

GraphData[{"Octahedral",22},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",22},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",22}],Debug->True]//Timing

GraphData[{"Octahedral",22},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",22},"Matchstick"]

GraphData[{"Octahedral",22},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",22},"Edges"]]

3D All

GraphData[{"Octahedral",22},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",22},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",22},"Polyhedral"]

GraphData[{"Octahedral",22},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",22},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",22},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 23}

GraphData[{"Octahedral",23},"StandardName"]

Primary

GraphData[{"Octahedral",23}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",23},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",23},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",23},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",23},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",23},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",23}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",23},"Planar"]

GraphData[{"Octahedral",23},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",23}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",23},"Circulant"]

GraphData[{"Octahedral",23},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",23},"Halin"]

GraphData[{"Octahedral",23},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",23},"LCF"]

GraphData[{"Octahedral",23},"LCFSignature"]

GraphData[{"Octahedral",23},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",23},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",23}],Debug->True]//Timing

GraphData[{"Octahedral",23},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",23},"Matchstick"]

GraphData[{"Octahedral",23},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",23},"Edges"]]

3D All

GraphData[{"Octahedral",23},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",23},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",23},"Polyhedral"]

GraphData[{"Octahedral",23},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",23},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",23},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 24}

GraphData[{"Octahedral",24},"StandardName"]

Primary

GraphData[{"Octahedral",24}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",24},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",24},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",24},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",24},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",24},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",24}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",24},"Planar"]

GraphData[{"Octahedral",24},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",24}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",24},"Circulant"]

GraphData[{"Octahedral",24},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",24},"Halin"]

GraphData[{"Octahedral",24},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",24},"LCF"]

GraphData[{"Octahedral",24},"LCFSignature"]

GraphData[{"Octahedral",24},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",24},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",24}],Debug->True]//Timing

GraphData[{"Octahedral",24},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",24},"Matchstick"]

GraphData[{"Octahedral",24},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",24},"Edges"]]

3D All

GraphData[{"Octahedral",24},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",24},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",24},"Polyhedral"]

GraphData[{"Octahedral",24},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",24},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",24},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 25}

GraphData[{"Octahedral",25},"StandardName"]

Primary

GraphData[{"Octahedral",25}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",25},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",25},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",25},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",25},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",25},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",25}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",25},"Planar"]

GraphData[{"Octahedral",25},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",25}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",25},"Circulant"]

GraphData[{"Octahedral",25},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",25},"Halin"]

GraphData[{"Octahedral",25},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",25},"LCF"]

GraphData[{"Octahedral",25},"LCFSignature"]

GraphData[{"Octahedral",25},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",25},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",25}],Debug->True]//Timing

GraphData[{"Octahedral",25},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",25},"Matchstick"]

GraphData[{"Octahedral",25},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",25},"Edges"]]

3D All

GraphData[{"Octahedral",25},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",25},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",25},"Polyhedral"]

GraphData[{"Octahedral",25},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",25},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",25},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 26}

GraphData[{"Octahedral",26},"StandardName"]

Primary

GraphData[{"Octahedral",26}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",26},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",26},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",26},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",26},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",26},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",26}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",26},"Planar"]

GraphData[{"Octahedral",26},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",26}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

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

h=Mean[v[[{2,4}]]][[2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",26},"Circulant"]

GraphData[{"Octahedral",26},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",26},"Halin"]

GraphData[{"Octahedral",26},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",26},"LCF"]

GraphData[{"Octahedral",26},"LCFSignature"]

GraphData[{"Octahedral",26},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",26},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",26}],Debug->True]//Timing

GraphData[{"Octahedral",26},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",26},"Matchstick"]

GraphData[{"Octahedral",26},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",26},"Edges"]]

3D All

GraphData[{"Octahedral",26},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",26},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",26},"Polyhedral"]

GraphData[{"Octahedral",26},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",26},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",26},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 27}

GraphData[{"Octahedral",27},"StandardName"]

Primary

GraphData[{"Octahedral",27}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",27},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",27},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",27},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",27},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",27},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",27}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",27},"Planar"]

GraphData[{"Octahedral",27},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",27}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",27},"Circulant"]

GraphData[{"Octahedral",27},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",27},"Halin"]

GraphData[{"Octahedral",27},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",27},"LCF"]

GraphData[{"Octahedral",27},"LCFSignature"]

GraphData[{"Octahedral",27},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",27},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",27}],Debug->True]//Timing

GraphData[{"Octahedral",27},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",27},"Matchstick"]

GraphData[{"Octahedral",27},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",27},"Edges"]]

3D All

GraphData[{"Octahedral",27},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",27},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",27},"Polyhedral"]

GraphData[{"Octahedral",27},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",27},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",27},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 28} == {"SelfComplementary", {8, 6}}

GraphData[{"Octahedral",28},"StandardName"]

{"Octahedral", 29}

GraphData[{"Octahedral",29},"StandardName"]

Primary

GraphData[{"Octahedral",29}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",29},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",29},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",29},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",29},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",29},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",29}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",29},"Planar"]

GraphData[{"Octahedral",29},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",29}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",29},"Circulant"]

GraphData[{"Octahedral",29},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",29},"Halin"]

GraphData[{"Octahedral",29},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",29},"LCF"]

GraphData[{"Octahedral",29},"LCFSignature"]

GraphData[{"Octahedral",29},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",29},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",29}],Debug->True]//Timing

GraphData[{"Octahedral",29},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",29},"Matchstick"]

GraphData[{"Octahedral",29},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",29},"Edges"]]

3D All

GraphData[{"Octahedral",29},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",29},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",29},"Polyhedral"]

GraphData[{"Octahedral",29},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",29},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",29},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 30}

GraphData[{"Octahedral",30},"StandardName"]

Primary

GraphData[{"Octahedral",30}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",30},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",30},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",30},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",30},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",30},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",30}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",30},"Planar"]

GraphData[{"Octahedral",30},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",30}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",30},"Circulant"]

GraphData[{"Octahedral",30},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",30},"Halin"]

GraphData[{"Octahedral",30},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",30},"LCF"]

GraphData[{"Octahedral",30},"LCFSignature"]

GraphData[{"Octahedral",30},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",30},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",30}],Debug->True]//Timing

GraphData[{"Octahedral",30},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",30},"Matchstick"]

GraphData[{"Octahedral",30},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",30},"Edges"]]

3D All

GraphData[{"Octahedral",30},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",30},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",30},"Polyhedral"]

GraphData[{"Octahedral",30},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",30},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",30},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 31}

GraphData[{"Octahedral",31},"StandardName"]

Primary

GraphData[{"Octahedral",31}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",31},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",31},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",31},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",31},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",31},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",31}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",31},"Planar"]

GraphData[{"Octahedral",31},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",31}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",31},"Circulant"]

GraphData[{"Octahedral",31},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",31},"Halin"]

GraphData[{"Octahedral",31},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",31},"LCF"]

GraphData[{"Octahedral",31},"LCFSignature"]

GraphData[{"Octahedral",31},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",31},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",31}],Debug->True]//Timing

GraphData[{"Octahedral",31},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",31},"Matchstick"]

GraphData[{"Octahedral",31},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",31},"Edges"]]

3D All

GraphData[{"Octahedral",31},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",31},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",31},"Polyhedral"]

GraphData[{"Octahedral",31},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",31},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",31},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 32}

GraphData[{"Octahedral",32},"StandardName"]

Primary

GraphData[{"Octahedral",32}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",32},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",32},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",32},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",32},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",32},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",32}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",32},"Planar"]

GraphData[{"Octahedral",32},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",32}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/5},{i,4}]];

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",32},"Circulant"]

GraphData[{"Octahedral",32},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",32},"Halin"]

GraphData[{"Octahedral",32},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",32},"LCF"]

GraphData[{"Octahedral",32},"LCFSignature"]

GraphData[{"Octahedral",32},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",32},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",32}],Debug->True]//Timing

GraphData[{"Octahedral",32},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",32},"Matchstick"]

GraphData[{"Octahedral",32},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",32},"Edges"]]

3D All

GraphData[{"Octahedral",32},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",32},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",32},"Polyhedral"]

GraphData[{"Octahedral",32},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",32},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",32},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 33}

GraphData[{"Octahedral",33},"StandardName"]

Primary

GraphData[{"Octahedral",33}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",33},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",33},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",33},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",33},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",33},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",33}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",33},"Planar"]

GraphData[{"Octahedral",33},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",33}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,2Pi/5]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",33},"Circulant"]

GraphData[{"Octahedral",33},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",33},"Halin"]

GraphData[{"Octahedral",33},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",33},"LCF"]

GraphData[{"Octahedral",33},"LCFSignature"]

GraphData[{"Octahedral",33},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",33},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",33}],Debug->True]//Timing

GraphData[{"Octahedral",33},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",33},"Matchstick"]

GraphData[{"Octahedral",33},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",33},"Edges"]]

3D All

GraphData[{"Octahedral",33},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",33},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",33},"Polyhedral"]

GraphData[{"Octahedral",33},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",33},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",33},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 34}

GraphData[{"Octahedral",34},"StandardName"]

Primary

GraphData[{"Octahedral",34}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",34},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",34},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",34},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",34},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",34},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",34}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",34},"Planar"]

GraphData[{"Octahedral",34},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",34}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",34},"Circulant"]

GraphData[{"Octahedral",34},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",34},"Halin"]

GraphData[{"Octahedral",34},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",34},"LCF"]

GraphData[{"Octahedral",34},"LCFSignature"]

GraphData[{"Octahedral",34},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",34},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",34}],Debug->True]//Timing

GraphData[{"Octahedral",34},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",34},"Matchstick"]

GraphData[{"Octahedral",34},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",34},"Edges"]]

3D All

GraphData[{"Octahedral",34},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",34},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",34},"Polyhedral"]

GraphData[{"Octahedral",34},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",34},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",34},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 35}

GraphData[{"Octahedral",35},"StandardName"]

Primary

GraphData[{"Octahedral",35}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",35},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",35},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",35},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",35},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",35},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",35}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",35},"Planar"]

GraphData[{"Octahedral",35},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",35}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",35},"Circulant"]

GraphData[{"Octahedral",35},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",35},"Halin"]

GraphData[{"Octahedral",35},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",35},"LCF"]

GraphData[{"Octahedral",35},"LCFSignature"]

GraphData[{"Octahedral",35},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",35},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",35}],Debug->True]//Timing

GraphData[{"Octahedral",35},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",35},"Matchstick"]

GraphData[{"Octahedral",35},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",35},"Edges"]]

3D All

GraphData[{"Octahedral",35},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",35},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",35},"Polyhedral"]

GraphData[{"Octahedral",35},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",35},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",35},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 36}

GraphData[{"Octahedral",36},"StandardName"]

Primary

GraphData[{"Octahedral",36}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",36},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",36},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",36},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",36},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",36},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",36}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",36},"Planar"]

GraphData[{"Octahedral",36},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",36}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 6

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",36},"Circulant"]

GraphData[{"Octahedral",36},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",36},"Halin"]

GraphData[{"Octahedral",36},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",36},"LCF"]

GraphData[{"Octahedral",36},"LCFSignature"]

GraphData[{"Octahedral",36},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",36},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",36}],Debug->True]//Timing

GraphData[{"Octahedral",36},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",36},"Matchstick"]

GraphData[{"Octahedral",36},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",36},"Edges"]]

3D All

GraphData[{"Octahedral",36},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",36},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",36},"Polyhedral"]

GraphData[{"Octahedral",36},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",36},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",36},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 37}

GraphData[{"Octahedral",37},"StandardName"]

Primary

GraphData[{"Octahedral",37}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",37},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",37},"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,3],e[7,8,4],e[1,6,8,5,2,6],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",37},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",37},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",37},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",37}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",37},"Planar"]

GraphData[{"Octahedral",37},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",37}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",37},"Circulant"]

GraphData[{"Octahedral",37},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",37},"Halin"]

GraphData[{"Octahedral",37},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",37},"LCF"]

GraphData[{"Octahedral",37},"LCFSignature"]

GraphData[{"Octahedral",37},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",37},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",37}],Debug->True]//Timing

GraphData[{"Octahedral",37},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",37},"Matchstick"]

GraphData[{"Octahedral",37},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",37},"Edges"]]

3D All

GraphData[{"Octahedral",37},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",37},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",37},"Polyhedral"]

GraphData[{"Octahedral",37},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",37},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",37},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 38}

GraphData[{"Octahedral",38},"StandardName"]

Primary

GraphData[{"Octahedral",38}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",38},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",38},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",38},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",38},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",38},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",38}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",38},"Planar"]

GraphData[{"Octahedral",38},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",38}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",38},"Circulant"]

GraphData[{"Octahedral",38},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",38},"Halin"]

GraphData[{"Octahedral",38},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",38},"LCF"]

GraphData[{"Octahedral",38},"LCFSignature"]

GraphData[{"Octahedral",38},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",38},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",38}],Debug->True]//Timing

GraphData[{"Octahedral",38},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",38},"Matchstick"]

GraphData[{"Octahedral",38},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",38},"Edges"]]

3D All

GraphData[{"Octahedral",38},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",38},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",38},"Polyhedral"]

GraphData[{"Octahedral",38},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",38},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",38},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 39}

GraphData[{"Octahedral",39},"StandardName"]

Primary

GraphData[{"Octahedral",39}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",39},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",39},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",39},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",39},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",39},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",39}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",39},"Planar"]

GraphData[{"Octahedral",39},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",39}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",39},"Circulant"]

GraphData[{"Octahedral",39},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",39},"Halin"]

GraphData[{"Octahedral",39},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",39},"LCF"]

GraphData[{"Octahedral",39},"LCFSignature"]

GraphData[{"Octahedral",39},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",39},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",39}],Debug->True]//Timing

GraphData[{"Octahedral",39},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",39},"Matchstick"]

GraphData[{"Octahedral",39},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",39},"Edges"]]

3D All

GraphData[{"Octahedral",39},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",39},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",39},"Polyhedral"]

GraphData[{"Octahedral",39},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",39},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",39},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 40}

GraphData[{"Octahedral",40},"StandardName"]

Primary

GraphData[{"Octahedral",40}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",40},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",40},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",40},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",40},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",40},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",40}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",40},"Planar"]

GraphData[{"Octahedral",40},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",40}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",40},"Circulant"]

GraphData[{"Octahedral",40},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",40},"Halin"]

GraphData[{"Octahedral",40},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",40},"LCF"]

GraphData[{"Octahedral",40},"LCFSignature"]

GraphData[{"Octahedral",40},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",40},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",40}],Debug->True]//Timing

GraphData[{"Octahedral",40},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",40},"Matchstick"]

GraphData[{"Octahedral",40},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",40},"Edges"]]

3D All

GraphData[{"Octahedral",40},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",40},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",40},"Polyhedral"]

GraphData[{"Octahedral",40},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",40},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",40},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 41}

GraphData[{"Octahedral",41},"StandardName"]

Primary

GraphData[{"Octahedral",41}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",41},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",41},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",41},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",41},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",41},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",41}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",41},"Planar"]

GraphData[{"Octahedral",41},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",41}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",41},"Circulant"]

GraphData[{"Octahedral",41},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",41},"Halin"]

GraphData[{"Octahedral",41},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",41},"LCF"]

GraphData[{"Octahedral",41},"LCFSignature"]

GraphData[{"Octahedral",41},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",41},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",41}],Debug->True]//Timing

GraphData[{"Octahedral",41},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",41},"Matchstick"]

GraphData[{"Octahedral",41},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",41},"Edges"]]

3D All

GraphData[{"Octahedral",41},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",41},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",41},"Polyhedral"]

GraphData[{"Octahedral",41},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",41},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",41},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 42} == {"SelfDual", {8, 4}}

GraphData[{"Octahedral",42},"StandardName"]

{"Octahedral", 43} == {"UnitDistanceForbidden", {8, 13, 9}}

GraphData[{"Octahedral",43},"StandardName"]

{"Octahedral", 44}

GraphData[{"Octahedral",44},"StandardName"]

Primary

GraphData[{"Octahedral",44}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",44},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",44},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",44},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",44},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",44},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",44}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",44},"Planar"]

GraphData[{"Octahedral",44},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",44}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",44},"Circulant"]

GraphData[{"Octahedral",44},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",44},"Halin"]

GraphData[{"Octahedral",44},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",44},"LCF"]

GraphData[{"Octahedral",44},"LCFSignature"]

GraphData[{"Octahedral",44},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",44},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",44}],Debug->True]//Timing

GraphData[{"Octahedral",44},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",44},"Matchstick"]

GraphData[{"Octahedral",44},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",44},"Edges"]]

3D All

GraphData[{"Octahedral",44},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",44},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",44},"Polyhedral"]

GraphData[{"Octahedral",44},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",44},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",44},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 45}

GraphData[{"Octahedral",45},"StandardName"]

Primary

GraphData[{"Octahedral",45}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",45},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",45},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",45},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",45},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",45},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",45}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",45},"Planar"]

GraphData[{"Octahedral",45},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",45}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",45},"Circulant"]

GraphData[{"Octahedral",45},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",45},"Halin"]

GraphData[{"Octahedral",45},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",45},"LCF"]

GraphData[{"Octahedral",45},"LCFSignature"]

GraphData[{"Octahedral",45},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",45},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",45}],Debug->True]//Timing

GraphData[{"Octahedral",45},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",45},"Matchstick"]

GraphData[{"Octahedral",45},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",45},"Edges"]]

3D All

GraphData[{"Octahedral",45},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",45},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",45},"Polyhedral"]

GraphData[{"Octahedral",45},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",45},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",45},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 46}

GraphData[{"Octahedral",46},"StandardName"]

Primary

GraphData[{"Octahedral",46}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",46},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",46},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",46},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",46},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",46},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",46}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",46},"Planar"]

GraphData[{"Octahedral",46},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",46}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

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

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",46},"Circulant"]

GraphData[{"Octahedral",46},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",46},"Halin"]

GraphData[{"Octahedral",46},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",46},"LCF"]

GraphData[{"Octahedral",46},"LCFSignature"]

GraphData[{"Octahedral",46},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",46},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",46}],Debug->True]//Timing

GraphData[{"Octahedral",46},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",46},"Matchstick"]

GraphData[{"Octahedral",46},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",46},"Edges"]]

3D All

GraphData[{"Octahedral",46},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",46},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",46},"Polyhedral"]

GraphData[{"Octahedral",46},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",46},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",46},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 47}

GraphData[{"Octahedral",47},"StandardName"]

Primary

GraphData[{"Octahedral",47}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",47},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",47},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",47},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",47},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",47},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",47}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",47},"Planar"]

GraphData[{"Octahedral",47},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",47}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",47},"Circulant"]

GraphData[{"Octahedral",47},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",47},"Halin"]

GraphData[{"Octahedral",47},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",47},"LCF"]

GraphData[{"Octahedral",47},"LCFSignature"]

GraphData[{"Octahedral",47},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",47},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",47}],Debug->True]//Timing

GraphData[{"Octahedral",47},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",47},"Matchstick"]

GraphData[{"Octahedral",47},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",47},"Edges"]]

3D All

GraphData[{"Octahedral",47},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",47},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",47},"Polyhedral"]

GraphData[{"Octahedral",47},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",47},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",47},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 48}

GraphData[{"Octahedral",48},"StandardName"]

Primary

GraphData[{"Octahedral",48}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",48},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",48},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",48},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",48},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",48},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",48}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",48},"Planar"]

GraphData[{"Octahedral",48},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",48}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",48},"Circulant"]

GraphData[{"Octahedral",48},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",48},"Halin"]

GraphData[{"Octahedral",48},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",48},"LCF"]

GraphData[{"Octahedral",48},"LCFSignature"]

GraphData[{"Octahedral",48},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",48},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",48}],Debug->True]//Timing

GraphData[{"Octahedral",48},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",48},"Matchstick"]

GraphData[{"Octahedral",48},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",48},"Edges"]]

3D All

GraphData[{"Octahedral",48},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",48},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",48},"Polyhedral"]

GraphData[{"Octahedral",48},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",48},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",48},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 49}

GraphData[{"Octahedral",49},"StandardName"]

Primary

GraphData[{"Octahedral",49}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",49},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",49},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",49},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",49},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",49},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",49}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",49},"Planar"]

GraphData[{"Octahedral",49},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",49}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",49},"Circulant"]

GraphData[{"Octahedral",49},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",49},"Halin"]

GraphData[{"Octahedral",49},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",49},"LCF"]

GraphData[{"Octahedral",49},"LCFSignature"]

GraphData[{"Octahedral",49},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",49},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",49}],Debug->True]//Timing

GraphData[{"Octahedral",49},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",49},"Matchstick"]

GraphData[{"Octahedral",49},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",49},"Edges"]]

3D All

GraphData[{"Octahedral",49},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",49},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",49},"Polyhedral"]

GraphData[{"Octahedral",49},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",49},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",49},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 50}

GraphData[{"Octahedral",50},"StandardName"]

Primary

GraphData[{"Octahedral",50}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",50},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",50},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",50},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",50},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",50},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",50}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",50},"Planar"]

GraphData[{"Octahedral",50},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",50}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",50},"Circulant"]

GraphData[{"Octahedral",50},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",50},"Halin"]

GraphData[{"Octahedral",50},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",50},"LCF"]

GraphData[{"Octahedral",50},"LCFSignature"]

GraphData[{"Octahedral",50},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",50},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",50}],Debug->True]//Timing

GraphData[{"Octahedral",50},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",50},"Matchstick"]

GraphData[{"Octahedral",50},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",50},"Edges"]]

3D All

GraphData[{"Octahedral",50},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",50},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",50},"Polyhedral"]

GraphData[{"Octahedral",50},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",50},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",50},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 51}

GraphData[{"Octahedral",51},"StandardName"]

Primary

GraphData[{"Octahedral",51}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",51},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",51},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",51},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",51},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",51},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",51}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",51},"Planar"]

GraphData[{"Octahedral",51},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",51}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",51},"Circulant"]

GraphData[{"Octahedral",51},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",51},"Halin"]

GraphData[{"Octahedral",51},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",51},"LCF"]

GraphData[{"Octahedral",51},"LCFSignature"]

GraphData[{"Octahedral",51},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",51},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",51}],Debug->True]//Timing

GraphData[{"Octahedral",51},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",51},"Matchstick"]

GraphData[{"Octahedral",51},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",51},"Edges"]]

3D All

GraphData[{"Octahedral",51},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",51},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",51},"Polyhedral"]

GraphData[{"Octahedral",51},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",51},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",51},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 52}

GraphData[{"Octahedral",52},"StandardName"]

Primary

GraphData[{"Octahedral",52}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",52},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",52},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",52},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",52},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",52},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",52}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",52},"Planar"]

GraphData[{"Octahedral",52},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",52}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",52},"Circulant"]

GraphData[{"Octahedral",52},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",52},"Halin"]

GraphData[{"Octahedral",52},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",52},"LCF"]

GraphData[{"Octahedral",52},"LCFSignature"]

GraphData[{"Octahedral",52},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",52},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",52}],Debug->True]//Timing

GraphData[{"Octahedral",52},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",52},"Matchstick"]

GraphData[{"Octahedral",52},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",52},"Edges"]]

3D All

GraphData[{"Octahedral",52},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",52},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",52},"Polyhedral"]

GraphData[{"Octahedral",52},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",52},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",52},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 53}

GraphData[{"Octahedral",53},"StandardName"]

Primary

GraphData[{"Octahedral",53}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",53},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",53},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",53},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",53},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",53},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",53}],All][[All,All,1]]]

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

bilat

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

Planar

GraphData[{"Octahedral",53},"Planar"]

GraphData[{"Octahedral",53},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",53}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",53},"Circulant"]

GraphData[{"Octahedral",53},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",53},"Halin"]

GraphData[{"Octahedral",53},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",53},"LCF"]

GraphData[{"Octahedral",53},"LCFSignature"]

GraphData[{"Octahedral",53},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",53},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",53}],Debug->True]//Timing

GraphData[{"Octahedral",53},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",53},"Matchstick"]

GraphData[{"Octahedral",53},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",53},"Edges"]]

3D All

GraphData[{"Octahedral",53},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",53},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",53},"Polyhedral"]

GraphData[{"Octahedral",53},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",53},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",53},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 54}

GraphData[{"Octahedral",54},"StandardName"]

Primary

GraphData[{"Octahedral",54}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",54},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",54},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",54},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",54},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",54},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",54}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",54},"Planar"]

GraphData[{"Octahedral",54},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",54}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/2]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",54},"Circulant"]

GraphData[{"Octahedral",54},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",54},"Halin"]

GraphData[{"Octahedral",54},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",54},"LCF"]

GraphData[{"Octahedral",54},"LCFSignature"]

GraphData[{"Octahedral",54},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",54},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",54}],Debug->True]//Timing

GraphData[{"Octahedral",54},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",54},"Matchstick"]

GraphData[{"Octahedral",54},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",54},"Edges"]]

3D All

GraphData[{"Octahedral",54},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",54},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",54},"Polyhedral"]

GraphData[{"Octahedral",54},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",54},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",54},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 55}

GraphData[{"Octahedral",55},"StandardName"]

Primary

GraphData[{"Octahedral",55}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",55},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",55},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",55},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",55},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",55},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",55}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",55},"Planar"]

GraphData[{"Octahedral",55},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",55}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/2]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",55},"Circulant"]

GraphData[{"Octahedral",55},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",55},"Halin"]

GraphData[{"Octahedral",55},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",55},"LCF"]

GraphData[{"Octahedral",55},"LCFSignature"]

GraphData[{"Octahedral",55},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",55},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",55}],Debug->True]//Timing

GraphData[{"Octahedral",55},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",55},"Matchstick"]

GraphData[{"Octahedral",55},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",55},"Edges"]]

3D All

GraphData[{"Octahedral",55},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",55},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",55},"Polyhedral"]

GraphData[{"Octahedral",55},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",55},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",55},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 56} == {"HeptahedralDual", 26}

GraphData[{"Octahedral",56},"StandardName"]

{"Octahedral", 57}

GraphData[{"Octahedral",57},"StandardName"]

Primary

GraphData[{"Octahedral",57}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",57},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",57},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",57},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",57},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",57},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",57}],All][[All,All,1]]]

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

bilat

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

Planar

GraphData[{"Octahedral",57},"Planar"]

GraphData[{"Octahedral",57},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",57}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/2]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",57},"Circulant"]

GraphData[{"Octahedral",57},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",57},"Halin"]

GraphData[{"Octahedral",57},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",57},"LCF"]

GraphData[{"Octahedral",57},"LCFSignature"]

GraphData[{"Octahedral",57},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",57},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",57}],Debug->True]//Timing

GraphData[{"Octahedral",57},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",57},"Matchstick"]

GraphData[{"Octahedral",57},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",57},"Edges"]]

3D All

GraphData[{"Octahedral",57},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",57},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",57},"Polyhedral"]

GraphData[{"Octahedral",57},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",57},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",57},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 58}

GraphData[{"Octahedral",58},"StandardName"]

Primary

GraphData[{"Octahedral",58}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",58},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",58},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",58},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",58},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",58},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",58}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",58},"Planar"]

GraphData[{"Octahedral",58},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",58}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",58},"Circulant"]

GraphData[{"Octahedral",58},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",58},"Halin"]

GraphData[{"Octahedral",58},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",58},"LCF"]

GraphData[{"Octahedral",58},"LCFSignature"]

GraphData[{"Octahedral",58},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",58},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",58}],Debug->True]//Timing

GraphData[{"Octahedral",58},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",58},"Matchstick"]

GraphData[{"Octahedral",58},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",58},"Edges"]]

3D All

GraphData[{"Octahedral",58},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",58},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",58},"Polyhedral"]

GraphData[{"Octahedral",58},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",58},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",58},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 59} == {"SelfDual", {8, 5}}

GraphData[{"Octahedral",59},"StandardName"]

{"Octahedral", 60}

GraphData[{"Octahedral",60},"StandardName"]

Primary

GraphData[{"Octahedral",60}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",60},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",60},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",60},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",60},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",60},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",60}],All][[All,All,1]]]

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

bilat

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

Planar

GraphData[{"Octahedral",60},"Planar"]

GraphData[{"Octahedral",60},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",60}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,Pi]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",60},"Circulant"]

GraphData[{"Octahedral",60},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",60},"Halin"]

GraphData[{"Octahedral",60},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",60},"LCF"]

GraphData[{"Octahedral",60},"LCFSignature"]

GraphData[{"Octahedral",60},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",60},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",60}],Debug->True]//Timing

GraphData[{"Octahedral",60},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",60},"Matchstick"]

GraphData[{"Octahedral",60},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",60},"Edges"]]

3D All

GraphData[{"Octahedral",60},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",60},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",60},"Polyhedral"]

GraphData[{"Octahedral",60},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",60},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",60},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 61} == {"UnitDistanceForbidden", {8, 13, 7}}

GraphData[{"Octahedral",61},"StandardName"]

{"Octahedral", 62} == "PentagonalWedgeGraph"

GraphData[{"Octahedral",62},"StandardName"]

{"Octahedral", 63} == {"Triangulated", {8, 10}}

GraphData[{"Octahedral",63},"StandardName"]

{"Octahedral", 64}

GraphData[{"Octahedral",64},"StandardName"]

Primary

GraphData[{"Octahedral",64}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",64},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",64},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",64},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",64},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",64},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",64}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",64},"Planar"]

GraphData[{"Octahedral",64},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",64}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",64},"Circulant"]

GraphData[{"Octahedral",64},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",64},"Halin"]

GraphData[{"Octahedral",64},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",64},"LCF"]

GraphData[{"Octahedral",64},"LCFSignature"]

GraphData[{"Octahedral",64},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",64},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",64}],Debug->True]//Timing

GraphData[{"Octahedral",64},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",64},"Matchstick"]

GraphData[{"Octahedral",64},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",64},"Edges"]]

3D All

GraphData[{"Octahedral",64},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",64},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",64},"Polyhedral"]

GraphData[{"Octahedral",64},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",64},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",64},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 65}

GraphData[{"Octahedral",65},"StandardName"]

Primary

GraphData[{"Octahedral",65}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",65},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",65},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",65},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",65},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",65},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",65}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",65},"Planar"]

GraphData[{"Octahedral",65},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",65}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",65},"Circulant"]

GraphData[{"Octahedral",65},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",65},"Halin"]

GraphData[{"Octahedral",65},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",65},"LCF"]

GraphData[{"Octahedral",65},"LCFSignature"]

GraphData[{"Octahedral",65},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",65},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",65}],Debug->True]//Timing

GraphData[{"Octahedral",65},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",65},"Matchstick"]

GraphData[{"Octahedral",65},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",65},"Edges"]]

3D All

GraphData[{"Octahedral",65},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",65},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",65},"Polyhedral"]

GraphData[{"Octahedral",65},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",65},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",65},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 66}

GraphData[{"Octahedral",66},"StandardName"]

Primary

GraphData[{"Octahedral",66}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",66},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",66},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",66},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",66},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",66},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",66}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",66},"Planar"]

GraphData[{"Octahedral",66},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",66}]]

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

RegionIntersection[Line[v[[{1,3}]]],Line[v[[{2,4}]]]]//FullSimplify

v=Join[UnitCirclePoints[5],{((3/4)-((Sqrt[5])/4))#,(NumericalApproximation[Root, (RowDefault["0.263", FEExpressionsNumericalApproximationElider]), Root[1-20 ((#1)^2)+80 ((#1)^4)&,3], ])}&/@{-1,1}];
AppendTo[v,Mean@v[[{1,2,7}]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,{1,5},1,7,3,6,5],e[4,6,7,2,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",66},"Circulant"]

GraphData[{"Octahedral",66},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",66},"Halin"]

GraphData[{"Octahedral",66},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",66},"LCF"]

GraphData[{"Octahedral",66},"LCFSignature"]

GraphData[{"Octahedral",66},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",66},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",66}],Debug->True]//Timing

GraphData[{"Octahedral",66},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",66},"Matchstick"]

GraphData[{"Octahedral",66},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",66},"Edges"]]

3D All

GraphData[{"Octahedral",66},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",66},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",66},"Polyhedral"]

GraphData[{"Octahedral",66},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",66},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",66},"Graph",{"3D","Canonical"}]

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

3D Canonical construction

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

{"Octahedral", 67}

GraphData[{"Octahedral",67},"StandardName"]

Primary

GraphData[{"Octahedral",67}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",67},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",67},"Edges"]

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

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",67},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",67},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",67},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",67}],All][[All,All,1]]]

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

Planar

GraphData[{"Octahedral",67},"Planar"]

GraphData[{"Octahedral",67},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",67}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",67}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[2,5,3,8,7,2,8,6,7],e[3,6,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,3,8,2,5,6,7,8],{3,7},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",67},"Circulant"]

GraphData[{"Octahedral",67},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",67},"Halin"]

GraphData[{"Octahedral",67},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",67},"LCF"]

GraphData[{"Octahedral",67},"LCFSignature"]

GraphData[{"Octahedral",67},"Graph","LCF"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",67},"Matchstick"]

GraphData[{"Octahedral",67},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",67},"Edges"]]

3D All

GraphData[{"Octahedral",67},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",67},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",67},"Polyhedral"]

GraphData[{"Octahedral",67},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",67},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",67},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",67},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",67}],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]

{"Octahedral", 68}

GraphData[{"Octahedral",68},"StandardName"]

Primary

GraphData[{"Octahedral",68}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",68},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",68},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",68},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",68},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",68},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",68}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",68}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",68},"Planar"]

GraphData[{"Octahedral",68},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",68}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",68}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{-1/2,h},{1/2,h},{1/2,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,4,5,1,8,7,3,6,5],e[4,6,7,2,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,2,5,4,6,3,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",68},"Circulant"]

GraphData[{"Octahedral",68},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",68},"Halin"]

GraphData[{"Octahedral",68},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",68},"LCF"]

GraphData[{"Octahedral",68},"LCFSignature"]

GraphData[{"Octahedral",68},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",68},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",68}],Debug->True]//Timing

Matchstick

GraphData[{"Octahedral",68},"Matchstick"]

GraphData[{"Octahedral",68},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",68},"Edges"]]

3D All

GraphData[{"Octahedral",68},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",68},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",68},"Polyhedral"]

GraphData[{"Octahedral",68},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",68},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",68},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",68},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",68}],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]

{"Octahedral", 69}

GraphData[{"Octahedral",69},"StandardName"]

Primary

GraphData[{"Octahedral",69}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",69},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",69},"Edges"]

v=Join[Tuples[{{-1,0,1},{0,1}}],{{-1/2,1/2},{1/2,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,5,6,4,2,1,7,4,8,5],e[2,7,3,8,6],{3,4},{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",69},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",69},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",69},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",69}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",69}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Octahedral",69},"Planar"]

GraphData[{"Octahedral",69},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",69}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",69}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{1/2,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,8,1,7,2],e[4,8,3],e[5,7,6],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{1/2,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],e[4,3,5,7,6,4,8,5],e[6,8,7],{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]}},Subdivide[{-1/2,1/2},{1/2,1/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,3,8,2,6,1],e[4,5,6,7,8],{3,6},{1,5},{2,7}},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},{0,5/4},{-1/2,1/4},{-1/4,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,7,4,2,5,1,4,5,6,3],{2,6},e[7,8,5],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",69},"Circulant"]

GraphData[{"Octahedral",69},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",69},"Halin"]

GraphData[{"Octahedral",69},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",69},"LCF"]

GraphData[{"Octahedral",69},"LCFSignature"]

GraphData[{"Octahedral",69},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",69},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",69}],Debug->True]//Timing

GraphData[{"Octahedral",69},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",69},"Matchstick"]

GraphData[{"Octahedral",69},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",69},"Edges"]]

3D All

GraphData[{"Octahedral",69},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",69},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",69},"Polyhedral"]

GraphData[{"Octahedral",69},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",69},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",69},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",69},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",69}],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]

{"Octahedral", 70}

GraphData[{"Octahedral",70},"StandardName"]

Primary

GraphData[{"Octahedral",70}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",70},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",70},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",70},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",70},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",70},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",70}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",70}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",70},"Planar"]

GraphData[{"Octahedral",70},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",70}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",70}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{-1/2,h},{1/2,h},{5/8,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,3,6,5],e[4,6,7,2,8,1,6],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",70},"Circulant"]

GraphData[{"Octahedral",70},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",70},"Halin"]

GraphData[{"Octahedral",70},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",70},"LCF"]

GraphData[{"Octahedral",70},"LCFSignature"]

GraphData[{"Octahedral",70},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",70},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",70}],Debug->True]//Timing

GraphData[{"Octahedral",70},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",70},"Matchstick"]

GraphData[{"Octahedral",70},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",70},"Edges"]]

3D All

GraphData[{"Octahedral",70},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",70},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",70},"Polyhedral"]

GraphData[{"Octahedral",70},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",70},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",70},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",70},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",70}],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]

{"Octahedral", 71}

GraphData[{"Octahedral",71},"StandardName"]

Primary

GraphData[{"Octahedral",71}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",71},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",71},"Edges"]

v={{0,0},{1/2,0},{1,0},{1,1},{1/2,1},{0,1},{1/4,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,5,8,3],e[6,7,2,8,4],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",71},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",71},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",71},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",71}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",71}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"Octahedral",71},"Planar"]

GraphData[{"Octahedral",71},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",71}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",71}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 6

GraphPlot[RotateGraph[,-Pi/6]]

v=Join[UnitCirclePoints[6,Pi/2],{{-1/4,0},{1/4,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,4,8,1],e[3,7,2],e[5,8,6],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",71},"Circulant"]

GraphData[{"Octahedral",71},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",71},"Halin"]

GraphData[{"Octahedral",71},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",71},"LCF"]

GraphData[{"Octahedral",71},"LCFSignature"]

GraphData[{"Octahedral",71},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",71},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",71}],Debug->True]//Timing

GraphData[{"Octahedral",71},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",71},"Matchstick"]

GraphData[{"Octahedral",71},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",71},"Edges"]]

3D All

GraphData[{"Octahedral",71},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",71},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",71},"Polyhedral"]

GraphData[{"Octahedral",71},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",71},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",71},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",71},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",71}],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]

{"Octahedral", 72}

GraphData[{"Octahedral",72},"StandardName"]

Primary

GraphData[{"Octahedral",72}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",72},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",72},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",72},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",72},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",72},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",72}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",72}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",72},"Planar"]

GraphData[{"Octahedral",72},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",72}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",72}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/5},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1,7,2,8,4,7,8,3],e[5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",72},"Circulant"]

GraphData[{"Octahedral",72},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",72},"Halin"]

GraphData[{"Octahedral",72},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",72},"LCF"]

GraphData[{"Octahedral",72},"LCFSignature"]

GraphData[{"Octahedral",72},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",72},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",72}],Debug->True]//Timing

GraphData[{"Octahedral",72},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",72},"Matchstick"]

GraphData[{"Octahedral",72},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",72},"Edges"]]

3D All

GraphData[{"Octahedral",72},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",72},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",72},"Polyhedral"]

GraphData[{"Octahedral",72},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",72},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",72},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",72},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",72}],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]

{"Octahedral", 73}

GraphData[{"Octahedral",73},"StandardName"]

Primary

GraphData[{"Octahedral",73}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",73},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",73},"Edges"]

v={{0,0},{1,0},{1,1},{1/2,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,2,8,4,6,1],e[5,6,7,8,3],{7,4}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",73},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",73},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",73},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",73}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",73}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",73},"Planar"]

GraphData[{"Octahedral",73},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",73}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",73}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{#/2,h}&/@{-1,0,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,5},1,8,3,6,5],e[4,6,7,8,2],e[5,7,1],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",73},"Circulant"]

GraphData[{"Octahedral",73},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",73},"Halin"]

GraphData[{"Octahedral",73},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",73},"LCF"]

GraphData[{"Octahedral",73},"LCFSignature"]

GraphData[{"Octahedral",73},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",73},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",73}],Debug->True]//Timing

GraphData[{"Octahedral",73},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",73},"Matchstick"]

GraphData[{"Octahedral",73},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",73},"Edges"]]

3D All

GraphData[{"Octahedral",73},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",73},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",73},"Polyhedral"]

GraphData[{"Octahedral",73},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",73},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",73},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",73},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",73}],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]

{"Octahedral", 74}

GraphData[{"Octahedral",74},"StandardName"]

Primary

GraphData[{"Octahedral",74}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",74},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",74},"Edges"]

v={{-1,0},{0,0},{1,0},{-1,1},{1,1},{-1/3,1},{1/3,1},{0,2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,5,8,4,1,6,8,7,3],e[4,6,7,5,2,4],e[6,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",74},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",74},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",74},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",74}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",74}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",74},"Planar"]

GraphData[{"Octahedral",74},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",74}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",74}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

Mean[v[[{3,4,6}]]]//FullSimplify

v=Join[UnitCirclePoints[4,Pi/2],{{-1/4,0},{1/4,0},{-1,1}{(1/12) (1+2 (Sqrt[2])),-(1/(3 (Sqrt[2])))},{(1/12) (1+2 (Sqrt[2])),-(1/(3 (Sqrt[2])))}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,6,1],e[2,5,6,4,8,3,7,2],{5,7},{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{-i/4,1/2},{i,-2,2}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,6,2,4,3,8,1,7,3,5,2],e[{4,8}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{-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}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,8,3,7,1],e[1,5,7,4],e[2,5,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",74},"Circulant"]

GraphData[{"Octahedral",74},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",74},"Halin"]

GraphData[{"Octahedral",74},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",74},"LCF"]

GraphData[{"Octahedral",74},"LCFSignature"]

GraphData[{"Octahedral",74},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",74},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",74}],Debug->True]//Timing

GraphData[{"Octahedral",74},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",74},"Matchstick"]

GraphData[{"Octahedral",74},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",74},"Edges"]]

3D All

GraphData[{"Octahedral",74},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",74},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",74},"Polyhedral"]

GraphData[{"Octahedral",74},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",74},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",74},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",74},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",74}],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]

{"Octahedral", 75}

GraphData[{"Octahedral",75},"StandardName"]

Primary

GraphData[{"Octahedral",75}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",75},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",75},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",75},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",75},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",75},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",75}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",75}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",75},"Planar"]

GraphData[{"Octahedral",75},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",75}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",75}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/4,1/2},{1/2,1/2},{3/4,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,4,6,7,8,3,7],e[5,6,1],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/5},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1,7,4,8,3],e[5,6,7,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",75},"Circulant"]

GraphData[{"Octahedral",75},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",75},"Halin"]

GraphData[{"Octahedral",75},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",75},"LCF"]

GraphData[{"Octahedral",75},"LCFSignature"]

GraphData[{"Octahedral",75},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",75},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",75}],Debug->True]//Timing

GraphData[{"Octahedral",75},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",75},"Matchstick"]

GraphData[{"Octahedral",75},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",75},"Edges"]]

3D All

GraphData[{"Octahedral",75},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",75},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",75},"Polyhedral"]

GraphData[{"Octahedral",75},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",75},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",75},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",75},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",75}],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]

{"Octahedral", 76} == {"Triangulated", {8, 11}}

GraphData[{"Octahedral",76},"StandardName"]

{"Octahedral", 77}

GraphData[{"Octahedral",77},"StandardName"]

Primary

GraphData[{"Octahedral",77}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",77},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",77},"Edges"]

s=Sqrt[3]/2;
v={{-1/2-s,1/2},{1/2+s,1/2},{-1/2,1},{1/2,1},{0,1/2},{-1/2,0},{1/2,0}};
AppendTo[v,Mean[v[[{2,4,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,6,7,2,4,3,1,5,8,2],e[3,6,5,4,7,5,3],e[7,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",77},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",77},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",77},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",77}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",77}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",77},"Planar"]

GraphData[{"Octahedral",77},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",77}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",77}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/5},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1,7,2],e[4,7,3,8,4],e[5,6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{1/2,1/4},{0,1/2},{0,3/4},{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,8,1],e[4,8,5,6,4,7,5],e[6,7,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{0,1/2},{0,3/4},{0,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,7,1,8,2],e[4,6,5,7,4],e[6,7,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",77},"Circulant"]

GraphData[{"Octahedral",77},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",77},"Halin"]

GraphData[{"Octahedral",77},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",77},"LCF"]

GraphData[{"Octahedral",77},"LCFSignature"]

GraphData[{"Octahedral",77},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",77},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",77}],Debug->True]//Timing

GraphData[{"Octahedral",77},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",77},"Matchstick"]

GraphData[{"Octahedral",77},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",77},"Edges"]]

3D All

GraphData[{"Octahedral",77},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",77},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",77},"Polyhedral"]

GraphData[{"Octahedral",77},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",77},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",77},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",77},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",77}],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]

{"Octahedral", 78}

GraphData[{"Octahedral",78},"StandardName"]

Primary

GraphData[{"Octahedral",78}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",78},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",78},"Edges"]

RotateGraph[GraphicsToGraph@,Pi]

v={{-1/2,0},{1/2,0},{-1/6,1/2},{1/6,1/2},{-1,1/2},{1,1/2},{-1/2,1},{1/2,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,6,8,3,4,7,5,1,3,7,1],e[4,2,8,4,6],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",78},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",78},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",78},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",78}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",78}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",78},"Planar"]

GraphData[{"Octahedral",78},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",78}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",78}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,1],e[2,8,3,7,2],e[5,6,7,8],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",78},"Circulant"]

GraphData[{"Octahedral",78},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",78},"Halin"]

GraphData[{"Octahedral",78},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",78},"LCF"]

GraphData[{"Octahedral",78},"LCFSignature"]

GraphData[{"Octahedral",78},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",78},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",78}],Debug->True]//Timing

GraphData[{"Octahedral",78},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",78},"Matchstick"]

GraphData[{"Octahedral",78},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",78},"Edges"]]

3D All

GraphData[{"Octahedral",78},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",78},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",78},"Polyhedral"]

GraphData[{"Octahedral",78},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",78},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",78},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",78},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",78}],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]

{"Octahedral", 79} == {"JohnsonSkeleton", 14}

GraphData[{"Octahedral",79},"StandardName"]

{"Octahedral", 80}

GraphData[{"Octahedral",80},"StandardName"]

Primary

GraphData[{"Octahedral",80}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",80},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",80},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",80},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",80},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",80},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",80}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",80}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",80},"Planar"]

GraphData[{"Octahedral",80},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",80}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",80}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,8,3,6,7,3],e[2,5,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",80},"Circulant"]

GraphData[{"Octahedral",80},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",80},"Halin"]

GraphData[{"Octahedral",80},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",80},"LCF"]

GraphData[{"Octahedral",80},"LCFSignature"]

GraphData[{"Octahedral",80},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",80},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",80}],Debug->True]//Timing

GraphData[{"Octahedral",80},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",80},"Matchstick"]

GraphData[{"Octahedral",80},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",80},"Edges"]]

3D All

GraphData[{"Octahedral",80},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",80},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",80},"Polyhedral"]

GraphData[{"Octahedral",80},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",80},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",80},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",80},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",80}],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]

{"Octahedral", 81}

GraphData[{"Octahedral",81},"StandardName"]

Primary

GraphData[{"Octahedral",81}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",81},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",81},"Edges"]

v={{0,0},{1,0},{1,1},{0,1},{-1/2,1/2},{1,1/2},{3/2,1/2},{1/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,7,3,4,5,1,4,8,2,6,3,8,1],e[5,8,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",81},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",81},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",81},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",81}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",81}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",81},"Planar"]

GraphData[{"Octahedral",81},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",81}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",81}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,-4Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{0,#}&/@{h,0,-1/2}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,5,7,1],e[4,6,2,7,4],e[8,7,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Mean[v[[#]]]&/@{{4,6},{4,5,6}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,3,6,7,4,1],e[7,8,5,2],e[6,5,4,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",81},"Circulant"]

GraphData[{"Octahedral",81},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",81},"Halin"]

GraphData[{"Octahedral",81},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",81},"LCF"]

GraphData[{"Octahedral",81},"LCFSignature"]

GraphData[{"Octahedral",81},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",81},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",81}],Debug->True]//Timing

GraphData[{"Octahedral",81},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",81},"Matchstick"]

GraphData[{"Octahedral",81},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",81},"Edges"]]

3D All

GraphData[{"Octahedral",81},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",81},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",81},"Polyhedral"]

GraphData[{"Octahedral",81},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",81},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",81},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",81},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",81}],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]

{"Octahedral", 82}

GraphData[{"Octahedral",82},"StandardName"]

Primary

GraphData[{"Octahedral",82}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",82},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",82},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",82},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",82},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",82},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",82}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",82}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",82},"Planar"]

GraphData[{"Octahedral",82},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",82}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",82}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{6/8,5/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,3,6,4,5,6,7,8,6],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,4,1,5,6,7,8,3,7,4,5],e[4,6,2,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",82},"Circulant"]

GraphData[{"Octahedral",82},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",82},"Halin"]

GraphData[{"Octahedral",82},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",82},"LCF"]

GraphData[{"Octahedral",82},"LCFSignature"]

GraphData[{"Octahedral",82},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",82},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",82}],Debug->True]//Timing

Matchstick

GraphData[{"Octahedral",82},"Matchstick"]

GraphData[{"Octahedral",82},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",82},"Edges"]]

3D All

GraphData[{"Octahedral",82},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",82},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",82},"Polyhedral"]

GraphData[{"Octahedral",82},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",82},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",82},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",82},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",82}],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]

{"Octahedral", 83}

GraphData[{"Octahedral",83},"StandardName"]

Primary

GraphData[{"Octahedral",83}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",83},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",83},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",83},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",83},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",83},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",83}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",83}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",83},"Planar"]

GraphData[{"Octahedral",83},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",83}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",83}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4],CirclePoints[{1/4,0},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,3,7,4,8,1],e[7,8,6,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{5/8,5/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,8,6,4,5,6,7,3,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",83},"Circulant"]

GraphData[{"Octahedral",83},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",83},"Halin"]

GraphData[{"Octahedral",83},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",83},"LCF"]

GraphData[{"Octahedral",83},"LCFSignature"]

GraphData[{"Octahedral",83},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",83},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",83}],Debug->True]//Timing

GraphData[{"Octahedral",83},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",83},"Matchstick"]

GraphData[{"Octahedral",83},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",83},"Edges"]]

3D All

GraphData[{"Octahedral",83},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",83},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",83},"Polyhedral"]

GraphData[{"Octahedral",83},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",83},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",83},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",83},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",83}],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]

{"Octahedral", 84}

GraphData[{"Octahedral",84},"StandardName"]

Primary

GraphData[{"Octahedral",84}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",84},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",84},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",84},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",84},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",84},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",84}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",84}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",84},"Planar"]

GraphData[{"Octahedral",84},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",84}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",84}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,8,3,7,6,8],e[6,5,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",84},"Circulant"]

GraphData[{"Octahedral",84},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",84},"Halin"]

GraphData[{"Octahedral",84},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",84},"LCF"]

GraphData[{"Octahedral",84},"LCFSignature"]

GraphData[{"Octahedral",84},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",84},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",84}],Debug->True]//Timing

GraphData[{"Octahedral",84},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",84},"Matchstick"]

GraphData[{"Octahedral",84},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",84},"Edges"]]

3D All

GraphData[{"Octahedral",84},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",84},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",84},"Polyhedral"]

GraphData[{"Octahedral",84},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",84},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",84},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",84},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",84}],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]

{"Octahedral", 85}

GraphData[{"Octahedral",85},"StandardName"]

Primary

GraphData[{"Octahedral",85}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",85},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",85},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",85},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",85},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",85},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",85}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",85}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",85},"Planar"]

GraphData[{"Octahedral",85},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",85}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",85}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,4,1,5,4,6,2,7,4],e[5,6,7,8,3,7],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",85},"Circulant"]

GraphData[{"Octahedral",85},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",85},"Halin"]

GraphData[{"Octahedral",85},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",85},"LCF"]

GraphData[{"Octahedral",85},"LCFSignature"]

GraphData[{"Octahedral",85},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",85},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",85}],Debug->True]//Timing

GraphData[{"Octahedral",85},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",85},"Matchstick"]

GraphData[{"Octahedral",85},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",85},"Edges"]]

3D All

GraphData[{"Octahedral",85},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",85},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",85},"Polyhedral"]

GraphData[{"Octahedral",85},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",85},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",85},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",85},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",85}],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]

{"Octahedral", 86} == {"Triangulated", {8, 2}}

GraphData[{"Octahedral",86},"StandardName"]

{"Octahedral", 87}

GraphData[{"Octahedral",87},"StandardName"]

Primary

GraphData[{"Octahedral",87}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",87},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",87},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",87},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",87},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",87},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",87}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",87}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",87},"Planar"]

GraphData[{"Octahedral",87},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",87}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",87}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{2/3,1/2},{2/3,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,7,5,4,8,3],e[6,7,8,5],e[5,2,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",87},"Circulant"]

GraphData[{"Octahedral",87},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",87},"Halin"]

GraphData[{"Octahedral",87},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",87},"LCF"]

GraphData[{"Octahedral",87},"LCFSignature"]

GraphData[{"Octahedral",87},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",87},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",87}],Debug->True]//Timing

GraphData[{"Octahedral",87},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",87},"Matchstick"]

GraphData[{"Octahedral",87},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",87},"Edges"]]

3D All

GraphData[{"Octahedral",87},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",87},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",87},"Polyhedral"]

GraphData[{"Octahedral",87},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",87},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",87},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",87},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",87}],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]

{"Octahedral", 88}

GraphData[{"Octahedral",88},"StandardName"]

Primary

GraphData[{"Octahedral",88}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",88},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",88},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",88},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",88},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",88},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",88}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",88}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",88},"Planar"]

GraphData[{"Octahedral",88},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",88}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",88}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{2/3,1/2},{2/3,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,7,5,8,2],e[5,4,8,3],e[6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,8,6,7],e[2,5,6],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",88},"Circulant"]

GraphData[{"Octahedral",88},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",88},"Halin"]

GraphData[{"Octahedral",88},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",88},"LCF"]

GraphData[{"Octahedral",88},"LCFSignature"]

GraphData[{"Octahedral",88},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",88},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",88}],Debug->True]//Timing

GraphData[{"Octahedral",88},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",88},"Matchstick"]

GraphData[{"Octahedral",88},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",88},"Edges"]]

3D All

GraphData[{"Octahedral",88},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",88},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",88},"Polyhedral"]

GraphData[{"Octahedral",88},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",88},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",88},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",88},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",88}],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]

{"Octahedral", 89}

GraphData[{"Octahedral",89},"StandardName"]

Primary

GraphData[{"Octahedral",89}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",89},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",89},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",89},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",89},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",89},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",89}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",89}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",89},"Planar"]

GraphData[{"Octahedral",89},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",89}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",89}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{1/2,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,3],e[2,5,8,2,6,7,8],e[6,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{5/8-1/16,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,6,1,8,2],e[4,8,3],e[5,6,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",89},"Circulant"]

GraphData[{"Octahedral",89},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",89},"Halin"]

GraphData[{"Octahedral",89},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",89},"LCF"]

GraphData[{"Octahedral",89},"LCFSignature"]

GraphData[{"Octahedral",89},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",89},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",89}],Debug->True]//Timing

GraphData[{"Octahedral",89},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",89},"Matchstick"]

GraphData[{"Octahedral",89},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",89},"Edges"]]

3D All

GraphData[{"Octahedral",89},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",89},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",89},"Polyhedral"]

GraphData[{"Octahedral",89},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",89},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",89},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",89},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",89}],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]

{"Octahedral", 90}

GraphData[{"Octahedral",90},"StandardName"]

Primary

GraphData[{"Octahedral",90}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",90},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",90},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",90},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",90},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",90},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",90}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",90}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",90},"Planar"]

GraphData[{"Octahedral",90},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",90}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",90}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/4},{1/2,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,2,7,5,1],e[5,4,8,3],e[6,7,8],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{1/2,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,8,7,6],e[2,5,4,8,3],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{5/8-1/16,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,6,1],e[4,8,3],e[5,6,8,7],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",90},"Circulant"]

GraphData[{"Octahedral",90},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",90},"Halin"]

GraphData[{"Octahedral",90},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",90},"LCF"]

GraphData[{"Octahedral",90},"LCFSignature"]

GraphData[{"Octahedral",90},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",90},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",90}],Debug->True]//Timing

GraphData[{"Octahedral",90},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",90},"Matchstick"]

GraphData[{"Octahedral",90},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",90},"Edges"]]

3D All

GraphData[{"Octahedral",90},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",90},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",90},"Polyhedral"]

GraphData[{"Octahedral",90},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",90},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",90},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",90},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",90}],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]

{"Octahedral", 91} == {"SelfDual", {8, 6}}

GraphData[{"Octahedral",91},"StandardName"]

{"Octahedral", 92}

GraphData[{"Octahedral",92},"StandardName"]

Primary

GraphData[{"Octahedral",92}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",92},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",92},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",92},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",92},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",92},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",92}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",92}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",92},"Planar"]

GraphData[{"Octahedral",92},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",92}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",92}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{-1/2,h},{1/2,h}}];
AppendTo[v,Mean[v[[{1,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,7,3,6,5],e[4,6,7,2],e[1,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,7,6,8,3],e[6,5,8],e[8,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",92},"Circulant"]

GraphData[{"Octahedral",92},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",92},"Halin"]

GraphData[{"Octahedral",92},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",92},"LCF"]

GraphData[{"Octahedral",92},"LCFSignature"]

GraphData[{"Octahedral",92},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",92},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",92}],Debug->True]//Timing

GraphData[{"Octahedral",92},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",92},"Matchstick"]

GraphData[{"Octahedral",92},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",92},"Edges"]]

3D All

GraphData[{"Octahedral",92},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",92},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",92},"Polyhedral"]

GraphData[{"Octahedral",92},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",92},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",92},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",92},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",92}],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]

{"Octahedral", 93}

GraphData[{"Octahedral",93},"StandardName"]

Primary

GraphData[{"Octahedral",93}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",93},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",93},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",93},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",93},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",93},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",93}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",93}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",93},"Planar"]

GraphData[{"Octahedral",93},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",93}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",93}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4],CirclePoints[1/4,4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5],e[6,1,8,3,7,2],e[4,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,3,6,5,8,6,7],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",93},"Circulant"]

GraphData[{"Octahedral",93},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",93},"Halin"]

GraphData[{"Octahedral",93},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",93},"LCF"]

GraphData[{"Octahedral",93},"LCFSignature"]

GraphData[{"Octahedral",93},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",93},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",93}],Debug->True]//Timing

GraphData[{"Octahedral",93},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",93},"Matchstick"]

GraphData[{"Octahedral",93},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",93},"Edges"]]

3D All

GraphData[{"Octahedral",93},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",93},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",93},"Polyhedral"]

GraphData[{"Octahedral",93},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",93},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",93},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",93},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",93}],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]

{"Octahedral", 94}

GraphData[{"Octahedral",94},"StandardName"]

Primary

GraphData[{"Octahedral",94}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",94},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",94},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",94},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",94},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",94},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",94}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",94}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",94},"Planar"]

GraphData[{"Octahedral",94},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",94}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",94}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/3+1/12},{1/2,2/3-1/12},{3/4,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,8,7,4,8,3],{2,8},e[4,5,1],e[7,5,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4],CirclePoints[1/4,4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,8,5,6,7,8,3,7,2],e[4,1,6],e[8,1,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,3],e[7,6,5,8,2],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",94},"Circulant"]

GraphData[{"Octahedral",94},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",94},"Halin"]

GraphData[{"Octahedral",94},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",94},"LCF"]

GraphData[{"Octahedral",94},"LCFSignature"]

GraphData[{"Octahedral",94},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",94},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",94}],Debug->True]//Timing

GraphData[{"Octahedral",94},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",94},"Matchstick"]

GraphData[{"Octahedral",94},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",94},"Edges"]]

3D All

GraphData[{"Octahedral",94},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",94},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",94},"Polyhedral"]

GraphData[{"Octahedral",94},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",94},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",94},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",94},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",94}],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]

{"Octahedral", 95}

GraphData[{"Octahedral",95},"StandardName"]

Primary

GraphData[{"Octahedral",95}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",95},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",95},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",95},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",95},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",95},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",95}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",95}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",95},"Planar"]

GraphData[{"Octahedral",95},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",95}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",95}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{3/4,1/2},{1/2,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,3],e[2,7,5,8,6,2],e[5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{3/4,1/2},{1/2,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,3,6,2,7,5,8,6],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,7,8,6,5,2,7],e[3,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",95},"Circulant"]

GraphData[{"Octahedral",95},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",95},"Halin"]

GraphData[{"Octahedral",95},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",95},"LCF"]

GraphData[{"Octahedral",95},"LCFSignature"]

GraphData[{"Octahedral",95},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",95},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",95}],Debug->True]//Timing

GraphData[{"Octahedral",95},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",95},"Matchstick"]

GraphData[{"Octahedral",95},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",95},"Edges"]]

3D All

GraphData[{"Octahedral",95},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",95},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",95},"Polyhedral"]

GraphData[{"Octahedral",95},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",95},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",95},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",95},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",95}],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]

{"Octahedral", 96}

GraphData[{"Octahedral",96},"StandardName"]

Primary

GraphData[{"Octahedral",96}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",96},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",96},"Edges"]

v={{0,0},{1/3,0},{1,0},{1,1},{1/3,1},{0,1},{0,1/2},{2/3,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,6],e[2,7,5,2],e[3,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",96},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",96},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",96},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",96}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",96}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",96},"Planar"]

GraphData[{"Octahedral",96},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",96}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",96}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/3},{1/4,2/3},{1/2,2/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2],e[5,8,3,7,4,6,5],e[6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[UnitCirclePoints[4,Pi/2],CirclePoints[1/4,4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,6,7,2],e[1,6,5,3,8,7,1,4],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4],CirclePoints[{1/4,Pi/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,7,1,2,3,4,1,8,5,3,6],e[4,7],e[8,6,5,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{-1/4,3/4},{0,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,8,7,6,1],e[4,7,5],e[6,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/4,1/4},{1/4,1/4},{-1/4,3/4},{0,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2],e[4,6,3,8,5,7,4],e[6,7,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},{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,8,7,6,1],e[3,7,5,4,6],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",96},"Circulant"]

GraphData[{"Octahedral",96},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",96},"Halin"]

GraphData[{"Octahedral",96},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",96},"LCF"]

GraphData[{"Octahedral",96},"LCFSignature"]

GraphData[{"Octahedral",96},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",96},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",96}],Debug->True]//Timing

GraphData[{"Octahedral",96},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",96},"Matchstick"]

GraphData[{"Octahedral",96},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",96},"Edges"]]

3D All

GraphData[{"Octahedral",96},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",96},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",96},"Polyhedral"]

GraphData[{"Octahedral",96},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",96},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",96},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",96},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",96}],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]

{"Octahedral", 97}

GraphData[{"Octahedral",97},"StandardName"]

Primary

GraphData[{"Octahedral",97}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",97},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",97},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",97},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",97},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",97},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",97}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",97}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",97},"Planar"]

GraphData[{"Octahedral",97},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",97}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",97}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{5/8+1/16,3/8+1/16}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,6,4,5,2,6],e[3,7,8],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",97},"Circulant"]

GraphData[{"Octahedral",97},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",97},"Halin"]

GraphData[{"Octahedral",97},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",97},"LCF"]

GraphData[{"Octahedral",97},"LCFSignature"]

GraphData[{"Octahedral",97},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",97},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",97}],Debug->True]//Timing

GraphData[{"Octahedral",97},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",97},"Matchstick"]

GraphData[{"Octahedral",97},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",97},"Edges"]]

3D All

GraphData[{"Octahedral",97},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",97},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",97},"Polyhedral"]

GraphData[{"Octahedral",97},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",97},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",97},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",97},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",97}],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]

{"Octahedral", 98}

GraphData[{"Octahedral",98},"StandardName"]

Primary

GraphData[{"Octahedral",98}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",98},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",98},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",98},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",98},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",98},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",98}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",98}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",98},"Planar"]

GraphData[{"Octahedral",98},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",98}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",98}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/4},{1/2,1/2},{3/4,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[2,6,5,3,8,2,7,6],e[5,7,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{1/2,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,4,5,6,2],e[6,7,5],e[4,8,3],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",98},"Circulant"]

GraphData[{"Octahedral",98},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",98},"Halin"]

GraphData[{"Octahedral",98},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",98},"LCF"]

GraphData[{"Octahedral",98},"LCFSignature"]

GraphData[{"Octahedral",98},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",98},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",98}],Debug->True]//Timing

GraphData[{"Octahedral",98},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",98},"Matchstick"]

GraphData[{"Octahedral",98},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",98},"Edges"]]

3D All

GraphData[{"Octahedral",98},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",98},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",98},"Polyhedral"]

GraphData[{"Octahedral",98},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",98},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",98},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",98},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",98}],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]

{"Octahedral", 99}

GraphData[{"Octahedral",99},"StandardName"]

Primary

GraphData[{"Octahedral",99}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",99},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",99},"Edges"]

v={{0,0},{1,0},{1,1},{1/2,1},{0,1},{1/4,2/3},{3/4,2/3},{1/2,1/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,6,4,7,2],e[5,6,1],e[8,7,3],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",99},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",99},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",99},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",99}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",99}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",99},"Planar"]

GraphData[{"Octahedral",99},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",99}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",99}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,h},{-1/2,-1/4},{1/2,-1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,6,7,5],e[1,7,4,6,2],{7,8},{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,8,2,7,3],e[8,7,6,5],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",99},"Circulant"]

GraphData[{"Octahedral",99},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",99},"Halin"]

GraphData[{"Octahedral",99},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",99},"LCF"]

GraphData[{"Octahedral",99},"LCFSignature"]

GraphData[{"Octahedral",99},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",99},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",99}],Debug->True]//Timing

GraphData[{"Octahedral",99},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",99},"Matchstick"]

GraphData[{"Octahedral",99},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",99},"Edges"]]

3D All

GraphData[{"Octahedral",99},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",99},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",99},"Polyhedral"]

GraphData[{"Octahedral",99},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",99},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",99},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",99},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",99}],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]

{"Octahedral", 100}

GraphData[{"Octahedral",100},"StandardName"]

Primary

GraphData[{"Octahedral",100}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",100},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",100},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",100},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",100},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",100},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",100}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",100}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",100},"Planar"]

GraphData[{"Octahedral",100},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",100}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",100}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/3},{2/3,1/3},{2/3,2/3},{1/3,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,7,3],e[5,2,7],e[6,5,8,7],e[4,8,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/4,1/2},{1/2,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,6,1],e[5,6,4,8,3],e[2,7,8],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",100},"Circulant"]

GraphData[{"Octahedral",100},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",100},"Halin"]

GraphData[{"Octahedral",100},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",100},"LCF"]

GraphData[{"Octahedral",100},"LCFSignature"]

GraphData[{"Octahedral",100},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",100},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",100}],Debug->True]//Timing

GraphData[{"Octahedral",100},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",100},"Matchstick"]

GraphData[{"Octahedral",100},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",100},"Edges"]]

3D All

GraphData[{"Octahedral",100},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",100},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",100},"Polyhedral"]

GraphData[{"Octahedral",100},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",100},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",100},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",100},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",100}],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]

{"Octahedral", 101}

GraphData[{"Octahedral",101},"StandardName"]

Primary

GraphData[{"Octahedral",101}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",101},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",101},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",101},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",101},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",101},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",101}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",101}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",101},"Planar"]

GraphData[{"Octahedral",101},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",101}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",101}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,3/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[6,2,5,3,6,8,2,7,3],e[8,5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",101},"Circulant"]

GraphData[{"Octahedral",101},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",101},"Halin"]

GraphData[{"Octahedral",101},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",101},"LCF"]

GraphData[{"Octahedral",101},"LCFSignature"]

GraphData[{"Octahedral",101},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",101},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",101}],Debug->True]//Timing

GraphData[{"Octahedral",101},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",101},"Matchstick"]

GraphData[{"Octahedral",101},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",101},"Edges"]]

3D All

GraphData[{"Octahedral",101},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",101},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",101},"Polyhedral"]

GraphData[{"Octahedral",101},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",101},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",101},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",101},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",101}],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]

{"Octahedral", 102}

GraphData[{"Octahedral",102},"StandardName"]

Primary

GraphData[{"Octahedral",102}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",102},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",102},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",102},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",102},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",102},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",102}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",102}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",102},"Planar"]

GraphData[{"Octahedral",102},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",102}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",102}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{-1/2,h},{1/2,h}}];
AppendTo[v,Mean[v[[{1,6,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,3,6,5],e[4,6,7,2],e[1,6,8,1],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",102},"Circulant"]

GraphData[{"Octahedral",102},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",102},"Halin"]

GraphData[{"Octahedral",102},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",102},"LCF"]

GraphData[{"Octahedral",102},"LCFSignature"]

GraphData[{"Octahedral",102},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",102},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",102}],Debug->True]//Timing

GraphData[{"Octahedral",102},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",102},"Matchstick"]

GraphData[{"Octahedral",102},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",102},"Edges"]]

3D All

GraphData[{"Octahedral",102},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",102},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",102},"Polyhedral"]

GraphData[{"Octahedral",102},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",102},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",102},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",102},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",102}],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]

{"Octahedral", 103}

GraphData[{"Octahedral",103},"StandardName"]

Primary

GraphData[{"Octahedral",103}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",103},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",103},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",103},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",103},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",103},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",103}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",103}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",103},"Planar"]

GraphData[{"Octahedral",103},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",103}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",103}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,3/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,3,7,2,5,6,7],e[2,8,5],e[8,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",103},"Circulant"]

GraphData[{"Octahedral",103},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",103},"Halin"]

GraphData[{"Octahedral",103},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",103},"LCF"]

GraphData[{"Octahedral",103},"LCFSignature"]

GraphData[{"Octahedral",103},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",103},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",103}],Debug->True]//Timing

GraphData[{"Octahedral",103},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",103},"Matchstick"]

GraphData[{"Octahedral",103},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",103},"Edges"]]

3D All

GraphData[{"Octahedral",103},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",103},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",103},"Polyhedral"]

GraphData[{"Octahedral",103},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",103},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",103},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",103},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",103}],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]

{"Octahedral", 104}

GraphData[{"Octahedral",104},"StandardName"]

Primary

GraphData[{"Octahedral",104}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",104},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",104},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",104},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",104},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",104},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",104}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",104}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",104},"Planar"]

GraphData[{"Octahedral",104},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",104}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",104}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{3/4,1/3},{3/4,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,8,3,6,4],e[1,5,2,6,7,8],{5,6},e[2,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",104},"Circulant"]

GraphData[{"Octahedral",104},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",104},"Halin"]

GraphData[{"Octahedral",104},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",104},"LCF"]

GraphData[{"Octahedral",104},"LCFSignature"]

GraphData[{"Octahedral",104},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",104},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",104}],Debug->True]//Timing

GraphData[{"Octahedral",104},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",104},"Matchstick"]

GraphData[{"Octahedral",104},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",104},"Edges"]]

3D All

GraphData[{"Octahedral",104},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",104},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",104},"Polyhedral"]

GraphData[{"Octahedral",104},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",104},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",104},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",104},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",104}],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]

{"Octahedral", 105}

GraphData[{"Octahedral",105},"StandardName"]

Primary

GraphData[{"Octahedral",105}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",105},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",105},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",105},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",105},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",105},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",105}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",105}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",105},"Planar"]

GraphData[{"Octahedral",105},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",105}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",105}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/3},{1/2,1/3},{1/3,2/3},{2/3,2/3}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,7,8,3,6,7,3],e[8,6,5],e[4,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/6,1/2},{2/6,1/2},{3/6,1/2},{3/6,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[7,8,2,7,6,5,8,3],e[5,2,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",105},"Circulant"]

GraphData[{"Octahedral",105},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",105},"Halin"]

GraphData[{"Octahedral",105},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",105},"LCF"]

GraphData[{"Octahedral",105},"LCFSignature"]

GraphData[{"Octahedral",105},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",105},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",105}],Debug->True]//Timing

GraphData[{"Octahedral",105},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",105},"Matchstick"]

GraphData[{"Octahedral",105},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",105},"Edges"]]

3D All

GraphData[{"Octahedral",105},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",105},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",105},"Polyhedral"]

GraphData[{"Octahedral",105},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",105},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",105},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",105},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",105}],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]

{"Octahedral", 106}

GraphData[{"Octahedral",106},"StandardName"]

Primary

GraphData[{"Octahedral",106}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",106},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",106},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",106},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",106},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",106},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",106}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",106}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",106},"Planar"]

GraphData[{"Octahedral",106},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",106}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",106}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,h}}];
v=Join[v,Mean[v[[#]]]&/@{{2,6},{4,6,5}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5,8,6,3,7],e[2,7,6,4,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{5/8-1/16,3/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,8,5,6,7,2,8],e[4,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",106},"Circulant"]

GraphData[{"Octahedral",106},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",106},"Halin"]

GraphData[{"Octahedral",106},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",106},"LCF"]

GraphData[{"Octahedral",106},"LCFSignature"]

GraphData[{"Octahedral",106},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",106},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",106}],Debug->True]//Timing

GraphData[{"Octahedral",106},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",106},"Matchstick"]

GraphData[{"Octahedral",106},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",106},"Edges"]]

3D All

GraphData[{"Octahedral",106},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",106},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",106},"Polyhedral"]

GraphData[{"Octahedral",106},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",106},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",106},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",106},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",106}],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]

{"Octahedral", 107}

GraphData[{"Octahedral",107},"StandardName"]

Primary

GraphData[{"Octahedral",107}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",107},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",107},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",107},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",107},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",107},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",107}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",107}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",107},"Planar"]

GraphData[{"Octahedral",107},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",107}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",107}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{1/2,3/4},{1/4,1/2},{3/8-1/16,3/8+1/16}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2],e[1,7,5,8,1],e[8,7,4,6,3],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{3/4,1/2},{1/2,5/8},{1/2,3/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,6,8,5,6,2,5],{2,8},e[4,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[5,6,7,8,3,7,4],e[6,2,8],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",107},"Circulant"]

GraphData[{"Octahedral",107},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",107},"Halin"]

GraphData[{"Octahedral",107},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",107},"LCF"]

GraphData[{"Octahedral",107},"LCFSignature"]

GraphData[{"Octahedral",107},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",107},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",107}],Debug->True]//Timing

GraphData[{"Octahedral",107},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",107},"Matchstick"]

GraphData[{"Octahedral",107},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",107},"Edges"]]

3D All

GraphData[{"Octahedral",107},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",107},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",107},"Polyhedral"]

GraphData[{"Octahedral",107},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",107},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",107},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",107},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",107}],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]

{"Octahedral", 108} == {"SelfDual", {8, 7}}

GraphData[{"Octahedral",108},"StandardName"]

{"Octahedral", 109}

GraphData[{"Octahedral",109},"StandardName"]

Primary

GraphData[{"Octahedral",109}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",109},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",109},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",109},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",109},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",109},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",109},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",109}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",109}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",109},"Planar"]

GraphData[{"Octahedral",109},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",109}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",109}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{1/4,1/2},{1/2,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,6,4,5,2],e[1,6,5,8,3],{4,8},e[3,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{5/8,3/8+1/16}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,6,4,5,2,8,7,3],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",109},"Circulant"]

GraphData[{"Octahedral",109},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",109},"Halin"]

GraphData[{"Octahedral",109},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",109},"LCF"]

GraphData[{"Octahedral",109},"LCFSignature"]

GraphData[{"Octahedral",109},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",109},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",109}],Debug->True]//Timing

GraphData[{"Octahedral",109},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",109},"Matchstick"]

GraphData[{"Octahedral",109},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",109},"Edges"]]

3D All

GraphData[{"Octahedral",109},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",109},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",109},"Polyhedral"]

GraphData[{"Octahedral",109},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",109},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",109},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",109},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",109}],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]

{"Octahedral", 110}

GraphData[{"Octahedral",110},"StandardName"]

Primary

GraphData[{"Octahedral",110}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",110},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",110},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",110},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",110},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",110},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",110},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",110}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",110}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",110},"Planar"]

GraphData[{"Octahedral",110},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",110}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",110}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{4/6,1/2},{5/6,1/2},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,2,5,4],e[8,5,6,7,3,6],{1,5},{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{5/8,3/8+1/16}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,3],e[5,6,7,8,6],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/5},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1,8,7,6,5],e[4,8,3],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",110},"Circulant"]

GraphData[{"Octahedral",110},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",110},"Halin"]

GraphData[{"Octahedral",110},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",110},"LCF"]

GraphData[{"Octahedral",110},"LCFSignature"]

GraphData[{"Octahedral",110},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",110},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",110}],Debug->True]//Timing

GraphData[{"Octahedral",110},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",110},"Matchstick"]

GraphData[{"Octahedral",110},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",110},"Edges"]]

3D All

GraphData[{"Octahedral",110},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",110},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",110},"Polyhedral"]

GraphData[{"Octahedral",110},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",110},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",110},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",110},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",110}],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]

{"Octahedral", 111}

GraphData[{"Octahedral",111},"StandardName"]

Primary

GraphData[{"Octahedral",111}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",111},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",111},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",111},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",111},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",111},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",111},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",111}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",111}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",111},"Planar"]

GraphData[{"Octahedral",111},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",111}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",111}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=Mean[v[[{2,4}]]]//FullSimplify

RegionIntersection[Line[v[[{1,4}]]],InfiniteLine[h,v[[3]]]]//FullSimplify

v=Join[UnitCirclePoints[5],Subdivide[h,{0,-(1/(Sqrt[5+2 (Sqrt[5])]))},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,1,2,3,4,5,1,8,4,6,2],e[5,8,7,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,3,7,4,6,5,8],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,8,7,3],e[5,6,7,2,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",111},"Circulant"]

GraphData[{"Octahedral",111},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",111},"Halin"]

GraphData[{"Octahedral",111},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",111},"LCF"]

GraphData[{"Octahedral",111},"LCFSignature"]

GraphData[{"Octahedral",111},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",111},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",111}],Debug->True]//Timing

GraphData[{"Octahedral",111},"Graph","UnitDistance"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",111},"Edges"]]

3D All

GraphData[{"Octahedral",111},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",111},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",111},"Polyhedral"]

GraphData[{"Octahedral",111},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",111},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",111},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",111},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",111}],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]

{"Octahedral", 112}

GraphData[{"Octahedral",112},"StandardName"]

Primary

GraphData[{"Octahedral",112}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",112},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",112},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",112},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",112},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",112},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",112}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",112}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",112},"Planar"]

GraphData[{"Octahedral",112},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",112}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",112}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{3/4,1/2},{1/2,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,1,2,3,4,1,5,8,4,5,6,2,7,6,3],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Tuples[{1,3}/4,2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,4,6,5,7],e[2,7,6],e[3,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,3/4},{1/2,3/4},{3/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,4,6,1],e[5,2,8,3],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",112},"Circulant"]

GraphData[{"Octahedral",112},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",112},"Halin"]

GraphData[{"Octahedral",112},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",112},"LCF"]

GraphData[{"Octahedral",112},"LCFSignature"]

GraphData[{"Octahedral",112},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",112},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",112}],Debug->True]//Timing

GraphData[{"Octahedral",112},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",112},"Matchstick"]

GraphData[{"Octahedral",112},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",112},"Edges"]]

3D All

GraphData[{"Octahedral",112},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",112},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",112},"Polyhedral"]

GraphData[{"Octahedral",112},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",112},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",112},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",112},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",112}],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]

{"Octahedral", 113}

GraphData[{"Octahedral",113},"StandardName"]

Primary

GraphData[{"Octahedral",113}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",113},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",113},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",113},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",113},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",113},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",113},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",113}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",113}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",113},"Planar"]

GraphData[{"Octahedral",113},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",113}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",113}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4}},Most@Subdivide[{1/2,1/2},{1,1/2},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1],e[5,6,7,8],e[2,8,3,6,4],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/5},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1,8,2],e[4,8,3],{2,7},e[{5,8}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",113},"Circulant"]

GraphData[{"Octahedral",113},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",113},"Halin"]

GraphData[{"Octahedral",113},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",113},"LCF"]

GraphData[{"Octahedral",113},"LCFSignature"]

GraphData[{"Octahedral",113},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",113},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",113}],Debug->True]//Timing

GraphData[{"Octahedral",113},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",113},"Matchstick"]

GraphData[{"Octahedral",113},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",113},"Edges"]]

3D All

GraphData[{"Octahedral",113},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",113},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",113},"Polyhedral"]

GraphData[{"Octahedral",113},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",113},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",113},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",113},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",113}],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]

{"Octahedral", 114}

GraphData[{"Octahedral",114},"StandardName"]

Primary

GraphData[{"Octahedral",114}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",114},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",114},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",114},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",114},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",114},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",114},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",114}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",114}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",114},"Planar"]

GraphData[{"Octahedral",114},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",114}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",114}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5]];
v=Join[v,Table[{i/2,h},{i,-1,1}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,3,6,5],e[6,1,7],e[4,6,7,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4}},Rest@Subdivide[{0,1/2},{1/2,1/2},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,4,6,1],e[6,7,8,5],{3,8},{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",114},"Circulant"]

GraphData[{"Octahedral",114},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",114},"Halin"]

GraphData[{"Octahedral",114},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",114},"LCF"]

GraphData[{"Octahedral",114},"LCFSignature"]

GraphData[{"Octahedral",114},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",114},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",114}],Debug->True]//Timing

GraphData[{"Octahedral",114},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",114},"Matchstick"]

GraphData[{"Octahedral",114},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",114},"Edges"]]

3D All

GraphData[{"Octahedral",114},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",114},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",114},"Polyhedral"]

GraphData[{"Octahedral",114},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",114},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",114},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",114},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",114}],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]

{"Octahedral", 115}

GraphData[{"Octahedral",115},"StandardName"]

Primary

GraphData[{"Octahedral",115}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",115},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",115},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",115},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",115},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",115},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",115},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",115}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",115}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",115},"Planar"]

GraphData[{"Octahedral",115},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",115}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",115}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,3,6,2,5,8,7,4,5,6],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,7,3,8,2,6],e[5,6,7,8],e[5,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",115},"Circulant"]

GraphData[{"Octahedral",115},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",115},"Halin"]

GraphData[{"Octahedral",115},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",115},"LCF"]

GraphData[{"Octahedral",115},"LCFSignature"]

GraphData[{"Octahedral",115},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",115},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",115}],Debug->True]//Timing

GraphData[{"Octahedral",115},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",115},"Matchstick"]

GraphData[{"Octahedral",115},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",115},"Edges"]]

3D All

GraphData[{"Octahedral",115},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",115},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",115},"Polyhedral"]

GraphData[{"Octahedral",115},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",115},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",115},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",115},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",115}],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]

{"Octahedral", 116}

GraphData[{"Octahedral",116},"StandardName"]

Primary

GraphData[{"Octahedral",116}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",116},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",116},"Edges"]

v={2#,#2}&@@@{{0,0},{1/2,0},{1,0},{1,1},{1/2,1},{0,1},{1/4,1/2},{1/2,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,8,6,1,7,5,3],e[2,4,5,6,7],e[2,5,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",116},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",116},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",116},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",116},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",116}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",116}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",116},"Planar"]

GraphData[{"Octahedral",116},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",116}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",116}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

RegionIntersection[Line[v[[{1,4}]]],Line[v[[{2,5}]]]]//FullSimplify

v=Join[UnitCirclePoints[5],Table[{i/2,-(Sqrt[1-(2/(Sqrt[5]))])},{i,-1,1}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,7,6,5],e[6,4,7,2,8],e[3,7,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/5,1/2},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[7,3,8,2,6],e[5,6,7,8],e[5,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",116},"Circulant"]

GraphData[{"Octahedral",116},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",116},"Halin"]

GraphData[{"Octahedral",116},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",116},"LCF"]

GraphData[{"Octahedral",116},"LCFSignature"]

GraphData[{"Octahedral",116},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",116},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",116}],Debug->True]//Timing

GraphData[{"Octahedral",116},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",116},"Matchstick"]

GraphData[{"Octahedral",116},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",116},"Edges"]]

3D All

GraphData[{"Octahedral",116},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",116},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",116},"Polyhedral"]

GraphData[{"Octahedral",116},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",116},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",116},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",116},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",116}],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]

{"Octahedral", 117}

GraphData[{"Octahedral",117},"StandardName"]

Primary

GraphData[{"Octahedral",117}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",117},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",117},"Edges"]

v={{0,0},{1,0},{1,1},{1/2,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,7,8,2],e[6,5,7,3,8],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",117},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",117},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",117},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",117},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",117}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",117}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",117},"Planar"]

GraphData[{"Octahedral",117},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",117}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",117}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5 #1

GraphPlot[RotateGraph[,-4Pi/5]]

h=v[[3,2]]//FullSimplify

v=Join[UnitCirclePoints[5],Table[{i/2,h-1},{i,-1,1}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,7,6,5],e[6,4,7,2,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #2

GraphPlot[RotateGraph[,4Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],Table[{i/2,h},{i,-1,1}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,3,6,5],e[4,6,7,8,2],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",117},"Circulant"]

GraphData[{"Octahedral",117},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",117},"Halin"]

GraphData[{"Octahedral",117},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",117},"LCF"]

GraphData[{"Octahedral",117},"LCFSignature"]

GraphData[{"Octahedral",117},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",117},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",117}],Debug->True]//Timing

GraphData[{"Octahedral",117},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",117},"Matchstick"]

GraphData[{"Octahedral",117},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",117},"Edges"]]

3D All

GraphData[{"Octahedral",117},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",117},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",117},"Polyhedral"]

GraphData[{"Octahedral",117},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",117},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",117},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",117},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",117}],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]

{"Octahedral", 118}

GraphData[{"Octahedral",118},"StandardName"]

Primary

GraphData[{"Octahedral",118}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",118},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",118},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",118},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",118},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",118},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",118},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",118}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",118}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",118},"Planar"]

GraphData[{"Octahedral",118},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",118}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",118}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h

v=Join[UnitCirclePoints[5],Table[{i/2,(Sqrt[(1/10) (5+(Sqrt[5]))])-1},{i,-1,1}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,5,6,7,8,1],e[6,4,7,2,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{i/4,1/2},{i,-2,2}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,3,8,2,7,3,5,1],e[4,5,6,7,8],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",118},"Circulant"]

GraphData[{"Octahedral",118},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",118},"Halin"]

GraphData[{"Octahedral",118},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",118},"LCF"]

GraphData[{"Octahedral",118},"LCFSignature"]

GraphData[{"Octahedral",118},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",118},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",118}],Debug->True]//Timing

GraphData[{"Octahedral",118},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",118},"Matchstick"]

GraphData[{"Octahedral",118},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",118},"Edges"]]

3D All

GraphData[{"Octahedral",118},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",118},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",118},"Polyhedral"]

GraphData[{"Octahedral",118},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",118},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",118},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",118},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",118}],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]

{"Octahedral", 119}

GraphData[{"Octahedral",119},"StandardName"]

Primary

GraphData[{"Octahedral",119}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",119},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",119},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",119},"Edges"],Pi]

v={#-1/2,#2}&@@@{{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{3/2,1/2},{1/2,3/2},{-1/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,1,2,6,3,7,4,8,1,5,3,4,5,2,3],e[8,5,6],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RotateGraph[Graph[GraphData[{"Octahedral",119},"Edges"],GraphLayout->"RadialEmbedding"],3Pi/7]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,8,7,5,3,1],e[6,8,2],e[5,8,3],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"Octahedral",119},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",119},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",119},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",119}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",119}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",119},"Planar"]

GraphData[{"Octahedral",119},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",119}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",119}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,2,7,3,8,4,5,1],e[5,6,7],e[4,6,3],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Subdivide[v[[6]],v[[4]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,3,6,7,8,4,1,8,5,7,3],e[6,5,4],{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",119},{"RCN","CN"}]

GraphData[{"Octahedral",119},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",119}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",119}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",119}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",119},"Circulant"]

GraphData[{"Octahedral",119},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",119},"Halin"]

GraphData[{"Octahedral",119},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",119},"LCF"]

GraphData[{"Octahedral",119},"LCFSignature"]

GraphData[{"Octahedral",119},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",119},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",119}],Debug->True]//Timing

GraphData[{"Octahedral",119},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",119},"Matchstick"]

GraphData[{"Octahedral",119},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",119},"Edges"]]

3D All

GraphData[{"Octahedral",119},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",119},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",119},"Polyhedral"]

GraphData[{"Octahedral",119},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",119},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",119},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",119},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",119}],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]

{"Octahedral", 120}

GraphData[{"Octahedral",120},"StandardName"]

Primary

GraphData[{"Octahedral",120}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",120},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",120},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",120},"Edges"],Pi]

v={{-1/2,0},{1/2,0},{0,1/2},{-1,1/2},{1,1/2},{-1/2,1},{1/2,1},{0,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,5,7,8,6,4,1,6,7,2,3,8],e[4,3,5],e[1,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",120},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",120},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",120},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",120}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",120}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",120},"Planar"]

GraphData[{"Octahedral",120},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",120}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",120}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,6,1,2,3,4,1,5,2,6,4,7,3,8,2],e[5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,1/2},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,2,6,5,7,2,5],e[6,7,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",120},{"RCN","CN"}]

GraphData[{"Octahedral",120},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",120}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",120}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",120}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",120},"Circulant"]

GraphData[{"Octahedral",120},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",120},"Halin"]

GraphData[{"Octahedral",120},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",120},"LCF"]

GraphData[{"Octahedral",120},"LCFSignature"]

UnitDistance

GraphData[{"Octahedral",120},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",120}],Debug->True]//Timing

GraphData[{"Octahedral",120},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",120},"Matchstick"]

GraphData[{"Octahedral",120},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",120},"Edges"]]

3D All

GraphData[{"Octahedral",120},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",120},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",120},"Polyhedral"]

GraphData[{"Octahedral",120},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",120},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",120},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",120},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",120}],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]

{"Octahedral", 121}

GraphData[{"Octahedral",121},"StandardName"]

Primary

GraphData[{"Octahedral",121}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",121},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Octahedral",121},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",121},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",121},"Edges"]

v={{-1/2,0},{1/2,0},{0,1/2},{-1,1/2},{1,1/2},{-1/2,1},{1/2,1},{0,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,5,7,8,6,4,1,6,7,2,3,1],e[4,3,5],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"Octahedral",121},"Edges"],GraphLayout->"SpringEmbedding"]

v={{0,0},{-1/2,1},{1/2,1},{-3/2,2},{-1/2,2},{1/2,2},{3/2,2},{0,3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,7,8,4,2,1,8,5,2,3,6,8],e[4,5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",121},"Edges"],GraphLayout->"RadialEmbedding"],2.1]

v={{-1/2,0},{1/2,0},{0,1/2},{-1/2,1},{0,1},{1/2,1},{-1/4,3/2},{1/4,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,6,8,7,4,1,7,5,8,2,3,1],e[4,5,6],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",121},"Edges"],GraphLayout->"RadialEmbedding"],2.1]

v=Join[UnitCirclePoints[6],{{0,0},{0,-1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,6,4,7,3,1],e[5,7,2],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"Octahedral",121},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",121},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",121},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",121}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",121}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",121},"Planar"]

GraphData[{"Octahedral",121},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",121}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",121}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{1/2,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,3,6,2,7,1],e[7,6,8],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,1/2},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,2,6,5,7,2],e[6,7,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Subdivide[v[[6]],v[[4]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,8,7,6,3,7,5,8,1],e[6,5,4],{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/2},{1/2,1/2},3],{{0,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,2,6,8,5,1],e[4,3,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",121},{"RCN","CN"}]

GraphData[{"Octahedral",121},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",121}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",121}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",121}],"CrossingNumber"->cn]]

v=Join[UnitCirclePoints[4,-Pi/2]];
v=Join[v,Subdivide[v[[4]],v[[2]],4][[2;;-2]]];
AppendTo[v,Mean[v[[{3,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,8,7,1],e[4,5,6,7,2],e[8,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",121},"Circulant"]

GraphData[{"Octahedral",121},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",121},"Halin"]

GraphData[{"Octahedral",121},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",121},"LCF"]

GraphData[{"Octahedral",121},"LCFSignature"]

GraphData[{"Octahedral",121},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",121},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",121}],Debug->True]//Timing

GraphData[{"Octahedral",121},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Matchstick

GraphData[{"Octahedral",121},"Matchstick"]

GraphData[{"Octahedral",121},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",121},"Edges"]]

3D All

GraphData[{"Octahedral",121},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",121},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",121},"Polyhedral"]

GraphData[{"Octahedral",121},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",121},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",121},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",121},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",121}],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]

{"Octahedral", 122}

GraphData[{"Octahedral",122},"StandardName"]

Primary

GraphData[{"Octahedral",122}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",122},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",122},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",122},"Edges"],Pi]

v={{-1/2,0},{1/2,0},{-1,1/2},{0,1/2},{1,1/2},{-1/2,1},{1/2,1},{0,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,5,7,8,6,3,1,6,7,2,4,8],e[3,4,5],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",122},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",122},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",122},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",122}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",122}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",122},"Planar"]

GraphData[{"Octahedral",122},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",122}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",122}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{1/2,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,2,6,1,5,4,8,3],e[7,6,8],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/2,1/4},{3/4,1/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,2,6,8,7,6,5],{3,8},{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,1/2},{1/4,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1],e[3,7,6,5],e[4,7,8,2],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",122},{"RCN","CN"}]

GraphData[{"Octahedral",122},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",122}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",122}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",122}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",122},"Circulant"]

GraphData[{"Octahedral",122},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",122},"Halin"]

GraphData[{"Octahedral",122},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",122},"LCF"]

GraphData[{"Octahedral",122},"LCFSignature"]

GraphData[{"Octahedral",122},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",122},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",122}],Debug->True]//Timing

GraphData[{"Octahedral",122},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",122},"Matchstick"]

GraphData[{"Octahedral",122},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",122},"Edges"]]

3D All

GraphData[{"Octahedral",122},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",122},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",122},"Polyhedral"]

GraphData[{"Octahedral",122},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",122},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",122},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",122},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",122}],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]

{"Octahedral", 123}

GraphData[{"Octahedral",123},"StandardName"]

Primary

GraphData[{"Octahedral",123}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",123},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",123},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",123},"Edges"]

v={{-1/2,0},{1/2,0},{-1,1/2},{0,1/2},{1,1/2},{-1/2,1},{1/2,1},{0,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,5,7,8,6,3,1,6,7,2,4,6],e[3,4,5],e[8,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",123},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",123},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",123},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",123}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",123}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",123},"Planar"]

GraphData[{"Octahedral",123},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",123}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",123}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,2,7,3,6,8,4],e[5,6,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{3/8+1/16,3/8+1/16}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[2,7,3,6,8,5,6,7],e[5,2,8],{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",123},{"RCN","CN"}]

GraphData[{"Octahedral",123},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",123}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",123}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",123}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",123}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",123},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",123},"Circulant"]

GraphData[{"Octahedral",123},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",123},"Halin"]

GraphData[{"Octahedral",123},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",123},"LCF"]

GraphData[{"Octahedral",123},"LCFSignature"]

GraphData[{"Octahedral",123},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",123},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",123}],Debug->True]//Timing

GraphData[{"Octahedral",123},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",123},"Matchstick"]

GraphData[{"Octahedral",123},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",123},"Edges"]]

3D All

GraphData[{"Octahedral",123},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",123},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",123},"Polyhedral"]

GraphData[{"Octahedral",123},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",123},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",123},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",123},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",123}],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]

{"Octahedral", 124}

GraphData[{"Octahedral",124},"StandardName"]

Primary

GraphData[{"Octahedral",124}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",124},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",124},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",124},"Edges"],Pi]

v={{-1/2,0},{1/2,0},{-1,1/2},{0,1/2},{1,1/2},{-1/2,1},{1/2,1},{0,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,5,7,8,6,3,1,6,7,2],e[3,4,5],e[6,4,7],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",124},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",124},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",124},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",124}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",124}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",124},"Planar"]

GraphData[{"Octahedral",124},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",124}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",124}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{#/2,h}&/@{-1,1}];
AppendTo[v,Mean[v[[{3,6,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,3,6,5],e[4,6,7,2],e[6,8,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,Pi/2]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2],e[5,4,8,3,7],e[4,6,3],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Subdivide[v[[6]],v[[4]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,1,5,3,6,7,8,4,1],{3,7},e[2,5,6],{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",124},{"RCN","CN"}]

GraphData[{"Octahedral",124},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",124}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",124}],TimeConstraint->60]//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",124}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",124},"Circulant"]

GraphData[{"Octahedral",124},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",124},"Halin"]

GraphData[{"Octahedral",124},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",124},"LCF"]

GraphData[{"Octahedral",124},"LCFSignature"]

GraphData[{"Octahedral",124},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",124},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",124}],Debug->True]//Timing

GraphData[{"Octahedral",124},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",124},"Matchstick"]

GraphData[{"Octahedral",124},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",124},"Edges"]]

3D All

GraphData[{"Octahedral",124},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",124},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",124},"Polyhedral"]

GraphData[{"Octahedral",124},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",124},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",124},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",124},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",124}],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]

{"Octahedral", 125}

GraphData[{"Octahedral",125},"StandardName"]

Primary

GraphData[{"Octahedral",125}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",125},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",125},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",125},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,-Pi/2]

v={{0,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,1,8,2],e[7,3,5,7,8,3],e[6,8,4],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[RotateGraph[Graph[GraphData[{"Octahedral",125},"Edges"],GraphLayout->"RadialEmbedding"],-3Pi/7]]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,8,7],e[6,2,4,6],e[5,8,3],e[6,8,2],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"Octahedral",125},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

Degenerate

GraphData[{"Octahedral",125},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",125},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",125},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",125}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",125}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",125},"Planar"]

GraphData[{"Octahedral",125},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",125}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",125}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/2]]

v=Join[UnitCirclePoints[4],{{-1/5,-1/4},{0,-1/4},{1/5,-1/4},{0,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,4,6,1,7,6,5,4],e[3,8,2],e[5,8,7],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/3,1/4},{1/3,1/4},{-1/3,3/4},{0,3/4},{1/3,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,7,1,6,3,8,2],e[4,7,5],e[6,7,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",125},{"RCN","CN"}]

GraphData[{"Octahedral",125},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",125}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",125}],"CrossingNumber"->cn]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",125},"Circulant"]

GraphData[{"Octahedral",125},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",125},"Halin"]

GraphData[{"Octahedral",125},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",125},"LCF"]

GraphData[{"Octahedral",125},"LCFSignature"]

GraphData[{"Octahedral",125},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",125},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",125}],Debug->True]//Timing

GraphData[{"Octahedral",125},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",125},"Matchstick"]

GraphData[{"Octahedral",125},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",125},"Edges"]]

3D All

GraphData[{"Octahedral",125},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",125},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",125},"Polyhedral"]

GraphData[{"Octahedral",125},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",125},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",125},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",125},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",125}],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]

{"Octahedral", 126}

GraphData[{"Octahedral",126},"StandardName"]

Primary

GraphData[{"Octahedral",126}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",126},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",126},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",126},"Edges"]

v={{0,0},{1,0},{2,0},{1/2,1/2},{2,1/2},{0,1},{1,1},{2,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,5,8,7,6,1,4,7,2,4,6],e[8,4,3],e[2,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",126},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",126},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",126},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",126}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",126}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",126},"Planar"]

GraphData[{"Octahedral",126},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",126}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",126}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi/2]]

RotateGraph[GraphicsToGraph@,Pi]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/2,1/4},{3/4,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,2,8,1,5,6,7,2],e[4,8,3],e[5,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,3Pi/4]]

v=Join[UnitCirclePoints[4,Pi/2]];
v=Join[v,Subdivide[v[[2]],v[[4]],3][[2;;-2]],{#/12,1/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,6,1,7,8,1],e[2,5,6,4],{5,7},{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[3],{{-1/8,-1/8},{1/8,-1/8},{-1/8,1/8},{0,1/8},{1/8,1/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,7,3,4,5,1,8,7,6,3],e[6,2,8],e[4,7,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{1/2,1/4},{-1/4,3/4},{0,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2],e[4,3,5,8,3,6,4,7,5],e[6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",126},{"RCN","CN"}]

GraphData[{"Octahedral",126},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",126}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",126}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",126},"Circulant"]

GraphData[{"Octahedral",126},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",126},"Halin"]

GraphData[{"Octahedral",126},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",126},"LCF"]

GraphData[{"Octahedral",126},"LCFSignature"]

GraphData[{"Octahedral",126},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",126},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",126}],Debug->True]//Timing

GraphData[{"Octahedral",126},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",126},"Matchstick"]

GraphData[{"Octahedral",126},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",126},"Edges"]]

3D All

GraphData[{"Octahedral",126},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",126},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",126},"Polyhedral"]

GraphData[{"Octahedral",126},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",126},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",126},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",126},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",126}],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]

{"Octahedral", 127}

GraphData[{"Octahedral",127},"StandardName"]

Primary

GraphData[{"Octahedral",127}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",127},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",127},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",127},"Edges"]],-Pi/2]

v={{0,0},{1/2,0},{1,0},{1,1/2},{1,1},{0,1},{0,1/2},{1/2,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,8,6,7,1,8,3],e[7,2,4,8,7],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",127},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",127},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",127}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",127}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",127},"Planar"]

GraphData[{"Octahedral",127},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",127}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",127}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,2Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,0}},{#/4,h}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5],e[4,6,2,8,3,7,4],e[7,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,3Pi/4]]

v=Join[UnitCirclePoints[4,-Pi/2]];
v=Join[v,Subdivide[v[[4]],v[[2]],5][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,3,5,1],e[6,3,7],e[4,5,6,7,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,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,4,5,6,2],e[4,3,6,8,5,7,4],e[8,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",127},{"RCN","CN"}]

GraphData[{"Octahedral",127},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",127}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",127}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",127},"Circulant"]

GraphData[{"Octahedral",127},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",127},"Halin"]

GraphData[{"Octahedral",127},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",127},"LCF"]

GraphData[{"Octahedral",127},"LCFSignature"]

GraphData[{"Octahedral",127},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",127},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",127}],Debug->True]//Timing

GraphData[{"Octahedral",127},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",127},"Matchstick"]

GraphData[{"Octahedral",127},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",127},"Edges"]]

3D All

GraphData[{"Octahedral",127},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",127},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",127},"Polyhedral"]

GraphData[{"Octahedral",127},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",127},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",127},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",127},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",127}],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]

{"Octahedral", 128}

GraphData[{"Octahedral",128},"StandardName"]

Primary

GraphData[{"Octahedral",128}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",128},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",128},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",128},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

v={{0,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,1,8,2],e[7,3,5,7],e[6,8,3],e[4,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",128},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",128},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",128},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",128}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",128}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",128},"Planar"]

GraphData[{"Octahedral",128},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",128}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",128}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,3/4},{1/4,1/4},{1/2,1/4},{3/4,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,2,5,6,1],e[4,5,3],e[6,7,8,5,7],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{5/8-1/16,5/8-1/16}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,4,7,3],e[5,6,7,8,6],e[7,2,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

v=Join[UnitCirclePoints[4,-Pi/2],{{0,0},{-1/Sqrt[2]/2,0},{1/Sqrt[2]/2,0}}];
AppendTo[v,Mean[v[[{3,5,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,7,1],e[4,6,5,7,2],e[6,3,8,7],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",128},{"RCN","CN"}]

GraphData[{"Octahedral",128},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",128}],TimeConstraint->10])//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",128}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",128},"Circulant"]

GraphData[{"Octahedral",128},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",128},"Halin"]

GraphData[{"Octahedral",128},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",128},"LCF"]

GraphData[{"Octahedral",128},"LCFSignature"]

GraphData[{"Octahedral",128},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",128},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",128}],Debug->True]//Timing

GraphData[{"Octahedral",128},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",128},"Matchstick"]

GraphData[{"Octahedral",128},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",128},"Edges"]]

3D All

GraphData[{"Octahedral",128},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",128},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",128},"Polyhedral"]

GraphData[{"Octahedral",128},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",128},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",128},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",128},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",128}],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]

{"Octahedral", 129}

GraphData[{"Octahedral",129},"StandardName"]

Primary

GraphData[{"Octahedral",129}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",129},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",129},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Octahedral",129},"Edges"],GraphLayout->"SpringEmbedding"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

v={{0,0},{1/2,0},{1,0},{1,1/2},{1,1},{0,1},{0,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,3],e[7,2,4,7],e[2,8],e[6,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",129},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",129},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",129},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",129}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",129}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",129},"Planar"]

GraphData[{"Octahedral",129},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",129}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",129}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/2,1/4},{3/4,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,6,1],e[5,8,7],e[4,8,3],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,5,8,7,3],e[5,4,8,6],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/3,1/4},{1/3,1/4},{-1/3,3/4},{0,3/4},{1/3,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,6,3,8,2,5,4,1],e[4,7,5],{3,7},e[6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[UnitCirclePoints[3],CirclePoints[1/5,4]];
AppendTo[v,Mean[v[[{5,6}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,7,4,1,3],e[7,6,2,5,4,8,7],e[6,8,5],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",129},{"RCN","CN"}]

GraphData[{"Octahedral",129},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",129}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",129}],TimeConstraint->60]//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",129}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v=Join[UnitCirclePoints[4,Pi/2]];
v=Join[v,Subdivide[v[[2]],v[[4]],4][[2;;-2]]];
AppendTo[v,Mean[v[[{1,6}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,1,2,3,4,1,8,6,3,5,1],e[2,5,6,7,4],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",129},"Circulant"]

GraphData[{"Octahedral",129},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",129},"Halin"]

GraphData[{"Octahedral",129},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",129},"LCF"]

GraphData[{"Octahedral",129},"LCFSignature"]

GraphData[{"Octahedral",129},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",129},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",129}],Debug->True]//Timing

GraphData[{"Octahedral",129},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",129},"Matchstick"]

GraphData[{"Octahedral",129},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",129},"Edges"]]

3D All

GraphData[{"Octahedral",129},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",129},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",129},"Polyhedral"]

GraphData[{"Octahedral",129},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",129},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",129},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",129},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",129}],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]

{"Octahedral", 130} == {"Triangulated", {8, 4}}

GraphData[{"Octahedral",130},"StandardName"]

{"Octahedral", 131}

GraphData[{"Octahedral",131},"StandardName"]

Primary

GraphData[{"Octahedral",131}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",131},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",131},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",131},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",131},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",131},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",131},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",131}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",131}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",131},"Planar"]

GraphData[{"Octahedral",131},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",131}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",131}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,3/4},{1/2,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,4,5,7,3,8,2,7,4],e[6,7,8],{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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,3,8,2],e[6,7,8],e[4,5,7],e[1,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",131},{"RCN","CN"}]

GraphData[{"Octahedral",131},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",131}],TimeConstraint->10])//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",131}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",131}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",131},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",131},"Circulant"]

GraphData[{"Octahedral",131},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",131},"Halin"]

GraphData[{"Octahedral",131},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",131},"LCF"]

GraphData[{"Octahedral",131},"LCFSignature"]

GraphData[{"Octahedral",131},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",131},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",131}],Debug->True]//Timing

GraphData[{"Octahedral",131},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",131},"Matchstick"]

GraphData[{"Octahedral",131},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",131},"Edges"]]

3D All

GraphData[{"Octahedral",131},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",131},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",131},"Polyhedral"]

GraphData[{"Octahedral",131},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",131},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",131},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",131},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",131}],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]

{"Octahedral", 132}

GraphData[{"Octahedral",132},"StandardName"]

Primary

GraphData[{"Octahedral",132}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",132},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",132},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",132},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",132},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",132},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",132},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",132}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",132}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",132},"Planar"]

GraphData[{"Octahedral",132},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",132}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",132}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,3,7,4,8,5,7,8],{4,5},{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,3,7,4,5,6,7],e[4,6,8],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",132},{"RCN","CN"}]

GraphData[{"Octahedral",132},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",132}],TimeConstraint->10])//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",132}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",132}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",132},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",132},"Circulant"]

GraphData[{"Octahedral",132},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",132},"Halin"]

GraphData[{"Octahedral",132},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",132},"LCF"]

GraphData[{"Octahedral",132},"LCFSignature"]

GraphData[{"Octahedral",132},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",132},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",132}],Debug->True]//Timing

GraphData[{"Octahedral",132},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",132},"Matchstick"]

GraphData[{"Octahedral",132},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",132},"Edges"]]

3D All

GraphData[{"Octahedral",132},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",132},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",132},"Polyhedral"]

GraphData[{"Octahedral",132},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",132},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",132},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",132},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",132}],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]

{"Octahedral", 133}

GraphData[{"Octahedral",133},"StandardName"]

Primary

GraphData[{"Octahedral",133}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",133},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",133},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",133},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,.37]

v={{-1,0},{0,0},{1,0},{1,1},{0,1},{-1,1},{0,1/2},{0,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,8,6,1,7,6,5,4,2,6],e[2,7,5,3],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",133},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",133},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",133}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",133}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",133},"Planar"]

GraphData[{"Octahedral",133},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",133}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",133}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,1/2},{1/4,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8],e[6,2,5],e[1,6,4,8,3],{2,8},{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{1/2,1/4},{4/6,1/2},{5/6,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,2,8,3,7,2],e[1,5,3],e[6,5,7,8],{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",133},{"RCN","CN"}]

GraphData[{"Octahedral",133},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",133}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",133}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",133},"Circulant"]

GraphData[{"Octahedral",133},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",133},"Halin"]

GraphData[{"Octahedral",133},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",133},"LCF"]

GraphData[{"Octahedral",133},"LCFSignature"]

GraphData[{"Octahedral",133},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",133},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",133}],Debug->True]//Timing

GraphData[{"Octahedral",133},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",133},"Matchstick"]

GraphData[{"Octahedral",133},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",133},"Edges"]]

3D All

GraphData[{"Octahedral",133},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",133},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",133},"Polyhedral"]

GraphData[{"Octahedral",133},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",133},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",133},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",133},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",133}],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]

{"Octahedral", 134}

GraphData[{"Octahedral",134},"StandardName"]

Primary

GraphData[{"Octahedral",134}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",134},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",134},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Octahedral",134},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",134},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",134},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",134}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",134}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",134},"Planar"]

GraphData[{"Octahedral",134},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",134}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",134}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/4,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,1],e[5,6,7,4,8,3],e[7,8,6],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/2},{0,1/2},{1/4,1/2},{0,1/2+Sqrt[3]/4},{0,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,5,4,1,8,2],e[5,7,8,3],e[4,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},{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[6,3,8],e[4,5,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"Octahedral",134},"Circulant"]

GraphData[{"Octahedral",134},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",134},"Halin"]

GraphData[{"Octahedral",134},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",134},"LCF"]

GraphData[{"Octahedral",134},"LCFSignature"]

GraphData[{"Octahedral",134},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",134},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",134}],Debug->True]//Timing

GraphData[{"Octahedral",134},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",134},"Matchstick"]

GraphData[{"Octahedral",134},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",134},"Edges"]]

3D All

GraphData[{"Octahedral",134},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",134},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",134},"Polyhedral"]

GraphData[{"Octahedral",134},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",134},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",134},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",134},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",134}],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]

{"Octahedral", 135}

GraphData[{"Octahedral",135},"StandardName"]

Primary

GraphData[{"Octahedral",135}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",135},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",135},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",135},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",135},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",135},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",135},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",135}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",135}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",135},"Planar"]

GraphData[{"Octahedral",135},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",135}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",135}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{1/4,1/4},{1/2,3/4},{3/4,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,5,3,7,4,6,2,8,3],e[8,5,7],e[4,5,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",135},{"RCN","CN"}]

GraphData[{"Octahedral",135},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",135}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",135}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",135}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",135},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",135},"Circulant"]

GraphData[{"Octahedral",135},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",135},"Halin"]

GraphData[{"Octahedral",135},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",135},"LCF"]

GraphData[{"Octahedral",135},"LCFSignature"]

GraphData[{"Octahedral",135},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",135},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",135}],Debug->True]//Timing

GraphData[{"Octahedral",135},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",135},"Matchstick"]

GraphData[{"Octahedral",135},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",135},"Edges"]]

3D All

GraphData[{"Octahedral",135},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",135},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",135},"Polyhedral"]

GraphData[{"Octahedral",135},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",135},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",135},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",135},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",135}],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]

{"Octahedral", 136}

GraphData[{"Octahedral",136},"StandardName"]

Primary

GraphData[{"Octahedral",136}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",136},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",136},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",136},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",136},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",136},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",136},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",136}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",136}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",136},"Planar"]

GraphData[{"Octahedral",136},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",136}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",136}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[UnitCirclePoints[4,Pi/2]];
v=Join[v,Subdivide[v[[2]],v[[4]],3][[2;;-2]],{{0,1/2},{0,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,6,1,7,8,5,6,8],e[2,5,7,6,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{0,1/4+Sqrt[3]2/4}};
AppendTo[v,Mean[v[[{3,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,7,1,4,5,6,2],e[4,7,6],e[7,8,3],e[1,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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,3,8,2],e[6,7,8],e[4,5,7,2],{1,7}},VertexCoordinates->v,VertexLabels->Automatic]

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",136},{"RCN","CN"}]

GraphData[{"Octahedral",136},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",136}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",136}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",136}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",136},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",136},"Circulant"]

GraphData[{"Octahedral",136},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",136},"Halin"]

GraphData[{"Octahedral",136},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",136},"LCF"]

GraphData[{"Octahedral",136},"LCFSignature"]

GraphData[{"Octahedral",136},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",136},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",136}],Debug->True]//Timing

GraphData[{"Octahedral",136},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",136},"Matchstick"]

GraphData[{"Octahedral",136},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",136},"Edges"]]

3D All

GraphData[{"Octahedral",136},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",136},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",136},"Polyhedral"]

GraphData[{"Octahedral",136},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",136},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",136},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",136},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",136}],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]

{"Octahedral", 137}

GraphData[{"Octahedral",137},"StandardName"]

Primary

GraphData[{"Octahedral",137}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",137},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",137},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",137},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",137},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",137},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",137},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",137}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",137}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",137},"Planar"]

GraphData[{"Octahedral",137},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",137}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",137}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,Pi]

v=Join[UnitCirclePoints[4],CirclePoints[1/4,3],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,3],e[5,4,7,6,5,7,8,5],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/4,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,6,7,4,6,3,8],e[2,6,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",137},{"RCN","CN"}]

GraphData[{"Octahedral",137},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",137}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",137}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",137}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",137},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",137},"Circulant"]

GraphData[{"Octahedral",137},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",137},"Halin"]

GraphData[{"Octahedral",137},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",137},"LCF"]

GraphData[{"Octahedral",137},"LCFSignature"]

GraphData[{"Octahedral",137},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",137},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",137}],Debug->True]//Timing

GraphData[{"Octahedral",137},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",137},"Matchstick"]

GraphData[{"Octahedral",137},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",137},"Edges"]]

3D All

GraphData[{"Octahedral",137},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",137},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",137},"Polyhedral"]

GraphData[{"Octahedral",137},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",137},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",137},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",137},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",137}],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]

{"Octahedral", 138}

GraphData[{"Octahedral",138},"StandardName"]

Primary

GraphData[{"Octahedral",138}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",138},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot[GraphData[{"Octahedral",138},"Edges"]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",138},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",138},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",138},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",138},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",138}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",138}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",138},"Planar"]

GraphData[{"Octahedral",138},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",138}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",138}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4],CirclePoints[1/4,3],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,3],e[4,7,6,5,7,8,6],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,1/2},{1/4,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,4,1,5,2,8,7,6,5],{4,7},e[3,8,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{0,1/4+Sqrt[3]/2}};
AppendTo[v,Mean[v[[{3,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,5,4,1,8,2],e[4,7,8,3],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",138},{"RCN","CN"}]

GraphData[{"Octahedral",138},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",138}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",138}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",138},"Circulant"]

GraphData[{"Octahedral",138},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",138},"Halin"]

GraphData[{"Octahedral",138},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",138},"LCF"]

GraphData[{"Octahedral",138},"LCFSignature"]

GraphData[{"Octahedral",138},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",138},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",138}],Debug->True]//Timing

GraphData[{"Octahedral",138},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",138},"Matchstick"]

GraphData[{"Octahedral",138},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",138},"Edges"]]

3D All

GraphData[{"Octahedral",138},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",138},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",138},"Polyhedral"]

GraphData[{"Octahedral",138},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",138},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",138},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",138},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",138}],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]

{"Octahedral", 139} == {"SelfDual", {8, 8}}

GraphData[{"Octahedral",139},"StandardName"]

{"Octahedral", 140}

GraphData[{"Octahedral",140},"StandardName"]

Primary

GraphData[{"Octahedral",140}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",140},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",140},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",140},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",140},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",140},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",140},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",140}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",140}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",140},"Planar"]

GraphData[{"Octahedral",140},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",140}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",140}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi/4]]

v=Join[UnitCirclePoints[4,Pi/2],{{0,0},{-1/4,1/4},{0,1/4},{1/4,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,7,8,1],e[2,5,4],e[3,5,7],{2,6},{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,3/4},{1/2,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,3,7,5,2,8],{4,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=RotateGraph[Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2,7,3],e[4,8,6]},VertexCoordinates->v,VertexLabels->Automatic],3Pi/4]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",140},{"RCN","CN"}]

GraphData[{"Octahedral",140},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",140}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",140}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",140},"Circulant"]

GraphData[{"Octahedral",140},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",140},"Halin"]

GraphData[{"Octahedral",140},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",140},"LCF"]

GraphData[{"Octahedral",140},"LCFSignature"]

GraphData[{"Octahedral",140},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",140},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",140}],Debug->True]//Timing

GraphData[{"Octahedral",140},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",140},"Matchstick"]

GraphData[{"Octahedral",140},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",140},"Edges"]]

3D All

GraphData[{"Octahedral",140},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",140},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",140},"Polyhedral"]

GraphData[{"Octahedral",140},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",140},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",140},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",140},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",140}],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]

{"Octahedral", 141}

GraphData[{"Octahedral",141},"StandardName"]

Primary

GraphData[{"Octahedral",141}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",141},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",141},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",141},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",141},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",141},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",141},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",141}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",141}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",141},"Planar"]

GraphData[{"Octahedral",141},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",141}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",141}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,4,8,6],e[5,2,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,3/4},{1/2,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,6,4,7,3,8],e[6,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,3,7,4,6,8],e[7,6,5,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",141},{"RCN","CN"}]

GraphData[{"Octahedral",141},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",141}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",141}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",141},"Circulant"]

GraphData[{"Octahedral",141},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",141},"Halin"]

GraphData[{"Octahedral",141},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",141},"LCF"]

GraphData[{"Octahedral",141},"LCFSignature"]

GraphData[{"Octahedral",141},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",141},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",141}],Debug->True]//Timing

GraphData[{"Octahedral",141},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",141},"Matchstick"]

GraphData[{"Octahedral",141},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",141},"Edges"]]

3D All

GraphData[{"Octahedral",141},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",141},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",141},"Polyhedral"]

GraphData[{"Octahedral",141},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",141},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",141},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",141},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",141}],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]

{"Octahedral", 142}

GraphData[{"Octahedral",142},"StandardName"]

Primary

GraphData[{"Octahedral",142}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",142},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",142},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",142},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",142},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",142},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",142},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",142}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",142}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",142},"Planar"]

GraphData[{"Octahedral",142},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",142}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",142}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{1/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,8,1],e[4,7,3],e[5,6,7],e[2,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,Pi]

v=Join[UnitCirclePoints[4],CirclePoints[1/5,3]];
AppendTo[v,Mean[v[[{5,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5],e[4,7,3,6,2],{1,7},{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,4,7,8,2],e[5,6,8,3],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",142},{"RCN","CN"}]

GraphData[{"Octahedral",142},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",142}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",142}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",142},"Circulant"]

GraphData[{"Octahedral",142},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",142},"Halin"]

GraphData[{"Octahedral",142},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",142},"LCF"]

GraphData[{"Octahedral",142},"LCFSignature"]

GraphData[{"Octahedral",142},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",142},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",142}],Debug->True]//Timing

GraphData[{"Octahedral",142},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",142},"Matchstick"]

GraphData[{"Octahedral",142},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",142},"Edges"]]

3D All

GraphData[{"Octahedral",142},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",142},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",142},"Polyhedral"]

GraphData[{"Octahedral",142},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",142},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",142},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",142},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",142}],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]

{"Octahedral", 143} == {"SelfDual", {8, 9}}

GraphData[{"Octahedral",143},"StandardName"]

{"Octahedral", 144} == {"HeptahedralDual", 20}

GraphData[{"Octahedral",144},"StandardName"]

{"Octahedral", 145}

GraphData[{"Octahedral",145},"StandardName"]

Primary

GraphData[{"Octahedral",145}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",145},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",145},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",145},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",145},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",145},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",145},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",145}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",145}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",145},"Planar"]

GraphData[{"Octahedral",145},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",145}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",145}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v={{0,-1},{1,0},{0,1},{-1,0},{0,0},{0,1/2},{-1/2,0},{1/2,0}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,3,7,1],e[4,7,5,8,2],e[7,6,8],e[5,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,Pi/4]]

v={{0,-1},{1,0},{0,1},{-1,0},{0,0},{0,-1/2},{-1/4,1/2},{1/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,5,8,3,7,5],e[7,4,5,2,8],e[4,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",145},{"RCN","CN"}]

GraphData[{"Octahedral",145},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",145}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",145}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",145},"Circulant"]

GraphData[{"Octahedral",145},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",145},"Halin"]

GraphData[{"Octahedral",145},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",145},"LCF"]

GraphData[{"Octahedral",145},"LCFSignature"]

GraphData[{"Octahedral",145},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",145},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",145}],Debug->True]//Timing

GraphData[{"Octahedral",145},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",145},"Matchstick"]

GraphData[{"Octahedral",145},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",145},"Edges"]]

3D All

GraphData[{"Octahedral",145},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",145},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",145},"Polyhedral"]

GraphData[{"Octahedral",145},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",145},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",145},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",145},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",145}],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]

{"Octahedral", 146} == {"Triangulated", {8, 5}}

GraphData[{"Octahedral",146},"StandardName"]

{"Octahedral", 147}

GraphData[{"Octahedral",147},"StandardName"]

Primary

GraphData[{"Octahedral",147}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",147},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",147},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",147},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",147},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",147},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",147},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",147}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",147}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",147},"Planar"]

GraphData[{"Octahedral",147},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",147}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",147}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,1},{0,-1},{0,0},{-1/4,1/4},{1/4,1/4},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[2,3,5,4,1,5,2,8,7,5,6,3,8,5],e[7,3,1,6],{2,4}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",147},{"RCN","CN"}]

GraphData[{"Octahedral",147},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",147}],TimeConstraint->10])//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",147}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",147},"Circulant"]

GraphData[{"Octahedral",147},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",147},"Halin"]

GraphData[{"Octahedral",147},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",147},"LCF"]

GraphData[{"Octahedral",147},"LCFSignature"]

GraphData[{"Octahedral",147},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",147},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",147}],Debug->True]//Timing

GraphData[{"Octahedral",147},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",147},"Matchstick"]

GraphData[{"Octahedral",147},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",147},"Edges"]]

3D All

GraphData[{"Octahedral",147},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",147},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",147},"Polyhedral"]

GraphData[{"Octahedral",147},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",147},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",147},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",147},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",147}],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]

{"Octahedral", 148}

GraphData[{"Octahedral",148},"StandardName"]

Primary

GraphData[{"Octahedral",148}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",148},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",148},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",148},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",148},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",148},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",148},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",148}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",148}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",148},"Planar"]

GraphData[{"Octahedral",148},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",148}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",148}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,3],e[2,5,8,7,6,2],e[4,8,6],{1,5},e[3,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,-Pi/4]

v=UnitCirclePoints[4,Pi/2];
v=Join[v,Subdivide[v[[2]],v[[4]],5][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,1,2,3,4,1,5,3,6,1,8,3],e[2,5,6,7,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",148},{"RCN","CN"}]

GraphData[{"Octahedral",148},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",148}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",148}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",148},"Circulant"]

GraphData[{"Octahedral",148},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",148},"Halin"]

GraphData[{"Octahedral",148},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",148},"LCF"]

GraphData[{"Octahedral",148},"LCFSignature"]

GraphData[{"Octahedral",148},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",148},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",148}],Debug->True]//Timing

GraphData[{"Octahedral",148},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",148},"Matchstick"]

GraphData[{"Octahedral",148},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",148},"Edges"]]

3D All

GraphData[{"Octahedral",148},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",148},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",148},"Polyhedral"]

GraphData[{"Octahedral",148},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",148},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",148},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",148},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",148}],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]

{"Octahedral", 149}

GraphData[{"Octahedral",149},"StandardName"]

Primary

GraphData[{"Octahedral",149}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",149},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",149},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",149},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",149},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",149},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",149}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",149}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",149},"Planar"]

GraphData[{"Octahedral",149},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",149}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",149}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{1/4,1/2},{1/2,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,2],e[7,6,4,8,3,7,5,8],e[4,5,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,4,2,6,1,5],e[3,4,5,6,7,8],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/4,1/2},{1/4,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,3,8,2,5,6,7,4],{7,8},{1,5},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",149},{"RCN","CN"}]

GraphData[{"Octahedral",149},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",149}],TimeConstraint->10])//AbsoluteTiming

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",149}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",149},"Circulant"]

GraphData[{"Octahedral",149},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",149},"Halin"]

GraphData[{"Octahedral",149},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",149},"LCF"]

GraphData[{"Octahedral",149},"LCFSignature"]

GraphData[{"Octahedral",149},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",149},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",149}],Debug->True]//Timing

GraphData[{"Octahedral",149},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",149},"Matchstick"]

GraphData[{"Octahedral",149},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",149},"Edges"]]

3D All

GraphData[{"Octahedral",149},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",149},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",149},"Polyhedral"]

GraphData[{"Octahedral",149},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",149},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",149},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",149},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",149}],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]

{"Octahedral", 150}

GraphData[{"Octahedral",150},"StandardName"]

Primary

GraphData[{"Octahedral",150}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",150},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",150},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",150},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",150},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",150},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",150}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",150}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",150},"Planar"]

GraphData[{"Octahedral",150},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",150}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",150}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,8,1,4,2,7,1,6],{2,5},e[{3,8}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,8,5],e[1,8,4],e[3,7,6],e[2,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",150},{"RCN","CN"}]

GraphData[{"Octahedral",150},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",150}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",150}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",150},"Circulant"]

GraphData[{"Octahedral",150},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",150},"Halin"]

GraphData[{"Octahedral",150},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",150},"LCF"]

GraphData[{"Octahedral",150},"LCFSignature"]

GraphData[{"Octahedral",150},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",150},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",150}],Debug->True]//Timing

GraphData[{"Octahedral",150},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",150},"Matchstick"]

GraphData[{"Octahedral",150},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",150},"Edges"]]

3D All

GraphData[{"Octahedral",150},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",150},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",150},"Polyhedral"]

GraphData[{"Octahedral",150},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",150},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",150},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",150},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",150}],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]

{"Octahedral", 151}

GraphData[{"Octahedral",151},"StandardName"]

Primary

GraphData[{"Octahedral",151}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",151},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",151},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",151},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",151},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",151},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",151},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",151}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",151}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",151},"Planar"]

GraphData[{"Octahedral",151},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",151}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",151}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

RegionIntersection[Line[v[[{3,5}]]],Line[v[[{2,4}]]]]//FullSimplify

RegionIntersection[Line[v[[{7,5}]]],Line[v[[{1,6}]]]]//FullSimplify

v=Join[UnitCirclePoints[5],{{(1/4) (-3+(Sqrt[5])),(NumericalApproximation[Root, (RowDefault["0.263", FEExpressionsNumericalApproximationElider]), Root[1-20 ((#1)^2)+80 ((#1)^4)&,3], ])},{-(1/4) (-3+(Sqrt[5])),(NumericalApproximation[Root, (RowDefault["0.263", FEExpressionsNumericalApproximationElider]), Root[1-20 ((#1)^2)+80 ((#1)^4)&,3], ])},{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,6],e[4,6,7,2],e[5,6,3],e[1,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8],e[3,8,5,6,7],e[4,7,3,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,4,2,7],{2,6},{1,5},e[3,4,5,6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",151},{"RCN","CN"}]

GraphData[{"Octahedral",151},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",151}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",151}],"CrossingNumber"->cn]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",151},"Circulant"]

GraphData[{"Octahedral",151},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",151},"Halin"]

GraphData[{"Octahedral",151},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",151},"LCF"]

GraphData[{"Octahedral",151},"LCFSignature"]

GraphData[{"Octahedral",151},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",151},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",151}],Debug->True]//Timing

GraphData[{"Octahedral",151},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",151},"Matchstick"]

GraphData[{"Octahedral",151},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",151},"Edges"]]

3D All

GraphData[{"Octahedral",151},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",151},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",151},"Polyhedral"]

GraphData[{"Octahedral",151},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",151},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",151},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",151},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",151}],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]

{"Octahedral", 152} == {"UnitDistanceForbidden", {8, 13, 10}}

GraphData[{"Octahedral",152},"StandardName"]

{"Octahedral", 153}

GraphData[{"Octahedral",153},"StandardName"]

Primary

GraphData[{"Octahedral",153}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",153},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",153},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",153},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",153},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",153},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",153},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",153}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",153}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",153},"Planar"]

GraphData[{"Octahedral",153},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",153}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",153}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/2},{1/2,1/4},{3/4,1/3},{3/4,2/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,8,7,2,5,4],e[1,6,2],e[6,5,8],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,Pi/2]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/2},{2/3,2/6},{2/3,3/6},{2/3,4/6}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[2,5,3,8,7,6,2],e[8,5,6],e[5,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",153},{"RCN","CN"}]

GraphData[{"Octahedral",153},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",153}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",153}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",153},"Circulant"]

GraphData[{"Octahedral",153},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",153},"Halin"]

GraphData[{"Octahedral",153},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",153},"LCF"]

GraphData[{"Octahedral",153},"LCFSignature"]

GraphData[{"Octahedral",153},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",153},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",153}],Debug->True]//Timing

GraphData[{"Octahedral",153},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",153},"Matchstick"]

GraphData[{"Octahedral",153},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",153},"Edges"]]

3D All

GraphData[{"Octahedral",153},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",153},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",153},"Polyhedral"]

GraphData[{"Octahedral",153},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",153},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",153},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",153},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",153}],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]

{"Octahedral", 154}

GraphData[{"Octahedral",154},"StandardName"]

Primary

GraphData[{"Octahedral",154}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",154},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",154},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",154},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",154},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",154},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",154},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",154}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",154}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",154},"Planar"]

GraphData[{"Octahedral",154},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",154}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",154}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,5,2,7,1],e[4,2,6],e[3,4,5,6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,3,7,8,5,2,6,7],e[4,8,6],{1,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/2,1/4},{3/4,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,4,1,5,6,7,2,6,8],e[5,8,7],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",154},{"RCN","CN"}]

GraphData[{"Octahedral",154},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",154}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",154}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",154},"Circulant"]

GraphData[{"Octahedral",154},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",154},"Halin"]

GraphData[{"Octahedral",154},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",154},"LCF"]

GraphData[{"Octahedral",154},"LCFSignature"]

GraphData[{"Octahedral",154},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",154},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",154}],Debug->True]//Timing

GraphData[{"Octahedral",154},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",154},"Matchstick"]

GraphData[{"Octahedral",154},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",154},"Edges"]]

3D All

GraphData[{"Octahedral",154},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",154},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",154},"Polyhedral"]

GraphData[{"Octahedral",154},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",154},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",154},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",154},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",154}],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]

{"Octahedral", 155}

GraphData[{"Octahedral",155},"StandardName"]

Primary

GraphData[{"Octahedral",155}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",155},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",155},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",155},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",155},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",155},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",155},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",155}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",155}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",155},"Planar"]

GraphData[{"Octahedral",155},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",155}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",155}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,Pi]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{1/2,1/4},{3/4,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,4,1,5,6,7,2],e[7,1,6],e[5,8,7],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{1/2,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,7,4],e[1,7,8],e[2,8,3],e[5,7,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,-Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,1],e[4,8,3],{1,6},e[5,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",155},{"RCN","CN"}]

GraphData[{"Octahedral",155},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",155}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",155}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",155},"Circulant"]

GraphData[{"Octahedral",155},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",155},"Halin"]

GraphData[{"Octahedral",155},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",155},"LCF"]

GraphData[{"Octahedral",155},"LCFSignature"]

GraphData[{"Octahedral",155},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",155},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",155}],Debug->True]//Timing

GraphData[{"Octahedral",155},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",155},"Matchstick"]

GraphData[{"Octahedral",155},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",155},"Edges"]]

3D All

GraphData[{"Octahedral",155},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",155},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",155},"Polyhedral"]

GraphData[{"Octahedral",155},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",155},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",155},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",155},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",155}],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]

{"Octahedral", 156}

GraphData[{"Octahedral",156},"StandardName"]

Primary

GraphData[{"Octahedral",156}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",156},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",156},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",156},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",156},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",156},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",156},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",156}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",156}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",156},"Planar"]

GraphData[{"Octahedral",156},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",156}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",156}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2],e[4,8,3,7],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,8,7,3],e[4,8,1],e[7,2,6,5],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,7,3,8,4],e[8,5,6,7],e[6,2,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,8,1,6,2,4],e[3,4,5,6,7,8],e[5,1,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",156},{"RCN","CN"}]

GraphData[{"Octahedral",156},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",156}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",156}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",156},"Circulant"]

GraphData[{"Octahedral",156},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",156},"Halin"]

GraphData[{"Octahedral",156},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",156},"LCF"]

GraphData[{"Octahedral",156},"LCFSignature"]

GraphData[{"Octahedral",156},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",156},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",156}],Debug->True]//Timing

GraphData[{"Octahedral",156},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",156},"Matchstick"]

GraphData[{"Octahedral",156},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",156},"Edges"]]

3D All

GraphData[{"Octahedral",156},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",156},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",156},"Polyhedral"]

GraphData[{"Octahedral",156},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",156},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",156},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",156},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",156}],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]

{"Octahedral", 157}

GraphData[{"Octahedral",157},"StandardName"]

Primary

GraphData[{"Octahedral",157}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",157},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",157},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",157},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",157},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",157},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",157},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",157}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",157}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",157},"Planar"]

GraphData[{"Octahedral",157},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",157}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",157}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,7],e[4,8,3],{2,6},{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,3Pi/4]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},4]];
AppendTo[v,Mean[v[[{1,4}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,7,1,8,4],e[2,5,1,6],e[3,4,5,6,7],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",157},{"RCN","CN"}]

GraphData[{"Octahedral",157},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",157}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",157}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",157},"Circulant"]

GraphData[{"Octahedral",157},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",157},"Halin"]

GraphData[{"Octahedral",157},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",157},"LCF"]

GraphData[{"Octahedral",157},"LCFSignature"]

GraphData[{"Octahedral",157},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",157},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",157}],Debug->True]//Timing

GraphData[{"Octahedral",157},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",157},"Matchstick"]

GraphData[{"Octahedral",157},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",157},"Edges"]]

3D All

GraphData[{"Octahedral",157},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",157},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",157},"Polyhedral"]

GraphData[{"Octahedral",157},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",157},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",157},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",157},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",157}],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]

{"Octahedral", 158} == {"HeptahedralDual", 30}

GraphData[{"Octahedral",158},"StandardName"]

{"Octahedral", 159}

GraphData[{"Octahedral",159},"StandardName"]

Primary

GraphData[{"Octahedral",159}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",159},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",159},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",159},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",159},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",159},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",159}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",159}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",159},"Planar"]

GraphData[{"Octahedral",159},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",159}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",159}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,3Pi/4]]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},4],{{-1/4,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,7,1,5,2],e[4,1,6],e[3,4,5,6,7],e[4,8,5],{1,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,3Pi/4]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},2],{{-1/2,0},{-1/4,1/4},{1/2,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,5,1,7,4,8,5,4,6,3],e[2,4,1,8],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,5],e[4,8,3],e[2,6,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",159},{"RCN","CN"}]

GraphData[{"Octahedral",159},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",159}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",159}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",159},"Circulant"]

GraphData[{"Octahedral",159},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",159},"Halin"]

GraphData[{"Octahedral",159},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",159},"LCF"]

GraphData[{"Octahedral",159},"LCFSignature"]

GraphData[{"Octahedral",159},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",159},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",159}],Debug->True]//Timing

GraphData[{"Octahedral",159},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",159},"Matchstick"]

GraphData[{"Octahedral",159},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",159},"Edges"]]

3D All

GraphData[{"Octahedral",159},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",159},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",159},"Polyhedral"]

GraphData[{"Octahedral",159},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",159},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",159},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",159},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",159}],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]

{"Octahedral", 160}

GraphData[{"Octahedral",160},"StandardName"]

Primary

GraphData[{"Octahedral",160}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",160},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",160},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",160},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",160},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",160},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",160},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",160}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",160}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",160},"Planar"]

GraphData[{"Octahedral",160},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",160}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",160}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,4,5,8,6,2],{3,7},{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,8,4],e[1,8,7,3],{5,8},{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5],e[7,2,6,8],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,7,2,4],e[3,4,5,6,7,8],{2,6},{1,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",160},{"RCN","CN"}]

GraphData[{"Octahedral",160},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",160}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",160}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",160},"Circulant"]

GraphData[{"Octahedral",160},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",160},"Halin"]

GraphData[{"Octahedral",160},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",160},"LCF"]

GraphData[{"Octahedral",160},"LCFSignature"]

GraphData[{"Octahedral",160},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",160},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",160}],Debug->True]//Timing

GraphData[{"Octahedral",160},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",160},"Matchstick"]

GraphData[{"Octahedral",160},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",160},"Edges"]]

3D All

GraphData[{"Octahedral",160},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",160},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",160},"Polyhedral"]

GraphData[{"Octahedral",160},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",160},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",160},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",160},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",160}],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]

{"Octahedral", 161}

GraphData[{"Octahedral",161},"StandardName"]

Primary

GraphData[{"Octahedral",161}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",161},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",161},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",161},"Edges"],Pi/2]

v={{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1},{-1/2,3/2},{1/2,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,8,7,4,1,5,3],e[4,2,6,5,4],e[7,5,8],{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

v={{-1,0},{0,0},{1,0},{-1,1},{0,1},{1,1},{-1,2},{1,2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,8,7,4,1,5,3],e[4,2,6,5,4],e[7,5,8],{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

gs={,};

RecognizeGraph/@gs

Degenerate

GraphData[{"Octahedral",161},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",161},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",161},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",161}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",161}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",161},"Planar"]

GraphData[{"Octahedral",161},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",161}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",161}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

v=Join[UnitCirclePoints[5]];
AppendTo[v,Mean[v[[{2,4}]]]];
v=Join[v,Mean[v[[#]]]&/@{{4,6,3},{3,6,2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5],e[4,6,2,8,3,7,4],e[7,6,8],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-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,4,5,6,2],e[4,7,5,8,6,3,4],e[7,3,8],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",161},{"RCN","CN"}]

GraphData[{"Octahedral",161},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",161}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",161}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",161},"Circulant"]

GraphData[{"Octahedral",161},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",161},"Halin"]

GraphData[{"Octahedral",161},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",161},"LCF"]

GraphData[{"Octahedral",161},"LCFSignature"]

GraphData[{"Octahedral",161},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",161},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",161}],Debug->True]//Timing

GraphData[{"Octahedral",161},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",161},"Matchstick"]

GraphData[{"Octahedral",161},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",161},"Edges"]]

3D All

GraphData[{"Octahedral",161},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",161},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",161},"Polyhedral"]

GraphData[{"Octahedral",161},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",161},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",161},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",161},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",161}],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]

{"Octahedral", 162}

GraphData[{"Octahedral",162},"StandardName"]

Primary

GraphData[{"Octahedral",162}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",162},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",162},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",162},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",162},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",162},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",162},"Graph","Circular"]//StyleGraphs

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",162}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",162}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Octahedral",162},"Planar"]

GraphData[{"Octahedral",162},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",162}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",162}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{5/8-1/16,5/8-1/16}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,6,8,7,4,8],e[5,6,7,1],e[2,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,3Pi/4]

v={{-1,0},{0,-1},{1,0},{0,1},{0,0},{-1/2,3/8},{1/2,3/8}};
AppendTo[v,Mean[v[[{5,6}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3],e[1,6,4,5,2],e[6,8,5,7,3],e[8,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",162},{"RCN","CN"}]

GraphData[{"Octahedral",162},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",162}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",162}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",162},"Circulant"]

GraphData[{"Octahedral",162},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",162},"Halin"]

GraphData[{"Octahedral",162},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",162},"LCF"]

GraphData[{"Octahedral",162},"LCFSignature"]

GraphData[{"Octahedral",162},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",162},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",162}],Debug->True]//Timing

GraphData[{"Octahedral",162},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",162},"Matchstick"]

GraphData[{"Octahedral",162},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",162},"Edges"]]

3D All

GraphData[{"Octahedral",162},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",162},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",162},"Polyhedral"]

GraphData[{"Octahedral",162},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",162},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",162},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",162},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",162}],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]

{"Octahedral", 163}

GraphData[{"Octahedral",163},"StandardName"]

Primary

GraphData[{"Octahedral",163}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",163},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",163},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",163},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",163},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",163},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",163},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",163}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",163}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",163},"Planar"]

GraphData[{"Octahedral",163},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",163}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",163}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,3Pi/4]

v={{-1,0},{-1/2,0},{0,0},{1,0},{0,-1},{0,1},{-1/4,1/4},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,4,6,1,5,3,6,8,3,7,2,6,7],e[1,2,3,4,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",163},{"RCN","CN"}]

GraphData[{"Octahedral",163},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",163}],TimeConstraint->10])//AbsoluteTiming

CrossingNumber[GraphData[{"Octahedral",163}],TimeConstraint->60]//AbsoluteTiming

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",163},"Circulant"]

GraphData[{"Octahedral",163},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",163},"Halin"]

GraphData[{"Octahedral",163},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",163},"LCF"]

GraphData[{"Octahedral",163},"LCFSignature"]

GraphData[{"Octahedral",163},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",163},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",163}],Debug->True]//Timing

GraphData[{"Octahedral",163},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",163},"Matchstick"]

GraphData[{"Octahedral",163},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",163},"Edges"]]

3D All

GraphData[{"Octahedral",163},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",163},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",163},"Polyhedral"]

GraphData[{"Octahedral",163},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",163},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",163},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",163},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",163}],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]

{"Octahedral", 164}

GraphData[{"Octahedral",164},"StandardName"]

Primary

GraphData[{"Octahedral",164}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",164},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",164},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",164},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",164},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",164},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",164}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",164}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"Octahedral",164},"Planar"]

GraphData[{"Octahedral",164},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",164}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",164}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5]];
AppendTo[v,Mean[v[[{2,4}]]]];
AppendTo[v,Mean[v[[{5,6}]]]];
AppendTo[v,{0,v[[7,2]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,7,5],e[4,6,2],e[3,6,8,7,1,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,3Pi/4]

v=Join[{{0,-1},{0,1},{-1,0}},Subdivide[{0,0},{1,0},3]];
AppendTo[v,Mean[v[[{3,4,2}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,7,6,5,4,3,1,4,2,8,3,2,7],e[5,2,6],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",164},{"RCN","CN"}]

GraphData[{"Octahedral",164},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",164}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",164}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",164},"Circulant"]

GraphData[{"Octahedral",164},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",164},"Halin"]

GraphData[{"Octahedral",164},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",164},"LCF"]

GraphData[{"Octahedral",164},"LCFSignature"]

GraphData[{"Octahedral",164},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",164},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",164}],Debug->True]//Timing

GraphData[{"Octahedral",164},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",164},"Matchstick"]

GraphData[{"Octahedral",164},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",164},"Edges"]]

3D All

GraphData[{"Octahedral",164},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",164},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",164},"Polyhedral"]

GraphData[{"Octahedral",164},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",164},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",164},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",164},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",164}],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]

{"Octahedral", 165} == {"SelfDual", {8, 10}}

GraphData[{"Octahedral",165},"StandardName"]

{"Octahedral", 166}

GraphData[{"Octahedral",166},"StandardName"]

Primary

GraphData[{"Octahedral",166}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",166},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",166},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",166},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",166},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",166},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",166}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",166}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",166},"Planar"]

GraphData[{"Octahedral",166},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",166}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",166}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,-Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,1],e[4,8,3],e[5,8,7,1,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",166},{"RCN","CN"}]

GraphData[{"Octahedral",166},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",166}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",166}],"CrossingNumber"->cn]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",166},"Circulant"]

GraphData[{"Octahedral",166},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",166},"Halin"]

GraphData[{"Octahedral",166},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",166},"LCF"]

GraphData[{"Octahedral",166},"LCFSignature"]

GraphData[{"Octahedral",166},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",166},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",166}],Debug->True]//Timing

GraphData[{"Octahedral",166},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",166},"Matchstick"]

GraphData[{"Octahedral",166},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",166},"Edges"]]

3D All

GraphData[{"Octahedral",166},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",166},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",166},"Polyhedral"]

GraphData[{"Octahedral",166},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",166},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",166},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",166},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",166}],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]

{"Octahedral", 167}

GraphData[{"Octahedral",167},"StandardName"]

Primary

GraphData[{"Octahedral",167}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",167},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",167},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",167},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",167},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",167},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",167},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",167}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",167}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",167},"Planar"]

GraphData[{"Octahedral",167},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",167}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",167}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

v=Join[UnitCirclePoints[5]];
AppendTo[v,Mean[v[[{2,4}]]]];
v=Join[v,Subdivide[v[[4]],Mean[v[[{3,6}]]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6],e[3,7,6,8,3,6,5],e[8,7,4,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",167},{"RCN","CN"}]

GraphData[{"Octahedral",167},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",167}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",167}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",167},"Circulant"]

GraphData[{"Octahedral",167},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",167},"Halin"]

GraphData[{"Octahedral",167},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",167},"LCF"]

GraphData[{"Octahedral",167},"LCFSignature"]

GraphData[{"Octahedral",167},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",167},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",167}],Debug->True]//Timing

GraphData[{"Octahedral",167},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",167},"Matchstick"]

GraphData[{"Octahedral",167},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",167},"Edges"]]

3D All

GraphData[{"Octahedral",167},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",167},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",167},"Polyhedral"]

GraphData[{"Octahedral",167},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",167},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",167},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",167},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",167}],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]

{"Octahedral", 168}

GraphData[{"Octahedral",168},"StandardName"]

Primary

GraphData[{"Octahedral",168}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",168},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",168},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",168},"Edges"],-Pi/2]

v={{0,0},{1,0},{1,1/2},{1,1},{0,1},{0,1/2},{1/2,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,2],e[6,7,3],e[5,7,4,8,5],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",168},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",168},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",168},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",168}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",168}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",168},"Planar"]

GraphData[{"Octahedral",168},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",168}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",168}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 6

GraphPlot[RotateGraph[,Pi]]

v=Join[UnitCirclePoints[6],{{0,0}}];
AppendTo[v,Mean[v[[{4,3,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,6],e[5,7,2],e[3,7,4,8,3],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[CirclePoints[3],Subdivide[{-1/2,-1/4},{1/2,-1/4},3],{{0,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,7,2,4,3],e[4,5,6,7],e[5,8,6,2,5],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",168},{"RCN","CN"}]

GraphData[{"Octahedral",168},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",168}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",168}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",168},"Circulant"]

GraphData[{"Octahedral",168},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",168},"Halin"]

GraphData[{"Octahedral",168},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",168},"LCF"]

GraphData[{"Octahedral",168},"LCFSignature"]

GraphData[{"Octahedral",168},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",168},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",168}],Debug->True]//Timing

GraphData[{"Octahedral",168},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",168},"Matchstick"]

GraphData[{"Octahedral",168},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",168},"Edges"]]

3D All

GraphData[{"Octahedral",168},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",168},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",168},"Polyhedral"]

GraphData[{"Octahedral",168},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",168},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",168},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",168},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",168}],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]

{"Octahedral", 169} == {"Wheel", 8}

GraphData[{"Octahedral",169},"StandardName"]

{"Octahedral", 170}

GraphData[{"Octahedral",170},"StandardName"]

Primary

GraphData[{"Octahedral",170}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",170},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",170},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",170},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",170},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",170},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",170},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",170}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",170}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",170},"Planar"]

GraphData[{"Octahedral",170},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",170}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",170}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,6,2,5,1,4,2,7],e[3,4,5,6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,-Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,5],e[4,8,3],e[1,6,8,7,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",170},{"RCN","CN"}]

GraphData[{"Octahedral",170},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",170}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",170}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",170},"Circulant"]

GraphData[{"Octahedral",170},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",170},"Halin"]

GraphData[{"Octahedral",170},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",170},"LCF"]

GraphData[{"Octahedral",170},"LCFSignature"]

GraphData[{"Octahedral",170},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",170},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",170}],Debug->True]//Timing

GraphData[{"Octahedral",170},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",170},"Matchstick"]

GraphData[{"Octahedral",170},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",170},"Edges"]]

3D All

GraphData[{"Octahedral",170},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",170},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",170},"Polyhedral"]

GraphData[{"Octahedral",170},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",170},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",170},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",170},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",170}],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]

{"Octahedral", 171}

GraphData[{"Octahedral",171},"StandardName"]

Primary

GraphData[{"Octahedral",171}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",171},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Octahedral",171},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",171},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",171},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",171},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",171},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",171}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",171}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",171},"Planar"]

GraphData[{"Octahedral",171},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",171}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",171}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,2Pi/5]]

v=Join[UnitCirclePoints[5]];
AppendTo[v,Mean[v[[{2,4}]]]];
AppendTo[v,Mean[v[[{2,6}]]]];
AppendTo[v,Mean[v[[{3,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5],e[4,6,7,2,8,6,3,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,4,5,6,7,8,2,3,1,8],e[1,4,2,5,1],e[6,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",171},{"RCN","CN"}]

GraphData[{"Octahedral",171},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",171}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",171}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",171},"Circulant"]

GraphData[{"Octahedral",171},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",171},"Halin"]

GraphData[{"Octahedral",171},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",171},"LCF"]

GraphData[{"Octahedral",171},"LCFSignature"]

GraphData[{"Octahedral",171},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",171},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",171}],Debug->True]//Timing

GraphData[{"Octahedral",171},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",171},"Matchstick"]

GraphData[{"Octahedral",171},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",171},"Edges"]]

3D All

GraphData[{"Octahedral",171},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",171},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",171},"Polyhedral"]

GraphData[{"Octahedral",171},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",171},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",171},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",171},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",171}],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]

{"Octahedral", 172}

GraphData[{"Octahedral",172},"StandardName"]

Primary

GraphData[{"Octahedral",172}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",172},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",172},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",172},"Edges"]

v=Join[UnitCirclePoints[6],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,1,2,3,4,5,6],e[1,8,3,7,6,8,4,7,5],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",172},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",172},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",172},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",172}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",172}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",172},"Planar"]

GraphData[{"Octahedral",172},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",172}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",172}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,8,1,5,2,6,1,7],{2,4},e[{3,8}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Subdivide[{1/2,0},{1/2,1},5][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,4,7,2],e[4,8,3],e[5,6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph[],-Pi/2]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,5],e[6,1,7,8,4],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",172},{"RCN","CN"}]

GraphData[{"Octahedral",172},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",172}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",172}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",172},"Circulant"]

GraphData[{"Octahedral",172},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",172},"Halin"]

GraphData[{"Octahedral",172},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",172},"LCF"]

GraphData[{"Octahedral",172},"LCFSignature"]

GraphData[{"Octahedral",172},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",172},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",172}],Debug->True]//Timing

GraphData[{"Octahedral",172},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",172},"Matchstick"]

GraphData[{"Octahedral",172},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",172},"Edges"]]

3D All

GraphData[{"Octahedral",172},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",172},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",172},"Polyhedral"]

GraphData[{"Octahedral",172},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",172},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",172},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",172},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",172}],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]

{"Octahedral", 173} == {"SelfDual", {8, 12}}

GraphData[{"Octahedral",173},"StandardName"]

{"Octahedral", 174}

GraphData[{"Octahedral",174},"StandardName"]

Primary

GraphData[{"Octahedral",174}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",174},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",174},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",174},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",174},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",174},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",174},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",174}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",174}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",174},"Planar"]

GraphData[{"Octahedral",174},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",174}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",174}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Tuples[{1,3}/4,2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,8,3,7,2,5,6,4],e[8,7,5],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,1},{0,-1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,8,1,4,2,5,1,7],{2,6},e[{3,8}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[,-Pi/2]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2],e[4,8,6,1,7,8,5],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",174},{"RCN","CN"}]

GraphData[{"Octahedral",174},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",174}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",174}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",174},"Circulant"]

GraphData[{"Octahedral",174},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",174},"Halin"]

GraphData[{"Octahedral",174},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",174},"LCF"]

GraphData[{"Octahedral",174},"LCFSignature"]

GraphData[{"Octahedral",174},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",174},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",174}],Debug->True]//Timing

GraphData[{"Octahedral",174},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",174},"Matchstick"]

GraphData[{"Octahedral",174},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",174},"Edges"]]

3D All

GraphData[{"Octahedral",174},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",174},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",174},"Polyhedral"]

GraphData[{"Octahedral",174},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",174},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",174},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",174},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",174}],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]

{"Octahedral", 175} == {"SelfDual", {8, 13}}

GraphData[{"Octahedral",175},"StandardName"]

{"Octahedral", 176} == {"Halin", {8, 4}}

GraphData[{"Octahedral",176},"StandardName"]

{"Octahedral", 177}

GraphData[{"Octahedral",177},"StandardName"]

Primary

GraphData[{"Octahedral",177}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",177},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",177},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",177},"Edges"]

RotateGraph[GraphicsToGraph@,Pi]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7,4,1],e[6,8,2],e[5,8,3],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",177},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",177},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",177},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",177}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",177}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",177},"Planar"]

GraphData[{"Octahedral",177},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",177}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",177}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,1],e[4,8,3],e[2,5,8,7],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/2},{1/2,1/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,2,6,1],e[4,3,8],e[5,3,7],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/4},{1/2,1/4},2],Subdivide[{-1/4,3/4},{1/4,3/4},1]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,5,4,1],e[4,7,5,8,6],e[7,3,8],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",177},{"RCN","CN"}]

GraphData[{"Octahedral",177},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",177}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",177}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",177},"Circulant"]

GraphData[{"Octahedral",177},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",177},"Halin"]

GraphData[{"Octahedral",177},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",177},"LCF"]

GraphData[{"Octahedral",177},"LCFSignature"]

GraphData[{"Octahedral",177},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",177},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",177}],Debug->True]//Timing

GraphData[{"Octahedral",177},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",177},"Matchstick"]

GraphData[{"Octahedral",177},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",177},"Edges"]]

3D All

GraphData[{"Octahedral",177},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",177},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",177},"Polyhedral"]

GraphData[{"Octahedral",177},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",177},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",177},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",177},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",177}],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]

{"Octahedral", 178}

GraphData[{"Octahedral",178},"StandardName"]

Primary

GraphData[{"Octahedral",178}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",178},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",178},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",178},"Edges"],Pi/2]

v={{0,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,1,8,2],e[7,3,8,7],e[6,8,4],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",178},"Edges"],Pi/2]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7],e[6,2,8,6],e[5,8,3],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",178},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",178},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",178},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",178}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",178}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",178},"Planar"]

GraphData[{"Octahedral",178},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",178}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",178}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

v=Join[UnitCirclePoints[5],{{0,0},{-1/8,-1/2},{1/8,-1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5,7,6,8,1],{7,8},e[4,6,2],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,3/4},{1/4,1/4},{1/2,1/4},{3/4,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,7,8,2,5,1],e[4,5,3],e[6,5,8],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-2/3,1/4},{2/3,1/4}},Subdivide[{-1/4,3/4},{1/4,3/4},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2],e[4,3,5,8,7,6,4],e[6,3,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",178},{"RCN","CN"}]

GraphData[{"Octahedral",178},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",178}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",178}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",178},"Circulant"]

GraphData[{"Octahedral",178},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",178},"Halin"]

GraphData[{"Octahedral",178},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",178},"LCF"]

GraphData[{"Octahedral",178},"LCFSignature"]

GraphData[{"Octahedral",178},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",178},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",178}],Debug->True]//Timing

GraphData[{"Octahedral",178},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",178},"Matchstick"]

GraphData[{"Octahedral",178},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",178},"Edges"]]

3D All

GraphData[{"Octahedral",178},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",178},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",178},"Polyhedral"]

GraphData[{"Octahedral",178},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",178},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",178},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",178},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",178}],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]

{"Octahedral", 179}

GraphData[{"Octahedral",179},"StandardName"]

Primary

GraphData[{"Octahedral",179}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",179},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",179},"EdgeList"]]

Default embedding

GraphPlot@Graph[GraphData[{"Octahedral",179},"Edges"],GraphLayout->"SpringEmbedding"]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,8,7,4,1],e[6,8,5],e[2,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",179},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",179},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",179},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",179}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",179}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",179},"Planar"]

GraphData[{"Octahedral",179},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",179}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",179}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,5,2,6,1],e[4,2,7],e[3,4,5,6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,8,1,2,3,4,1,5,6,7,2,5,8,7],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/2},{1/2,1/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,2,6,1],e[4,3,8],e[5,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/2},{1/2,1/2},2],{#/8,1}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,5,1],e[4,7,5,8,6],e[7,3,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",179},{"RCN","CN"}]

GraphData[{"Octahedral",179},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",179}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",179}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",179},"Circulant"]

GraphData[{"Octahedral",179},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",179},"Halin"]

GraphData[{"Octahedral",179},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",179},"LCF"]

GraphData[{"Octahedral",179},"LCFSignature"]

GraphData[{"Octahedral",179},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",179},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",179}],Debug->True]//Timing

GraphData[{"Octahedral",179},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",179},"Matchstick"]

GraphData[{"Octahedral",179},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",179},"Edges"]]

3D All

GraphData[{"Octahedral",179},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",179},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",179},"Polyhedral"]

GraphData[{"Octahedral",179},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",179},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",179},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",179},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",179}],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]

{"Octahedral", 180}

GraphData[{"Octahedral",180},"StandardName"]

Primary

GraphData[{"Octahedral",180}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",180},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",180},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",180},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",180},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",180},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",180},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",180}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",180}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",180},"Planar"]

GraphData[{"Octahedral",180},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",180}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",180}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi/4]]

v=Join[{{0,-1},{0,1},{1,0},{-1,0},{0,0},{-1/2,0},{0,1/2}}];
AppendTo[v,Mean[v[[{3,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,2,4,1,5,7,2,6],e[4,6,5,3,8,7],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,5,2,7],e[{3,8}],{4,2},{1,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[,-Pi/2]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2],e[4,8,3],e[1,7,8,5],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/4,3/4},{3/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,1],e[4,7,3],e[7,6,8],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",180},{"RCN","CN"}]

GraphData[{"Octahedral",180},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",180}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",180}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",180},"Circulant"]

GraphData[{"Octahedral",180},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",180},"Halin"]

GraphData[{"Octahedral",180},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",180},"LCF"]

GraphData[{"Octahedral",180},"LCFSignature"]

GraphData[{"Octahedral",180},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",180},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",180}],Debug->True]//Timing

GraphData[{"Octahedral",180},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",180},"Matchstick"]

GraphData[{"Octahedral",180},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",180},"Edges"]]

3D All

GraphData[{"Octahedral",180},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",180},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",180},"Polyhedral"]

GraphData[{"Octahedral",180},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",180},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",180},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",180},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",180}],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]

{"Octahedral", 181} == {"HeptahedralDual", 5}

GraphData[{"Octahedral",181},"StandardName"]

{"Octahedral", 182} == {"HeptahedralDual", 22}

GraphData[{"Octahedral",182},"StandardName"]

{"Octahedral", 183}

GraphData[{"Octahedral",183},"StandardName"]

Primary

GraphData[{"Octahedral",183}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",183},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",183},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",183},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",183},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",183},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",183}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",183}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",183},"Planar"]

GraphData[{"Octahedral",183},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",183}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",183}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi/4]]

v=Join[{{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{0,0}}];
v=Join[v,Subdivide[Mean[v[[{4,6}]]],v[[3]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,3,8,7,6,4,7],e[8,4,5],{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/2]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,6,5,8,7,2],e[4,8,3],e[8,1,5],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,1],e[4,8,3],{2,5},e[6,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",183},{"RCN","CN"}]

GraphData[{"Octahedral",183},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",183}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",183}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",183},"Circulant"]

GraphData[{"Octahedral",183},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",183},"Halin"]

GraphData[{"Octahedral",183},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",183},"LCF"]

GraphData[{"Octahedral",183},"LCFSignature"]

GraphData[{"Octahedral",183},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",183},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",183}],Debug->True]//Timing

GraphData[{"Octahedral",183},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",183},"Matchstick"]

GraphData[{"Octahedral",183},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",183},"Edges"]]

3D All

GraphData[{"Octahedral",183},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",183},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",183},"Polyhedral"]

GraphData[{"Octahedral",183},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",183},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",183},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",183},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",183}],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]

{"Octahedral", 184}

GraphData[{"Octahedral",184},"StandardName"]

Primary

GraphData[{"Octahedral",184}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",184},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",184},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",184},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",184},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",184},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",184},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",184}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",184}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",184},"Planar"]

GraphData[{"Octahedral",184},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",184}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",184}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,h},{1/2,h}}];
AppendTo[v,Mean[v[[{1,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,6,1,2,3,4,5,1,8,7],e[4,6,7,2],e[8,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},5]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,3,1,6,2,4],e[5,2,7],e[{3,8}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,5],e[6,8,7],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",184},{"RCN","CN"}]

GraphData[{"Octahedral",184},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",184}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",184}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",184},"Circulant"]

GraphData[{"Octahedral",184},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",184},"Halin"]

GraphData[{"Octahedral",184},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",184},"LCF"]

GraphData[{"Octahedral",184},"LCFSignature"]

GraphData[{"Octahedral",184},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",184},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",184}],Debug->True]//Timing

GraphData[{"Octahedral",184},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",184},"Matchstick"]

GraphData[{"Octahedral",184},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",184},"Edges"]]

3D All

GraphData[{"Octahedral",184},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",184},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",184},"Polyhedral"]

GraphData[{"Octahedral",184},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",184},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",184},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",184},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",184}],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]

{"Octahedral", 185}

GraphData[{"Octahedral",185},"StandardName"]

Primary

GraphData[{"Octahedral",185}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",185},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",185},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",185},"Edges"]

RegionIntersection[Line@v[[{1,5}]],Line@v[[{3,7}]]]

v={#/2,#2}&@@@{{-1,0},{0,0},{1,0},{1,1},{1/2,1},{-1,1},{-1/2,1},{0,2/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,7,6,1,8,5],e[6,2,4],e[7,8,3],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"Octahedral",185},"Edges"]

RotateGraph[GraphicsToGraph@,Pi]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,8,7],e[5,8,3],e[6,4,2],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",185},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",185},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",185},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",185}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",185}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",185},"Planar"]

GraphData[{"Octahedral",185},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",185}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",185}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5]];
v=Join[v,Subdivide[v[[4]],v[[2]],4][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,5],e[{4,2}],e[6,3,8],{3,7},e[4,6,7,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/2]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2],e[4,8,3],e[7,1,8,6],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/4},{1/2,1/4},2],{#/4,3/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2],e[4,7,5,8,6],e[7,3,8],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",185},{"RCN","CN"}]

GraphData[{"Octahedral",185},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",185}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",185}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",185},"Circulant"]

GraphData[{"Octahedral",185},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",185},"Halin"]

GraphData[{"Octahedral",185},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",185},"LCF"]

GraphData[{"Octahedral",185},"LCFSignature"]

GraphData[{"Octahedral",185},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",185},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",185}],Debug->True]//Timing

GraphData[{"Octahedral",185},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",185},"Matchstick"]

GraphData[{"Octahedral",185},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",185},"Edges"]]

3D All

GraphData[{"Octahedral",185},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",185},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",185},"Polyhedral"]

GraphData[{"Octahedral",185},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",185},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",185},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",185},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",185}],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]

{"Octahedral", 186}

GraphData[{"Octahedral",186},"StandardName"]

Primary

GraphData[{"Octahedral",186}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",186},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",186},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",186},"Edges"]

v=Join[UnitCirclePoints[6],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6],e[1,8,3,7,6,8,4,7,1],e[5,7,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",186},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",186},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",186},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",186}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",186}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",186},"Planar"]

GraphData[{"Octahedral",186},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",186}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",186}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,8,1],e[6,1,7],e[4,8,3],e[5,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",186},{"RCN","CN"}]

GraphData[{"Octahedral",186},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",186}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",186}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",186},"Circulant"]

GraphData[{"Octahedral",186},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",186},"Halin"]

GraphData[{"Octahedral",186},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",186},"LCF"]

GraphData[{"Octahedral",186},"LCFSignature"]

GraphData[{"Octahedral",186},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",186},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",186}],Debug->True]//Timing

GraphData[{"Octahedral",186},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",186},"Matchstick"]

GraphData[{"Octahedral",186},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",186},"Edges"]]

3D All

GraphData[{"Octahedral",186},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",186},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",186},"Polyhedral"]

GraphData[{"Octahedral",186},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",186},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",186},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",186},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",186}],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]

{"Octahedral", 187}

GraphData[{"Octahedral",187},"StandardName"]

Primary

GraphData[{"Octahedral",187}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",187},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",187},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",187},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",187},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",187},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",187}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",187}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",187},"Planar"]

GraphData[{"Octahedral",187},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",187}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",187}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

v=Join[CirclePoints[5]];
v=Join[v,Rest@Subdivide[Mean[v[[{1,5}]]],Mean[v[[{2,4}]]],3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,5,7],e[5,6,1],e[6,7,8,3],e[4,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Subdivide[{1/2,0},{1/2,1},5][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,1],e[4,8,3],e[5,6,7,8],e[6,1,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",187},{"RCN","CN"}]

GraphData[{"Octahedral",187},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",187}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",187}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",187},"Circulant"]

GraphData[{"Octahedral",187},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",187},"Halin"]

GraphData[{"Octahedral",187},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",187},"LCF"]

GraphData[{"Octahedral",187},"LCFSignature"]

GraphData[{"Octahedral",187},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",187},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",187}],Debug->True]//Timing

GraphData[{"Octahedral",187},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",187},"Matchstick"]

GraphData[{"Octahedral",187},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",187},"Edges"]]

3D All

GraphData[{"Octahedral",187},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",187},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",187},"Polyhedral"]

GraphData[{"Octahedral",187},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",187},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",187},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",187},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",187}],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]

{"Octahedral", 188}

GraphData[{"Octahedral",188},"StandardName"]

Primary

GraphData[{"Octahedral",188}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",188},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",188},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",188},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",188},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",188},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",188}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",188}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",188},"Planar"]

GraphData[{"Octahedral",188},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",188}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",188}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,Pi/4]

v=Join[{{0,1},{0,-1},{-1,0},{-1/2,0},{0,0},{1,0}}];
v=Join[v,Subdivide[v[[6]],Mean[v[[{1,5}]]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,1,3,2,6,1,5,2],e[3,4,5,6,7,8,1],e[8,5,7,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

GraphPlot@RotateGraph[GraphicsToGraph@,-Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2],e[4,8,3],e[1,8,7,1],e[5,8,6,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",188},{"RCN","CN"}]

GraphData[{"Octahedral",188},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",188}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",188}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",188},"Circulant"]

GraphData[{"Octahedral",188},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",188},"Halin"]

GraphData[{"Octahedral",188},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",188},"LCF"]

GraphData[{"Octahedral",188},"LCFSignature"]

GraphData[{"Octahedral",188},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",188},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",188}],Debug->True]//Timing

GraphData[{"Octahedral",188},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",188},"Matchstick"]

GraphData[{"Octahedral",188},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",188},"Edges"]]

3D All

GraphData[{"Octahedral",188},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",188},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",188},"Polyhedral"]

GraphData[{"Octahedral",188},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",188},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",188},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",188},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",188}],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]

{"Octahedral", 189}

GraphData[{"Octahedral",189},"StandardName"]

Primary

GraphData[{"Octahedral",189}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",189},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",189},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",189},"Edges"],Pi]

v={{0,0},{1,0},{2,0},{0,1},{1,1},{2,1},{1/2,3/2},{3/2,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,8,7,4,1,5,3],e[4,2,6,5,2],e[7,5,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",189},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",189},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",189},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",189}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",189}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",189},"Planar"]

GraphData[{"Octahedral",189},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",189}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",189}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,2Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,h}}];
v=Join[v,{Mean[v[[{4,6}]]],Mean[v[[{3,6,2}]]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5],e[4,7,6,2,8,6],e[6,3,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,-Pi/2]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2],e[4,8,3],e[1,8,6,1],{5,8},{1,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",189},{"RCN","CN"}]

GraphData[{"Octahedral",189},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",189}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",189}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",189},"Circulant"]

GraphData[{"Octahedral",189},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",189},"Halin"]

GraphData[{"Octahedral",189},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",189},"LCF"]

GraphData[{"Octahedral",189},"LCFSignature"]

GraphData[{"Octahedral",189},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",189},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",189}],Debug->True]//Timing

GraphData[{"Octahedral",189},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",189},"Matchstick"]

GraphData[{"Octahedral",189},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",189},"Edges"]]

3D All

GraphData[{"Octahedral",189},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",189},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",189},"Polyhedral"]

GraphData[{"Octahedral",189},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",189},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",189},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",189},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",189}],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]

{"Octahedral", 190} == {"SelfDual", {8, 14}}

GraphData[{"Octahedral",190},"StandardName"]

{"Octahedral", 191} == {"Fan", {2, 6}}

GraphData[{"Octahedral",191},"StandardName"]

{"Octahedral", 192} == {"Dipyramid", 6}

GraphData[{"Octahedral",192},"StandardName"]

{"Octahedral", 193}

GraphData[{"Octahedral",193},"StandardName"]

Primary

GraphData[{"Octahedral",193}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",193},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",193},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",193},"Edges"]

v=Join[UnitCirclePoints[6],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,3,7,1],e[6,7,4,8,6],e[5,7,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",193},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",193},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",193},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",193}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",193}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",193},"Planar"]

GraphData[{"Octahedral",193},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",193}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",193}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,3Pi/4]]

v=Join[UnitCirclePoints[4,Pi/2],{{0,0}},Subdivide[{-1/4,1/4},{1/4,1/4},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,5,8,1,7,5,3],e[2,6,7,8,4,5,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",193},{"RCN","CN"}]

GraphData[{"Octahedral",193},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",193}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",193}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",193},"Circulant"]

GraphData[{"Octahedral",193},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",193},"Halin"]

GraphData[{"Octahedral",193},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",193},"LCF"]

GraphData[{"Octahedral",193},"LCFSignature"]

GraphData[{"Octahedral",193},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",193},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",193}],Debug->True]//Timing

GraphData[{"Octahedral",193},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",193},"Matchstick"]

GraphData[{"Octahedral",193},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",193},"Edges"]]

3D All

GraphData[{"Octahedral",193},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",193},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",193},"Polyhedral"]

GraphData[{"Octahedral",193},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",193},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",193},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",193},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",193}],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]

{"Octahedral", 194}

GraphData[{"Octahedral",194},"StandardName"]

Primary

GraphData[{"Octahedral",194}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",194},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",194},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",194},"Edges"]

v=Join[UnitCirclePoints[6],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,1,2,3,4,5,6,1,8,3,7,6,8,4,7,5],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",194},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",194},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",194},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",194}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",194}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",194},"Planar"]

GraphData[{"Octahedral",194},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",194}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",194}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,Pi/4]]

v=Join[UnitCirclePoints[4,Pi/2],{{0,0}},Subdivide[{-1/4,1/Sqrt[2]/2},{1/4,1/Sqrt[2]/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7],e[2,6,5,8,4],e[8,1,6,7,8],{3,5},e[2,5,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",194},{"RCN","CN"}]

GraphData[{"Octahedral",194},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",194}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",194}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",194},"Circulant"]

GraphData[{"Octahedral",194},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",194},"Halin"]

GraphData[{"Octahedral",194},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",194},"LCF"]

GraphData[{"Octahedral",194},"LCFSignature"]

GraphData[{"Octahedral",194},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",194},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",194}],Debug->True]//Timing

GraphData[{"Octahedral",194},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",194},"Matchstick"]

GraphData[{"Octahedral",194},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",194},"Edges"]]

g=EdgeAdd[GraphData["Q3","Graph",{"Labeled","3D"}],UndirectedEdge@@@{{1,6},{6,4},{3,5},{3,8}}]

RecognizeGraph@g

3D All

GraphData[{"Octahedral",194},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",194},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",194},"Polyhedral"]

GraphData[{"Octahedral",194},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",194},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",194},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",194},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",194}],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]

{"Octahedral", 195}

GraphData[{"Octahedral",195},"StandardName"]

Primary

GraphData[{"Octahedral",195}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",195},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",195},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",195},"Edges"]

v=Join[UnitCirclePoints[6,Pi/2],{#/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,4,8,1,2,3,4,5,6,1,7,6,8,2,7,3],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",195},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",195},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",195},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",195}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",195}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",195},"Planar"]

GraphData[{"Octahedral",195},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",195}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",195}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},4],{{0,-1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,7,2,3,1,8,5,2,4,8,3],e[3,4,5,6,7,8],{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",195},{"RCN","CN"}]

GraphData[{"Octahedral",195},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",195}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",195}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",195},"Circulant"]

GraphData[{"Octahedral",195},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",195},"Halin"]

GraphData[{"Octahedral",195},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",195},"LCF"]

GraphData[{"Octahedral",195},"LCFSignature"]

GraphData[{"Octahedral",195},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",195},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",195}],Debug->True]//Timing

GraphData[{"Octahedral",195},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",195},"Matchstick"]

GraphData[{"Octahedral",195},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",195},"Edges"]]

3D All

GraphData[{"Octahedral",195},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",195},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",195},"Polyhedral"]

GraphData[{"Octahedral",195},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",195},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",195},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",195},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",195}],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]

{"Octahedral", 196}

GraphData[{"Octahedral",196},"StandardName"]

Primary

GraphData[{"Octahedral",196}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",196},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",196},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",196},"Edges"],Pi/2]

v=Join[UnitCirclePoints[6],{#/4,-1/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,3,7,4,8,2,7,5,8],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",196},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",196},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",196},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",196}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",196}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",196},"Planar"]

GraphData[{"Octahedral",196},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",196}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",196}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{1/2,1/4},{2/3,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,2,6,8,5,2],e[4,8,3,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",196},{"RCN","CN"}]

GraphData[{"Octahedral",196},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",196}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",196}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",196},"Circulant"]

GraphData[{"Octahedral",196},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",196},"Halin"]

GraphData[{"Octahedral",196},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",196},"LCF"]

GraphData[{"Octahedral",196},"LCFSignature"]

GraphData[{"Octahedral",196},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",196},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",196}],Debug->True]//Timing

GraphData[{"Octahedral",196},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",196},"Matchstick"]

GraphData[{"Octahedral",196},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",196},"Edges"]]

3D All

GraphData[{"Octahedral",196},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",196},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",196},"Polyhedral"]

GraphData[{"Octahedral",196},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",196},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",196},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",196},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",196}],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]

{"Octahedral", 197}

GraphData[{"Octahedral",197},"StandardName"]

Primary

GraphData[{"Octahedral",197}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",197},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",197},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",197},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",197},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",197},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",197},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",197}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",197}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",197},"Planar"]

GraphData[{"Octahedral",197},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",197}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",197}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

RegionIntersection[Line[v[[{2,5}]]],Line[v[[{1,6}]]]]//FullSimplify

Mean[v[[{5,7}]]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,h},{(1/(2 (Sqrt[5]))),-(1/2) (Sqrt[1-(2/(Sqrt[5]))])},{(1/20) (-5+(Sqrt[5])),-(1/(Sqrt[10-2 (Sqrt[5])]))}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,6,3],e[4,6,2,7,8,5],e[6,8,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/2]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,8,3,7,2],e[7,6,5,8,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",197},{"RCN","CN"}]

GraphData[{"Octahedral",197},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",197}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",197}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",197},"Circulant"]

GraphData[{"Octahedral",197},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",197},"Halin"]

GraphData[{"Octahedral",197},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",197},"LCF"]

GraphData[{"Octahedral",197},"LCFSignature"]

GraphData[{"Octahedral",197},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",197},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",197}],Debug->True]//Timing

GraphData[{"Octahedral",197},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",197},"Matchstick"]

GraphData[{"Octahedral",197},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",197},"Edges"]]

3D All

GraphData[{"Octahedral",197},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",197},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",197},"Polyhedral"]

GraphData[{"Octahedral",197},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",197},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",197},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",197},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",197}],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]

{"Octahedral", 198}

GraphData[{"Octahedral",198},"StandardName"]

Primary

GraphData[{"Octahedral",198}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",198},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",198},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",198},"Edges"]

v=Join[UnitCirclePoints[6],{-#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,3],e[6,8,4],e[5,8,1],e[6,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",198},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",198},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",198},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",198}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",198}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",198},"Planar"]

GraphData[{"Octahedral",198},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",198}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",198}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5]];
v=Join[v,Rest@Subdivide[Mean[v[[{1,5}]]],Mean[v[[{2,4}]]],3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,5],e[4,8,2,7,1],e[6,7,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",198},{"RCN","CN"}]

GraphData[{"Octahedral",198},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",198}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",198}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",198},"Circulant"]

GraphData[{"Octahedral",198},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",198},"Halin"]

GraphData[{"Octahedral",198},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",198},"LCF"]

GraphData[{"Octahedral",198},"LCFSignature"]

GraphData[{"Octahedral",198},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",198},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",198}],Debug->True]//Timing

GraphData[{"Octahedral",198},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",198},"Matchstick"]

GraphData[{"Octahedral",198},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",198},"Edges"]]

3D All

GraphData[{"Octahedral",198},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",198},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",198},"Polyhedral"]

GraphData[{"Octahedral",198},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",198},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",198},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",198},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",198}],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]

{"Octahedral", 199} == "TriakisTetrahedralGraph"

GraphData[{"Octahedral",199},"StandardName"]

{"Octahedral", 200}

GraphData[{"Octahedral",200},"StandardName"]

Primary

GraphData[{"Octahedral",200}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",200},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",200},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",200},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",200},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",200},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",200}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",200}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",200},"Planar"]

GraphData[{"Octahedral",200},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",200}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",200}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[UnitCirclePoints[4,-Pi/2],CirclePoints[{Sqrt[2]/4,-Pi/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5],e[1,8,3,6,1],e[4,8,6,2],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,5/4}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,1,5,2,7,1],e[4,7],e[6,5,8],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",200},{"RCN","CN"}]

GraphData[{"Octahedral",200},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",200}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",200}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",200},"Circulant"]

GraphData[{"Octahedral",200},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",200},"Halin"]

GraphData[{"Octahedral",200},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",200},"LCF"]

GraphData[{"Octahedral",200},"LCFSignature"]

GraphData[{"Octahedral",200},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",200},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",200}],Debug->True]//Timing

GraphData[{"Octahedral",200},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",200},"Matchstick"]

GraphData[{"Octahedral",200},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",200},"Edges"]]

3D All

GraphData[{"Octahedral",200},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",200},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",200},"Polyhedral"]

GraphData[{"Octahedral",200},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",200},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",200},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",200},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",200}],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]

{"Octahedral", 201}

GraphData[{"Octahedral",201},"StandardName"]

Primary

GraphData[{"Octahedral",201}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",201},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",201},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",201},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",201},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",201},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",201}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",201}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",201},"Planar"]

GraphData[{"Octahedral",201},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",201}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",201}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[UnitCirclePoints[4,-Pi/2],CirclePoints[{Sqrt[2]/4,-Pi/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5],e[1,8],e[3,6,1],e[4,8,6,2],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,5/4}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,1,5,2],e[4,7],e[6,5,8],e[3,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,5/4}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,1],e[2,7,1],e[4,7],e[6,5,8],e[3,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",201},{"RCN","CN"}]

GraphData[{"Octahedral",201},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",201}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",201}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",201},"Circulant"]

GraphData[{"Octahedral",201},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",201},"Halin"]

GraphData[{"Octahedral",201},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",201},"LCF"]

GraphData[{"Octahedral",201},"LCFSignature"]

GraphData[{"Octahedral",201},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",201},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",201}],Debug->True]//Timing

GraphData[{"Octahedral",201},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",201},"Matchstick"]

GraphData[{"Octahedral",201},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",201},"Edges"]]

3D All

GraphData[{"Octahedral",201},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",201},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",201},"Polyhedral"]

GraphData[{"Octahedral",201},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",201},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",201},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",201},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",201}],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]

{"Octahedral", 202}

GraphData[{"Octahedral",202},"StandardName"]

Primary

GraphData[{"Octahedral",202}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",202},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",202},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",202},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",202},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",202},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",202},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",202}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",202}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",202},"Planar"]

GraphData[{"Octahedral",202},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",202}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",202}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[CirclePoints[{1,-Pi/2},4],CirclePoints[{1/2,-Pi/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,3],e[4,8,7,6,5,8],e[7,2,6],{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Tuples[{1,3}/4,2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,8,6,5,2,8,4,6],{2,7},{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",202},{"RCN","CN"}]

GraphData[{"Octahedral",202},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",202}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",202}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",202},"Circulant"]

GraphData[{"Octahedral",202},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",202},"Halin"]

GraphData[{"Octahedral",202},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",202},"LCF"]

GraphData[{"Octahedral",202},"LCFSignature"]

GraphData[{"Octahedral",202},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",202},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",202}],Debug->True]//Timing

GraphData[{"Octahedral",202},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",202},"Matchstick"]

GraphData[{"Octahedral",202},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",202},"Edges"]]

3D All

GraphData[{"Octahedral",202},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",202},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",202},"Polyhedral"]

GraphData[{"Octahedral",202},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",202},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",202},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",202},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",202}],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]

{"Octahedral", 203} == "BislitCube"

GraphData[{"Octahedral",203},"StandardName"]

{"Octahedral", 204}

GraphData[{"Octahedral",204},"StandardName"]

Primary

GraphData[{"Octahedral",204}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",204},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",204},"EdgeList"]]

Default embedding

GraphPlot@Graph[GraphData[{"Octahedral",204},"Edges"],GraphLayout->"SpringEmbedding"]

v=Join[UnitCirclePoints[6,-Pi/2],{{0,0},{0,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,3,7,6,5,7,2,3,4,5,1,7,8,4],e[6,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",204},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",204},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",204}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",204}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",204},"Planar"]

GraphData[{"Octahedral",204},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",204}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",204}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{1/2,0},{0,1/2},{0,-1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[2,3,4,1,2,8,6,7,5,8],e[2,5,4,7],e[1,5,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/4,3/4},{1/4,3/4},3]];
AppendTo[v,Mean[v[[{1,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,8,7,6,5,4,1],e[2,7,3,4],e[8,5,3,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",204},{"RCN","CN"}]

GraphData[{"Octahedral",204},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",204}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",204}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",204},"Circulant"]

GraphData[{"Octahedral",204},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",204},"Halin"]

GraphData[{"Octahedral",204},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",204},"LCF"]

GraphData[{"Octahedral",204},"LCFSignature"]

GraphData[{"Octahedral",204},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",204},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",204}],Debug->True]//Timing

GraphData[{"Octahedral",204},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",204},"Matchstick"]

GraphData[{"Octahedral",204},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",204},"Edges"]]

3D All

GraphData[{"Octahedral",204},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",204},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",204},"Polyhedral"]

GraphData[{"Octahedral",204},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",204},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",204},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",204},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",204}],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]

{"Octahedral", 205}

GraphData[{"Octahedral",205},"StandardName"]

Primary

GraphData[{"Octahedral",205}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",205},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",205},"Edges"],Pi/2]

v=Join[UnitCirclePoints[6,-Pi/2],{0,#/2}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,3],e[2,7,6,8,2],{5,7},{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",205},"EdgeList"]]

Degenerate

GraphData[{"Octahedral",205},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",205},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",205}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",205}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",205},"Planar"]

GraphData[{"Octahedral",205},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",205}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",205}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4,Pi/2],{{0,0}},Subdivide[{-1/4,1/Sqrt[2]/2},{1/4,1/Sqrt[2]/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7],e[2,6,5,8,4],e[8,1,6,7,8],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-3Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{0,-1/2},{1/2,0},{0,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,3,6,1],e[5,8,7],{4,8},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[,-Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{0,-1/2},{1/2,0},{0,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,3],e[6,2,5,6,7,8,5],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",205},{"RCN","CN"}]

GraphData[{"Octahedral",205},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",205}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",205}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",205},"Circulant"]

GraphData[{"Octahedral",205},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",205},"Halin"]

GraphData[{"Octahedral",205},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",205},"LCF"]

GraphData[{"Octahedral",205},"LCFSignature"]

GraphData[{"Octahedral",205},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",205},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",205}],Debug->True]//Timing

GraphData[{"Octahedral",205},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",205},"Matchstick"]

GraphData[{"Octahedral",205},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",205},"Edges"]]

3D All

GraphData[{"Octahedral",205},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",205},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",205},"Polyhedral"]

GraphData[{"Octahedral",205},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",205},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",205},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",205},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",205}],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]

{"Octahedral", 206} == "AugmentedTriangularPrismDualGraph"

GraphData[{"Octahedral",206},"StandardName"]

{"Octahedral", 207} == "CubicalGraph"

GraphData[{"Octahedral",207},"StandardName"]

{"Octahedral", 208}

GraphData[{"Octahedral",208},"StandardName"]

Primary

GraphData[{"Octahedral",208}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",208},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",208},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",208},"Edges"],Pi/2]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5,-Pi/2],{0,h+# Sqrt[3]/2}&/@{-1,1}];
AppendTo[v,Mean[v[[{3,4,6}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,3,7,4,6],e[5,8,2],{7,8},e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",208},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",208},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",208}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",208}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",208},"Planar"]

GraphData[{"Octahedral",208},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",208}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",208}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,3Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{0,-1/2},{0,1/2},{1/2,0}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,8,3],e[5,4,8,6,5,7,8],{4,7},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,5/4}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,1,5,2],e[6,5,8],{4,7},{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,5/4}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,1,6,7,8,2],e[6,5,8],{3,5},{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",208},{"RCN","CN"}]

GraphData[{"Octahedral",208},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",208}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",208}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",208},"Circulant"]

GraphData[{"Octahedral",208},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",208},"Halin"]

GraphData[{"Octahedral",208},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",208},"LCF"]

GraphData[{"Octahedral",208},"LCFSignature"]

GraphData[{"Octahedral",208},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",208},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",208}],Debug->True]//Timing

GraphData[{"Octahedral",208},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",208},"Matchstick"]

GraphData[{"Octahedral",208},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",208},"Edges"]]

3D All

GraphData[{"Octahedral",208},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",208},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",208},"Polyhedral"]

GraphData[{"Octahedral",208},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",208},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",208},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",208},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",208}],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]

{"Octahedral", 209}

GraphData[{"Octahedral",209},"StandardName"]

Primary

GraphData[{"Octahedral",209}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",209},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",209},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",209},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

v=Join[UnitCirclePoints[4],CirclePoints[1/3,4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,4,5],e[1,6,3,8,1],{4,8},{3,7},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot@Graph[GraphData[{"Octahedral",209},"Edges"],GraphLayout->"CircularEmbedding"]

v=UnitCirclePoints[8];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,4,8,5],e[4,6,3],e[6,2,7],{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

RotateGraph[,2Pi/8]

v=UnitCirclePoints[8];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,4,6,8,2,4],e[5,8],{2,7},{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"Octahedral",209},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",209},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",209},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",209}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",209}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",209},"Planar"]

GraphData[{"Octahedral",209},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",209}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",209}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{0,-1/2},{1/2,0},{0,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,8,7,6,5],e[7,2,5,4,7,3],{2,6},{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{1/4,3/4},{0,3/4},{-1/4,3/4},{0,5/4},{0,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,8,2,4,5,6,1,7,4],{2,5},e[3,7,5,8],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",209},{"RCN","CN"}]

GraphData[{"Octahedral",209},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",209}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",209}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",209},"Circulant"]

GraphData[{"Octahedral",209},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",209},"Halin"]

GraphData[{"Octahedral",209},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",209},"LCF"]

GraphData[{"Octahedral",209},"LCFSignature"]

GraphData[{"Octahedral",209},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",209},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",209}],Debug->True]//Timing

GraphData[{"Octahedral",209},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",209},"Matchstick"]

GraphData[{"Octahedral",209},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",209},"Edges"]]

3D All

GraphData[{"Octahedral",209},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",209},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",209},"Polyhedral"]

GraphData[{"Octahedral",209},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",209},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",209},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",209},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",209}],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]

{"Octahedral", 210} == {"Triangulated", {8, 8}}

GraphData[{"Octahedral",210},"StandardName"]

{"Octahedral", 211}

GraphData[{"Octahedral",211},"StandardName"]

Primary

GraphData[{"Octahedral",211}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",211},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",211},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",211},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",211},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",211},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",211}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",211}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",211},"Planar"]

GraphData[{"Octahedral",211},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",211}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",211}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,3/4},{3/8,1/2},{5/8,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,1],e[3,6,4,7,5,8,6,7],{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",211},{"RCN","CN"}]

GraphData[{"Octahedral",211},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",211}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",211}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",211}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",211},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",211},"Circulant"]

GraphData[{"Octahedral",211},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",211},"Halin"]

GraphData[{"Octahedral",211},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",211},"LCF"]

GraphData[{"Octahedral",211},"LCFSignature"]

GraphData[{"Octahedral",211},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",211},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",211}],Debug->True]//Timing

GraphData[{"Octahedral",211},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",211},"Matchstick"]

GraphData[{"Octahedral",211},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",211},"Edges"]]

3D All

GraphData[{"Octahedral",211},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",211},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",211},"Polyhedral"]

GraphData[{"Octahedral",211},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",211},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",211},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",211},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",211}],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]

{"Octahedral", 212}

GraphData[{"Octahedral",212},"StandardName"]

Primary

GraphData[{"Octahedral",212}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",212},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",212},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",212},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",212},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",212},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",212}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",212}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",212},"Planar"]

GraphData[{"Octahedral",212},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",212}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",212}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[,Pi/2]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,3/4},{1/4,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,3,6,7,4],e[1,7,5,6,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,1],e[6,3,8,5,6],e[3,5,7,4]},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}},Subdivide[{-1/3,1/2},{1/3,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,1],e[6,5,8,4,6],e[4,7,5,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",212},{"RCN","CN"}]

GraphData[{"Octahedral",212},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",212}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",212}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",212}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",212},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",212},"Circulant"]

GraphData[{"Octahedral",212},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",212},"Halin"]

GraphData[{"Octahedral",212},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",212},"LCF"]

GraphData[{"Octahedral",212},"LCFSignature"]

GraphData[{"Octahedral",212},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",212},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",212}],Debug->True]//Timing

GraphData[{"Octahedral",212},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",212},"Matchstick"]

GraphData[{"Octahedral",212},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",212},"Edges"]]

3D All

GraphData[{"Octahedral",212},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",212},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",212},"Polyhedral"]

GraphData[{"Octahedral",212},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",212},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",212},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",212},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",212}],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]

{"Octahedral", 213}

GraphData[{"Octahedral",213},"StandardName"]

Primary

GraphData[{"Octahedral",213}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",213},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",213},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",213},"Edges"]

v=Join[UnitCirclePoints[6,-Pi/2],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,4,7,1],e[6,7,5,3,8,2],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",213},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",213},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",213},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",213}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",213}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",213},"Planar"]

GraphData[{"Octahedral",213},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",213}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",213}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

RegionIntersection[Line[v[[{5,6}]]],Line[v[[{1,4}]]]]//FullSimplify//Quiet

v=Join[UnitCirclePoints[5],{{0,h},{-(1/(2 (Sqrt[5]))),-(1/2) (Sqrt[1-(2/(Sqrt[5]))])},{(1/(2 (Sqrt[5]))),-(1/2) (Sqrt[1-(2/(Sqrt[5]))])}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,6,7,5],e[7,4,6,2,8,7,1],{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/2}},Subdivide[{-1/3,3/4},{1/3,3/4},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,3,5,1],e[5,6,7,8],e[1,6,4,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,-2Pi/3]]

v={{-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[1,2,3,1,5,2,6,5,4,1,7,8,2],e[4,7,3,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

v={{-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[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]

MinimalCrossing

GraphData[{"Octahedral",213},{"RCN","CN"}]

GraphData[{"Octahedral",213},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",213}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",213}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",213},"Circulant"]

GraphData[{"Octahedral",213},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",213},"Halin"]

GraphData[{"Octahedral",213},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",213},"LCF"]

GraphData[{"Octahedral",213},"LCFSignature"]

GraphData[{"Octahedral",213},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",213},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",213}],Debug->True]//Timing

GraphData[{"Octahedral",213},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",213},"Matchstick"]

GraphData[{"Octahedral",213},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",213},"Edges"]]

3D All

GraphData[{"Octahedral",213},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",213},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",213},"Polyhedral"]

GraphData[{"Octahedral",213},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",213},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",213},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",213},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",213}],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]

{"Octahedral", 214}

GraphData[{"Octahedral",214},"StandardName"]

Primary

GraphData[{"Octahedral",214}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",214},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",214},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"Octahedral",214},"Edges"],Pi/2]

g=EdgeAdd[,UndirectedEdge@@@{{8,3},{3,2},{5,7},{1,7}}]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",214},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",214},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",214},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",214}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",214}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",214},"Planar"]

GraphData[{"Octahedral",214},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",214}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",214}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-3Pi/4-Pi/2]]

v={{-1,0},{0,-1},{1,0},{0,1},{0,0},{-1/4,1/2},{1/4,1/2}};
AppendTo[v,Mean@v[[{4,6,7}]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,7,6,1],e[2,5,6,4,7,5],e[7,8,6],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,1},{0,1},{1/4,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,3,8,2],e[6,7,8,5,6],{3,7},{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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}};
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],{4,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",214},{"RCN","CN"}]

GraphData[{"Octahedral",214},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",214}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",214}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",214},"Circulant"]

GraphData[{"Octahedral",214},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",214},"Halin"]

GraphData[{"Octahedral",214},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",214},"LCF"]

GraphData[{"Octahedral",214},"LCFSignature"]

GraphData[{"Octahedral",214},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",214},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",214}],Debug->True]//Timing

GraphData[{"Octahedral",214},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",214},"Matchstick"]

GraphData[{"Octahedral",214},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",214},"Edges"]]

3D All

GraphData[{"Octahedral",214},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",214},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",214},"Polyhedral"]

GraphData[{"Octahedral",214},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",214},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",214},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",214},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",214}],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]

{"Octahedral", 215}

GraphData[{"Octahedral",215},"StandardName"]

Primary

GraphData[{"Octahedral",215}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",215},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",215},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",215},"Edges"]

v=Join[UnitCirclePoints[6],{-#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,4,5,6,1,7,3,6,8,4,7,8,5],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",215},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",215},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",215},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",215}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",215}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",215},"Planar"]

GraphData[{"Octahedral",215},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",215}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",215}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{-1/2,0},{0,-1/2},{1/2,0},{0,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,3,8,1],e[4,8,5,6,2,5],e[6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",215},{"RCN","CN"}]

GraphData[{"Octahedral",215},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",215}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",215}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",215},"Circulant"]

GraphData[{"Octahedral",215},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",215},"Halin"]

GraphData[{"Octahedral",215},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",215},"LCF"]

GraphData[{"Octahedral",215},"LCFSignature"]

GraphData[{"Octahedral",215},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",215},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",215}],Debug->True]//Timing

GraphData[{"Octahedral",215},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",215},"Matchstick"]

GraphData[{"Octahedral",215},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",215},"Edges"]]

3D All

GraphData[{"Octahedral",215},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",215},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",215},"Polyhedral"]

GraphData[{"Octahedral",215},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",215},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",215},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",215},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",215}],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]

{"Octahedral", 216} == {"Triangulated", {8, 12}}

GraphData[{"Octahedral",216},"StandardName"]

{"Octahedral", 217}

GraphData[{"Octahedral",217},"StandardName"]

Primary

GraphData[{"Octahedral",217}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",217},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",217},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",217},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",217},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",217},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",217}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",217}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",217},"Planar"]

GraphData[{"Octahedral",217},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",217}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",217}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,2,7,6,5,1],e[5,4,6,3,7,8,6,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",217},{"RCN","CN"}]

GraphData[{"Octahedral",217},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",217}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",217}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",217},"Circulant"]

GraphData[{"Octahedral",217},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",217},"Halin"]

GraphData[{"Octahedral",217},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",217},"LCF"]

GraphData[{"Octahedral",217},"LCFSignature"]

GraphData[{"Octahedral",217},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",217},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",217}],Debug->True]//Timing

GraphData[{"Octahedral",217},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",217},"Matchstick"]

GraphData[{"Octahedral",217},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",217},"Edges"]]

3D All

GraphData[{"Octahedral",217},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",217},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",217},"Polyhedral"]

GraphData[{"Octahedral",217},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",217},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",217},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",217},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",217}],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]

{"Octahedral", 218}

GraphData[{"Octahedral",218},"StandardName"]

Primary

GraphData[{"Octahedral",218}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",218},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",218},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",218},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",218},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",218},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",218},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",218}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",218}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",218},"Planar"]

GraphData[{"Octahedral",218},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",218}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",218}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4-Pi/2]]

v=Join[{{0,-1},{0,1}},Subdivide[{-1,0},{1,0},4]];
AppendTo[v,Mean[v[[{2,4}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,1,7,2,3,1,6,2,8,4],e[3,4,5,6,7],{5,8},{3,8},{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/4},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,4,1,5,4,7,8,2,6,7,3,8,6],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",218},{"RCN","CN"}]

GraphData[{"Octahedral",218},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",218}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",218}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",218},"Circulant"]

GraphData[{"Octahedral",218},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",218},"Halin"]

GraphData[{"Octahedral",218},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",218},"LCF"]

GraphData[{"Octahedral",218},"LCFSignature"]

GraphData[{"Octahedral",218},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",218},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",218}],Debug->True]//Timing

GraphData[{"Octahedral",218},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",218},"Matchstick"]

GraphData[{"Octahedral",218},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",218},"Edges"]]

3D All

GraphData[{"Octahedral",218},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",218},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",218},"Polyhedral"]

GraphData[{"Octahedral",218},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",218},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",218},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",218},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",218}],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]

{"Octahedral", 219}

GraphData[{"Octahedral",219},"StandardName"]

Primary

GraphData[{"Octahedral",219}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",219},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",219},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",219},"Edges"]

RegionIntersection[Line[v[[{2,4}]]],Line[v[[{1,3}]]]]//FullSimplify

v=Join[UnitCirclePoints[6,-Pi/2],{#/(Sqrt[3]),0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,8,1,2,3,4,5,6,1,7,5],e[6,7,4,8,2,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",219},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",219},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",219},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",219}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",219}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",219},"Planar"]

GraphData[{"Octahedral",219},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",219}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",219}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

RotateGraph[GraphicsToGraph@,2Pi/5]

RegionIntersection[Line[v[[{1,4}]]],Line[v[[{2,5}]]]]//FullSimplify

RegionIntersection[Line[v[[{1,4}]]],Line[v[[{3,5}]]]]//FullSimplify

v=Join[UnitCirclePoints[5],{{0,-(Sqrt[1-(2/(Sqrt[5]))])}},{#((1/4)-((Sqrt[5])/4)),(NumericalApproximation[Root, (RowDefault["-0.100", FEExpressionsNumericalApproximationElider]), Root[1-100 ((#1)^2)+80 ((#1)^4)&,2], ])}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,7,1,2,3,4,5,1,6,8,4],e[3,8,5,6,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,-3Pi/4]]

v=Join[UnitCirclePoints[4,-Pi/2],CirclePoints[1/4,4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,3,7,8,1],e[7,4,8,5,2,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/4},{1/2,1/4},2],{#/4,3/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,8,3,7,4],e[1,7,5,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",219},{"RCN","CN"}]

GraphData[{"Octahedral",219},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",219}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",219}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",219},"Circulant"]

GraphData[{"Octahedral",219},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",219},"Halin"]

GraphData[{"Octahedral",219},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",219},"LCF"]

GraphData[{"Octahedral",219},"LCFSignature"]

GraphData[{"Octahedral",219},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",219},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",219}],Debug->True]//Timing

GraphData[{"Octahedral",219},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",219},"Matchstick"]

GraphData[{"Octahedral",219},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",219},"Edges"]]

3D All

GraphData[{"Octahedral",219},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",219},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",219},"Polyhedral"]

GraphData[{"Octahedral",219},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",219},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",219},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",219},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",219}],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]

{"Octahedral", 220}

GraphData[{"Octahedral",220},"StandardName"]

Primary

GraphData[{"Octahedral",220}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",220},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",220},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",220},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",220},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",220},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",220},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",220}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",220}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",220},"Planar"]

GraphData[{"Octahedral",220},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",220}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",220}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,2,7,6,5,4,6,1,5],e[6,8,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,1/2},{1/4,1/2},{0,3/4},{0,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1,8,2],e[3,8,7,5,4,6,7]},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},{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],e[2,8,7,1],e[4,5,6,7,3,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

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,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1],e[4,5,7,6,4],e[5,8,6],e[3,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,1/2},{-1/4,1},{1/4,1}};
AppendTo[v,Mean[v[[{5,6,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,1],e[4,5,8,6,3,7,8],e[6,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",220},{"RCN","CN"}]

GraphData[{"Octahedral",220},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",220}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",220}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",220},"Circulant"]

GraphData[{"Octahedral",220},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",220},"Halin"]

GraphData[{"Octahedral",220},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",220},"LCF"]

GraphData[{"Octahedral",220},"LCFSignature"]

GraphData[{"Octahedral",220},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",220},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",220}],Debug->True]//Timing

GraphData[{"Octahedral",220},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",220},"Matchstick"]

GraphData[{"Octahedral",220},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",220},"Edges"]]

3D All

GraphData[{"Octahedral",220},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",220},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",220},"Polyhedral"]

GraphData[{"Octahedral",220},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",220},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",220},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",220},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",220}],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]

{"Octahedral", 221}

GraphData[{"Octahedral",221},"StandardName"]

Primary

GraphData[{"Octahedral",221}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",221},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",221},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",221},"Edges"]

v=Join[UnitCirclePoints[6]];
v=Join[v,v[[#]]+{1,0}&/@{1,3}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,8,3,1,5,3],e[8,2,6,4,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"Octahedral",221},"Edges"]

v={{0,0},{1/2,0},{1,0},{1,1},{1/2,1},{0,1},{1/6,1/2},{1/3,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,6,8,1],e[4,8,3],e[5,7,2,5,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"Octahedral",221},"Edges"]

v=Join[UnitCirclePoints[6],{0,#/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,8,3,1,5,3],e[6,4,2,6],e[8,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",221},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",221},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",221},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",221}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",221}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",221},"Planar"]

GraphData[{"Octahedral",221},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",221}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",221}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{3/8+1/16,1/2},{5/8-1/16,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,6,1,8,2],e[4,8,3],e[5,6,8,7,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{-1/2,1/4},{1/2,1/4},{0,1/2},{-1/8,1},{1/8,1},{0,Sqrt[3]}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,8,1,3,4,8,3,5,4,7,6,3],e[5,6,8,7,5],{2,4}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/3,1/2},{1/3,1/2},{-1/8,3/4},{1/8,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,5,1],e[5,3,6,8,7,5,4,6],e[7,3,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,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,2,6,1,7,3,8,2],e[4,6,7,8,6,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",221},{"RCN","CN"}]

GraphData[{"Octahedral",221},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",221}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",221}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",221},"Circulant"]

GraphData[{"Octahedral",221},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",221},"Halin"]

GraphData[{"Octahedral",221},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",221},"LCF"]

GraphData[{"Octahedral",221},"LCFSignature"]

GraphData[{"Octahedral",221},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",221},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",221}],Debug->True]//Timing

GraphData[{"Octahedral",221},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",221},"Matchstick"]

GraphData[{"Octahedral",221},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",221},"Edges"]]

3D All

GraphData[{"Octahedral",221},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",221},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",221},"Polyhedral"]

GraphData[{"Octahedral",221},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",221},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",221},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",221},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",221}],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]

{"Octahedral", 222}

GraphData[{"Octahedral",222},"StandardName"]

Primary

GraphData[{"Octahedral",222}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",222},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",222},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",222},"Edges"]],Pi/2]

v=Join[UnitCirclePoints[6],{0,#/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,6,8,1],e[7,5,8,2,7],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

v={{0,0},{1,0},{1,1/2},{1,1},{0,1},{0,1/2},{1/2,1/2},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,7,1,2,3,4,5,6,1,8,3,7,6,8,2,7,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",222},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",222},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",222},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",222}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",222}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",222},"Planar"]

GraphData[{"Octahedral",222},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",222}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",222}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,4Pi/5]]

RegionIntersection[Line[v[[{1,4}]]],Line[v[[{2,5}]]]]//FullSimplify

v=Join[UnitCirclePoints[5]];
v=Join[v,Subdivide[v[[4]],v[[2]],3][[2;;-2]],{{0,-(Sqrt[1-(2/(Sqrt[5]))])}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,4,6,7,2,8,5],e[8,6,3,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{0,1/4},{1/2,1/4},{-1/4+1/16,3/4},{1/4-1/16,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2],e[4,3,6,8,7,4],e[3,7,5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-1/3,3/4},{1/3,3/4},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,5,1],e[5,3,8,4,5],e[6,3,7]},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}},Subdivide[{-1/3,3/4},{1/3,3/4},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,3,5,1],e[4,5,6,7,8,4],e[6,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",222},{"RCN","CN"}]

GraphData[{"Octahedral",222},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",222}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",222}],"CrossingNumber"->cn]]

Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",222}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"Octahedral",222},"V"]&]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",222},"Circulant"]

GraphData[{"Octahedral",222},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",222},"Halin"]

GraphData[{"Octahedral",222},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",222},"LCF"]

GraphData[{"Octahedral",222},"LCFSignature"]

GraphData[{"Octahedral",222},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",222},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",222}],Debug->True]//Timing

GraphData[{"Octahedral",222},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",222},"Matchstick"]

GraphData[{"Octahedral",222},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",222},"Edges"]]

3D All

GraphData[{"Octahedral",222},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",222},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",222},"Polyhedral"]

GraphData[{"Octahedral",222},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",222},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",222},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",222},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",222}],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]

{"Octahedral", 223}

GraphData[{"Octahedral",223},"StandardName"]

Primary

GraphData[{"Octahedral",223}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",223},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",223},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",223},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",223},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",223},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",223},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",223}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",223}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",223},"Planar"]

GraphData[{"Octahedral",223},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",223}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",223}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,3/4},{3/8+1/16,1/2},{5/8-1/16,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,1],e[4,6,3],e[6,7,5,8,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2},{1/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,2,7,6,5,1,6,3,7,8,6],{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",223},{"RCN","CN"}]

GraphData[{"Octahedral",223},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",223}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",223}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",223},"Circulant"]

GraphData[{"Octahedral",223},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",223},"Halin"]

GraphData[{"Octahedral",223},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",223},"LCF"]

GraphData[{"Octahedral",223},"LCFSignature"]

GraphData[{"Octahedral",223},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",223},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",223}],Debug->True]//Timing

GraphData[{"Octahedral",223},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",223},"Matchstick"]

GraphData[{"Octahedral",223},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",223},"Edges"]]

3D All

GraphData[{"Octahedral",223},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",223},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",223},"Polyhedral"]

GraphData[{"Octahedral",223},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",223},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",223},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",223},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",223}],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]

{"Octahedral", 224}

GraphData[{"Octahedral",224},"StandardName"]

Primary

GraphData[{"Octahedral",224}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",224},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",224},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",224},"Edges"]

v=Join[UnitCirclePoints[6],{{0,0},{-1/2,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,3],e[1,7,8,6,7,4,8,5],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",224},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",224},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",224},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",224}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",224}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",224},"Planar"]

GraphData[{"Octahedral",224},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",224}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",224}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,-4Pi/5]]

v=Join[UnitCirclePoints[5]];
v=Join[v,Subdivide[v[[2]],v[[4]],3][[2;;-2]],{{4/8,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,2,6,7,4],e[6,5,7,3,6,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/3,1/4},{2/3,1/4},{1/2,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,7,8,2],e[7,6,1],e[4,8,3],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",224},{"RCN","CN"}]

GraphData[{"Octahedral",224},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",224}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",224}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",224},"Circulant"]

GraphData[{"Octahedral",224},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",224},"Halin"]

GraphData[{"Octahedral",224},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",224},"LCF"]

GraphData[{"Octahedral",224},"LCFSignature"]

GraphData[{"Octahedral",224},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",224},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",224}],Debug->True]//Timing

GraphData[{"Octahedral",224},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",224},"Matchstick"]

GraphData[{"Octahedral",224},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",224},"Edges"]]

3D All

GraphData[{"Octahedral",224},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",224},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",224},"Polyhedral"]

GraphData[{"Octahedral",224},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",224},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",224},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",224},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",224}],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]

{"Octahedral", 225}

GraphData[{"Octahedral",225},"StandardName"]

Primary

GraphData[{"Octahedral",225}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",225},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",225},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",225},"Edges"],GraphLayout->"SpringEmbedding"],Pi/2]

v=Join[UnitCirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7],e[8,5,3,8],e[6,2,4,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",225},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",225},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",225},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",225}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",225}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",225},"Planar"]

GraphData[{"Octahedral",225},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",225}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",225}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/4,1/2},{3/4,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,8,6,1],e[4,8,3],e[5,6,7,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,5,6,7],e[4,7,3,8,6,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,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,2],e[4,7,3,8,5,6,7,8,6,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,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,5,1],e[4,5,7,3,8,6,4],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,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,2,8,3,7,1],e[5,6,7,8,6,4]},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},{-1/4,1},{1/4,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,1],e[4,6,8,3,7,5,4],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",225},{"RCN","CN"}]

GraphData[{"Octahedral",225},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",225}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",225}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",225},"Circulant"]

GraphData[{"Octahedral",225},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",225},"Halin"]

GraphData[{"Octahedral",225},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",225},"LCF"]

GraphData[{"Octahedral",225},"LCFSignature"]

GraphData[{"Octahedral",225},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",225},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",225}],Debug->True]//Timing

GraphData[{"Octahedral",225},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",225},"Matchstick"]

GraphData[{"Octahedral",225},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",225},"Edges"]]

3D All

GraphData[{"Octahedral",225},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",225},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",225},"Polyhedral"]

GraphData[{"Octahedral",225},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",225},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",225},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",225},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",225}],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]

{"Octahedral", 226}

GraphData[{"Octahedral",226},"StandardName"]

Primary

GraphData[{"Octahedral",226}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",226},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",226},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",226},"Edges"],GraphLayout->"HighDimensionalEmbedding"],-Pi/2]

v=UnitCirclePoints[5];
v=Join[v,Subdivide[v[[3]],Mean[v[[{1,5}]]],4][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,8,5,7,1],e[4,6,2,7,4,8,2],e[7,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",226},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",226},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",226},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",226}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",226}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",226},"Planar"]

GraphData[{"Octahedral",226},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",226}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",226}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,3Pi/4]]

v=Join[{{-1,0},{0,-1},{1,0},{0,1},{0,-1/2},{0,0}},{#/4,1/2}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,3,8,7,1,2,3,4,1,5,6,7,4,8,6],e[1,6,3],{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-1/4,3/4},{1/4,3/4},2],{{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,5,1],e[4,7,3,5,4],e[5,8,7],e[6,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[3],CirclePoints[{1/6,-Pi/2},3],{{0,0}}];
AppendTo[v,Mean[v[[{5,6}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,2,6,3,4,1],e[4,5,8,6,4,7,8],e[6,7,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",226},{"RCN","CN"}]

GraphData[{"Octahedral",226},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",226}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",226}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",226},"Circulant"]

GraphData[{"Octahedral",226},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",226},"Halin"]

GraphData[{"Octahedral",226},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",226},"LCF"]

GraphData[{"Octahedral",226},"LCFSignature"]

GraphData[{"Octahedral",226},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",226},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",226}],Debug->True]//Timing

GraphData[{"Octahedral",226},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",226},"Matchstick"]

GraphData[{"Octahedral",226},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",226},"Edges"]]

3D All

GraphData[{"Octahedral",226},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",226},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",226},"Polyhedral"]

GraphData[{"Octahedral",226},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",226},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",226},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",226},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",226}],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]

{"Octahedral", 227} == {"Triangulated",{ 8, 6}}

GraphData[{"Octahedral",227},"StandardName"]

{"Octahedral", 228}

GraphData[{"Octahedral",228},"StandardName"]

Primary

GraphData[{"Octahedral",228}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",228},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",228},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",228},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",228},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",228},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",228},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",228}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",228}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",228},"Planar"]

GraphData[{"Octahedral",228},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",228}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",228}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Tuples[{1,3}/4,2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,8,6,5,4,8,2,7,1],e[5,8,3],{4,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",228},{"RCN","CN"}]

GraphData[{"Octahedral",228},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",228}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",228}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",228},"Circulant"]

GraphData[{"Octahedral",228},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",228},"Halin"]

GraphData[{"Octahedral",228},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",228},"LCF"]

GraphData[{"Octahedral",228},"LCFSignature"]

GraphData[{"Octahedral",228},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",228},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",228}],Debug->True]//Timing

GraphData[{"Octahedral",228},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",228},"Matchstick"]

GraphData[{"Octahedral",228},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",228},"Edges"]]

3D All

GraphData[{"Octahedral",228},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",228},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",228},"Polyhedral"]

GraphData[{"Octahedral",228},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",228},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",228},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",228},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",228}],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]

{"Octahedral", 229}

GraphData[{"Octahedral",229},"StandardName"]

Primary

GraphData[{"Octahedral",229}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",229},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",229},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",229},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",229},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",229},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",229},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",229}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",229}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",229},"Planar"]

GraphData[{"Octahedral",229},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",229}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",229}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,7,8,5],e[8,4,7,6,8],{5,2},{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/4},{1/2,3/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,2,8,5,1],e[5,6,8,7,5,4,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",229},{"RCN","CN"}]

GraphData[{"Octahedral",229},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",229}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",229}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",229},"Circulant"]

GraphData[{"Octahedral",229},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",229},"Halin"]

GraphData[{"Octahedral",229},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",229},"LCF"]

GraphData[{"Octahedral",229},"LCFSignature"]

GraphData[{"Octahedral",229},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",229},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",229}],Debug->True]//Timing

GraphData[{"Octahedral",229},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",229},"Matchstick"]

GraphData[{"Octahedral",229},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",229},"Edges"]]

3D All

GraphData[{"Octahedral",229},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",229},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",229},"Polyhedral"]

GraphData[{"Octahedral",229},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",229},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",229},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",229},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",229}],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]

{"Octahedral", 230}

GraphData[{"Octahedral",230},"StandardName"]

Primary

GraphData[{"Octahedral",230}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",230},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",230},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Octahedral",230},"Edges"],GraphLayout->"SpringEmbedding"]

RegionIntersection[Line[v[[{1,5}]]],Line[v[[{4,6}]]]]//FullSimplify

v=Join[UnitCirclePoints[6],{((#)/2),-(1/(2 (Sqrt[3])))}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,8,2,4,7,6],e[1,8,3,5,7,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",230},"Graph","Degenerate"]//StyleGraphs

Circular

GraphData[{"Octahedral",230},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",230}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",230}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",230},"Planar"]

GraphData[{"Octahedral",230},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",230}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",230}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/4,1/2},{3/4,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,6,4,8,3],e[5,7,8,6,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{3/4,1/2},{1/2,1/4},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,2,6,7,5,8,6,3],e[8,4,5,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",230},{"RCN","CN"}]

GraphData[{"Octahedral",230},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",230}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",230}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",230},"Circulant"]

GraphData[{"Octahedral",230},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",230},"Halin"]

GraphData[{"Octahedral",230},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",230},"LCF"]

GraphData[{"Octahedral",230},"LCFSignature"]

GraphData[{"Octahedral",230},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",230},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",230}],Debug->True]//Timing

GraphData[{"Octahedral",230},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",230},"Matchstick"]

GraphData[{"Octahedral",230},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",230},"Edges"]]

3D All

GraphData[{"Octahedral",230},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",230},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",230},"Polyhedral"]

GraphData[{"Octahedral",230},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",230},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",230},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",230},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",230}],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]

{"Octahedral", 231}

GraphData[{"Octahedral",231},"StandardName"]

Primary

GraphData[{"Octahedral",231}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",231},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",231},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",231},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",231},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",231},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",231},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",231}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",231}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",231},"Planar"]

GraphData[{"Octahedral",231},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",231}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",231}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi/4]]

v={{0,-1},{1,0},{0,1},{-1,0},{-1/2,0},{1/2,0},{0,1/2},{0,-1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,6,7,5,8],e[4,5,6,2,7,4],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2,6,8,4],e[6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-1/4,3/4},{1/4,3/4},2],{{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,5,1],{4,6},e[5,3,7,8,5],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4}},Subdivide[{-1/4,3/4},{1/4,3/4},2],{{0,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,5,1],e[4,7,8,5,4,6],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",231},{"RCN","CN"}]

GraphData[{"Octahedral",231},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",231}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",231}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",231},"Circulant"]

GraphData[{"Octahedral",231},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",231},"Halin"]

GraphData[{"Octahedral",231},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",231},"LCF"]

GraphData[{"Octahedral",231},"LCFSignature"]

GraphData[{"Octahedral",231},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",231},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",231}],Debug->True]//Timing

GraphData[{"Octahedral",231},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",231},"Matchstick"]

GraphData[{"Octahedral",231},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",231},"Edges"]]

3D All

GraphData[{"Octahedral",231},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",231},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",231},"Polyhedral"]

GraphData[{"Octahedral",231},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",231},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",231},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",231},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",231}],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]

{"Octahedral", 232}

GraphData[{"Octahedral",232},"StandardName"]

Primary

GraphData[{"Octahedral",232}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",232},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",232},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",232},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",232},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",232},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",232},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",232}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",232}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",232},"Planar"]

GraphData[{"Octahedral",232},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",232}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",232}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2,6,8,3,6],{4,8},{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v={{-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,7,6,1,8,2],e[4,5,6,8,3],e[8,7,5]},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},{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],e[4,5,6,8,7,5],{3,8}},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},{-1/4,3/4},{1/4,3/4},{0,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,1],e[4,6,8,3],e[8,7,4,5,7],{5,6}},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},{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,6,1],e[4,5,6,8,3,6],e[3,7,5],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",232},{"RCN","CN"}]

GraphData[{"Octahedral",232},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",232}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",232}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",232},"Circulant"]

GraphData[{"Octahedral",232},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",232},"Halin"]

GraphData[{"Octahedral",232},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",232},"LCF"]

GraphData[{"Octahedral",232},"LCFSignature"]

GraphData[{"Octahedral",232},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",232},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",232}],Debug->True]//Timing

GraphData[{"Octahedral",232},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",232},"Matchstick"]

GraphData[{"Octahedral",232},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",232},"Edges"]]

3D All

GraphData[{"Octahedral",232},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",232},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",232},"Polyhedral"]

GraphData[{"Octahedral",232},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",232},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",232},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",232},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",232}],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]

{"Octahedral", 233}

GraphData[{"Octahedral",233},"StandardName"]

Primary

GraphData[{"Octahedral",233}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",233},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",233},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",233},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",233},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",233},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",233},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",233}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",233}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",233},"Planar"]

GraphData[{"Octahedral",233},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",233}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",233}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2,7,3,8,4],e[1,8,5],e[6,7,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",233},{"RCN","CN"}]

GraphData[{"Octahedral",233},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",233}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",233}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",233},"Circulant"]

GraphData[{"Octahedral",233},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",233},"Halin"]

GraphData[{"Octahedral",233},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",233},"LCF"]

GraphData[{"Octahedral",233},"LCFSignature"]

GraphData[{"Octahedral",233},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",233},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",233}],Debug->True]//Timing

GraphData[{"Octahedral",233},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",233},"Matchstick"]

GraphData[{"Octahedral",233},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",233},"Edges"]]

3D All

GraphData[{"Octahedral",233},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",233},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",233},"Polyhedral"]

GraphData[{"Octahedral",233},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",233},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",233},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",233},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",233}],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]

{"Octahedral", 234}

GraphData[{"Octahedral",234},"StandardName"]

Primary

GraphData[{"Octahedral",234}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",234},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",234},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",234},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",234},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",234},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",234},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",234}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",234}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",234},"Planar"]

GraphData[{"Octahedral",234},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",234}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",234}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v={{0,-1},{1,0},{0,1},{-1,0},{-1/4,1/2},{0,1/2},{1/4,1/2},{0,0}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,8,6,3,5,6,7,3],e[5,4,8,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,5,8,7,4,8],e[3,7,5,1],e[6,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",234},{"RCN","CN"}]

GraphData[{"Octahedral",234},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",234}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",234}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",234},"Circulant"]

GraphData[{"Octahedral",234},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",234},"Halin"]

GraphData[{"Octahedral",234},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",234},"LCF"]

GraphData[{"Octahedral",234},"LCFSignature"]

GraphData[{"Octahedral",234},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",234},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",234}],Debug->True]//Timing

GraphData[{"Octahedral",234},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",234},"Matchstick"]

GraphData[{"Octahedral",234},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",234},"Edges"]]

3D All

GraphData[{"Octahedral",234},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",234},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",234},"Polyhedral"]

GraphData[{"Octahedral",234},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",234},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",234},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",234},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",234}],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]

{"Octahedral", 235}

GraphData[{"Octahedral",235},"StandardName"]

Primary

GraphData[{"Octahedral",235}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",235},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",235},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",235},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",235},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",235},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",235},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",235}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",235}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",235},"Planar"]

GraphData[{"Octahedral",235},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",235}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",235}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,3Pi/4]]

v={{0,-1},{1,0},{0,1},{-1,0},{-1/2,0},{0,0},{1/2,0},{0,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,8,3,5,8,7,3],e[4,5,6,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/4,1/2},{3/4,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,7,6,8,4],e[7,5,6,1],e[8,7,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",235},{"RCN","CN"}]

GraphData[{"Octahedral",235},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",235}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",235}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",235},"Circulant"]

GraphData[{"Octahedral",235},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",235},"Halin"]

GraphData[{"Octahedral",235},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",235},"LCF"]

GraphData[{"Octahedral",235},"LCFSignature"]

GraphData[{"Octahedral",235},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",235},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",235}],Debug->True]//Timing

GraphData[{"Octahedral",235},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",235},"Matchstick"]

GraphData[{"Octahedral",235},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",235},"Edges"]]

3D All

GraphData[{"Octahedral",235},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",235},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",235},"Polyhedral"]

GraphData[{"Octahedral",235},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",235},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",235},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",235},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",235}],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]

{"Octahedral", 236} == {"SelfDual", {8, 15}}

GraphData[{"Octahedral",236},"StandardName"]

{"Octahedral", 237}

GraphData[{"Octahedral",237},"StandardName"]

Primary

GraphData[{"Octahedral",237}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",237},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",237},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",237},"Edges"]

v=Join[UnitCirclePoints[6],{-#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,3,8,4,7,2],e[1,8,5],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",237},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",237},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",237},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",237}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",237}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",237},"Planar"]

GraphData[{"Octahedral",237},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",237}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",237}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2,6,3,7],e[8,4,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,7,4,8],e[1,6,2],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2,6,3,7],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",237},{"RCN","CN"}]

GraphData[{"Octahedral",237},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",237}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",237}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",237},"Circulant"]

GraphData[{"Octahedral",237},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",237},"Halin"]

GraphData[{"Octahedral",237},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",237},"LCF"]

GraphData[{"Octahedral",237},"LCFSignature"]

GraphData[{"Octahedral",237},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",237},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",237}],Debug->True]//Timing

GraphData[{"Octahedral",237},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",237},"Matchstick"]

GraphData[{"Octahedral",237},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",237},"Edges"]]

g=EdgeAdd[GraphData["Q3","Graph",{"Labeled","3D"}],UndirectedEdge@@@{{1,6},{6,4},{3,5}}]

RecognizeGraph@g

3D All

GraphData[{"Octahedral",237},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",237},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",237},"Polyhedral"]

GraphData[{"Octahedral",237},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",237},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",237},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",237},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",237}],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]

{"Octahedral", 238}

GraphData[{"Octahedral",238},"StandardName"]

Primary

GraphData[{"Octahedral",238}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",238},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",238},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",238},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",238},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",238},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",238},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",238}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",238}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",238},"Planar"]

GraphData[{"Octahedral",238},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",238}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",238}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{-1/2,h},{1/2,h}}];
AppendTo[v,Mean[v[[{5,6}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,5,8,6,4,8],e[3,6,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,6,8,4],e[5,6,7,8,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Subdivide[{1/2,0},{1/2,1},5][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,6,5],{1,6},e[7,4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",238},{"RCN","CN"}]

GraphData[{"Octahedral",238},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",238}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",238}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",238},"Circulant"]

GraphData[{"Octahedral",238},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",238},"Halin"]

GraphData[{"Octahedral",238},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",238},"LCF"]

GraphData[{"Octahedral",238},"LCFSignature"]

GraphData[{"Octahedral",238},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",238},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",238}],Debug->True]//Timing

GraphData[{"Octahedral",238},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",238},"Matchstick"]

GraphData[{"Octahedral",238},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",238},"Edges"]]

3D All

GraphData[{"Octahedral",238},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",238},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",238},"Polyhedral"]

GraphData[{"Octahedral",238},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",238},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",238},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",238},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",238}],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]

{"Octahedral", 239} == {"Halin", {8, 2}}

GraphData[{"Octahedral",239},"StandardName"]

{"Octahedral", 240} == {"SelfComplementary",{ 8, 10}}

GraphData[{"Octahedral",240},"StandardName"]

{"Octahedral", 241}

GraphData[{"Octahedral",241},"StandardName"]

Primary

GraphData[{"Octahedral",241}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",241},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",241},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",241},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",241},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",241},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",241},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",241}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",241}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",241},"Planar"]

GraphData[{"Octahedral",241},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",241}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",241}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{{4,8},e[3,8,1,2,3,4,1,5,6,7,8,5,2,6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",241},{"RCN","CN"}]

GraphData[{"Octahedral",241},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",241}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",241}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",241},"Circulant"]

GraphData[{"Octahedral",241},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",241},"Halin"]

GraphData[{"Octahedral",241},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",241},"LCF"]

GraphData[{"Octahedral",241},"LCFSignature"]

GraphData[{"Octahedral",241},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",241},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",241}],Debug->True]//Timing

GraphData[{"Octahedral",241},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",241},"Matchstick"]

GraphData[{"Octahedral",241},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",241},"Edges"]]

3D All

GraphData[{"Octahedral",241},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",241},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",241},"Polyhedral"]

GraphData[{"Octahedral",241},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",241},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",241},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",241},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",241}],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]

{"Octahedral", 242}

GraphData[{"Octahedral",242},"StandardName"]

Primary

GraphData[{"Octahedral",242}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",242},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",242},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",242},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",242},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",242},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",242},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",242}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",242}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",242},"Planar"]

GraphData[{"Octahedral",242},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",242}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",242}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[UnitCirclePoints[4,-Pi/2],CirclePoints[{1/4,-Pi/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,3,8,1,6,3],e[5,6,7,8,5],{4,8},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

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,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,5,1],e[4,7,3,5,4,6],e[5,8,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",242},{"RCN","CN"}]

GraphData[{"Octahedral",242},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",242}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",242}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",242},"Circulant"]

GraphData[{"Octahedral",242},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",242},"Halin"]

GraphData[{"Octahedral",242},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",242},"LCF"]

GraphData[{"Octahedral",242},"LCFSignature"]

GraphData[{"Octahedral",242},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",242},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",242}],Debug->True]//Timing

GraphData[{"Octahedral",242},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",242},"Matchstick"]

GraphData[{"Octahedral",242},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",242},"Edges"]]

3D All

GraphData[{"Octahedral",242},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",242},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",242},"Polyhedral"]

GraphData[{"Octahedral",242},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",242},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",242},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",242},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",242}],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]

{"Octahedral", 243} == {"Triangulated", {8, 9}}

GraphData[{"Octahedral",243},"StandardName"]

{"Octahedral", 244}

GraphData[{"Octahedral",244},"StandardName"]

Primary

GraphData[{"Octahedral",244}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",244},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",244},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",244},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",244},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",244},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",244},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",244}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",244}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",244},"Planar"]

GraphData[{"Octahedral",244},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",244}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",244}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/4]]

v=Join[UnitCirclePoints[4,0],CirclePoints[1/4,3],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,3,7,5,1],e[4,7,6,5,4],e[7,8,6,2],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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[4,5,8,3],e[4,7,8,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},{0,1/2},{-1/4,1},{0,1},{1/4,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,7,8,2],e[4,5,6,3,8,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",244},{"RCN","CN"}]

GraphData[{"Octahedral",244},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",244}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",244}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",244},"Circulant"]

GraphData[{"Octahedral",244},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",244},"Halin"]

GraphData[{"Octahedral",244},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",244},"LCF"]

GraphData[{"Octahedral",244},"LCFSignature"]

GraphData[{"Octahedral",244},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",244},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",244}],Debug->True]//Timing

GraphData[{"Octahedral",244},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",244},"Matchstick"]

GraphData[{"Octahedral",244},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",244},"Edges"]]

3D All

GraphData[{"Octahedral",244},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",244},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",244},"Polyhedral"]

GraphData[{"Octahedral",244},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",244},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",244},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",244},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",244}],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]

{"Octahedral", 245}

GraphData[{"Octahedral",245},"StandardName"]

Primary

GraphData[{"Octahedral",245}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",245},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",245},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",245},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",245},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",245},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",245},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",245}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",245}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",245},"Planar"]

GraphData[{"Octahedral",245},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",245}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",245}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,7,3,6,2,5,8,7,6],e[1,8,3],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,2,7,3,8,1],e[6,7,8,5,6],{5,7},{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",245},{"RCN","CN"}]

GraphData[{"Octahedral",245},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",245}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",245}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",245},"Circulant"]

GraphData[{"Octahedral",245},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",245},"Halin"]

GraphData[{"Octahedral",245},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",245},"LCF"]

GraphData[{"Octahedral",245},"LCFSignature"]

GraphData[{"Octahedral",245},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",245},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",245}],Debug->True]//Timing

GraphData[{"Octahedral",245},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",245},"Matchstick"]

GraphData[{"Octahedral",245},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",245},"Edges"]]

3D All

GraphData[{"Octahedral",245},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",245},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",245},"Polyhedral"]

GraphData[{"Octahedral",245},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",245},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",245},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",245},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",245}],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]

{"Octahedral", 246}

GraphData[{"Octahedral",246},"StandardName"]

Primary

GraphData[{"Octahedral",246}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",246},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",246},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",246},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",246},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",246},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",246},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",246}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",246}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",246},"Planar"]

GraphData[{"Octahedral",246},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",246}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",246}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,-Pi/4]]

v={{-1,0},{0,-1},{1,0},{0,1},{0,0},{0,-1/4},{-1/4,-1/2},{1/4,-1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,8,7,1],e[2,7,6,5,4],e[6,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,5,8,7,3,8],e[7,2,6,8],e[1,5,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,1/2},{0,1/2},{1/4,1/2},{0,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,6,5,1],e[4,7,8,5,4],e[3,8,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},{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,8,7,6,1],e[4,5,6,3,8,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",246},{"RCN","CN"}]

GraphData[{"Octahedral",246},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",246}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",246}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",246},"Circulant"]

GraphData[{"Octahedral",246},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",246},"Halin"]

GraphData[{"Octahedral",246},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",246},"LCF"]

GraphData[{"Octahedral",246},"LCFSignature"]

GraphData[{"Octahedral",246},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",246},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",246}],Debug->True]//Timing

GraphData[{"Octahedral",246},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",246},"Matchstick"]

GraphData[{"Octahedral",246},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",246},"Edges"]]

3D All

GraphData[{"Octahedral",246},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",246},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",246},"Polyhedral"]

GraphData[{"Octahedral",246},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",246},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",246},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",246},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",246}],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]

{"Octahedral", 247}

GraphData[{"Octahedral",247},"StandardName"]

Primary

GraphData[{"Octahedral",247}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",247},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",247},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",247},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",247},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",247},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",247},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",247}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",247}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",247},"Planar"]

GraphData[{"Octahedral",247},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",247}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",247}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{1/2,1/2},{1/2,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2],e[5,7,3,8,4,7,6],{4,5},{3,6},{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[4],CirclePoints[{1/4,-Pi/2},3],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,7,6,1],e[3,7,8,6,2],e[7,5,6],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{-1/4,3/4},{1/4,3/4},{0,5/4}};
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],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,-2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{-1/4,3/4},{1/4,3/4},{0,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,7,6,1],e[4,6,8,7,5],e[6,3,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",247},{"RCN","CN"}]

GraphData[{"Octahedral",247},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",247}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",247}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",247},"Circulant"]

GraphData[{"Octahedral",247},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",247},"Halin"]

GraphData[{"Octahedral",247},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",247},"LCF"]

GraphData[{"Octahedral",247},"LCFSignature"]

GraphData[{"Octahedral",247},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",247},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",247}],Debug->True]//Timing

GraphData[{"Octahedral",247},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",247},"Matchstick"]

GraphData[{"Octahedral",247},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",247},"Edges"]]

3D All

GraphData[{"Octahedral",247},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",247},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",247},"Polyhedral"]

GraphData[{"Octahedral",247},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",247},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",247},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",247},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",247}],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]

{"Octahedral", 248}

GraphData[{"Octahedral",248},"StandardName"]

Primary

GraphData[{"Octahedral",248}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",248},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",248},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",248},"Edges"]],Pi/2]

v=Join[UnitCirclePoints[5],CirclePoints[(1/(Sqrt[2 (5+(Sqrt[5]))])),3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,2,7,4,8,5],e[6,7,8,6],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",248},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",248},"Graph","Circular"]//StyleGraphs

Circular

GraphData[{"Octahedral",248},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",248}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",248}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",248},"Planar"]

GraphData[{"Octahedral",248},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",248}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",248}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5],CirclePoints[(1/(Sqrt[2 (5+(Sqrt[5]))])),3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,6,2,7,4,8,5],e[6,7,8,6],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/4,1/2},{1/2,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,6,1],e[4,6,5,8,3],{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{-1/4,3/4},{1/4,3/4},{0,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,7,8,6,1],e[6,3,7],{4,6},{3,8},{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",248},{"RCN","CN"}]

GraphData[{"Octahedral",248},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",248}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",248}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",248},"Circulant"]

GraphData[{"Octahedral",248},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",248},"Halin"]

GraphData[{"Octahedral",248},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",248},"LCF"]

GraphData[{"Octahedral",248},"LCFSignature"]

GraphData[{"Octahedral",248},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",248},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",248}],Debug->True]//Timing

GraphData[{"Octahedral",248},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",248},"Matchstick"]

GraphData[{"Octahedral",248},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",248},"Edges"]]

3D All

GraphData[{"Octahedral",248},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",248},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",248},"Polyhedral"]

GraphData[{"Octahedral",248},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",248},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",248},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",248},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",248}],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]

{"Octahedral", 249}

GraphData[{"Octahedral",249},"StandardName"]

Primary

GraphData[{"Octahedral",249}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",249},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",249},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",249},"Edges"]

v=Join[UnitCirclePoints[6],{0,#/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,6,7,1],e[4,7,3,8,4],e[5,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",249},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",249},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",249},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",249}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",249}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",249},"Planar"]

GraphData[{"Octahedral",249},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",249}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",249}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[,3Pi/4]]

v={{-1,0},{0,0},{1,0},{0,-1},{0,1},{-1/4,1/2},{0,1/2},{1/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,4,3,5,1,2,3,8,7,6,1],e[4,2,6,5,8,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/2}},Subdivide[{-1/3,3/4},{1/3,3/4},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,7,6,5,1],e[4,6,3,7,4],e[5,3,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v={{-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[1,2,3,1,4,5,6,2,5,1],e[4,7,8,6],e[5,7,3,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",249},{"RCN","CN"}]

GraphData[{"Octahedral",249},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",249}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",249}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",249},"Circulant"]

GraphData[{"Octahedral",249},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",249},"Halin"]

GraphData[{"Octahedral",249},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",249},"LCF"]

GraphData[{"Octahedral",249},"LCFSignature"]

GraphData[{"Octahedral",249},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",249},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",249}],Debug->True]//Timing

GraphData[{"Octahedral",249},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",249},"Matchstick"]

GraphData[{"Octahedral",249},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",249},"Edges"]]

3D All

GraphData[{"Octahedral",249},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",249},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",249},"Polyhedral"]

GraphData[{"Octahedral",249},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",249},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",249},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",249},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",249}],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]

{"Octahedral", 250}

GraphData[{"Octahedral",250},"StandardName"]

Primary

GraphData[{"Octahedral",250}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",250},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",250},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",250},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",250},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",250},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",250},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",250}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",250}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",250},"Planar"]

GraphData[{"Octahedral",250},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",250}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",250}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,8,7,6,2,5,7,3,6],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/2,1/4},{1/2,1/2},{1/3,3/4},{2/3,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,8,7,1],e[4,7,3,8,6,7],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #3

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{3/4,3/4},{1/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,5,2,7,3],e[6,8,4],{1,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",250},{"RCN","CN"}]

GraphData[{"Octahedral",250},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",250}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",250}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",250},"Circulant"]

GraphData[{"Octahedral",250},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",250},"Halin"]

GraphData[{"Octahedral",250},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",250},"LCF"]

GraphData[{"Octahedral",250},"LCFSignature"]

GraphData[{"Octahedral",250},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",250},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",250}],Debug->True]//Timing

GraphData[{"Octahedral",250},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",250},"Matchstick"]

GraphData[{"Octahedral",250},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",250},"Edges"]]

3D All

GraphData[{"Octahedral",250},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",250},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",250},"Polyhedral"]

GraphData[{"Octahedral",250},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",250},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",250},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",250},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",250}],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]

{"Octahedral", 251}

GraphData[{"Octahedral",251},"StandardName"]

Primary

GraphData[{"Octahedral",251}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",251},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",251},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"Octahedral",251},"Edges"]],-Pi/2]

RegionIntersection[Line@v[[{1,5}]],Line@v[[{2,6}]]]//FullSimplify

v=Join[UnitCirclePoints[6],{{0,0},{0,-(1/(Sqrt[3]))}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,6,7,3],{2,8},e[4,7,1],{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",251},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",251},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",251},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",251}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",251}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"Octahedral",251},"Planar"]

GraphData[{"Octahedral",251},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",251}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",251}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

RegionIntersection[Line@v[[{5,7}]],Line@v[[{1,6}]]]//FullSimplify

v=Join[UnitCirclePoints[5]];
v=Join[v,Subdivide[v[[4]],v[[2]],3][[2;;-2]]];
AppendTo[v,{0,(NumericalApproximation[Root, (RowDefault["-0.0704", FEExpressionsNumericalApproximationElider]), Root[1-205 ((#1)^2)+605 ((#1)^4)&,2], ])}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[7,8,5],e[1,2,3,4,5,1,8,6,3,7],e[4,6,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/2},{1/2,1/2},{1/2,1/4},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,2,8,6,5,1],e[4,5,7,6],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/2}},Subdivide[{-1/3,3/4},{1/3,3/4},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,8,3,5,1],e[5,6,7,8],e[6,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v={{-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[1,2,3,1,4,5,6,2,5,1],e[4,7,3,8,6],{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

v={{-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[1,2,6,5,4,1,3,2],e[4,7,3,8,6],e[7,5,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",251},{"RCN","CN"}]

GraphData[{"Octahedral",251},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",251}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",251}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",251},"Circulant"]

GraphData[{"Octahedral",251},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",251},"Halin"]

GraphData[{"Octahedral",251},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",251},"LCF"]

GraphData[{"Octahedral",251},"LCFSignature"]

GraphData[{"Octahedral",251},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",251},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",251}],Debug->True]//Timing

GraphData[{"Octahedral",251},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",251},"Matchstick"]

GraphData[{"Octahedral",251},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",251},"Edges"]]

3D All

GraphData[{"Octahedral",251},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",251},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",251},"Polyhedral"]

GraphData[{"Octahedral",251},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",251},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",251},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",251},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",251}],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]

{"Octahedral", 252} == {"JohnsonSkeleton", 26}

GraphData[{"Octahedral",252},"StandardName"]

{"Octahedral", 253}

GraphData[{"Octahedral",253},"StandardName"]

Primary

GraphData[{"Octahedral",253}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Octahedral",253},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Octahedral",253},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Octahedral",253},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Octahedral",253},"Graph","Degenerate"]//StyleGraphs

Bilateral

GraphData[{"Octahedral",253},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Octahedral",253},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"Octahedral",253}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"Octahedral",253}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"Octahedral",253},"Planar"]

GraphData[{"Octahedral",253},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Octahedral",253}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Octahedral",253}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{}

RecognizeGraph/@gs

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/3},{1/4,2/3},{1/2,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,4],e[1,6,3,7,5,2,8,3],e[8,7,6],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Octahedral",253},{"RCN","CN"}]

GraphData[{"Octahedral",253},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"Octahedral",253}],TimeConstraint->10])//AbsoluteTiming

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Octahedral",253}],"CrossingNumber"->cn]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Octahedral",253},"Circulant"]

GraphData[{"Octahedral",253},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"Octahedral",253},"Halin"]

GraphData[{"Octahedral",253},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Octahedral",253},"LCF"]

GraphData[{"Octahedral",253},"LCFSignature"]

GraphData[{"Octahedral",253},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Octahedral",253},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Octahedral",253}],Debug->True]//Timing

GraphData[{"Octahedral",253},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Octahedral",253},"Matchstick"]

GraphData[{"Octahedral",253},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Octahedral",253},"Edges"]]

3D All

GraphData[{"Octahedral",253},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Octahedral",253},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Octahedral",253},"Polyhedral"]

GraphData[{"Octahedral",253},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Octahedral",253},"Polyhedron"]}]

3D Canonical

GraphData[{"Octahedral",253},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Octahedral",253},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Octahedral",253}],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]

{"Octahedral", 254} == {"Triangulated", {8, 14}}

GraphData[{"Octahedral",254},"StandardName"]

{"Octahedral", 255} == {"JohnsonSkeleton", 84}

GraphData[{"Octahedral",255},"StandardName"]

{"Octahedral", 256} == {"JohnsonSkeleton", 50}

GraphData[{"Octahedral",256},"StandardName"]

{"Octahedral", 257} == {"Antiprism", 4}

GraphData[{"Octahedral",257},"StandardName"]

GraphData

GraphDataClassString

GraphDataClassString["OctahedralGraph"]

GraphDataString

<<MathWorld`Graphs`

newpolyhedral8=Cases[MapIndexed[{#,RecognizeGraph[#,"Cache"->"InternalOnly"],#2[[1]]}&,PolyhedralGraphs[8]],{g_,{},ind_}:>{g,ind}]

Length[newpolyhedral8]

p=FirstPosition[newpolyhedral8[[All,2]],73,{0}][[1]]

file=OpenAppend["~/octahedral.m"]

WriteString[file,GraphDataString[
IndexGraph@Graph[Sort[Sort/@EdgeList[#]]],
"Embeddings"->{},
"StandardName"->{"Octahedral",#2},
"AlternateStandardName"->{{"Polyhedral",{8,#2}}},
"Name"->"octahedral graph "<>ToString[#2],
"AlternateNames"->{"(8,"<>ToString[#2]<>")\[Hyphen]polyhedral graph"},
"NotationRules"->{"Octahedral"->#2,"Polyhedral"->{8,#2}},
"Information"->"OcthedralGraph",
"Skip"->{"MinimumDistinguishingLabelings"},
TimeConstraint->10
]]&@@@Drop[newpolyhedral8,p];

Close[file]