Goedgebeur Configuration

Author

Eric W. Weisstein
May 22, 2026

This notebook downloaded from https://mathworld.wolfram.com/notebooks/Configurations/GoedgebeurConfiguration.nb.

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

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

Source

From Marién Abreu, May 12, 2026
Note the points at x == 1/2 look collinear in this diagram but should not be

Figures

Configuration

lines={{1,2,3},{1,9,13},{3,10,15},{13,14,15},{1,4,8},{3,5,6},{2,4,9},{2,5,10},{4,7,12},{5,7,11},{6,7,8},{6,11,13},{8,12,15},{9,11,14},{10,12,14}};

pts={{-1,1},{0,1},{1,1},{-3/10,7/10},{1/4,3/4},{-41/64,29/64},{-7/94,43/94},{13/50,23/50},{-1,0},{1,0},{-93/116,-23/116},{73/110,-37/110},{-1,-1},{0,-1},{1,-1}};

Sort[Sort/@FindExtraordinaryLines[pts]]===Sort[Sort/@lines]

ConfigurationNotation[lines]

ConfigurationDiagram[pts,lines,VertexLabels->None]

OrdinaryLineGraphDiagram

g=GraphData["GoedgebeurConfigurationGraph","Graph","Configuration"][[1]];

pts=GraphEmbedding[g]

lines=ConfigurationLines[g]

ConfigurationNotation[lines]

OrdinaryLineGraphDiagram["Goedgebeur",GraphData["GoedgebeurConfigurationGraph","Graph","Configuration"][[1]]]

Construction

Approximate (overly symmetric) points from figure

Note 3-5-6 are not collinear here but should be.  And 2 7 14 are actually collinear but should not be.

pts={{0,4},{2,4},{4,4},{7/5,17/5},{13/5,17/5},{11/10,29/10},{2,29/10},{29/10,29/10},{0,2},{4,2},{11/20,7/5},{69/20,7/5},{0,0},{2,0},{4,0}};

lines={{1,2,3},{1,9,13},{3,10,15},{13,14,15},{1,4,8},{3,5,6},{2,4,9},{2,5,10},{4,7,12},{5,7,11},{6,7,8},{6,11,13},{8,12,15},{9,11,14},{10,12,14}};

ConfigurationDiagram[pts,lines,.3]

cg=ConfigurationGraph[pts,lines,VertexLabels->Automatic]

List@@@EdgeList[cg]

cgname=RecognizeGraph[cg]

Exact points from figure

lines={{1,2,3},{1,9,13},{3,10,15},{13,14,15},{1,4,8},{3,5,6},{2,4,9},{2,5,10},{4,7,12},{5,7,11},{6,7,8},{6,11,13},{8,12,15},{9,11,14},{10,12,14}};

pts={{-1,1},{0,1},{1,1},{-3/10,7/10},{1/4,3/4},{-41/64,29/64},{-7/94,43/94},{13/50,23/50},{-1,0},{1,0},{-93/116,-23/116},{73/110,-37/110},{-1,-1},{0,-1},{1,-1}};

Sort[Sort/@FindExtraordinaryLines[pts]]===Sort[Sort/@lines]

ConfigurationNotation[lines]

ConfigurationDiagram[pts,lines,VertexLabels->None]

cg=ConfigurationGraph[pts,lines,VertexLabels->Automatic]

cgname=RecognizeGraph[cg]

configurations=GraphData[cgname,"Graph","Configuration"]

config=configurations[[1]]

RecognizeGraph@LeviGraph[lines]

GraphData["GoedgebeurGraph","IncidenceLines"]

levi=LeviGraph/@{lines}

RecognizeGraph/@levi

Cases[GraphData["GoedgebeurConfigurationGraph","StandardNames"],_String?(StringMatchQ[#,"*Configuration*"]&)]

(ordinarylinegraph=OrdinaryLineGraph[config])//Timing

GraphData["GoedgebeurConfigurationGraph","OrdinaryLineGraphName"]

RecognizeGraph@ordinarylinegraph

Embeddings

<<MathWorld`Graphs`

Names

GraphData["GoedgebeurConfigurationGraph","StandardName"]

GraphData["GoedgebeurConfigurationGraph","StandardNames"]

HouseOfGraphs

hogid=GraphData["GoedgebeurConfigurationGraph","NotationRules","HouseOfGraphs"]

HouseOfGraphsLookup[hogid]

HouseOfGraphsGraph[hogid]//StyleGraphs[#,ImageSize->Small]&

Wikidata

GraphData["GoedgebeurConfigurationGraph","WikidataID"]

GraphData["GoedgebeurConfigurationGraph","WikidataID","URL"]

Primary

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

All

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

CurvedEdge

GraphData["GoedgebeurConfigurationGraph","Graph","CurvedEdge"]//StyleGraphs

Inexact

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

Degenerate

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

DegenerateGraphEmbeddingTypes/@GraphData["GoedgebeurConfigurationGraph","Graph","Degenerate"]//Column

Embeddings

GraphDataEmbeddings[GraphData["GoedgebeurConfigurationGraph"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData["GoedgebeurConfigurationGraph","VertexList"],GraphData["GoedgebeurConfigurationGraph","Edges"],GraphLayout->"HighDimensionalEmbedding"],.3]

RotateGraph[,Pi/4]

v=Join[CirclePoints[4],CirclePoints[{1/(Sqrt[2]),Pi/2},8],{{0,0}}];
v=Join[v,{v[[#,1]],0}&/@{8,10}];
Graph[Range@Length@v,{},VertexCoordinates->v,VertexLabels->Automatic]

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

DegenerateGraphEmbeddingTypes@g

Configuration

GraphData["GoedgebeurConfigurationGraph","Configuration"]

GraphData["GoedgebeurConfigurationGraph","Graph","Configuration"]//StyleGraphs

GeneralizedPetersen

GraphData["GoedgebeurConfigurationGraph","Graph","GeneralizedPetersen"]//StyleGraphs

IGraph

GraphData["GoedgebeurConfigurationGraph","Graph","IGraph"]//StyleGraphs

CompleteKPartite

GraphData["GoedgebeurConfigurationGraph","Graph","CompleteKPartite"]//StyleGraphs

Bipartite

GraphData["GoedgebeurConfigurationGraph","Bipartite"]

GraphData["GoedgebeurConfigurationGraph","Graph","Bipartite"]//StyleGraphs

Bilateral

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

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

Circular

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

Circular construction All

GraphData["GoedgebeurConfigurationGraph","Hamiltonian"]

GraphData["GoedgebeurConfigurationGraph","HamiltonianCycles"]

GraphData["GoedgebeurConfigurationGraph","HamiltonianCycleCount"]

GraphData["GoedgebeurConfigurationGraph","LCF"]

GraphData["GoedgebeurConfigurationGraph","LCFSignature"]

Length[hc=FindHamiltonianCycle[GraphData["GoedgebeurConfigurationGraph"],All][[All,All,1]]]//Timing

Length[hcsym=SymmetricHamiltonianCycles[GraphData["GoedgebeurConfigurationGraph"],hc,ProgressReporting->True]]//Timing

GroupBy[SymmetricHamiltonianCycleGraph[GraphData["GoedgebeurConfigurationGraph"],#]&/@hcsym,GraphSymmetryGroup]

gs=CircularEmbeddingFromHamiltonianCycle[GraphData["GoedgebeurConfigurationGraph"],#]&/@hc

g=gs[[1]]

Planar

GraphData["GoedgebeurConfigurationGraph","Planar"]

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

MinimalCrossingNumber crossings.uos.de [verified 3]

CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],Method->"WebCompute"]//AbsoluteTiming

DateString[]

MinimalCrossingNumber: "EmbeddingScheme" -> 1

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->1,TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->1,TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->1,TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->1,TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->1,TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->1,TimeConstraint->86400])//AbsoluteTiming

MinimalCrossingNumber: "EmbeddingScheme" -> 2

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->2,TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->2,TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->2,TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->2,TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->2,TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->2,TimeConstraint->86400])//AbsoluteTiming

MinimalCrossingNumber: "EmbeddingScheme" -> 3

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->3,TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->3,TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->3,TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->3,TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->3,TimeConstraint->5 3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],"EmbeddingScheme"->3,TimeConstraint->86400])//AbsoluteTiming

MinimalCrossing

GraphData["GoedgebeurConfigurationGraph","CN"]

(gs=GraphData["GoedgebeurConfigurationGraph","Graph","MinimalCrossing"])//StyleGraphs

GraphCrossingCount/@gs

GraphCrossingDiagram/@gs

MinimalRectilinearCrossing

GraphData["GoedgebeurConfigurationGraph","RCN"]

GraphData["GoedgebeurConfigurationGraph","Graph","MinimalRectilinearCrossing"]//StyleGraphs

MinimalRectilinearCrossing construction order X [minimum RCN == ]

Length[gs=FindMinimalRectilinearCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],Automatic,All,"Size"->Automatic,Method->"SubgraphIsomorphism",Debug->True]]//Timing

MaxMemoryUsed[]/10^9. GB

Tally[RectilinearCrossingCount/@gs]//Timing

Tally[RectilinearLocalCrossingCount/@gs]//Timing

GraphSymmetryGroup/@gs//Tally

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

Take[gs,UpTo[100]]

MinimalRectilinearCrossing construction order X [minimum RCN == ]

Length[gs=FindMinimalRectilinearCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],Automatic,All,"Size"->XXX,Method->"SubgraphIsomorphism",Debug->True]]//Timing

MaxMemoryUsed[]/10^9. GB

Tally[RectilinearCrossingCount/@gs]//Timing

Tally[RectilinearLocalCrossingCount/@gs]//Timing

GraphSymmetryGroup/@gs//Tally

Select[gs,GraphSymmetryGroup[#]=!=TransformationGroup[{}]&]

Take[gs,UpTo[100]]

MinimalCrossing construction Tutte

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->1])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],"CrossingNumber"->cn])//PolyhedralGraphQ//AbsoluteTiming

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

TutteGraphs=BilateralGraph[CenterGraph@IGLayoutTutte[g,"OuterFace"->#],"ReturnNonbilateralGraph"->True]&/@faces

TutteGraphsWithOuterCrossingPointCounts={
#,
Count[OuterFace[#],_?(GreaterThan[GraphData["GoedgebeurConfigurationGraph","V"]])]
}&/@TutteGraphs;

Cases[TutteGraphsWithOuterCrossingPointCounts,{g_,0}:>g]

Cases[TutteGraphsWithOuterCrossingPointCounts,{g_,1}:>g]

LocalCrossingNumberWithEmbeddings=
{1+Max[Length/@DeleteCases[
Drop[AdjacencyList[#],GraphData["GoedgebeurConfigurationGraph","V"]],
_Integer?(LessEqualThan[GraphData["GoedgebeurConfigurationGraph","V"]]),
{2}
]],#}&/@TutteGraphs

TutteGraphsWithSymmetryGroups={
#,
GraphSymmetryGroup[
#,
AdditionalData->Join[Table[True,GraphData["GoedgebeurConfigurationGraph","V"]],Table[False,cn]],
SameTest->Equal
]
}&/@TutteGraphs;

SymmetricEmbeddingsWithOrientations=DeleteCases[
TutteGraphsWithSymmetryGroups,
{_,TransformationGroup[{}]}
]

Select[SymmetricEmbeddingsWithOrientations[[All,1]],Count[OuterFace[#],_?(GreaterThan[GraphData["GoedgebeurConfigurationGraph","V"]])]==0&]

MinimalCrossing construction Random 1k [19 s]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->1])//AbsoluteTiming

Length[diagrams=DistinctMinimalCrossingDiagramData[
GraphData["GoedgebeurConfigurationGraph"],
1000,
"CrossingNumber"->cn,
EdgeShapeFunction->"BezierEdge"
]]//AbsoluteTiming

No crossing points on the boundary:

Length[diagrams0=Lookup[Select[diagrams,MinimalCrossingOuterCrossingCount[#]==0&],"Graph",{}]]//Timing

One crossing point on the boundary:

Length[diagrams1=Lookup[Select[diagrams,MinimalCrossingOuterCrossingCount[#]==1&],"Graph",{}]]//Timing

graphs=#["Graph"]&/@diagrams;

Symmetric embeddings:

RandomGraphsWithSymmetryGroups={
#,
GraphSymmetryGroup[#]
}&/@graphs;//AbsoluteTiming

MaxMemoryUsed[]/10^9.GB

Symmetric embeddings:

Length[SymmetricMinimalEmbeddingData=DeleteCases[
RandomGraphsWithSymmetryGroups,
{_,TransformationGroup[{}]}
]
]//AbsoluteTiming

SymmetricMinimalEmbeddingData

SymmetricMinimalEmbeddingGraphs=SymmetricMinimalEmbeddingData[[All,1]]

GraphCrossingCount/@SymmetricMinimalEmbeddingGraphs

GraphCrossingDiagram/@SymmetricMinimalEmbeddingGraphs

GraphPlot@RotateGraph[,2Pi/8]

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

RecognizeGraph@g

GraphCrossingCount@g

GraphCrossingDiagram@g

RectilinearLocalCrossingCount@g

MinimalCrossing construction Random 5k [XXX s]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->1])//AbsoluteTiming

Length[diagrams=DistinctMinimalCrossingDiagramData[
GraphData["GoedgebeurConfigurationGraph"],
5000,
"CrossingNumber"->cn,
EdgeShapeFunction->"BezierEdge"
]]//AbsoluteTiming

No crossing points on the boundary:

Length[diagrams0=Lookup[Select[diagrams,MinimalCrossingOuterCrossingCount[#]==0&],"Graph",{}]]//Timing

One crossing point on the boundary:

Length[diagrams1=Lookup[Select[diagrams,MinimalCrossingOuterCrossingCount[#]==1&],"Graph",{}]]//Timing

graphs=#["Graph"]&/@diagrams;

Symmetric embeddings:

RandomGraphsWithSymmetryGroups={
#,
GraphSymmetryGroup[#]
}&/@graphs;//AbsoluteTiming

MaxMemoryUsed[]/10^9.GB

Symmetric embeddings:

Length[SymmetricMinimalEmbeddingData=DeleteCases[
RandomGraphsWithSymmetryGroups,
{_,TransformationGroup[{}]}
]
]//AbsoluteTiming

SymmetricMinimalEmbeddingData

SymmetricMinimalEmbeddingGraphs=SymmetricMinimalEmbeddingData[[All,1]]

GraphCrossingCount/@SymmetricMinimalEmbeddingGraphs

GraphCrossingDiagram/@SymmetricMinimalEmbeddingGraphs

MinimalCrossing construction Random 20k [XXX s]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->1])//AbsoluteTiming

Length[diagrams=DistinctMinimalCrossingDiagramData[
GraphData["GoedgebeurConfigurationGraph"],
20*^3,
"CrossingNumber"->cn,
EdgeShapeFunction->"BezierEdge"
]]//AbsoluteTiming

No crossing points on the boundary:

Length[diagrams0=Lookup[Select[diagrams,MinimalCrossingOuterCrossingCount[#]==0&],"Graph",{}]]//Timing

One crossing point on the boundary:

Length[diagrams1=Lookup[Select[diagrams,MinimalCrossingOuterCrossingCount[#]==1&],"Graph",{}]]//Timing

graphs=#["Graph"]&/@diagrams;

Symmetric embeddings:

RandomGraphsWithSymmetryGroups={
#,
GraphSymmetryGroup[#]
}&/@graphs;//AbsoluteTiming

MaxMemoryUsed[]/10^9.GB

Symmetric embeddings:

Length[SymmetricMinimalEmbeddingData=DeleteCases[
RandomGraphsWithSymmetryGroups,
{_,TransformationGroup[{}]}
]
]//AbsoluteTiming

SymmetricMinimalEmbeddingData

SymmetricMinimalEmbeddingGraphs=SymmetricMinimalEmbeddingData[[All,1]]

GraphCrossingCount/@SymmetricMinimalEmbeddingGraphs

GraphCrossingDiagram/@SymmetricMinimalEmbeddingGraphs

MinimalCrossing construction Random 1k [old]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->1])//AbsoluteTiming

(RandomGraphs=Table[MinimalCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],"CrossingNumber"->cn,RandomSeed->n],{n,1000}]//Union);//Timing

RandomGraphsWithOuterCrossingPointCounts={
#,
Count[OuterFace[#],_?(GreaterThan[GraphData["GoedgebeurConfigurationGraph","V"]])]
}&/@RandomGraphs;

Small numbers of crossing points on the boundary:

Cases[RandomGraphsWithOuterCrossingPointCounts,{g_,0}:>g]

Cases[RandomGraphsWithOuterCrossingPointCounts,{g_,1}:>g]

Symmetric embeddings:

RandomGraphsWithSymmetryGroups={
#,
GraphSymmetryGroup[
#,
AdditionalData->Join[Table[True,GraphData["GoedgebeurConfigurationGraph","V"]],Table[False,cn]],
SameTest->Equal
]
}&/@RandomGraphs;

MaxMemoryUsed[]/10^9.GB

DeleteCases[
RandomGraphsWithSymmetryGroups,
{_,TransformationGroup[{}]}
]/.g_Graph:>BilateralGraph[CenterGraph@g,"ReturnNonbilateralGraph"->True]

MinimalCrossing construction Random 20k [old]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->1])//AbsoluteTiming

(RandomGraphs=Table[MinimalCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],"CrossingNumber"->cn,RandomSeed->n],{n,20000}]//Union);//Timing

RandomGraphsWithOuterCrossingPointCounts={
#,
Count[OuterFace[#],_?(GreaterThan[GraphData["GoedgebeurConfigurationGraph","V"]])]
}&/@RandomGraphs;

Small numbers of crossing points on the boundary:

Cases[RandomGraphsWithOuterCrossingPointCounts,{g_,0}:>g]

Cases[RandomGraphsWithOuterCrossingPointCounts,{g_,1}:>g]

Symmetric embeddings:

RandomGraphsWithSymmetryGroups={
#,
GraphSymmetryGroup[
#,
AdditionalData->Join[Table[True,GraphData["GoedgebeurConfigurationGraph","V"]],Table[False,cn]],
SameTest->Equal
]
}&/@RandomGraphs;

MaxMemoryUsed[]/10^9.GB

DeleteCases[
RandomGraphsWithSymmetryGroups,
{_,TransformationGroup[{}]}
]/.g_Graph:>BilateralGraph[CenterGraph@g,"ReturnNonbilateralGraph"->True]

MinimalLocalCrossing

GraphData["GoedgebeurConfigurationGraph",{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData["GoedgebeurConfigurationGraph","Graph","MinimalLocalCrossing"]//StyleGraphs

MinimalRectilinearLocalCrossing

GraphData["GoedgebeurConfigurationGraph",{"LocalCrossingNumber","RectilinearLocalCrossingNumber"}]

GraphData["GoedgebeurConfigurationGraph","Graph","MinimalRectilinearLocalCrossing"]//StyleGraphs

MinimaRectilinearlLocalCrossing construction 1000

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->10])//AbsoluteTiming

(gs=Select[Table[MinimalCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],"CrossingNumber"->cn,RandomSeed->i],{i,1000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

MinimaRectilinearlLocalCrossing construction 20000

AdjacentCrossingsQ[g_Graph,cn_Integer]:=Module[{a=AdjacencyList[g],n=VertexCount[g]-cn},Max[Take[a,-cn]]>n]

(cn=CrossingNumber[GraphData["GoedgebeurConfigurationGraph"],TimeConstraint->10])//AbsoluteTiming

(gs=Select[Table[MinimalCrossingGraph[GraphData["GoedgebeurConfigurationGraph"],"CrossingNumber"->cn,RandomSeed->i],{i,20000}],!AdjacentCrossingsQ[#,cn]&]//Union)//Timing

Circulant

GraphData["GoedgebeurConfigurationGraph","Circulant"]

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

Circulant construction

GraphData["GoedgebeurConfigurationGraph","NotationRules","Circulant"]

(ci=CirculantIndices[GraphData["GoedgebeurConfigurationGraph"]])//AbsoluteTiming

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

compl=GraphData["GoedgebeurConfigurationGraph","ComplementGraph","Name"]

Line graph

GraphData["GoedgebeurConfigurationGraph","Line"]

LineGraphQ[GraphData["GoedgebeurConfigurationGraph"]]//Timing

RootGraph

roots=Select[GraphData[All],GraphData[#,"LineGraph","Name"]==="GoedgebeurConfigurationGraph"&]

RootGraph[GraphData["GoedgebeurConfigurationGraph"]]

Halin

GraphData["GoedgebeurConfigurationGraph","Halin"]

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

Rigid

GraphData["GoedgebeurConfigurationGraph","Rigid"]

GraphData["GoedgebeurConfigurationGraph","Graph","Rigid"]//StyleGraphs

Flexible

GraphData["GoedgebeurConfigurationGraph","Flexible"]

GraphData["GoedgebeurConfigurationGraph","Graph","Flexible"]//StyleGraphs

Voltage

GraphData["GoedgebeurConfigurationGraph","Graph","Voltage"]//StyleGraphs

Voltage construction

gs=VoltageGraph[GraphData["GoedgebeurConfigurationGraph"],"MaxResults"->20,Debug->True]

Length[gs]

RecognizeGraph/@gs

VoltageGraphNotation/@gs//Column

EmbeddingClasses/@gs//Column

GraphSymmetryGroup/@gs//Column

LCF highly symmetric

(lcf=FindHighlySymmetricLCFNotation[GraphData["GoedgebeurConfigurationGraph"],"MaxResults"->20,Debug->True])//AbsoluteTiming

(lcf=FindHighlySymmetricLCFNotation[GraphData["GoedgebeurConfigurationGraph"],Method->"Wolfram","MaxResults"->All,"MaxCyclesPerAutomorphism"->All,"MaxPeriod"->Infinity,Debug->True])//AbsoluteTiming

lcf[[All,-1]]//Tally

nicelcf=Cases[lcf,{_,}]

gs=BilateralLCFGraph@@@nicelcf

EmbeddingClasses/@gs//Column

l={
{"GoedgebeurConfigurationGraph",{0,Missing["NotAvailable",nicelcf]}}
};

PropertyReplace[l,"LCFNotations"]

RenameGraphFiles[]

LCF

GraphData["GoedgebeurConfigurationGraph","LCF"]

GraphData["GoedgebeurConfigurationGraph","HamiltonianCycleCount"]

GraphData["GoedgebeurConfigurationGraph","LCFSignature"]

GraphData["GoedgebeurConfigurationGraph","LCFNotations"]

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

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

UnitDistance

GraphData["GoedgebeurConfigurationGraph","UnitDistance"]

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

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

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

UnitDistance by refinement of default embeddings

Graph[edge list]

(g=UnitDistanceEmbeddingRefine[Graph[GraphData["GoedgebeurConfigurationGraph","EdgeList"]],MaxIterations->500])//Timing

UnitDistanceGraphEmbeddingQ[g]

Graph[vertex list, edge list]

(g=UnitDistanceEmbeddingRefine[Graph[GraphData["GoedgebeurConfigurationGraph","VertexList"],GraphData["GoedgebeurConfigurationGraph","EdgeList"]],MaxIterations->500])//Timing

UnitDistanceGraphEmbeddingQ[g]

UnitDistance by refinement of existing embeddings

gs=UnitDistanceEmbeddingRefine[Graph[VertexList[#],EdgeList[#],VertexCoordinates->GraphEmbedding[#]],MaxIterations->500]&/@Complement@@(GraphData["GoedgebeurConfigurationGraph","Graph",#]&/@{"All","UnitDistance"})

TextGrid[
gdata=SortBy[
{#,DegenerateGraphEmbeddingQ[#],GraphSymmetryGroup[#],Max[Abs[EdgeLengths[#]-1]]}&/@gs,
Last
],
Dividers->All
]

Cases[gdata,{__,0.}]

Symmetric:

gs=Cases[
gdata,
{g_,_,sym:Except[TransformationGroup[{}]],diff_}:>{
HighlightGraph[g1=BilateralGraph[CenterGraph[g],"ReturnNonbilateralGraph"->True],Flatten[FindCoincidentVertices[g1]]],
sym,
diff
}]

UnitDistance by FindUnitDistanceEmbedding  (random embeddings returning on messages)

gs=FindUnitDistanceEmbedding[GraphData["GoedgebeurConfigurationGraph"],50,"ReturnWithMessage"->True];//Quiet//Timing

gdata=SortBy[
{#,Max[Abs[EdgeLengths[#]-1]]}&/@gs,
Last
]

Cases[gdata,{g_?UnitDistanceGraphEmbeddingQ,_}:>g]

SymmetricEmebddings=Select[gdata,GraphSymmetryGroup[#[[1]]]=!=TransformationGroup[{}]&]

UnitDistance by FindUnitDistanceEmbedding  (random embedding waiting until UD is found)

FindUnitDistanceEmbedding[GraphData["GoedgebeurConfigurationGraph"],"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

{$Version,DateString[]}

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

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

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

BilateralGraph/@%[[-1]]

gs={,,}

Matchstick

GraphData["GoedgebeurConfigurationGraph","Matchstick"]

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

3D default

Graph3D[GraphData["GoedgebeurConfigurationGraph","Edges"]]

3D construction

3D All

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

3D UnitDistance construction Random

GraphData["GoedgebeurConfigurationGraph","Dimension"]

(g=UnitDistanceEmbeddingRefine[
Graph3D[
GraphData["GoedgebeurConfigurationGraph","VertexList"],
GraphData["GoedgebeurConfigurationGraph","EdgeList"]
],
WorkingPrecision->25])//Timing

EdgeLengths[g]

UnitDistanceGraphEmbeddingQ[g]

3D UnitDistance

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

3D Polyhedron

GraphData["GoedgebeurConfigurationGraph","Polyhedral"]

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

GraphData

GraphDataStrng

outstream=OpenWrite["~/goedgebeur-configuration.m"]

WriteString[
outstream,
GraphDataString[
cg,
"EmbeddingClasses"->{"Configuration"},
"StandardName"->"GoedgebeurConfigurationGraph",
"Name"->"Goedgebeur configuration graph",
"Classes"->{"Configuration"},
"LeviGraphName"->"GoedgebeurGraph",
"Information"->"GoedgebeurConfiguration"
]
]

Close[outstream]