k-Tree

Author

Eric W. Weisstein
February 6, 2024

This notebook downloaded from http://mathworld.wolfram.com/notebooks/GraphTheory/k-Tree.nb.

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

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

Definitions

https://en.wikipedia.org/wiki/K-tree#Related_graph_classes

1-trees are the same as trees. 2-trees are maximal series–parallel graphs and include also the maximal outerplanar graphs. Planar 3-trees are also known as Apollonian networks.

https://oeis.org/A054581

2-tree is recursively defined as follows: K_2 is a 2-tree and any 2-tree on n+1 vertices is obtained by joining a vertex to a 2-clique in a 2-tree on n vertices. Care is needed with the term 2-tree (and k-tree in general) because it has at least two commonly used definitions.

https://oeis.org/A078793

A k-tree is recursively defined as follows: K_k is a k-tree and any k-tree on n+1 vertices is obtained by joining a new vertex to a k-clique in a k-tree on n vertices.

https://en.wikipedia.org/wiki/K-tree#Characterizations

The k-trees are exactly the maximal graphs with a treewidth of k ("maximal" means that no more edges can be added without increasing their treewidth).

https://cstheory.stackexchange.com/questions/1532/what-is-the-correct-definition-of-k-tree

I personally prefer the bottom-up definition, but this is just a matter of taste:
• The complete graph on 𝑘+1 vertices is a 𝑘-tree.
• A 𝑘-tree 𝐺 with 𝑛+1 vertices (𝑛≥𝑘+1) can be constructed from a 𝑘-tree 𝐻 with 𝑛 vertices by adding a vertex adjacent to exactly 𝑘 vertices that form a 𝑘
-clique in 𝐻.
• No other graphs are 𝑘-trees.

https://doi.org/10.1016/0095-8956(90)90086-F

The size of uniquely colorable graphs
Xu Shaoji

Figure

trees2=Labeled[GraphicsGrid[Flatten[Partition[#,UpTo[7]]&/@Map[StyleGraphs[g=GraphData[RecognizeGraph[#]],VertexSize->{"Scaled",.05}]&,Table[KTrees[2][n],{n,7}],{2}],1],Dividers->{{Thick,{True},Thick},{Thick,Thick,Thick,Thick,Thick,True,Thick}},ImageSize->700],
Style["2\[Hyphen]trees",Directive[FontFamily->"Times",Italic,Black,24]],
Top]

trees3=Labeled[GraphicsGrid[Flatten[Partition[#,UpTo[7]]&/@Map[
StyleGraphs[g=With[{i=GraphIndex[#]},Quiet@Check[GraphData[i],Graphs[i[[1]]][[i[[2]]]]]],VertexSize->{"Scaled",.05}]&,
Table[KTrees[3][n],{n,8}],{2}],1],Dividers->{{Thick,{True},Thick},{Thick,Thick,Thick,Thick,Thick,True,True,Thick}},ImageSize->700],
Style["3\[Hyphen]trees",Directive[FontFamily->"Times",Italic,Black,24]],
Top]

With[{style=Directive[FontFamily->"Times",Italic,Black,24]},
GraphicsRow[{
Show[trees2[[1]],PlotLabel->Style["2\[Hyphen]trees",style],ImageSize->710],
Show[trees3[[1]],PlotLabel->Style["3\[Hyphen]trees",style],ImageSize->800]
},
Alignment->Top,ImageSize->1000,Spacings->0]
]

Counts

oeis={"A000055","A054581","A078792","A078793","A201702"};

TextGrid[
Table[{
k,
With[{o=oeis[[k]]},Hyperlink[o,"https://oeis.org/"<>o]],
Length/@Table[KTrees[k][n],{n,14}]
},{k,5}],
Dividers->All]

Embeddings

<<MathWorld`Graphs`

2-trees

TextGrid[DeleteCases[{FirstCase[GraphData[#,"StandardNames"],{"KTree",{2,_}}],#}&/@GraphData["KTree"],{_Missing,_}]//Sort,Dividers->All]

{"KTree", {2, {3, 1}}} == "TriangleGraph"

Names

GraphData[{"KTree",{2,{3,1}}},"StandardName"]

GraphData[{"KTree",{2,{3,1}}},"StandardNames"]

{"KTree", {2, {4, 1}}} == "DiamondGraph"

Names

GraphData[{"KTree",{2,{4,1}}},"StandardName"]

GraphData[{"KTree",{2,{4,1}}},"StandardNames"]

{"KTree", {2, {5, 1}}} == {"CompleteTripartite", {1, 1, 3}}

Names

GraphData[{"KTree",{2,{5,1}}},"StandardName"]

GraphData[{"KTree",{2,{5,1}}},"StandardNames"]

{"KTree", {2, {5, 2}}} == "GemGraph"

Names

GraphData[{"KTree",{2,{5,2}}},"StandardName"]

GraphData[{"KTree",{2,{5,2}}},"StandardNames"]

{"KTree", {2, {6, 1}}} == {"CompleteTripartite", {1, 1, 4}}

Names

GraphData[{"KTree",{2,{6,1}}},"StandardName"]

GraphData[{"KTree",{2,{6,1}}},"StandardNames"]

{"KTree", {2, {6, 3}}} == {"Fan", {1, 5}}

Names

GraphData[{"KTree",{2,{6,3}}},"StandardName"]

GraphData[{"KTree",{2,{6,3}}},"StandardNames"]

{"KTree", {2, {6, 4}}} == {"TriangularGrid", 2}

Names

GraphData[{"KTree",{2,{6,4}}},"StandardName"]

GraphData[{"KTree",{2,{6,4}}},"StandardNames"]

{"KTree", {2, {6, 5}}} == {"Polyiamond", {4, 1}}

Names

GraphData[{"KTree",{2,{6,5}}},"StandardName"]

GraphData[{"KTree",{2,{6,5}}},"StandardNames"]

{"KTree", {2, {7, 1}}} == {"CompleteTripartite", {1, 1, 5}}

Names

GraphData[{"KTree",{2,{7,1}}},"StandardName"]

GraphData[{"KTree",{2,{7,1}}},"StandardNames"]

{"KTree", {2, {7, 2}}}

Names

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

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

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,2}}},"Configuration"]

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

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,2}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,2}}},"Hamiltonian"]

Planar

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

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

MinimalCrossing

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

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

Circulant

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

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

Complement graph

GraphData[{"KTree",{2,{7,2}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

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

Names

GraphData[{"KTree",{2,{7,3}}},"StandardName"]

GraphData[{"KTree",{2,{7,3}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,3}}},"Configuration"]

GraphData[{"KTree",{2,{7,3}}},"Graph","Configuration"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{7,3}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

GraphPlot@RotateGraph[GraphicsToGraph@,π]

RegionIntersection[Line[v[[{1,4}]]],Line[{{0,1/2},{1,1/2}}]]

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

RecognizeGraph@g

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,3}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,3}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{7,3}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{7,3}}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,3}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,3}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,3}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,3}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,3}}}],TimeConstraint->5 3600])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"KTree",{2,{7,3}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{7,3}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{7,3}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{7,3}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{7,3}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{7,3}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{7,3}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{7,3}}},"LCF"]

GraphData[{"KTree",{2,{7,3}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{7,3}}},"LCFSignature"]

GraphData[{"KTree",{2,{7,3}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{7,3}}},"UnitDistance"]

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

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{7,3}}},"VertexList"],GraphData[{"KTree",{2,{7,3}}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{7,3}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{7,3}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{7,3}}},"Polyhedral"]

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

{"KTree", {2, {7, 4}}}

Names

GraphData[{"KTree",{2,{7,4}}},"StandardName"]

GraphData[{"KTree",{2,{7,4}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,4}}},"Configuration"]

GraphData[{"KTree",{2,{7,4}}},"Graph","Configuration"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{7,4}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,4}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,4}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{7,4}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{7,4}}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,4}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,4}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,4}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,4}}}],TimeConstraint->3600])//AbsoluteTiming

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

(g=MinimalCrossingGraph[GraphData[{"KTree",{2,{7,4}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"KTree",{2,{7,4}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{7,4}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{7,4}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{7,4}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{7,4}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{7,4}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{7,4}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{7,4}}},"LCF"]

GraphData[{"KTree",{2,{7,4}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{7,4}}},"LCFSignature"]

GraphData[{"KTree",{2,{7,4}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{7,4}}},"UnitDistance"]

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

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{7,4}}},"VertexList"],GraphData[{"KTree",{2,{7,4}}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{7,4}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{7,4}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{7,4}}},"Polyhedral"]

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

{"KTree", {2, {7, 5}}}

Names

GraphData[{"KTree",{2,{7,5}}},"StandardName"]

GraphData[{"KTree",{2,{7,5}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,5}}},"Configuration"]

GraphData[{"KTree",{2,{7,5}}},"Graph","Configuration"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{7,5}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

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

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2+.1]

Mean[{{-1,0},{1,0},{0,Sqrt[3]}}]

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

RecognizeGraph@g

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,5}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,5}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{7,5}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{7,5}}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,5}}}],TimeConstraint->1])//AbsoluteTiming

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

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,5}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,5}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,5}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{2,{7,5}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"KTree",{2,{7,5}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{7,5}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{7,5}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{7,5}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{7,5}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{7,5}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{7,5}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{7,5}}},"LCF"]

GraphData[{"KTree",{2,{7,5}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{7,5}}},"LCFSignature"]

GraphData[{"KTree",{2,{7,5}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{7,5}}},"UnitDistance"]

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

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{7,5}}},"VertexList"],GraphData[{"KTree",{2,{7,5}}},"EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{7,5}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{7,5}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{7,5}}},"Polyhedral"]

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

{"KTree", {2, {7, 6}}}

Names

GraphData[{"KTree",{2,{7,6}}},"StandardName"]

GraphData[{"KTree",{2,{7,6}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,6}}},"Configuration"]

GraphData[{"KTree",{2,{7,6}}},"Graph","Configuration"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{7,6}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,6}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,6}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{7,6}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{7,6}}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,6}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,6}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,6}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,6}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,6}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{2,{7,6}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"KTree",{2,{7,6}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{7,6}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{7,6}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{7,6}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{7,6}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{7,6}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{7,6}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{7,6}}},"LCF"]

GraphData[{"KTree",{2,{7,6}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{7,6}}},"LCFSignature"]

GraphData[{"KTree",{2,{7,6}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{7,6}}},"UnitDistance"]

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

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{7,6}}},"VertexList"],GraphData[{"KTree",{2,{7,6}}},"EdgeList"]],MaxIterations->500]

GraphPlot@

RotateGraph[GraphicsToGraph[],Pi]

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

RecognizeGraph@g

gs={RotateGraph[,Pi],}

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{7,6}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{7,6}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{7,6}}},"Polyhedral"]

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

{"KTree", {2, {7, 7}}}

Names

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

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

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,7}}},"Configuration"]

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"KTree",{2,{7,7}}},"Edges"],GraphLayout->"SpringEmbedding"],Pi]

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,7}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,7}}},"Hamiltonian"]

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

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

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

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

gs=bilat

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

quad

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,7}}}],TimeConstraint->1])//AbsoluteTiming

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

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,7}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,7}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{2,{7,7}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{2,{7,7}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"KTree",{2,{7,7}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Complement graph

GraphData[{"KTree",{2,{7,7}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

GraphPlot@

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

RecognizeGraph@g

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

GraphPlot@

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"KTree", {2, {7, 8}}}

Names

GraphData[{"KTree",{2,{7,8}}},"StandardName"]

GraphData[{"KTree",{2,{7,8}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{7,8}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{7,8}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

Mean[v[[{3,4,6}]]]

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

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{7,8}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{7,8}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{7,8}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{7,8}}},{"RCN","CN"}]

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

MinimalCrossing construction

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

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

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

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

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

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"KTree",{2,{7,8}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{7,8}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{7,8}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{7,8}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{7,8}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{7,8}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{7,8}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{7,8}}},"LCF"]

GraphData[{"KTree",{2,{7,8}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{7,8}}},"LCFSignature"]

GraphData[{"KTree",{2,{7,8}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{7,8}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{7,8}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{7,8}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{7,8}}},"Polyhedral"]

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

{"KTree", {2, {7, 9}}} == {"Polyiamond", {5, 2}}

Names

GraphData[{"KTree",{2,{7,9}}},"StandardName"]

GraphData[{"KTree",{2,{7,9}}},"StandardNames"]

{"KTree", {2, {7, 10}}} == {"Polyiamond", {5, 3}}

Names

GraphData[{"KTree",{2,{7,10}}},"StandardName"]

GraphData[{"KTree",{2,{7,10}}},"StandardNames"]

{"KTree", {2, {7, 11}}} == {"Fan", {1, 6}}

Names

GraphData[{"KTree",{2,{7,11}}},"StandardName"]

GraphData[{"KTree",{2,{7,11}}},"StandardNames"]

{"KTree", {2, {7, 12}}} == {"Polyiamond", {5, 1}}

Names

GraphData[{"KTree",{2,{7,12}}},"StandardName"]

GraphData[{"KTree",{2,{7,12}}},"StandardNames"]

{"KTree", {2, {8, 1}}} == {"CompleteTripartite", {1, 1, 6}}

Names

GraphData[{"KTree",{2,{8,1}}},"StandardName"]

GraphData[{"KTree",{2,{8,1}}},"StandardNames"]

{"KTree", {2, {8, 2}}}

Names

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

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

Primary

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

All

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

Configuration

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

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,2}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,2}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

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

Planar

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

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

MinimalCrossing

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

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Complement graph

GraphData[{"KTree",{2,{8,2}}},"ComplementGraph","Name"]

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"KTree", {2, {8, 3}}}

Names

GraphData[{"KTree",{2,{8,3}}},"StandardName"]

GraphData[{"KTree",{2,{8,3}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,3}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,3}}},"EdgeList"]]

Default embedding

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

GraphPlot@RotateGraph[GraphicsToGraph@,-1]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

RecognizeGraph/@gs

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,3}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,3}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,3}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,3}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,3}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,3}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,3}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{8,3}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,3}}}]]

Halin

GraphData[{"KTree",{2,{8,3}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,3}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,3}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,3}}},"LCF"]

GraphData[{"KTree",{2,{8,3}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,3}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,3}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,3}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,3}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,3}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,3}}},"Polyhedral"]

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

{"KTree", {2, {8, 4}}}

Names

GraphData[{"KTree",{2,{8,4}}},"StandardName"]

GraphData[{"KTree",{2,{8,4}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,4}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,4}}},"EdgeList"]]

Default embedding

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

Mean[v[[{1,2,4}]]]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

RecognizeGraph/@gs

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,4}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,4}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,4}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,4}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,4}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,4}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,4}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,4}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,4}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{8,4}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,4}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,4}}},"LCF"]

GraphData[{"KTree",{2,{8,4}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,4}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,4}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,4}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,4}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,4}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,4}}},"Polyhedral"]

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

{"KTree", {2, {8, 5}}}

Names

GraphData[{"KTree",{2,{8,5}}},"StandardName"]

GraphData[{"KTree",{2,{8,5}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,5}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,5}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,5}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,5}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,5}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,5}}},{"RCN","CN"}]

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"KTree",{2,{8,5}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,5}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,5}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,5}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,5}}}]]

Halin

GraphData[{"KTree",{2,{8,5}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,5}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,5}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,5}}},"LCF"]

GraphData[{"KTree",{2,{8,5}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,5}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,5}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,5}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,5}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,5}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,5}}},"Polyhedral"]

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

{"KTree", {2, {8, 6}}}

Names

GraphData[{"KTree",{2,{8,6}}},"StandardName"]

GraphData[{"KTree",{2,{8,6}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,6}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,6}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

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

RotateGraph[GraphicsToGraph[],Pi]

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

RecognizeGraph[g]

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

Mean[v[[{2,3,4}]]]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,6}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,6}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,6}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,6}}},{"RCN","CN"}]

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"KTree",{2,{8,6}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,6}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,6}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{8,6}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,6}}}]]

Halin

GraphData[{"KTree",{2,{8,6}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,6}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,6}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,6}}},"LCF"]

GraphData[{"KTree",{2,{8,6}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,6}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,6}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,6}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,6}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,6}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,6}}},"Polyhedral"]

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

{"KTree", {2, {8, 7}}}

Names

GraphData[{"KTree",{2,{8,7}}},"StandardName"]

GraphData[{"KTree",{2,{8,7}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,7}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,7}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{2,{8,7}}},"Edges"],GraphLayout->"SpringEmbedding"]

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

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

v=CirclePoints[5];
v=Join[v,{{0,(1/2) (-3+(Sqrt[5]))},{(NumericalApproximation[Root, (RowDefault["0.225", FEExpressionsNumericalApproximationElider]), Root[5-100 ((#1)^2)+16 ((#1)^4)&,3], ]),(1/4) (-1+(Sqrt[5]))},{-(NumericalApproximation[Root, (RowDefault["0.225", FEExpressionsNumericalApproximationElider]), Root[5-100 ((#1)^2)+16 ((#1)^4)&,3], ]),(1/4) (-1+(Sqrt[5]))}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,7,3,8,5,6,2,7,8,4,6,1],e[8,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"KTree",{2,{8,7}}},"Edges"],GraphLayout->"SpringEmbedding"]

Mean[v[[{3,4}]]]

Mean[v[[{2,3,5}]]]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Mean[v[[{2,5,6}]]]

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

d=RegionDistance[Line[v[[{2,6}]]],v[[8]]]

v[[8]]+Normalize[v[[1]]-v[[8]]]2d

Mean[v[[{5,6}]]]-{0,d}

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

gs=UnlabelGraph/@{,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,7}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,7}}},"Hamiltonian"]

GraphData[{"KTree",{2,{8,7}}},"LCF"]

Planar

GraphData[{"KTree",{2,{8,7}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,7}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,7}}}]]

RotateGraph[GraphicsToGraph@,4Pi/5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,7}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,7}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,7}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,7}}}]]

Halin

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

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

Rigid

GraphData[{"KTree",{2,{8,7}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,7}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,7}}},"LCF"]

GraphData[{"KTree",{2,{8,7}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,7}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,7}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,7}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,7}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,7}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,7}}},"Polyhedral"]

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

{"KTree", {2, {8, 8}}}

Names

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

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

Primary

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

All

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

Configuration

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

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,8}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{2,{8,8}}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"KTree",{2,{8,8}}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

GraphPlot[GraphData[{"KTree",{2,{8,8}}},"Edges"],GraphLayout->"SpringEmbedding"]

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

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

RecognizeGraph[g]

Mean[v[[{1,2,4}]]]

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

RecognizeGraph@g

gs=UnlabelGraph/@{,,,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,8}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

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

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Complement graph

GraphData[{"KTree",{2,{8,8}}},"ComplementGraph","Name"]

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"KTree", {2, {8, 9}}}

Names

GraphData[{"KTree",{2,{8,9}}},"StandardName"]

GraphData[{"KTree",{2,{8,9}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,9}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,9}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

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

Mean[v[[{3,4,7}]]]//FullSimplify

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

RecognizeGraph[g]

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

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,9}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,9}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,9}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,9}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,9}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,9}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,9}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,9}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,9}}}]]

Halin

GraphData[{"KTree",{2,{8,9}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,9}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,9}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,9}}},"LCF"]

GraphData[{"KTree",{2,{8,9}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,9}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,9}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,9}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,9}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,9}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,9}}},"Polyhedral"]

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

{"KTree", {2, {8, 10}}}

Names

GraphData[{"KTree",{2,{8,10}}},"StandardName"]

GraphData[{"KTree",{2,{8,10}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,10}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,10}}},"EdgeList"]]

Default embedding

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

GraphPlot@RotateGraph[GraphicsToGraph@,-.45]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,10}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,10}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,10}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,10}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,10}}}]]

v[[4]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,10}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,10}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,10}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,10}}}]]

Halin

GraphData[{"KTree",{2,{8,10}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,10}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,10}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,10}}},"LCF"]

GraphData[{"KTree",{2,{8,10}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,10}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,10}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,10}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,10}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,10}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,10}}},"Polyhedral"]

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

{"KTree", {2, {8, 11}}}

Names

GraphData[{"KTree",{2,{8,11}}},"StandardName"]

GraphData[{"KTree",{2,{8,11}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,11}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,11}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

gs=UnlabelGraph/@{}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,11}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,11}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,11}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,11}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,11}}}]]

v[[4]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,11}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,11}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,11}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,11}}}]]

Halin

GraphData[{"KTree",{2,{8,11}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,11}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,11}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,11}}},"LCF"]

GraphData[{"KTree",{2,{8,11}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,11}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,11}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,11}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,11}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,11}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,11}}},"Polyhedral"]

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

{"KTree", {2, {8, 12}}}

Names

GraphData[{"KTree",{2,{8,12}}},"StandardName"]

GraphData[{"KTree",{2,{8,12}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,12}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,12}}},"EdgeList"]]

Default embedding

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

GraphPlot@RotateGraph[GraphicsToGraph@,.4]

Mean[v[[{2,4,5}]]]

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

RecognizeGraph[g]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,12}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,12}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,12}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,12}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,12}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,12}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,12}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,12}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,12}}}]]

Halin

GraphData[{"KTree",{2,{8,12}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,12}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,12}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,12}}},"LCF"]

GraphData[{"KTree",{2,{8,12}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,12}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,12}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,12}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,12}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,12}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,12}}},"Polyhedral"]

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

{"KTree", {2, {8, 13}}}

Names

GraphData[{"KTree",{2,{8,13}}},"StandardName"]

GraphData[{"KTree",{2,{8,13}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,13}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,13}}},"EdgeList"]]

Default embedding

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

Mean[v[[{2,5,6}]]]

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

RecognizeGraph[g]

Mean[v[[{2,5,6}]]]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,13}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,13}}},"Hamiltonian"]

GraphData[{"KTree",{2,{8,13}}},"LCF"]

Planar

GraphData[{"KTree",{2,{8,13}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,13}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,13}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,13}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,13}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,13}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,13}}}]]

Halin

GraphData[{"KTree",{2,{8,13}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,13}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,13}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,13}}},"LCF"]

GraphData[{"KTree",{2,{8,13}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,13}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,13}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,13}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,13}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,13}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,13}}},"Polyhedral"]

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

{"KTree", {2, {8, 14}}}

Names

GraphData[{"KTree",{2,{8,14}}},"StandardName"]

GraphData[{"KTree",{2,{8,14}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,14}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,14}}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,14}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,14}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,14}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,14}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,14}}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,14}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,14}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,14}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,14}}}]]

Halin

GraphData[{"KTree",{2,{8,14}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,14}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,14}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,14}}},"LCF"]

GraphData[{"KTree",{2,{8,14}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,14}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,14}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,14}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,14}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,14}}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"KTree",{2,{8,14}}},"Polyhedral"]

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

{"KTree", {2, {8, 15}}}

Names

GraphData[{"KTree",{2,{8,15}}},"StandardName"]

GraphData[{"KTree",{2,{8,15}}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"KTree",{2,{8,15}}},"Configuration"]

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,15}}},"EdgeList"]]

Default embedding

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

Mean[v[[{3,5,6}]]]

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

RecognizeGraph[g]

Mean[v[[{3,5,4}]]]

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

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

RecognizeGraph/@gs

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"KTree",{2,{8,15}}},"Polyhedron"]

Bilateral

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

Circular

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

Circular construction

GraphData[{"KTree",{2,{8,15}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,15}}},"Planar"]

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

MinimalCrossing

GraphData[{"KTree",{2,{8,15}}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,15}}}]]

RotateGraph[GraphicsToGraph@,.5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,15}}},"Circulant"]

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

Complement graph

GraphData[{"KTree",{2,{8,15}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,15}}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"KTree",{2,{8,15}}}]]

Halin

GraphData[{"KTree",{2,{8,15}}},"Halin"]

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

Rigid

GraphData[{"KTree",{2,{8,15}}},"Rigid"]

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

Flexible

GraphData[{"KTree",{2,{8,15}}},"Flexible"]

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

LCF

GraphData[{"KTree",{2,{8,15}}},"LCF"]

GraphData[{"KTree",{2,{8,15}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,15}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,15}}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"KTree",{2,{8,15}}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"KTree",{2,{8,15}}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"KTree",{2,{8,15}}},"Edges"]]

3D All

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

3D UnitDistance

GraphData[{"KTree",{2,{8,15}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,15}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,15}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 16}}}

Names

GraphData[{"KTree",{2,{8,16}}},"StandardName"]

GraphData[{"KTree",{2,{8,16}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,16}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,16}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,16}}},"Configuration"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,16}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,16}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,16}}},"Edges"]

Mean[v[[{2,3,6}]]]//FullSimplify

s=Sqrt[3]/2;
v={{0,0},{1,0},{1,1},{0,1},{-s,1/2},{1+s,1/2},{1/2,1+s},{(1/6) (6+(Sqrt[3])),(1/2)}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,4,7,3,6,2,8,3],{2,4}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"KTree",{2,{8,16}}},"Edges"]

Mean[v[[{2,3,6}]]]

v={{0,0},{1,0},{2,0},{-1/2,s},{1/2,s},{3/2,s},{1,2s},{(3/2),(1/(2 (Sqrt[3])))}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,7,5,4,1,5,2,6,8,2],{5,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

RecognizeGraph/@gs

Degenerate

GraphData[{"KTree",{2,{8,16}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,16}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,16}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,16}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,16}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,16}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,16}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,16}}},"Planar"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,16}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,16}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{8,16}}}],TimeConstraint->1])//AbsoluteTiming

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,16}}}]]

v=CirclePoints[{1,Pi/2},6];
v=Join[v,Subdivide[v[[4]],Mean[v[[{1,2}]]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,4,2,7,1,8,2],{4,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,16}}},"Circulant"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,16}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,16}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,16}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,16}}}&]

RootGraph[GraphData[{"KTree",{2,{8,16}}}]]

Halin

GraphData[{"KTree",{2,{8,16}}},"Halin"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,16}}},"Rigid"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,16}}},"Flexible"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,16}}},"LCF"]

GraphData[{"KTree",{2,{8,16}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,16}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,16}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,16}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,16}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,16}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,16}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,16}}},"VertexList"],GraphData[{"KTree",{2,{8,16}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,16}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,16}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,16}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,16}}},"Matchstick"]

GraphData[{"KTree",{2,{8,16}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,16}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,16}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,16}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,16}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,16}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 17}}}

Names

GraphData[{"KTree",{2,{8,17}}},"StandardName"]

GraphData[{"KTree",{2,{8,17}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,17}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,17}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,17}}},"Configuration"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,17}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,17}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,17}}},"Edges"]

s=Sqrt[3]/2;
v={{0,0},{1,0},{2,0},{-1/2,s},{1/2,s},{3/2,s}};
v=Join[v,Mean[v[[#]]]&/@{{2,5,6},{2,3,6}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,5,4,1,5,2,6,7,2,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"KTree",{2,{8,17}}},"Edges"]

v={{0,0},{1,0},{2,0},{2,1},{1,1},{0,1}};
v=Join[v,Mean[v[[#]]]&/@{{2,5,4},{3,2,4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,5,2,4,7,2,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"KTree",{2,{8,17}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,17}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,17}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,17}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,17}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,17}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,17}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,17}}},"Planar"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,17}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,17}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,17}}}]]

v=CirclePoints[5];
v=Join[v,Subdivide[v[[5]],Mean[v[[{3,4}]]],4][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1],e[2,5,3,6,4,7,3,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,17}}},"Circulant"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,17}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,17}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,17}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,17}}}&]

RootGraph[GraphData[{"KTree",{2,{8,17}}}]]

Halin

GraphData[{"KTree",{2,{8,17}}},"Halin"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,17}}},"Rigid"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,17}}},"Flexible"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,17}}},"LCF"]

GraphData[{"KTree",{2,{8,17}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,17}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,17}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,17}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,17}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,17}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,17}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,17}}},"VertexList"],GraphData[{"KTree",{2,{8,17}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,17}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,17}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,17}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,17}}},"Matchstick"]

GraphData[{"KTree",{2,{8,17}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,17}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,17}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,17}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,17}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,17}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 18}}}

Names

GraphData[{"KTree",{2,{8,18}}},"StandardName"]

GraphData[{"KTree",{2,{8,18}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,18}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,18}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,18}}},"Configuration"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,18}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,18}}},"EdgeList"]]

Default embedding

Mean[v[[{1,2,6}]]]

GraphPlot@GraphData[{"KTree",{2,{8,18}}},"Edges"]

s=Sqrt[3]/2;
v={{0,0},{1,0},{2,0},{1/2,-s},{3/2,-s},{1/2,s},{3/2,s},{(1/2),(1/(2 (Sqrt[3])))}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,2,5,3,7,6,1,4],e[6,2,7],e[3,2,1,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

RecognizeGraph/@gs

Degenerate

GraphData[{"KTree",{2,{8,18}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,18}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,18}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,18}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,18}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,18}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,18}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,18}}},"Planar"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,18}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,18}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,18}}}]]

v=CirclePoints[{1,Pi/2},6];
v=Join[v,{v[[2]]+{1/4,0},v[[2]]+{1/4,-1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,5],e[4,1,3],e[2,7,1,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,18}}},"Circulant"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,18}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,18}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,18}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,18}}}&]

RootGraph[GraphData[{"KTree",{2,{8,18}}}]]

Halin

GraphData[{"KTree",{2,{8,18}}},"Halin"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,18}}},"Rigid"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,18}}},"Flexible"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,18}}},"LCF"]

GraphData[{"KTree",{2,{8,18}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,18}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,18}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,18}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,18}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,18}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,18}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,18}}},"VertexList"],GraphData[{"KTree",{2,{8,18}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,18}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,18}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,18}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,18}}},"Matchstick"]

GraphData[{"KTree",{2,{8,18}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,18}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,18}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,18}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,18}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,18}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 19}}}

Names

GraphData[{"KTree",{2,{8,19}}},"StandardName"]

GraphData[{"KTree",{2,{8,19}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,19}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,19}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,19}}},"Configuration"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,19}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,19}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{2,{8,19}}},"Edges"],GraphLayout->"SpringEmbedding"]

RotateGraph[GraphicsToGraph@,Pi]

Mean[v[[{3,4,7}]]]//FullSimplify

s=Sqrt[3]/2;
v={{0,0},{1,0},{1,1},{0,1},{1+s,1/2},{-s,1/2},{1/2,s+1},{(1/2),(1/6) (6+(Sqrt[3]))}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,5,3,7,4,6,1,4,3,2],e[1,3,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot[GraphData[{"KTree",{2,{8,19}}},"Edges"],GraphLayout->"SpringEmbedding"]

RotateGraph[GraphicsToGraph@,Pi]

Mean[v[[{4,5,7}]]]

s=Sqrt[3]/2;
v={{0,0},{1,0},{2,0},{1/2,s},{3/2,s},{5/2,s},{1,2s},{1,(2/(Sqrt[3]))}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,5,7,4,1],e[4,2,5,8,4,5,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{2,{8,19}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,19}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,19}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,19}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,19}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,19}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,19}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,19}}},"Planar"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,19}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,19}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,19}}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,19}}},"Circulant"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,19}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,19}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,19}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,19}}}&]

RootGraph[GraphData[{"KTree",{2,{8,19}}}]]

Halin

GraphData[{"KTree",{2,{8,19}}},"Halin"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,19}}},"Rigid"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,19}}},"Flexible"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,19}}},"LCF"]

GraphData[{"KTree",{2,{8,19}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,19}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,19}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,19}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,19}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,19}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,19}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,19}}},"VertexList"],GraphData[{"KTree",{2,{8,19}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,19}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,19}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,19}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,19}}},"Matchstick"]

GraphData[{"KTree",{2,{8,19}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,19}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,19}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,19}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,19}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,19}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 20}}}

Names

GraphData[{"KTree",{2,{8,20}}},"StandardName"]

GraphData[{"KTree",{2,{8,20}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,20}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,20}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,20}}},"Configuration"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,20}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,20}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,20}}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

Mean[v[[{1,5,7}]]]

s=Sqrt[3]/2;
v={{0,0},{1/2,0},{1,0},{1,1},{0,1},{1/2,1+s},{-s,1/2},{-(1/(2 (Sqrt[3]))),(1/2)}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,6,5,7,1,5],e[1,8,5,2,4,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

v={{-1,0},{0,0},{1,0},{0,2s},{-1/2,s},{1/2,s}};
v=Join[v,Subdivide[v[[2]],Mean[v[[{1,5}]]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,4,5,1,8,5,7,1],e[5,2,6,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"KTree",{2,{8,20}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,20}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,20}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,20}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,20}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,20}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,20}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,20}}},"Planar"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,20}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,20}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,20}}}]]

v=CirclePoints[{1,Pi/2},6];
v=Join[v,{v[[2]]+{1,0}/4,v[[2]]+{1,-1}/4}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,5,3,1,8,2,7,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,20}}},"Circulant"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,20}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,20}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,20}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,20}}}&]

RootGraph[GraphData[{"KTree",{2,{8,20}}}]]

Halin

GraphData[{"KTree",{2,{8,20}}},"Halin"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,20}}},"Rigid"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,20}}},"Flexible"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,20}}},"LCF"]

GraphData[{"KTree",{2,{8,20}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,20}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,20}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,20}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,20}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,20}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,20}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,20}}},"VertexList"],GraphData[{"KTree",{2,{8,20}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,20}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,20}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,20}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,20}}},"Matchstick"]

GraphData[{"KTree",{2,{8,20}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,20}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,20}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,20}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,20}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,20}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 21}}} == {"Polyiamond", {6, 6}}

Names

GraphData[{"KTree",{2,{8,21}}},"StandardName"]

GraphData[{"KTree",{2,{8,21}}},"StandardNames"]

{"KTree", {2, {8, 22}}} == {"Polyiamond", {6, 12}}

Names

GraphData[{"KTree",{2,{8,22}}},"StandardName"]

GraphData[{"KTree",{2,{8,22}}},"StandardNames"]

{"KTree", {2, {8, 23}}}

Names

GraphData[{"KTree",{2,{8,23}}},"StandardName"]

GraphData[{"KTree",{2,{8,23}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,23}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,23}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,23}}},"Configuration"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,23}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,23}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,23}}},"Edges"]

v={{0,0},{1,0},{2,0},{3,0},{3,1},{3,2},{0,2},{0,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,3,5,2,7,8,1],e[2,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot@GraphData[{"KTree",{2,{8,23}}},"Edges"]

Mean[v[[#]]]&/@{{1,2,6},{3,4,5}}

v={{0,0},{1,0},{2,0},{3,0},{3,1},{0,1},{(1/3),(1/3)},{(8/3),(1/3)}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,4,5,2,6,7,2],e[6,3,5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"KTree",{2,{8,23}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,23}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,23}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,23}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,23}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,23}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,23}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,23}}},"Planar"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,23}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,23}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{8,23}}}],TimeConstraint->1])//AbsoluteTiming

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,23}}}]]

RotateGraph[GraphicsToGraph@,4Pi/5]

Mean[v[[{2,3,4}]]]//FullSimplify

v=Join[CirclePoints[5],{{0,(1/6) (1+(Sqrt[5]))}}];
v=Join[v,Subdivide[Mean[v[[{1,5}]]],v[[2]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,7,5,8,1],e[5,2,4,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,23}}},"Circulant"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,23}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,23}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,23}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,23}}}&]

RootGraph[GraphData[{"KTree",{2,{8,23}}}]]

Halin

GraphData[{"KTree",{2,{8,23}}},"Halin"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,23}}},"Rigid"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,23}}},"Flexible"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,23}}},"LCF"]

GraphData[{"KTree",{2,{8,23}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,23}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,23}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,23}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,23}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,23}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,23}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,23}}},"VertexList"],GraphData[{"KTree",{2,{8,23}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,23}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,23}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,23}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,23}}},"Matchstick"]

GraphData[{"KTree",{2,{8,23}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,23}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,23}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,23}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,23}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,23}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 24}}}

Names

GraphData[{"KTree",{2,{8,24}}},"StandardName"]

GraphData[{"KTree",{2,{8,24}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,24}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,24}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,24}}},"Configuration"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,24}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,24}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,24}}},"Edges"]

v={{0,0},{1,0},{2,0},{3,0},{3,1},{2,1},{1,1},{0,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,6,3,5,6,7,8,1,7,3],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Mean[v[[{3,4,6}]]]//FullSimplify

v={{0,0},{1,0},{2,0},{2+Sqrt[3]/2,1/2},{(1/6) (12+(Sqrt[3])),(1/2)},{2,1},{1,1},{0,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,6,3,5,6,7,8,1,7,3],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{2,{8,24}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,24}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,24}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,24}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,24}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,24}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,24}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,24}}},"Planar"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,24}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,24}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,24}}}]]

v=Join[CirclePoints[{1,Pi/2},6]];
v=Join[v,Subdivide[v[[3]],Mean[v[[{1,2}]]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,3,6],{3,5},e[2,8,1,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,24}}},"Circulant"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,24}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,24}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,24}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,24}}}&]

RootGraph[GraphData[{"KTree",{2,{8,24}}}]]

Halin

GraphData[{"KTree",{2,{8,24}}},"Halin"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,24}}},"Rigid"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,24}}},"Flexible"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,24}}},"LCF"]

GraphData[{"KTree",{2,{8,24}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,24}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,24}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,24}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,24}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,24}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,24}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,24}}},"VertexList"],GraphData[{"KTree",{2,{8,24}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,24}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,24}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,24}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,24}}},"Matchstick"]

GraphData[{"KTree",{2,{8,24}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,24}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,24}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,24}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,24}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,24}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 25}}} == {"Polyiamond", {6, 5}}

Names

GraphData[{"KTree",{2,{8,25}}},"StandardName"]

GraphData[{"KTree",{2,{8,25}}},"StandardNames"]

{"KTree", {2, {8, 26}}} == {"Fan", {1, 7}}

Names

GraphData[{"KTree",{2,{8,26}}},"StandardName"]

GraphData[{"KTree",{2,{8,26}}},"StandardNames"]

{"KTree", {2, {8, 27}}} == {"Polyiamond", {6, 3}}

Names

GraphData[{"KTree",{2,{8,27}}},"StandardName"]

GraphData[{"KTree",{2,{8,27}}},"StandardNames"]

{"KTree", {2, {8, 28}}}

Names

GraphData[{"KTree",{2,{8,28}}},"StandardName"]

GraphData[{"KTree",{2,{8,28}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,28}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,28}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,28}}},"Configuration"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,28}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,28}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,28}}},"Edges"]

s=Sqrt[3]/2;
v={{0,0},{1,0},{2,0},{3,0},{1/2,s},{3/2,s},{5/2,s}};
AppendTo[v,Mean[v[[{3,4,7}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,7,6,5,1],e[5,2,6,3,7,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

s=Sqrt[3]/2;
v={{0,0},{1,0},{2,0},{2+s,1/2},{2,1},{1,1},{0,1}};
AppendTo[v,Mean[v[[{3,4,5}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1],e[7,2,6,3,5,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{2,{8,28}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,28}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,28}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,28}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,28}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,28}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,28}}},"Hamiltonian"]

GraphData[{"KTree",{2,{8,28}}},"LCF"]

Planar

GraphData[{"KTree",{2,{8,28}}},"Planar"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,28}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,28}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{8,28}}}],TimeConstraint->1])//AbsoluteTiming

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,28}}}]]

RotateGraph[GraphicsToGraph@,Pi/6]

v=CirclePoints[6];
v=Join[v,Subdivide[v[[6]],Mean[v[[{4,5}]]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,3,6,4,8,5,7,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,28}}},"Circulant"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,28}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{2,{8,28}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,28}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,28}}}&]

RootGraph[GraphData[{"KTree",{2,{8,28}}}]]

Halin

GraphData[{"KTree",{2,{8,28}}},"Halin"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,28}}},"Rigid"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,28}}},"Flexible"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,28}}},"LCF"]

GraphData[{"KTree",{2,{8,28}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,28}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,28}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,28}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,28}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,28}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,28}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,28}}},"VertexList"],GraphData[{"KTree",{2,{8,28}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,28}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,28}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,28}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,28}}},"Matchstick"]

GraphData[{"KTree",{2,{8,28}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,28}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,28}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,28}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,28}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,28}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 29}}}

Names

GraphData[{"KTree",{2,{8,29}}},"StandardName"]

GraphData[{"KTree",{2,{8,29}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,29}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,29}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,29}}},"Configuration"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,29}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,29}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{2,{8,29}}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

s=Sqrt[3]/2;
v=Join[{{0,0},{1,0},{1,1},{0,1}},Rest@Subdivide[{1/2,1},{1/2,s+1},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,8,4,1],e[2,4,3,6,4,5,6],e[4,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

v={{0,0},{1,0},{2,0},{2,1},{1,1},{0,1},{5/4,1/4},{3/2,1/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,5,2,8,7,5,3],{8,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"KTree",{2,{8,29}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,29}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,29}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,29}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,29}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,29}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,29}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,29}}},"Planar"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,29}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,29}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,29}}}]]

v=Join[CirclePoints[5],{#/6,-1/4}&/@{-1,1}];
v=Join[v,{v[[4]]+{1/3,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,3,7,6,3,5,6],e[4,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,29}}},"Circulant"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,29}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,29}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,29}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,29}}}&]

RootGraph[GraphData[{"KTree",{2,{8,29}}}]]

Halin

GraphData[{"KTree",{2,{8,29}}},"Halin"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,29}}},"Rigid"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,29}}},"Flexible"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,29}}},"LCF"]

GraphData[{"KTree",{2,{8,29}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,29}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,29}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,29}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,29}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,29}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,29}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,29}}},"VertexList"],GraphData[{"KTree",{2,{8,29}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,29}}},"Graph",#]&/@{"All","UnitDistance"})

GraphPlot@

v={{0,0},{2,0},{2,1},{1,1},{0,1}};
v=Join[v,Subdivide[v[[2]],Mean[v[[{3,4}]]],4][[2;;-2]]];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,2,3,4,5,1,4,2,6,7,4,8,3],{4,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,29}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,29}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,29}}},"Matchstick"]

GraphData[{"KTree",{2,{8,29}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,29}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,29}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,29}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,29}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,29}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 30}}}

Names

GraphData[{"KTree",{2,{8,30}}},"StandardName"]

GraphData[{"KTree",{2,{8,30}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,30}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,30}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,30}}},"Configuration"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,30}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,30}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,30}}},"Edges"]

v={{0,0},{1,0},{3/2,0},{2,0},{2,1},{0,1},{1,1/3},{1,2/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1],e[6,2,5,8,7,2],e[7,5,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{2,{8,30}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,30}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,30}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,30}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,30}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,30}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,30}}},"Hamiltonian"]

GraphData[{"KTree",{2,{8,30}}},"LCF"]

Planar

GraphData[{"KTree",{2,{8,30}}},"Planar"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,30}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,30}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,30}}}]]

v=CirclePoints[5];
v=Join[v,Subdivide[v[[4]],v[[2]],4][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1],e[2,5,3,7,8],e[3,8,5],e[4,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,30}}},"Circulant"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,30}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,30}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,30}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,30}}}&]

RootGraph[GraphData[{"KTree",{2,{8,30}}}]]

Halin

GraphData[{"KTree",{2,{8,30}}},"Halin"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,30}}},"Rigid"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,30}}},"Flexible"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,30}}},"LCF"]

GraphData[{"KTree",{2,{8,30}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,30}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,30}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,30}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,30}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,30}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,30}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,30}}},"VertexList"],GraphData[{"KTree",{2,{8,30}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,30}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,30}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,30}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,30}}},"Matchstick"]

GraphData[{"KTree",{2,{8,30}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,30}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,30}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,30}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,30}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,30}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 31}}}

Names

GraphData[{"KTree",{2,{8,31}}},"StandardName"]

GraphData[{"KTree",{2,{8,31}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,31}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,31}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,31}}},"Configuration"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,31}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,31}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,31}}},"Edges"]

RotateGraph[GraphicsToGraph@,Pi]

Mean[v[[{2,5,6}]]]

s=Sqrt[3]/2;
v={{0,0},{1,0},{2,0},{3,0},{1/2,s},{3/2,s},{5/2,s},{1,(1/(Sqrt[3]))}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,7,6,5,1],e[5,2,6,3,7],e[2,8,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Mean[v[[{2,3,5}]]]

RecognizeGraph[g]

v={{0,0},{1,0},{2,0},{2,1},{3/2,1},{1,1},{0,1},{(3/2),(1/3)}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,6,2,5,3],e[2,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{2,{8,31}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,31}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,31}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,31}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,31}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,31}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,31}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{2,{8,31}}},"Planar"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,31}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,31}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,31}}}]]

v[[4,2]]

d=EuclideanDistance@@v[[{4,7}]]//FullSimplify

v=Join[CirclePoints[5],{{0,(1/4) (-1+(Sqrt[5]))}}];
v=Join[v,{Mean[v[[{4,6}]]]}];
AppendTo[v,v[[4]]+{d/2,-d Sqrt[3]/2}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1],e[2,5,6,3,5],e[3,7,8,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,31}}},"Circulant"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,31}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,31}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,31}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,31}}}&]

RootGraph[GraphData[{"KTree",{2,{8,31}}}]]

Halin

GraphData[{"KTree",{2,{8,31}}},"Halin"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,31}}},"Rigid"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,31}}},"Flexible"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,31}}},"LCF"]

GraphData[{"KTree",{2,{8,31}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,31}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,31}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,31}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,31}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,31}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,31}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,31}}},"VertexList"],GraphData[{"KTree",{2,{8,31}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,31}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,31}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,31}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,31}}},"Matchstick"]

GraphData[{"KTree",{2,{8,31}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,31}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,31}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,31}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,31}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,31}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 32}}} == {"Polyiamond", {6, 10}}

Names

GraphData[{"KTree",{2,{8,32}}},"StandardName"]

GraphData[{"KTree",{2,{8,32}}},"StandardNames"]

{"KTree", {2, {8, 33}}}

Names

GraphData[{"KTree",{2,{8,33}}},"StandardName"]

GraphData[{"KTree",{2,{8,33}}},"StandardNames"]

Primary

GraphData[{"KTree",{2,{8,33}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{2,{8,33}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{2,{8,33}}},"Configuration"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{2,{8,33}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{2,{8,33}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{2,{8,33}}},"Edges"]

Mean[v[[{3,7,6}]]]

v={{0,0},{1,0},{2,0},{3,0},{3,1},{2,1},{1,1},{(5/3),(2/3)}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1],e[2,7,3,6,8,3,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Mean[v[[{2,3,7}]]]

v={{(4/3),(1/3)},{1,0},{2,0},{3,0},{3,1},{2,1},{1,1},{(5/3),(2/3)}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1],e[2,7,3,6,8,3,5]},VertexCoordinates->v,VertexLabels->Automatic]

gs=UnlabelGraph/@{,,}

Degenerate

GraphData[{"KTree",{2,{8,33}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{2,{8,33}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{2,{8,33}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{2,{8,33}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{2,{8,33}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{2,{8,33}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{2,{8,33}}},"Hamiltonian"]

GraphData[{"KTree",{2,{8,33}}},"LCF"]

Planar

GraphData[{"KTree",{2,{8,33}}},"Planar"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{2,{8,33}}},{"RCN","CN"}]

GraphData[{"KTree",{2,{8,33}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{2,{8,33}}}],TimeConstraint->1])//AbsoluteTiming

GraphPlot@MinimalCrossingGraph[GraphData[{"KTree",{2,{8,33}}}],"CrossingNumber"->cn]

v[[4]]

v=Join[CirclePoints[5],{{0,0}}];
v=Join[v,{v[[4]]+{1/2,0},v[[4]]+{1/4,-Sqrt[3]/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,3,6,5,3,7,8,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{2,{8,33}}},"Circulant"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{2,{8,33}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{2,{8,33}}},"Line"]

LineGraphQ[GraphData[{"KTree",{2,{8,33}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{2,{8,33}}}&]

RootGraph[GraphData[{"KTree",{2,{8,33}}}]]

Halin

GraphData[{"KTree",{2,{8,33}}},"Halin"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{2,{8,33}}},"Rigid"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{2,{8,33}}},"Flexible"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{2,{8,33}}},"LCF"]

GraphData[{"KTree",{2,{8,33}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{2,{8,33}}},"LCFSignature"]

GraphData[{"KTree",{2,{8,33}}},"LCFNotations"]

GraphData[{"KTree",{2,{8,33}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{2,{8,33}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{2,{8,33}}}],Debug->True]//Timing

GraphData[{"KTree",{2,{8,33}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{2,{8,33}}},"VertexList"],GraphData[{"KTree",{2,{8,33}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{2,{8,33}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,33}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{2,{8,33}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{2,{8,33}}},"Matchstick"]

GraphData[{"KTree",{2,{8,33}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{2,{8,33}}},"Edges"]]

3D All

GraphData[{"KTree",{2,{8,33}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{2,{8,33}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{2,{8,33}}},"Polyhedral"]

GraphData[{"KTree",{2,{8,33}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {2, {8, 34}}} == {"Polyiamond", {6, 9}}

Names

GraphData[{"KTree",{2,{8,34}}},"StandardName"]

GraphData[{"KTree",{2,{8,34}}},"StandardNames"]

{"KTree", {2, {8, 35}}} == {"Polyiamond", {6, 8}}

Names

GraphData[{"KTree",{2,{8,35}}},"StandardName"]

GraphData[{"KTree",{2,{8,35}}},"StandardNames"]

{"KTree", {2, {8, 36}}} == {"Polyiamond", {6, 7}}

Names

GraphData[{"KTree",{2,{8,36}}},"StandardName"]

GraphData[{"KTree",{2,{8,36}}},"StandardNames"]

{"KTree", {2, {8, 37}}} == {"Polyiamond", {6, 4}}

Names

GraphData[{"KTree",{2,{8,37}}},"StandardName"]

GraphData[{"KTree",{2,{8,37}}},"StandardNames"]

{"KTree", {2, {8, 38}}} == {"Polyiamond", {6, 1}}

Names

GraphData[{"KTree",{2,{8,38}}},"StandardName"]

GraphData[{"KTree",{2,{8,38}}},"StandardNames"]

{"KTree", {2, {8, 39}}} == {"Polyiamond", {6, 2}}

Names

GraphData[{"KTree",{2,{8,39}}},"StandardName"]

GraphData[{"KTree",{2,{8,39}}},"StandardNames"]

{"KTree", {2, {9, 1}}} == {"CompleteTripartite", {1, 1, 7}}

Names

GraphData[{"KTree",{2,{9,1}}},"StandardName"]

GraphData[{"KTree",{2,{9,1}}},"StandardNames"]

{"KTree", {2, {9, 117}}} == {"Fan", {1, 8}}

Names

GraphData[{"KTree",{2,{9,117}}},"StandardName"]

GraphData[{"KTree",{2,{9,117}}},"StandardNames"]

{"KTree", {2, {9, 130}}} == "SmallestCyclicGroupGraph"

Names

GraphData[{"KTree",{2,{9,130}}},"StandardName"]

GraphData[{"KTree",{2,{9,130}}},"StandardNames"]

{"KTree", {2, {10, 1}}} == {"CompleteTripartite", {1, 1, 8}}

Names

GraphData[{"KTree",{2,{10,1}}},"StandardName"]

GraphData[{"KTree",{2,{10,1}}},"StandardNames"]

{"KTree", {2, {11, 1}}} == {"CompleteTripartite", {1, 1, 9}}

Names

GraphData[{"KTree",{2,{11,1}}},"StandardName"]

GraphData[{"KTree",{2,{11,1}}},"StandardNames"]

{"KTree", {2, {12, 1}}} == {"CompleteTripartite", {1, 1, 10}}

Names

GraphData[{"KTree",{2,{12,1}}},"StandardName"]

GraphData[{"KTree",{2,{12,1}}},"StandardNames"]

3-trees

TextGrid[DeleteCases[{FirstCase[GraphData[#,"StandardNames"],{"KTree",{3,_}}],#}&/@GraphData["KTree"],{_Missing,_}]//Sort,Dividers->All]

{"KTree", {3, {4, 1}}} == "TetrahedralGraph"

Names

GraphData[{"KTree",{3,{4,1}}},"StandardName"]

GraphData[{"KTree",{3,{4,1}}},"StandardNames"]

{"KTree", {3, {5, 1}}} == {"Dipyramid", 3}

Names

GraphData[{"KTree",{3,{5,1}}},"StandardName"]

GraphData[{"KTree",{3,{5,1}}},"StandardNames"]

{"KTree", {3, {6, 1}}} == {"CompleteKPartite", {1, 1, 1, 3}}

Names

GraphData[{"KTree",{3,{6,1}}},"StandardName"]

GraphData[{"KTree",{3,{6,1}}},"StandardNames"]

{"KTree", {3, {6, 2}}} == "TritetrahedralGraph"

Names

GraphData[{"KTree",{3,{6,2}}},"StandardName"]

GraphData[{"KTree",{3,{6,2}}},"StandardNames"]

{"KTree", {3, {7, 1}}} == {"CompleteKPartite", {1, 1, 1, 4}}

Names

GraphData[{"KTree",{3,{7,1}}},"StandardName"]

GraphData[{"KTree",{3,{7,1}}},"StandardNames"]

{"KTree", {3, {7, 2}}}

Names

GraphData[{"KTree",{3,{7,2}}},"StandardName"]

GraphData[{"KTree",{3,{7,2}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{7,2}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{7,2}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{7,2}}},"Configuration"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{7,2}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{7,2}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{3,{7,2}}},"Edges"]

v=Join[CirclePoints[{1,Pi/2},4],{{-1/2,0}},{1/2,#/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,3,7,1,6,3,1],e[2,5,4],e[7,4,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs={,}

Degenerate

GraphData[{"KTree",{3,{7,2}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{7,2}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{7,2}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{7,2}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{7,2}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{7,2}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{7,2}}},"Hamiltonian"]

GraphData[{"KTree",{3,{7,2}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{7,2}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{7,2}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"KTree",{3,{7,2}}},"Planar"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{7,2}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{7,2}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{7,2}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{7,2}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{7,2}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{7,2}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{7,2}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{7,2}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{7,2}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{7,2}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{7,2}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{7,2}}},"Circulant"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{7,2}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{3,{7,2}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{7,2}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{7,2}}}&]

RootGraph[GraphData[{"KTree",{3,{7,2}}}]]

Halin

GraphData[{"KTree",{3,{7,2}}},"Halin"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{7,2}}},"Rigid"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{7,2}}},"Flexible"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{7,2}}},"LCF"]

GraphData[{"KTree",{3,{7,2}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{7,2}}},"LCFSignature"]

GraphData[{"KTree",{3,{7,2}}},"LCFNotations"]

GraphData[{"KTree",{3,{7,2}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{7,2}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{7,2}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{7,2}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{7,2}}},"VertexList"],GraphData[{"KTree",{3,{7,2}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{7,2}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{7,2}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{7,2}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{7,2}}},"Matchstick"]

GraphData[{"KTree",{3,{7,2}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{7,2}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{7,2}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{7,2}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{7,2}}},"Polyhedral"]

GraphData[{"KTree",{3,{7,2}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {7, 3}}}

Names

GraphData[{"KTree",{3,{7,3}}},"StandardName"]

GraphData[{"KTree",{3,{7,3}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{7,3}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{7,3}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{7,3}}},"Configuration"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{7,3}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{7,3}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"Heptahedral",15},"Edges"]

e[l__]:=Sequence@@Partition[{l},2,1]
v={{0,0},{1,0},{1,1},{1/2,1},{0,1},{1/4,1/2},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,7,6,2,3,4,5,1,6,5,7,3,6,4,7,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"Heptahedral",15},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"KTree",{3,{7,3}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{7,3}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{7,3}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{7,3}}},"Polyhedron"]

PolyhedronGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

GraphPlot@PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{0,.01,.01}]

GraphPlot@PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{1,0.01,0}]

GraphPlot@PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{1,1,0}]

v=Join[UnitCirclePoints[5],{#/2,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,7,6,1,2,3,4,5,6,3,7,1],{2,6},{4,7},{4,6},{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

r=RecognizeGraph[g]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,3}}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"KTree",{3,{7,3}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{7,3}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{7,3}}},"Hamiltonian"]

GraphData[{"KTree",{3,{7,3}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{7,3}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{7,3}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"KTree",{3,{7,3}}},"Planar"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{7,3}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{7,3}}},"Graph","MinimalCrossing"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Heptahedral",15}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Heptahedral",15}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,}

Tutte embedding construction #1

GraphPlot[RotateGraph[,2Pi/3]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{0,Sqrt[3]i/5},{i,4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,5,1,6,2,7,1],e[3,7,6,5,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction #2

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/2},{1/2,1/2},{-1/8,1},{1/8,1}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,2],e[4,3,5,6,4],e[1,5,7,6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction #3

GraphPlot[RotateGraph[,-4Pi/3]]

v=Join[];
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Circulant

GraphData[{"KTree",{3,{7,3}}},"Circulant"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{7,3}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{3,{7,3}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{7,3}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{7,3}}}&]

RootGraph[GraphData[{"KTree",{3,{7,3}}}]]

Halin

GraphData[{"KTree",{3,{7,3}}},"Halin"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{7,3}}},"Rigid"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{7,3}}},"Flexible"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{7,3}}},"LCF"]

GraphData[{"KTree",{3,{7,3}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{7,3}}},"LCFSignature"]

GraphData[{"KTree",{3,{7,3}}},"LCFNotations"]

GraphData[{"KTree",{3,{7,3}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{7,3}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{7,3}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{7,3}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{7,3}}},"VertexList"],GraphData[{"KTree",{3,{7,3}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{7,3}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{7,3}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{7,3}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{7,3}}},"Matchstick"]

GraphData[{"KTree",{3,{7,3}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{7,3}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{7,3}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{7,3}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Heptahedral",15},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Heptahedral",15},"Polyhedron"]}]

3D Canonical Polyhedron

Graphics3D[{Opacity[.5],Red,GraphData[{"Heptahedral",15},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Heptahedral",15}],-1]}]

(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]

{"KTree", {3, {7, 4}}} == {"Apollonian", 2}

Names

GraphData[{"KTree",{3,{7,4}}},"StandardName"]

GraphData[{"KTree",{3,{7,4}}},"StandardNames"]

{"KTree", {3, {7, 5}}}

Names

GraphData[{"KTree",{3,{7,5}}},"StandardName"]

GraphData[{"KTree",{3,{7,5}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{7,5}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{7,5}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{7,5}}},"Configuration"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{7,5}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{7,5}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"Heptahedral",29},"Edges"],GraphLayout->"SpringEmbedding"]

v=Join[Subdivide[{0,0},{1,0},3],Subdivide[{1,1},{0,1},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[{1,7},1,6,4],e[7,2,6,3,5,2],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"KTree",{3,{7,5}}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"KTree",{3,{7,5}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{7,5}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{7,5}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{7,5}}},"Polyhedron"]

PolyhedronGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{0,0,1}]

GraphPlot@PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{0,1,0,π}]

GraphPlot@PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{1,0.01,0,π}]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{#/2,1/4}&/@{-1,1},{#/5,3/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,5,3,4,2,7,4,1,6,5,2],e[6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{1,1,0,π}]

v=Join[UnitCirclePoints[5]];
v=Join[v,{#/2,v[[4,2]]}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,4,6,1,2,3,4,5,1,3,5,7,2,5],e[6,3,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs=UnlabelGraph/@{,}

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"KTree",{3,{7,5}}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"KTree",{3,{7,5}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{7,5}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{7,5}}},"Hamiltonian"]

GraphData[{"KTree",{3,{7,5}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{7,5}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{7,5}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"KTree",{3,{7,5}}},"Planar"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{7,5}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{7,5}}},"Graph","MinimalCrossing"]//StyleGraphs

Circulant

GraphData[{"KTree",{3,{7,5}}},"Circulant"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{7,5}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{3,{7,5}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{7,5}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{7,5}}}&]

RootGraph[GraphData[{"KTree",{3,{7,5}}}]]

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"Heptahedral",29}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"Heptahedral",29}],"OuterFace"->#]&/@faces

gs=Annotate[#,{VertexLabels->None,ImageSize->Tiny}]&/@{,,,,}

{,,,,}

RecognizeGraph/@gs

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/2},{0,1/2},{1/4,1/2},{-1/8,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,1,6,3,7,1,2,3,1,4,5,6,2],e[4,7,5,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{-1/4,1/2},{1/4,1/2},{0,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,6,3,5,1,6,7,5,6,4],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #3

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{i,3/4},{i,-3/8,3/8,1/4}]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,3,5,1,6,3,7,2,6],e[4,5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #4

GraphPlot[RotateGraph[]]

v=Join[UnitCirclePoints[3],CirclePoints[1/4,3],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,1,4,5,6,4,2,6,3],e[6,7,5,2],{4,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Tutte embedding construction 3 #5

GraphPlot[RotateGraph[]]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Table[{0,Sqrt[3]i/4},{i,3}]];
AppendTo[v,{1/4,v[[4,2]]}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,7,2,6,1,5,7,1],e[4,5,6,3],{6,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Halin

GraphData[{"KTree",{3,{7,5}}},"Halin"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{7,5}}},"Rigid"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{7,5}}},"Flexible"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{7,5}}},"LCF"]

GraphData[{"KTree",{3,{7,5}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{7,5}}},"LCFSignature"]

GraphData[{"KTree",{3,{7,5}}},"LCFNotations"]

GraphData[{"KTree",{3,{7,5}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{7,5}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{7,5}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{7,5}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{7,5}}},"VertexList"],GraphData[{"KTree",{3,{7,5}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{7,5}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{7,5}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{7,5}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{7,5}}},"Matchstick"]

GraphData[{"KTree",{3,{7,5}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{7,5}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{7,5}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{7,5}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"Heptahedral",29},"Graph",{"3D","Polyhedron"}]

Graphics3D[{FaceForm[Green,Red],GraphData[{"Heptahedral",29},"Polyhedron"]}]

3D Polyhedron Canonical

Graphics3D[{Opacity[.5],Red,GraphData[{"Heptahedral",29},"Polyhedron"],Yellow,Sphere[]}]

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"Heptahedral",29}],1]}]

(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]

{"KTree", {3, {8, 1}}} == {"CompleteKPartite", {1, 1, 1, 5}}

Names

GraphData[{"KTree",{3,{8,1}}},"StandardName"]

GraphData[{"KTree",{3,{8,1}}},"StandardNames"]

{"KTree", {3, {8, 2}}}

Names

GraphData[{"KTree",{3,{8,2}}},"StandardName"]

GraphData[{"KTree",{3,{8,2}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,2}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,2}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,2}}},"Configuration"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,2}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,2}}},"EdgeList"]]

Default embedding

RotateGraph[Graph[GraphData[{"KTree",{3,{8,2}}},"Edges"],GraphLayout->"CircularEmbedding"],Pi]

v=CirclePoints[{1,Pi/2},8];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,7,6,5,4,3,5,7],e[4,2,6,8,4,1,6,4],e[2,5,8],{1,5},{3,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

EdgeAdd[g,4\[UndirectedEdge]7]//RecognizeGraph

RotateGraph[Graph[GraphData[{"KTree",{3,{8,2}}},"Edges"],GraphLayout->"RadialEmbedding"],5Pi/7]

v=Join[CirclePoints[{1,Pi/2},7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,4,5,6,8,3,6,4,2,8,7,5,8,1,4,7],e[2,5,1],{4,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{3,{8,2}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,2}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,2}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,2}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,2}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,2}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,2}}},"Hamiltonian"]

Planar

GraphData[{"KTree",{3,{8,2}}},"Planar"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,2}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,2}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,2}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,2}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,2}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,2}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,2}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,2}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,2}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,2}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,2}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@

v={{-1,0},{0,1/8},{1,0},{0,Sqrt[3]},{-1/4,1/8+1/8},{0,1/4+1/8+1/8},{1/8,1/2+1/8+1/8},{0,1+1/8}};

v[[7]]=v[[6]]+(v[[6]]-v[[5]])

g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,1,2,3,4,1,8,3,7,1,6,3,5,1],e[2,6,8,4],e[5,6,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,2}}},"Circulant"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,2}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

Line graph

GraphData[{"KTree",{3,{8,2}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,2}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,2}}}&]

RootGraph[GraphData[{"KTree",{3,{8,2}}}]]

Halin

GraphData[{"KTree",{3,{8,2}}},"Halin"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,2}}},"Rigid"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,2}}},"Flexible"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,2}}},"LCF"]

GraphData[{"KTree",{3,{8,2}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,2}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,2}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,2}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,2}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,2}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,2}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,2}}},"VertexList"],GraphData[{"KTree",{3,{8,2}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,2}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,2}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,2}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,2}}},"Matchstick"]

GraphData[{"KTree",{3,{8,2}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,2}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,2}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,2}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,2}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,2}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 3}}}

Names

GraphData[{"KTree",{3,{8,3}}},"StandardName"]

GraphData[{"KTree",{3,{8,3}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,3}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,3}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,3}}},"Configuration"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,3}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,3}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{3,{8,3}}},"Edges"]

v=Delete[Flatten[Table[{i,j},{i,-1,1},{j,-1,1}],1],{5}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,4,6,7,8,5,3,2,1,5,6],e[3,4,8],e[2,5,7,4,2,7],{4,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"KTree",{3,{8,3}}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs={,RotateGraph[,Pi/2]}

Degenerate

GraphData[{"KTree",{3,{8,3}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,3}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,3}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,3}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,3}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,3}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,3}}},"Hamiltonian"]

GraphData[{"KTree",{3,{8,3}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{8,3}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{8,3}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"KTree",{3,{8,3}}},"Planar"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,3}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,3}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,3}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,3}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,3}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,3}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,3}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,3}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,3}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,2000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,3}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,3}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@

GraphPlot@RotateGraph[,2Pi/3]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},Subdivide[{-1/2,1/4},{1/2,1/4},2],{-#/6,3/4}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,5,6,2,5,1,8,5,7,2],e[4,3,6],e[8,3,7],{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,3}}},"Circulant"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,3}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{3,{8,3}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,3}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,3}}}&]

RootGraph[GraphData[{"KTree",{3,{8,3}}}]]

Halin

GraphData[{"KTree",{3,{8,3}}},"Halin"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,3}}},"Rigid"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,3}}},"Flexible"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,3}}},"LCF"]

GraphData[{"KTree",{3,{8,3}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,3}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,3}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,3}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,3}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,3}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,3}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,3}}},"VertexList"],GraphData[{"KTree",{3,{8,3}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,3}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,3}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,3}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,3}}},"Matchstick"]

GraphData[{"KTree",{3,{8,3}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,3}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,3}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,3}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,3}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,3}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 4}}}

Names

GraphData[{"KTree",{3,{8,4}}},"StandardName"]

GraphData[{"KTree",{3,{8,4}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,4}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,4}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,4}}},"Configuration"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,4}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,4}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{3,{8,4}}},"Edges"]]

RotateGraph[Graph[GraphData[{"KTree",{3,{8,4}}},"Edges"],GraphLayout->"CircularEmbedding"],7Pi/8]

v=CirclePoints[8];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,7,8,1,2,3,6,8,5,1,4,8,2],e[5,7,4],e[7,1,6],{3,8},{1,3}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RotateGraph[Graph[GraphData[{"KTree",{3,{8,4}}},"Edges"],GraphLayout->"RadialEmbedding"],6Pi/7]

v=Join[CirclePoints[{1,-Pi/2},7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,6,7,1,8,3,1,6,8,2,5,1],e[7,8,4,1],{5,8},{2,4}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{3,{8,4}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,4}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,4}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,4}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,4}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,4}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,4}}},"Hamiltonian"]

GraphData[{"KTree",{3,{8,4}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{8,4}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{8,4}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

Planar

GraphData[{"KTree",{3,{8,4}}},"Planar"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,4}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,4}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,4}}}],TimeConstraint->1])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,4}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,4}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,4}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,4}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@RotateGraph[,-2Pi/3]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{0,5/4}},Subdivide[{-1/2,3/8},{1/2,3/8},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,1,4,2,8,4,5,1,6,4,3],e[5,6,7,2],e[4,7,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,4}}},"Circulant"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,4}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{3,{8,4}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,4}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,4}}}&]

RootGraph[GraphData[{"KTree",{3,{8,4}}}]]

Halin

GraphData[{"KTree",{3,{8,4}}},"Halin"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,4}}},"Rigid"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,4}}},"Flexible"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,4}}},"LCF"]

GraphData[{"KTree",{3,{8,4}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,4}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,4}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,4}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,4}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,4}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,4}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,4}}},"VertexList"],GraphData[{"KTree",{3,{8,4}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,4}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,4}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,4}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,4}}},"Matchstick"]

GraphData[{"KTree",{3,{8,4}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,4}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,4}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,4}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,4}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,4}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 5}}}

Names

GraphData[{"KTree",{3,{8,5}}},"StandardName"]

GraphData[{"KTree",{3,{8,5}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,5}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,5}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,5}}},"Configuration"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,5}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,5}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{3,{8,5}}},"Edges"]

v={{0,0},{1/2,0},{1,0},{1,1/2},{1,1},{1/2,1},{0,1},{3/4,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,2,6,1,8,6,4,2,8],e[7,8,5],e[3,8,4]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@RotateGraph[Graph[GraphData[{"KTree",{3,{8,5}}},"Edges"]],Pi/2]

v=Join[CirclePoints[5],{#/6,-1/4}&/@{-1,1}];
AppendTo[v,Mean[v[[{2,4}]]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,1,3,5,6,8,7,1,6],{5,7},e[4,8,2],e[5,8,1],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"KTree",{3,{8,5}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,5}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,5}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,5}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,5}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,5}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,5}}},"Hamiltonian"]

GraphData[{"KTree",{3,{8,5}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{8,5}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{8,5}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"KTree",{3,{8,5}}},"Planar"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,5}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,5}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,5}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,5}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,5}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,5}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,5}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,5}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,5}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,5}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,5}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{-1/4,3/4},{1/4,3/4},{0,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,1,2,3,1,5,8,4,2,8,1,6,3,7,2,5],e[6,8,7],{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[,3Pi/4]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/2},{1/2,1/2}},Subdivide[{-1/5,3/4},{1/5,3/4},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,5,4,2,3,1,4,3,5,2],e[4,6,3,8,5,7,4],e[6,7,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,5}}},"Circulant"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,5}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{3,{8,5}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,5}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,5}}}&]

RootGraph[GraphData[{"KTree",{3,{8,5}}}]]

Halin

GraphData[{"KTree",{3,{8,5}}},"Halin"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,5}}},"Rigid"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,5}}},"Flexible"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,5}}},"LCF"]

GraphData[{"KTree",{3,{8,5}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,5}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,5}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,5}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,5}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,5}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,5}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,5}}},"VertexList"],GraphData[{"KTree",{3,{8,5}}},"EdgeList"]],MaxIterations->500]

GraphPlot@

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,5}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,5}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,5}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,5}}},"Matchstick"]

GraphData[{"KTree",{3,{8,5}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,5}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,5}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,5}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,5}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,5}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 7}}}

Names

GraphData[{"KTree",{3,{8,7}}},"StandardName"]

GraphData[{"KTree",{3,{8,7}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,7}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,7}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,7}}},"Configuration"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,7}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,7}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{3,{8,7}}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{3,{8,7}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,7}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,7}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,7}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,7}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,7}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,7}}},"Hamiltonian"]

GraphData[{"KTree",{3,{8,7}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{8,7}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{8,7}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"KTree",{3,{8,7}}},"Planar"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,7}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,7}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,7}}}],TimeConstraint->1])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,7}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,7}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,7}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,7}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/4},{0,3/4},{1/4,3/4},{1/4,1/2},{1/8,1/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,4,2,7,8,1,5,6],e[4,5,3,6,2,5],e[2,8,5,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,7}}},"Circulant"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,7}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{3,{8,7}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,7}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,7}}}&]

RootGraph[GraphData[{"KTree",{3,{8,7}}}]]

Halin

GraphData[{"KTree",{3,{8,7}}},"Halin"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,7}}},"Rigid"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,7}}},"Flexible"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,7}}},"LCF"]

GraphData[{"KTree",{3,{8,7}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,7}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,7}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,7}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,7}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,7}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,7}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,7}}},"VertexList"],GraphData[{"KTree",{3,{8,7}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,7}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,7}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,7}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,7}}},"Matchstick"]

GraphData[{"KTree",{3,{8,7}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,7}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,7}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,7}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,7}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,7}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 8}}}

Names

GraphData[{"KTree",{3,{8,8}}},"StandardName"]

GraphData[{"KTree",{3,{8,8}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,8}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,8}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,8}}},"Configuration"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,8}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,8}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{3,{8,8}}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

v[[4,1]]

v={{-1,0},{1,0},{0,Sqrt[3]}};
v=Join[v,Mean[v[[{3,#}]]]&/@{1,2}];
v=Join[v,Subdivide[{-1/2,1/2},{1/2,1/2},2]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,7,2,5,3,4,1,6,5,4,8,2],e[4,6,7,8,5],e[4,7,5],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,,}

Degenerate

GraphData[{"KTree",{3,{8,8}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,8}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,8}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,8}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,8}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,8}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,8}}},"Hamiltonian"]

GraphData[{"KTree",{3,{8,8}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{8,8}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{8,8}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"KTree",{3,{8,8}}},"Planar"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,8}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,8}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,8}}}],TimeConstraint->1])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,8}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,8}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,8}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,8}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@

v={{-1,0},{1,0},{0,Sqrt[3]},{-3/8,1/4},{3/8,1/4},{-3/8,3/4},{0,3/4},{3/8,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,5,4,2,3,1,6,3,8,2,5,7,4,1],e[6,4,3,5,8],{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,8}}},"Circulant"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,8}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{3,{8,8}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,8}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,8}}}&]

RootGraph[GraphData[{"KTree",{3,{8,8}}}]]

Halin

GraphData[{"KTree",{3,{8,8}}},"Halin"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,8}}},"Rigid"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,8}}},"Flexible"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,8}}},"LCF"]

GraphData[{"KTree",{3,{8,8}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,8}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,8}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,8}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,8}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,8}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,8}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,8}}},"VertexList"],GraphData[{"KTree",{3,{8,8}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,8}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,8}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,8}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,8}}},"Matchstick"]

GraphData[{"KTree",{3,{8,8}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,8}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,8}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,8}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,8}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,8}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 9}}}

Names

GraphData[{"KTree",{3,{8,9}}},"StandardName"]

GraphData[{"KTree",{3,{8,9}}},"StandardNames"]

Primary

GraphData[{"KTree",{3,{8,9}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{3,{8,9}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{3,{8,9}}},"Configuration"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{3,{8,9}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{3,{8,9}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"KTree",{3,{8,9}}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{3,{8,9}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{3,{8,9}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{3,{8,9}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{3,{8,9}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{3,{8,9}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{3,{8,9}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{3,{8,9}}},"Hamiltonian"]

GraphData[{"KTree",{3,{8,9}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{3,{8,9}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{3,{8,9}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"KTree",{3,{8,9}}},"Planar"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{3,{8,9}}},{"RCN","CN"}]

GraphData[{"KTree",{3,{8,9}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{3,{8,9}}}],TimeConstraint->1])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{3,{8,9}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,9}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{3,{8,9}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{3,{8,9}}}],"CrossingNumber"->cn,RandomSeed->i],{i,1000}]//Union//Timing

GraphPlot@

Mean[v[[{6,7,3}]]]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,1/4},{1/4,1/4},{0,1/2},{1/4,1/2},{(1/12),(1/3) (1+(Sqrt[3]))}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,1,6,7,2,6,4,1,5,6,3,8,7,3],{2,4},{6,8},{2,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{3,{8,9}}},"Circulant"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{3,{8,9}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{3,{8,9}}},"Line"]

LineGraphQ[GraphData[{"KTree",{3,{8,9}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{3,{8,9}}}&]

RootGraph[GraphData[{"KTree",{3,{8,9}}}]]

Halin

GraphData[{"KTree",{3,{8,9}}},"Halin"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{3,{8,9}}},"Rigid"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{3,{8,9}}},"Flexible"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{3,{8,9}}},"LCF"]

GraphData[{"KTree",{3,{8,9}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{3,{8,9}}},"LCFSignature"]

GraphData[{"KTree",{3,{8,9}}},"LCFNotations"]

GraphData[{"KTree",{3,{8,9}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{3,{8,9}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{3,{8,9}}}],Debug->True]//Timing

GraphData[{"KTree",{3,{8,9}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{3,{8,9}}},"VertexList"],GraphData[{"KTree",{3,{8,9}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{3,{8,9}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,9}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{3,{8,9}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{3,{8,9}}},"Matchstick"]

GraphData[{"KTree",{3,{8,9}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{3,{8,9}}},"Edges"]]

3D All

GraphData[{"KTree",{3,{8,9}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{3,{8,9}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{3,{8,9}}},"Polyhedral"]

GraphData[{"KTree",{3,{8,9}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {3, {8, 6}}} == "TriakisTetrahedralGraph"

Names

GraphData[{"KTree",{3,{8,6}}},"StandardName"]

GraphData[{"KTree",{3,{8,6}}},"StandardNames"]

{"KTree", {3, {8, 10}}} == {"Triangulated", {8, 2}}

Names

GraphData[{"KTree",{3,{8,10}}},"StandardName"]

GraphData[{"KTree",{3,{8,10}}},"StandardNames"]

{"KTree", {3, {8, 11}}} == {"Triangulated", {8, 3}}

Names

GraphData[{"KTree",{3,{8,11}}},"StandardName"]

GraphData[{"KTree",{3,{8,11}}},"StandardNames"]

{"KTree", {3, {8, 12}}} == {"Triangulated", {8, 4}}

Names

GraphData[{"KTree",{3,{8,12}}},"StandardName"]

GraphData[{"KTree",{3,{8,12}}},"StandardNames"]

{"KTree", {3, {8, 13}}} == {"Triangulated", {8, 5}}

Names

GraphData[{"KTree",{3,{8,13}}},"StandardName"]

GraphData[{"KTree",{3,{8,13}}},"StandardNames"]

{"KTree", {3, {8, 14}}} == {"Triangulated", {8, 10}}

Names

GraphData[{"KTree",{3,{8,14}}},"StandardName"]

GraphData[{"KTree",{3,{8,14}}},"StandardNames"]

{"KTree", {3, {8, 15}}} == {"Triangulated", {8, 11}}

Names

GraphData[{"KTree",{3,{8,15}}},"StandardName"]

GraphData[{"KTree",{3,{8,15}}},"StandardNames"]

{"KTree", {3, {9, 1}}} == {"CompleteKPartite", {1, 1, 1, 6}}

Names

GraphData[{"KTree",{3,{9,1}}},"StandardName"]

GraphData[{"KTree",{3,{9,1}}},"StandardNames"]

{"KTree", {3, {10, 1}}} == {"CompleteKPartite", {1, 1, 1, 7}}

Names

GraphData[{"KTree",{3,{10,1}}},"StandardName"]

GraphData[{"KTree",{3,{10,1}}},"StandardNames"]

{"KTree", {3, {11, 1}}} == {"CompleteKPartite", {1, 1, 1, 8}}

Names

GraphData[{"KTree",{3,{11,1}}},"StandardName"]

GraphData[{"KTree",{3,{11,1}}},"StandardNames"]

{"KTree", {3, {11, 2}}} == "GoldnerHararyGraph"

Names

GraphData[{"KTree",{3,{11,2}}},"StandardName"]

GraphData[{"KTree",{3,{11,2}}},"StandardNames"]

{"KTree", {3, {12, 1}}} == {"CompleteKPartite", {1, 1, 1, 9}}

Names

GraphData[{"KTree",{3,{12,1}}},"StandardName"]

GraphData[{"KTree",{3,{12,1}}},"StandardNames"]

{"KTree", {3, {13, 1}}} == {"CompleteKPartite", {1, 1, 1, 10}}

Names

GraphData[{"KTree",{3,{13,1}}},"StandardName"]

GraphData[{"KTree",{3,{13,1}}},"StandardNames"]

4-trees

TextGrid[DeleteCases[{FirstCase[GraphData[#,"StandardNames"],{"KTree",{4,_}}],#}&/@GraphData["KTree"],{_Missing,_}]//Sort,Dividers->All]

{"KTree", {4, {5, 1}}} == "PentatopeGraph"

Names

GraphData[{"KTree",{4,{5,1}}},"StandardName"]

GraphData[{"KTree",{4,{5,1}}},"StandardNames"]

{"KTree", {4, {6, 1}}} == {"CompleteKPartite", {1, 1, 1, 1, 2}}

Names

GraphData[{"KTree",{4,{6,1}}},"StandardName"]

GraphData[{"KTree",{4,{6,1}}},"StandardNames"]

{"KTree", {4, {7, 1}}} == {"CompleteKPartite", {1, 1, 1, 1, 3}}

Names

GraphData[{"KTree",{4,{7,1}}},"StandardName"]

GraphData[{"KTree",{4,{7,1}}},"StandardNames"]

{"KTree", {4, {7, 2}}}

Names

GraphData[{"KTree",{4,{7,2}}},"StandardName"]

GraphData[{"KTree",{4,{7,2}}},"StandardNames"]

Primary

GraphData[{"KTree",{4,{7,2}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{4,{7,2}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{4,{7,2}}},"Configuration"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{4,{7,2}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{4,{7,2}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{7,1032},"Edges"]

GraphPlot@

v={{0,0},{1,0},{1,1},{0,1},{2/5,1/3},{3/5,1/3},{1/2,2/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[2,3,4,1,7,2,5,6,1,5,3,7,4,6,2],{4,5},{3,6},e[5,7,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"KTree",{4,{7,2}}},"Edges"],GraphLayout->"SpringEmbedding"]

Mean[{v[[4]],v[[3]],{0,0}}]

v=Join[CirclePoints[6],{{0,(1/(Sqrt[3]))}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[4,{1,6},1,7,6,4,7,3,1,5,7,2,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"KTree",{4,{7,2}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{4,{7,2}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{4,{7,2}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{4,{7,2}}},"Polyhedron"]

PolyhedronGraph[GraphData[{"KTree",{4,{7,2}}},"Polyhedron"]]

Bilateral

GraphData[{"KTree",{4,{7,2}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{4,{7,2}}},"Graph","Circular"]//StyleGraphs

Planar

GraphData[{"KTree",{4,{7,2}}},"Planar"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{4,{7,2}}},{"RCN","CN"}]

GraphData[{"KTree",{4,{7,2}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{4,{7,2}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{7,2}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{7,2}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{7,2}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{7,2}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{4,{7,2}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{4,{7,2}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{4,{7,2}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{7,2}}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union//Timing

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{4,{7,2}}},"Circulant"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Circulant"]//StyleGraphs

Circular construction

GraphData[{"KTree",{4,{7,2}}},"Hamiltonian"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{4,{7,2}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{4,{7,2}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Complement graph

GraphData[{"KTree",{4,{7,2}}},"ComplementGraph","Name"]

GraphComplement/@GraphData[%,"Graph","All"]

GraphPlot[%[[1]],PlotRangePadding->1]

Line graph

GraphData[{"KTree",{4,{7,2}}},"Line"]

LineGraphQ[GraphData[{"KTree",{4,{7,2}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{4,{7,2}}}&]

RootGraph[GraphData[{"KTree",{4,{7,2}}}]]

Halin

GraphData[{"KTree",{4,{7,2}}},"Halin"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{4,{7,2}}},"Rigid"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{4,{7,2}}},"Flexible"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{4,{7,2}}},"LCF"]

GraphData[{"KTree",{4,{7,2}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{4,{7,2}}},"LCFSignature"]

GraphData[{"KTree",{4,{7,2}}},"LCFNotations"]

GraphData[{"KTree",{4,{7,2}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{4,{7,2}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{4,{7,2}}}],Debug->True]//Timing

GraphData[{"KTree",{4,{7,2}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{4,{7,2}}},"VertexList"],GraphData[{"KTree",{4,{7,2}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{4,{7,2}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{7,2}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{7,2}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{4,{7,2}}},"Matchstick"]

GraphData[{"KTree",{4,{7,2}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{4,{7,2}}},"Edges"]]

3D All

GraphData[{"KTree",{4,{7,2}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{4,{7,2}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{4,{7,2}}},"Polyhedral"]

GraphData[{"KTree",{4,{7,2}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {4, {8, 1}}}

Names

GraphData[{"KTree",{4,{8,1}}},"StandardName"]

GraphData[{"KTree",{4,{8,1}}},"StandardNames"]

Primary

GraphData[{"KTree",{4,{8,1}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{4,{8,1}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{4,{8,1}}},"Configuration"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{4,{8,1}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{4,{8,1}}},"EdgeList"]]

Default embedding

RotateGraph[Graph[GraphData[{"KTree",{4,{8,1}}},"Edges"],GraphLayout->"RadialEmbedding"],4Pi/7]

v=Join[CirclePoints[{1,-Pi/2},7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,8,6,7,1,8,4,1,5,7,8,2,4,7,2,5,8],e[1,3,7],e[1,6,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"KTree",{4,{8,1}}},"Edges"],GraphLayout->"SpringEmbedding"]

v=Join[CirclePoints[4],CirclePoints[{1/2,Pi/2},4]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,8,2,5,3,6,4,7,1,6,5,8,7,6,8,3,7,2,6],e[4,5,1],{4,8},{5,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

v={{0,0},{1,0},{2,0},{0,1},{2,1},{0,2},{1,2},{2,2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,5,8,7,6,4,1,7,3,4,8,2,6,5,1],e[4,7,5,2,4,5],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,,,}

Degenerate

GraphData[{"KTree",{4,{8,1}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{4,{8,1}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{4,{8,1}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{4,{8,1}}},"Polyhedron"]

PolyhedronGraph[GraphData[{"KTree",{4,{8,1}}},"Polyhedron"]]

Bilateral

GraphData[{"KTree",{4,{8,1}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{4,{8,1}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{4,{8,1}}},"Hamiltonian"]

GraphData[{"KTree",{4,{8,1}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{4,{8,1}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{4,{8,1}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"KTree",{4,{8,1}}},"Planar"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{4,{8,1}}},{"RCN","CN"}]

GraphData[{"KTree",{4,{8,1}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,1}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,1}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,1}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,1}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,1}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{4,{8,1}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,1}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,2000}],Max[OuterFace[#]]<=GraphData[{"KTree",{4,{8,1}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,1}}}],"CrossingNumber"->cn,RandomSeed->i],{i,2000}]//Union//Timing

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{4,{8,1}}},"Circulant"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{4,{8,1}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{4,{8,1}}},"Line"]

LineGraphQ[GraphData[{"KTree",{4,{8,1}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{4,{8,1}}}&]

RootGraph[GraphData[{"KTree",{4,{8,1}}}]]

Halin

GraphData[{"KTree",{4,{8,1}}},"Halin"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{4,{8,1}}},"Rigid"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{4,{8,1}}},"Flexible"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{4,{8,1}}},"LCF"]

GraphData[{"KTree",{4,{8,1}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{4,{8,1}}},"LCFSignature"]

GraphData[{"KTree",{4,{8,1}}},"LCFNotations"]

GraphData[{"KTree",{4,{8,1}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{4,{8,1}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{4,{8,1}}}],Debug->True]//Timing

GraphData[{"KTree",{4,{8,1}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{4,{8,1}}},"VertexList"],GraphData[{"KTree",{4,{8,1}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{4,{8,1}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,1}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,1}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{4,{8,1}}},"Matchstick"]

GraphData[{"KTree",{4,{8,1}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{4,{8,1}}},"Edges"]]

3D All

GraphData[{"KTree",{4,{8,1}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{4,{8,1}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{4,{8,1}}},"Polyhedral"]

GraphData[{"KTree",{4,{8,1}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {4, {8, 2}}}

Names

GraphData[{"KTree",{4,{8,2}}},"StandardName"]

GraphData[{"KTree",{4,{8,2}}},"StandardNames"]

Primary

GraphData[{"KTree",{4,{8,2}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{4,{8,2}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{4,{8,2}}},"Configuration"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{4,{8,2}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{4,{8,2}}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}},"Edges"]

v={{0,0},{1,0},{2,0},{3/4,1/2},{2,1/2},{0,1},{1,1},{2,1}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,5,8,7,6,1,4,6,2,7,3,4,5,7,1],e[4,8,2,4,7],e[2,5,6]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot@GraphData[{"KTree",{4,{8,2}}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"KTree",{4,{8,2}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{4,{8,2}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{4,{8,2}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{4,{8,2}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{4,{8,2}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{4,{8,2}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{4,{8,2}}},"Hamiltonian"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{4,{8,2}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{4,{8,2}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Planar

GraphData[{"KTree",{4,{8,2}}},"Planar"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{4,{8,2}}},{"RCN","CN"}]

GraphData[{"KTree",{4,{8,2}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}}],TimeConstraint->10])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}}],"CrossingNumber"->cn])//PolyhedralGraphQ

GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}},"Polyhedral"]

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}}],"CrossingNumber"->cn,RandomSeed->n]],{n,500}],Max[OuterFace[#]]<=GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"OnesVectorNotInDistanceMatrixImage",{8,13}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union

GraphPlot@RotateGraph[,Pi/2]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/2,1/4},{1/2,1/4},{-1/4,1/2},{1/4,1/2},{0,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,5,4,2,3,1,8,2,5,8,4,1],e[4,3,5,7,6,4],e[3,6,8,7,4],{5,6},{3,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{4,{8,2}}},"Circulant"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{4,{8,2}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{4,{8,2}}},"Line"]

LineGraphQ[GraphData[{"KTree",{4,{8,2}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{4,{8,2}}}&]

RootGraph[GraphData[{"KTree",{4,{8,2}}}]]

Halin

GraphData[{"KTree",{4,{8,2}}},"Halin"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{4,{8,2}}},"Rigid"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{4,{8,2}}},"Flexible"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{4,{8,2}}},"LCF"]

GraphData[{"KTree",{4,{8,2}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{4,{8,2}}},"LCFSignature"]

GraphData[{"KTree",{4,{8,2}}},"LCFNotations"]

GraphData[{"KTree",{4,{8,2}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{4,{8,2}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{4,{8,2}}}],Debug->True]//Timing

GraphData[{"KTree",{4,{8,2}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{4,{8,2}}},"VertexList"],GraphData[{"KTree",{4,{8,2}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{4,{8,2}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,2}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,2}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{4,{8,2}}},"Matchstick"]

GraphData[{"KTree",{4,{8,2}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{4,{8,2}}},"Edges"]]

3D All

GraphData[{"KTree",{4,{8,2}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{4,{8,2}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{4,{8,2}}},"Polyhedral"]

GraphData[{"KTree",{4,{8,2}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {4, {8, 3}}}

Names

GraphData[{"KTree",{4,{8,3}}},"StandardName"]

GraphData[{"KTree",{4,{8,3}}},"StandardNames"]

Primary

GraphData[{"KTree",{4,{8,3}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{4,{8,3}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{4,{8,3}}},"Configuration"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{4,{8,3}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{4,{8,3}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{4,{8,3}}},"Edges"]]

v=Join[CirclePoints[{1,Pi/2},6],{#/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,4,2,8,7,6,4,8,1,7,4],e[7,3,8,5,7,2],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RotateGraph[Graph[GraphData[{"KTree",{4,{8,3}}},"Edges"],GraphLayout->"RadialEmbedding"],4Pi/7]

v=Join[CirclePoints[{1,-Pi/2},7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,5,8,4,6,7,1,6,8,3,1,4,7,2,8,7,3],e[4,2],e[7,5,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{4,{8,3}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{4,{8,3}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{4,{8,3}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{4,{8,3}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{4,{8,3}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{4,{8,3}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{4,{8,3}}},"Hamiltonian"]

GraphData[{"KTree",{4,{8,3}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{4,{8,3}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{4,{8,3}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"KTree",{4,{8,3}}},"Planar"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{4,{8,3}}},{"RCN","CN"}]

GraphData[{"KTree",{4,{8,3}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,3}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,3}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,3}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,3}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,3}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{4,{8,3}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,3}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,2000}],Max[OuterFace[#]]<=GraphData[{"KTree",{4,{8,3}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,3}}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

{,}

GraphPlot@

v={{-1,0},{1,0},{0,Sqrt[3]},{0,1/10},{0,2/10},{1/4,4/10},{0,3/4},{0,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[6,1,2,3,1,5,6,8,3,6,2,5,7,8,1,4,6],e[5,4,2,8],e[1,7,6],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

MinimalLocalCrossing

GraphData[{"KTree",{4,{8,3}}},"LocalCrossingNumber"]

GraphData[{"KTree",{4,{8,3}}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,3}}}],TimeConstraint->1])//AbsoluteTiming

Select[Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,3}}}],"CrossingNumber"->cn,RandomSeed->i],{i,5000}],!AdjacentCrossingsQ[#,cn]&]//Union//Timing

Circulant

GraphData[{"KTree",{4,{8,3}}},"Circulant"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{4,{8,3}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{4,{8,3}}},"Line"]

LineGraphQ[GraphData[{"KTree",{4,{8,3}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{4,{8,3}}}&]

RootGraph[GraphData[{"KTree",{4,{8,3}}}]]

Halin

GraphData[{"KTree",{4,{8,3}}},"Halin"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{4,{8,3}}},"Rigid"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{4,{8,3}}},"Flexible"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{4,{8,3}}},"LCF"]

GraphData[{"KTree",{4,{8,3}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{4,{8,3}}},"LCFSignature"]

GraphData[{"KTree",{4,{8,3}}},"LCFNotations"]

GraphData[{"KTree",{4,{8,3}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{4,{8,3}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{4,{8,3}}}],Debug->True]//Timing

GraphData[{"KTree",{4,{8,3}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{4,{8,3}}},"VertexList"],GraphData[{"KTree",{4,{8,3}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{4,{8,3}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,3}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,3}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{4,{8,3}}},"Matchstick"]

GraphData[{"KTree",{4,{8,3}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{4,{8,3}}},"Edges"]]

3D All

GraphData[{"KTree",{4,{8,3}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{4,{8,3}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{4,{8,3}}},"Polyhedral"]

GraphData[{"KTree",{4,{8,3}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {4, {8, 4}}}

Names

GraphData[{"KTree",{4,{8,4}}},"StandardName"]

GraphData[{"KTree",{4,{8,4}}},"StandardNames"]

Primary

GraphData[{"KTree",{4,{8,4}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{4,{8,4}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{4,{8,4}}},"Configuration"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{4,{8,4}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{4,{8,4}}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"KTree",{4,{8,4}}},"Edges"],.1]

v=Join[CirclePoints[{1,Pi/2},6],{#/4,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,4,8,1],e[3,7,8,5,7,2,4,6,8,2],{3,8},{6,7},{2,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RotateGraph[Graph[GraphData[{"KTree",{4,{8,4}}},"Edges"],GraphLayout->"RadialEmbedding"],3Pi/7]

v=Join[CirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[5,6,7,1,2,5],e[3,8,5,1,8,7,3,6,8,2,7,4,8],e[6,4,2,6,1,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

g2=EdgeAdd[g,{2\[UndirectedEdge]3,1\[UndirectedEdge]4}]

RecognizeGraph@g2

gs=UnlabelGraph/@{,}

Degenerate

GraphData[{"KTree",{4,{8,4}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{4,{8,4}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{4,{8,4}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{4,{8,4}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{4,{8,4}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{4,{8,4}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{4,{8,4}}},"Hamiltonian"]

GraphData[{"KTree",{4,{8,4}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{4,{8,4}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{4,{8,4}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"KTree",{4,{8,4}}},"Planar"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{4,{8,4}}},{"RCN","CN"}]

Exoo gives RCN == 5

With[{gn={"KTree",{4,{8,4}}}},
Lookup[With[{n=GraphData[gn,"V"]},MapIndexed[({n,#2[[1]]}->#)&,Get[FileNameJoin[{$GraphDataDirectory,"Nodes","RectilinearCrossingNumber","RectilinearCrossingNumber_0"<>ToString[n]<>".m"}]]]],
Key@GraphIndex[GraphData[gn]]]]

GraphData[{"KTree",{4,{8,4}}},"Graph",-1]//StyleGraphs

RectilinearCrossingCount@%

http://crossings.uos.de gives interal_error but seems to imply cr = 5

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->86400])//AbsoluteTiming

started May 25 @ 4:55 pm; ended May 28, 7:00 am

qc -g "G~~vUo" -z 9999999 -r 1
New best found: 6, at seed: 1
CR : 6
Current best soln: 6, at seed: 1, current seed: 9999999 
...
Current best soln: 6, at seed: 1, current seed: 949999905

CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],Method->"Sage"]//AbsoluteTiming

...ran for 3 days...

(g=MinimalCrossingGraph[GraphData[{"KTree",{4,{8,4}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,4}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{4,{8,4}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,4}}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union//Timing

GraphPlot@

v={{-1,0},{1,0},{0,Sqrt[3]},{-5/8,1/4},{5/8,1/4},{0,1/2},{0,7/8},{1/8,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,5,4,2,3,1,7,3,8,2,5,3,4,1],e[6,4,8],e[5,6,7,5],e[6,8,5],e[4,7,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

MinimalLocalCrossing

GraphData[{"KTree",{4,{8,4}}},"LocalCrossingNumber"]

GraphData[{"KTree",{4,{8,4}}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,4}}}],TimeConstraint->1])//AbsoluteTiming

Select[Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,4}}}],"CrossingNumber"->cn,RandomSeed->i],{i,5000}],!AdjacentCrossingsQ[#,cn]&]//Union//Timing

Circulant

GraphData[{"KTree",{4,{8,4}}},"Circulant"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{4,{8,4}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{4,{8,4}}},"Line"]

LineGraphQ[GraphData[{"KTree",{4,{8,4}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{4,{8,4}}}&]

RootGraph[GraphData[{"KTree",{4,{8,4}}}]]

Halin

GraphData[{"KTree",{4,{8,4}}},"Halin"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{4,{8,4}}},"Rigid"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{4,{8,4}}},"Flexible"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{4,{8,4}}},"LCF"]

GraphData[{"KTree",{4,{8,4}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{4,{8,4}}},"LCFSignature"]

GraphData[{"KTree",{4,{8,4}}},"LCFNotations"]

GraphData[{"KTree",{4,{8,4}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{4,{8,4}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{4,{8,4}}}],Debug->True]//Timing

GraphData[{"KTree",{4,{8,4}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{4,{8,4}}},"VertexList"],GraphData[{"KTree",{4,{8,4}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{4,{8,4}}},"Graph",#]&/@{"All","UnitDistance"})

GraphPlot@

v=Join[CirclePoints[{1,Pi/2},6],{#/3,0}&/@{-1,1}];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,2,3,4,5,6,1],e[4,8,1,3,5,1,7,4],e[7,3,8,7,5,8],e[5,2,8],e[7,6,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot@

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,4}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,4}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{4,{8,4}}},"Matchstick"]

GraphData[{"KTree",{4,{8,4}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{4,{8,4}}},"Edges"]]

3D All

GraphData[{"KTree",{4,{8,4}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{4,{8,4}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{4,{8,4}}},"Polyhedral"]

GraphData[{"KTree",{4,{8,4}}},"Graph",{"3D","Polyhedron"}]

{"KTree", {4, {8, 5}}}

Names

GraphData[{"KTree",{4,{8,5}}},"StandardName"]

GraphData[{"KTree",{4,{8,5}}},"StandardNames"]

Primary

GraphData[{"KTree",{4,{8,5}}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"KTree",{4,{8,5}}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"KTree",{4,{8,5}}},"Configuration"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Configuration"]//StyleGraphs

Inexact

Select[GraphData[{"KTree",{4,{8,5}}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"KTree",{4,{8,5}}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"KTree",{4,{8,5}}},"Edges"],GraphLayout->"SpringEmbedding"]

v=Join[CirclePoints[7],{{0,0}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,8,7,5,8,3,1,4,7],e[2,4,8,2,7],e[1,6,4],{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"KTree",{4,{8,5}}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"KTree",{4,{8,5}}},"Graph","Degenerate"]

Perspective

GraphData[{"KTree",{4,{8,5}}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"KTree",{4,{8,5}}},"Polyhedron"]

Bilateral

GraphData[{"KTree",{4,{8,5}}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"KTree",{4,{8,5}}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"KTree",{4,{8,5}}},"Hamiltonian"]

GraphData[{"KTree",{4,{8,5}}},"LCF"]

Length[hc=FindHamiltonianCycle[GraphData[{"KTree",{4,{8,5}}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"KTree",{4,{8,5}}}],#]&/@hc

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph/@circ],
CircularCanonicalGraphEmbedding]]//Timing

gs=bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"KTree",{4,{8,5}}},"Planar"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"KTree",{4,{8,5}}},{"RCN","CN"}]

GraphData[{"KTree",{4,{8,5}}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,5}}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,5}}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,5}}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,5}}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"KTree",{4,{8,5}}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"KTree",{4,{8,5}}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[g,"OuterFace"->#]&/@faces

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,5}}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"KTree",{4,{8,5}}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"KTree",{4,{8,5}}}],"CrossingNumber"->cn,RandomSeed->i],{i,500}]//Union//Timing

GraphPlot@RotateGraph[,-2Pi/3]

v={{-1,0},{1,0},{0,Sqrt[3]},{-1/4,2/10},{1/4,2/10},{0,4/10},{1/4,7/10},{0,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[2,6,1,2,3,1,5,4,2,8,1,7,3,8,6,4,1],e[8,7,2,5,7,6,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"KTree",{4,{8,5}}},"Circulant"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"KTree",{4,{8,5}}},"ComplementGraph","Name"]

Line graph

GraphData[{"KTree",{4,{8,5}}},"Line"]

LineGraphQ[GraphData[{"KTree",{4,{8,5}}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"KTree",{4,{8,5}}}&]

RootGraph[GraphData[{"KTree",{4,{8,5}}}]]

Halin

GraphData[{"KTree",{4,{8,5}}},"Halin"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"KTree",{4,{8,5}}},"Rigid"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"KTree",{4,{8,5}}},"Flexible"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"KTree",{4,{8,5}}},"LCF"]

GraphData[{"KTree",{4,{8,5}}},"HamiltonianCycleCount"]

GraphData[{"KTree",{4,{8,5}}},"LCFSignature"]

GraphData[{"KTree",{4,{8,5}}},"LCFNotations"]

GraphData[{"KTree",{4,{8,5}}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"KTree",{4,{8,5}}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"KTree",{4,{8,5}}}],Debug->True]//Timing

GraphData[{"KTree",{4,{8,5}}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"KTree",{4,{8,5}}},"VertexList"],GraphData[{"KTree",{4,{8,5}}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"KTree",{4,{8,5}}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,5}}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"KTree",{4,{8,5}}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData[{"KTree",{4,{8,5}}},"Matchstick"]

GraphData[{"KTree",{4,{8,5}}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"KTree",{4,{8,5}}},"Edges"]]

3D All

GraphData[{"KTree",{4,{8,5}}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"KTree",{4,{8,5}}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"KTree",{4,{8,5}}},"Polyhedral"]

GraphData[{"KTree",{4,{8,5}}},"Graph",{"3D","Polyhedron"}]

5-trees

TextGrid[DeleteCases[{FirstCase[GraphData[#,"StandardNames"],{"KTree",{5,_}}],#}&/@GraphData["KTree"],{_Missing,_}]//Sort,Dividers->All]

{"KTree", {5, {6, 1}}} == {"Complete", 6}

Names

GraphData[{"KTree",{5,{6,1}}},"StandardName"]

GraphData[{"KTree",{5,{6,1}}},"StandardNames"]

{"KTree", {5, {7, 1}}} == {"CompleteKPartite", {1, 1, 1, 1, 1, 2}}

Names

GraphData[{"KTree",{5,{7,1}}},"StandardName"]

GraphData[{"KTree",{5,{7,1}}},"StandardNames"]

{"KTree", {5, {8, 1}}} == {"CompleteKPartite", {1, 1, 1, 1, 1, 3}}

Names

GraphData[{"KTree",{5,{8,1}}},"StandardName"]

GraphData[{"KTree",{5,{8,1}}},"StandardNames"]

{"KTree", {5, {8, 2}}} == {"DoubleToroidal", {8, 8}}

Names

GraphData[{"KTree",{5,{8,2}}},"StandardName"]

GraphData[{"KTree",{5,{8,2}}},"StandardNames"]

6-trees

TextGrid[DeleteCases[{FirstCase[GraphData[#,"StandardNames"],{"KTree",{6,_}}],#}&/@GraphData["KTree"],{_Missing,_}]//Sort,Dividers->All]

{"KTree", {6, {7, 1}}} == {"Complete", 7}

Names

GraphData[{"KTree",{6,{7,1}}},"StandardName"]

GraphData[{"KTree",{6,{7,1}}},"StandardNames"]

{"KTree", {6, {8, 1}}} == {"CompleteKPartite", {1, 1, 1, 1, 1, 1, 2}}

Names

GraphData[{"KTree",{6,{8,1}}},"StandardName"]

GraphData[{"KTree",{6,{8,1}}},"StandardNames"]

Special classes

Nonhamiltonian

Complement[GraphData[{"KTree","Nonhamiltonian"}],GraphData["Tree"]]

Polyhedral

GraphData[#,"Treewidth"]&/@GraphData[{"Polyhedral","KTree"}]

TextGrid[{#[[1,1]],#[[All,2]]}&/@SplitBy[SortBy[GraphData[#,{"V","#"}]&/@GraphData[{"Polyhedral","KTree"}],First],First],Dividers->All]

GraphData[{"Triangulated",{8,6}},"#"]

g=GraphData[{"Triangulated",{8,6}}]

PolyhedralGraphQ[%]

KTreeQ[g,8,Debug->True]

GraphData[{"KTree","Triangulated"}]

Polyiamond

groups={#[[1,1]],SortBy[#[[All,2]],GraphData[#,"V"]&]}&/@SplitBy[SortBy[{GraphData[#,"KTree"],#}&/@GraphData["Polyiamond"],First],First]

true=groups[[2,2]];

false=groups[[1,2]];

GraphData/@false

GraphData[#,"V"]&/@false

GraphData[#,"Treewidth"]&/@true

GraphData[#,"Treewidth"]&/@false

GraphicsGrid[Partition[Flatten[GraphData[#,"Graph","Polyiamond"]&/@groups[[2,2]]]//StyleGraphs[#,VertexSize->{"Scaled",.03}]&,UpTo[6]],Dividers->All,ImageSize->700]

Triangulated

GraphData[#,"Treewidth"]&/@GraphData[{"Triangulated","KTree"}]

TextGrid[{#[[1,1]],#[[All,2]]}&/@SplitBy[SortBy[GraphData[#,{"V","#"}]&/@GraphData[{"Triangulated","KTree"}],First],First],Dividers->All]

Untraceable

Complement[GraphData[{"KTree","Untraceable"}],GraphData["Tree"]]

Tables

Table[Length/@Table[KTrees[k][n],{n,13}],{k,6}]//Column

1

A000055

Take[BFileSequence[55],20]

Length/@Table[KTrees[1][n],{n,10}]//Timing

Graph[{v1=PathGraph[{1,2}],v2=PathGraph[Range@3]},UndirectedEdge@@@{{v1,v2}},Ver]

TextGrid[
Table[With[{ktrees=DeleteCases[RecognizeGraph[#,"Cache"->"InternalOnly"]&/@KTrees[1][n],{}]},{n,Union[GraphData[#,"Treewidth"]&/@ktrees],ktrees}],{n,13}],Dividers->All]

2

A054581

BFileSequence[054581]

Length/@Table[KTrees[2][n],{n,13}]//Timing

Do[Print[{n,Length[KTrees[2][n]]//Timing,MaxMemoryUsed[]/10^9.}],{n,15}]

Do[Export["/home/usr2/eww/mma/Graphs/Enumerations/KTree/KTree-2-"<>ToString[n]<>".g6",KTrees[2][n]],{n,10,15}]

hashes=Hash[CanonicalGraph[#]]&/@KTrees[2][15];//Timing

FirstPosition[hashes,Hash@CanonicalGraph[GraphData[{"DorogovtsevGoltsevMendes",3}]]]

TextGrid[
Table[With[{ktrees=DeleteCases[RecognizeGraph[#,"Cache"->"InternalOnly"]&/@KTrees[2][n],{}]},{n,Union[GraphData[#,"Treewidth"]&/@ktrees],ktrees}],{n,13}],Dividers->All]

Select[GraphData[All],GraphData[#,"Treewidth"]==2&]

Do[
Print[{n,Monitor[Select[
GraphData["Connected",n],GraphData[gn=#,"Treewidth"]==2&&KTreeQ[GraphData[#],2]&
],gn]//AbsoluteTiming}],
{n,7}]

3

A078792

BFileSequence[078792]

KTreeQ[GraphData[{"Apollonian",2}],3,Debug->True]

Length/@Table[KTrees[3][n],{n,13}]//Timing

Do[Print[{n,Length[KTrees[3][n]]//Timing,MaxMemoryUsed[]/10^9.}],{n,16}]

Do[Export["/home/usr2/eww/mma/Graphs/Enumerations/KTree/KTree-3-"<>ToString[n]<>".g6",KTrees[3][n]],{n,{10}}]

hashes=Hash[CanonicalGraph[#]]&/@KTrees[3][16];//Timing

FirstPosition[hashes,Hash@CanonicalGraph[GraphData[{"Apollonian",3}]]]

TextGrid[
Table[With[{ktrees=DeleteCases[RecognizeGraph[#,"Cache"->"InternalOnly"]&/@KTrees[3][n],{}]},{n,Union[GraphData[#,"Treewidth"]&/@ktrees],ktrees}],{n,13}],Dividers->All]

Select[GraphData[All],GraphData[#,"Treewidth"]==3&]

Do[
Print[{n,Monitor[Select[
GraphData["Connected",n],GraphData[gn=#,"Treewidth"]==3&&KTreeQ[GraphData[#],3]&
],gn]//AbsoluteTiming}],
{n,7}]

4

A078793

Length/@Table[KTrees[4][n],{n,13}]//Timing

BFileSequence[078793]

TextGrid[
Table[With[{ktrees=DeleteCases[RecognizeGraph[#,"Cache"->"InternalOnly"]&/@KTrees[4][n],{}]},{n,Union[GraphData[#,"Treewidth"]&/@ktrees],ktrees}],{n,5,13}],Dividers->All]

Select[GraphData[All],GraphData[#,"Treewidth"]==4&]

5

A201702

BFileSequence[201702]

Length/@Table[KTrees[5][n],{n,13}]//Timing

TextGrid[
Table[With[{ktrees=DeleteCases[RecognizeGraph[#,"Cache"->"InternalOnly"]&/@KTrees[5][n],{}]},{n,Union[GraphData[#,"Treewidth"]&/@ktrees],ktrees}],{n,6,13}],Dividers->All]

Select[GraphData[All],GraphData[#,"Treewidth"]==5&]

Parametrized families

<<MathWorld`Graphs`

Alkane

seq=Table[GraphData[{"Alkane",n},"KTree"],{n,10}]

AlternatingGroupGraph

seq=Table[GraphData[{"AlternatingGroupGraph",n},"KTree"],{n,2,6}]

Andrasfai

seq=Table[GraphData[{"Andrasfai",n},"KTree"],{n,20}]

Antelope n×n

seq=Table[GraphData[{"Antelope",{n,n}},"KTree"],{n,20}]

Antiprism

Entity["Graph",{"Antiprism",n}]["KTree"]

seq=Table[GraphData[{"Antiprism",n},"KTree"],{n,3,25}]

Apollonian

seq=Table[GraphData[{"Apollonian",n},"KTree"],{n,5}]

Barbell

seq=Table[GraphData[{"Barbell",n},"KTree"],{n,3,20}]

BlackBishop n×n

seq=Table[GraphData[{"BlackBishop",{n,n}},"KTree"],{n,20}]

Bishop n×n

seq=Table[GraphData[{"Bishop",{n,n}},"KTree"],{n,20}]

Book

seq=Table[GraphData[{"Book",n},"KTree"],{n,20}]

Bruhat

seq=Table[GraphData[{"Bruhat",n},"KTree"],{n,6}]

Camel n×n

seq=Table[GraphData[{"Camel",{n,n}},"KTree"],{n,20}]

Centipede

seq=Table[GraphData[{"Centipede",n},"KTree"],{n,10}]

CocktailParty

seq=Table[GraphData[{"CocktailParty",n},"KTree"],{n,20}]

Complete

Entity["Graph",{"Complete",n}]["KTree"]

seq=Table[GraphData[{"Complete",n},"KTree"],{n,30}]

CompleteBipartite m×n

Entity["Graph",{"CompleteBipartite",{m,n}}]["KTree"]

DeleteCases[Flatten[Table[{
{m,n},
GraphData[{"CompleteBipartite",{m,n}},"KTree"],
Piecewise[{{True,Min[m,n]==1}},False]
},{n,10},{m,n}],1],{_,x_,x_}]

CompleteBipartite n×n

Entity["Graph",{"CompleteBipartite",{n,n}}]["KTree"]

seq=Table[GraphData[{"CompleteBipartite",{n,n}},"KTree"],{n,20}]

CompleteTripartite k×m×n

Entity["Graph",{"CompleteTripartite",{k,m,n}}]["KTree"]

DeleteCases[Flatten[Table[{
{k,m,n},
GraphData[{"CompleteTripartite",{k,m,n}},"KTree"],
Piecewise[{{True,k m n==Max[k,m, n]}},False]
},{n,10},{m,n},{k,m}],2],{_,x_,x_}]

CompleteTripartite n×n×n

Entity["Graph",{"CompleteTripartite",{n,n,n}}]["KTree"]

seq=Table[GraphData[{"CompleteTripartite",{n,n,n}},"KTree"],{n,10}]

CrossedPrism

seq=Table[GraphData[{"CrossedPrism",2n},"KTree"],{n,2,12}]

Crown

seq=Table[GraphData[{"Crown",n},"KTree"],{n,20}]

CubeConnectedCycle

Entity["Graph",{"CubeConnectedCycle",n}]["KTree"]

seq=Table[GraphData[{"CubeConnectedCycle",n},"KTree"],{n,3,8}]

Cycle

Entity["Graph",{"Cycle",n}]["KTree"]

seq=Table[GraphData[{"Cycle",n},"KTree"],{n,3,30}]

CycleComplement

seq=Table[GraphData[{"CycleComplement",n},"KTree"],{n,3,20}]

DiagonalIntersection

seq=Table[GraphData[{"DiagonalIntersection",n},"KTree"],{n,3,14}]

Dipyramid

seq=Table[GraphData[{"Dipyramid",n},"KTree"],{n,3,20}]

DorogovtsevGoltsevMendes

seq=Table[GraphData[{"DorogovtsevGoltsevMendes",n},"KTree"],{n,0,7}]

DoubleCone

seq=Table[GraphData[{"DoubleCone",n},"KTree"],{n,3,20}]

Empty

Entity["Graph",{"Empty",n}]["KTree"]

seq=Table[GraphData[{"Empty",n},"KTree"],{n,30}]

FibonacciCube

seq=Table[GraphData[{"FibonacciCube",n},"KTree"],{n,15}]

Fiveleaper n×n

seq=Table[GraphData[{"Fiveleaper",{n,n}},"KTree"],{n,20}]

Flower

seq=Table[GraphData[{"Flower",n},"KTree"],{n,5,20}]

FoldedCube

seq=Table[GraphData[{"FoldedCube",n},"KTree"],{n,2,10}]

Gear

seq=Table[GraphData[{"Gear",n},"KTree"],{n,3,20}]

Giraffe n×n

seq=Table[GraphData[{"Giraffe",{n,n}},"KTree"],{n,20}]

Goldberg

seq=Table[GraphData[{"Goldberg",n},"KTree"],{n,3,20}]

Grid m×n

Entity["Graph",{"Grid",{m,n}}]["KTree"]

DeleteCases[Flatten[Table[{
{m,n},
GraphData[{"Grid",{m,n}},"KTree"],
Piecewise[{{True,Min[m,n]==1}},False]
},{n,10},{m,n}],1],{_,x_,x_}]

Grid n×n

Entity["Graph",{"Grid",{n,n}}]["KTree"]

seq=Table[GraphData[{"Grid",{n,n}},"KTree"],{n,20}]

Grid k×m×n

Entity["Graph",{"Grid",{k,m,n}}]["KTree"]

DeleteCases[Sort@Flatten[Table[{
{k,m,n},
GraphData[{"Grid",{k,m,n}},"KTree"],
Piecewise[{{True,k m n==Max[k,m,n]}},False]
},{n,5},{m,n},{k,m}],2],{_,x_,x_}]

Grid n×n×n

Entity["Graph",{"Grid",{n,n,n}}]["KTree"]

seq=Table[GraphData[{"Grid",{n,n,n}},"KTree"],{n,10}]

HalvedCube

seq=Table[GraphData[{"HalvedCube",n},"KTree"],{n,10}]

Hanoi

seq=Table[GraphData[{"Hanoi",n},"KTree"],{n,5}]

Helm

seq=Table[GraphData[{"Helm",n},"KTree"],{n,3,20}]

Hypercube

Entity["Graph",{"Hypercube",n}]["KTree"]

seq=Table[GraphData[{"Hypercube",n},"KTree"],{n,0,10}]

Keller

Entity["Graph",{"Keller",n}]["KTree"]

seq=Table[GraphData[{"Keller",n},"KTree"],{n,5}]

King n×n

seq=Table[GraphData[{"King",{n,n}},"KTree"],{n,20}]

Knight m×n

Entity["Graph",{"Knight",{m,n}}]["KTree"]

DeleteCases[Flatten[Table[{
{m,n},
GraphData[{"Knight",{m,n}},"KTree"],
Piecewise[{{True,m==n==1}},False]
},{n,10},{m,n}],1],{_,x_,x_}]

Knight n×n

Entity["Graph",{"Knight",{n,n}}]["KTree"]

seq=Table[GraphData[{"Knight",{n,n}},"KTree"],{n,20}]

Ladder

Entity["Graph",{"Ladder",n}]["KTree"]

seq=Table[GraphData[{"Ladder",n},"KTree"],{n,20}]

LadderRung

seq=Table[GraphData[{"LadderRung",n},"KTree"],{n,20}]

LucasCube

seq=Table[GraphData[{"LucasCube",n},"KTree"],{n,15}]

MengerSponge

seq=Table[GraphData[{"MengerSponge",n},"KTree"],{n,3}]

MoebiusLadder

Entity["Graph",{"MoebiusLadder",n}]["KTree"]

seq=Table[GraphData[{"MoebiusLadder",n},"KTree"],{n,3,25}]

Mycielski

Entity["Graph",{"Mycielski",n}]["KTree"]

seq=Table[GraphData[{"Mycielski",n},"KTree"],{n,11}]

Odd

Entity["Graph",{"Odd",n}]["KTree"]

seq=Table[GraphData[{"Odd",n},"KTree"],{n,7}]

Pan

seq=Table[GraphData[{"Pan",n},"KTree"],{n,3,20}]

Path

Entity["Graph",{"Path",n}]["KTree"]

seq=Table[GraphData[{"Path",n},"KTree"],{n,20}]

PathComplement

seq=Table[GraphData[{"PathComplement",n},"KTree"],{n,20}]

Pell

seq=Table[GraphData[{"Pell",n},"KTree"],{n,9}]

Prism

Entity["Graph",{"Prism",n}]["KTree"]

seq=Table[GraphData[{"Prism",n},"KTree"],{n,3,25}]

Queen n×n

seq=Table[GraphData[{"Queen",{n,n}},"KTree"],{n,20}]

Rook n×n

seq=Table[GraphData[{"Rook",{n,n}},"KTree"],{n,20}]

RookComplement n×n

seq=Table[GraphData[{"RookComplement",{n,n}},"KTree"],{n,10}]

SierpinskiCarpet

seq=Table[GraphData[{"SierpinskiCarpet",n},"KTree"],{n,4}]

SierpinskiGasket

seq=Table[GraphData[{"SierpinskiGasket",n},"KTree"],{n,5}]

SierpinskiTetrahedron

seq=Table[GraphData[{"SierpinskiTetrahedron",n},"KTree"],{n,6}]

Spoke n×n

seq=Table[GraphData[{"Spoke",{n,n}},"KTree"],{n,5}]

StackedBook

seq=Table[GraphData[{"StackedBook",{n,n}},"KTree"],{n,10}]

StackedPrism

seq=Table[GraphData[{"StackedPrism",{n,n}},"KTree"],{n,3,5}]

Star

Entity["Graph",{"Star",n}]["KTree"]

seq=Table[GraphData[{"Star",n},"KTree"],{n,25}]

Sun

seq=Table[GraphData[{"Sun",n},"KTree"],{n,3,20}]

Sunlet

seq=Table[GraphData[{"Sunlet",n},"KTree"],{n,3,20}]

TorusGrid n×n

seq=Table[GraphData[{"TorusGrid",{n,n}},"KTree"],{n,3,20}]

Transposition

Entity["Graph",{"Transposition",n}]["KTree"]

seq=Table[GraphData[{"Transposition",n},"KTree"],{n,6}]

Trapezohedron

Entity["Graph",{"Trapezohedron",n}]["KTree"]

seq=Table[GraphData[{"Trapezohedron",n},"KTree"],{n,3,20}]

Triangular

seq=Table[GraphData[{"Triangular",n},"KTree"],{n,2,20}]

FindSequenceFunction[seq,n-1]

TriangularGrid

seq=Table[GraphData[{"TriangularGrid",n},"KTree"],{n,0,10}]

TriangularHoneycombAcuteKnight

seq=Table[GraphData[{"TriangularHoneycombAcuteKnight",n},"KTree"],{n,20}]

TriangularHoneycombBishop

seq=Table[GraphData[{"TriangularHoneycombBishop",n},"KTree"],{n,9}]

TriangularHoneycombObtuseKnight

seq=Table[GraphData[{"TriangularHoneycombObtuseKnight",n},"KTree"],{n,20}]

TriangularHoneycombQueen

seq=Table[GraphData[{"TriangularHoneycombQueen",n},"KTree"],{n,10}]

TriangularHoneycombRook

seq=Table[GraphData[{"TriangularHoneycombRook",n},"KTree"],{n,20}]

TriangularSnake

seq=Table[GraphData[{"TriangularSnake",n},"KTree"],{n,1,20,2}]

Web

seq=Table[GraphData[{"Web",n},"KTree"],{n,3,20}]

Wheel

Entity["Graph",{"Wheel",n}]["KTree"]

seq=Table[GraphData[{"Wheel",n},"KTree"],{n,4,20}]

WheelComplement

seq=Table[GraphData[{"WheelComplement",n},"KTree"],{n,4,20}]

WhiteBishop n×n

seq=Table[GraphData[{"WhiteBishop",{n,n}},"KTree"],{n,2,20}]

Zebra n×n

seq=Table[GraphData[{"Zebra",{n,n}},"KTree"],{n,20}]

GraphData

GraphDataString

Add all k-trees on 8 nodes:

<<MathWorld`Graphs`

ktrees=Flatten[Table[
Cases[MapIndexed[{#,RecognizeGraph[#,"Cache"->"InternalOnly"],{k,{8,#2[[1]]}}}&,SortBy[KTrees[k][8],GraphIndex]],{gn_,{},ind_}:>{gn,ind}],
{k,2,10}],1]

Length[ktrees]

file=OpenWrite["~/ktrees.m"]

p=FirstPosition[ktrees[[All,-1]],{2,{8,18}}][[1]]

WriteString[file,GraphDataString[#,
"StandardName"->{"KTree",#2},
"Name"->ToString[#2[[1]]]<>"\[Hyphen]tree ("<>StringReplace[StringTake[ToString[#2[[2]]],{2,-2}]," "->""]<>")",
"Classes"->{"KTree"},
"Information"->"k-Tree",
"NotationRules"->{"KTree"->#2},
"Treewidth"->#2[[1]],
"Skip"->{"MinimumDistinguishingLabelings","QuadraticEmbeddingConstant"}
]]&@@@Drop[ktrees,0];

Close[file]