Halin Graph

Author

Eric W. Weisstein
October 21, 2023

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

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

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

Counts

A346779

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

seq={0,0,0,1,1,2,2,4,6,13,22,50,106,252};

Do[Print[{k,FindSequenceFunction[Drop[seq,k],n-k]//Head//Timing}],{k,0,5}]

Do[Print[{k,FindLinearRecurrence[Drop[seq,k]]//Head//Timing}],{k,0,5}]

FindGeneratingFunction[seq,x]//Head//Timing

Do[Print[{n,(Put[tf=HalinGraphQ[#]&/@ConnectedGraphs[n],"Halin_"<>If[n<10,"0",""]<>ToString[n]<>".m"];Total[Boole[tf]])//Timing}],{n,10}]

Enumeration from Polyhedral graphs

10

polyhedral10=PolyhedralGraphs[10,Debug->True];//Timing//AbsoluteTiming

Length[halin10=Select[polyhedral10,HalinGraphQ[#,"Polyhedral"]&]]//Timing

RecognizeGraph/@halin10

11

polyhedral11=PolyhedralGraphs[11,Debug->True];//Timing//AbsoluteTiming

Length[halin11=Select[polyhedral11,HalinGraphQ[#,"Polyhedral"]&]]//Timing

halin11

halin11graphs=MapIndexed[{#,RecognizeGraph[#],{11,#2[[1]]}}&,halin11];

Rule[#2,#3]&@@@DeleteCases[halin11graphs,{_,{},_}]

new=Rule[HalinEmbedding[#1],#3]&@@@Cases[halin11graphs,{_,{},_}]

12

Length[polyhedral12=Import["/math/Admin/SQATemp/bug341813-polyhedral12.s6"]]//Timing//AbsoluteTiming

ByteCount[polyhedral12]1.*^-9 GB

<<MathWorld`Graphs`

Length[halin12=Select[polyhedral12,HalinGraphQ[#,"Polyhedral"]&]]//Timing

halin12

halin12graphs=MapIndexed[{#,RecognizeGraph[#],{12,#2[[1]]}}&,halin12];

Rule[#2,#3]&@@@DeleteCases[halin12graphs,{_,{},_}]

new=Rule[HalinEmbedding[#1],#3]&@@@Cases[halin12graphs,{_,{},_}]

13

SetDirectory["~/halin"]

files=FileNames["*.m"]

halin=Flatten[Get/@files]

Length[halin]

AllTrue[halin,HalinGraphQ]

halingraphs=MapIndexed[{#,RecognizeGraph[#],{13,#2[[1]]}}&,halin];

rules=Rule[#2,#3]&@@@DeleteCases[halingraphs,{_,{},_}]

new=Rule[HalinEmbedding[#1],#3]&@@@Cases[halingraphs,{_,{},_}]

AddIndexedClass["Halin",rules,"13.0"]

RenameGraphFiles[]

14

~/src/plantri52/plantri -p -s 14 Polyhedral_14.s6

1496225352 polytopes written to Polyhedral_14.s6; cpu=2620.92 sec

cd halin14

mkdir 14
cd 14
split -l 10000000 -a 3 --numeric-suffixes=1 ../Polyhedral_ 14.s6 p

SetDirectory["/Developer/eww/Graphs/halin14"]

files=FileNames["p*"]

SetDirectory["/Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/Halin/halin-14"]

scp -C "byblis68:/Developer/eww/Graphs/halin14/halin14*-*.m" /Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/Halin/halin-14

files=SortBy[FileNames[],FromDigits@StringTake[#,{9,-3}]&]

data={#,Import[#,"Lines"]}&/@files;

Multicolumn[DeleteCases[{StringReplace[#,"halin14-"~~n__~~".m":>n],Length[#2]}&@@@data,{_,0}],Dividers->All]

halin14=ToExpression/@Join@@DeleteCases[data[[All,2]],{}]

AllTrue[halin14,HalinGraphQ]

Length[halin14graphs=MapIndexed[{#,RecognizeGraph[#],{14,#2[[1]]}}&,halin14]]

rules=Sort[Rule[#2,#3]&@@@DeleteCases[halin14graphs,{_,{},_}]]

AddIndexedClass["Halin",rules,"13.0"]

RenameGraphFiles[]

GraphData["Halin",14]

new=Rule[HalinEmbedding[#1],#3]&@@@Cases[halin14graphs,{_,{},_}]

Enumeration from trees

This gives  a lower bound only since it does not take into account the fact that branches can be arranged in different orders around a fork, so the following tree embeddings, corresponding to a single tree, are counting only a single time even though they give two different Halin graphs:

SameTreeDifferentHalinGraphs={,}

IsomorphicGraphQ@@SameTreeDifferentHalinGraphs

AddOuterCircle[g_Graph]:=Module[{c=Graphics`Mesh`ConvexHull[GraphEmbedding[g]]},EdgeAdd[g,UndirectedEdge@@@Partition[c,2,1,1]]]

AddOuterCircle/@SameTreeDifferentHalinGraphs

RecognizeGraph/@%

HalinFromTree[g_Graph?TreeGraphQ]:=Module[{faces,leaves,outerface},
(*
If[!FreeQ[VertexDegree[g],2],Return[$Failed]];
*)
faces=FindFace[g][[1]];
leaves=Leaves[g];
outerface=Select[faces,MemberQ[leaves,#]&];
(*
If[Length[outerface]<3,Return[$Failed]];
*)
EdgeAdd[g,UndirectedEdge@@@Partition[outerface,2,1,1]]
]

HalinGraphs[1]:={}
HalinGraphs[2]:={}
HalinGraphs[n_]:=HalinFromTree/@Select[Trees[n],FreeQ[VertexDegree[#],2]&]
(* subset of *)

Length/@Table[HalinGraphs[n],{n,15}]

Length/@Table[GraphData["Halin",n],{n,13}]

5

trees=Select[Trees[5],FreeQ[VertexDegree[#],2]&]

HalinFromTree/@trees

RecognizeGraph/@%

GraphData["Halin",5]

6

trees=Select[Trees[6],FreeQ[VertexDegree[#],2]&]

HalinFromTree/@trees

RecognizeGraph/@%

GraphData["Halin",6]

7

trees=Select[Trees[7],FreeQ[VertexDegree[#],2]&]

HalinFromTree/@trees

RecognizeGraph/@%

GraphData["Halin",7]

8

trees=Select[Trees[8],FreeQ[VertexDegree[#],2]&]

HalinFromTree/@trees

RecognizeGraph/@%

GraphData["Halin",8]

9

trees=Select[Trees[9],FreeQ[VertexDegree[#],2]&]

HalinFromTree/@trees

RecognizeGraph/@%

GraphData["Halin",9]

GraphData[{"Halin",{9,1}},"Graph","Labeled"]

EdgeDelete[%,UndirectedEdge@@@Partition[{2,5,7,3,6,8},2,1,1]]

TreeGraphQ[]

Length[Trees[9]]

VertexDegree[%]

Select[Trees[9],IsomorphicGraphQ[#,%102]&]

t=SetProperty[,VertexLabels->"Name"]

HalinFromTree[t]

face=FindFace[t]

leaves=Leaves[t]

Examples

By vertex count

Column[halin=Table[GraphData["Halin",n],{n,12}]]

DeleteCases[halin,{"Halin",_},Infinity]

GraphicsGrid[Map[Show[StyleGraphs[#,VertexSize->{"Scaled",.05}]&@GraphData[#],PlotLabel->TextCell[Style[GraphData[#,"Name"],Directive[FontFamily->"Times",Italic,Black]],TextAlignment->Center,PageWidth->90]]&,Flatten[Partition[#,UpTo[6]]&/@DeleteCases[Take[halin,9],{}],1],{2}],Dividers->All,ImageSize->600]

Specific

gs={{"Wheel",5},{"Prism",3},"FruchtGraph",{"Cubic",{8,2}},{"Cubic",{10,6}},{"Cubic",{10,12}},{"Cubic",{12,30}},{"Cubic",{22,1}},{"Heptahedral",2}};

GraphicsGrid[Partition[Show[StyleGraphs@GraphData[#],PlotLabel->Style[GraphData[#,"Name"],Directive[FontFamily->"Times",Italic,Black]]]&/@gs,UpTo[3]],Dividers->All]

Matchstick

matchstick=Sort[GraphData[#,"NotationRules","Halin"]&/@GraphData[{"Halin","Matchstick"}]]

StringJoin@@("("<>#<>"), "&/@(StringRiffle[ToString/@#,", "]&/@matchstick))

GraphicsGrid[Partition[Show[StyleGraphs@GraphData[gn={"Halin",#},"Graph","Matchstick"][[1]],PlotLabel->Style[GraphData[gn,"Name"],Directive[Italic,Black,FontFamily->"Times"]]]&/@matchstick,UpTo[5]],Alignment->Top,Dividers->All,ImageSize->700]

Embeddings

<<MathWorld`Graphs`

5

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",5]],Dividers->All]

GraphData["Halin",5]

{"Halin", {5, 1}} == {"Wheel", 5}}

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

6

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",6]],Dividers->All]

GraphData["Halin",6]

{"Halin", {6, 1}} == {"Wheel", 6}}

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

{"Halin", {6, 2}} == {"Prism", 3}}

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

7

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",6]],Dividers->All]

{"Halin", {7, 1}} == {"Wheel", 7}}

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

{"Halin", {7, 2}} == "HemiobeliskGraph"

Names

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

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"Halin",{7,2}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Halin",{7,2}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"Halin",{7,2}},"Graph","Degenerate"]

Perspective

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

Perspective construction

PolyhedronGraph[GraphData[{"Halin",{7,2}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Halin",{7,2}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

Bilateral

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

Circular

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

Circular construction

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

CircularEmbeddingFromHamiltonianCycle[GraphData[{"Halin",{7,2}}],#]&/@hc

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

Planar

GraphData[{"Halin",{7,2}},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction  5

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

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

RecognizeGraph[g]

Tutte embedding construction  4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction  3 #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},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]

MinimalCrossing

GraphData[{"Halin",{7,2}},{"RCN","CN"}]

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

Circulant

GraphData[{"Halin",{7,2}},"Circulant"]

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

Line graph

GraphData[{"Halin",{7,2}},"Line"]

LineGraphQ[GraphData[{"Halin",{7,2}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Halin",{7,2}}&]

RootGraph[GraphData[{"Halin",{7,2}}]]

Halin

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

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

Rigid

GraphData[{"Halin",{7,2}},"Rigid"]

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

Flexible

GraphData[{"Halin",{7,2}},"Flexible"]

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

LCF

GraphData[{"Halin",{7,2}},"LCF"]

GraphData[{"Halin",{7,2}},"HamiltonianCycleCount"]

GraphData[{"Halin",{7,2}},"LCFSignature"]

GraphData[{"Halin",{7,2}},"LCFNotations"]

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

UnitDistance

GraphData[{"Halin",{7,2}},"UnitDistance"]

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

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

UnitDistance by refinement

LabelGraph@UnitDistanceEmbeddingRefine[Graph[GraphData[{"Halin",{7,2}},"VertexList"],GraphData[{"Halin",{7,2}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Halin",{7,2}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"Halin",{7,2}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"Halin",{7,2}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"Halin",{7,2}},"Polyhedral"]

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

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

3D Canonical

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

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

3D Canonical construction

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

8

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",8]],Dividers->All]

{"Halin", {8, 1}} == "PentagonalWedgeGraph"

GraphData[{"Halin",{8,1}},"#"]

GraphData[{"Halin",{8,1}},"Graph","UnitDistance"]

GraphData[{"Halin",{8,1}},"Graph","Halin"]

GraphData[{"Halin",{8,1}},"Graph","Circular"]

GraphData[{"Halin",{8,1}},"Graph","All"]

g=RotateGraph[SetProperty[,VertexLabels->"Name"],{4,5}]

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

RecognizeGraph@g

GraphData[{"Halin",{8,1}},"Graphics"]

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

RecognizeGraph@g

RotateGraph[SetProperty[LCFGraph[Sequence@@LCFFromEmbedding@],VertexLabels->Automatic],{2,8}]

g=RotateGraph[,Pi/2]

{"Halin", {8, 2}}

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

Primary

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

All

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

Planar

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

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

Halin

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

MinimalCrossing

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

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

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{8,2}}]]]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

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

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

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

ud=GraphData[{"SelfComplementary",{8,10}},"Graph","UnitDistance"][[1]]

Select[EdgeDelete[ud,#]&/@EdgeList[ud],RecognizeGraph[#]==={"Halin",{8,2}}&]

FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

gs={};

Matchstick

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

3D

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

Default embedding

g=Graph@GraphData[{"Halin",{8,2}},"Edges"]

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

RecognizeGraph@g

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

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

RecognizeGraph@g

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{8,2}}]]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

colors={Red,Green,Black,Blue,Cyan};

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

g=PolyhedronGraph[can]

{"Halin", {8, 3}} == {"Wheel", 8}

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

{"Halin", {8, 4}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Halin

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

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

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

3D

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

Default embedding

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

RecognizeGraph@g

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

RecognizeGraph@g

3D Polyhedron

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

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

3D Polyhedral Canonical

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

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{8,4}}]]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

colors=Hue/@RandomReal[{0,1},Length[lens]]

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

g=PolyhedronGraph[can]

9

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",9]],Dividers->All]

{"Halin", {9, 1}}

Names

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

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot[GraphData[{"Halin",{9,1}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

RotateGraph[Graph[GraphData[{"Halin",{9,1}},"Edges"],GraphLayout->"RadialEmbedding"],1.04]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"Halin",{9,1}},"Graph","Degenerate"]

Bilateral

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

Circular

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

Circular construction

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

CircularEmbeddingFromHamiltonianCycle[GraphData[{"Halin",{9,1}}],#]&/@hc

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

Planar

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

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

Halin

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

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

MinimalCrossing

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

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

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{9,1}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

e[l__]:=Sequence@@Partition[{l},2,1]

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

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance construction

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

RecognizeGraph@g

FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

LabelGraph/@{,,,,,,}

gs=IndexGraph/@{RotateGraph[,{133,2}],,,,,,}

Matchstick

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

3D default

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

3D All

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

3D Polyhedron

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

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

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

3D Canonical Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{9,1}}]]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

colors=Table[Hue[i/5],{i,0,4}]

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

g=PolyhedronGraph[can]

{"Halin", {9, 2}}

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

Primary

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

All

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

Default embedding

GraphPlot@GraphData[{"Halin",{9,2}},"Edges"]

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

RecognizeGraph[g]

Embedding types

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

Degenerate

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

Circular

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

Planar

GraphData[{"Halin",{9,2}},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 6

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance construction

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

cs[q_]:=Through[{Cos,Sin}[q]]
s=Sqrt[3]/2;
Manipulate[Module[{p},
p={{-(1/2),0},{(1/2),0},{0,((Sqrt[3])/2)},{0,-((Sqrt[3])/2)},{Cos[q1],-((Sqrt[3])/2)+Sin[q1]},{(1/2)+Cos[q2],Sin[q2]},{Cos[q2],((Sqrt[3])/2)+Sin[q2]}
};
p=Join[p,{p[[5]]+cs[q3],p[[5]]+cs[q3+60Degree]}];
Column[{
g=Graph[Range[Length[p]],UndirectedEdge@@@{{1,2},{2,3},{1,3},{1,4},{2,4},{4,5},{3,7},{6,7},{2,6},{5,8},{5,9},{8,9},{7,9},{6,8}},VertexCoordinates->p,VertexLabels->"Name"],
EdgeLengths[g]//N
}]],
{{q1,0},-π,π},
{{q2,0},-π,π},
{{q3,30Degree},-π,π}]

EdgeLengths[g]//FullSimplify

VertexDegree[g]

<<MathWorld`Graphs`

RecognizeGraph[g]

{u,v}+RotationMatrix[-60Degree].{q-u,r-v}//FullSimplify

SquaredEuclideanDistance[{x,y},{1/2+x,y-s}]

SquaredEuclideanDistance[{1/2,0},{1/2+x,y-s}]

FullSimplify[SquaredEuclideanDistance[{u,v},{(1/2) (q-(Sqrt[3]) r+u+(Sqrt[3]) v),(1/2) ((Sqrt[3]) q+r-(Sqrt[3]) u+v)}],(q|r|u|v)∈Reals]

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

GraphEmbedding[g]

Evaluate[Append[neweqn,q-1]]//Length

FindRoot[Evaluate[neweqn/.q->.9],{x,.934329},{y,1.2224372824976897`},{u,1.227377989623084`},{v,0.20795016167171976`},{r,-0.7656636889332238`}]

nsoln=NSolve[Thread[neweqn==0/.q->(try=-.3)],{x,y,u,v,r},Reals]

e=EdgeList[g]

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

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

qval = 8/10

soln=Solve[Thread[neweqn==0/.q->qval],{x,y,u,v,r},Reals]

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

gs=Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->(verts/.q->qval/.soln[[#]]),VertexLabels->"Name"]&/@{3,6}

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

qval = 2/10

qval=2/10;

soln=Solve[Thread[neweqn==0/.q->qval],{x,y,u,v,r},Reals]

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

gs=Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->(verts/.q->qval/.soln[[#]]),VertexLabels->"Name"]&/@{7,8}

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

All

{,}

g=;

GraphEmbedding@g

r=RecognizeGraph[g]

FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{9,2}},"Edges"]

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

RecognizeGraph[g]

3D

Graph3D[GraphData[{"Halin",{9,2}},"Edges"]]

3D Polyhedron

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

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

3D Polyhedron Canonical

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

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{9,2}}],-1]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {9, 3}} == {"Wheel", 9}

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

{"Halin", {9, 4}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 7

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

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

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

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

gs=UniqueEmbeddings[l]

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{9,4}},"Edges"]

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

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

RecognizeGraph[g]

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

RecognizeGraph[g]

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

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

3D Polyhedron Canonical

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{9,4}}],-1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {9, 5}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{9,5}},"Edges"]

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

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

RecognizeGraph[g]

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

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

RecognizeGraph[g]

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

3D Polyhedron Canonical

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

3D Polyhedron construction

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

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {9, 6}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 6

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

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

RecognizeGraph[g]

Tutte embedding construction 5

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

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

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

RecognizeGraph[g]

Halin

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

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance construction

cs[q_]:=Through[{Cos,Sin}[q]]

s=Sqrt[3]/2;

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

verts=GraphEmbedding[g]

RecognizeGraph[g]

EdgeList[g]

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

e={{1,2},{2,3},{1,3},{3,4},{2,5},{4,5},{1,7},{6,7},{3,6},{6,8},{7,8},{4,9},{5,9},{8,9}};

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

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

eqn/.Rule@@@vars

neweqn={
(x+1/2)^2+(y-s)^2,
(u-1/2)^2+(v-s)^2,
((x-1/2)-(u+1/2))^2+((y-s)-(v-s))^2,
(u-1/2)^2+(v-s)^2}-1

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

soln={{x->-(1/4),y->((Sqrt[3])/2)-((Sqrt[15])/4),u->-(3/8),v->((Sqrt[3])/2)-((Sqrt[15])/8)},{x->-(1/4),y->((Sqrt[3])/2)+((Sqrt[15])/4),u->-(3/8),v->((Sqrt[3])/2)+((Sqrt[15])/8)},{x->0,y->0,u->-(1/2),v->((Sqrt[3])/2)},{x->0,y->0,u->0,v->0},{x->0,y->(Sqrt[3]),u->-(1/2),v->((Sqrt[3])/2)},{x->0,y->(Sqrt[3]),u->0,v->(Sqrt[3])},{x->(1/2),y->((Sqrt[3])/2),u->0,v->0},{x->(1/2),y->((Sqrt[3])/2),u->0,v->(Sqrt[3])}}[[All,All,2]]

N[soln]

verts[[7]]

verts[[5]]

neweqn/.{x->-0.239158493710103`,y->-0.09935623504883528`,u->-0.3015669848708764`,v->0.26812042072691955`}

vv={{-1/2,s},{1/2,s},{0,0},{u-1/2,v-s},{u,v},{x+1/2,y-s},{x,y},{x-1/2,y-s},{u+1/2,v-s}}/.{x->-(1/4),y->((Sqrt[3])/2)-((Sqrt[15])/4),u->-(3/8),v->((Sqrt[3])/2)-((Sqrt[15])/8)}

vv={{-(1/2),((Sqrt[3])/2)},{(1/2),((Sqrt[3])/2)},{0,0},{-(7/8),-((Sqrt[15])/8)},{-(3/8),((Sqrt[3])/2)-((Sqrt[15])/8)},{(1/4),-((Sqrt[15])/4)},{-(1/4),((Sqrt[3])/2)-((Sqrt[15])/4)},{-(3/4),-((Sqrt[15])/4)},{(1/8),-((Sqrt[15])/8)}}//FullSimplify

g=Graph[Range[9],UndirectedEdge@@@e,VertexCoordinates->vv]

g=;

UnitDistanceGraphEmbeddingQ[g]

r=RecognizeGraph[g]

UnitDistance FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{9,6}},"Edges"]

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

3D Polyhedron Canonical

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

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{9,6}}]]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

10

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",10]],Dividers->All]

{"Halin", {10, 1}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 7

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

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

Halin

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

LCF

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

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

UnitDistance

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

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,1}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

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

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

FindSubgraphUnitDistanceEmbedding

{{"Halin",{10,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,1}}],Infinity,"Results"->All,Debug->Full]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{10,1}},"Edges"]

v=CirclePoints[{Csc[Pi/7]/2,-Pi/2},7];
m=Mean[v[[{6,7}]]];
v=Join[v,{{0,0},m,{-1,1}m}/2];
g=RotateGraph[Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,5],e[7,9,8,10,2],e[6,9],{4,8},{3,10}},VertexCoordinates->v,VertexLabels->"Name"],π]

RecognizeGraph[g]

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

v={{0,0},{1/2,0},{1,0},{1,1},{3/4,1},{1/4,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,6,7,1,8,9,10,3],e[2,9,6],e[4,10],e[5,9],e[7,8]},VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

3D Polyhedron Canonical

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,1}}],-1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 2}}

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

Primary

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

All

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

Planar

GraphData[{"Halin",{10,2}},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 5

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Halin

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

LCF

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

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

UnitDistance

GraphData[{"Halin",{10,2}},"UnitDistance"]

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,2}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

FindSubgraphUnitDistanceEmbedding

{{"Halin",{10,2}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,2}}],TimeConstraint->Infinity,"Results"->All,Debug->Full]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{10,2}},"Edges"]

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

RecognizeGraph[g]

GraphData[{"Halin",{10,2}},"Graphics"]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

UnitDistance construction

s=Sqrt[3]/2;
eqn={
(x+1/2)^2+(y+s)^2==1,
(x-a)^2+(b-y)^2==1,
(x-a)^2+(y-b)^2==1,
(a+1/2)^2+(b-s)^2==1,
x==-1/2};

soln=Solve[eqn,{x,y,a,b},Reals]//FullSimplify

v={{1/2,s},{x,y},{a+1/2,b+s},{x+3/2,y+s},{0,0},{a,b},{x+1,y},{a+1,b},{1,0},{x+1/2,y+s}};
gs=Graph[Range[Length[v]],Complement[UnitEdges[v/.#],UndirectedEdge@@@{{7,8}}],VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

FullSimplify[Dot[Subtract@@v[[{3,6}]],Subtract@@v[[{3,10}]]]]

s=Sqrt[3]/2;
eqn={
(x+1/2)^2+(y+s)^2==1,
(x-a)^2+(b-y)^2==1,
(x-a)^2+(y-b)^2==1,
(a+1/2)^2+(b-s)^2==1,
(1/2) (a-x+(Sqrt[3]) (b-y))==0};

soln=Solve[eqn,{x,y,a,b},Reals]//FullSimplify

s=Sqrt[3]/2;
v={{1/2,s},{x,y},{a+1/2,b+s},{x+3/2,y+s},{0,0},{a,b},{x+1,y},{a+1,b},{1,0},{x+1/2,y+s}};
gs=Graph[Range[Length[v]],Complement[UnitEdges[v/.#],UndirectedEdge@@@{{7,8}}],VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

RecognizeGraph/@gs

(ud=FindUnitDistanceEmbedding[GraphData[{"Halin",{10,2}}],10000])//Timing

UnitDistance construction based on refinement

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,2}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

s=Sqrt[3]/2;
v={{-1/2,0},{s,z},{-a,b},{-s,z},{a,b},{c,d},{0,z+1/2},{1/2,0},{-c,d},{0,z-1/2}};
ee=GraphData[{"Halin",{10,2}},"Edges"];
eqn=UnitEdgeEquations[v,ee]//FullSimplify//Union

var=Variables[Subtract@@@eqn]

Length/@{eqn,var}

soln=Solve[eqn,var,Reals]

gs=Select[Graph[Range[10],ee,VertexCoordinates->Map[ToAlgebraicRoot,v/.#,{2}]]&/@soln,UnitDistanceGraphEmbeddingQ]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,2}}],1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 3}}

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

Primary

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

All

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

Planar

GraphData[{"Halin",{10,3}},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[,7Pi/8]]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[,2Pi/3]]

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

RecognizeGraph[g]

LCF

GraphData[{"Halin",{10,3}},"LCFSignature"]

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

Halin

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

UnitDistance

GraphData[{"Halin",{10,3}},"UnitDistance"]

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

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

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

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

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

UnitDistance FindSubgraphUnitDistanceEmbedding construction

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

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{10,3}},"Edges"]

GraphData[{"Halin",{10,3}},"Graphics"]

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

RecognizeGraph[g]

s=Sqrt[3]/2;
v=Join[{{0,0}},CirclePoints[Csc[Pi/6]/2,6],{{-2,0},{-3/2,-s},{-3/2,s}}];
g=Graph[Range[Length[v]],Complement[UnitEdges[v],UndirectedEdge@@@{{5,6},{6,7}}],VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

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

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

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

3D Polyhedron Canonical

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,3}}],1]}]

g=Graph3D[Range[10],GraphData[{"Halin",{10,3}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

v=GraphEmbedding[g];
v0=Mean[v];
f=GraphData[{"Halin",{10,3}},"FaceIndices"];

Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 4}}

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

Primary

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

All

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

Planar

GraphData[{"Halin",{10,4}},"Planar"]

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[,2Pi/7]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Halin

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

LCF

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

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

UnitDistance

GraphData[{"Halin",{10,4}},"UnitDistance"]

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,4}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

FindUnitDistanceEmbedding[GraphData[{"Halin",{10,4}}],MaxIterations->20000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{10,4}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{10,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,4}}],TimeConstraint->Infinity,"Results"->All],Debug->Full//Timing}

gs=UniqueEmbeddings[l]

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{10,4}},"Edges"]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,4}}],-1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 5}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 6

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[,Pi/2]]

RotateGraph[GraphicsToGraph@,Pi]

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

RecognizeGraph[g]

Halin

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

LCF

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

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

UnitDistance

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

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,5}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

g=LabelGraph@

UnitDistanceGraphEmbeddingQ[g]

g1=UnitDistanceEmbeddingRefine[g]

v={{x,y},{a,-b},{x+dx,y+dy},{a+dx,-b+dy},{c,d},{-c,-d},{-a-dx,b-dy},{-x-dx,-y-dy},{-a,b},{-x,y}};

eqn1=UnitEdgeEquations[v,EdgeList[g]]//FullSimplify//Union

var=Variables[Subtract@@@eqn1]

Length/@{eqn1,var}

NSolve[eqn1,var,Reals]

collineareqn=Tr[Cross@@Transpose[v[[{8,#,3}]]]]==0&/@{6,5}

eqn=Join[eqn1,collineareqn]//FullSimplify//Union

Length/@{eqn,var}

soln=Solve[eqn,var,Reals]

Select[Graph[Range[10],EdgeList[g],VertexCoordinates->(v/.#)]&/@soln,UnitDistanceGraphEmbeddingQ]

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance construction

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,5}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

gs={RotateGraph[,Pi],RotateGraph[LabelGraph@,{2,5}],RotateGraph[LabelGraph@,{10,9}],}

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

g1=RotateGraph[CenterGraph@UnitDistanceEmbeddingRefine[g,WorkingPrecision->5000,PrecisionGoal->1000],{6,5}]

v=GraphEmbedding[g1];

v[[6,2]]//N

N[v[[5,2]]-v[[6,2]],20]

Map[ToAlgebraicRoot,N[GraphEmbedding[g1],500],{2}]

s=Sqrt[3]/2;
v={{0,0},{1,0},{1,1},{0,1},{s,1/2},{2s,1},{3s,3/2},{3s,1/2},{3s-1,1/2},{3s-1,3/2}};
g=Graph[Range[Length[v]],UnitEdges[v],VertexCoordinates->v,VertexLabels->Automatic]

EuclideanDistance@@v[[{3,10}]]//FullSimplify

N[%]

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{10,5}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,5}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,};

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{10,5}},"Edges"]

e[l__Integer]:=Sequence@@Partition[{l},2,1]

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

HalinGraphEmbeddingQ[g]

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{10,5}}]]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

colors={Red,Green,Black,Blue,Orange};

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

g=PolyhedronGraph[can]

{"Halin", {10, 6}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

GraphData[{"Halin",{10,6}},"UnitDistance"]

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,6}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

UnitDistanceGraphEmbeddingQ[ud]

(ud=FindUnitDistanceEmbedding[GraphData[{"Halin",{10,6}}],MaxIterations->10000,WorkingPrecision->20,"ReturnOnMessage"->False])//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{10,6}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,6}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{RotateGraph[],RotateGraph[,{156,20}],RotateGraph[,{2,227}],RotateGraph[,{68,46}],RotateGraph[,{23,3}]}

Matchstick

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

MinimalCrossing

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

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

Default embedding

g=Graph@GraphData[{"Halin",{10,6}},"Edges"]

GraphData[{"Halin",{10,6}},"Graphics"]

v={{0,0},{3/4,0},{1,0},{1,1},{3/4,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,6,7,1,8,7],e[8,9,10,5],{6,9},e[2,10,4],{3,10}},VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

GraphData[{"Halin",{10,6}},"Graphics"]

GraphPlot[GraphData[{"Halin",{10,6}},"EdgeList"]]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

UnitDistance construction

SetProperty[,VertexLabels->"Name"]

s=Sqrt[3]/2;
eqn={
(x+1/2)^2+(s-y)^2==1,
(x-1)^2+(y-1)^2==1,
(a-x)^2+(b-y)^2==1,
a^2+b^2==1};

soln=Solve[eqn,{x,y,a,b},Reals]//FullSimplify

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

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

gs=Select[gs,UnitDistanceGraphEmbeddingQ]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{10,6}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,6}}],1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 7}} == {"Wheel", 10}

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

{"Halin", {10, 8}}

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

All

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

Halin

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

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{RotateGraph[,{1,6}],,RotateGraph[,{274,1}]}

Matchstick

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

MinimalCrossing

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

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

Default embedding

g=Graph@GraphData[{"Halin",{10,8}},"Edges"]

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

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

RecognizeGraph[g]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

s=Sqrt[3]/2;
v=Join[CirclePoints[{Csc[Pi/6]/2,Pi/2},6],{{0,0},{-1,0},{-1-s,1/2},{-1-s,-1/2}}];
g=Graph[Range[Length[v]],DeleteCases[UnitEdges[v],2\[UndirectedEdge]3],VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

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

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{10,8}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

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

gn={"Halin",{10,8}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

g1=Graph[Range[10],EdgeList[g],VertexCoordinates->ReplacePart[v,10->v[[10]]+.5{1,1,1}]]

v=GraphEmbedding[g1];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 9}}

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

Primary

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

All

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

{,,,,,,}

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[,2Pi/7]]

RegionIntersection[Line[v[[{1,3}]]],Line[v[[{2,6}]]]]//RootReduce

v=Join[UnitCirclePoints[7]];
v=Join[v,{{-(NumericalApproximation[Root, (RowDefault["0.678", FEExpressionsNumericalApproximationElider]), Root[7-14 #1+8 ((#1)^3)&,2], ]),(NumericalApproximation[Root, (RowDefault["-0.256", FEExpressionsNumericalApproximationElider]), Root[-1+28 ((#1)^2)-224 ((#1)^4)+448 ((#1)^6)&,3], ])},{(NumericalApproximation[Root, (RowDefault["0.678", FEExpressionsNumericalApproximationElider]), Root[7-14 #1+8 ((#1)^3)&,2], ]),(NumericalApproximation[Root, (RowDefault["-0.256", FEExpressionsNumericalApproximationElider]), Root[-1+28 ((#1)^2)-224 ((#1)^4)+448 ((#1)^6)&,3], ])},{0,(NumericalApproximation[Root, (RowDefault["-0.256", FEExpressionsNumericalApproximationElider]), Root[-1+28 ((#1)^2)-224 ((#1)^4)+448 ((#1)^6)&,3], ])}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,9,3],e[5,8,7],e[6,8,10,9,2],{4,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Halin

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

LCF

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

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

UnitDistance

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

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

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

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

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

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

(ud=FindUnitDistanceEmbedding[GraphData[{"Halin",{10,9}}],10000])//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{RotateGraph[,{7,3}],RotateGraph[,{216,6}],,,,}

Matchstick

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

MinimalCrossing

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

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

Default embedding

g=Graph@GraphData[{"Halin",{10,9}},"Edges"]

v=Join[CirclePoints[{Csc[Pi/5]/2,-Pi/2},5],{}];
i=RegionIntersection[InfiniteLine[v[[{1,2}]]],InfiniteLine[v[[{3,4}]]]][[1]];
v=Join[v,{v[[1]]-{0,1},i,{-1,1}i}];
v=Join[v,{v[[6]]+v[[2]]-v[[1]],v[[6]]+v[[5]]-v[[1]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,9,2,7,3,4,8,10,6,1,2,3],e[7,9],e[10,5,4],e[8,5,1]},VertexCoordinates->v,VertexLabels->"Name"]

GraphPlot[%%,VertexLabels->None]

RotateGraph[GraphicsToGraph[],Pi]

s=Sqrt[3]/2;
v={{0,0},{1/3,0},{2/3,0},{1,0},{3/4,s/2},{1/2,s},{1/4,s/2},{1/2,(Sqrt[3])/6}};
p=RegionIntersection[Line[v[[{1,8}]]],Line[v[[{2,7}]]]][[1,1]];
p2=RegionIntersection[Line[v[[{3,5}]]],Line[v[[{4,8}]]]][[1,1]];
v=Join[v,{p,p2}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,9,8,10,4],e[3,10,5],e[2,9,7],{6,8}},VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"Halin",{10,9}},"EdgeList"]]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

UnitDistance construction

SetProperty[RotateGraph[,-.35],VertexLabels->"Name"]

s=Sqrt[3]/2;
Solve[(x+1/2)^2+(1/2-s)^2==1,x,Reals]

N[%]

v={{0,-1/2},{1,1/2},{-1/2,1/2-s},{x+1,0},{-1/2,s-1/2},{1,-1/2},{0,1/2},{x,0},{1/2,s-1/2},{1/2,1/2-s}}/.{x->-(1/2)+((3^(1/4))/(Sqrt[2]))};
g=Graph[Range[Length[v]],Complement[UnitEdges[v],UndirectedEdge@@@{{1,7}}],VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

v={{0,-1/2},{1,1/2},{-1/2,1/2-s},{x+1,0},{-1/2,s-1/2},{1,-1/2},{0,1/2},{x,0},{1/2,s-1/2},{1/2,1/2-s}}/.{x->-(1/2)-((3^(1/4))/(Sqrt[2]))};
g=Graph[Range[Length[v]],Complement[UnitEdges[v],UndirectedEdge@@@{{1,7}}],VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{10,9}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

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

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 10}}

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

Primary

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

All

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

Default embedding

g=Graph@GraphData[{"Halin",{10,10}},"Edges"]

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

RecognizeGraph[g]

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

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

RecognizeGraph@g

s=Sqrt[3]/2;
v={{0,-1/2},{0,1/2},{1,-1/2},{1,1/2},{-1,-1/2},{-1,1/2},{-1/2,1/2+s},{1/2,1/2+s},{-1/2,-1/2-s},{1/2,-1/2-s}};
g=Graph[Range[Length[v]],UnitEdges[v],VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{10,10}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Halin

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 8

GraphPlot[RotateGraph[,Pi/4]]

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

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{,RotateGraph[,{270,160}],RotateGraph[,{222,267}],RotateGraph[,{51,10}]}

Matchstick

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

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,10}}],1]}]

gn={"Halin",{10,10}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];
v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 11}}

Names

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

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

g=Graph@GraphData[{"Halin",{10,11}},"Edges"]

v[[12]]-v[[7]]//FullSimplify

v=Join[CirclePoints[Csc[Pi/7]/2,7],CirclePoints[-{0,-(1/2) (Sqrt[1+(2/(Sqrt[5]))])+(1/2) Cot[(π/7)]},Csc[Pi/5]/2,5]]//FullSimplify//Union;
ee=UndirectedEdge@@@Sort[Sort/@{e[1,4,8,10,3,9,7,1,5,2,6,4],e[8,6,10],e[3,2,9],{5,7}}];
g=Graph[Range[Length[v]],ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

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

i[j_,k_]:=RegionIntersection[Line[v[[j]]],Line[v[[k]]]][[1,1]]

v=CirclePoints[Csc[Pi/7]/2,7];
v=Join[v,{i[{4,7},{2,5}],i[{1,3},{2,5}],i[{7,4},{1,6}]}];
ee=UndirectedEdge@@@Sort[Sort/@{Sequence@@(Partition[Range[7],2,1,1]),e[7,10,8,4],e[3,9,1],e[2,9,8,5],{6,10}}];
g=Graph[Range[Length[v]],ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

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

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

RecognizeGraph[g]

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

RecognizeGraph[g]

Degenerate

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

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

Configuration

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

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

Perspective

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

Perspective construction

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

Circular

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

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

RecognizeGraph/@gs

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

Circulant

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

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

Circular construction

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

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

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

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

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

gs=bilat

Complement graph

compl=GraphData[{"Halin",{10,11}},"ComplementGraph","Name"]

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance construction #1

UnitDistanceGraphEmbeddingQ@ud

RotateGraph[,.05]

FullSimplify[0<s<Root[1-11 ((#1)^2)+4 ((#1)^4)&,3,0]||((Sqrt[15])/4)<s<Root[1-11 ((#1)^2)+4 ((#1)^4)&,4,0]]

s=Sqrt[3]/2;
eqn={
(a-x)^2+(b-y+s)^2==1,
(a+1)^2+b^2==1,
(x+1-a-1/2)^2+(b+s-y)^2==1,
x^2+y^2==1
};

soln=Solve[eqn,{x,y,a,b},Reals]//FullSimplify

v={{a+1/2,b+s},{x+1/2,y-s},{0,0},{x+1/2,y+s},{a,b},{-1/2,s},{x,y},{a+1,b},{1/2,s},{x+1,y}};
e=Sort[Sort/@{{1,5},{1,6},{1,8},{1,10},{2,5},{2,7},{2,10},{3,6},{3,8},{3,9},{4,7},{4,9},{4,10},{5,8},{6,9},{7,10}}];
gs=Graph[Range[Length[v]],UndirectedEdge@@@e,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

RecognizeGraph/@gs

UnitDistanceGraphEmbeddingQ/@gs

UnitDistance construction #2

s=Sqrt[3]/2;
v={{x,y},{1,0},{a,b},{-1/2,s},{x+1,y},{eee,f},{1/2,s},{x+1/2,y-s},{c,d},{0,0}};

ee=EdgeList[];

eqn=UnitEdgeEquations[v,ee]//FullSimplify//Union

var=Variables[Subtract@@@eqn]

Length/@{eqn,var}

soln=Solve[eqn,var,Reals]

x->-1/2,y->-s

eqn1=DeleteCases[FullSimplify[eqn/.{x->-1/2,y->-s}]//Union,True]

var1=Variables[Subtract@@@eqn1]

Length/@{eqn1,var1}

soln=Solve[eqn1,var1,Reals]

Graph[Range[10],ee,VertexCoordinates->(v/.#/.{x->-1/2,y->-s})]&/@soln

UnitDistanceGraphEmbeddingQ/@%

d->f, c->e+1

eqn1=DeleteCases[FullSimplify[eqn/.{d->f,c->eee+1}]//Union,True]

var1=Variables[Subtract@@@eqn1]

Length/@{eqn1,var1}

(soln=NSolve[eqn1,var1,Reals])//Timing

(soln=Solve[eqn1,var1,Reals])//Timing

Graph[Range[10],ee,VertexCoordinates->(v/.{d->f,c->eee+1}/.#)]&/@soln

Graph[Range[10],ee,VertexCoordinates->(v/.{d->f,c->eee+1}/.#)/.eee->-3/4]&/@soln

Select[%,UnitDistanceGraphEmbeddingQ]

Graph[Range[10],ee,VertexCoordinates->(v/.{d->f,c->eee+1}/.#)/.eee->-3/2]&/@soln

Select[%,UnitDistanceGraphEmbeddingQ]

g=

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"Halin",{10,11}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{10,11}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,11}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,}

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Canonical

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

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

3D Canonical construction

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

{"Halin", {10, 12}}

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

Primary

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

All

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

Planar

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

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

Halin

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

MinimalCrossing

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

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

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{10,12}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 5

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

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

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

RegionIntersection[Line[v[[{5,6}]]],Line[{v[[7]],{v[[7,1]],1}}]]

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

RecognizeGraph[g]

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

Matchstick

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

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

Default embedding

g=Graph@GraphData[{"Halin",{10,12}},"Edges"]

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{10,12}}],1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {10, 13}}

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

Primary

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

All

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

Bilateral

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

Circular

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

Planar

GraphData[{"Halin",{10,13}},"Planar"]

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

Halin

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

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

MinimalCrossing

GraphData[{"Halin",{10,13}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{10,13}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 6

GraphPlot[RotateGraph[,Pi/2]]

v[[5,1]]

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

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

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

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

RecognizeGraph[g]

LCF

GraphData[{"Halin",{10,13}},"LCF"]

GraphData[{"Halin",{10,13}},"LCFSignature"]

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

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

LCF compute

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

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

gs=LCFGraph@@@lcf//StyleGraphs

gs=Join[With[{g=BilateralLCFEmbedding[#]},If[MissingQ[g],#,g]]&/@LCFGraph@@@DeleteCases[lcf,{_,1}],DeleteMissing[BilateralLCFEmbedding/@LCFGraph@@@Cases[lcf,{_,1}]]]

UnitDistance

GraphData[{"Halin",{10,13}},"UnitDistance"]

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{10,13}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

UnitDistance FindSubgraphUnitDistanceEmbedding construction

{{"Halin",{10,13}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{10,13}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{RotateGraph[,{223,126}],RotateGraph[,π],RotateGraph[],RotateGraph[],}

Matchstick

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

Default embedding

g=Graph@GraphData[{"Halin",{10,13}},"Edges"]

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

RecognizeGraph[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

poly=GraphPolyhedron[GraphData[{"Halin",{10,13}}]]

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

(can=FindCanonicalPolyhedron[Polyhedron[Normalize/@poly[[1]],poly[[2]]],WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

11

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",11]],Dividers->All]

{"Halin", {11, 1}}

GraphData[{"Halin",{11,1}},"StandardName"]

All

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

Halin

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

LCF

GraphData[{"Halin",{11,1}},"LCFSignature"]

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

UnitDistance

GraphData[{"Halin",{11,1}},"UnitDistance"]

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,1}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,1}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,1}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

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

MinimalCrossing

GraphData[{"Halin",{11,1}},{"RCN","CN"}]

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

Default embedding

GraphData[{"Halin",{11,1}},"Graphics"]

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

RecognizeGraph[g]

GraphData[{"Halin",{11,1}},"Graphics"]

i[{4,7},{2,5}]//N

i[j_,k_]:=RegionIntersection[Line[v[[j]]],Line[v[[k]]]][[1,1]]

v=CirclePoints[Csc[Pi/7]/2,7];
v=Join[v,i[{2,5},#]&/@{{4,7},{1,3},{3,7},{4,6}}];
ee=UndirectedEdge@@@Sort[Sort/@{e[1,2,3,4,5,6,7,1,9,10,8,11,5],e[7,8,4],{6,11},{2,9},{3,10}}];
g=Graph[Range[Length[v]],ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

g=Graph@GraphData[{"Halin",{11,1}},"Edges"]

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

RecognizeGraph[g]

UnitDistance construction

RotateGraph[SetProperty[,VertexLabels->Automatic],{11,10}]

Clear[e]

s=Sqrt[3]/2;
v={{a,b},{e,f},{a-1/2,b+s},{a+1/2,b+s},{c+1,d},{0,0},{x,y},{x+1,y},{c,d},{1/2,-s},{-1/2,-s}};
ee={{1,2},{1,3},{1,4},{2,5},{2,6},{3,4},{3,7},{4,8},{5,8},{5,9},{5,10},{6,10},{6,11},{7,8},{7,9},{9,11},{10,11}};
eqn=SquaredEuclideanDistance@@v[[#]]==1&/@{{4,8},{5,8},{9,11},{2,6},{1,2},{2,5},{7,9},{3,7}}/.Abs->Identity

RecognizeGraph[Graph[ee]]

(soln=NSolve[Join[eqn,{e==0}],{x,y,a,b,c,d,e,f},Reals,WorkingPrecision->20])//Timing

gs=Graph[Range[11],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

(soln=Solve[Join[eqn,{e==a,f==b+1,c==-1/2,d==-s-1}],{x,y,a,b,c,d,e,f},Reals])//Timing

gs=Graph[Range[11],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@%

DegenerateGraphEmbeddingTypes/@gs

(soln=Solve[Join[eqn,{e==a+1/6,c==-1/2,d==-s-1}],{x,y,a,b,c,d,e,f},Reals])//Timing

gs=Graph[Range[11],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,1}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,1}}],-1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {11, 2}}

GraphData[{"Halin",{11,2}},"StandardName"]

All

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

Halin

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

LCF

GraphData[{"Halin",{11,2}},"LCFSignature"]

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

UnitDistance

GraphData[{"Halin",{11,2}},"UnitDistance"]

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

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,2}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

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

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,2}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,2}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

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

MinimalCrossing

GraphData[{"Halin",{11,2}},{"RCN","CN"}]

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

Default embedding

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

RecognizeGraph@g

GraphData[{"Halin",{11,2}},"Graphics"]

v=CirclePoints[Csc[Pi/7]/2,7];
v=Join[v,{{-1/2,v[[6,2]]},{1/2,v[[6,2]]},{-1/2,v[[5,2]]},{1/2,v[[5,2]]}}];
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,1,9,11,10,8,7],e[4,10,5],{3,11},{2,9},{6,8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

v[[13]]-v[[7]]//FullSimplify

v=Join[CirclePoints[Csc[Pi/7]/2,7],CirclePoints[-{0,(1/2) (-(Sqrt[3])+Cot[(π/7)])},Csc[Pi/6]/2,6]]//FullSimplify//Union;
ee=Sort[Sort/@{e[6,9,11,4,10,8,3,6,7,5,2,1,3],{7,9},{5,11},e[10,2,4],{1,8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

g=Graph@GraphData[{"Halin",{11,2}},"Edges"]

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

RecognizeGraph[g]

UnitDistance construction

g=RotateGraph[SetProperty[,VertexLabels->Automatic],{5,6}]

FindGraphIsomorphism[GraphData[{"Halin",{11,2}}],g]

s=Sqrt[3]/2;
v={{a,b},{x+1/2,y-s},{a+1,b},{a+1/2,b+s},{x,y},{x+1,y},{c,d},{c-1/2,d+s},{0,0},{1,0},{1/2,s}};
ee=GraphData[{"Halin",{11,2}},"Edges"];
eqn=SquaredEuclideanDistance@@v[[#]]==1&/@{{5,9},{1,2},{7,10},{7,3},{11,8}}/.Abs->Identity

soln=NSolve[eqn,{x,y,a,b,c,d},Reals]

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

UnitDistanceGraphEmbeddingQ/@gs

soln=Solve[Join[eqn,{x==0,y==1,a==x+1/2+1/4}],{x,y,a,b,c,d},Reals]//FullSimplify

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

UnitDistanceGraphEmbeddingQ/@gs

DegenerateGraphEmbeddingQ/@gs

soln=NSolve[Join[eqn,{x==0,y==1,a==x+1/2}],{x,y,a,b,c,d},Reals]

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

UnitDistanceGraphEmbeddingQ/@gs

soln=Solve[Join[eqn,{x==0,y==1,a==x+1/2}],{x,y,a,b,c,d},Reals]//FullSimplify

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

gs=Select[%,UnitDistanceGraphEmbeddingQ]

DegenerateGraphEmbeddingQ/@gs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,2}}]]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,2}}],-1]}]

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

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

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

SimplePolyhedronQ[can]

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"Halin", {11, 3}}

GraphData[{"Halin",{11,3}},"StandardName"]

All

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

Halin

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

LCF

GraphData[{"Halin",{11,3}},"LCFSignature"]

GraphData[{"Halin",{11,3}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,3}}],Debug->True]//Timing

GraphData[{"Halin",{11,3}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,3}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,3}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,3}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,3}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{RotateGraph[,{4,39}],RotateGraph[,{2,5}],RotateGraph[,{37,40}],RotateGraph[,{22,35}],,}

Matchstick

GraphData[{"Halin",{11,3}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,3}},{"RCN","CN"}]

GraphData[{"Halin",{11,3}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphPlot[RotateGraph[GraphData[{"Halin",{11,3}},"Graph","Labeled"],{1,2}],VertexLabels->None]

v=CirclePoints[Csc[Pi/7]/2,7];
v=Join[v,{{v[[7,1]],v[[6,2]]},{v[[7,1]],v[[5,2]]},{0,v[[5,2]]},{v[[1,1]],v[[5,2]]}}];
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,1,11,10,9,8,7],{6,8},{5,9},{4,10},e[3,11,2]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

GraphPlot[GraphData[{"Halin",{11,3}},"EdgeList"]]

e[l__Integer]:=Sequence@@Partition[{l},2,1]

v={{0,0},{3/5,0},{1,0},{1,1},{3/5,1},{0,1},{0,1/2},{1/5,1/2},{2/5,1/2},{3/5,1/2},{4/5,1/2}};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,1,9,10,2],e[7,8,9],{6,8},e[5,11,3],e[4,11,10]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

g=Graph@GraphData[{"Halin",{11,3}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistance construction

RotateGraph[SetProperty[,VertexLabels->Automatic],{4,3}]

s=Sqrt[3]/2;
v={{1/2,s},{a+1,b},{1,0},{0,0},{a,b},{a+1/2,b+s},{x+1,y},{x,y},{a-1/2,b+s},{c+1,d},{c,d}};
ee=Flatten[Thread/@{{1,{2,3,4}},{2,{5,6}},{3,{4,7}},{4,{8}},{5,{6,9}},{6,{9,10}},{7,{8,10}},{8,{11}},{9,{11}},{10,{11}}},1]

eqn=SquaredEuclideanDistance@@v[[#]]==1&/@{{9,11},{4,8},{1,2},{7,10},{8,11},{3,7}}/.Abs->Identity

perp=0==Dot@@(Subtract@@v[[#]]&/@{{8,11},{8,7}})

soln=NSolve[Join[eqn,{x==c}],{a,b,c,d,x,y},Reals]

gs=Graph[Range[11],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

soln=NSolve[Join[eqn,{x==c,a+1==1/2}],{a,b,c,d,x,y},Reals]

gs=Graph[Range[11],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@%

soln=Solve[Join[eqn,{x==c,a+1==1/2}],{a,b,c,d,x,y},Reals]

gs=Graph[Range[11],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

gs=Select[gs,UnitDistanceGraphEmbeddingQ]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,3}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,3}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,3}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,3}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,3}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,3}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 4}}

GraphData[{"Halin",{11,4}},"StandardName"]

All

GraphData[{"Halin",{11,4}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,4}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,4}},"LCFSignature"]

GraphData[{"Halin",{11,4}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,4}}],Debug->True]//Timing

GraphData[{"Halin",{11,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,4}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs=LabelGraph/@{}

Matchstick

GraphData[{"Halin",{11,4}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,4}},{"RCN","CN"}]

GraphData[{"Halin",{11,4}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphData[{"Halin",{11,4}},"Graphics"]

v={{0,0},{1/4,0},{1,0},{1,1/2},{1,1},{1/2,1},{1/4,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2}};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,9,8],e[7,9,2],e[9,10,11,4],e[3,11,5],{6,10}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

v=Join[CirclePoints[Csc[Pi/8]/2,8],{{-1/2,0},{0,0},{1/2,0}}];
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,11,3],e[2,11,10,9,7],e[8,9,5],{4,10},{6,9}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

g=Graph@GraphData[{"Halin",{11,4}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistance construction

RotateGraph[SetProperty[,VertexLabels->Automatic],{4,8}]

v={{-1/2,s},{x,y+2s},{1/2,s},{0,0},{x-1/2,y+s},{x+1/2,y+s},{x+1,y+2s},{1,0},{x,y},{x+1,y},{x+3/2,y+s}};
ee=GraphData[{"Halin",{11,4}},"Edges"];
eqn=UnitEdgeEquations[v,ee]

Solve[eqn,{x,y},Reals]

Manipulate[(
soln=NSolve[Append[eqn,x==Rationalize[x0]],{x,y},Reals];
Graph[Range[11],ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln),
{x0,-3/2,1/2}]

-1.3,-1/2,2.5

x=.

soln=Join@@(Solve[Append[eqn,x==#],{x,y},Reals]&/@{-4/3,-1/2,2/5})

gs=Graph[Range[11],ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,4}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,4}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,4}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,4}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,4}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,4}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 5}}

GraphData[{"Halin",{11,5}},"StandardName"]

All

GraphData[{"Halin",{11,5}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,5}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,5}},"LCFSignature"]

GraphData[{"Halin",{11,5}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,5}}],Debug->True]//Timing

GraphData[{"Halin",{11,5}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,5}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,5}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,5}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,5}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,5}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,5}},{"RCN","CN"}]

GraphData[{"Halin",{11,5}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphData[{"Halin",{11,5}},"Graphics"]

v={{0,0},{1/4,0},{3/4,0},{1,0},{1,1},{3/4,1},{1/4,1},{0,1},{1/4,1/2},{1/2,1/2},{3/4,1/2}};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,9,10,11,4],e[8,9,2],e[5,11,3],e[7,10,6]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

int[i_,j_]:=RegionIntersection[InfiniteLine[v[[i]]],InfiniteLine[v[[j]]]][[1]]

v=CirclePoints[8];
v=Join[v,{int[{4,7},{2,5}],int[{4,7},{6,8}],int[{2,5},{1,3}]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,8,1,11,3],e[2,11,9,5],e[4,9,10,7],e[6,10,8]},VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

g=Graph@GraphData[{"Halin",{11,5}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistance construction

GraphPlot[GraphData[{"Halin",{11,5}},"EdgeList"]]

UnitDistanceEmbeddingRefine@GraphicsToGraph@%

UnitDistanceGraphEmbeddingQ@%

(ud=FindUnitDistanceEmbedding[GraphData[{"Halin",{11,5}}],MaxIterations->10000,WorkingPrecision->20,"ReturnWithMesage"->False])//Timing

SetProperty[RotateGraph[,.35],VertexLabels->"Name"]

UnitDistanceGraphEmbeddingQ@ud

GraphData[{"Halin",{11,5}},"M"]

Length[ee]

s=Sqrt[3]/2;
v={{-(1/2),s},{(3/2)+a,b+s},{0,0},{(1/2),s},{(1/2)+a,b+s},{1+a,b},{1,0},{(1/2)+c,d+s},{a,b},{1+c,d},{c,d}};
ee=Sort[Sort/@{{1,2},{1,3},{1,4},{2,5},{2,6},{3,4},{3,7},{4,7},{4,8},{5,6},{5,8},{5,9},{6,9},{7,10},{8,10},{8,11},{9,11},{10,11}}];
eqn=SquaredEuclideanDistance@@v[[#]]==1&/@{{2,1},{9,11},{4,8}}/.Abs->Identity

Manipulate[
(
soln=NSolve[Append[eqn,d==Rationalize[d0]],Reals];
gs=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln;
Select[gs,ud===False||UnitDistanceGraphEmbeddingQ[#]&]
),
{d0,-2,3},{ud,{False,True}}]

ee

List@@@EdgeList[]

MaxValue[{d,eqn},{a,b,c}]

soln=Solve[Append[eqn,d==-Sqrt[15]/4],Reals];
gs=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

soln=Solve[Append[eqn,d==Sqrt[15]/4],Reals];
gs=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

RecognizeGraph/@gs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,5}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,5}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,5}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,5}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,5}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,5}}],1]}]

gn={"Halin",{11,5}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];
v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 6}}

GraphData[{"Halin",{11,6}},"StandardName"]

All

GraphData[{"Halin",{11,6}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,6}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,6}},"LCFSignature"]

GraphData[{"Halin",{11,6}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,6}}],Debug->True]//Timing

GraphData[{"Halin",{11,6}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,6}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,6}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,6}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,6}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,6}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,6}},{"RCN","CN"}]

GraphData[{"Halin",{11,6}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphData[{"Halin",{11,6}},"Graphics"]

v=Join[CirclePoints[Csc[Pi/8]/2,8],{{1/2,-1/2},{1/2,1/2},{-1/2,1/2}}];
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,9,10,4],e[6,11,10,3],{2,9},e[7,11,8],{5,11}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

GraphData[{"Halin",{11,6}},"Graphics"]

v={{0,0},{2/3,0},{1,0},{1,1},{2/3,1},{1/3,1},{0,1},{0,1/2},{1/3,1/2},{2/3,1/4},{2/3,3/4}};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,9,8],e[7,9,6],e[5,11,10,2],e[9,10,3],{4,11}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph@g

g=Graph@GraphData[{"Halin",{11,6}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistance construction

(ud=FindUnitDistanceEmbedding[GraphData[{"Halin",{11,6}}],MaxIterations->10000,WorkingPrecision->20])//Timing

UnitDistanceGraphEmbeddingQ@ud

s=Sqrt[3]/2;
v={{a+1,b},{x-1/2,y+s},{a,b},{a+1/2,b+s},{x,y},{x+1/2,y+s},{0,0},{1/2,s},{x+1,y},{x+3/2,y+s},{1,0}};
eqn={
a^2+b^2==1,
(x+1/2)^2+(y+s)^2==1,
(x-1/2-a-1)^2+(y+s-b)^2==1,
Dot[Subtract@@v[[{3,7}]],Subtract@@v[[{8,7}]]]==0}

soln=Solve[eqn,{x,y,a,b},Reals]//FullSimplify

gs=Graph[Range[Length[v]],Complement[UnitEdges[v/.#],UndirectedEdge@@@{{1,11}}],VertexCoordinates->(v/.#),VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

RecognizeGraph/@gs

RegionDistance[Line[v[[{1,2}]]],v[[7]]]/.soln[[2]]//FullSimplify

N[%]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,6}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,6}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,6}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,6}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,6}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,6}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 7}}

GraphData[{"Halin",{11,7}},"StandardName"]

All

GraphData[{"Halin",{11,7}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,7}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,7}},"LCFSignature"]

GraphData[{"Halin",{11,7}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,7}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,7}}],Debug->True]//Timing

GraphData[{"Halin",{11,7}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,7}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,7}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,7}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,7}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,7}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,7}},{"RCN","CN"}]

GraphData[{"Halin",{11,7}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphPlot@

s=Sqrt[3]/2;
v=CirclePoints[Csc[Pi/8]/2,8];
v=Join[v,{{0,v[[3,2]]},{0,v[[2,2]]}}];
v=Join[v,{Mean[v[[{9,10}]]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,8,1,10,11,9,4],e[3,9,6],e[5,9,2],e[7,11],e[8,10]},VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

GraphData[{"Halin",{11,7}},"Graphics"]

v={{0,0},{1,0},{1,1/2},{1,1},{2/3,1},{1/3,1},{0,1},{0,1/2},{1/2,1/4},{1/2,1/2},{1/2,3/4}};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,9,2],e[9,10,11,7],e[6,11,5],{4,11},{3,11},{8,10}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

g=Graph@GraphData[{"Halin",{11,7}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

UnitDistance construction

SetProperty[RotateGraph[,-.26],VertexLabels->"Name"]

s=Sqrt[3]/2;
v={{x+1,y},{-1/2,s},{x,y},{x+1/2,y+s},{0,0},{1/2,s},{a,b},{a+1/2,b+s},{-1/2,-s},{1/2,-s},{1,0}};

eqn={
(a+1/2)^2+(b+s)^2==1,
(a-x)^2+(y-b)^2==1,
(x+3/2)^2+(y-s)^2==1,
Dot[Subtract@@v[[{7,9}]],Subtract@@v[[{7,8}]]]==0}

soln=Solve[eqn,{a,b,x,y},Reals]//FullSimplify

gs=Graph[Range[Length[v]],UnitEdges[v/.#],VertexCoordinates->FullSimplify[v/.#],VertexLabels->"Name"]&/@soln

RegionDistance[Line[v[[{4,8}]]],v[[2]]]/.soln[[2]]//FullSimplify

N[%]

UnitDistanceGraphEmbeddingQ/@gs

RecognizeGraph/@gs

Dot[Subtract@@v[[{5,9}]],Subtract@@v[[{9,7}]]]/.soln[[1]]//FullSimplify

Dot[Subtract@@v[[{4,8}]],Subtract@@v[[{7,8}]]]/.soln[[1]]//FullSimplify

s=Sqrt[3]/2;
v={{x+1,y},{-1/2,s},{x,y},{x+1/2,y+s},{0,0},{1/2,s},{a,b},{a+1/2,b+s},{-1/2,-s},{1/2,-s},{1,0}};

eqn={
(a+1/2)^2+(b+s)^2==1,
(a-x)^2+(y-b)^2==1,
(x+3/2)^2+(y-s)^2==1,
Dot[Subtract@@v[[{4,8}]],Subtract@@v[[{7,8}]]]==0}

soln=Solve[eqn,{a,b,x,y},Reals]//FullSimplify

gs=Graph[Range[Length[v]],UnitEdges[v/.#],VertexCoordinates->FullSimplify[v/.#],VertexLabels->"Name"]&/@soln

UnitDistanceGraphEmbeddingQ/@gs

Dot[Subtract@@v[[{5,9}]],Subtract@@v[[{9,7}]]]/.soln[[1]]//FullSimplify

Dot[Subtract@@v[[{4,8}]],Subtract@@v[[{7,8}]]]/.soln[[1]]//FullSimplify

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,7}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,7}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,7}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,7}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,7}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,7}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 8}}

GraphData[{"Halin",{11,8}},"StandardName"]

Primary

GraphData[{"Halin",{11,8}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{11,8}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{11,8}},"Planar"]

GraphData[{"Halin",{11,8}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{11,8}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{11,8}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[,2Pi/7]]

v=Join[UnitCirclePoints[7]];
v=Join[v,Table[v[[6]]+i(v[[2]]-v[[6]])/4,{i,3}],{{0,-3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,11,7],e[6,8,9,10,2],e[4,9,11],{5,8},{3,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

v=Join[UnitCirclePoints[5]];
v=Join[v,Table[{i,v[[4,2]]},{i,-1/2,1/2,1/4}],{{0,3/5}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,10],e[8,11,3,7],{9,11},e[4,6,7,8,9,10,2],{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[{1/2,i/6},{i,5}],{{3/4,5/6},{3/4,3/6}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2],e[5,6,7,8,9,4],e[9,10,3,11,6],{8,10},{7,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[,-2Pi/3]]

RegionIntersection[Line[v[[{6,5}]]],Line[{v[[7]],v[[7]]+{0,1}}]]//FullSimplify

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Table[v[[6]]+(v[[4]]-v[[6]])i/4,{i,3}],{{-((Sqrt[3])/16),(1/16)},{((Sqrt[3])/16),(1/16)}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,11,5,10,6,3],e[2,5,8],e[6,7,8,9,4],{9,11},{7,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Table[v[[6]]+(v[[4]]-v[[6]])i/4,{i,3}],{{((Sqrt[3])/16),(1/16)},{0,(1/16)}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,9,8,7,6,3],e[6,5,10,4],e[2,5,11,8],{7,11},{9,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{11,8}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,8}},"LCFSignature"]

GraphData[{"Halin",{11,8}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,8}}],Debug->True]//Timing

GraphData[{"Halin",{11,8}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,8}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,8}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,8}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,8}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,};

Matchstick

GraphData[{"Halin",{11,8}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphData[{"Halin",{11,8}},"Graphics"]

v={{0,0},{1/2,0},{1,0},{1,1},{1/2,1},{0,1},{0,1/4},{1/4,1/4},{1/2,1/4},{1/2,1/2},{1/2,3/4}};
ee={e[1,2,3,4,5,6,7,1,8,10,4],e[5,11,10,9,2],{3,9},{7,8},{6,11}};
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->"Name"]

RecognizeGraph[g]

g=Graph@GraphData[{"Halin",{11,8}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{11,8}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,8}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,8}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,8}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,8}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 9}}

GraphData[{"Halin",{11,9}},"StandardName"]

All

GraphData[{"Halin",{11,9}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,9}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,9}},"LCFSignature"]

GraphData[{"Halin",{11,9}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,9}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,9}}],Debug->True]//Timing

GraphData[{"Halin",{11,9}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,9}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,9}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,9}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,9}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,9}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,9}},{"RCN","CN"}]

GraphData[{"Halin",{11,9}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,9}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,9}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,9}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,9}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,9}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,9}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,9}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 10}}

GraphData[{"Halin",{11,10}},"StandardName"]

All

GraphData[{"Halin",{11,10}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,10}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,10}},"LCFSignature"]

GraphData[{"Halin",{11,10}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,10}}],Debug->True]//Timing

GraphData[{"Halin",{11,10}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,10}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,10}}],MaxIterations->20000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,10}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,10}}],TimeConstraint->Infinity,"Results"->All,Debug->Full]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,10}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,10}},{"RCN","CN"}]

GraphData[{"Halin",{11,10}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,10}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,10}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,10}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,10}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,10}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,10}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,10}}],1]}]

gn={"Halin",{11,10}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 11}}

GraphData[{"Halin",{11,11}},"StandardName"]

All

GraphData[{"Halin",{11,11}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,11}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,11}},"LCFSignature"]

GraphData[{"Halin",{11,11}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,11}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,11}}],Debug->True]//Timing

GraphData[{"Halin",{11,11}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,11}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,11}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,11}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,11}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,11}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,11}},{"RCN","CN"}]

GraphData[{"Halin",{11,11}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,11}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,11}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,11}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,11}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,11}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,11}},"Polyhedron"],Yellow,Sphere[]}]

{"Halin", {11, 12}}

GraphData[{"Halin",{11,12}},"StandardName"]

All

GraphData[{"Halin",{11,12}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,12}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,12}},"LCFSignature"]

GraphData[{"Halin",{11,12}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,12}}],Debug->True]//Timing

GraphData[{"Halin",{11,12}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,12}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,12}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,12}}],MaxIterations->20000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,12}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,12}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,12}}],TimeConstraint->Infinity,"Results"->All,Debug->Full]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,12}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,12}},{"RCN","CN"}]

GraphData[{"Halin",{11,12}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,12}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,12}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,12}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,12}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,12}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,12}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,12}}],1]}]

gn={"Halin",{11,12}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 13}}

GraphData[{"Halin",{11,13}},"StandardName"]

All

GraphData[{"Halin",{11,13}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,13}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,13}},"LCFSignature"]

GraphData[{"Halin",{11,13}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,13}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,13}}],Debug->True]//Timing

GraphData[{"Halin",{11,13}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Halin",{11,13}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,13}},{"RCN","CN"}]

GraphData[{"Halin",{11,13}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,13}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,13}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,13}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,13}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,13}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,13}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,13}}],1]}]

gn={"Halin",{11,13}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

g1=Graph[Range[10],EdgeList[g],VertexCoordinates->ReplacePart[v,6->v[[6]]+.5{1,1,1}]]
v=GraphEmbedding[g1];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 14}} == {"Wheel", 11}

GraphData[{"Halin",{11,14}},"StandardName"]

{"Halin", {11, 15}}

GraphData[{"Halin",{11,15}},"StandardName"]

All

GraphData[{"Halin",{11,15}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{11,15}},"Planar"]

GraphData[{"Halin",{11,15}},"Graph","Planar"]//StyleGraphs

Halin

GraphData[{"Halin",{11,15}},"Graph","Halin"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,15}},{"RCN","CN"}]

GraphData[{"Halin",{11,15}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,15}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{11,15}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{11,15}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

Tutte embedding construction 8

GraphPlot[RotateGraph[]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction  4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/7,1/2},{i,6}]];
v=Join[v,{v[[9]]-{0,1/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,{5,10}],e[3,10,2],{4,5},e[6,2,7],e[8,11,9],{2,11}},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,Table[v[[6]]+i(v[[4]]-v[[6]])/5,{i,4}],{{0,1/16}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,{6,10},4,1,3],e[6,5,4],e[2,5,11,8],e[7,5,10],{9,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{(i-7/2)/7,3/4},{i,6}]];
v=Join[v,{v[[5]]+{0,1/4},v[[8]]+{0,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,{4,9},11,3,10,4],{5,10},{8,11},{2,9},e[6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

LCF

GraphData[{"Halin",{11,15}},"LCFSignature"]

GraphData[{"Halin",{11,15}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,15}}],Debug->True]//Timing

GraphData[{"Halin",{11,15}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,15}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,15}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,15}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,15}}],TimeConstraint->Infinity,"Results"->All,Debug->Full]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,15}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,15}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{11,15}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,15}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,15}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,15}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,15}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 16}}

GraphData[{"Halin",{11,16}},"StandardName"]

Primary

GraphData[{"Halin",{11,16}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{11,16}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{11,16}},"Planar"]

GraphData[{"Halin",{11,16}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{11,16}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{11,16}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[,Pi/8]]

v=Join[UnitCirclePoints[8,0]];
v=Join[v,Table[v[[5]]+(v[[1]]-v[[5]])i/4,{i,3}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,11,10,9,5],{4,9},{2,11},e[7,10,3],e[6,10,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/7},{i,6}],{{5/8,3/7}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2,11,7],e[4,10,3],e[10,9,8,7,6,5],{2,6},{8,11},{2,9}},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/7},{i,6}],{{1/4,1/7}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,11,5,2,7],e[5,6,7,8,9,10,3],{4,10},{6,11},e[8,2,9]},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,Take[Subdivide[v[[6]],v[[4]],5],{2,-2}]];
v=Join[v,{{v[[9,1]],0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,{6,10},4,1,3],e[2,5,6],e[7,5,8],e[9,11,5],e[10,11],{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Take[Subdivide[v[[6]],v[[4]],5],{2,-2}]];
v=Delete[Join[v,{{v[[9,1]],1/4},{v[[7,1]],1/4}}],{5}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,9,8,7,6,5,3],e[5,11,2,4],{6,11},e[7,2,10,9],{8,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{11,16}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,16}},"LCFSignature"]

GraphData[{"Halin",{11,16}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,16}}],Debug->True]//Timing

GraphData[{"Halin",{11,16}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,16}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,16}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,16}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,16}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,16}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,16}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,16}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{11,16}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,16}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,16}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,16}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,16}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 17}}

GraphData[{"Halin",{11,17}},"StandardName"]

All

GraphData[{"Halin",{11,17}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,17}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,17}},"LCFSignature"]

GraphData[{"Halin",{11,17}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,17}}],Debug->True]//Timing

GraphData[{"Halin",{11,17}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,17}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,17}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,17}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,17}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,}

Matchstick

GraphData[{"Halin",{11,17}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,17}},{"RCN","CN"}]

GraphData[{"Halin",{11,17}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,17}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,17}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,17}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,17}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,17}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,17}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,17}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 18}}

GraphData[{"Halin",{11,18}},"StandardName"]

Primary

GraphData[{"Halin",{11,18}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{11,18}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{11,18}},"Planar"]

GraphData[{"Halin",{11,18}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{11,18}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{11,18}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[,-2Pi/7]]

v=Join[UnitCirclePoints[7]];
v=Join[v,{Mean[v[[{3,5}]]]},Table[{i,v[[6,2]]},{i,-1/2,1/2,1/2}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,11],{7,9},e[6,9,10,11,2],e[4,8,10],e[5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #1

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5],{{0,1/2}}];
v=Join[v,Table[{i,v[[4,2]]},{i,-1/2,1/2,1/4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,11],{5,7},e[3,6,9],e[8,6,10],e[4,7,8,9,10,11,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #2

GraphPlot[RotateGraph[,-2Pi/5]]

v=Join[UnitCirclePoints[5]];
v=Join[v,Table[{i,v[[4,2]]},{i,-1/2,1/2,1/3}],{{0,1/2}}];
v=Join[v,{Mean[v[[{1,9}]]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,11,9],e[4,6,7,8,9,2,11],{5,6},e[7,10,8],{3,10}},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/2,1/2},{-1/4,1/2},{0,1/2},{1/4,1/2},{1/2,1/2},{-1/4,3/4},{0,3/4},{0,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,2],e[8,3,11,10,6],e[4,9,11],{5,9},{7,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,-2Pi/3]]

RegionIntersection[Line[v[[{4,5}]]],Line[{v[[9]],v[[9]]+{0,1}}]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3]];
v=Join[v,Table[v[[6]]+i(v[[4]]-v[[6]])/4,{i,3}],{{((-(Sqrt[3]))/16),(1/16)},{((Sqrt[3])/16),(1/16)}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,11,5,10,6,3],e[6,7,8,9,4],{2,5},{7,10},e[8,11,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{11,18}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,18}},"LCFSignature"]

GraphData[{"Halin",{11,18}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,18}}],Debug->True]//Timing

GraphData[{"Halin",{11,18}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,18}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,18}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance construction

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,18}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

LabelGraph@

s=Sqrt[3]/2;
v={{x,-1/2},{x,1/2},{a,-b},{c,-d},{c,d},{a,b},{1/2,-s},{2,0},{1/2,s},{0,0},{1,0}};
ee=GraphData[{"Halin",{11,18}},"Edges"];
eqn=UnitEdgeEquations[v,ee]//FullSimplify//Union

var=Variables[Subtract@@@eqn]

Length/@{eqn,var}

soln=Solve[eqn,var,Reals]

gs=Select[Graph[Range[11],ee,VertexCoordinates->(v/.#)]&/@soln,UnitDistanceGraphEmbeddingQ]

gs={,,,,,,,,};

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,18}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,18}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,}

Matchstick

GraphData[{"Halin",{11,18}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,18}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{11,18}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,18}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,18}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,18}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,18}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 19}}

GraphData[{"Halin",{11,19}},"StandardName"]

All

GraphData[{"Halin",{11,19}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,19}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,19}},"LCFSignature"]

GraphData[{"Halin",{11,19}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,19}}],Debug->True]//Timing

GraphData[{"Halin",{11,19}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,19}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,19}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,19}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,19}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,19}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,19}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,19}},{"RCN","CN"}]

GraphData[{"Halin",{11,19}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,19}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,19}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,19}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,19}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,19}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,19}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,19}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 20}}

GraphData[{"Halin",{11,20}},"StandardName"]

All

GraphData[{"Halin",{11,20}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,20}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,20}},"LCFSignature"]

GraphData[{"Halin",{11,20}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,20}}],Debug->True]//Timing

GraphData[{"Halin",{11,20}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,20}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,20}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,20}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,20}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

GraphData[{"Halin",{11,20}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,20}},{"RCN","CN"}]

GraphData[{"Halin",{11,20}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,20}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,20}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,20}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,20}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,20}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,20}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,20}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 21}}

GraphData[{"Halin",{11,21}},"StandardName"]

All

GraphData[{"Halin",{11,21}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{11,21}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{11,21}},"LCFSignature"]

GraphData[{"Halin",{11,21}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,21}}],Debug->True]//Timing

GraphData[{"Halin",{11,21}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,21}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,21}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,21}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,21}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{11,21}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{11,21}},{"RCN","CN"}]

GraphData[{"Halin",{11,21}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{11,21}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,21}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{11,21}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{11,21}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,21}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,21}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,21}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {11, 22}}

GraphData[{"Halin",{11,22}},"StandardName"]

Primary

GraphData[{"Halin",{11,22}}]//StyleGraphs[#,ImageSize->Small]&

Default embedding

GraphPlot@GraphData[{"Halin",{11,22}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

All

GraphData[{"Halin",{11,22}},"Graph","All"]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Halin",{11,22}},"EdgeList"]]

Degenerate

GraphData[{"Halin",{11,22}},"Graph","Degenerate"]//StyleGraphs

Planar

GraphData[{"Halin",{11,22}},"Planar"]

GraphData[{"Halin",{11,22}},"Graph","Planar"]//StyleGraphs

Halin

GraphData[{"Halin",{11,22}},"Halin"]

GraphData[{"Halin",{11,22}},"Graph","Halin"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{11,22}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{11,22}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v={{0,0},{1,0},{1,1},{0,1},{1/6,1/3},{2/6,1/3},{3/6,1/3},{4/6,1/3},{5/6,1/3},{1/6,2/3},{2/6,2/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,7,8,2,9,3],{8,9},e[4,10,5,1],e[7,6,5,11,10],{6,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{#,#2-1/8}&@@@{{-1/4,1/4},{1/4,1/4},{-1/4,1/2},{0,1/2},{-1/4,3/4},{-1/4,1},{1/4,1},{1/4,5/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2,11,3],e[4,6,8,9,10],e[11,10,5,7,9],e[6,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Halin",{11,22}},{"RCN","CN"}]

GraphData[{"Halin",{11,22}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

g=RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{11,22}}],"CrossingNumber"->-1]]

RecognizeGraph[g]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"Halin",{11,22}},"Circulant"]

GraphData[{"Halin",{11,22}},"Graph","Circulant"]//StyleGraphs

LCF

GraphData[{"Halin",{11,22}},"LCF"]

GraphData[{"Halin",{11,22}},"LCFSignature"]

GraphData[{"Halin",{11,22}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{11,22}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{11,22}}],Debug->True]//Timing

GraphData[{"Halin",{11,22}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{11,22}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{11,22}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{11,22}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{11,22}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,};

Matchstick

GraphData[{"Halin",{11,22}},"Matchstick"]

GraphData[{"Halin",{11,22}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Halin",{11,22}},"Edges"]]

3D All

GraphData[{"Halin",{11,22}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"Halin",{11,22}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Halin",{11,22}},"Polyhedral"]

GraphData[{"Halin",{11,22}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{11,22}},"Polyhedron"]}]

3D Canonical

GraphData[{"Halin",{11,22}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{11,22}},"Polyhedron","Canonical"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{11,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]

12

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",12]],Dividers->All]

{"Halin", {12, 1}} == "FruchtGraph"

GraphData[{"Halin",{12,1}},"StandardName"]

{"Halin", {12, 2}}

GraphData[{"Halin",{12,2}},"StandardName"]

All

GraphData[{"Halin",{12,2}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,2}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,2}},"LCFSignature"]

GraphData[{"Halin",{12,2}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,2}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,2}}],Debug->True]//Timing

GraphData[{"Halin",{12,2}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,2}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,2}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,2}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,2}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,2}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,2}},{"RCN","CN"}]

GraphData[{"Halin",{12,2}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,2}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,2}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,2}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,2}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,2}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,2}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,2}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 3}}

GraphData[{"Halin",{12,3}},"StandardName"]

Primary

GraphData[{"Halin",{12,3}},"Graph"]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{12,3}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{12,3}},"Planar"]

GraphData[{"Halin",{12,3}},"Graph","Planar"]//StyleGraphs

Halin

GraphData[{"Halin",{12,3}},"Graph","Halin"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,3}},{"RCN","CN"}]

GraphData[{"Halin",{12,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,3}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,3}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,3}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

Tutte embedding construction 7

GraphPlot[RotateGraph[,-4Pi/7]]

v=Join[UnitCirclePoints[7]];
v=Join[v,{{v[[7,1]],v[[6,2]]},{v[[1,1]],v[[6,2]]},{v[[7,1]],v[[5,2]]},{v[[1,1]],v[[5,2]]}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/6},{3/4,1/6},{1/2,1/3},{1/2,1/2},{1/4,2/3},{3/4,2/3},{1/4,5/6},{3/4,5/6}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,4},1,5,6,2],e[5,7,6],e[7,8,10,12,3],e[4,11,9,8],{9,10},{11,12}},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,2/6},{1/4,3/6},{3/4,3/6},{1/4,4/6},{3/4,4/6},{1/4,5/6},{3/4,5/6}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2],e[5,6,7,9,11,12,10,8,6],{4,11},{3,12},{9,10},{7,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Flatten[Table[{i,j/4},{i,{-1/4,1/4}},{j,4}],1],{{0,3/2-1/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,8,2],e[4,5,6,7,12,11,10,9,8],{3,12},{7,11},{6,10},{5,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

LCF

GraphData[{"Halin",{12,3}},"LCFSignature"]

GraphData[{"Halin",{12,3}},"Graph","LCF"]//StyleGraphs

LCF compute

Length[FindHamiltonianCycle[GraphData[{"Halin",{12,3}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Halin",{12,3}}],All])[[All,2]]]

gs=LCFGraph@@@lcf

UnitDistance

GraphData[{"Halin",{12,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,3}}],Debug->True]//Timing

GraphData[{"Halin",{12,3}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,3}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,3}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,3}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,3}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,};

Matchstick

GraphData[{"Halin",{12,3}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,3}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{12,3}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,3}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,3}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,3}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,3}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 4}}

GraphData[{"Halin",{12,4}},"StandardName"]

All

GraphData[{"Halin",{12,4}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,4}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,4}},"LCFSignature"]

GraphData[{"Halin",{12,4}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,4}}],Debug->True]//Timing

GraphData[{"Halin",{12,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,4}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,};

Matchstick

GraphData[{"Halin",{12,4}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,4}},{"RCN","CN"}]

GraphData[{"Halin",{12,4}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,4}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,4}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,4}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,4}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,4}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,4}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,4}}],-1]}]

Graphics3D[poly2=Polyhedron[{#,#2,2#3}&@@@(Normalize/@poly[[1]]),poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 5}}

GraphData[{"Halin",{12,5}},"StandardName"]

All

GraphData[{"Halin",{12,5}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,5}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,5}},"LCFSignature"]

GraphData[{"Halin",{12,5}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,5}}],Debug->True]//Timing

GraphData[{"Halin",{12,5}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,5}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,5}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,5}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,5}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,,};

Matchstick

GraphData[{"Halin",{12,5}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,5}},{"RCN","CN"}]

GraphData[{"Halin",{12,5}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,5}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,5}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,5}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,5}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,5}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,5}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,5}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 6}}

GraphData[{"Halin",{12,6}},"StandardName"]

Primary

GraphData[{"Halin",{12,6}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{12,6}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{12,6}},"Planar"]

GraphData[{"Halin",{12,6}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,6}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,6}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[,-Pi/8]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

h=v[[4,2]]//FullSimplify

z=Mean[v[[{5,6}]]][[2]]//FullSimplify

v=Join[UnitCirclePoints[5],{{-1/2,h},{-1/4,h},{0,h},{1/2,h},{-1/2,z},{-1/4,z},{1/2,z}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,12,9],e[5,10,6,11,7],{2,12},{10,11},{3,8},e[4,6,7,8,9,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/6,1/2},{i,5}],{{5/6,1/4},{5/6,3/4}}];
AppendTo[v,Mean[v[[{8,10}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4],e[2,10,9,11,3],e[5,6,7,8,9,12],e[8,12,10],{4,6},{7,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{#,1/4}&/@Subdivide[-1/2,1/2,5],Table[{0,i},{i,1/2,1,1/4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,9,2],e[9,12,11,10,6],e[12,3,4],{5,11},{7,10},{10,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}&/@Subdivide[-1/2,1/2,5],Table[{0,i},{i,1/2,1,1/4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,{4,9},2],e[3,12,11,10,7],{8,12},{9,3},e[5,10,6],{4,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{12,6}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,6}},"LCFSignature"]

GraphData[{"Halin",{12,6}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,6}}],Debug->True]//Timing

GraphData[{"Halin",{12,6}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,6}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,6}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,6}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,6}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,};

Matchstick

GraphData[{"Halin",{12,6}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,6}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{12,6}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,6}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,6}},"Polyhedron"]}]

3D Polyhedron Canonical

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,6}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,6}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 7}}

GraphData[{"Halin",{12,7}},"StandardName"]

All

GraphData[{"Halin",{12,7}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,7}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,7}},"LCFSignature"]

GraphData[{"Halin",{12,7}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,7}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,7}}],Debug->True]//Timing

GraphData[{"Halin",{12,7}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,7}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,7}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,7}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,7}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

GraphData[{"Halin",{12,7}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,7}},{"RCN","CN"}]

GraphData[{"Halin",{12,7}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,7}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,7}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,7}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,7}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,7}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,7}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,7}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 8}}

GraphData[{"Halin",{12,8}},"StandardName"]

All

GraphData[{"Halin",{12,8}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,8}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,8}},"LCFSignature"]

GraphData[{"Halin",{12,8}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,8}}],Debug->True]//Timing

GraphData[{"Halin",{12,8}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,8}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,8}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,8}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,8}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,8}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,8}},{"RCN","CN"}]

GraphData[{"Halin",{12,8}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,8}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,8}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,8}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,8}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,8}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,8}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,8}}],1]}]

gn={"Halin",{12,8}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 9}}

GraphData[{"Halin",{12,9}},"StandardName"]

All

GraphData[{"Halin",{12,9}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,9}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,9}},"LCFSignature"]

GraphData[{"Halin",{12,9}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,9}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,9}}],Debug->True]//Timing

GraphData[{"Halin",{12,9}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,9}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,9}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,9}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,9}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,};

Matchstick

GraphData[{"Halin",{12,9}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,9}},{"RCN","CN"}]

GraphData[{"Halin",{12,9}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,9}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,9}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,9}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,9}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,9}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,9}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,9}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 10}}

GraphData[{"Halin",{12,10}},"StandardName"]

All

GraphData[{"Halin",{12,10}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,10}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,10}},"LCFSignature"]

GraphData[{"Halin",{12,10}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,10}}],Debug->True]//Timing

GraphData[{"Halin",{12,10}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,10}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,10}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,10}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,10}},{"RCN","CN"}]

GraphData[{"Halin",{12,10}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,10}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,10}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,10}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,10}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,10}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,10}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,10}}],1]}]

gn={"Halin",{12,10}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];
v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 11}}

GraphData[{"Halin",{12,11}},"StandardName"]

Primary

GraphData[{"Halin",{12,11}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{12,11}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{12,11}},"Planar"]

GraphData[{"Halin",{12,11}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,11}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,11}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[5]];
v=Join[v,{#,v[[4,2]]}&/@Subdivide[-1/2,1/2,4]];
v=Join[v,Take[Subdivide[v[[5]],v[[6]],3],{2,-2}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,10],e[5,11,12,6],e[4,6,7,8,9,10,2],e[8,3,9],{4,11},{12,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{0,1},{1,1}},Table[{i/7,1/2},{i,6}],Table[{i/7,1/4},{i,3,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,4,3,1,12,9,10,4],{2,10},e[1,5,3],e[5,6,7,8,9],e[6,11,12],{7,11},{8,12}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction #3 1

GraphPlot[RotateGraph[]]

v[[5,1]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{#,1/2}&/@Subdivide[-1/2,1/2,5],{#,3/4}&/@{-3/10,0,3/10}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,{4,9},2],e[4,10,3,11,6],{5,10},e[7,11,12,8],{12,9}},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}&/@Subdivide[-1/2,1/2,5],Table[{0,i},{i,1/2,1,1/4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,{4,9},2],e[9,12,8],e[7,10,11,12,3],e[4,11,5],{6,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{12,11}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,11}},"LCFSignature"]

GraphData[{"Halin",{12,11}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,11}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,11}}],Debug->True]//Timing

GraphData[{"Halin",{12,11}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,11}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,11}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,11}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,11}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,11}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,11}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"Halin",{12,11}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,11}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,11}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,11}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,11}}],1]}]

gn={"Halin",{12,11}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 12}}

GraphData[{"Halin",{12,12}},"StandardName"]

All

GraphData[{"Halin",{12,12}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,12}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,12}},"LCFSignature"]

GraphData[{"Halin",{12,12}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,12}}],Debug->True]//Timing

GraphData[{"Halin",{12,12}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,12}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,12}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,12}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,12}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,};

Matchstick

GraphData[{"Halin",{12,12}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,12}},{"RCN","CN"}]

GraphData[{"Halin",{12,12}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,12}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,12}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,12}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,12}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,12}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,12}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,12}}],1]}]

gn={"Halin",{12,12}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 13}}

GraphData[{"Halin",{12,13}},"StandardName"]

All

GraphData[{"Halin",{12,13}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,13}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,13}},"LCFSignature"]

GraphData[{"Halin",{12,13}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,13}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,13}}],Debug->True]//Timing

GraphData[{"Halin",{12,13}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,13}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,13}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,13}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,13}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,,};

Matchstick

GraphData[{"Halin",{12,13}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,13}},{"RCN","CN"}]

GraphData[{"Halin",{12,13}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,13}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,13}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,13}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,13}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,13}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,13}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,13}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 14}}

GraphData[{"Halin",{12,14}},"StandardName"]

All

GraphData[{"Halin",{12,14}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,14}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,14}},"LCFSignature"]

GraphData[{"Halin",{12,14}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,14}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,14}}],Debug->True]//Timing

GraphData[{"Halin",{12,14}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,14}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,14}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,14}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,14}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,14}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,14}},{"RCN","CN"}]

GraphData[{"Halin",{12,14}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,14}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,14}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,14}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,14}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,14}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,14}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,14}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 15}}

GraphData[{"Halin",{12,15}},"StandardName"]

All

GraphData[{"Halin",{12,15}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,15}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,15}},"LCFSignature"]

GraphData[{"Halin",{12,15}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,15}}],Debug->True]//Timing

GraphData[{"Halin",{12,15}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,15}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,15}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,15}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,15}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,15}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,15}},{"RCN","CN"}]

GraphData[{"Halin",{12,15}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,15}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,15}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,15}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,15}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,15}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,15}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,15}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 16}}

GraphData[{"Halin",{12,16}},"StandardName"]

All

GraphData[{"Halin",{12,16}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,16}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,16}},"LCFSignature"]

GraphData[{"Halin",{12,16}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,16}}],Debug->True]//Timing

GraphData[{"Halin",{12,16}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,16}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,16}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,16}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,16}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

GraphData[{"Halin",{12,16}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,16}},{"RCN","CN"}]

GraphData[{"Halin",{12,16}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,16}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,16}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D All

GraphData[{"Halin",{12,16}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,16}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,16}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,16}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,16}}],1]}]

gn={"Halin",{12,16}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 17}}

GraphData[{"Halin",{12,17}},"StandardName"]

All

GraphData[{"Halin",{12,17}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,17}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,17}},"LCFSignature"]

GraphData[{"Halin",{12,17}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,17}}],Debug->True]//Timing

GraphData[{"Halin",{12,17}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,17}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,17}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,17}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,17}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,17}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,17}},{"RCN","CN"}]

GraphData[{"Halin",{12,17}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,17}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,17}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,17}},"Edges"]]

3D All

GraphData[{"Halin",{12,17}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,17}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,17}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,17}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,17}}],1]}]

gn={"Halin",{12,17}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 18}}

GraphData[{"Halin",{12,18}},"StandardName"]

All

GraphData[{"Halin",{12,18}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,18}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,18}},"LCFSignature"]

GraphData[{"Halin",{12,18}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,18}}],Debug->True]//Timing

GraphData[{"Halin",{12,18}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,18}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,18}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,18}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,18}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

GraphData[{"Halin",{12,18}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,18}},{"RCN","CN"}]

GraphData[{"Halin",{12,18}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,18}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,18}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,18}},"Edges"]]

3D All

GraphData[{"Halin",{12,18}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,18}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,18}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,18}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,18}}],1]}]

gn={"Halin",{12,18}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,Reverse/@f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 19}}

GraphData[{"Halin",{12,19}},"StandardName"]

All

GraphData[{"Halin",{12,19}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,19}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,19}},"LCFSignature"]

GraphData[{"Halin",{12,19}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,19}}],Debug->True]//Timing

GraphData[{"Halin",{12,19}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,19}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,19}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,19}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,19}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,19}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,19}},{"RCN","CN"}]

GraphData[{"Halin",{12,19}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,19}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,19}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,19}},"Edges"]]

3D All

GraphData[{"Halin",{12,19}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,19}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,19}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,19}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,19}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 20}}

GraphData[{"Halin",{12,20}},"StandardName"]

All

GraphData[{"Halin",{12,20}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,20}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,20}},"LCFSignature"]

GraphData[{"Halin",{12,20}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,20}}],Debug->True]//Timing

GraphData[{"Halin",{12,20}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,20}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,20}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,20}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,20}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,,,};

Matchstick

GraphData[{"Halin",{12,20}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,20}},{"RCN","CN"}]

GraphData[{"Halin",{12,20}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,20}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,20}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,20}},"Edges"]]

3D All

GraphData[{"Halin",{12,20}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,20}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,20}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,20}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,20}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 21}}

GraphData[{"Halin",{12,21}},"StandardName"]

All

GraphData[{"Halin",{12,21}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,21}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,21}},"LCFSignature"]

GraphData[{"Halin",{12,21}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,21}}],Debug->True]//Timing

GraphData[{"Halin",{12,21}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,21}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,21}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,21}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,21}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

GraphData[{"Halin",{12,21}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,21}},{"RCN","CN"}]

GraphData[{"Halin",{12,21}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,21}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,21}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,21}},"Edges"]]

3D All

GraphData[{"Halin",{12,21}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,21}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,21}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,21}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,21}}],1]}]

gn={"Halin",{12,21}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->21])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 22}}

GraphData[{"Halin",{12,22}},"StandardName"]

All

GraphData[{"Halin",{12,22}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,22}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,22}},"LCFSignature"]

GraphData[{"Halin",{12,22}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,22}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,22}}],Debug->True]//Timing

GraphData[{"Halin",{12,22}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,22}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,22}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,22}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,22}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,22}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,22}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,22}},{"RCN","CN"}]

GraphData[{"Halin",{12,22}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,22}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,22}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,22}},"Edges"]]

3D All

GraphData[{"Halin",{12,22}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,22}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,22}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,22}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,22}}],1]}]

gn={"Halin",{12,22}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->22])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 23}}

GraphData[{"Halin",{12,23}},"StandardName"]

All

GraphData[{"Halin",{12,23}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,23}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,23}},"LCFSignature"]

GraphData[{"Halin",{12,23}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,23}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,23}}],Debug->True]//Timing

GraphData[{"Halin",{12,23}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,23}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,23}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,23}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,23}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

GraphData[{"Halin",{12,23}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,23}},{"RCN","CN"}]

GraphData[{"Halin",{12,23}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,23}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,23}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,23}},"Edges"]]

3D All

GraphData[{"Halin",{12,23}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,23}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,23}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,23}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,23}}],1]}]

gn={"Halin",{12,23}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 24}}

GraphData[{"Halin",{12,24}},"StandardName"]

All

GraphData[{"Halin",{12,24}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,24}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,24}},"LCFSignature"]

GraphData[{"Halin",{12,24}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,24}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,24}}],Debug->True]//Timing

GraphData[{"Halin",{12,24}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,24}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,24}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,24}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,24}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,24}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,24}},{"RCN","CN"}]

GraphData[{"Halin",{12,24}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,24}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,24}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,24}},"Edges"]]

3D All

GraphData[{"Halin",{12,24}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,24}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,24}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,24}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,24}}],1]}]

gn={"Halin",{12,24}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 25}}

GraphData[{"Halin",{12,25}},"StandardName"]

All

GraphData[{"Halin",{12,25}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,25}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,25}},"LCFSignature"]

GraphData[{"Halin",{12,25}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,25}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,25}}],Debug->True]//Timing

GraphData[{"Halin",{12,25}},"Graph","UnitDistance"]//StyleGraphs

Matchstick

GraphData[{"Halin",{12,25}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,25}},{"RCN","CN"}]

GraphData[{"Halin",{12,25}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,25}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,25}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,25}},"Edges"]]

3D All

GraphData[{"Halin",{12,25}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,25}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,25}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,25}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,25}}],1]}]

gn={"Halin",{12,25}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

g1=Graph[Range[10],EdgeList[g],VertexCoordinates->ReplacePart[v,7->v[[7]]-{0,0,1}]]

v=GraphEmbedding[g1];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 26}} == {"Wheel", 12}

GraphData[{"Halin",{12,26}},"StandardName"]

{"Halin", {12, 27}}

GraphData[{"Halin",{12,27}},"StandardName"]

All

GraphData[{"Halin",{12,27}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,27}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,27}},"LCFSignature"]

GraphData[{"Halin",{12,27}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,27}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,27}}],Debug->True]//Timing

GraphData[{"Halin",{12,27}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,27}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,27}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,27}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,27}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,27}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,27}},{"RCN","CN"}]

GraphData[{"Halin",{12,27}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,27}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,27}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,27}},"Edges"]]

3D All

GraphData[{"Halin",{12,27}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,27}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,27}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,27}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,27}}],1]}]

gn={"Halin",{12,27}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 28}}

GraphData[{"Halin",{12,28}},"StandardName"]

All

GraphData[{"Halin",{12,28}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,28}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,28}},"LCFSignature"]

GraphData[{"Halin",{12,28}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,28}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,28}}],Debug->True]//Timing

GraphData[{"Halin",{12,28}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,28}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,28}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,28}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,28}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,28}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,28}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,28}},{"RCN","CN"}]

GraphData[{"Halin",{12,28}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,28}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,28}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,28}},"Edges"]]

3D All

GraphData[{"Halin",{12,28}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,28}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,28}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,28}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,28}}],1]}]

gn={"Halin",{12,28}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 29}}

GraphData[{"Halin",{12,29}},"StandardName"]

All

GraphData[{"Halin",{12,29}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,29}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,29}},"LCFSignature"]

GraphData[{"Halin",{12,29}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,29}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,29}}],Debug->True]//Timing

GraphData[{"Halin",{12,29}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,29}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,29}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,29}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,29}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,};

Matchstick

GraphData[{"Halin",{12,29}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,29}},{"RCN","CN"}]

GraphData[{"Halin",{12,29}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,29}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,29}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,29}},"Edges"]]

3D All

GraphData[{"Halin",{12,29}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,29}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,29}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,29}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,29}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 30}}

GraphData[{"Halin",{12,30}},"StandardName"]

All

GraphData[{"Halin",{12,30}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,30}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,30}},"LCFSignature"]

GraphData[{"Halin",{12,30}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,30}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,30}}],Debug->True]//Timing

GraphData[{"Halin",{12,30}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,30}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,30}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,30}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,30}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,30}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,30}},{"RCN","CN"}]

GraphData[{"Halin",{12,30}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,30}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,30}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,30}},"Edges"]]

3D All

GraphData[{"Halin",{12,30}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,30}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,30}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,30}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,30}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 31}}

GraphData[{"Halin",{12,31}},"StandardName"]

All

GraphData[{"Halin",{12,31}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,31}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,31}},"LCFSignature"]

GraphData[{"Halin",{12,31}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,31}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,31}}],Debug->True]//Timing

GraphData[{"Halin",{12,31}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,31}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,31}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,31}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,31}}],TimeConstraint->310,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

GraphData[{"Halin",{12,31}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,31}},{"RCN","CN"}]

GraphData[{"Halin",{12,31}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,31}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,31}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,31}},"Edges"]]

3D All

GraphData[{"Halin",{12,31}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,31}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,31}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,31}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,31}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 32}}

GraphData[{"Halin",{12,32}},"StandardName"]

All

GraphData[{"Halin",{12,32}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,32}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,32}},"LCFSignature"]

GraphData[{"Halin",{12,32}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,32}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,32}}],Debug->True]//Timing

GraphData[{"Halin",{12,32}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,32}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,32}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,32}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,32}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,32}}],TimeConstraint->320,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,32}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,32}},{"RCN","CN"}]

GraphData[{"Halin",{12,32}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,32}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,32}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,32}},"Edges"]]

3D All

GraphData[{"Halin",{12,32}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,32}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,32}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,32}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,32}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 33}}

GraphData[{"Halin",{12,33}},"StandardName"]

All

GraphData[{"Halin",{12,33}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,33}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,33}},"LCFSignature"]

GraphData[{"Halin",{12,33}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,33}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,33}}],Debug->True]//Timing

GraphData[{"Halin",{12,33}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,33}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,33}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,33}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,33}}],TimeConstraint->330,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,33}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,33}},{"RCN","CN"}]

GraphData[{"Halin",{12,33}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,33}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,33}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,33}},"Edges"]]

3D All

GraphData[{"Halin",{12,33}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,33}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,33}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,33}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,33}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 34}}

GraphData[{"Halin",{12,34}},"StandardName"]

All

GraphData[{"Halin",{12,34}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,34}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,34}},"LCFSignature"]

GraphData[{"Halin",{12,34}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,34}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,34}}],Debug->True]//Timing

GraphData[{"Halin",{12,34}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,34}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,34}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,34}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,34}}],TimeConstraint->340,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,};

Matchstick

GraphData[{"Halin",{12,34}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,34}},{"RCN","CN"}]

GraphData[{"Halin",{12,34}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,34}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,34}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,34}},"Edges"]]

3D All

GraphData[{"Halin",{12,34}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,34}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,34}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,34}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,34}}],1]}]

gn={"Halin",{12,34}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 35}}

GraphData[{"Halin",{12,35}},"StandardName"]

All

GraphData[{"Halin",{12,35}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,35}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,35}},"LCFSignature"]

GraphData[{"Halin",{12,35}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,35}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,35}}],Debug->True]//Timing

GraphData[{"Halin",{12,35}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,35}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,35}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,35}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,35}}],TimeConstraint->350,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

GraphData[{"Halin",{12,35}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,35}},{"RCN","CN"}]

GraphData[{"Halin",{12,35}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,35}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,35}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,35}},"Edges"]]

3D All

GraphData[{"Halin",{12,35}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,35}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,35}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,35}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,35}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 36}}

GraphData[{"Halin",{12,36}},"StandardName"]

All

GraphData[{"Halin",{12,36}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,36}},"Graph","Halin"]//StyleGraphs

Planar

GraphData[{"Halin",{12,36}},"Planar"]

GraphData[{"Halin",{12,36}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,36}},{"RCN","CN"}]

GraphData[{"Halin",{12,36}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,36}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,36}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,36}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

Tutte embedding construction 10

GraphPlot[RotateGraph[,Pi/5]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[,-Pi/2]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/9,1/2},{i,8}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,9,10,11,12,2],e[5,4,6],e[7,4,8],e[12,3,11],e[10,3,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{(i-9/2)/9,1/2},{i,8}],{{0,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,9,10,11,2],e[4,3,5],e[6,12,3],e[7,12,8],e[9,12,10],{3,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{(i-9/2)/9,1/2},{i,8}],{{0,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,9,10,11,2],e[4,3,5],e[6,3,12,7],e[8,12,9],e[10,12,11]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

LCF

GraphData[{"Halin",{12,36}},"LCFSignature"]

GraphData[{"Halin",{12,36}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,36}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,36}}],Debug->True]//Timing

GraphData[{"Halin",{12,36}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,36}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,36}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,36}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,36}}],TimeConstraint->360,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,36}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,36}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Halin",{12,36}},"Edges"]]

3D All

GraphData[{"Halin",{12,36}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,36}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,36}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,36}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,36}}],1]}]

gn={"Halin",{12,36}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 37}}

GraphData[{"Halin",{12,37}},"StandardName"]

All

GraphData[{"Halin",{12,37}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,37}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,37}},"LCFSignature"]

GraphData[{"Halin",{12,37}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,37}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,37}}],Debug->True]//Timing

GraphData[{"Halin",{12,37}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,37}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,37}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,37}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,37}}],TimeConstraint->370,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,37}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,37}},{"RCN","CN"}]

GraphData[{"Halin",{12,37}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,37}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,37}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,37}},"Edges"]]

3D All

GraphData[{"Halin",{12,37}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,37}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,37}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,37}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,37}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 38}}

GraphData[{"Halin",{12,38}},"StandardName"]

All

GraphData[{"Halin",{12,38}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,38}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,38}},"LCFSignature"]

GraphData[{"Halin",{12,38}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,38}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,38}}],Debug->True]//Timing

GraphData[{"Halin",{12,38}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,38}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,38}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,38}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,38}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,38}}],TimeConstraint->380,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,38}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,38}},{"RCN","CN"}]

GraphData[{"Halin",{12,38}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,38}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,38}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,38}},"Edges"]]

3D All

GraphData[{"Halin",{12,38}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,38}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,38}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,38}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,38}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 39}}

GraphData[{"Halin",{12,39}},"StandardName"]

All

GraphData[{"Halin",{12,39}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,39}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,39}},"LCFSignature"]

GraphData[{"Halin",{12,39}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,39}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,39}}],Debug->True]//Timing

GraphData[{"Halin",{12,39}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,39}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,39}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,39}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,39}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,39}}],TimeConstraint->390,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,39}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,39}},{"RCN","CN"}]

GraphData[{"Halin",{12,39}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,39}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,39}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,39}},"Edges"]]

3D All

GraphData[{"Halin",{12,39}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,39}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,39}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,39}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,39}}],1]}]

gn={"Halin",{12,39}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 40}}

GraphData[{"Halin",{12,40}},"StandardName"]

All

GraphData[{"Halin",{12,40}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,40}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,40}},"LCFSignature"]

GraphData[{"Halin",{12,40}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,40}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,40}}],Debug->True]//Timing

GraphData[{"Halin",{12,40}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,40}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,40}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,40}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,40}}],TimeConstraint->400,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,};

Matchstick

GraphData[{"Halin",{12,40}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,40}},{"RCN","CN"}]

GraphData[{"Halin",{12,40}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,40}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,40}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,40}},"Edges"]]

3D All

GraphData[{"Halin",{12,40}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,40}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,40}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,40}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,40}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 41}}

GraphData[{"Halin",{12,41}},"StandardName"]

Primary

GraphData[{"Halin",{12,41}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{12,41}},"Graph","All"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Cubic",{12,29}},"Edges"]

v=Join[{{0,0},{1/3,0},{2/3,0},{1,0},{1,1},{1/2,1},{0,1}},Table[{i/6,1/2},{i,5}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7],e[4,12,5],e[8,9,10,11,12],{2,9},{3,11},{6,10}},VertexCoordinates->v,VertexLabels->Automatic]

Planar

GraphData[{"Halin",{12,41}},"Planar"]

GraphData[{"Halin",{12,41}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,41}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,41}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 7

GraphPlot[RotateGraph[,2Pi/7]]

v=Join[UnitCirclePoints[7]];
v=Join[v,Take[Subdivide[v[[6]],v[[2]],6],{2,-2}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,11],{7,9},e[6,8,9,10,11,12,2],{5,8},{3,12},{4,10}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #1

GraphPlot[RotateGraph[,-4Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5]];
v=Join[v,Table[{i,h},{i,-1/2,1/2,1/4}]];
v=Join[v,Mean[v[[#]]]&/@{{5,6},{1,10}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,12,10],e[6,11,5],{7,11},{9,12},{3,8},e[4,6,7,8,9,10,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #2

GraphPlot[RotateGraph[,2Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5]];
v=Join[v,Table[{i,h},{i,-1/2,1/2,1/3}]];
v=Join[v,Take[Subdivide[v[[5]],v[[6]],3],{2,-2}]];
v=Join[v,{Mean[v[[{7,10}]]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,9],e[6,11,10,5],e[10,12,7],{11,12},e[4,6,7,8,9,2],{3,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/6,1/2},{i,5}],{{1/6,1/4},{1/6,3/4}}];
v=Join[v,{Mean[v[[{11,7}]]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,10,5,11,4],e[11,12,7],{6,12},{10,8},e[2,9,3],e[{5,9}]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{0,i},{i,1/4,5/4,1/4}],{{1/2,1/4},{1/2,1/2},{1/4,1/2},{1/8,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,9,2],e[4,5,6,7,8,3],e[9,10,8],e[11,12,7],e[5,11,10],{6,12}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{12,41}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,41}},"LCFSignature"]

GraphData[{"Halin",{12,41}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,41}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,41}}],Debug->True]//Timing

GraphData[{"Halin",{12,41}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,41}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,41}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,41}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,41}}],TimeConstraint->410,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,};

Matchstick

GraphData[{"Halin",{12,41}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,41}},{"RCN","CN"}]

GraphData[{"Halin",{12,41}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,41}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,41}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,41}},"Edges"]]

3D All

GraphData[{"Halin",{12,41}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,41}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,41}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,41}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,41}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 42}}

GraphData[{"Halin",{12,42}},"StandardName"]

All

GraphData[{"Halin",{12,42}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,42}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,42}},"LCFSignature"]

GraphData[{"Halin",{12,42}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,42}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,42}}],Debug->True]//Timing

GraphData[{"Halin",{12,42}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,42}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,42}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,42}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,42}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,42}}],TimeConstraint->420,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,42}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,42}},{"RCN","CN"}]

GraphData[{"Halin",{12,42}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,42}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,42}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,42}},"Edges"]]

3D All

GraphData[{"Halin",{12,42}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,42}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,42}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,42}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,42}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 43}}

GraphData[{"Halin",{12,43}},"StandardName"]

All

GraphData[{"Halin",{12,43}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,43}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,43}},"LCFSignature"]

GraphData[{"Halin",{12,43}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,43}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,43}}],Debug->True]//Timing

GraphData[{"Halin",{12,43}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,43}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,43}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,43}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,43}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,43}}],TimeConstraint->430,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,43}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,43}},{"RCN","CN"}]

GraphData[{"Halin",{12,43}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,43}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,43}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,43}},"Edges"]]

3D All

GraphData[{"Halin",{12,43}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,43}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,43}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,43}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,43}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 44}}

GraphData[{"Halin",{12,44}},"StandardName"]

All

GraphData[{"Halin",{12,44}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,44}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,44}},"LCFSignature"]

GraphData[{"Halin",{12,44}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,44}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,44}}],Debug->True]//Timing

GraphData[{"Halin",{12,44}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,44}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,44}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,44}}],MaxIterations->50000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,44}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,44}}],TimeConstraint->440,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,44}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,44}},{"RCN","CN"}]

GraphData[{"Halin",{12,44}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,44}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,44}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,44}},"Edges"]]

3D All

GraphData[{"Halin",{12,44}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,44}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,44}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,44}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,44}}],1]}]

gn={"Halin",{12,44}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 45}}

GraphData[{"Halin",{12,45}},"StandardName"]

All

GraphData[{"Halin",{12,45}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,45}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,45}},"LCFSignature"]

GraphData[{"Halin",{12,45}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,45}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,45}}],Debug->True]//Timing

GraphData[{"Halin",{12,45}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,45}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,45}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,45}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,45}}],TimeConstraint->450,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,};

Matchstick

GraphData[{"Halin",{12,45}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,45}},{"RCN","CN"}]

GraphData[{"Halin",{12,45}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,45}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,45}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,45}},"Edges"]]

3D All

GraphData[{"Halin",{12,45}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,45}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,45}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,45}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,45}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 46}}

GraphData[{"Halin",{12,46}},"StandardName"]

All

GraphData[{"Halin",{12,46}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,46}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,46}},"LCFSignature"]

GraphData[{"Halin",{12,46}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,46}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,46}}],Debug->True]//Timing

GraphData[{"Halin",{12,46}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,46}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,46}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,46}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,46}}],TimeConstraint->460,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,46}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,46}},{"RCN","CN"}]

GraphData[{"Halin",{12,46}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,46}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,46}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,46}},"Edges"]]

3D All

GraphData[{"Halin",{12,46}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,46}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,46}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,46}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,46}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 47}}

GraphData[{"Halin",{12,47}},"StandardName"]

All

GraphData[{"Halin",{12,47}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,47}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,47}},"LCFSignature"]

GraphData[{"Halin",{12,47}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,47}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,47}}],Debug->True]//Timing

GraphData[{"Halin",{12,47}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,47}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,47}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,47}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,47}}],TimeConstraint->470,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,};

Matchstick

GraphData[{"Halin",{12,47}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,47}},{"RCN","CN"}]

GraphData[{"Halin",{12,47}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,47}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,47}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,47}},"Edges"]]

3D All

GraphData[{"Halin",{12,47}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,47}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,47}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,47}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,47}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 48}}

GraphData[{"Halin",{12,48}},"StandardName"]

Primary

GraphData[{"Halin",{12,48}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{12,48}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{12,48}},"Planar"]

GraphData[{"Halin",{12,48}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,48}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,48}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[,-5Pi/8]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[,2Pi/5]]

h=v[[4,2]]//FullSimplify

v=Join[UnitCirclePoints[5],Table[{i,h},{i,-1/2,1/2,1/4}]];
AppendTo[v,Mean[v[[{5,6}]]]];
AppendTo[v,Mean[v[[{8,3}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,5},1,10],e[5,11,6],e[11,4,6,7,8,9,10,2],e[9,3,12,8],{7,12}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/7,1/2},{i,6}],{{1/7,1/4},{4/7,1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,12,9],e[1,11,5,4],e[5,6,7,8,9,10],e[2,10,3],{6,11},e[7,12,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},5]];
v=Join[v,Table[v[[i]]+{0,1/4},{i,6,8}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,{4,9},2],e[4,3,11,7],e[5,10,11,12,9],{6,10},{8,12}},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},5]];
v=Join[v,{v[[5]]+{0,1/2}},v[[7]]+{0,#}&/@{1/4,1/2}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,{4,9},12,10,4],e[3,12,11,8],{7,11},e[5,10,6],{2,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{12,48}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,48}},"LCFSignature"]

GraphData[{"Halin",{12,48}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,48}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,48}}],Debug->True]//Timing

GraphData[{"Halin",{12,48}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,48}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,48}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,48}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,48}}],TimeConstraint->480,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

GraphData[{"Halin",{12,48}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,48}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Halin",{12,48}},"Edges"]]

3D All

GraphData[{"Halin",{12,48}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,48}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,48}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,48}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,48}}],-1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 49}}

GraphData[{"Halin",{12,49}},"StandardName"]

All

GraphData[{"Halin",{12,49}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{12,49}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,49}},"LCFSignature"]

GraphData[{"Halin",{12,49}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,49}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,49}}],Debug->True]//Timing

GraphData[{"Halin",{12,49}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,49}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,49}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,49}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,49}}],TimeConstraint->490,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{12,49}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{12,49}},{"RCN","CN"}]

GraphData[{"Halin",{12,49}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,49}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{12,49}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{12,49}},"Edges"]]

3D All

GraphData[{"Halin",{12,49}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,49}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,49}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,49}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,49}}],1]}]

Graphics3D[poly2=Polyhedron[Normalize/@poly[[1]],poly[[2]]]]

(can=FindCanonicalPolyhedron[poly2,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {12, 50}}

GraphData[{"Halin",{12,50}},"StandardName"]

Primary

GraphData[{"Halin",{12,50}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{12,50}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{12,50}},"Planar"]

GraphData[{"Halin",{12,50}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{12,50}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{12,50}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

Tutte embedding construction 8

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

v={#,Switch[#2,1/2,1/3,3/4,2/3,_,#2]}&@@@Join[{{0,0},{1,0},{1,1},{0,1}},Table[{i/7,1/2},{i,6}],{{1/7,3/4},{6/7,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,11,4,7],e[8,3,12,10,2],e[5,6,7,8,9,10],{9,12},{6,11}},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/7,1/4},{i,6}],{{2/7,1/2},{1/7,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,9,10,2],{3,10},e[5,12,4,9],e[12,11,6],{8,12},{7,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[UnitCirclePoints[3],CirclePoints[1/3,3]];
v=Join[v,Table[v[[6]]+i(v[[4]]-v[[6]])/5,{i,4}]];
v=Join[v,Table[v[[5]]+i(Mean[v[[{8,9}]]]-v[[5]])/3,{i,2}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,9,10,4],{3,6},e[2,5,11,12,9],{8,12},e[7,11,10]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{12,50}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{12,50}},"LCFSignature"]

GraphData[{"Halin",{12,50}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{12,50}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{12,50}}],Debug->True]//Timing

GraphData[{"Halin",{12,50}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{12,50}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{12,50}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{12,50}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{12,50}}],TimeConstraint->500,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,,};

Matchstick

GraphData[{"Halin",{12,50}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{12,50}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Halin",{12,50}},"Edges"]]

3D All

GraphData[{"Halin",{12,50}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{12,50}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{12,50}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{12,50}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{12,50}}],1]}]

gn={"Halin",{12,50}};
g=Graph3D[Range@GraphData[gn,"V"],GraphData[gn,"Edges"],GraphLayout->"HighDimensionalEmbedding",VertexLabels->Automatic]

v=GraphEmbedding[g];

v0=Mean[v];
f=GraphData[gn,"FaceIndices"];
Graphics3D[{FaceForm[Green,Red],poly=Polyhedron[(#-v0)&/@v,f]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

13

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",13]],Dividers->All]

{"Halin", {13, 51}} == {"Wheel", 13}

GraphData[{"Halin",{13,51}},"StandardName"]

14

TextGrid[Sort[{GraphData[#,"NotationRules","Halin"],#}&/@GraphData["Halin",14]],Dividers->All]

{"Halin", {14, 4}}

GraphData[{"Halin",{14,4}},"StandardName"]

Primary

GraphData[{"Halin",{14,4}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{14,4}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{14,4}},"Planar"]

GraphData[{"Halin",{14,4}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{14,4}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{14,4}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,}

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[,2Pi/8]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[,Pi/2]]

v=Join[{{0,0},{1,0},{1,1},{0,1},{1/4,1/7},{3/4,1/7},{1/4,2/7},{3/4,2/7},{1/2,3/7},{1/2,4/7},{1/4,5/7},{3/4,5/7},{1/4,6/7},{3/4,6/7}}]/.{1/4->1/3,3/4->2/3};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2],e[4,13,14,3],e[13,11,10,9,7,5],e[6,8,9],e[10,12,14],{11,12},{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/7},{2/3,1/7},{1/3,2/7},{2/3,2/7},{1/3,3/7},{2/3,3/7},{1/2,4/7},{1/2,5/7},{1/3,6/7},{2/3,6/7}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,2],e[4,13,14,3],e[13,12,14],e[5,7,9,11,10,8,6],{11,12},{9,10},{7,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}},Flatten[Table[{i,j/7},{i,{1/3,2/3}},{j,4}],1],{{1/2,5/7},{1/2,6/7}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,13,12,11,10,9,2],e[4,14,3],{13,14},{8,12},{7,11},{6,10},{5,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Flatten[Table[{i,j/5},{i,{-1/4,1/4}},{j,5}],1],{{0,3/2-1/8}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,9,2],e[4,5,6,7,8,13,12,11,10,9],{5,10},{6,11},{7,12},e[8,14,13],{3,14}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{14,4}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,4}},"LCFSignature"]

GraphData[{"Halin",{14,4}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,4}}],Debug->True]//Timing

GraphData[{"Halin",{14,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,4}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,,};

Matchstick

GraphData[{"Halin",{14,4}},"Graph","Matchstick"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{14,4}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Halin",{14,4}},"Edges"]]

3D All

GraphData[{"Halin",{14,4}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,4}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,4}},"Polyhedron"]}]

3D Canonical

GraphData[{"Halin",{14,4}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,4}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,4}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->5000,PrecisionGoal->20])//Timing

(can2=FindCanonicalPolyhedron[can,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can2,Yellow,Sphere[]}]

SimplePolyhedronQ[can2]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can2]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {14, 13}}

GraphData[{"Halin",{14,13}},"StandardName"]

All

GraphData[{"Halin",{14,13}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,13}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,13}},"LCFSignature"]

GraphData[{"Halin",{14,13}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,13}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,13}}],Debug->True]//Timing

GraphData[{"Halin",{14,13}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,13}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,13}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,13}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,13}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,};

Matchstick

GraphData[{"Halin",{14,13}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,13}},{"RCN","CN"}]

GraphData[{"Halin",{14,13}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{14,13}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,13}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,13}},"Edges"]]

3D All

GraphData[{"Halin",{14,13}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,13}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,13}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,13}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,13}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 23}}

GraphData[{"Halin",{14,23}},"StandardName"]

All

GraphData[{"Halin",{14,23}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,23}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,23}},"LCFSignature"]

GraphData[{"Halin",{14,23}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,23}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,23}}],Debug->True]//Timing

GraphData[{"Halin",{14,23}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,23}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,23}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,23}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,23}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

Matchstick

GraphData[{"Halin",{14,23}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,23}},{"RCN","CN"}]

GraphData[{"Halin",{14,23}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Halin",{14,23}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,23}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,23}},"Edges"]]

3D All

GraphData[{"Halin",{14,23}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,23}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,23}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,23}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,23}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 101}} == {"Wheel", 14}

GraphData[{"Halin",{14,101}},"StandardName"]

{"Halin", {14, 136}}

GraphData[{"Halin",{14,136}},"StandardName"]

All

GraphData[{"Halin",{14,136}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,136}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,136}},"LCFSignature"]

GraphData[{"Halin",{14,136}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,136}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,136}}],Debug->True]//Timing

GraphData[{"Halin",{14,136}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,136}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,136}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,136}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,136}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,};

Matchstick

GraphData[{"Halin",{14,136}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,136}},{"RCN","CN"}]

GraphData[{"Halin",{14,136}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{14,136}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,136}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,136}},"Edges"]]

3D All

GraphData[{"Halin",{14,136}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,136}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,136}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,136}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,136}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//Timing

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

SimplePolyhedronQ[can]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {14, 160}}

GraphData[{"Halin",{14,160}},"StandardName"]

Primary

GraphData[{"Halin",{14,160}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{14,160}},"Graph","All"]//StyleGraphs

Planar

GraphData[{"Halin",{14,160}},"Planar"]

GraphData[{"Halin",{14,160}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{14,160}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{14,160}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,}

Tutte embedding construction 8

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 6

GraphPlot[RotateGraph[,2Pi/6]]

y=v[[3,2]]/2//FullSimplify

v=Join[UnitCirclePoints[6],Table[{-1/2+i/5,0},{i,0,5}]];
v=Join[v,{{v[[8,1]],y},{v[[11,1]],y}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,12],{6,7},e[5,7,8,9,10,11,12,2],e[10,14,3],e[4,13,9],{11,14},{8,13}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5

GraphPlot[RotateGraph[,-2Pi/5]]

y=v[[4,2]]//FullSimplify

dy=Mean[{v[[3,2]],y}]//FullSimplify

v=Join[UnitCirclePoints[5],Table[{-1/2+i/5,y},{i,0,5}],{{0,dy}}];
v=Join[v,{{v[[7,1]],dy},{v[[10,1]],dy}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,11],{5,6},e[4,6,7,8,9,10,11,2],e[7,13,12,14,10],{3,12},{8,13},{9,14}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{-1/2+i/5,1/4},{i,0,5}],{{-1/2,3/4},{-1/2+2/5,3/4},{1/2,3/4},{-1/2+2/5,1/2},{1/2,1/2}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,7,8,9,2],e[4,10,11,12,14,9],e[11,13,6],{10,5},{7,13},{8,14},{3,12}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{14,160}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,160}},"LCFSignature"]

GraphData[{"Halin",{14,160}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,160}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,160}}],Debug->True]//Timing

GraphData[{"Halin",{14,160}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,160}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,160}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,160}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,160}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

GraphData[{"Halin",{14,160}},"Graph","Matchstick"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Halin",{14,160}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D default

Graph3D[GraphData[{"Halin",{14,160}},"Edges"]]

3D All

GraphData[{"Halin",{14,160}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,160}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,160}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,160}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,160}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//Timing

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

SimplePolyhedronQ[can]

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

{"Halin", {14, 180}}

GraphData[{"Halin",{14,180}},"StandardName"]

All

GraphData[{"Halin",{14,180}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,180}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,180}},"LCFSignature"]

GraphData[{"Halin",{14,180}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,180}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,180}}],Debug->True]//Timing

GraphData[{"Halin",{14,180}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,180}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,180}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,180}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,180}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,};

Matchstick

GraphData[{"Halin",{14,180}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,180}},{"RCN","CN"}]

GraphData[{"Halin",{14,180}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

GraphPlot@GraphData[{"Halin",{14,180}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,180}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,180}},"Edges"]]

3D All

GraphData[{"Halin",{14,180}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,180}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,180}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,180}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,180}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 181}}

Names

GraphData[{"Halin",{14,181}},"StandardName"]

GraphData[{"Halin",{14,181}},"StandardNames"]

Primary

GraphData[{"Halin",{14,181}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{14,181}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Halin",{14,181}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Halin",{14,181}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Halin",{14,181}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"Halin",{14,181}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Halin",{14,181}},"Graph","Degenerate"]

Perspective

GraphData[{"Halin",{14,181}},"Graph","Perspective"]//StyleGraphs

Perspective construction

PolyhedronGraph[GraphData[{"Halin",{14,181}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"Halin",{14,181}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"Halin",{14,181}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Halin",{14,181}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"Halin",{14,181}},"Planar"]

GraphData[{"Halin",{14,181}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{14,181}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{14,181}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

Tutte embedding construction 8

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[8],CirclePoints[Sqrt[2]/2,4],{{-1/2,0},{1/2,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,8},1,12,9,14,13,11,10,4],{2,9},{3,14},{8,12},{7,13},{5,10},{6,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 6

GraphPlot[RotateGraph[]]

h=v[[3,2]]//FullSimplify

v=Join[UnitCirclePoints[6],{{-1/2,0},{-1/2,-h/2},{1/2,-h/2}},Table[{-1/2,h i/4},{i,3}],Table[{1/2,h i/4},{i,{1,3}}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,9],e[2,9,8],e[6,8,7,10,11,12,4],{5,7},e[10,13,14,3],{12,14},{11,13}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

RegionIntersection[Line[v[[{9,7}]]],Line[{v[[10]],v[[10]]-{0,1}}]]

v=Join[{{0,0},{1,0},{1,1},{0,1}},Table[{1/2,i/7},{i,{2,3,4,6}}],{{1/4,6/7},{3/8,6/7},{3/4,6/7},{1/4,1/7},{3/4,1/7},{(3/8),(5/7)}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,12,13,2],e[12,5,6,7,8],{5,13},e[4,9,10,8,11,3],e[9,14,7],{6,11},{10,14}},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/7},{1/2,2/7},{1/3,3/7},{1/2,3/7},{2/3,3/7},{1/3,4/7},{1/2,4/7},{1/3,5/7},{1/3,6/7},{2/3,6/7}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,2],e[4,13,14,3],e[13,12,10,7,6,9,14],{5,6},e[7,8,9],e[8,11,10],{11,12}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Flatten[Table[{i,j/4},{i,{-1/4,1/4}},{j,4}],1]];
v=Join[v,Subdivide[v[[6]],v[[10]],3][[2;;-2]],{Mean[v[[{9,10}]]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,8,2],e[3,7,6,5,4],e[7,11,10,14,9,8],e[6,12,13,10],{12,11},{14,13},{5,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing

GraphData[{"Halin",{14,181}},{"RCN","CN"}]

GraphData[{"Halin",{14,181}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"Halin",{14,181}},"Circulant"]

GraphData[{"Halin",{14,181}},"Graph","Circulant"]//StyleGraphs

Line graph

GraphData[{"Halin",{14,181}},"Line"]

LineGraphQ[GraphData[{"Halin",{14,181}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"Halin",{14,181}}&]

RootGraph[GraphData[{"Halin",{14,181}}]]

Halin

GraphData[{"Halin",{14,181}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"Halin",{14,181}},"Rigid"]

GraphData[{"Halin",{14,181}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"Halin",{14,181}},"Flexible"]

GraphData[{"Halin",{14,181}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"Halin",{14,181}},"LCF"]

GraphData[{"Halin",{14,181}},"HamiltonianCycleCount"]

GraphData[{"Halin",{14,181}},"LCFSignature"]

GraphData[{"Halin",{14,181}},"LCFNotations"]

GraphData[{"Halin",{14,181}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Halin",{14,181}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Halin",{14,181}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

gs=LCFGraph@@@lcf//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

UnitDistance

GraphData[{"Halin",{14,181}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,181}}],Debug->True]//Timing

GraphData[{"Halin",{14,181}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,181}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,181}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,181}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,181}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{14,181}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Halin",{14,181}},"Edges"]]

3D All

GraphData[{"Halin",{14,181}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,181}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,181}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,181}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,181}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 233}}

GraphData[{"Halin",{14,233}},"StandardName"]

All

GraphData[{"Halin",{14,233}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,233}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,233}},"LCFSignature"]

GraphData[{"Halin",{14,233}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,233}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,233}}],Debug->True]//Timing

GraphData[{"Halin",{14,233}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,233}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,233}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,233}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,233}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,,,,,,};

Matchstick

GraphData[{"Halin",{14,233}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,233}},{"RCN","CN"}]

GraphData[{"Halin",{14,233}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{14,233}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,233}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,233}},"Edges"]]

3D All

GraphData[{"Halin",{14,233}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,233}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,233}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,233}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,233}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 240}}

GraphData[{"Halin",{14,240}},"StandardName"]

All

GraphData[{"Halin",{14,240}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,240}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,240}},"LCFSignature"]

GraphData[{"Halin",{14,240}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,240}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,240}}],Debug->True]//Timing

GraphData[{"Halin",{14,240}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,240}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,240}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,240}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,240}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={};

Matchstick

GraphData[{"Halin",{14,240}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,240}},{"RCN","CN"}]

GraphData[{"Halin",{14,240}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{14,240}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,240}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,240}},"Edges"]]

3D All

GraphData[{"Halin",{14,240}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,240}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,240}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,240}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,240}}],-1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 242}}

Names

GraphData[{"Halin",{14,242}},"StandardName"]

GraphData[{"Halin",{14,242}},"StandardNames"]

Primary

GraphData[{"Halin",{14,242}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{14,242}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Halin",{14,242}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Halin",{14,242}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Halin",{14,242}},"Edges"],GraphLayout->"RadialEmbedding"]

v=DeleteDuplicates@Join[{{0,0},{1,0}},Subdivide[{1/2,1/2},{1,1},4],Subdivide[{1/2,1/2},{0,1},4],Most@Subdivide[{1/2,1/2},{1/2,0},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,7,11,1,14,2],{10,6},e[14,13,12,3,4,5,6,7],e[11,10,9,8,3],{9,4},{13,5},{12,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphData[{"Cubic",{14,165}},"Graphics"]

v=UnitCirclePoints[8];
x=v[[2,1]];
v=Join[v,Table[{-x+2x i/7,0},{i,6}]];
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,12],e[2,14,3],e[7,9,10,11,12,13,14],{6,10},{8,9},{4,13},{5,11}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"Cubic",{14,165}},"EdgeList"]]

v={{0,0},{3/7,0},{5/7,0},{1,0},{1,1},{4/7,1},{0,1},Sequence@@Table[{i/7,1/2},{i,0,6}]};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,10],e[8,9,10,11,12,13,14,5],{7,9},{6,12},{4,14},{3,13},{2,11}}];
v=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"Halin",{14,242}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Halin",{14,242}},"Graph","Degenerate"]

Perspective

GraphData[{"Halin",{14,242}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"Halin",{14,242}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"Halin",{14,242}},"Graph","Circular"]//StyleGraphs

Halin

GraphData[{"Halin",{14,242}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,242}},"LCF"]

GraphData[{"Halin",{14,242}},"HamiltonianCycleCount"]

GraphData[{"Halin",{14,242}},"LCFSignature"]

GraphData[{"Halin",{14,242}},"LCFNotations"]

GraphData[{"Halin",{14,242}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Halin",{14,242}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Halin",{14,242}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,1,None])]//Timing

Length[gs]

gs

Matchstick

GraphData[{"Halin",{14,242}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,242}},{"RCN","CN"}]

GraphData[{"Halin",{14,242}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,242}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

UnitDistance

GraphData[{"Halin",{14,242}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,242}}],Debug->True]//Timing

GraphData[{"Halin",{14,242}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,242}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,242}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,242}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,242}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

gs={,,};

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,242}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,242}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

DeleteCases[FindUnitDistanceEmbedding[GraphData[{"Cubic",{14,165}}],100],$Failed]//Quiet//Timing

gs=RotateGraph@@@Transpose[{LabelGraph/@{,,,,,,},{{6,9},{8,5},{4,5},{4,12},{13,14},{14,10},{9,12}}}]

3D default

Graph3D[GraphData[{"Halin",{14,242}},"Edges"]]

3D All

GraphData[{"Halin",{14,242}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,242}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,242}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,242}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,242}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 243}}

GraphData[{"Halin",{14,243}},"StandardName"]

All

GraphData[{"Halin",{14,243}},"Graph","All"]//StyleGraphs

Halin

GraphData[{"Halin",{14,243}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,243}},"LCFSignature"]

GraphData[{"Halin",{14,243}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"Halin",{14,243}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,243}}],Debug->True]//Timing

GraphData[{"Halin",{14,243}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,243}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,243}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,243}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,243}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{14,243}},"Graph","Matchstick"]//StyleGraphs

MinimalCrossing

GraphData[{"Halin",{14,243}},{"RCN","CN"}]

GraphData[{"Halin",{14,243}},"Graph","MinimalCrossing"]//StyleGraphs

Default embedding

g=Graph@GraphData[{"Halin",{14,243}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"Halin",{14,243}}]]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

3D default

Graph3D[GraphData[{"Halin",{14,243}},"Edges"]]

3D All

GraphData[{"Halin",{14,243}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,243}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,243}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,243}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,243}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//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]

{"Halin", {14, 248}}

Names

GraphData[{"Halin",{14,248}},"StandardName"]

GraphData[{"Halin",{14,248}},"StandardNames"]

Primary

GraphData[{"Halin",{14,248}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"Halin",{14,248}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"Halin",{14,248}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"Halin",{14,248}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Halin",{14,248}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphData[{"Cubic",{14,163}},"Graphics"]

v=UnitCirclePoints[8];
x=v[[2,1]];
v=Join[v,Table[{-x+2x i/7,0},{i,6}]];
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1],e[7,9,10,11,12,13,14,2],{3,14},{6,9},{8,10},{5,11},{1,12},{4,13}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot[GraphData[{"Cubic",{14,163}},"EdgeList"]]

v={{0,0},{3/7,0},{5/7,0},{1,0},{1,1},{4/7,1},{2/7,1},{0,1},{1/7,1/2},{2/7,1/2},{3/7,1/2},{4/7,1/2},{5/7,1/2},{6/7,1/2}};
ee=Sort[Sort/@{e[1,2,3,4,5,6,7,8,1,9,8],e[9,10,11,12,13,14,5],{4,14},{7,10},{2,11},{6,12},{3,13}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@ee,VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"Halin",{14,248}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"Halin",{14,248}},"Graph","Degenerate"]

Perspective

GraphData[{"Halin",{14,248}},"Graph","Perspective"]//StyleGraphs

Planar

GraphData[{"Halin",{14,248}},"Planar"]

GraphData[{"Halin",{14,248}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Halin",{14,248}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Halin",{14,248}}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

RecognizeGraph/@gs

Tutte embedding construction 8

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #1

GraphPlot[RotateGraph[,2Pi/5]]

h=v[[4,2]]//FullSimplify

dz=(h-v[[1,2]])/3//FullSimplify

RegionIntersection[Line[v[[{12,7}]]],Line[{v[[13]],v[[13]]+{1,0}}]]//FullSimplify

v=Join[UnitCirclePoints[5],Table[{i,h},{i,-1/2,1/2,1/4}],{{1/2,h-2dz},{-1/2,h-2dz},{-1/2,h-dz},{-(3/8),-(1/6) (Sqrt[1-(2/(Sqrt[5]))])}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,11,10],e[5,12,13,6],e[12,14,7],{13,14},e[4,{6,10},2],{3,8},{9,11}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 5 #2

GraphPlot[RotateGraph[,-4Pi/5]]

h

v=Join[UnitCirclePoints[5],{{-1/2,h}},{{1/4,h},{v[[9,1]],h}}];
v=Join[v,Subdivide[v[[1]],v[[7]],4][[2;;-2]]];
v=Join[v,{#,v[[11,2]]}&/@{v[[9,1]],v[[10,1]]},{{0,h}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,9,10,11,7],e[9,12,8],{10,13},e[11,13,12],e[4,6,14,7,8,2],{5,6},{3,14}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,-2Pi/3]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"Halin",{14,248}},"Graph","Halin"]//StyleGraphs

LCF

GraphData[{"Halin",{14,248}},"LCFSignature"]

GraphData[{"Halin",{14,248}},"Graph","LCF"]//StyleGraphs

LCF compute all

Length[FindHamiltonianCycle[GraphData[{"Halin",{14,248}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"Halin",{14,248}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

lcf

gs=LCFGraph@@@lcf//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

UnitDistance

GraphData[{"Halin",{14,248}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"Halin",{14,248}}],Debug->True]//Timing

GraphData[{"Halin",{14,248}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"Halin",{14,248}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

FindUnitDistanceEmbedding[GraphData[{"Halin",{14,248}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

UnitDistance FindSubgraphUnitDistanceEmbedding

{{"Halin",{14,248}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"Halin",{14,248}}],TimeConstraint->300,"Results"->All]//Timing}

gs=UniqueEmbeddings[l]

Matchstick

GraphData[{"Halin",{14,248}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"Halin",{14,248}},"Edges"]]

3D All

GraphData[{"Halin",{14,248}},"Graph",{"3D","All"}]

3D Polyhedron

GraphData[{"Halin",{14,248}},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Halin",{14,248}},"Polyhedron"]}]

Graphics3D[{Opacity[.5],Red,GraphData[{"Halin",{14,248}},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Halin",{14,248}}],1]}]

(can=FindCanonicalPolyhedron[poly,WorkingPrecision->1000,MaxIterations->10000,PrecisionGoal->20])//Timing

SimplePolyhedronQ[can]

Graphics3D[{Opacity[.5],Red,can,Yellow,Sphere[]}]

(lens=Mean/@Split[Sort[PolyhedronEdgeLengths[can]],Abs[#1-#2]<1.*^-10&])//N

v=PolyhedronCoordinates[can];

colors=With[{n=Length[lens]},Table[Hue[i/n],{i,0,n-1}]]

Graphics3D[{Thick,Sequence@@Nearest[Thread[lens->colors],EuclideanDistance@@v[[#]]],Line[v[[#]]]}&/@PolyhedronEdges[can],Boxed->False]

g=PolyhedronGraph[can]

GraphData

GraphDataString

file=OpenAppend["~/halin.m"]

WriteString[file,GraphDataString[#,
"StandardName"->{"Halin",#2},
"Name"->"("<>ToString[#2[[1]]]<>","<>ToString[#2[[2]]]<>")\[Hyphen]Halin graph",
"Classes"->{"Halin"},
"Information"->"HalinGraph",
"NotationRules"->{"Halin"->#2},
TimeConstraint->10
]]&@@@Drop[new,1];

Close[file]