Self-Complementary Graph

Author

Eric W. Weisstein
July 11, 2024

This notebook downloaded from http://mathworld.wolfram.com/notebooks/GraphTheory/Self-ComplementaryGraph.nb.

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

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

Counts

Graphs[9]

ConnectedGraphs[9];

GraphPolynomial

Table[GraphPolynomial[n,x]/.x->-1,{n,20}]

Even edge count-odd edge count

edgecounts=Table[EdgeCount/@Graphs[n],{n,9}];

even=Count[#,_?EvenQ]&/@edgecounts;

odd=Count[#,_?OddQ]&/@edgecounts;

even-odd

Counts

A000171

1, 0, 0, 1, 2, 0, 0, 10, 36, 0, 0, 720, 5600, 0, 0, 703760, 11220000,

Total[Boole[Get[#]]]&/@FileNames["*.m",FileNameJoin[{$GraphDataDirectory,"Nodes","SelfComplementary"}]]

Table[Total[Boole[SelfComplementaryGraphQ/@Graphs[n]]],{n,9}]//Timing

Table[Total[Boole[SelfComplementaryGraphQ/@ConnectedGraphs[n]]],{n,9}]//Timing

GraphData is complete up to n==12

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

12 and 13 nodes

SetDirectory[$dir="/Users/eww/Documents/Mathematica/Paclets/GraphData/Collections/Royle/SelfComplementary/"];

files=FileNames["sc*.g6"]

Length[Import[#]]&/@files

Graphic

Length/@Table[Select[ConnectedGraphs[n],SelfComplementaryGraphQ],{n,8}]

Length/@(sc=Table[GraphData["SelfComplementary",n],{n,8}])

GraphicsGrid[Flatten[Partition[#,UpTo[5]]&/@Map[Show[GraphData[#]/.g_System`Graph:>SetProperty[g,{VertexSize->If[VertexCount[g]==1,.03,{"Scaled",.09}],System`VertexStyle->Red,System`EdgeStyle->Black}],PlotLabel->TextCell[GraphData[#,"Name"],PageWidth->100,TextAlignment->Center],BaseStyle->{Italic,FontFamily->"Times"}]&,DeleteCases[sc,{}],{2}],1],Dividers->{{Thick,True,True,True,True,Thick},{Thick,Thick,Thick,Thick,True,Thick}},ImageSize->500
]

Embeddings

<<MathWorld`Graphs`

8

GraphData["SelfComplementary",8]

{"SelfComplementary", {8, 1}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,1}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{8,1}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,1}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

EdgeList[%146[[1]]]

Bilateral

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

Circular

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

Circular construction

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

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

bilat

Planar

GraphData[{"SelfComplementary",{8,1}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{8,1}},{"RCN","CN"}]

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{8,1}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{8,1}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{8,1}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{8,1}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{8,1}},"LCF"]

GraphData[{"SelfComplementary",{8,1}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{8,1}},"LCFSignature"]

GraphData[{"SelfComplementary",{8,1}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{8,1}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{8,1}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{8,1}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{8,1}},"Polyhedral"]

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

{"SelfComplementary", {8, 2}} == {"Sun", 4}

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

{"SelfComplementary", {8, 3}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,3}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

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

RecognizeGraph[g]

GraphPlot@

RotateGraph[GraphicsToGraph@,Pi]

h=Mean[v[[{6,5}]]][[2]]

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

RecognizeGraph@g

Degenerate

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

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

Complement

DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,3}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

EdgeList[%146[[1]]]

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

quad

Planar

GraphData[{"SelfComplementary",{8,3}},"Planar"]

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

Tutte embedding construction

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

MinimalCrossing

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

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

MinimalCrossing construction

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{8,3}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{8,3}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{8,3}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{8,3}},"LCF"]

GraphData[{"SelfComplementary",{8,3}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{8,3}},"LCFNotations"]

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

GraphPlot@

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{8,3}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{8,3}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{8,3}},"Polyhedral"]

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

{"SelfComplementary", {8, 4}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,4}},"EdgeList"]]

Default embedding

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

RotateGraph[GraphicsToGraph@,Pi/2]

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

RecognizeGraph[g]

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

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

RecognizeGraph@g

Degenerate

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

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

Complement

DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,4}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

EdgeList[%146[[1]]]

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{8,4}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"SelfComplementary", {8, 5}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,5}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph@g

RecognizeGraph[g]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,5}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

quad

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{8,5}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"SelfComplementary",{8,5}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{8,5}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{8,5}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{8,5}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{8,5}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{8,5}},"LCF"]

GraphData[{"SelfComplementary",{8,5}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{8,5}},"LCFSignature"]

GraphData[{"SelfComplementary",{8,5}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{8,5}},"UnitDistance"]

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

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

UnitDistance by refinement

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

GraphPlot@

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

LabelGraph@RotateGraph[,{2,8}]

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{8,5}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{8,5}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{8,5}},"Polyhedral"]

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

{"SelfComplementary", {8, 6}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,6}},"EdgeList"]]

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,6}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

quad

Planar

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

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

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3 #1

GraphPlot[RotateGraph[]]

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

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

RecognizeGraph[g]

Tutte embedding construction 3 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Halin

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

Rigid

GraphData[{"SelfComplementary",{8,6}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{8,6}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{8,6}},"LCFSignature"]

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

UnitDistance

GraphData[{"SelfComplementary",{8,6}},"UnitDistance"]

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

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

Matchstick

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

3D default

Graph3D[GraphData[{"SelfComplementary",{8,6}},"Edges"]]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"SelfComplementary",{8,6}}],-1]}]

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

SimplePolyhedronQ[can]

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

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

{"SelfComplementary", {8, 7}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,7}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{8,7}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,7}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{8,7}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{8,7}},{"RCN","CN"}]

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

MinimalCrossing construction

GraphPlot@MinimalCrossingGraph[GraphData[{"SelfComplementary",{8,7}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{8,7}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{8,7}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{8,7}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{8,7}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{8,7}},"LCF"]

GraphData[{"SelfComplementary",{8,7}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{8,7}},"LCFSignature"]

GraphData[{"SelfComplementary",{8,7}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{8,7}},"UnitDistance"]

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

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

UnitDistance by refinement

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

GraphPlot@

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{8,7}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{8,7}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{8,7}},"Polyhedral"]

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

{"SelfComplementary", {8, 8}}

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{8,8}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,8}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

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

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

MinimalCrossing

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

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

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{8,8}}]],-Pi/4]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"SelfComplementary", {8, 9}} == {"JohnsonSkeleton", 26}

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

{"SelfComplementary", {8, 10}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{8,10}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{8,10}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{8,10}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

gs=Drop[gs,3]

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

quad

gs=Join[quad,bilat[[{1}]]]

Planar

GraphData[{"SelfComplementary",{8,10}},"Planar"]

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

Planar

GraphData[{"SelfComplementary",{8,10}},"Planar"]

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

MinimalCrossing

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

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

MinimalCrossing construction

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Tutte embeddings

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

Tally[ReverseSort[Length/@faces]]

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

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

Tutte embedding construction 4

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 3

GraphPlot[RotateGraph[,2Pi/3]]

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

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

RecognizeGraph[g]

Halin

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

Rigid

GraphData[{"SelfComplementary",{8,10}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{8,10}},"Flexible"]

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

LCF

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

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

UnitDistance

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

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

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

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

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

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

UnitDistance FindSubgraphUnitDistanceEmbedding

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

gs=UniqueEmbeddings[l]

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

Matchstick

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

3D default

Graph3D[GraphData[{"SelfComplementary",{8,10}},"Edges"]]

3D All

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

3D Polyhedron

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

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

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

3D Polyhedron construction

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

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

SimplePolyhedronQ[can]

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

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

v=PolyhedronCoordinates[can];

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

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

g=PolyhedronGraph[can]

9

GraphData["SelfComplementary",9]

{"SelfComplementary", {9, 1}}

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

GraphPlot[GraphData[{"SelfComplementary",{9,1}},"Edges"],GraphLayout->"RadialEmbedding"]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,1}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,1}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,1}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,1}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{9,1}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{9,1}},"LCF"]

GraphData[{"SelfComplementary",{9,1}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{9,1}},"LCFNotations"]

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,1}},"Matchstick"]

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,1}},"Polyhedral"]

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

{"SelfComplementary", {9, 2}}

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,2}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,2}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,2}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,2}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

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

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,2}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,2}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,2}},"Rigid"]

GraphData[{"SelfComplementary",{9,2}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,2}},"Flexible"]

GraphData[{"SelfComplementary",{9,2}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,2}},"LCF"]

GraphData[{"SelfComplementary",{9,2}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{9,2}},"LCFNotations"]

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

UnitDistance

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

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

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

UnitDistance by refinement

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

GraphPlot@RotateGraph[,{5,2}]

RotateGraph[GraphicsToGraph@,-Pi/2]

RegionIntersection[InfiniteLine@v[[{4,6}]],InfiniteLine@v[[{7,2}]]][[1]]//FullSimplify

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

RecognizeGraph@g

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

UnitDistance by FindUnitDistanceEmbedding

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

GraphPlot@RotateGraph[,{4,3}]

{x,y}=v[[4]]//FullSimplify

d=EuclideanDistance@@v[[{2,4}]]//FullSimplify

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

g=

RecognizeGraph@g

Matchstick

GraphData[{"SelfComplementary",{9,2}},"Matchstick"]

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,2}},"Polyhedral"]

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

{"SelfComplementary", {9, 3}}

GraphData[{"SelfComplementary",{9,3}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,3}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,3}},"Edges"]

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

RecognizeGraph[g]

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

RecognizeGraph[g]

RegionIntersection[InfiniteLine@v[[{1,5}]],InfiniteLine@v[[{2,3}]]][[1]]//FullSimplify

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

RecognizeGraph[g]

gs={,,};

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,3}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,3}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,3}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

Planar

GraphData[{"SelfComplementary",{9,3}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,3}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,3}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,3}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,3}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,3}},"Rigid"]

GraphData[{"SelfComplementary",{9,3}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,3}},"Flexible"]

GraphData[{"SelfComplementary",{9,3}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,3}},"LCF"]

GraphData[{"SelfComplementary",{9,3}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,3}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,3}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,3}},"UnitDistance"]

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

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

UnitDistance by refinement

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

GraphPlot@RotateGraph[,{3,5}]

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

GraphPlot@

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,3}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,3}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,3}},"Polyhedral"]

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

{"SelfComplementary", {9, 4}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,4}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,4}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,4}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,4}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,4}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,4}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,4}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,4}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,4}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,4}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,-4Pi/5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,4}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,4}},"Rigid"]

GraphData[{"SelfComplementary",{9,4}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,4}},"Flexible"]

GraphData[{"SelfComplementary",{9,4}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,4}},"LCF"]

GraphData[{"SelfComplementary",{9,4}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{9,4}},"LCFNotations"]

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

UnitDistance

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

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

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

UnitDistance by refinement

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

GraphPlot@

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

RecognizeGraph@g

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

Matchstick

GraphData[{"SelfComplementary",{9,4}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,4}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,4}},"Polyhedral"]

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

{"SelfComplementary", {9, 5}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,5}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{9,5}},"Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,5}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,5}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,5}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,5}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,5}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,5}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,5}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,5}},"Rigid"]

GraphData[{"SelfComplementary",{9,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,5}},"Flexible"]

GraphData[{"SelfComplementary",{9,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,5}},"LCF"]

GraphData[{"SelfComplementary",{9,5}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{9,5}},"LCFNotations"]

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

UnitDistance

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

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

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

UnitDistance by refinement

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

GraphPlot@

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,5}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,5}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,5}},"Polyhedral"]

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

{"SelfComplementary", {9, 6}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,6}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"SelfComplementary",{9,6}},"Edges"],Pi/2]

RotateGraph[GraphicsToGraph@,Pi]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,6}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,6}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"SelfComplementary", {9, 7}}

GraphData[{"SelfComplementary",{9,7}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,7}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"SelfComplementary",{9,7}},"Edges"],-Pi/2]

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

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,7}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,7}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,7}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,7}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,7}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,7}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,7}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,7}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,7}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,7}},"Rigid"]

GraphData[{"SelfComplementary",{9,7}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,7}},"Flexible"]

GraphData[{"SelfComplementary",{9,7}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,7}},"LCF"]

GraphData[{"SelfComplementary",{9,7}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,7}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,7}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,7}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,7}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,7}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,7}},"Polyhedral"]

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

{"SelfComplementary", {9, 8}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,8}},"EdgeList"]]

Default embedding

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

GraphPlot[GraphData[{"SelfComplementary",{9,8}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

RegionIntersection[InfiniteLine@v[[{5,7}]],InfiniteLine@v[[{3,4}]]][[1]]//FullSimplify

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,8}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,8}},{"RCN","CN"}]

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,8}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,8}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,8}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,8}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{9,8}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{9,8}},"LCF"]

GraphData[{"SelfComplementary",{9,8}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,8}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,8}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,8}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

GraphPlot@

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,8}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,8}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,8}},"Polyhedral"]

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

{"SelfComplementary", {9, 9}}

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{9,9}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,9}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,9}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,9}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,9}}],TimeConstraint->10])//AbsoluteTiming

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

GraphPlot@RotateGraph[,Pi/4]

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,9}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,9}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{9,9}},"Flexible"]

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

LCF

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

GraphData[{"SelfComplementary",{9,9}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{9,9}},"LCFNotations"]

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"SelfComplementary", {9, 10}}

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

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,10}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,10}},"Edges"]

RotateGraph[GraphicsToGraph@,Pi/4]

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

RecognizeGraph[g]

Degenerate

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

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

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,10}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

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

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,10}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,10}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,10}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,10}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,10}},"Circulant"]

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

Halin

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

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

Rigid

GraphData[{"SelfComplementary",{9,10}},"Rigid"]

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

Flexible

GraphData[{"SelfComplementary",{9,10}},"Flexible"]

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

LCF

GraphData[{"SelfComplementary",{9,10}},"LCF"]

GraphData[{"SelfComplementary",{9,10}},"HamiltonianCycleCount"]

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

GraphData[{"SelfComplementary",{9,10}},"LCFNotations"]

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

UnitDistance

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

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,10}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,10}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,10}},"Polyhedral"]

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

{"SelfComplementary", {9, 11}}

GraphData[{"SelfComplementary",{9,11}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,11}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,11}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,11}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,11}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,11}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,11}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,11}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,11}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,11}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,11}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,11}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,11}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,11}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,11}},"Rigid"]

GraphData[{"SelfComplementary",{9,11}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,11}},"Flexible"]

GraphData[{"SelfComplementary",{9,11}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,11}},"LCF"]

GraphData[{"SelfComplementary",{9,11}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,11}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,11}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,11}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

GraphPlot@RotateGraph[,{2,1}]

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

RecognizeGraph@g

Matchstick

GraphData[{"SelfComplementary",{9,11}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,11}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,11}},"Polyhedral"]

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

{"SelfComplementary", {9, 12}}

GraphData[{"SelfComplementary",{9,12}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,12}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{9,12}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,12}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,12}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,12}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,12}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,12}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,12}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,12}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,12}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,12}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,12}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,12}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,12}},"Rigid"]

GraphData[{"SelfComplementary",{9,12}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,12}},"Flexible"]

GraphData[{"SelfComplementary",{9,12}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,12}},"LCF"]

GraphData[{"SelfComplementary",{9,12}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,12}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,12}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,12}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{5,7}]

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,12}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,12}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,12}},"Polyhedral"]

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

{"SelfComplementary", {9, 13}}

GraphData[{"SelfComplementary",{9,13}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,13}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,13}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,13}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,13}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,13}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,13}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,13}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,13}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,13}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,13}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,13}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

GraphPlot@RotateGraph[,8Pi/5]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,13}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,13}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,13}},"Rigid"]

GraphData[{"SelfComplementary",{9,13}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,13}},"Flexible"]

GraphData[{"SelfComplementary",{9,13}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,13}},"LCF"]

GraphData[{"SelfComplementary",{9,13}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,13}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,13}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,13}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

GraphPlot@RotateGraph[,{2,4}]

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

RecognizeGraph@g

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,13}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,13}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,13}},"Polyhedral"]

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

{"SelfComplementary", {9, 14}}

GraphData[{"SelfComplementary",{9,14}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,14}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,14}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,14}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,14}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,14}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,14}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,14}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,14}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,14}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,14}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,14}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,14}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,14}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,14}},"Rigid"]

GraphData[{"SelfComplementary",{9,14}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,14}},"Flexible"]

GraphData[{"SelfComplementary",{9,14}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,14}},"LCF"]

GraphData[{"SelfComplementary",{9,14}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,14}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,14}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,14}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,14}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,14}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,14}},"Polyhedral"]

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

{"SelfComplementary", {9, 15}}

GraphData[{"SelfComplementary",{9,15}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,15}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData[{"SelfComplementary",{9,15}},"Edges"],GraphLayout->"SpringEmbedding"],Pi/2]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,15}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,15}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,15}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

quad

Planar

GraphData[{"SelfComplementary",{9,15}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,15}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,15}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,15}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,15}}],TimeConstraint->10])//AbsoluteTiming

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

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,15}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,15}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,15}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,15}},"Rigid"]

GraphData[{"SelfComplementary",{9,15}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,15}},"Flexible"]

GraphData[{"SelfComplementary",{9,15}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,15}},"LCF"]

GraphData[{"SelfComplementary",{9,15}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,15}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,15}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,15}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,15}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,15}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,15}},"Polyhedral"]

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

{"SelfComplementary", {9, 16}}

GraphData[{"SelfComplementary",{9,16}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,16}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{9,16}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,16}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,16}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,16}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,16}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,16}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,16}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,16}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,16}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,16}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,16}},"Rigid"]

GraphData[{"SelfComplementary",{9,16}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,16}},"Flexible"]

GraphData[{"SelfComplementary",{9,16}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,16}},"LCF"]

GraphData[{"SelfComplementary",{9,16}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,16}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,16}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,16}},"UnitDistance"]

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"SelfComplementary",{9,16}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"SelfComplementary",{9,16}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"SelfComplementary",{9,16}},"Polyhedral"]

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

{"SelfComplementary", {9, 17}}

GraphData[{"SelfComplementary",{9,17}},"StandardName"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,17}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,17}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,17}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,17}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,17}},"Graph","Bilateral"]//StyleGraphs

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"SelfComplementary",{9,17}},"Planar"]

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

MinimalCrossing

GraphData[{"SelfComplementary",{9,17}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,17}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,17}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,17}},"Circulant"]

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

Halin

GraphData[{"SelfComplementary",{9,17}},"Halin"]

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

Rigid

GraphData[{"SelfComplementary",{9,17}},"Rigid"]

GraphData[{"SelfComplementary",{9,17}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,17}},"Flexible"]

GraphData[{"SelfComplementary",{9,17}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,17}},"LCF"]

GraphData[{"SelfComplementary",{9,17}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,17}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,17}},"LCFNotations"]

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

UnitDistance

GraphData[{"SelfComplementary",{9,17}},"UnitDistance"]

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

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,17}},"VertexList"],GraphData[{"SelfComplementary",{9,17}},"EdgeList"]],MaxIterations->500]

GraphPlot@

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,17}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,17}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,17}},"Matchstick"]

GraphData[{"SelfComplementary",{9,17}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,17}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,17}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,17}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,17}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,17}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 18}}

GraphData[{"SelfComplementary",{9,18}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,18}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,18}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,18}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,18}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,18}},"Edges"]

v={{0,0},{1,0},{2,0},{3,0},{3,1},{2,1},{1,1},{0,1},{3/2,3/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,8,1,7,9,6,4],e[8,2,6],e[5,3,7],e[2,9,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,18}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,18}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,18}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,18}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,18}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,18}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,18}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

quad

Planar

GraphData[{"SelfComplementary",{9,18}},"Planar"]

GraphData[{"SelfComplementary",{9,18}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,18}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,18}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,18}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,18}},"Circulant"]

GraphData[{"SelfComplementary",{9,18}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,18}},"Halin"]

GraphData[{"SelfComplementary",{9,18}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,18}},"Rigid"]

GraphData[{"SelfComplementary",{9,18}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,18}},"Flexible"]

GraphData[{"SelfComplementary",{9,18}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,18}},"LCF"]

GraphData[{"SelfComplementary",{9,18}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,18}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,18}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,18}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,18}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,18}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,18}},"VertexList"],GraphData[{"SelfComplementary",{9,18}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,18}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,18}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

GraphPlot@RotateGraph[,{7,8}]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{1/4,3/4},{1/2,3/4},{3/4,3/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,6,3,7,6],e[4,9,2,5,4,8,2],e[1,7],e[5,9],e[1,8,3]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

Matchstick

GraphData[{"SelfComplementary",{9,18}},"Matchstick"]

GraphData[{"SelfComplementary",{9,18}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,18}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,18}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,18}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,18}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,18}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 19}}

GraphData[{"SelfComplementary",{9,19}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,19}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,19}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,19}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,19}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,19}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,19}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,19}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,19}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,19}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,19}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,19}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,19}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,19}},"Planar"]

GraphData[{"SelfComplementary",{9,19}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,19}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,19}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,19}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,19}},"Circulant"]

GraphData[{"SelfComplementary",{9,19}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,19}},"Halin"]

GraphData[{"SelfComplementary",{9,19}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,19}},"Rigid"]

GraphData[{"SelfComplementary",{9,19}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,19}},"Flexible"]

GraphData[{"SelfComplementary",{9,19}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,19}},"LCF"]

GraphData[{"SelfComplementary",{9,19}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,19}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,19}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,19}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,19}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,19}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,19}},"VertexList"],GraphData[{"SelfComplementary",{9,19}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,19}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,19}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,19}},"Matchstick"]

GraphData[{"SelfComplementary",{9,19}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,19}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,19}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,19}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,19}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,19}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 20}}

GraphData[{"SelfComplementary",{9,20}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,20}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,20}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,20}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,20}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{9,20}},"Edges"],GraphLayout->"HighDimensionalEmbedding"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/3},{1/2,1/3},{3/4,1/3},{1/4,2/3},{3/4,2/3}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,7,2,6,8,9,7,4,1,5,8],e[2,5,3],{4,5},e[9,6,1,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,20}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,20}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,20}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,20}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,20}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,20}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,20}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,20}},"Planar"]

GraphData[{"SelfComplementary",{9,20}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,20}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,20}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,20}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,20}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,20}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"SelfComplementary",{9,20}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,20}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,20}},"Circulant"]

GraphData[{"SelfComplementary",{9,20}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,20}},"Halin"]

GraphData[{"SelfComplementary",{9,20}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,20}},"Rigid"]

GraphData[{"SelfComplementary",{9,20}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,20}},"Flexible"]

GraphData[{"SelfComplementary",{9,20}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,20}},"LCF"]

GraphData[{"SelfComplementary",{9,20}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,20}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,20}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,20}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,20}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,20}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,20}},"VertexList"],GraphData[{"SelfComplementary",{9,20}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,20}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,20}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,20}},"Matchstick"]

GraphData[{"SelfComplementary",{9,20}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,20}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,20}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,20}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,20}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,20}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 21}}

GraphData[{"SelfComplementary",{9,21}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,21}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,21}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,21}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,21}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,21}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,21}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,21}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,21}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,21}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,21}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,21}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,21}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,21}},"Planar"]

GraphData[{"SelfComplementary",{9,21}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,21}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,21}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,21}}]],Pi/2]

v=Join[{{-1,0},{1,0},{0,Sqrt[3]}},{#,#2+1/4}&@@@{{-1/4,1/4},{0,1/4},{1/4,1/4},{-1/4,3/4},{0,3/4},{1/4,3/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,6,5,4,2,3,1,7,8,9,2],e[4,7],e[9,6],e[7,5,9,3],e[7,3,8,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,21}},"Circulant"]

GraphData[{"SelfComplementary",{9,21}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,21}},"Halin"]

GraphData[{"SelfComplementary",{9,21}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,21}},"Rigid"]

GraphData[{"SelfComplementary",{9,21}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,21}},"Flexible"]

GraphData[{"SelfComplementary",{9,21}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,21}},"LCF"]

GraphData[{"SelfComplementary",{9,21}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,21}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,21}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,21}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,21}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,21}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,21}},"VertexList"],GraphData[{"SelfComplementary",{9,21}},"EdgeList"]],MaxIterations->500]

GraphPlot@RotateGraph[,{2,5}]

v=Join[UnitCirclePoints[6],CirclePoints[1/3,3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,9,8,7,6],e[9,5,8,2,7],e[4,9,2],e[3,7,5]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,21}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,21}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,21}},"Matchstick"]

GraphData[{"SelfComplementary",{9,21}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,21}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,21}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,21}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,21}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,21}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 22}}

Names

GraphData[{"SelfComplementary",{9,22}},"StandardName"]

GraphData[{"SelfComplementary",{9,22}},"StandardNames"]

Primary

GraphData[{"SelfComplementary",{9,22}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,22}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,22}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,22}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"SelfComplementary",{9,22}},"Edges"],Pi/2]

v=Join[CirclePoints[6],CirclePoints[1/3,3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,3],e[4,9,6],e[5,8,2,9,5,7,8,9],{2,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,22}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,22}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,22}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,22}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,22}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,22}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,22}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,22}},"Planar"]

GraphData[{"SelfComplementary",{9,22}},"Graph","Planar"]//StyleGraphs

MinimalLocalCrossing

GraphData[{"SelfComplementary",{9,22}},"LocalCrossingNumber"]

GraphData[{"SelfComplementary",{9,22}},"Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalLocalCrossing construction

GraphPlot/@GraphData[{"SelfComplementary",{9,22}},"Graph","MinimalCrossing"]

{,}

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/8},{3/4,1/8},{1/4,7/8},{3/4,7/8},{1/2,1/2}};
g=Graph[Range@Length@v,UndirectedEdge@@@{e[1,2,3,4,1,9,2,6,5,1,7,8,2],e[5,7,4],e[6,8,3],e[7,9,8]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

LocalCrossingCount@g

MinimalCrossing

GraphData[{"SelfComplementary",{9,22}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,22}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,22}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,22}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,22}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"SelfComplementary",{9,22}},"V"]&]]//Timing

GraphPlot@RotateGraph[,Pi/4]

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,22}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={{0,0},{1,0},{1,1},{0,1},{1/4,1/4},{3/4,1/4},{1/4,3/4},{3/4,3/4},{1/2,1/8}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,9,8,7,9,2,6,5,1,7,4],e[3,8,6],{5,7},{2,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

GraphPlot@RotateGraph[,Pi/4]

v=Join[CirclePoints[4],CirclePoints[1/2,4],{{0,-1/4}}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,1,5,6,7,8,4,9,6,2],e[6,1,9,7,3],{4,7},{5,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

gs={,,};

Circulant

GraphData[{"SelfComplementary",{9,22}},"Circulant"]

GraphData[{"SelfComplementary",{9,22}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,22}},"Halin"]

GraphData[{"SelfComplementary",{9,22}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,22}},"Rigid"]

GraphData[{"SelfComplementary",{9,22}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,22}},"Flexible"]

GraphData[{"SelfComplementary",{9,22}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,22}},"LCF"]

GraphData[{"SelfComplementary",{9,22}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,22}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,22}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,22}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,22}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,22}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,22}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,22}},"VertexList"],GraphData[{"SelfComplementary",{9,22}},"EdgeList"]],MaxIterations->500]

GraphPlot@RotateGraph[,{1,4}]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,22}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,22}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,22}},"Matchstick"]

GraphData[{"SelfComplementary",{9,22}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,22}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,22}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,22}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,22}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,22}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 23}}

GraphData[{"SelfComplementary",{9,23}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,23}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,23}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,23}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,23}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,23}},"Edges"]

v={{0,0},{1,0},{2,0},{3,0},{0,1},{3,1},{3/2,2},{1,5/4},{2,5/4}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,6,7,5,1,8,7,9,4],e[5,2,8,9,3,6],{5,9},{6,8}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,23}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,23}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,23}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,23}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,23}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,23}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,23}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,23}},"Planar"]

GraphData[{"SelfComplementary",{9,23}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,23}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,23}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,23}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,23}},"Circulant"]

GraphData[{"SelfComplementary",{9,23}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,23}},"Halin"]

GraphData[{"SelfComplementary",{9,23}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,23}},"Rigid"]

GraphData[{"SelfComplementary",{9,23}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,23}},"Flexible"]

GraphData[{"SelfComplementary",{9,23}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,23}},"LCF"]

GraphData[{"SelfComplementary",{9,23}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,23}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,23}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,23}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,23}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,23}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,23}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,23}},"VertexList"],GraphData[{"SelfComplementary",{9,23}},"EdgeList"]],MaxIterations->500]

GraphPlot@RotateGraph[,{1,7}]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,23}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,23}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,23}},"Matchstick"]

GraphData[{"SelfComplementary",{9,23}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,23}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,23}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,23}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,23}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,23}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 24}} == {"Quartic", {9, 2}}

GraphData[{"SelfComplementary",{9,24}},"StandardName"]

{"SelfComplementary", {9, 25}} == {"Quartic", {9, 11}}

GraphData[{"SelfComplementary",{9,25}},"StandardName"]

{"SelfComplementary", {9, 26}}

GraphData[{"SelfComplementary",{9,26}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,26}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,26}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,26}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,26}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,26}},"Edges"]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi/2]

v=Join[CirclePoints[6],CirclePoints[{1/4,-Pi/2},3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,8,4],e[3,9,6,7,8,5,9,7,1],e[8,2,9]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,26}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,26}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,26}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,26}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,26}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,26}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,26}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,26}},"Planar"]

GraphData[{"SelfComplementary",{9,26}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,26}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,26}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,26}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,26}},"Circulant"]

GraphData[{"SelfComplementary",{9,26}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,26}},"Halin"]

GraphData[{"SelfComplementary",{9,26}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,26}},"Rigid"]

GraphData[{"SelfComplementary",{9,26}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,26}},"Flexible"]

GraphData[{"SelfComplementary",{9,26}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,26}},"LCF"]

GraphData[{"SelfComplementary",{9,26}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,26}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,26}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,26}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,26}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,26}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,26}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,26}},"VertexList"],GraphData[{"SelfComplementary",{9,26}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,26}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,26}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,26}},"Matchstick"]

GraphData[{"SelfComplementary",{9,26}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,26}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,26}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,26}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,26}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,26}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 27}}

GraphData[{"SelfComplementary",{9,27}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,27}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,27}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,27}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,27}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"SelfComplementary",{9,27}},"Edges"],-Pi/2]

v=Join[UnitCirclePoints[6],CirclePoints[1/3,3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,7,2,9,5,7,3,8,4,9,6],e[9,8,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,27}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,27}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,27}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,27}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,27}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,27}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,27}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,27}},"Planar"]

GraphData[{"SelfComplementary",{9,27}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,27}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,27}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,27}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,27}},"Circulant"]

GraphData[{"SelfComplementary",{9,27}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,27}},"Halin"]

GraphData[{"SelfComplementary",{9,27}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,27}},"Rigid"]

GraphData[{"SelfComplementary",{9,27}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,27}},"Flexible"]

GraphData[{"SelfComplementary",{9,27}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,27}},"LCF"]

GraphData[{"SelfComplementary",{9,27}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,27}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,27}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,27}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,27}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,27}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,27}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,27}},"VertexList"],GraphData[{"SelfComplementary",{9,27}},"EdgeList"]],MaxIterations->500]

GraphPlot@RotateGraph[,-Pi/2]

v=Join[UnitCirclePoints[6],CirclePoints[1/3,3]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,1,9,5,7,2,9,8,3,9],e[6,7,8,4,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,27}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,27}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,27}},"Matchstick"]

GraphData[{"SelfComplementary",{9,27}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,27}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,27}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,27}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,27}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,27}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 28}}

GraphData[{"SelfComplementary",{9,28}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,28}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,28}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,28}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,28}},"EdgeList"]]

Default embedding

GraphPlot[RotateGraph[Graph@GraphData[{"SelfComplementary",{9,28}},"Edges"],Pi/2]]

GraphPlot@RotateGraph[GraphicsToGraph@,Pi]

RotateGraph[GraphicsToGraph@,Pi]

v=Join[UnitCirclePoints[7,-Pi/2]];
v=Join[v,Subdivide[v[[6]],v[[3]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,3,9,8,6,1],e[2,4,8],e[3,5,9],{5,7},{4,6}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

GraphPlot[GraphData[{"SelfComplementary",{9,28}},"Edges"],GraphLayout->"SpringEmbedding"]

Degenerate

GraphData[{"SelfComplementary",{9,28}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,28}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,28}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,28}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,28}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,28}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,28}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,28}},"Planar"]

GraphData[{"SelfComplementary",{9,28}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,28}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,28}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,28}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,28}},"Circulant"]

GraphData[{"SelfComplementary",{9,28}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,28}},"Halin"]

GraphData[{"SelfComplementary",{9,28}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,28}},"Rigid"]

GraphData[{"SelfComplementary",{9,28}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,28}},"Flexible"]

GraphData[{"SelfComplementary",{9,28}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,28}},"LCF"]

GraphData[{"SelfComplementary",{9,28}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,28}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,28}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,28}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,28}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,28}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,28}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,28}},"VertexList"],GraphData[{"SelfComplementary",{9,28}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,28}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,28}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,28}},"Matchstick"]

GraphData[{"SelfComplementary",{9,28}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,28}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,28}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,28}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,28}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,28}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 29}}

GraphData[{"SelfComplementary",{9,29}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,29}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,29}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,29}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,29}},"EdgeList"]]

Default embedding

GraphPlot@RotateGraph[Graph@GraphData[{"SelfComplementary",{9,29}},"Edges"],Pi/2]

v=UnitCirclePoints[7,-Pi/2];
v=Join[v,Subdivide[v[[6]],v[[3]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,3,9,8,6,1],e[7,5,8],e[2,4,9],{4,6},{3,5}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,29}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,29}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,29}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,29}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,29}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,29}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,29}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,29}},"Planar"]

GraphData[{"SelfComplementary",{9,29}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,29}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,29}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,29}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,29}},"Circulant"]

GraphData[{"SelfComplementary",{9,29}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,29}},"Halin"]

GraphData[{"SelfComplementary",{9,29}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,29}},"Rigid"]

GraphData[{"SelfComplementary",{9,29}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,29}},"Flexible"]

GraphData[{"SelfComplementary",{9,29}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,29}},"LCF"]

GraphData[{"SelfComplementary",{9,29}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,29}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,29}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,29}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,29}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,29}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,29}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,29}},"VertexList"],GraphData[{"SelfComplementary",{9,29}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,29}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,29}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,29}},"Matchstick"]

GraphData[{"SelfComplementary",{9,29}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,29}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,29}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,29}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,29}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,29}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 30}}

GraphData[{"SelfComplementary",{9,30}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,30}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,30}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,30}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,30}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,30}},"Edges"]

v=UnitCirclePoints[7];
v=Join[v,v[[#]]+{0,1}&/@{1,7}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[3,1,2,3,4,5,6,7,1,9,8,7,5],e[1,6,9,4,8,2,7]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,30}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,30}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,30}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,30}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,30}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,30}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,30}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,30}},"Planar"]

GraphData[{"SelfComplementary",{9,30}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,30}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,30}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,30}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,30}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,30}}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"SelfComplementary",{9,30}},"V"]&]]//Timing

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,30}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,30}},"Circulant"]

GraphData[{"SelfComplementary",{9,30}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,30}},"Halin"]

GraphData[{"SelfComplementary",{9,30}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,30}},"Rigid"]

GraphData[{"SelfComplementary",{9,30}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,30}},"Flexible"]

GraphData[{"SelfComplementary",{9,30}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,30}},"LCF"]

GraphData[{"SelfComplementary",{9,30}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,30}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,30}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,30}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,30}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,30}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,30}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,30}},"VertexList"],GraphData[{"SelfComplementary",{9,30}},"EdgeList"]],MaxIterations->500]

GraphPlot@

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,30}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,30}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,30}},"Matchstick"]

GraphData[{"SelfComplementary",{9,30}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,30}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,30}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,30}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,30}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,30}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 31}}

GraphData[{"SelfComplementary",{9,31}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,31}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,31}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,31}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,31}},"EdgeList"]]

Default embedding

GraphPlot[GraphData[{"SelfComplementary",{9,31}},"Edges"],GraphLayout->"SpringEmbedding"]

v=Join[UnitCirclePoints[7,-Pi/2],{#/3,0}&/@{-1,1}];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,3,4,5,6,7,1,4,9,8,5,1],e[7,8,6,9,3,8],{2,9}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,31}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,31}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,31}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,31}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,31}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,31}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,31}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,31}},"Planar"]

GraphData[{"SelfComplementary",{9,31}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,31}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,31}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,31}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,31}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,31}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"SelfComplementary",{9,31}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,31}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,31}},"Circulant"]

GraphData[{"SelfComplementary",{9,31}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,31}},"Halin"]

GraphData[{"SelfComplementary",{9,31}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,31}},"Rigid"]

GraphData[{"SelfComplementary",{9,31}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,31}},"Flexible"]

GraphData[{"SelfComplementary",{9,31}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,31}},"LCF"]

GraphData[{"SelfComplementary",{9,31}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,31}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,31}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,31}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,31}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,31}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,31}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,31}},"VertexList"],GraphData[{"SelfComplementary",{9,31}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,31}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,31}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,31}},"Matchstick"]

GraphData[{"SelfComplementary",{9,31}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,31}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,31}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,31}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,31}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,31}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 32}}

GraphData[{"SelfComplementary",{9,32}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,32}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,32}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,32}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,32}},"EdgeList"]]

Default embedding

GraphPlot[RotateGraph[Graph@GraphData[{"SelfComplementary",{9,32}},"Edges"],Pi]]

v=Join[CirclePoints[7]];
v=Join[v,Subdivide[v[[6]],v[[2]],3][[2;;-2]]];
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[8,1,2,3,4,5,6,7,1,3,9,4,8,5,7,9],e[6,8,9,2]},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,32}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,32}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,32}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,32}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,32}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,32}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,32}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,32}},"Planar"]

GraphData[{"SelfComplementary",{9,32}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,32}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,32}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,32}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,32}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,32}}],"CrossingNumber"->cn,RandomSeed->n]],{n,50}],Max[OuterFace[#]]<=GraphData[{"SelfComplementary",{9,32}},"V"]&]]//Timing

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,32}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,32}},"Circulant"]

GraphData[{"SelfComplementary",{9,32}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,32}},"Halin"]

GraphData[{"SelfComplementary",{9,32}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,32}},"Rigid"]

GraphData[{"SelfComplementary",{9,32}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,32}},"Flexible"]

GraphData[{"SelfComplementary",{9,32}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,32}},"LCF"]

GraphData[{"SelfComplementary",{9,32}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,32}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,32}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,32}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,32}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,32}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,32}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,32}},"VertexList"],GraphData[{"SelfComplementary",{9,32}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,32}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,32}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,32}},"Matchstick"]

GraphData[{"SelfComplementary",{9,32}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,32}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,32}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,32}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,32}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,32}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 33}} == {"Quartic", {9, 8}}

GraphData[{"SelfComplementary",{9,33}},"StandardName"]

{"SelfComplementary", {9, 34}}

GraphData[{"SelfComplementary",{9,34}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,34}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,34}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,34}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,34}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,34}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,34}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,34}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,34}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,34}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,34}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,34}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,34}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,34}},"Planar"]

GraphData[{"SelfComplementary",{9,34}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,34}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,34}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,34}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"SelfComplementary",{9,34}}],TimeConstraint->10])//AbsoluteTiming

Union[Select[Table[RotateGraph[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,34}}],"CrossingNumber"->cn,RandomSeed->n]],{n,1000}],Max[OuterFace[#]]<=GraphData[{"SelfComplementary",{9,34}},"V"]&]]//Timing

Table[MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,34}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,34}},"Circulant"]

GraphData[{"SelfComplementary",{9,34}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,34}},"Halin"]

GraphData[{"SelfComplementary",{9,34}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,34}},"Rigid"]

GraphData[{"SelfComplementary",{9,34}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,34}},"Flexible"]

GraphData[{"SelfComplementary",{9,34}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,34}},"LCF"]

GraphData[{"SelfComplementary",{9,34}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,34}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,34}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,34}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,34}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,34}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,34}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,34}},"VertexList"],GraphData[{"SelfComplementary",{9,34}},"EdgeList"]],MaxIterations->500]

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,34}},"Graph",#]&/@{"All","UnitDistance"})

GraphPlot@

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,34}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,34}},"Matchstick"]

GraphData[{"SelfComplementary",{9,34}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,34}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,34}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,34}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,34}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,34}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 35}}

GraphData[{"SelfComplementary",{9,35}},"StandardName"]

Primary

GraphData[{"SelfComplementary",{9,35}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"SelfComplementary",{9,35}},"Graph","All"]//StyleGraphs

Inexact

Select[GraphData[{"SelfComplementary",{9,35}},"Graph","All"],(!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&)]//StyleGraphs

Embedding types

GraphDataEmbeddings[GraphData[{"SelfComplementary",{9,35}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"SelfComplementary",{9,35}},"Edges"]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

Degenerate

GraphData[{"SelfComplementary",{9,35}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"SelfComplementary",{9,35}},"Graph","Degenerate"]

Complement

gs=DeleteCases[GraphComplement/@GraphData[{"SelfComplementary",{9,35}},"Graph","All"],_?DegenerateGraphEmbeddingQ]//StyleGraphs

Bilateral

GraphData[{"SelfComplementary",{9,35}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"SelfComplementary",{9,35}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"SelfComplementary",{9,35}}],All][[All,All,1]]]

Length[bilat=DeleteDuplicatesBy[
DeleteMissing[BilaterallyRotatedGraph@CircularEmbeddingFromHamiltonianCycle[GraphData[{"SelfComplementary",{9,35}}],#]&/@hc],
CircularCanonicalGraphEmbedding]]//Timing

bilat

Length[quad=DeleteDuplicatesBy[Union@Select[bilat,BilateralGraphEmbeddingQ[#,Axis->"X"]&],CircularCanonicalGraphEmbedding[#,4]&]]

Planar

GraphData[{"SelfComplementary",{9,35}},"Planar"]

GraphData[{"SelfComplementary",{9,35}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"SelfComplementary",{9,35}},{"RCN","CN"}]

GraphData[{"SelfComplementary",{9,35}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"SelfComplementary",{9,35}}]]

v={};
g=Graph[Range[Length[v]],UndirectedEdge@@@{},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"SelfComplementary",{9,35}},"Circulant"]

GraphData[{"SelfComplementary",{9,35}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"SelfComplementary",{9,35}},"Halin"]

GraphData[{"SelfComplementary",{9,35}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"SelfComplementary",{9,35}},"Rigid"]

GraphData[{"SelfComplementary",{9,35}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"SelfComplementary",{9,35}},"Flexible"]

GraphData[{"SelfComplementary",{9,35}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"SelfComplementary",{9,35}},"LCF"]

GraphData[{"SelfComplementary",{9,35}},"HamiltonianCycleCount"]

GraphData[{"SelfComplementary",{9,35}},"LCFSignature"]

GraphData[{"SelfComplementary",{9,35}},"LCFNotations"]

GraphData[{"SelfComplementary",{9,35}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"SelfComplementary",{9,35}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"SelfComplementary",{9,35}}],Debug->True]//Timing

GraphData[{"SelfComplementary",{9,35}},"Graph","UnitDistance"]//StyleGraphs

Select[%,!FreeQ[GraphEmbedding[#],_?InexactNumberQ]&]

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"SelfComplementary",{9,35}},"VertexList"],GraphData[{"SelfComplementary",{9,35}},"EdgeList"]],MaxIterations->500]

GraphPlot@RotateGraph[,{6,2}]

v={{0,0},{1,0},{1,1},{0,1},{-Sqrt[3]/2,1/2},{1+Sqrt[3]/2,1/2},{1/3,1/2},{2/3,1/2},{1/2,1+Sqrt[3]/2}};
g=Graph[Range[Length[v]],UndirectedEdge@@@{e[1,2,6,3,9,4,5,1,4,3,2,7,9,8,1],{5,7},{6,8},{4,8},{3,7}},VertexCoordinates->v,VertexLabels->Automatic]

RecognizeGraph@g

UnitDistanceEmbeddingRefine[Annotate[#,VertexCoordinates->N[GraphEmbedding[#]]],MaxIterations->500]&/@Complement@@(GraphData[{"SelfComplementary",{9,35}},"Graph",#]&/@{"All","UnitDistance"})

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"SelfComplementary",{9,35}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

Matchstick

GraphData[{"SelfComplementary",{9,35}},"Matchstick"]

GraphData[{"SelfComplementary",{9,35}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"SelfComplementary",{9,35}},"Edges"]]

3D All

GraphData[{"SelfComplementary",{9,35}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"SelfComplementary",{9,35}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"SelfComplementary",{9,35}},"Polyhedral"]

GraphData[{"SelfComplementary",{9,35}},"Graph",{"3D","Polyhedron"}]

{"SelfComplementary", {9, 36}} == {"GeneralizedQuadrangle", {2, 1}}

GraphData[{"SelfComplementary",{9,36}},"StandardName"]

GraphData

GraphDataString

WriteString[file,GraphDataString[#[[3]],
"StandardName"->#[[1]],
"Name"->ToString[#[[1,2,1]]]<>"\[Hyphen]self complementary graph "<>ToString[#[[1,2,2]]],
"Embeddings"->{},
"Information"->"Self-ComplementaryGraph",
"NotationRules"->{Rule@@#[[1]]},
Debug->True,
TimeConstraint->60
]]&/@new;//Timing

Close[file]