Möbius-Kantor Configuration

Author

Eric W. Weisstein
May 22, 2026

This notebook downloaded from https://mathworld.wolfram.com/notebooks/Configurations/Moebius-KantorConfiguration.nb.

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

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

Sources

Grünbaum

Configurations of Points and Lines. p. 68

Gropp

Pisanski and Randić

Pisanski, T. and Randić, M. "Bridges between Geometry and Graph Theory." In Geometry at Work: A Collection of Papers Showing Applications of Geometry (Ed. C. A. Gorini). Washington, DC: Math. Assoc. Amer., pp. 174-194, 2000.

https://www.researchgate.net/profile/Tomaz-Pisanski/publication/2361123_Bridges_between_Geometry_and_Graph_Theory/links/0912f505a236de537f000000/Bridges-between-Geometry-and-Graph-Theory.pdf?origin=publication_detail&_tp=eyJjb250ZXh0Ijp7ImZpcnN0UGFnZSI6InB1YmxpY2F0aW9uIiwicGFnZSI6InB1YmxpY2F0aW9uRG93bmxvYWQiLCJwcmV2aW91c1BhZ2UiOiJwdWJsaWNhdGlvbiJ9fQ&__cf_chl_tk=K.fDThzjQx3DIQrt3F7VXkA2MBH9LddYFzzAbfcvyW8-1760543230-1.0.1.1-h9M6nYOhEPdSvgk7BmLiKmmAVV4LrXPWPrTUv5Eod7U

Source

Grünbaum

Configurations of Points and Lines. p. 68

Gropp

Pisanski and Randić

Pisanski, T. and Randić, M. "Bridges between Geometry and Graph Theory." In Geometry at Work: A Collection of Papers Showing Applications of Geometry (Ed. C. A. Gorini). Washington, DC: Math. Assoc. Amer., pp. 174-194, 2000.

https://www.researchgate.net/profile/Tomaz-Pisanski/publication/2361123_Bridges_between_Geometry_and_Graph_Theory/links/0912f505a236de537f000000/Bridges-between-Geometry-and-Graph-Theory.pdf?origin=publication_detail&_tp=eyJjb250ZXh0Ijp7ImZpcnN0UGFnZSI6InB1YmxpY2F0aW9uIiwicGFnZSI6InB1YmxpY2F0aW9uRG93bmxvYWQiLCJwcmV2aW91c1BhZ2UiOiJwdWJsaWNhdGlvbiJ9fQ&__cf_chl_tk=K.fDThzjQx3DIQrt3F7VXkA2MBH9LddYFzzAbfcvyW8-1760543230-1.0.1.1-h9M6nYOhEPdSvgk7BmLiKmmAVV4LrXPWPrTUv5Eod7U

Figure

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

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

RegionIntersection[Line[{{-1/2,0},{1/4,(Sqrt[3])/4}}],Line[{{0,0},{-1/4,(Sqrt[3])/4}}]]//FullSimplify

points={{-1/2,0},{0,0},{1/2,0},{0,Sqrt[3]/2},{-(1/4),((Sqrt[3])/4)},{(1/4),((Sqrt[3])/4)},{(1/8),((Sqrt[3])/8)},{-(1/8),((Sqrt[3])/8)}};
lines={{1,2,3},{3,6,4},{4,5,1},{2,7,6},{2,8,5},{3,7,5},{1,8,6}};
circles={{4,7,8}};

Graphics[{Line[points[[#]]]&/@lines,Circumsphere[points[[#]]]&/@circles,{Red,PointSize[.02],Point[points]},MapIndexed[Text[#2[[1]],#,1.5{-1,-1},Background->LightDarkSwitched@White]&,points]}]

incidences=Join[lines,circles]

LeviGraph[incidences]//RecognizeGraph

Figure

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

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

RegionIntersection[Line[{{-1/2,0},{1/4,(Sqrt[3])/4}}],Line[{{0,0},{-1/4,(Sqrt[3])/4}}]]//FullSimplify

points={{-1/2,0},{0,0},{1/2,0},{0,Sqrt[3]/2},{-(1/4),((Sqrt[3])/4)},{(1/4),((Sqrt[3])/4)},{(1/8),((Sqrt[3])/8)},{-(1/8),((Sqrt[3])/8)}};
lines={{1,2,3},{3,6,4},{4,5,1},{2,7,6},{2,8,5},{3,7,5},{1,8,6}};
circles={{4,7,8}};

Graphics[{Line[points[[#]]]&/@lines,Circumsphere[points[[#]]]&/@circles,{Red,PointSize[.02],Point[points]},MapIndexed[Text[#2[[1]],#,1.5{-1,-1},Background->LightDarkSwitched@White]&,points]}]

incidences=Join[lines,circles]

LeviGraph[incidences]//RecognizeGraph

Embeddings

<<MathWorld`Graphs`

Names

GraphData["MoebiusKantorConfigurationGraph","StandardName"]

GraphData["MoebiusKantorConfigurationGraph","StandardNames"]

HouseOfGraphs

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

HouseOfGraphsLookup[hogid]

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

Primary

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

All

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

CurvedEdge

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

Inexact

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

Embeddings

GraphDataEmbeddings[GraphData["MoebiusKantorConfigurationGraph"]]

Default embedding

GraphPlot@RotateGraph[Graph[GraphData["MoebiusKantorConfigurationGraph","VertexList"],GraphData["MoebiusKantorConfigurationGraph","Edges"]],Pi]

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

g=FindCorrespondingGraph[,v]

RecognizeGraph@g

Degenerate

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

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

GeneralizedPetersen

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

IGraph

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

Bilateral

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

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

Circular

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

Circular construction

GraphData["MoebiusKantorConfigurationGraph","Hamiltonian"]

GraphData["MoebiusKantorConfigurationGraph","LCF"]

GraphData["MoebiusKantorConfigurationGraph","HamiltonianCycleCount"]

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

(circ=CircularEmbeddingFromHamiltonianCycle[GraphData["MoebiusKantorConfigurationGraph"],#]&/@hc);//Timing

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

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

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

Length[SymmetricGraphs=DeleteDuplicatesBy[BilateralOrRotationalGraphs,CircularCanonicalGraphEmbedding[#[[1]]]&]]//Timing

SymmetricGraphs

Length[BilateralGraphs=Select[SymmetricGraphs,!FreeQ[#,Reflection]&][[All,1]]]

BilateralGraphs

Length[BilateralAndRotationalGraphs=Select[SymmetricGraphs,And[!FreeQ[#,Rotation],!FreeQ[#,Reflection]]&][[All,1]]]

BilateralAndRotationalGraphs

Planar

GraphData["MoebiusKantorConfigurationGraph","Planar"]

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

MinimalCrossingNumber: "EmbeddingScheme" -> 1

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

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

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

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

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

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

MinimalCrossingNumber: "EmbeddingScheme" -> 2

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

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

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

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

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

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

MinimalCrossingNumber: "EmbeddingScheme" -> 3

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

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

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

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

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

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

MinimalCrossingNumber crossings.uos.de

https://crossings.uos.de/job/new

ExportString[GraphData["MoebiusKantorConfigurationGraph"],"DOT"]

MinimalCrossing

GraphData["MoebiusKantorConfigurationGraph","CN"]

gs=GraphData["MoebiusKantorConfigurationGraph","Graph","MinimalCrossing"]//StyleGraphs

GraphCrossingCount/@gs

Graphics[{GraphPlot[#,VertexStyle->Automatic][[1]],Red,AbsolutePointSize[5],GraphCrossings[#]}]&/@gs

MinimalRectilinearCrossing

GraphData["MoebiusKantorConfigurationGraph","RCN"]

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

MinimalCrossing construction Tutte

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

(g=MinimalCrossingGraph[GraphData["MoebiusKantorConfigurationGraph"],"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["MoebiusKantorConfigurationGraph","V"]])]
}&/@TutteGraphs;

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

Select[Cases[TutteGraphsWithOuterCrossingPointCounts,{g_,1}:>g],Length[OuterFace[#]]>3&]

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

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

GraphPlot@RotateGraph[,-2Pi/3]

GraphPlot@

GraphPlot@RotateGraph[,3Pi/4]

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

GraphCrossingCount[g]

GraphCrossingDiagram@g

MinimalCrossing construction Random

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

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

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

Small numbers of crossing points on the boundary:

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

Select[Cases[RandomGraphsWithOuterCrossingPointCounts,{g_,1}:>g],Length[OuterFace[#]]>3&]

Symmetric embeddings:

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

RectilinearLocalCrossingCount[g]

MinimalLocalCrossing

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

gs=GraphData["MoebiusKantorConfigurationGraph","Graph","MinimalLocalCrossing"]//StyleGraphs

LocalCrossingNumber/@gs

MinimalRectilinearLocalCrossing

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

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

Circulant

GraphData["MoebiusKantorConfigurationGraph","Circulant"]

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

Circulant construction

GraphData["MoebiusKantorConfigurationGraph","NotationRules","Circulant"]

(ci=CirculantIndices[GraphData["MoebiusKantorConfigurationGraph"]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

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

Line graph

GraphData["MoebiusKantorConfigurationGraph","Line"]

LineGraphQ[GraphData["MoebiusKantorConfigurationGraph"]]//Timing

RootGraph

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

RootGraph[GraphData["MoebiusKantorConfigurationGraph"]]

Halin

GraphData["MoebiusKantorConfigurationGraph","Halin"]

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

Rigid

GraphData["MoebiusKantorConfigurationGraph","Rigid"]

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

Flexible

GraphData["MoebiusKantorConfigurationGraph","Flexible"]

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

LCF

GraphData["MoebiusKantorConfigurationGraph","LCF"]

GraphData["MoebiusKantorConfigurationGraph","HamiltonianCycleCount"]

GraphData["MoebiusKantorConfigurationGraph","LCFSignature"]

GraphData["MoebiusKantorConfigurationGraph","LCFNotations"]

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

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

UnitDistance

GraphData["MoebiusKantorConfigurationGraph","UnitDistance"]

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

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData["MoebiusKantorConfigurationGraph","VertexList"],GraphData["MoebiusKantorConfigurationGraph","EdgeList"]],MaxIterations->500]

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

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData["MoebiusKantorConfigurationGraph"],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData["MoebiusKantorConfigurationGraph"],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

Matchstick

GraphData["MoebiusKantorConfigurationGraph","Matchstick"]

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

3D default

Graph3D[GraphData["MoebiusKantorConfigurationGraph","Edges"]]

3D construction

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

RecognizeGraph[g]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData["MoebiusKantorConfigurationGraph","Polyhedral"]

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

GraphData

GraphDataClassString

GraphDataClassString["MoebiusKantorConfigurationGraph"]

GraphDataString

file=OpenWrite["~/moebius-kantor.m"]

WriteString[file,GraphDataString[,
"StandardName"->"MoebiusKantorConfigurationGraph",
"Name"->"Möbius\[Hyphen]Kantor configuration graph",
"Classes"->{"Configuration"},
"IncidenceLines"->"incidences",
"Information"->"Moebius-KantorConfiguration"
]]

Close[file]