Erected Polygon Graph

Author

Eric W. Weisstein
April 10, 2025

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

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

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

Figures

Polygon embeddings

GraphicsGrid[StyleGraphs@Table[ErectedPolygonGraph[n,k,PlotLabel->Row[{"(",n,",",k,")"}]],{n,3,5},{k,3,6}],Dividers->All,BaseStyle->InsetBoxOptions->{BaseStyle->Directive[Black,14,FontFamily->"Times"]}]

Circular embeddings

GraphicsGrid[StyleGraphs@Table[ErectedPolygonGraph[n,k,GraphLayout->"CircularEmbedding",PlotLabel->Row[{"(",n,",",k,")"}]],{n,3,5},{k,3,6}],Dividers->All,BaseStyle->InsetBoxOptions->{BaseStyle->Directive[Black,14,FontFamily->"Times"]}]

Contracted graph embeddings

contracted=GraphData["ContractedErected*"]

GraphicsGrid[Partition[StyleGraphs[GraphData@#,PlotLabel->Row[{"(",#[[2,1]],",",#[[2,2]],")"}]]&/@contracted,UpTo[3]],Dividers->All,BaseStyle->InsetBoxOptions->{BaseStyle->Directive[Black,14,FontFamily->"Times"]}]

Dresdener Bank

GraphData["DresdenerBankGraph","StandardName"]

GraphicsRow[StyleGraphs@Part[GraphData["DresdenerBankGraph","Graph","All"],{1,2,3,5}],Dividers->All]

Special cases

TextGrid[{GraphData[#,"NotationRules","ErectedPolygon"],#}&/@DeleteCases[GraphData["ErectedPolygon"],{"ErectedPolygon",_}],Dividers->All]

Embeddings

<<MathWorld`Graphs`

{"ContractedErectedPolygon", {4, 8}}

Names

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

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

Primary

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

All

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

Construction

ErectedPolygonGraph[4,8,"Contracted"->#,VertexLabels->Automatic]&/@{True,False}//StyleGraphs

Inexact

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

Embedding types

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

Default embedding

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

v={{1,0},{2,0},{3,0},{4,0},{5,0},{0,1},{6,1},{0,2},{3,2},{6,2},{0,3},{2,3},{4,3},{6,3},{0,4},{3,4},{6,4},{0,5},{6,5},{1,6},{2,6},{3,6},{4,6},{5,6}}/6;
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,2,3,4,5,7,10,14,17,19,24,23,22,21,20,18,15,11,8,6,1],e[3,9,13,16,22],e[16,12,9],{11,12},{13,14}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

GraphPlot[Graph[GraphData[{"ContractedErectedPolygon",{4,8}},"VertexList"],GraphData[{"ContractedErectedPolygon",{4,8}},"Edges"],GraphLayout->"TutteEmbedding"]]

v=Join[CirclePoints[{1,0},20],CirclePoints[{1/4,0},4]];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[{1,20},1,21,22,23,24,21],{6,22},{11,23},{16,24}},VertexLabels->Automatic,VertexCoordinates->v]

RecognizeGraph@g

gs=UnlabelGraph/@{,}

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

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

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

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

Length[hc=FindHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{4,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{4,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

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

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

PlanarGraphEmbeddings

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

(plemb=PlanarGraphEmbeddings[GraphData[{"ContractedErectedPolygon",{4,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

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

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

MinimalLocalCrossing

GraphData[{"ContractedErectedPolygon",{4,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ContractedErectedPolygon",{4,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

Circulant

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

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

Circulant construction

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

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

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

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

RootGraph

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

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

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,,,,,,,,};

Matchstick

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

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

3D default

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

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"ContractedErectedPolygon", {5, 10}}

Names

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

GraphData[{"ContractedErectedPolygon",{5,10}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[5,10,"Contracted"->#,VertexLabels->Automatic]&/@{True,False}//StyleGraphs

RecognizeGraph/@%

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ContractedErectedPolygon",{5,10}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ContractedErectedPolygon",{5,10}},"VertexList"],GraphData[{"ContractedErectedPolygon",{5,10}},"Edges"],GraphLayout->"TutteEmbedding"]]

v=Join[CirclePoints[25],CirclePoints[1/3,5]];
c={{23,30},{3,26},{8,27},{13,28},{18,29}};
v=Join[v,Mean[v[[{#-1,#2}]]]&@@@c,Mean[v[[{#+1,#2}]]]&@@@c];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]//Quiet

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ContractedErectedPolygon",{5,10}},"Graph","Degenerate"]

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ContractedErectedPolygon",{5,10}},"Hamiltonian"]

GraphData[{"ContractedErectedPolygon",{5,10}},"LCF"]

GraphData[{"ContractedErectedPolygon",{5,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{5,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{5,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{5,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{5,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ContractedErectedPolygon",{5,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ContractedErectedPolygon",{5,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ContractedErectedPolygon",{5,10}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ContractedErectedPolygon",{5,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ContractedErectedPolygon",{5,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

Circulant

GraphData[{"ContractedErectedPolygon",{5,10}},"Circulant"]

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

Circulant construction

GraphData[{"ContractedErectedPolygon",{5,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ContractedErectedPolygon",{5,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ContractedErectedPolygon",{5,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ContractedErectedPolygon",{5,10}},"ComplementGraph","Name"]

Line graph

GraphData[{"ContractedErectedPolygon",{5,10}},"Line"]

LineGraphQ[GraphData[{"ContractedErectedPolygon",{5,10}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ContractedErectedPolygon",{5,10}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ContractedErectedPolygon",{5,10}},"Rigid"]

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

Flexible

GraphData[{"ContractedErectedPolygon",{5,10}},"Flexible"]

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

LCF

GraphData[{"ContractedErectedPolygon",{5,10}},"LCF"]

GraphData[{"ContractedErectedPolygon",{5,10}},"HamiltonianCycleCount"]

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

GraphData[{"ContractedErectedPolygon",{5,10}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

EuclideanDistance@@v[[{13,28}]]//N

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

g=FindCorrespondingGraph[,v]//Quiet

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

g=;

Matchstick

GraphData[{"ContractedErectedPolygon",{5,10}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ContractedErectedPolygon",{5,10}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ContractedErectedPolygon",{5,10}},"Polyhedral"]

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

{"ContractedErectedPolygon", {6, 9}}

Names

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

GraphData[{"ContractedErectedPolygon",{6,9}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[6,9,"Contracted"->#,VertexLabels->Automatic]&/@{True,False}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ContractedErectedPolygon",{6,9}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ContractedErectedPolygon",{6,9}},"VertexList"],GraphData[{"ContractedErectedPolygon",{6,9}},"Edges"],GraphLayout->"TutteEmbedding"]]

c=Transpose[{Range[1,24,4],Range[25,30]}];
v=Join[CirclePoints[{1,Pi/2},24],CirclePoints[{1/3,Pi/2},6]];
v=Join[v,Mean[v[[{If[#==1,24,#-1],#2}]]]&@@@c,Mean[v[[{#+1,#2}]]]&@@@c];
Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ContractedErectedPolygon",{6,9}},"Graph","Degenerate"]

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ContractedErectedPolygon",{6,9}},"Hamiltonian"]

GraphData[{"ContractedErectedPolygon",{6,9}},"LCF"]

GraphData[{"ContractedErectedPolygon",{6,9}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{6,9}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{6,9}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{6,9}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{6,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"ContractedErectedPolygon",{6,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ContractedErectedPolygon",{6,9}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ContractedErectedPolygon",{6,9}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ContractedErectedPolygon",{6,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ContractedErectedPolygon",{6,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

Circulant

GraphData[{"ContractedErectedPolygon",{6,9}},"Circulant"]

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

Circulant construction

GraphData[{"ContractedErectedPolygon",{6,9}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ContractedErectedPolygon",{6,9}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ContractedErectedPolygon",{6,9}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ContractedErectedPolygon",{6,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"ContractedErectedPolygon",{6,9}},"Line"]

LineGraphQ[GraphData[{"ContractedErectedPolygon",{6,9}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ContractedErectedPolygon",{6,9}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ContractedErectedPolygon",{6,9}},"Rigid"]

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

Flexible

GraphData[{"ContractedErectedPolygon",{6,9}},"Flexible"]

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

LCF

GraphData[{"ContractedErectedPolygon",{6,9}},"LCF"]

GraphData[{"ContractedErectedPolygon",{6,9}},"HamiltonianCycleCount"]

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

GraphData[{"ContractedErectedPolygon",{6,9}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

EuclideanDistance@@v[[{1,25}]]//N

v=Join[UnitCirclePoints[24,Pi/2],UnitCirclePoints[6,Pi/2]];
Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,};

Matchstick

GraphData[{"ContractedErectedPolygon",{6,9}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ContractedErectedPolygon",{6,9}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ContractedErectedPolygon",{6,9}},"Polyhedral"]

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

{"ContractedErectedPolygon", {8, 8}}

Names

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

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

Primary

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

All

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

Construction

ErectedPolygonGraph[8,8,"Contracted"->#,VertexLabels->Automatic]&/@{True,False}//StyleGraphs

Inexact

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

Embedding types

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

Default embedding

GraphPlot[Graph[GraphData[{"ContractedErectedPolygon",{8,8}},"VertexList"],GraphData[{"ContractedErectedPolygon",{8,8}},"Edges"],GraphLayout->"TutteEmbedding"]]

c=Transpose[{Range[1,24,3],Range[25,32]}];
v=Join[CirclePoints[{1,Pi/2},24],CirclePoints[{1/3,Pi/2},8]];
v=Join[v,Mean[v[[{If[#==1,24,#-1],#2}]]]&@@@c,Mean[v[[{#+1,#2}]]]&@@@c];
Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

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

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

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

Length[hc=FindHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{8,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{8,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

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

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

PlanarGraphEmbeddings

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

(plemb=PlanarGraphEmbeddings[GraphData[{"ContractedErectedPolygon",{8,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

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

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

MinimalLocalCrossing

GraphData[{"ContractedErectedPolygon",{8,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ContractedErectedPolygon",{8,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ContractedErectedPolygon",{8,8}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

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

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

Circulant construction

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

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

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

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

RootGraph

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

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

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,};

Matchstick

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

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

3D default

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

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"ContractedErectedPolygon", {10, 5}}

Names

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

GraphData[{"ContractedErectedPolygon",{10,5}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[10,5,"Contracted"->#,VertexLabels->Automatic]&/@{True,False}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ContractedErectedPolygon",{10,5}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ContractedErectedPolygon",{10,5}},"VertexList"],GraphData[{"ContractedErectedPolygon",{10,5}},"Edges"],GraphLayout->"TutteEmbedding"]]

v=Join[CirclePoints[{1,Pi/2},20],CirclePoints[{1/2,Pi/2},10]];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]//Quiet

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ContractedErectedPolygon",{10,5}},"Graph","Degenerate"]

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ContractedErectedPolygon",{10,5}},"Hamiltonian"]

GraphData[{"ContractedErectedPolygon",{10,5}},"LCF"]

GraphData[{"ContractedErectedPolygon",{10,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{10,5}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{10,5}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{10,5}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{10,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"ContractedErectedPolygon",{10,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ContractedErectedPolygon",{10,5}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ContractedErectedPolygon",{10,5}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ContractedErectedPolygon",{10,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ContractedErectedPolygon",{10,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

Circulant

GraphData[{"ContractedErectedPolygon",{10,5}},"Circulant"]

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

Circulant construction

GraphData[{"ContractedErectedPolygon",{10,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ContractedErectedPolygon",{10,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ContractedErectedPolygon",{10,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ContractedErectedPolygon",{10,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"ContractedErectedPolygon",{10,5}},"Line"]

LineGraphQ[GraphData[{"ContractedErectedPolygon",{10,5}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ContractedErectedPolygon",{10,5}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ContractedErectedPolygon",{10,5}},"Rigid"]

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

Flexible

GraphData[{"ContractedErectedPolygon",{10,5}},"Flexible"]

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

LCF

GraphData[{"ContractedErectedPolygon",{10,5}},"LCF"]

GraphData[{"ContractedErectedPolygon",{10,5}},"HamiltonianCycleCount"]

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

GraphData[{"ContractedErectedPolygon",{10,5}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

EuclideanDistance@@v[[{1,21}]]//N

v=Join[UnitCirclePoints[20,Pi/2],UnitCirclePoints[10,Pi/2]];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,,,};

Matchstick

GraphData[{"ContractedErectedPolygon",{10,5}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ContractedErectedPolygon",{10,5}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ContractedErectedPolygon",{10,5}},"Polyhedral"]

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

{"ContractedErectedPolygon", {10, 10}}

Names

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

GraphData[{"ContractedErectedPolygon",{10,10}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[10,10,"Contracted"->#,VertexLabels->Automatic]&/@{True,False}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ContractedErectedPolygon",{10,10}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ContractedErectedPolygon",{10,10}},"VertexList"],GraphData[{"ContractedErectedPolygon",{10,10}},"Edges"],GraphLayout->"TutteEmbedding"]]

v=Join[CirclePoints[{1,Pi/2},30],c=CirclePoints[{1/2,Pi/2},10]];
v=Join[
v,
#+(u=Normalize[#])/6+{-u[[2]],u[[1]]}/10&/@c,#+2(u=Normalize[#])/6+{-u[[2]],u[[1]]}/10&/@c,
#+(u=Normalize[#])/6-{-u[[2]],u[[1]]}/10&/@c,#+2(u=Normalize[#])/6-{-u[[2]],u[[1]]}/10&/@c
];
Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]//Quiet

RecognizeGraph@g

DegenerateGraphEmbeddingQ[g]

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ContractedErectedPolygon",{10,10}},"Hamiltonian"]

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

GraphData[{"ContractedErectedPolygon",{10,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{10,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ContractedErectedPolygon",{10,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{10,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ContractedErectedPolygon",{10,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ContractedErectedPolygon",{10,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ContractedErectedPolygon",{10,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ContractedErectedPolygon",{10,10}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ContractedErectedPolygon",{10,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ContractedErectedPolygon",{10,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ContractedErectedPolygon",{10,10}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

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

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

Circulant construction

GraphData[{"ContractedErectedPolygon",{10,10}},"NotationRules","Circulant"]

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

GraphData[{"ContractedErectedPolygon",{10,10}},"Line"]

LineGraphQ[GraphData[{"ContractedErectedPolygon",{10,10}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ContractedErectedPolygon",{10,10}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ContractedErectedPolygon",{10,10}},"Rigid"]

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

Flexible

GraphData[{"ContractedErectedPolygon",{10,10}},"Flexible"]

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

LCF

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

GraphData[{"ContractedErectedPolygon",{10,10}},"HamiltonianCycleCount"]

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

GraphData[{"ContractedErectedPolygon",{10,10}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

DegenerateGraphEmbeddingTypes/@%

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

g=;

Matchstick

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

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

3D default

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

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"ErectedPolygon", {3, 3}} == {"TriangularGrid", 2}

Names

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

GraphData[{"ErectedPolygon",{3,3}},"StandardNames"]

{"ErectedPolygon", {3, 4}}

Source

https://math.stackexchange.com/a/5051205

https://houseofgraphs.org/graphs/21054

Names

GraphData[{"ErectedPolygon",{3,4}},"StandardName"]

GraphData[{"ErectedPolygon",{3,4}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[3,4,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{3,4}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,4}},"VertexList"],GraphData[{"ErectedPolygon",{3,4}},"Edges"]]]

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

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

v=CirclePoints[9];
g=Graph[Range[9],UndirectedEdge@@@{e[{1,9},1],e[2,5,8,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

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

RecognizeGraph@g

gs={,};

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{3,4}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{3,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{3,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{3,4}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{3,4}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{3,4}},"LCF"]

GraphData[{"ErectedPolygon",{3,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,4}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,4}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{3,4}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,4}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,4}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{3,4}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,4}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{3,4}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{3,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,4}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,4}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{3,4}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{3,4}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{3,4}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{3,4}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{3,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{3,4}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{3,4}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{3,4}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{3,4}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{3,4}},"Rigid"]

GraphData[{"ErectedPolygon",{3,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{3,4}},"Flexible"]

GraphData[{"ErectedPolygon",{3,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{3,4}},"LCF"]

GraphData[{"ErectedPolygon",{3,4}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{3,4}},"LCFSignature"]

GraphData[{"ErectedPolygon",{3,4}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{3,4}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{3,4}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

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

RecognizeGraph@g

gs={,,,,RotateGraph[,Pi/2]};

UnitDistanceGraphEmbeddingQ/@gs

Matchstick

GraphData[{"ErectedPolygon",{3,4}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{3,4}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{3,4}},"Polyhedral"]

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

{"ErectedPolygon", {3, 5}}

Names

GraphData[{"ErectedPolygon",{3,5}},"StandardName"]

GraphData[{"ErectedPolygon",{3,5}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[3,5,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{3,5}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,5}},"VertexList"],GraphData[{"ErectedPolygon",{3,5}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[{1,12},1,5,9,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

RecognizeGraph@g

gs={,};

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{3,5}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{3,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{3,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{3,5}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{3,5}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{3,5}},"LCF"]

GraphData[{"ErectedPolygon",{3,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,5}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,5}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{3,5}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,5}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{3,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,5}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{3,5}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{3,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,5}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,5}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{3,5}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{3,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{3,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{3,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{3,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{3,5}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{3,5}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{3,5}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{3,5}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{3,5}},"Rigid"]

GraphData[{"ErectedPolygon",{3,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{3,5}},"Flexible"]

GraphData[{"ErectedPolygon",{3,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{3,5}},"LCF"]

GraphData[{"ErectedPolygon",{3,5}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{3,5}},"LCFSignature"]

GraphData[{"ErectedPolygon",{3,5}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{3,5}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

GraphPlot@

g0=LabelGraph@GraphicsToGraph@

v=UnitCirclePoints[3];
v=Join[v,{v[[1]]+{1,0},v[[3]]-{1,0},v[[2]]+v[[2]]-v[[3]],v[[3]]+v[[3]]-v[[2]],2v[[2]]-v[[1]],2v[[1]]-v[[2]],{0,-x},RotationMatrix[2Pi/3].{0,-x},RotationMatrix[4Pi/3].{0,-x}}]/.x->(2/(Sqrt[3]));
Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

GraphPlot@

g0=LabelGraph@

v=GraphEmbedding[g0];

v[[9]]=v[[8]]-{0,1};
v[[11]]=v[[12]]-{0,1};
v[[10]]=v[[4]]-{0,1+Sqrt[3]};
g=Annotate[g0,VertexCoordinates->v]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

gs=UnlabelGraph/@{,RotateGraph[,{7,5}],RotateGraph[,{11,5}],}

Matchstick

GraphData[{"ErectedPolygon",{3,5}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{3,5}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{3,5}},"Polyhedral"]

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

{"ErectedPolygon", {3, 6}}

Names

GraphData[{"ErectedPolygon",{3,6}},"StandardName"]

GraphData[{"ErectedPolygon",{3,6}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[3,6,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding"}

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{3,6}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,6}},"VertexList"],GraphData[{"ErectedPolygon",{3,6}},"Edges"],GraphLayout->"CircularEmbedding"]],π+Pi/15]

v=CirclePoints[{1,Pi/2},15];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[{1,15},1,6,11,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{3,6}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{3,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{3,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{3,6}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{3,6}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{3,6}},"LCF"]

GraphData[{"ErectedPolygon",{3,6}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,6}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,6}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{3,6}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,6}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,6}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{3,6}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,6}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{3,6}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{3,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,6}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,6}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{3,6}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{3,6}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{3,6}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{3,6}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{3,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{3,6}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{3,6}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{3,6}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{3,6}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{3,6}},"Rigid"]

GraphData[{"ErectedPolygon",{3,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{3,6}},"Flexible"]

GraphData[{"ErectedPolygon",{3,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{3,6}},"LCF"]

GraphData[{"ErectedPolygon",{3,6}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{3,6}},"LCFSignature"]

GraphData[{"ErectedPolygon",{3,6}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{3,6}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,,,};

Matchstick

GraphData[{"ErectedPolygon",{3,6}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{3,6}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{3,6}},"Polyhedral"]

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

{"ErectedPolygon", {3, 7}}

Names

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

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

Primary

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

All

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

Construction

ErectedPolygonGraph[3,7,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{3,7}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,7}},"VertexList"],GraphData[{"ErectedPolygon",{3,7}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},18];
g=Graph[Range@Length@v,UndirectedEdge@@@{e[{1,18},1,7,13,1]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

GraphData[{"ErectedPolygon",{3,7}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{3,7}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{3,7}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{3,7}},"LCF"]

GraphData[{"ErectedPolygon",{3,7}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,7}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,7}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{3,7}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,7}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,7}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{3,7}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,7}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{3,7}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,7}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,7}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{3,7}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{3,7}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{3,7}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{3,7}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{3,7}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{3,7}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{3,7}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{3,7}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{3,7}},"Rigid"]

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

Flexible

GraphData[{"ErectedPolygon",{3,7}},"Flexible"]

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

LCF

GraphData[{"ErectedPolygon",{3,7}},"LCF"]

GraphData[{"ErectedPolygon",{3,7}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{3,7}},"LCFSignature"]

GraphData[{"ErectedPolygon",{3,7}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{3,7}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,};

g0=LabelGraph@IndexGraph@

v=GraphEmbedding[g0];
v[[8]]=2v[[7]]-v[[6]];
v[[9]]=2v[[10]]-v[[11]];
g=Annotate[g0,VertexCoordinates->v]

Matchstick

GraphData[{"ErectedPolygon",{3,7}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{3,7}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{3,7}},"Polyhedral"]

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

{"ErectedPolygon", {3, 8}}

Names

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

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

Primary

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

All

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

Construction

ErectedPolygonGraph[3,8,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

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

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,8}},"VertexList"],GraphData[{"ErectedPolygon",{3,8}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

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

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

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

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

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

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

PlanarGraphEmbeddings

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

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

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

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

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,8}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

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

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

Circulant construction

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

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

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

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

RootGraph

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

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

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,,};

Matchstick

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

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

3D default

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

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"ErectedPolygon", {3, 9}}

Names

GraphData[{"ErectedPolygon",{3,9}},"StandardName"]

GraphData[{"ErectedPolygon",{3,9}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[3,9,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{3,9}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,9}},"VertexList"],GraphData[{"ErectedPolygon",{3,9}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{3,9}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{3,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{3,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{3,9}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{3,9}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{3,9}},"LCF"]

GraphData[{"ErectedPolygon",{3,9}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,9}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,9}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{3,9}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,9}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{3,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,9}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{3,9}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{3,9}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,9}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{3,9}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{3,9}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{3,9}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{3,9}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{3,9}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{3,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{3,9}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{3,9}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{3,9}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ErectedPolygon",{3,9}},"Rigid"]

GraphData[{"ErectedPolygon",{3,9}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{3,9}},"Flexible"]

GraphData[{"ErectedPolygon",{3,9}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{3,9}},"LCF"]

GraphData[{"ErectedPolygon",{3,9}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{3,9}},"LCFSignature"]

GraphData[{"ErectedPolygon",{3,9}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{3,9}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{3,9}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,};

Matchstick

GraphData[{"ErectedPolygon",{3,9}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{3,9}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{3,9}},"Polyhedral"]

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

{"ErectedPolygon", {3, 10}}

Names

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

GraphData[{"ErectedPolygon",{3,10}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[3,10,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{3,10}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{3,10}},"VertexList"],GraphData[{"ErectedPolygon",{3,10}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{3,10}},"Graph","Degenerate"]

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{3,10}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{3,10}},"LCF"]

GraphData[{"ErectedPolygon",{3,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{3,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{3,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{3,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{3,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{3,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{3,10}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{3,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{3,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

Circulant

GraphData[{"ErectedPolygon",{3,10}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{3,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{3,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{3,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{3,10}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{3,10}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{3,10}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{3,10}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ErectedPolygon",{3,10}},"Rigid"]

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

Flexible

GraphData[{"ErectedPolygon",{3,10}},"Flexible"]

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

LCF

GraphData[{"ErectedPolygon",{3,10}},"LCF"]

GraphData[{"ErectedPolygon",{3,10}},"HamiltonianCycleCount"]

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

GraphData[{"ErectedPolygon",{3,10}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{3,10}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{3,10}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{3,10}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{3,10}},"Polyhedral"]

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

{"ErectedPolygon", {4, 3}}

Names

GraphData[{"ErectedPolygon",{4,3}},"StandardName"]

GraphData[{"ErectedPolygon",{4,3}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[4,3,GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,3}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,3}},"VertexList"],GraphData[{"ErectedPolygon",{4,3}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{4,3}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{4,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{4,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{4,3}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{4,3}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{4,3}},"LCF"]

GraphData[{"ErectedPolygon",{4,3}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,3}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,3}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{4,3}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,3}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,3}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,3}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,3}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,3}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{4,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,3}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,3}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{4,3}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{4,3}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{4,3}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{4,3}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{4,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{4,3}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{4,3}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{4,3}}]]

RecognizeGraph[%]

GraphData[{"ErectedPolygon",{4,3}},"RootGraph","Name"]

Halin

GraphData[{"ErectedPolygon",{4,3}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{4,3}},"Rigid"]

GraphData[{"ErectedPolygon",{4,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{4,3}},"Flexible"]

GraphData[{"ErectedPolygon",{4,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{4,3}},"LCF"]

GraphData[{"ErectedPolygon",{4,3}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{4,3}},"LCFSignature"]

GraphData[{"ErectedPolygon",{4,3}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{4,3}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{4,3}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{4,3}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{4,3}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{4,3}},"Polyhedral"]

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

{"ErectedPolygon", {4, 4}}

Names

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

GraphData[{"ErectedPolygon",{4,4}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[Sequence@@{4,4},GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,4}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,4}},"VertexList"],GraphData[{"ErectedPolygon",{4,4}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{4,4}},"Hamiltonian"]

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

GraphData[{"ErectedPolygon",{4,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,4}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,4}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,4}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,4}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,4}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,4}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,4}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,4}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

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

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

Circulant construction

GraphData[{"ErectedPolygon",{4,4}},"NotationRules","Circulant"]

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

GraphData[{"ErectedPolygon",{4,4}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{4,4}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{4,4}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ErectedPolygon",{4,4}},"Rigid"]

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

Flexible

GraphData[{"ErectedPolygon",{4,4}},"Flexible"]

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

LCF

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

GraphData[{"ErectedPolygon",{4,4}},"HamiltonianCycleCount"]

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

GraphData[{"ErectedPolygon",{4,4}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,};

Matchstick

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

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

3D default

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

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"ErectedPolygon", {4, 5}}

Names

GraphData[{"ErectedPolygon",{4,5}},"StandardName"]

GraphData[{"ErectedPolygon",{4,5}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[Sequence@@{4,5},GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,5}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,5}},"VertexList"],GraphData[{"ErectedPolygon",{4,5}},"Edges"]]]

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

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{4,5}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{4,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{4,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{4,5}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{4,5}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{4,5}},"LCF"]

GraphData[{"ErectedPolygon",{4,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,5}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,5}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{4,5}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,5}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,5}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,5}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{4,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,5}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,5}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{4,5}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{4,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{4,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{4,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{4,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{4,5}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{4,5}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{4,5}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{4,5}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{4,5}},"Rigid"]

GraphData[{"ErectedPolygon",{4,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{4,5}},"Flexible"]

GraphData[{"ErectedPolygon",{4,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{4,5}},"LCF"]

GraphData[{"ErectedPolygon",{4,5}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{4,5}},"LCFSignature"]

GraphData[{"ErectedPolygon",{4,5}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{4,5}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,RotateGraph[,{13,11}],}

Matchstick

GraphData[{"ErectedPolygon",{4,5}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{4,5}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{4,5}},"Polyhedral"]

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

{"ErectedPolygon", {4, 6}}

Names

GraphData[{"ErectedPolygon",{4,6}},"StandardName"]

GraphData[{"ErectedPolygon",{4,6}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{4,6}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,6}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,6}},"VertexList"],GraphData[{"ErectedPolygon",{4,6}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{4,6}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{4,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{4,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{4,6}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{4,6}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{4,6}},"LCF"]

GraphData[{"ErectedPolygon",{4,6}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,6}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,6}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{4,6}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,6}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,6}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,6}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,6}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,6}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{4,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,6}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,6}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{4,6}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{4,6}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{4,6}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{4,6}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{4,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{4,6}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{4,6}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{4,6}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{4,6}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{4,6}},"Rigid"]

GraphData[{"ErectedPolygon",{4,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{4,6}},"Flexible"]

GraphData[{"ErectedPolygon",{4,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{4,6}},"LCF"]

GraphData[{"ErectedPolygon",{4,6}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{4,6}},"LCFSignature"]

GraphData[{"ErectedPolygon",{4,6}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{4,6}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

EdgeLengths[]

v=Join[
CirclePoints[{1,Pi/2-Pi/10},4],CirclePoints[{1,Pi/2+Pi/10},4],
CirclePoints[{3/4,Pi/2-Pi/10},4],CirclePoints[{3/4,Pi/2+Pi/10},4],
CirclePoints[{1/2,Pi/2},4]
];
Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

g0=FindCorrespondingGraph[,v,Debug->True]//Quiet

EdgeLengths[g0]//N

RecognizeGraph@g0

v1=Join[
CirclePoints[{a,Pi/2-q1},4],CirclePoints[{a,Pi/2+q1},4],
CirclePoints[{b,Pi/2-q2},4],CirclePoints[{b,Pi/2+q2},4],
CirclePoints[{c,Pi/2},4]
];

eqn1=UnitEdgeEquations[v1,EdgeList[g0]]//FullSimplify//Union

eqn1cs=Join[
TrigExpand[eqn1]/.{Sin[q1]->s1,Cos[q1]->c1,Sin[q2]->s2,Cos[q2]->c2},
{c1^2+s1^2==1,c2^2+s2^2==1}
]

var1=Variables[Subtract@@@eqn1cs]

Solve[eqn1cs,var1,PositiveReals]

v2=Join[
CirclePoints[{a,Pi/2-q1},4],CirclePoints[{a,Pi/2+q1},4],
CirclePoints[{b,Pi/2-q2},4],CirclePoints[{b,Pi/2+q2},4],
CirclePoints[{c,Pi/2+q3},4]
];

eqn2=UnitEdgeEquations[v2,EdgeList[g0]]//FullSimplify//Union

eqn2cs=Join[
TrigExpand[eqn2]/.{Sin[q1]->s1,Cos[q1]->c1,Sin[q2]->s2,Cos[q2]->c2,Sin[q3]->s3,Cos[q3]->c3},
{c1^2+s1^2==1,c2^2+s2^2==1,c3^2+s3^2==1}
]

var2=Variables[Subtract@@@eqn2cs]

Solve[eqn2cs,var2,PositiveReals]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,RotateGraph[,{2,18}],RotateGraph[,{16,14}],RotateGraph[,{16,14}],,,,,,}

Matchstick

GraphData[{"ErectedPolygon",{4,6}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{4,6}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{4,6}},"Polyhedral"]

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

{"ErectedPolygon", {4, 7}}

Names

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

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

Primary

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

All

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

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{4,7}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,7}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,7}},"VertexList"],GraphData[{"ErectedPolygon",{4,7}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

GraphData[{"ErectedPolygon",{4,7}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{4,7}},"Graph","IGraph"]//StyleGraphs

Bilateral

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

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{4,7}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{4,7}},"LCF"]

GraphData[{"ErectedPolygon",{4,7}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,7}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,7}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{4,7}},"Planar"]

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,7}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,7}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,7}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,7}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,7}},{"RCN","CN"}]

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

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,7}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,7}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{4,7}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{4,7}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{4,7}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{4,7}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{4,7}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{4,7}},"Line"]

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

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{4,7}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{4,7}},"Halin"]

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

Rigid

GraphData[{"ErectedPolygon",{4,7}},"Rigid"]

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

Flexible

GraphData[{"ErectedPolygon",{4,7}},"Flexible"]

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

LCF

GraphData[{"ErectedPolygon",{4,7}},"LCF"]

GraphData[{"ErectedPolygon",{4,7}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{4,7}},"LCFSignature"]

GraphData[{"ErectedPolygon",{4,7}},"LCFNotations"]

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

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

UnitDistance

GraphData[{"ErectedPolygon",{4,7}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{4,7}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{4,7}}],TimeConstraint->300,"Results"->All]//Timing}

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={RotateGraph[,{28,14}],RotateGraph[,{1,22}],RotateGraph[,{3,6}],,}

Matchstick

GraphData[{"ErectedPolygon",{4,7}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"ErectedPolygon",{4,7}},"Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"ErectedPolygon",{4,7}},"Polyhedral"]

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

{"ErectedPolygon", {4, 8}}

Names

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

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

Primary

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

All

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

Construction

gs=ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{4,8}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Pick[gs,DegenerateGraphEmbeddingQ/@gs]

Inexact

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

Embedding types

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

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,8}},"VertexList"],GraphData[{"ErectedPolygon",{4,8}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

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

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

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

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

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

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

PlanarGraphEmbeddings

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

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

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

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

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

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

Circulant

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

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

Circulant construction

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

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

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

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

RootGraph

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

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

RecognizeGraph[%]

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

Select[%,!DegenerateGraphEmbeddingQ[#]&]

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,,};

Matchstick

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

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

3D default

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

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"ErectedPolygon", {4, 9}}

Names

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

GraphData[{"ErectedPolygon",{4,9}},"StandardNames"]

Primary

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

All

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

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{4,9}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,9}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,9}},"VertexList"],GraphData[{"ErectedPolygon",{4,9}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{4,9}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{4,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{4,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{4,9}},"Graph","Bilateral"]//StyleGraphs

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

Circular

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

Circular construction

GraphData[{"ErectedPolygon",{4,9}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{4,9}},"LCF"]

GraphData[{"ErectedPolygon",{4,9}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,9}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,9}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

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

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

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,9}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,9}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,9}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{4,9}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,9}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,9}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{4,9}},"Circulant"]

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

Circulant construction

GraphData[{"ErectedPolygon",{4,9}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{4,9}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{4,9}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{4,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{4,9}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{4,9}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"ErectedPolygon",{4,9}}]]

RecognizeGraph[%]

Halin

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

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

Rigid

GraphData[{"ErectedPolygon",{4,9}},"Rigid"]

GraphData[{"ErectedPolygon",{4,9}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{4,9}},"Flexible"]

GraphData[{"ErectedPolygon",{4,9}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{4,9}},"LCF"]

GraphData[{"ErectedPolygon",{4,9}},"HamiltonianCycleCount"]

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

GraphData[{"ErectedPolygon",{4,9}},"LCFNotations"]

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

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

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

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

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

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{4,9}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

g=;

Matchstick

GraphData[{"ErectedPolygon",{4,9}},"Matchstick"]

GraphData[{"ErectedPolygon",{4,9}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{4,9}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{4,9}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{4,9}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{4,9}},"Polyhedral"]

GraphData[{"ErectedPolygon",{4,9}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon", {4, 10}}

Names

GraphData[{"ErectedPolygon",{4,10}},"StandardName"]

GraphData[{"ErectedPolygon",{4,10}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{4,10}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{4,10}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{4,10}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{4,10}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{4,10}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{4,10}},"VertexList"],GraphData[{"ErectedPolygon",{4,10}},"Edges"]]]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{4,10}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{4,10}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{4,10}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{4,10}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{4,10}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{4,10}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{4,10}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{4,10}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{4,10}},"LCF"]

GraphData[{"ErectedPolygon",{4,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{4,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{4,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{4,10}},"Planar"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{4,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{4,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{4,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{4,10}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{4,10}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{4,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,10}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{4,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{4,10}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{4,10}},"Circulant"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{4,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{4,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{4,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{4,10}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{4,10}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{4,10}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{4,10}}&]

RootGraph[GraphData[{"ErectedPolygon",{4,10}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{4,10}},"Halin"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{4,10}},"Rigid"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{4,10}},"Flexible"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{4,10}},"LCF"]

GraphData[{"ErectedPolygon",{4,10}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{4,10}},"LCFSignature"]

GraphData[{"ErectedPolygon",{4,10}},"LCFNotations"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{4,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{4,10}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{4,10}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{4,10}},"VertexList"],GraphData[{"ErectedPolygon",{4,10}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{4,10}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{4,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{4,10}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{4,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{4,10}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={,,,};

Matchstick

GraphData[{"ErectedPolygon",{4,10}},"Matchstick"]

GraphData[{"ErectedPolygon",{4,10}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{4,10}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{4,10}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{4,10}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{4,10}},"Polyhedral"]

GraphData[{"ErectedPolygon",{4,10}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon", {5, 3}}

Names

GraphData[{"ErectedPolygon",{5,3}},"StandardName"]

GraphData[{"ErectedPolygon",{5,3}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,3}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,3}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,3}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,3}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,3}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,3}},"VertexList"],GraphData[{"ErectedPolygon",{5,3}},"Edges"]]]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,3}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,3}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,3}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,3}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,3}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,3}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,3}},"LCF"]

GraphData[{"ErectedPolygon",{5,3}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,3}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,3}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,3}},"Planar"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,3}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,3}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,3}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,3}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,3}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,3}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,3}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,3}},"Circulant"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,3}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,3}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,3}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,3}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,3}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,3}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,3}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,3}},"Halin"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,3}},"Rigid"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,3}},"Flexible"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,3}},"LCF"]

GraphData[{"ErectedPolygon",{5,3}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,3}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,3}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,3}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,3}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,3}},"VertexList"],GraphData[{"ErectedPolygon",{5,3}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,3}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,3}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,3}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,3}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,3}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

g=;

Matchstick

GraphData[{"ErectedPolygon",{5,3}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,3}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,3}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,3}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,3}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,3}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon", {5, 4}}

Names

GraphData[{"ErectedPolygon",{5,4}},"StandardName"]

GraphData[{"ErectedPolygon",{5,4}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,4}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,4}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,4}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,4}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,4}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,4}},"VertexList"],GraphData[{"ErectedPolygon",{5,4}},"Edges"]]]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,4}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,4}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,4}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,4}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,4}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,4}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,4}},"LCF"]

GraphData[{"ErectedPolygon",{5,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,4}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,4}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,4}},"Planar"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,4}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,4}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,4}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,4}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,4}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,4}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,4}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,4}},"Circulant"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,4}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,4}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,4}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,4}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,4}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,4}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,4}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,4}},"Halin"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,4}},"Rigid"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,4}},"Flexible"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,4}},"LCF"]

GraphData[{"ErectedPolygon",{5,4}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,4}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,4}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,4}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,4}},"VertexList"],GraphData[{"ErectedPolygon",{5,4}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,4}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,4}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{5,4}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,4}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,4}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,4}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon", {5, 5}}

Names

GraphData[{"ErectedPolygon",{5,5}},"StandardName"]

GraphData[{"ErectedPolygon",{5,5}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,5}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,5}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,5}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,5}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,5}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,5}},"VertexList"],GraphData[{"ErectedPolygon",{5,5}},"Edges"]]]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,5}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,5}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,5}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,5}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,5}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,5}},"LCF"]

GraphData[{"ErectedPolygon",{5,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,5}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,5}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,5}},"Planar"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,5}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,5}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,5}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,5}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,5}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,5}},"Circulant"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,5}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,5}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,5}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,5}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,5}},"Halin"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,5}},"Rigid"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,5}},"Flexible"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,5}},"LCF"]

GraphData[{"ErectedPolygon",{5,5}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,5}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,5}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,5}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,5}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,5}},"VertexList"],GraphData[{"ErectedPolygon",{5,5}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,5}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,5}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,5}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,5}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,5}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

gs={RotateGraph[,{7,5}],}

Matchstick

GraphData[{"ErectedPolygon",{5,5}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,5}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,5}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,5}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon", {5, 6}}

Names

GraphData[{"ErectedPolygon",{5,6}},"StandardName"]

GraphData[{"ErectedPolygon",{5,6}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,6}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,6}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,6}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,6}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,6}}]]

Default embedding

GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,6}},"VertexList"],GraphData[{"ErectedPolygon",{5,6}},"Edges"]]]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,6}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,6}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,6}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,6}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,6}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,6}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,6}},"LCF"]

GraphData[{"ErectedPolygon",{5,6}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,6}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,6}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,6}},"Planar"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,6}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,6}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,6}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,6}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,6}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,6}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,6}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,6}},"Circulant"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,6}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,6}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,6}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,6}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,6}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,6}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,6}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,6}},"Halin"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,6}},"Rigid"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,6}},"Flexible"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,6}},"LCF"]

GraphData[{"ErectedPolygon",{5,6}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,6}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,6}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,6}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,6}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,6}},"VertexList"],GraphData[{"ErectedPolygon",{5,6}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,6}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,6}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,6}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,6}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,6}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{5,6}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,6}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,6}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,6}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,6}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,6}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,6}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon", {5, 7}}

Names

GraphData[{"ErectedPolygon",{5,7}},"StandardName"]

GraphData[{"ErectedPolygon",{5,7}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,7}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,7}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,7}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,7}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,7}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,7}},"VertexList"],GraphData[{"ErectedPolygon",{5,7}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,7}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,7}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,7}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,7}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,7}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,7}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,7}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,7}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,7}},"LCF"]

GraphData[{"ErectedPolygon",{5,7}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,7}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,7}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,7}},"Planar"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,7}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,7}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,7}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,7}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,7}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,7}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,7}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,7}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,7}},"Circulant"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,7}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,7}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,7}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,7}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,7}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,7}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,7}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,7}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,7}},"Halin"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,7}},"Rigid"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,7}},"Flexible"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,7}},"LCF"]

GraphData[{"ErectedPolygon",{5,7}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,7}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,7}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,7}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,7}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,7}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,7}},"VertexList"],GraphData[{"ErectedPolygon",{5,7}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,7}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,7}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,7}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,7}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,7}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{5,7}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,7}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,7}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,7}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,7}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,7}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,7}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{5,8}}

Names

GraphData[{"ErectedPolygon",{5,8}},"StandardName"]

GraphData[{"ErectedPolygon",{5,8}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,8}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,8}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,8}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,8}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,8}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,8}},"VertexList"],GraphData[{"ErectedPolygon",{5,8}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,8}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,8}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,8}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,8}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,8}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,8}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,8}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,8}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,8}},"LCF"]

GraphData[{"ErectedPolygon",{5,8}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,8}},"Planar"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,8}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,8}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,8}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,8}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,8}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,8}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,8}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,8}},"Circulant"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,8}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,8}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,8}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,8}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,8}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,8}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,8}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,8}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,8}},"Halin"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,8}},"Rigid"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,8}},"Flexible"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,8}},"LCF"]

GraphData[{"ErectedPolygon",{5,8}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,8}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,8}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,8}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,8}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,8}},"VertexList"],GraphData[{"ErectedPolygon",{5,8}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,8}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,8}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,8}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,8}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,8}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{5,8}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,8}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,8}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,8}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,8}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,8}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,8}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{5,9}}

Names

GraphData[{"ErectedPolygon",{5,9}},"StandardName"]

GraphData[{"ErectedPolygon",{5,9}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,9}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,9}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,9}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,9}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,9}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,9}},"VertexList"],GraphData[{"ErectedPolygon",{5,9}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,9}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,9}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,9}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,9}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,9}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,9}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,9}},"LCF"]

GraphData[{"ErectedPolygon",{5,9}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,9}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,9}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,9}},"Planar"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,9}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,9}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,9}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,9}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,9}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,9}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,9}},"Circulant"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,9}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,9}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,9}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,9}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,9}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,9}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,9}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,9}},"Halin"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,9}},"Rigid"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,9}},"Flexible"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,9}},"LCF"]

GraphData[{"ErectedPolygon",{5,9}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,9}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,9}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,9}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,9}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,9}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,9}},"VertexList"],GraphData[{"ErectedPolygon",{5,9}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,9}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,9}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,9}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,9}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,9}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{5,9}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,9}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,9}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,9}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,9}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,9}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,9}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{5,10}}

Names

GraphData[{"ErectedPolygon",{5,10}},"StandardName"]

GraphData[{"ErectedPolygon",{5,10}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{5,10}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{5,10}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{5,10}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{5,10}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{5,10}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{5,10}},"VertexList"],GraphData[{"ErectedPolygon",{5,10}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{5,10}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{5,10}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{5,10}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{5,10}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{5,10}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{5,10}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{5,10}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{5,10}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{5,10}},"LCF"]

GraphData[{"ErectedPolygon",{5,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{5,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{5,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{5,10}},"Planar"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{5,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{5,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{5,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{5,10}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{5,10}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{5,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,10}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{5,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{5,10}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{5,10}},"Circulant"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{5,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{5,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{5,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{5,10}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{5,10}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{5,10}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{5,10}}&]

RootGraph[GraphData[{"ErectedPolygon",{5,10}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{5,10}},"Halin"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{5,10}},"Rigid"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{5,10}},"Flexible"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{5,10}},"LCF"]

GraphData[{"ErectedPolygon",{5,10}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{5,10}},"LCFSignature"]

GraphData[{"ErectedPolygon",{5,10}},"LCFNotations"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{5,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{5,10}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{5,10}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{5,10}},"VertexList"],GraphData[{"ErectedPolygon",{5,10}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{5,10}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,10}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{5,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{5,10}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{5,10}},"Matchstick"]

GraphData[{"ErectedPolygon",{5,10}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{5,10}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{5,10}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{5,10}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{5,10}},"Polyhedral"]

GraphData[{"ErectedPolygon",{5,10}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,3}}

Names

GraphData[{"ErectedPolygon",{6,3}},"StandardName"]

GraphData[{"ErectedPolygon",{6,3}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,3}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,3}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,3}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,3}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,3}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,3}},"VertexList"],GraphData[{"ErectedPolygon",{6,3}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,3}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,3}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,3}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,3}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,3}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,3}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,3}},"LCF"]

GraphData[{"ErectedPolygon",{6,3}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,3}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,3}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,3}},"Planar"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,3}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,3}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,3}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,3}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,3}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,3}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,3}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,3}},"Circulant"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,3}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,3}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,3}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,3}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,3}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,3}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,3}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,3}},"Halin"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,3}},"Rigid"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,3}},"Flexible"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,3}},"LCF"]

GraphData[{"ErectedPolygon",{6,3}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,3}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,3}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,3}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,3}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,3}},"VertexList"],GraphData[{"ErectedPolygon",{6,3}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,3}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,3}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,3}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,3}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,3}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,3}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,3}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,3}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,3}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,3}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,3}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,4}}

Names

GraphData[{"ErectedPolygon",{6,4}},"StandardName"]

GraphData[{"ErectedPolygon",{6,4}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,4}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,4}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,4}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,4}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,4}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,4}},"VertexList"],GraphData[{"ErectedPolygon",{6,4}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,4}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,4}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,4}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,4}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,4}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,4}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,4}},"LCF"]

GraphData[{"ErectedPolygon",{6,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,4}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,4}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,4}},"Planar"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,4}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,4}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,4}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,4}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,4}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,4}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,4}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,4}},"Circulant"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,4}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,4}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,4}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,4}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,4}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,4}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,4}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,4}},"Halin"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,4}},"Rigid"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,4}},"Flexible"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,4}},"LCF"]

GraphData[{"ErectedPolygon",{6,4}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,4}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,4}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,4}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,4}},"VertexList"],GraphData[{"ErectedPolygon",{6,4}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,4}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,4}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,4}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,4}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,4}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,4}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,5}}

Names

GraphData[{"ErectedPolygon",{6,5}},"StandardName"]

GraphData[{"ErectedPolygon",{6,5}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,5}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,5}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,5}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,5}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,5}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,5}},"VertexList"],GraphData[{"ErectedPolygon",{6,5}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,5}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,5}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,5}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,5}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,5}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,5}},"LCF"]

GraphData[{"ErectedPolygon",{6,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,5}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,5}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,5}},"Planar"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,5}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,5}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,5}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,5}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,5}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,5}},"Circulant"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,5}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,5}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,5}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,5}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,5}},"Halin"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,5}},"Rigid"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,5}},"Flexible"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,5}},"LCF"]

GraphData[{"ErectedPolygon",{6,5}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,5}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,5}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,5}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,5}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,5}},"VertexList"],GraphData[{"ErectedPolygon",{6,5}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,5}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,5}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,5}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,5}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,5}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,5}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,5}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,5}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,5}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,6}}

Names

GraphData[{"ErectedPolygon",{6,6}},"StandardName"]

GraphData[{"ErectedPolygon",{6,6}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,6}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,6}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,6}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,6}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,6}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,6}},"VertexList"],GraphData[{"ErectedPolygon",{6,6}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,6}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,6}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,6}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,6}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,6}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,6}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,6}},"LCF"]

GraphData[{"ErectedPolygon",{6,6}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,6}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,6}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,6}},"Planar"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,6}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,6}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,6}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,6}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,6}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,6}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,6}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,6}},"Circulant"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,6}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,6}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,6}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,6}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,6}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,6}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,6}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,6}},"Halin"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,6}},"Rigid"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,6}},"Flexible"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,6}},"LCF"]

GraphData[{"ErectedPolygon",{6,6}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,6}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,6}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,6}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,6}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,6}},"VertexList"],GraphData[{"ErectedPolygon",{6,6}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,6}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,6}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,6}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,6}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,6}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,6}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,6}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,6}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,6}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,6}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,6}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,6}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,7}}

Names

GraphData[{"ErectedPolygon",{6,7}},"StandardName"]

GraphData[{"ErectedPolygon",{6,7}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,7}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,7}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,7}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,7}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,7}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,7}},"VertexList"],GraphData[{"ErectedPolygon",{6,7}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,7}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,7}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,7}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,7}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,7}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,7}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,7}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,7}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,7}},"LCF"]

GraphData[{"ErectedPolygon",{6,7}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,7}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,7}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,7}},"Planar"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,7}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,7}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,7}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,7}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,7}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,7}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,7}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,7}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,7}},"Circulant"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,7}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,7}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,7}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,7}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,7}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,7}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,7}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,7}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,7}},"Halin"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,7}},"Rigid"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,7}},"Flexible"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,7}},"LCF"]

GraphData[{"ErectedPolygon",{6,7}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,7}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,7}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,7}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,7}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,7}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,7}},"VertexList"],GraphData[{"ErectedPolygon",{6,7}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,7}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,7}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,7}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,7}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,7}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,7}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,7}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,7}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,7}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,7}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,7}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,7}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,8}}

Names

GraphData[{"ErectedPolygon",{6,8}},"StandardName"]

GraphData[{"ErectedPolygon",{6,8}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,8}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,8}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,8}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,8}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,8}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,8}},"VertexList"],GraphData[{"ErectedPolygon",{6,8}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,8}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,8}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,8}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,8}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,8}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,8}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,8}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,8}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,8}},"LCF"]

GraphData[{"ErectedPolygon",{6,8}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,8}},"Planar"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,8}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,8}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,8}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,8}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,8}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,8}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,8}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,8}},"Circulant"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,8}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,8}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,8}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,8}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,8}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,8}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,8}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,8}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,8}},"Halin"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,8}},"Rigid"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,8}},"Flexible"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,8}},"LCF"]

GraphData[{"ErectedPolygon",{6,8}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,8}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,8}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,8}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,8}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,8}},"VertexList"],GraphData[{"ErectedPolygon",{6,8}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,8}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,8}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,8}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,8}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,8}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,8}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,8}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,8}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,8}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,8}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,8}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,8}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,9}}

Names

GraphData[{"ErectedPolygon",{6,9}},"StandardName"]

GraphData[{"ErectedPolygon",{6,9}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,9}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,9}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,9}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,9}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,9}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,9}},"VertexList"],GraphData[{"ErectedPolygon",{6,9}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,9}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,9}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,9}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,9}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,9}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,9}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,9}},"LCF"]

GraphData[{"ErectedPolygon",{6,9}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,9}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,9}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,9}},"Planar"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,9}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,9}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,9}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,9}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,9}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,9}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,9}},"Circulant"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,9}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,9}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,9}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,9}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,9}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,9}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,9}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,9}},"Halin"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,9}},"Rigid"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,9}},"Flexible"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,9}},"LCF"]

GraphData[{"ErectedPolygon",{6,9}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,9}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,9}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,9}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,9}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,9}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,9}},"VertexList"],GraphData[{"ErectedPolygon",{6,9}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,9}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,9}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,9}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,9}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,9}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,9}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,9}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,9}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,9}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,9}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,9}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,9}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{6,10}}

Names

GraphData[{"ErectedPolygon",{6,10}},"StandardName"]

GraphData[{"ErectedPolygon",{6,10}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{6,10}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{6,10}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{6,10}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{6,10}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{6,10}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{6,10}},"VertexList"],GraphData[{"ErectedPolygon",{6,10}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{6,10}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{6,10}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{6,10}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{6,10}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{6,10}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{6,10}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{6,10}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{6,10}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{6,10}},"LCF"]

GraphData[{"ErectedPolygon",{6,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{6,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{6,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{6,10}},"Planar"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{6,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{6,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{6,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{6,10}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{6,10}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{6,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,10}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{6,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{6,10}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{6,10}},"Circulant"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{6,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{6,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{6,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{6,10}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{6,10}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{6,10}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{6,10}}&]

RootGraph[GraphData[{"ErectedPolygon",{6,10}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{6,10}},"Halin"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{6,10}},"Rigid"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{6,10}},"Flexible"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{6,10}},"LCF"]

GraphData[{"ErectedPolygon",{6,10}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{6,10}},"LCFSignature"]

GraphData[{"ErectedPolygon",{6,10}},"LCFNotations"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{6,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{6,10}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{6,10}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{6,10}},"VertexList"],GraphData[{"ErectedPolygon",{6,10}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{6,10}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,10}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{6,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{6,10}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{6,10}},"Matchstick"]

GraphData[{"ErectedPolygon",{6,10}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{6,10}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{6,10}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{6,10}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{6,10}},"Polyhedral"]

GraphData[{"ErectedPolygon",{6,10}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,3}}

Names

GraphData[{"ErectedPolygon",{7,3}},"StandardName"]

GraphData[{"ErectedPolygon",{7,3}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,3}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,3}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,3}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,3}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,3}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,3}},"VertexList"],GraphData[{"ErectedPolygon",{7,3}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,3}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,3}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,3}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,3}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,3}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,3}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,3}},"LCF"]

GraphData[{"ErectedPolygon",{7,3}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,3}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,3}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,3}},"Planar"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,3}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,3}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,3}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,3}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,3}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,3}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,3}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,3}},"Circulant"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,3}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,3}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,3}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,3}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,3}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,3}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,3}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,3}},"Halin"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,3}},"Rigid"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,3}},"Flexible"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,3}},"LCF"]

GraphData[{"ErectedPolygon",{7,3}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,3}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,3}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,3}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,3}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,3}},"VertexList"],GraphData[{"ErectedPolygon",{7,3}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,3}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,3}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,3}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,3}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,3}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,3}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,3}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,3}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,3}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,3}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,3}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,4}}

Names

GraphData[{"ErectedPolygon",{7,4}},"StandardName"]

GraphData[{"ErectedPolygon",{7,4}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,4}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,4}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,4}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,4}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,4}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,4}},"VertexList"],GraphData[{"ErectedPolygon",{7,4}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,4}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,4}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,4}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,4}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,4}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,4}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,4}},"LCF"]

GraphData[{"ErectedPolygon",{7,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,4}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,4}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,4}},"Planar"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,4}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,4}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,4}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,4}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,4}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,4}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,4}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,4}},"Circulant"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,4}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,4}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,4}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,4}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,4}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,4}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,4}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,4}},"Halin"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,4}},"Rigid"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,4}},"Flexible"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,4}},"LCF"]

GraphData[{"ErectedPolygon",{7,4}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,4}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,4}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,4}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,4}},"VertexList"],GraphData[{"ErectedPolygon",{7,4}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,4}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,4}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,4}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,4}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,4}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,4}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,5}}

Names

GraphData[{"ErectedPolygon",{7,5}},"StandardName"]

GraphData[{"ErectedPolygon",{7,5}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,5}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,5}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,5}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,5}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,5}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,5}},"VertexList"],GraphData[{"ErectedPolygon",{7,5}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,5}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,5}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,5}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,5}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,5}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,5}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,5}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,5}},"LCF"]

GraphData[{"ErectedPolygon",{7,5}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,5}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,5}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,5}},"Planar"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,5}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,5}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,5}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,5}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,5}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,5}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,5}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,5}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,5}},"Circulant"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,5}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,5}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,5}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,5}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,5}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,5}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,5}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,5}},"Halin"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,5}},"Rigid"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,5}},"Flexible"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,5}},"LCF"]

GraphData[{"ErectedPolygon",{7,5}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,5}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,5}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,5}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,5}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,5}},"VertexList"],GraphData[{"ErectedPolygon",{7,5}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,5}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,5}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,5}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,5}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,5}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,5}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,5}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,5}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,5}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,5}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,5}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,6}}

Names

GraphData[{"ErectedPolygon",{7,6}},"StandardName"]

GraphData[{"ErectedPolygon",{7,6}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,6}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,6}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,6}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,6}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,6}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,6}},"VertexList"],GraphData[{"ErectedPolygon",{7,6}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,6}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,6}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,6}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,6}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,6}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,6}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,6}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,6}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,6}},"LCF"]

GraphData[{"ErectedPolygon",{7,6}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,6}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,6}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,6}},"Planar"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,6}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,6}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,6}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,6}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,6}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,6}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,6}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,6}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,6}},"Circulant"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,6}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,6}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,6}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,6}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,6}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,6}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,6}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,6}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,6}},"Halin"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,6}},"Rigid"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,6}},"Flexible"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,6}},"LCF"]

GraphData[{"ErectedPolygon",{7,6}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,6}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,6}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,6}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,6}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,6}},"VertexList"],GraphData[{"ErectedPolygon",{7,6}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,6}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,6}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,6}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,6}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,6}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,6}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,6}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,6}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,6}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,6}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,6}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,6}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,7}}

Names

GraphData[{"ErectedPolygon",{7,7}},"StandardName"]

GraphData[{"ErectedPolygon",{7,7}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,7}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,7}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,7}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,7}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,7}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,7}},"VertexList"],GraphData[{"ErectedPolygon",{7,7}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,7}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,7}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,7}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,7}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,7}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,7}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,7}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,7}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,7}},"LCF"]

GraphData[{"ErectedPolygon",{7,7}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,7}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,7}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,7}},"Planar"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,7}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,7}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,7}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,7}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,7}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,7}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,7}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,7}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,7}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,7}},"Circulant"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,7}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,7}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,7}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,7}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,7}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,7}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,7}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,7}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,7}},"Halin"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,7}},"Rigid"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,7}},"Flexible"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,7}},"LCF"]

GraphData[{"ErectedPolygon",{7,7}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,7}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,7}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,7}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,7}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,7}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,7}},"VertexList"],GraphData[{"ErectedPolygon",{7,7}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,7}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,7}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,7}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,7}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,7}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,7}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,7}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,7}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,7}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,7}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,7}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,7}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,8}}

Names

GraphData[{"ErectedPolygon",{7,8}},"StandardName"]

GraphData[{"ErectedPolygon",{7,8}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,8}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,8}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,8}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,8}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,8}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,8}},"VertexList"],GraphData[{"ErectedPolygon",{7,8}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,8}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,8}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,8}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,8}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,8}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,8}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,8}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,8}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,8}},"LCF"]

GraphData[{"ErectedPolygon",{7,8}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,8}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,8}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,8}},"Planar"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,8}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,8}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,8}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,8}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,8}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,8}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,8}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,8}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,8}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,8}},"Circulant"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,8}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,8}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,8}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,8}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,8}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,8}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,8}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,8}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,8}},"Halin"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,8}},"Rigid"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,8}},"Flexible"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,8}},"LCF"]

GraphData[{"ErectedPolygon",{7,8}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,8}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,8}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,8}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,8}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,8}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,8}},"VertexList"],GraphData[{"ErectedPolygon",{7,8}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,8}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,8}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,8}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,8}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,8}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,8}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,8}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,8}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,8}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,8}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,8}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,8}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,9}}

Names

GraphData[{"ErectedPolygon",{7,9}},"StandardName"]

GraphData[{"ErectedPolygon",{7,9}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,9}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,9}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,9}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,9}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,9}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,9}},"VertexList"],GraphData[{"ErectedPolygon",{7,9}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,9}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,9}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,9}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,9}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,9}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,9}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,9}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,9}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,9}},"LCF"]

GraphData[{"ErectedPolygon",{7,9}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,9}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,9}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,9}},"Planar"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,9}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,9}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,9}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,9}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,9}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,9}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,9}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,9}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,9}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,9}},"Circulant"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,9}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,9}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,9}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,9}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,9}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,9}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,9}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,9}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,9}},"Halin"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,9}},"Rigid"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,9}},"Flexible"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,9}},"LCF"]

GraphData[{"ErectedPolygon",{7,9}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,9}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,9}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,9}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,9}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,9}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,9}},"VertexList"],GraphData[{"ErectedPolygon",{7,9}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,9}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,9}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,9}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,9}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,9}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,9}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,9}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,9}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,9}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,9}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,9}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,9}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{7,10}}

Names

GraphData[{"ErectedPolygon",{7,10}},"StandardName"]

GraphData[{"ErectedPolygon",{7,10}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{7,10}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{7,10}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{7,10}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{7,10}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{7,10}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{7,10}},"VertexList"],GraphData[{"ErectedPolygon",{7,10}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{7,10}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{7,10}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{7,10}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{7,10}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{7,10}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{7,10}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{7,10}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{7,10}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{7,10}},"LCF"]

GraphData[{"ErectedPolygon",{7,10}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{7,10}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{7,10}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{7,10}},"Planar"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,10}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{7,10}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{7,10}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{7,10}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{7,10}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{7,10}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{7,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,10}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{7,10}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{7,10}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{7,10}},"Circulant"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{7,10}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{7,10}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{7,10}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{7,10}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{7,10}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{7,10}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{7,10}}&]

RootGraph[GraphData[{"ErectedPolygon",{7,10}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{7,10}},"Halin"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{7,10}},"Rigid"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{7,10}},"Flexible"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{7,10}},"LCF"]

GraphData[{"ErectedPolygon",{7,10}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{7,10}},"LCFSignature"]

GraphData[{"ErectedPolygon",{7,10}},"LCFNotations"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{7,10}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{7,10}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{7,10}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{7,10}},"VertexList"],GraphData[{"ErectedPolygon",{7,10}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{7,10}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,10}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,10}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{7,10}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{7,10}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{7,10}},"Matchstick"]

GraphData[{"ErectedPolygon",{7,10}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{7,10}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{7,10}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{7,10}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{7,10}},"Polyhedral"]

GraphData[{"ErectedPolygon",{7,10}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{8,3}}

Names

GraphData[{"ErectedPolygon",{8,3}},"StandardName"]

GraphData[{"ErectedPolygon",{8,3}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{8,3}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{8,3}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{8,3}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{8,3}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{8,3}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{8,3}},"VertexList"],GraphData[{"ErectedPolygon",{8,3}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{8,3}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{8,3}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{8,3}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{8,3}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{8,3}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{8,3}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{8,3}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{8,3}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{8,3}},"LCF"]

GraphData[{"ErectedPolygon",{8,3}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{8,3}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{8,3}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{8,3}},"Planar"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{8,3}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{8,3}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{8,3}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{8,3}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{8,3}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{8,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{8,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{8,3}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{8,3}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{8,3}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{8,3}},"Circulant"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{8,3}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{8,3}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{8,3}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{8,3}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{8,3}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{8,3}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{8,3}}&]

RootGraph[GraphData[{"ErectedPolygon",{8,3}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{8,3}},"Halin"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{8,3}},"Rigid"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{8,3}},"Flexible"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{8,3}},"LCF"]

GraphData[{"ErectedPolygon",{8,3}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{8,3}},"LCFSignature"]

GraphData[{"ErectedPolygon",{8,3}},"LCFNotations"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{8,3}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{8,3}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{8,3}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{8,3}},"VertexList"],GraphData[{"ErectedPolygon",{8,3}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{8,3}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{8,3}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{8,3}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{8,3}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{8,3}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{8,3}},"Matchstick"]

GraphData[{"ErectedPolygon",{8,3}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{8,3}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{8,3}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{8,3}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{8,3}},"Polyhedral"]

GraphData[{"ErectedPolygon",{8,3}},"Graph",{"3D","Polyhedron"}]

{"ErectedPolygon",{8,4}}

Names

GraphData[{"ErectedPolygon",{8,4}},"StandardName"]

GraphData[{"ErectedPolygon",{8,4}},"StandardNames"]

Primary

GraphData[{"ErectedPolygon",{8,4}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"ErectedPolygon",{8,4}},"Graph","All"]//StyleGraphs

Construction

ErectedPolygonGraph[Sequence@@{"ErectedPolygon",{8,4}}[[2]],GraphLayout->#]&/@{"PolygonEmbedding","RectangleEmbedding","UnitDistanceEmbedding","CircularEmbedding"}//StyleGraphs

Inexact

Select[GraphData[{"ErectedPolygon",{8,4}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"ErectedPolygon",{8,4}}]]

Default embedding

RotateGraph[GraphPlot[Graph[GraphData[{"ErectedPolygon",{8,4}},"VertexList"],GraphData[{"ErectedPolygon",{8,4}},"Edges"],GraphLayout->"CircularEmbedding"]],π]

v=CirclePoints[{1,Pi/2},12];
g=Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Degenerate

GraphData[{"ErectedPolygon",{8,4}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"ErectedPolygon",{8,4}},"Graph","Degenerate"]

GeneralizedPetersen

GraphData[{"ErectedPolygon",{8,4}},"Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData[{"ErectedPolygon",{8,4}},"Graph","IGraph"]//StyleGraphs

Bilateral

GraphData[{"ErectedPolygon",{8,4}},"Graph","Bilateral"]//StyleGraphs

Grid[DeleteCases[Monitor[{g=#,BilateralGraphEmbeddingTypes[#],GraphSymmetryGroup[#]}&/@GraphData[{"ErectedPolygon",{8,4}},"Graph","All"],g],{_,_,TransformationGroup[{}]}],Dividers->All,Alignment->{{Center,{Left}}}]

Circular

GraphData[{"ErectedPolygon",{8,4}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"ErectedPolygon",{8,4}},"Hamiltonian"]

GraphData[{"ErectedPolygon",{8,4}},"LCF"]

GraphData[{"ErectedPolygon",{8,4}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"ErectedPolygon",{8,4}}],All][[All,All,1]]]//Timing

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"ErectedPolygon",{8,4}}],#]&/@hc);//Timing

graphswithsymmetrygroups={#,GraphSymmetryGroup[#]}&/@circ;//Timing

Tally[graphswithsymmetrygroups[[All,-1]]]//Column

(bilaterallyrotatedgraphs={BilaterallyRotatedGraph[#,"ReturnNonbilateralGraph"->True],#2}&@@@SortBy[
DeleteCases[graphswithsymmetrygroups,{_,TransformationGroup[{}]}],
{MatchQ[#[[2]],TransformationGroup[{_Rotation,r_Reflection}|{r_Reflection|_Rotation}]],FirstCase[#[[2]],Rotation[{0,0},r_]:>N[r/π],{},{0,∞}]}&
])//Timing

Length[symmetricgraphs=DeleteDuplicatesBy[bilaterallyrotatedgraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

symmetricgraphs

gs=symmetricgraphs[[All,1]]

Planar

GraphData[{"ErectedPolygon",{8,4}},"Planar"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","Planar"]//StyleGraphs

Planar construction

PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{8,4}}],GraphLayout->#]&/@{"TutteLayout","DavidsonHarelLayout"}

Table[PlanarGraphEmbedding[GraphData[{"ErectedPolygon",{8,4}}]],10]

PlanarGraphEmbeddings

GraphData[{"ErectedPolygon",{8,4}},"PlanarEmbeddingCount"]

(plemb=PlanarGraphEmbeddings[GraphData[{"ErectedPolygon",{8,4}}],Debug->True])//Timing

Length[plemb]

MinimalCrossing

GraphData[{"ErectedPolygon",{8,4}},{"RCN","CN"}]

GraphData[{"ErectedPolygon",{8,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"ErectedPolygon",{8,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{8,4}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData[{"ErectedPolygon",{8,4}},{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData[{"ErectedPolygon",{8,4}},"Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

Circulant

GraphData[{"ErectedPolygon",{8,4}},"Circulant"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"ErectedPolygon",{8,4}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"ErectedPolygon",{8,4}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"ErectedPolygon",{8,4}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

compl=GraphData[{"ErectedPolygon",{8,4}},"ComplementGraph","Name"]

Line graph

GraphData[{"ErectedPolygon",{8,4}},"Line"]

LineGraphQ[GraphData[{"ErectedPolygon",{8,4}}]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==={"ErectedPolygon",{8,4}}&]

RootGraph[GraphData[{"ErectedPolygon",{8,4}}]]

RecognizeGraph[%]

Halin

GraphData[{"ErectedPolygon",{8,4}},"Halin"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"ErectedPolygon",{8,4}},"Rigid"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"ErectedPolygon",{8,4}},"Flexible"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"ErectedPolygon",{8,4}},"LCF"]

GraphData[{"ErectedPolygon",{8,4}},"HamiltonianCycleCount"]

GraphData[{"ErectedPolygon",{8,4}},"LCFSignature"]

GraphData[{"ErectedPolygon",{8,4}},"LCFNotations"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","LCF"]//StyleGraphs

Tally[LCFNotation[#][[2]]&/@%]

UnitDistance

GraphData[{"ErectedPolygon",{8,4}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"ErectedPolygon",{8,4}}],Debug->True]//Timing

GraphData[{"ErectedPolygon",{8,4}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"ErectedPolygon",{8,4}},"VertexList"],GraphData[{"ErectedPolygon",{8,4}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"ErectedPolygon",{8,4}},"Graph",#]&/@{"All","UnitDistance"})

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance construction

Graph[Range@Length@v,UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceGraphEmbeddingQ@g

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{8,4}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{8,4}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{{"ErectedPolygon",{8,4}},l=FindSubgraphUnitDistanceEmbedding[GraphData[{"ErectedPolygon",{8,4}}],TimeConstraint->300,"Results"->All]//Timing}

gs=SortBy[UniqueEmbeddings[l],Replace[RectilinearCrossingCount[#],Infinity->0]&]

Select[IndexGraph/@gs,!DegenerateGraphEmbeddingQ[#]&&GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]//Timing

Matchstick

GraphData[{"ErectedPolygon",{8,4}},"Matchstick"]

GraphData[{"ErectedPolygon",{8,4}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"ErectedPolygon",{8,4}},"Edges"]]

3D construction

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

3D All

GraphData[{"ErectedPolygon",{8,4}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"ErectedPolygon",{8,4}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"ErectedPolygon",{8,4}},"Polyhedral"]

GraphData[{"ErectedPolygon",{8,4}},"Graph",{"3D","Polyhedron"}]

Construction

all=Flatten[
Monitor[Table[{{n,k},g=ErectedPolygonGraph[n,k],RecognizeGraph[g],g2=IndexGraph@ContractCoincidentVertices[g],RecognizeGraph@g2},{n,3,10},{k,3,10}],
{n,k}],
1]

erected={#[[1]],If[IsomorphicGraphQ@@#[[{2,4}]],#[[2]],Graph[EdgeList[#[[2]]]]],#[[3]]}&/@all

rename=DeleteCases[erected,{_,_,{}}]

add=Cases[erected,{_,_,{}}]

contractederected=Select[all,!IsomorphicGraphQ@@#[[{2,4}]]&][[All,{1,4,5}]]

GraphData

GraphDataClassString

GraphDataClassString["ErectedPolygon"]

GraphDataString

file=OpenAppend["~/erected-polygon.m"]

{{6,6},,{"HexagonalGrid",{2,2,2}}}

add={{{4,8},,{}},{{5,10},,{}},{{6,9},,{}},{{8,8},,{}},{{10,5},,{}},{{10,10},,{}}};

WriteString[file,GraphDataString[#2,
"StandardName"->{"ContractedErectedPolygon",#},
"Name"->StringReplace[ToString[#],{"{"->"(","}"->")"," "->""}]<>"\[Hyphen]contracted erected polygon graph",
"Information"->"ErectedPolygonGraph",
"Skip"->{"Arboricity","ConnectedInducedSubgraphPolynomial","ConstructionNumber","ErdosSequence","HITSCentralities","KatzCentralities","MaximalIndependencePolynomial","MaximumIndependentVertexSets","MinimumConnectedDominatingSet","MinimumTotalDominatingSets","Minors","MinimumDominatingSets","PlanarEmbedingCount","QuadraticEmbeddingConstant"},
TimeConstraint->10
]
]&@@@add;

Close[file]