Black Bishop Graph

Author

Eric W. Weisstein
December 19, 2023

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

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

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

Graphics

Graphs.m

GraphicsRow[Table[StyleGraphs@BlackBishopGraph[n,n],{n,5}],Dividers->All,ImageSize->500]

GraphData "Grid" (degenerate)

GraphicsRow[Table[StyleGraphs@GraphData[{"BlackBishop",{n,n}},"Graph","Degenerate"][[-1]],{n,5}],Dividers->All,ImageSize->500]

GraphData default

GraphicsRow[Table[StyleGraphs@GraphData[{"BlackBishop",{n,n}}]],{n,5}],Dividers->All,ImageSize->500]

Curved edges

Table[GraphData[{"BlackBishop",{n,n}},"Graph","All"][[-1]]/.g_Graph:>AdjacencyGraph[AdjacencyMatrix[g],EdgeShapeFunction->"Line",DirectedEdges->True,VertexCoordinates->GraphEmbedding[g]],{n,6}]

Special cases

Grid[DeleteCases[Cases[Flatten[Table[{{m,n},BlackBishopGraph[m,n]},{n,7},{m,n}],1]/.g_Graph:>(ToEntity[g]/._ToEntity:>{}),{i_,e_Entity}:>{i,CanonicalName[e]}],{_,{"BlackBishop",_}}],Dividers->All,Alignment->Left]

Properties m×n

Properties n×n

Acyclic

Table[GraphData[{"BlackBishop",{n,n}},"Acyclic"],{n,10}]

AdjacencyMatrixCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"AdjacencyMatrixCount"],{n,10}]

Table[((((1+2 (n^2)-(((-1))^n) )/4)!)/(Piecewise[{{1,n==1}},(2^(2Ceiling[n/2]-1))])),{n,10}]

Arboricity

seq=Table[GraphData[{"BlackBishop",{n,n}},"Arboricity"],{n,2,10}]

ArcTransitive

Table[GraphData[{"BlackBishop",{n,n}},"ArcTransitive"],{n,10}]

ArcTransitivity

Table[GraphData[{"BlackBishop",{n,n}},"ArcTransitivity"],{n,10}]

AutomorphismCount

A158302

Table[GraphData[{"BlackBishop",{n,n}},"AutomorphismCount"],{n,10}]

seq=Table[GroupOrder[GraphAutomorphismGroup[BlackBishopGraph[n,n]]],{n,20}]

seq[[3;;All;;2]]

FindSequenceFunction[%,n]

Table[Piecewise[{{1,n==1}},(2^(2Ceiling[n/2]-1))],{n,20}]

%==seq

BalabanIndex

Table[GraphData[{"BlackBishop",{n,n}},"BalabanIndex"],{n,10}]

Bandwidth

Table[GraphData[{"BlackBishop",{n,n}},"Bandwidth"],{n,10}]

BridgeCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"BridgeCount"],{n,10}]

BurningNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"BurningNumber"],{n,10}]

CharacteristicPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"CharacteristicPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

ChordlessCycleCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"ChordlessCycleCount"],{n,10}]

FindSequenceFunction[seq,n]

ChromaticInvariant

seq=Table[GraphData[{"BlackBishop",{n,n}},"ChromaticInvariant"],{n,10}]

FindSequenceFunction[Drop[seq,2],n]

ChromaticNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"ChromaticNumber"],{n,10}]

ChromaticPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"ChromaticPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

Circumference

seq=Table[GraphData[{"BlackBishop",{n,n}},"Circumference"],{n,10}]

FindSequenceFunction[Drop[seq,2],n]

Classes

Intersection@@(GraphData[#,"Classes"]&/@GraphData["TriangularGrid"])

CliqueCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"CliqueCount"],{n,10}]

FindSequenceFunction[seq,n]

gf=x FindGeneratingFunction[seq,x]

SeriesCoefficient[gf,{x,0,n}]//FullSimplify

CliqueCoveringNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"CliqueCoveringNumber"],{n,10}]

FindSequenceFunction[Rest@seq,n-3]//FullSimplify

gf=x FindGeneratingFunction[seq,x]

FullSimplify[SeriesCoefficient[gf,{x,0,n}],n>0]

Table[3 (2^(n-3)),{n,10}]

CliqueNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"CliqueNumber"],{n,10}]

CliquePolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"CliquePolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

ComplementOddChordlessCycleCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"ComplementOddChordlessCycleCount"],{n,10}]

FindSequenceFunction[Take[seq,{3,5}],n]

ConnectedComponentCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"ConnectedComponentCount"],{n,10}]

ConnectedDominatingSetCount

A289145

seq=Table[GraphData[{"BlackBishop",{n,n}},"ConnectedDominatingSetCount"],{n,10}]

FindSequenceFunction[DeleteMissing[seq],n]

FindSequenceFunction[DeleteMissing@Drop[seq,2],n-2]

gf=x FindGeneratingFunction[DeleteMissing@seq,x]

ConnectedDominationNumber

Probably n-2 for n > 2

seq=Table[GraphData[{"BlackBishop",{n,n}},"ConnectedDominationNumber"],{n,10}]

FindSequenceFunction[seq,n]

ConnectedDominationPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"ConnectedDominationPolynomial"][x],{n,k0=3,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

ConnectedInducedSubgraphCount

A290719

seq=Table[GraphData[{"BlackBishop",{n,n}},"ConnectedInducedSubgraphCount"],{n,10}]

FindLinearRecurrence[DeleteMissing@seq]

FindSequenceFunction[DeleteMissing @ seq,n]

gf=x FindGeneratingFunction[seq,x]

ConnectedInducedSubgraphPolynomial

(poly=DeleteCases[Factor@Table[GraphData[{"BlackBishop",{n,n}},"ConnectedInducedSubgraphPolynomial"][x],{n,k0=1,kmax=10}],_Missing[x]])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,10}]

FullSimplify[poly2-poly]

CrossingNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"CrossingNumber"],{n,10}]

CycleCount

A234603

seq=Table[GraphData[{"BlackBishop",{n,n}},"CycleCount"],{n,10}]

seq={2,53,12424,12300529,504040211574,84649132742336262,1080241691057266946999792};

FindLinearRecurrence[DeleteMissing[seq]]

FindSequenceFunction[DeleteMissing@seq,n]

gf=(x^3)FindGeneratingFunction[DeleteMissing[seq],x]

CyclePolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"CyclePolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

Cyclic

Table[GraphData[{"BlackBishop",{n,n}},"Cyclic"],{n,10}]

CyclomaticNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"CyclomaticNumber"],{n,10}]

FindSequenceFunction[Drop[seq,2],n]//FullSimplify

Table[(1/18) (45-27 (2^n)+7 (3^n)),{n,10}]

DetourIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"DetourIndex"],{n,10}]

FindSequenceFunction[{1,35,550,5566,49726},n]

FindGeneratingFunction[{1,35,550,5566,49726},x]

DetourMatrix

MatrixForm/@Table[GraphData[{"BlackBishop",{n,n}},"DetourMatrix"],{n,10}]

MatrixForm/@Table[SparseArray[{i_,j_}:>Abs[i-j],n],{n,10}]

DetourPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"DetourPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

Diameter

seq=Table[GraphData[{"BlackBishop",{n,n}},"Diameter"],{n,10}]

DistanceMatrix

MatrixForm/@Table[GraphData[{"BlackBishop",{n,n}},"DistanceMatrix"],{n,10}]

MatrixForm/@Table[SparseArray[{i_,j_}:>Abs[i-j],n],{n,10}]

DistancePolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"DistancePolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

DistinguishingNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"DistinguishingNumber"],{n,10}]

DomaticNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"DomaticNumber"],{n,10}]

DominatingSetCount

A289164

seq=Table[GraphData[{"BlackBishop",{n,n}},"DominatingSetCount"],{n,10}]

FindLinearRecurrence[DeleteMissing[seq]]

FindSequenceFunction[DeleteMissing@seq,n]

gf=x FindGeneratingFunction[DeleteMissing[seq],x]

(PARI)
Collect(sig, v, r, x)={forstep(r=r, 1, -1, my(w=sig[r]+1); v=vector(#v, k, sum(j=1, k, binomial(#v-j, k-j)*v[j]*x^(k-j)*(1+x)^(w-#v+j-1))-v[k])); v[#v]}
DomSetCount(sig, x)={my(v=[1]); my(total=Collect(sig, v, #sig, x)); forstep(r=#sig, 1, -1, my(w=sig[r]+1); total+=Collect(sig, vector(w, k, if(k<=#v, v[k])), r-1, x); v=vector(w, k, sum(j=1, min(k, #v), binomial(w-j, k-j)*v[j]*x^(k-j)*(1+x)^(j-1)))); total}
Bishop(n, white)=vector(n-if(white, n%2, 1-n%2), i, n-i+if(white, 1-i%2, i%2));
a(n)=DomSetCount(Bishop(n, 0), 1); \\ Andrew Howroyd, Nov 05 2017

DominationNumber

A004525

seq=Table[GraphData[{"BlackBishop",{n,n}},"DominationNumber"],{n,10}]

(seq=Monitor[Table[DominationNumber[BlackBishopGraph[n,n]],{n,20}],n])//Timing

Table[Floor[n/4]+Ceiling[n/4],{n,20}]

DominationPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"DominationPolynomial"],{n,k0=1,kmax=10}]/.f_Function:>f[x])//Column

coef=Factor/@FindLinearRecurrence[DeleteMissing@poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

EdgeChromaticNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"EdgeChromaticNumber"],{n,10}]

FindSequenceFunction[seq,n]//FullSimplify

EdgeConnectivity

Table[GraphData[{"BlackBishop",{n,n}},"EdgeConnectivity"],{n,10}]

EdgeCount

A225972

seq=Table[GraphData[{"BlackBishop",{n,n}},"EdgeCount"],{n,10}]

seq=Table[EdgeCount[BlackBishopGraph[n,n]],{n,20}]

coef=FindLinearRecurrence[seq]

Take[seq,Length[coef]]

LinearRecurrence[{2,1,-4,1,2,-1},{0,1,6,14,32,55},50]

FindSequenceFunction[seq,n]//FullSimplify

Table[(n-1) (4 (n^2)-2n+3-3(((-1))^n) )/12,{n,20}]

EdgeCoverCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"EdgeCoverCount"],{n,10}]

EdgeCoverNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"EdgeCoverNumber"],{n,10}]

FindSequenceFunction[Rest@seq,n-1]//FullSimplify[#,n∈Integers]&

x FindGeneratingFunction[seq,x]

EdgeCoverPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"EdgeCoverPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

EulerianCycleCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"EulerianCycleCount"],{n,10}]

FaceCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"FaceCount"],{n,10}]

FlowPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"FlowPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

FractionalChromaticNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"FractionalChromaticNumber"],{n,10}]

RSolve[{a[n]==a[n-1]+1/a[n-1],a[1]==1},a[n],n]

RecurrenceTable[{a[n]==a[n-1]+1/a[n-1],a[1]==1},a,{n,10}]

FractionalEdgeChromaticNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"FractionalEdgeChromaticNumber"],{n,10}]

FindSequenceFunction[Drop[seq,3],n-3]

Table[3 2^(n-3)-1,{n,10}]

Girth

seq=Table[GraphData[{"BlackBishop",{n,n}},"Girth"],{n,10}]

Gonality

seq=Table[GraphData[{"BlackBishop",{n,n}},"Gonality"],{n,10}]

HamiltonConnected

seq=Table[GraphData[{"BlackBishop",{n,n}},"HamiltonConnected"],{n,10}]

HamiltonDecompositionCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"HamiltonDecompositionCount"],{n,10}]

Hamiltonian

Table[GraphData[{"BlackBishop",{n,n}},"Hamiltonian"],{n,10}]

HamiltonianCycleCount

1/2 * A282889

seq=Table[GraphData[{"BlackBishop",{n,n}},"HamiltonianCycleCount"],{n,10}]

HamiltonianNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"HamiltonianNumber"],{n,10}]

FindSequenceFunction[seq,n]

gf=x FindGeneratingFunction[seq,x]

FullSimplify[SeriesCoefficient[gf,{x,0,n}],n>0]

Table[-1+3 (2^(-2+n)),{n,10}]

HamiltonianPathCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"HamiltonianPathCount"],{n,10}]

HamiltonianWalkCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"HamiltonianWalkCount"],{n,10}]

HararyIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"HararyIndex"],{n,10}]

FindSequenceFunction[seq,n]//FunctionExpand

FindGeneratingFunction[seq,x]

HexagonCount

A289160

seq=Table[GraphData[{"BlackBishop",{n,n}},"HexagonCount"],{n,10}]

(seq=Monitor[Table[CycleCount[BlackBishopGraph[n,n],6],{n,40}],n])//Timing

coef=FindLinearRecurrence[seq]

Take[seq,Length[coef]]

LinearRecurrence[{2,5,-12,-9,30,5,-40,5,30,-9,-12,5,2,-1},{0,0,0,15,220,1253,5412,15642,44368,97158,218816,410209,797052,1350435},20]

"a(n)="<>StringReplace[StringJoin@@Table[If[coef[[k]]==0,"",Switch[
coef[[k]],
-1,"-",
1,"+",
_,ToString[coef[[k]]]<>"*"]<>"a(n-"<>ToString[k]<>")+"],{k,Length[coef]}],"+-"->"-"]

FindSequenceFunction[seq,n]//FullSimplify

Factor[(-84+n (32+n (83-46 n+6 (n^2))))]

Table[((20580-15312 n-27027 (n^2)+28840 (n^3)-10850 (n^4)+2772 (n^5)-658 (n^6)+80 (n^7)-35 (((-1))^n) (-7+2 n) (-84+32 n+83 (n^2)-46 (n^3)+6 (n^4)))/3360),{n,40}]

gf=(x^3)FindGeneratingFunction[Drop[seq,3],x]

IdiosyncraticPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"IdiosyncraticPolynomial"][x,y],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

IndependenceNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"IndependenceNumber"],{n,10}]

IndependencePolynomial

A274105

(poly=Expand@Table[GraphData[{"BlackBishop",{n,n}},"IndependencePolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

(poly2=Table[Sum[(x^n)Binomial[Ceiling[n/2],k]BellB[n-k,1/x],{k,0,Ceiling[n/2]}],{n,10}]//Expand)//Column

CoefficientList[Table[Sum[(x^n)Binomial[Ceiling[n/2],k]BellB[n-k,1/x],{k,0,Ceiling[n/2]}],{n,10}],x]

FullSimplify[poly-poly2]

IndependenceRatio

seq=Table[GraphData[{"BlackBishop",{n,n}},"IndependenceRatio"],{n,10}]

Table[((Piecewise[{{1,n==1}},n-1])/((1+2 (n^2)-(((-1))^n) )/4)),{n,10}]

FindSequenceFunction[seq,n]

IndependentEdgeSetCount

A286422

seq=Table[GraphData[{"BlackBishop",{n,n}},"IndependentEdgeSetCount"],{n,10}]

seq={2,12,130,9492,1166928,1431128744,2907639077764,76670800431934272,3341096345926174809912,2311650738313947870105792416,2645105778378736719464340469683304,56641723029988800376624313271476598959936};

FindLinearRecurrence[seq]

FindSequenceFunction[seq,n-1]

gf=(x^2)FindGeneratingFunction[seq,x]

IndependentVertexSetCount

A216332

seq=Table[GraphData[{"BlackBishop",{n,n}},"IndependentVertexSetCount"],{n,10}]

Table[If[Mod[n,2]==0,With[{m=n/2},Sum[Binomial[m,k]BellB[2m-k],{k,0,m}]],With[{m=(n-1)/2},Sum[Binomial[m+1,k]BellB[2m+1-k],{k,0,m+1}]]],{n,20}]

Table[Sum[Binomial[Ceiling[n/2],k]BellB[n-k],{k,0,Ceiling[n/2]}],{n,0,20}]

Sum[Binomial[Ceiling[n/2],k]BellB[n-k],{k,0,Ceiling[n/2]}]

IntersectionNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"IntersectionNumber"],{n,10}]

IrredundantSetCount

A290713

Table[GraphData[{"BlackBishop",{n,n}},"IrredundantSetCount"],{n,10}]

KirchhoffIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"KirchhoffIndex"],{n,10}]

FindSequenceFunction[seq,n]

KirchhoffSumIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"KirchhoffSumIndex"],{n,10}]

LaplacianMatrix

MatrixForm/@Table[GraphData[{"BlackBishop",{n,n}},"LaplacianMatrix"],{n,10}]

LaplacianPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"LaplacianPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

LeafCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"LeafCount"],{n,10}]

LongestCycleCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"LongestCycleCount"],{n,10}]

LovaszNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"LovaszNumber"],{n,10}]

MatchingGeneratingPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"MatchingGeneratingPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

MatchingNumber

A002620

seq=Table[GraphData[{"BlackBishop",{n,n}},"MatchingNumber"],{n,10}]

FindSequenceFunction[seq,n]

gf=x FindGeneratingFunction[seq,x]

FullSimplify[SeriesCoefficient[gf,{x,0,n}],n>0]

MatchingPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"MatchingPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

MaximalCliqueCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximalCliqueCount"],{n,10}]

FindSequenceFunction[seq,n]//FunctionExpand

SeriesCoefficient[FindGeneratingFunction[seq,x],{x,0,n}]

Table[(1/6) (3-9 (2^(n-1))+7 (3^(n-1))),{n,10}]

MaximalIndependentEdgeSetCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximalIndependentEdgeSetCount"],{n,10}]

MaximalIndependentVertexSetCount

A290594

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximalIndependentVertexSetCount"],{n,10}]

Do[Print[{n,Length@FindIndependentVertexSet[BlackBishopGraph[n,n],Infinity,All]//Timing}],{n,12}]

seq={1,2,5,8,30,88,378,1400,7128,31456,182640};

FindLinearRecurrence[seq]

FindSequenceFunction[seq,n]

gf=x FindGeneratingFunction[seq,x]

MaximalIndependentVertexSetSignature

A288183

Take[data=DeleteCases[Import["https://oeis.org/A288183/b288183.txt","Table"],{}][[All,2]],100]

Table[Rest@CoefficientList[Total[#2 x^#&@@@GraphData[{"BlackBishop",{n,n}},"MaximalIndependentVertexSetSignature"]],x],{n,10}]//Column

(rows=Take[Join[{{2},{1,4}},Flatten/@Partition[Split[Drop[Split[data,#2=!=0&],2]],2]],10])//Column

MaximumCliqueCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximumCliqueCount"],{n,10}]

FindSequenceFunction[seq,n]//FunctionExpand

SeriesCoefficient[FindGeneratingFunction[seq,x],{x,0,n}]

Table[(1/6) (3-9 (2^(n-1))+7 (3^(n-1))),{n,10}]

MaximumIndependentEdgeSetCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximumIndependentEdgeSetCount"],{n,10}]

MaximumIndependentVertexSetCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximumIndependentVertexSetCount"],{n,10}]

MaximumLeafNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximumLeafNumber"],{n,10}]

MaximumVertexDegree

A042948

seq=Table[GraphData[{"BlackBishop",{n,n}},"MaximumVertexDegree"],{n,10}]

Table[Max[VertexDegree[BlackBishopGraph[n,n]]],{n,20}]

FindSequenceFunction[seq,n]//FullSimplify

Table[(1/2) ((4n-5)-(((-1))^n)),{n,20}]

Table[n-1+2Floor[(n-1)/2],{n,20}]

MeanDistance

seq=Table[GraphData[{"BlackBishop",{n,n}},"MeanDistance"],{n,10}]

FindSequenceFunction[seq,n]

(seq=Table[Mean[Flatten[GraphDistanceMatrix[BlackBishopGraph[n,n]]]],{n,30}])//Timing

FindGeneratingFunction[seq,x]

MinimalDominatingSetCount

A286886

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimalDominatingSetCount"],{n,10}]

MinimalDominatingSetSignature

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimalDominatingSetSignature"],{n,10}]//Column

MinimumCliqueCoveringCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimumCliqueCoveringCount"],{n,10}]

MinimumConnectedDominatingSetCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimumConnectedDominatingSetCount"],{n,10}]

FindSequenceFunction[seq,n]

MinimumDistinguishingLabelingCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimumDistinguishingLabelingCount"],{n,10}]

MinimumDominatingSetCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimumDominatingSetCount"],{n,10}]

MinimalDominatingSetSignature

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimalDominatingSetSignature"],{n,10}]//Column

MinimumEdgeCoverCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimumEdgeCoverCount"],{n,10}]

MinimumVertexDegree

seq=Table[GraphData[{"BlackBishop",{n,n}},"MinimumVertexDegree"],{n,10}]

MolecularTopologicalIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"MolecularTopologicalIndex"],{n,10}]

FindSequenceFunction[seq,n]

FindGeneratingFunction[seq,x]//Factor

Nonhamiltonian

Table[GraphData[{"BlackBishop",{n,n}},"Nonhamiltonian"],{n,10}]

NormalizedLaplacianMatrix

MatrixForm/@Table[GraphData[{"BlackBishop",{n,n}},"NormalizedLaplacianMatrix"],{n,10}]

OddChordlessCycleCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"OddChordlessCycleCount"],{n,10}]

PathCount

A291997

seq=Table[GraphData[{"BlackBishop",{n,n}},"PathCount"],{n,10}]

FindLinearRecurrence[DeleteMissing@seq]

FindSequenceFunction[DeleteMissing@seq,n]

gf=x FindGeneratingFunction[DeleteMissing@seq,x]

PathPolynomial

(poly=DeleteMissing@Factor[Table[GraphData[{"BlackBishop",{n,n}},"PathPolynomial"],{n,k0=1,kmax=10}]/.f_Function:>f[x]])//Column

coef=Factor/@FindLinearRecurrence[poly]

PentagonCount

A289163

seq=Table[GraphData[{"BlackBishop",{n,n}},"PentagonCount"],{n,10}]

(seq=Monitor[Table[CycleCount[BlackBishopGraph[n,n],5],{n,40}],n])//Timing

coef=FindLinearRecurrence[seq]

Take[seq,Length[coef]]

LinearRecurrence[{2,4,-10,-5,20,0,-20,5,10,-4,-2,1},{0,0,0,10,84,322,1172,2780,7016,13532,27720,47318},20]

"a(n)="<>StringReplace[StringJoin@@Table[If[coef[[k]]==0,"",Switch[
coef[[k]],
-1,"-",
1,"+",
_,ToString[coef[[k]]]<>"*"]<>"a(n-"<>ToString[k]<>")+"],{k,Length[coef]}],"+-"->"-"]

FindSequenceFunction[seq,n]//FullSimplify

Factor[(-33+2 n (-13+n (48+n (-23+3 n))))]

ToString[(-165-282 n+972 (n^2)-730 (n^3)+280 (n^4)-68 (n^5)+8 (n^6)-5 (((-1))^n) (-33-26 n+96 (n^2)-46 (n^3)+6 (n^4)))/240,InputForm]

Table[(-165-282 n+972 (n^2)-730 (n^3)+280 (n^4)-68 (n^5)+8 (n^6)-5 (((-1))^n) (-33-26 n+96 (n^2)-46 (n^3)+6 (n^4)))/240,{n,20}]

gf=(x^4)FindGeneratingFunction[Drop[seq,3],x]

..wrong...

bug(333165)

StringReplace[ToString[gf,InputForm]," "->""]

CoefficientList[Series[,{x,0,20}],x]

Perfect

Table[GraphData[{"BlackBishop",{n,n}},"Perfect"],{n,10}]

ProjectivePlaneCrossingNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"ProjectivePlaneCrossingNumber"],{n,10}]

Radius

seq=Table[GraphData[{"BlackBishop",{n,n}},"Radius"],{n,10}]

RankPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"RankPolynomial"][x,y],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

RectilinearCrossingNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"RectilinearCrossingNumber"],{n,10}]

ReliabilityPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"ReliabilityPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

SigmaPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"SigmaPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

SpanningTreeCount

seq=Table[GraphData[{"BlackBishop",{n,n}},"SpanningTreeCount"],{n,10}]

FindSequenceFunction[Take[seq,7],n]

FindGeneratingFunction[Take[seq,7],x]

SquareCount

A289162

seq=Table[GraphData[{"BlackBishop",{n,n}},"SquareCount"],{n,10}]

(seq=Monitor[Table[CycleCount[BlackBishopGraph[n,n],4],{n,40}],n])//Timing

coef=FindLinearRecurrence[seq]

Take[seq,Length[coef]]

LinearRecurrence[{2,3,-8,-2,12,-2,-8,3,2,-1},{0,0,0,6,39,106,321,644,1402,2412},20]

"a(n)="<>StringReplace[StringJoin@@Table[If[coef[[k]]==0,"",Switch[
coef[[k]],
-1,"-",
1,"+",
_,ToString[coef[[k]]]<>"*"]<>"a(n-"<>ToString[k]<>")+"],{k,Length[coef]}],"+-"->"-"]

FindSequenceFunction[seq,n]//FullSimplify

Factor[(1+n (-7+2 n))]

Table[(n-1) (15-193 n+162 (n^2)-68 (n^3)+12 (n^4)-15 (((-1))^n) (2(n^2)-7n+1))/240,{n,20}]

ToString[(n-1) (15-193 n+162 (n^2)-68 (n^3)+12 (n^4)-15 (((-1))^n) (2(n^2)-7n+1))/240,InputForm]

Drop[seq,3]

$Version

FindGeneratingFunction[{6,39,106,321,644,1402,2412,4382,6842,11097,16198,24311,33768,47908,64056,87084,112974},x]

Series[%,{x,0,5}]//N

...wrong...

bug(333165)

gf=(x^4)FindGeneratingFunction[Drop[seq,3],x]

StringReplace[ToString[gf,InputForm]," "->""]

CoefficientList[Series[,{x,0,20}],x]

StabilityIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"StabilityIndex"],{n,10}]

FindSequenceFunction[seq,n]

FindGeneratingFunction[seq,x]

TopologicalIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"TopologicalIndex"],{n,10}]

FindSequenceFunction[seq,n]

FindGeneratingFunction[seq,x]

ToroidalCrossingNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"ToroidalCrossingNumber"],{n,10}]

Traceable

Table[GraphData[{"BlackBishop",{n,n}},"Traceable"],{n,10}]

TriangleCount

A289161

seq=Table[GraphData[{"BlackBishop",{n,n}},"TriangleCount"],{n,10}]

(seq=Monitor[Table[CycleCount[BlackBishopGraph[n,n],3],{n,40}],n])//Timing

coef=FindLinearRecurrence[seq]

Take[seq,Length[coef]]

LinearRecurrence[{2,2,-6,0,6,-2,-2,1},{0,0,2,6,24,50,114,196},20]

"a(n)="<>StringReplace[StringJoin@@Table[If[coef[[k]]==0,"",Switch[
coef[[k]],
-1,"-",
1,"+",
_,ToString[coef[[k]]]<>"*"]<>"a(n-"<>ToString[k]<>")+"],{k,Length[coef]}],"+-"->"-"]

FindSequenceFunction[seq,n]//FullSimplify

Factor[(3+2 (-2+n) n)]

Table[(((n-1))^2) (2 (n^2)-4n+3-3(((-1))^n) )/24,{n,20}]

gf=(x^3)FindGeneratingFunction[Drop[seq,2],x]

StringReplace[ToString[gf,InputForm]," "->""]

CoefficientList[Series[-((2 (x^2) (1+x+4 (x^2)+(x^3)+(x^4)))/((((-1+x))^5) (((1+x))^3))),{x,0,20}],x]

TuttePolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"TuttePolynomial"][x,y],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

Untraceable

Table[GraphData[{"BlackBishop",{n,n}},"Untraceable"],{n,10}]

VertexConnectivity

Table[GraphData[{"BlackBishop",{n,n}},"VertexConnectivity"],{n,10}]

VertexCount

A000982

seq=Table[GraphData[{"BlackBishop",{n,n}},"VertexCount"],{n,10}]

FindSequenceFunction[seq,n]//FullSimplify

Table[(1/4) (((-1))^n) (-1+(((-1))^n) (1+2 (n^2))),{n,20}]

Table[(1+2 (n^2)-(((-1))^n) )/4,{n,20}]

Table[Ceiling[n^2/2],{n,20}]

VertexCoverNumber

Related to but not the same as IndependenceNumber

seq=Table[GraphData[{"BlackBishop",{n,n}},"VertexCoverNumber"],{n,10}]

FindSequenceFunction[seq,n]//FullSimplify

gf=x FindGeneratingFunction[seq,x]

FullSimplify[SeriesCoefficient[gf,{x,0,n}],n>0]

Table[3 (2^(-3+n)),{n,10}]

VertexCoverPolynomial

(poly=Factor@Table[GraphData[{"BlackBishop",{n,n}},"VertexCoverPolynomial"][x],{n,k0=1,kmax=10}])//Column

coef=Factor/@FindLinearRecurrence[poly]

ToPolynomialRecurrence[p,x,n,coef]

FormattedPolynomialRecurrence[p,x,n,coef]//TraditionalForm

TeXForm[%]

LinearRecurrence[coef,poly,{2-k0,Length[coef]-k0+1}]

FullSimplify[RSolve[Prepend[Table[p[k+k0-1,x]==poly[[k]],{k,Length[coef]}],ToPolynomialRecurrence[p,x,n,coef]],p[n,x],n],n∈Integers&&n>0]

gf=Factor[(z^k0)FindGeneratingFunction[poly,z]]

FullSimplify[SeriesCoefficient[gf,{z,0,n}],n>0]

poly2=Table[XXX,{n,k0,kmax}]

FullSimplify[poly2-poly]

VertexDegrees

seq=Table[GraphData[{"BlackBishop",{n,n}},"VertexDegrees"],{n,10}]

VertexTransitive

Table[GraphData[{"BlackBishop",{n,n}},"VertexTransitive"],{n,10}]

WienerIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"WienerIndex"],{n,10}]

(seq=Table[WienerIndex[BlackBishopGraph[n,n]],{n,20}])//Timing

FindSequenceFunction[seq,n]

coef=FindLinearRecurrence[seq]

Take[seq,Length@coef]

LinearRecurrence[{2,2,-6,0,6,-2,-2,1},{0,1,14,42,124,251,506,852},40]

gf=x FindGeneratingFunction[seq,x]

CoefficientList[Series[((x (-1-12 x-12 (x^2)-18 (x^3)-3 (x^4)-2 (x^5)))/((((-1+x))^5) (((1+x))^3))),{x,0,20}],x]

FullSimplify[SeriesCoefficient[gf,{x,0,n}],n>0]

Factor[{3-10 n+6 (n^2)-8 (n^3)+6 (n^4),(1+2 (-1+n) n)}]

Table[(3-10 n+6 (n^2)-8 (n^3)+6 (n^4)-3 (((-1))^n) (1-2 n+2 (n^2)))/24,{n,20}]

WienerSumIndex

seq=Table[GraphData[{"BlackBishop",{n,n}},"WienerSumIndex"],{n,10}]

FindSequenceFunction[seq,n]

White vs Black

{BlackBishopGraph[3,5],WhiteBishopGraph[3,5]}

{BlackBishopGraph[3,4],WhiteBishopGraph[3,4]}

{BlackBishopGraph[4,6],WhiteBishopGraph[4,6]}

Generalization

From Stan Wagon, Dec. 5, 2018

I was looking at a certain graph today and I made some errors in defining it. But here it is:

Consider all subsets of [n+k]  (1 through n+k) of size n-1. An edge connects two if the two sets agree as vectors in exactly one position. So {1,2,3,7} and {2, 4, 6, 7} form an edge. These are SETS, so all tuples are in sorted order. 

The number of vertices is Binomial[n+k, n-1]. 

Consider the special case that n=3. So we are looking at pairs from [n+k].

Surprise: In this case, n = 3, the subset graph as defined above equals the BlackBishop[n+k-1, n+k] graph.  Well, that is the BlackBishop[k+2,k+3]. 

I suppose it is trivial, but it came as a surprise to me.  And we now have a generalization of the bishop graph.

SinglePositionMatchingSubsetsGraph[n_,k_]:=Module[{v=Developer`ToPackedArray[Subsets[Range[n+k],{n-1}]],e,sub},
sub=Developer`ToPackedArray[Subsets[v,{2}]];
e=Pick[sub,Total[Boole[Equal@@@Transpose[#]]]&/@sub,1];
System`Graph[v,UndirectedEdge@@@e]
]

Flatten[Table[{{n,k},RecognizeGraph@SinglePositionMatchingSubsetsGraph[n,k]},{n,5},{k,5}],1]

DeleteCases[%,{_,{}}]

Embeddings

<<MathWorld`Graphs`

{"BlackBishop", {1, 1}} == "SingletonGraph"

Names

GraphData[{"BlackBishop",{1,1}},"StandardName"]

GraphData[{"BlackBishop",{1,1}},"StandardNames"]

{"BlackBishop", {2, 2}} == {"Path", 2}

Names

GraphData[{"BlackBishop",{2,2}},"StandardName"]

GraphData[{"BlackBishop",{2,2}},"StandardNames"]

{"BlackBishop", {3, 3}} == "ButterflyGraph"

Names

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

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

{"BlackBishop", {4, 4}}

Names

GraphData[{"BlackBishop",{4,4}},"StandardName"]

GraphData[{"BlackBishop",{4,4}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{4,4}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{4,4}},"Edges"]

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

RecognizeGraph[g]

h=Mean[{v[[4,2]],v[[5,2]]}]//FullSimplify

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

Graph3D[GraphData[{"BlackBishop",{4,4}},"Edges"]]

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

RecognizeGraph@g

Degenerate

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

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

Bilateral

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

Circular

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

Circular construction

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

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

bilat

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

Planar

GraphData[{"BlackBishop",{4,4}},"Planar"]

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

MinimalCrossing

GraphData[{"BlackBishop",{4,4}},{"RCN","CN"}]

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

MinimalCrossing construction

MinimalCrossingGraph[GraphData[{"BlackBishop",{4,4}}]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{4,4}},"Circulant"]

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

Halin

GraphData[{"BlackBishop",{4,4}},"Halin"]

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

Rigid

GraphData[{"BlackBishop",{4,4}},"Rigid"]

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

Flexible

GraphData[{"BlackBishop",{4,4}},"Flexible"]

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

LCF

GraphData[{"BlackBishop",{4,4}},"LCF"]

GraphData[{"BlackBishop",{4,4}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{4,4}},"LCFSignature"]

GraphData[{"BlackBishop",{4,4}},"LCFNotations"]

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

UnitDistance

GraphData[{"BlackBishop",{4,4}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"BlackBishop",{4,4}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"BlackBishop",{4,4}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"BlackBishop",{4,4}},"Polyhedral"]

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

{"BlackBishop", {4, 5}}

Names

GraphData[{"BlackBishop",{4,5}},"StandardName"]

GraphData[{"BlackBishop",{4,5}},"StandardNames"]

Primary

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

Configuration

GraphData[{"BlackBishop",{4,5}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

ConfigurationDiagram[config,.4]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

All

GraphData[{"BlackBishop",{4,5}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{4,5}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{4,5}},"Edges"]

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

RecognizeGraph[g]

GraphPlot[GraphData["DesarguesConfigurationGraph","Edges"],GraphLayout->"SpringEmbedding"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{4,5}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{4,5}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{4,5}},"Graph","Perspective"]//StyleGraphs

Bilateral

GraphData[{"BlackBishop",{4,5}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{4,5}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{4,5}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{4,5}}],#]&/@hc

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

gs=bilat

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

Planar

GraphData[{"BlackBishop",{4,5}},"Planar"]

GraphData[{"BlackBishop",{4,5}},"Graph","Planar"]//StyleGraphs

Tutte embeddings

faces=ReverseSort@SymmetricallyDistinctFaces[GraphData[{"BlackBishop",{4,5}}]]

Tally[ReverseSort[Length/@faces]]

IGLayoutTutte[GraphData[{"BlackBishop",{4,5}}],"OuterFace"->#]&/@faces

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

RecognizeGraph/@gs

Tutte embedding construction 4 #1

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Tutte embedding construction 4 #2

GraphPlot[RotateGraph[]]

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

RecognizeGraph[g]

Circulant

GraphData[{"BlackBishop",{4,5}},"Circulant"]

GraphData[{"BlackBishop",{4,5}},"Graph","Circulant"]//StyleGraphs

Complement graph

GraphData[{"BlackBishop",{4,5}},"ComplementGraph","Name"]

Line graph

GraphData[{"BlackBishop",{4,5}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{4,5}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{4,5}}&]

RootGraph[GraphData[{"BlackBishop",{4,5}}]]

GraphData[{"HighlyIrregular",{8,2}},"Graph","All"]

LineGraph/@%

DegenerateGraphEmbeddingTypes/@%

Halin

GraphData[{"BlackBishop",{4,5}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{4,5}},"Rigid"]

GraphData[{"BlackBishop",{4,5}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{4,5}},"Flexible"]

GraphData[{"BlackBishop",{4,5}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{4,5}},"LCFSignature"]

GraphData[{"BlackBishop",{4,5}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"BlackBishop",{4,5}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{4,5}}],Debug->True]//Timing

GraphData[{"BlackBishop",{4,5}},"Graph","UnitDistance"]//StyleGraphs

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

g=RotateGraph[,-Pi/2]

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

Matchstick

GraphData[{"BlackBishop",{4,5}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{4,5}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

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

Graphics3D[{FaceForm[Green,Red],GraphData[{"BlackBishop",{4,5}},"Polyhedron"]}]

3D Canonical

GraphData[{"BlackBishop",{4,5}},"Graph",{"3D","Canonical"}]

Graphics3D[{Opacity[.5],Red,GraphData[{"BlackBishop",{4,5}},"Polyhedron"],Yellow,Sphere[]}]

3D Canonical construction

Graphics3D[{FaceForm[Green,Red],poly=GraphPolyhedron[GraphData[{"BlackBishop",{4,5}}],-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]

{"BlackBishop", {4, 6}}

GraphData[{"BlackBishop",{4,6}},"StandardName"]

Primary

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

All

GraphData[{"BlackBishop",{4,6}},"Graph","All"]//StyleGraphs

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{4,6}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{4,6}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{4,6}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{4,6}},"Graph","Degenerate"]

Bilateral

GraphData[{"BlackBishop",{4,6}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{4,6}},"Graph","Circular"]//StyleGraphs

Circular construction

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{4,6}}],All][[All,All,1]]]

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

bilat

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

Planar

GraphData[{"BlackBishop",{4,6}},"Planar"]

GraphData[{"BlackBishop",{4,6}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{4,6}},{"RCN","CN"}]

GraphData[{"BlackBishop",{4,6}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

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

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

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{4,6}},"Circulant"]

GraphData[{"BlackBishop",{4,6}},"Graph","Circulant"]//StyleGraphs

Halin

GraphData[{"BlackBishop",{4,6}},"Halin"]

GraphData[{"BlackBishop",{4,6}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{4,6}},"Rigid"]

GraphData[{"BlackBishop",{4,6}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{4,6}},"Flexible"]

GraphData[{"BlackBishop",{4,6}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{4,6}},"LCF"]

GraphData[{"BlackBishop",{4,6}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{4,6}},"LCFSignature"]

GraphData[{"BlackBishop",{4,6}},"LCFNotations"]

GraphData[{"BlackBishop",{4,6}},"Graph","LCF"]//StyleGraphs

UnitDistance

GraphData[{"BlackBishop",{4,6}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{4,6}}],Debug->True]//Timing

GraphData[{"BlackBishop",{4,6}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"BlackBishop",{4,6}},"Matchstick"]

GraphData[{"BlackBishop",{4,6}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{4,6}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"BlackBishop",{4,6}},"Polyhedral"]

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

{"BlackBishop", {4, 8}}

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

Primary

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

All

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

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Bilateral

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

Circular

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

Circular construction

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

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

gs=bilat

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

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

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

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

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

UnitDistance

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"BlackBishop", {4, 9}}

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

All

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

LCF

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

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

UnitDistance

UnitDistanceGraphQ[GraphData[{"BlackBishop",{4,9}}],Debug->True]

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

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

Select[UnitDistanceEmbeddingRefine/@Complement@@(GraphData[{"BlackBishop",{4,9}},"Graph",#]&/@{"All","UnitDistance"}),UnitDistanceGraphEmbeddingQ]

l=FindSubgraphIsomorphism[GraphData[{"BlackBishop",{4,9}}],"Results"->All]//Timing

gs=UniqueEmbeddings[l]

MinimalCrossing

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

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

3D

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

Default embedding

GraphData[{"BlackBishop",{4,9}},"V"]

g=GraphPlot@GraphData[{"BlackBishop",{4,9}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphData[{"BlackBishop",{4,9}},"V"]

GraphPlot@MinimalCrossingGraph[GraphData[{"BlackBishop",{4,9}}],"CrossingNumber"->4]

GraphPlot@RotateGraph[HighlightGraph[GraphicsToGraph@,Range[18+1,18+4]],{2,4}]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"BlackBishop", {4, 10}}

GraphData[{"BlackBishop",{4,10}},"StandardName"]

All

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

LCF

GraphData[{"BlackBishop",{4,10}},"LCFSignature"]

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

UnitDistance

UnitDistanceGraphQ[GraphData[{"BlackBishop",{4,10}}],Debug->True]

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

MinimalCrossing

GraphData[{"BlackBishop",{4,10}},{"RCN","CN"}]

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

3D

Graph3D[GraphData[{"BlackBishop",{4,10}},"Edges"]]

Default embedding

GraphData[{"BlackBishop",{4,10}},"V"]

GraphPlot@GraphData[{"BlackBishop",{4,10}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphData[{"BlackBishop",{4,10}},"V"]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"BlackBishop",{4,10}}],VertexSize->{"Scaled",.01},"CrossingNumber"->5],Pi/2]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"BlackBishop", {5, 5}}

Names

GraphData[{"BlackBishop",{5,5}},"StandardName"]

GraphData[{"BlackBishop",{5,5}},"StandardNames"]

All

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

LCF

GraphData[{"BlackBishop",{5,5}},"LCFSignature"]

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

UnitDistance

UnitDistanceGraphQ[GraphData[{"BlackBishop",{5,5}}],Debug->True]

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

MinimalCrossing

GraphData[{"BlackBishop",{5,5}},{"RCN","CN"}]

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

3D

Graph3D[GraphData[{"BlackBishop",{5,5}},"Edges"]]

Default embedding

GraphData[{"BlackBishop",{5,5}},"V"]

GraphPlot@GraphData[{"BlackBishop",{5,5}},"Edges"]

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

RecognizeGraph[g]

MinimalCrossing Construction

GraphData[{"BlackBishop",{5,5}},{"V","M"}]

GraphPlot@RotateGraph[MinimalCrossingGraph[GraphData[{"BlackBishop",{5,5}}],"CrossingNumber"->5]]

GraphPlot@HighlightGraph[RotateGraph[GraphicsToGraph@,Pi/2],Range[13+1,13+5]]

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

{"BlackBishop", {6, 6}}

Names

GraphData[{"BlackBishop",{6,6}},"StandardName"]

GraphData[{"BlackBishop",{6,6}},"StandardNames"]

Primary

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

All

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

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{6,6}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{6,6}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Bilateral

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

Circular

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

Circular construction

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

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{6,6}},"Planar"]

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

MinimalCrossing

GraphData[{"BlackBishop",{6,6}},{"RCN","CN"}]

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

MinimalCrossing construction

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

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{6,6}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{6,6}},"Circulant"]

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

Halin

GraphData[{"BlackBishop",{6,6}},"Halin"]

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

Rigid

GraphData[{"BlackBishop",{6,6}},"Rigid"]

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

Flexible

GraphData[{"BlackBishop",{6,6}},"Flexible"]

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

LCF

GraphData[{"BlackBishop",{6,6}},"LCF"]

GraphData[{"BlackBishop",{6,6}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{6,6}},"LCFSignature"]

GraphData[{"BlackBishop",{6,6}},"LCFNotations"]

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

UnitDistance

GraphData[{"BlackBishop",{6,6}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

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

UnitDistance by FindUnitDistanceEmbedding

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

Matchstick

GraphData[{"BlackBishop",{6,6}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"BlackBishop",{6,6}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"BlackBishop",{6,6}},"Polyhedral"]

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

{"BlackBishop",{7,7}}

Names

GraphData[{"BlackBishop",{7,7}},"StandardName"]

GraphData[{"BlackBishop",{7,7}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"BlackBishop",{7,7}},"Configuration"]

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

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{7,7}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{7,7}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"BlackBishop",{7,7}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{7,7}},"Polyhedron"],{1,1,1}]

Bilateral

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

Circular

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

Circular construction

GraphData[{"BlackBishop",{7,7}},"Hamiltonian"]

GraphData[{"BlackBishop",{7,7}},"HamiltonianCycleCount"]

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

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

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{7,7}},"Planar"]

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

MinimalCrossing

GraphData[{"BlackBishop",{7,7}},{"RCN","CN"}]

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

MinimalCrossing construction

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

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

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

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

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

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{7,7}},"Circulant"]

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

Circulant construction

GraphData[{"BlackBishop",{7,7}},"NotationRules","Circulant"]

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{7,7}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{7,7}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{7,7}}]]//Timing

RootGraph

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

RootGraph[GraphData[{"BlackBishop",{7,7}}]]

Halin

GraphData[{"BlackBishop",{7,7}},"Halin"]

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

Rigid

GraphData[{"BlackBishop",{7,7}},"Rigid"]

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

Flexible

GraphData[{"BlackBishop",{7,7}},"Flexible"]

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

LCF

GraphData[{"BlackBishop",{7,7}},"LCF"]

GraphData[{"BlackBishop",{7,7}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{7,7}},"LCFSignature"]

GraphData[{"BlackBishop",{7,7}},"LCFNotations"]

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

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{7,7}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{7,7}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{7,7}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{7,7}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{7,7}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{7,7}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{7,7}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{7,7}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{7,7}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"BlackBishop",{7,7}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"BlackBishop",{7,7}},"Polyhedral"]

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

{"BlackBishop",{8,8}}

Names

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

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

Primary

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

All

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

Configuration

GraphData[{"BlackBishop",{8,8}},"Configuration"]

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

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

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

Default embedding

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

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

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

Perspective construction

GraphData[{"BlackBishop",{8,8}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{8,8}},"Polyhedron"],{1,1,1}]

Bilateral

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

Circular

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

Circular construction

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

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{8,8}}],#]&/@hc

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

gs=bilat

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

quad

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

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

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

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

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

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

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

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Circulant construction

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

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{8,8}},"ComplementGraph","Name"]

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

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{8,8}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{8,8}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{8,8}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{8,8}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{8,8}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{8,8}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{8,8}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"BlackBishop",{9,9}}

Names

GraphData[{"BlackBishop",{9,9}},"StandardName"]

GraphData[{"BlackBishop",{9,9}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"BlackBishop",{9,9}},"Configuration"]

GraphData[{"BlackBishop",{9,9}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{9,9}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{9,9}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

GraphData[{"BlackBishop",{9,9}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{9,9}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{9,9}},"Polyhedron"],{1,1,1}]

Bilateral

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

Circular

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

Circular construction

GraphData[{"BlackBishop",{9,9}},"Hamiltonian"]

GraphData[{"BlackBishop",{9,9}},"HamiltonianCycleCount"]

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{9,9}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{9,9}},"Planar"]

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

MinimalCrossing

GraphData[{"BlackBishop",{9,9}},{"RCN","CN"}]

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

MinimalCrossing construction

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

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

(cn=CrossingNumber[GraphData[{"BlackBishop",{9,9}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{9,9}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{9,9}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{9,9}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

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

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{9,9}},"Circulant"]

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

Circulant construction

GraphData[{"BlackBishop",{9,9}},"NotationRules","Circulant"]

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{9,9}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{9,9}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{9,9}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{9,9}}&]

RootGraph[GraphData[{"BlackBishop",{9,9}}]]

Halin

GraphData[{"BlackBishop",{9,9}},"Halin"]

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

Rigid

GraphData[{"BlackBishop",{9,9}},"Rigid"]

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

Flexible

GraphData[{"BlackBishop",{9,9}},"Flexible"]

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

LCF

GraphData[{"BlackBishop",{9,9}},"LCF"]

GraphData[{"BlackBishop",{9,9}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{9,9}},"LCFSignature"]

GraphData[{"BlackBishop",{9,9}},"LCFNotations"]

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

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{9,9}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{9,9}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{9,9}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{9,9}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{9,9}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{9,9}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{9,9}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{9,9}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{9,9}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"BlackBishop",{9,9}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"BlackBishop",{9,9}},"Polyhedral"]

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

{"BlackBishop",{10,10}}

Names

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

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

Primary

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

All

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

Configuration

GraphData[{"BlackBishop",{10,10}},"Configuration"]

GraphData[{"BlackBishop",{10,10}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{10,10}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{10,10}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

GraphData[{"BlackBishop",{10,10}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{10,10}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,10}},"Polyhedron"],{1,1,1}]

Bilateral

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

Circular

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

Circular construction

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

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

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

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{10,10}}],#]&/@hc

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

gs=bilat

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

quad

Planar

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

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

MinimalCrossing

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

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,10}}],TimeConstraint->1])//AbsoluteTiming

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

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,10}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,10}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,10}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{10,10}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{10,10}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

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

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

Circulant construction

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

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{10,10}},"ComplementGraph","Name"]

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

Line graph

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

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

RootGraph

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

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

Halin

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

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

Rigid

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

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

Flexible

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

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

LCF

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

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

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

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

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

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{10,10}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{10,10}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{10,10}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{10,10}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{10,10}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{10,10}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{10,10}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

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

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

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

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

3D default

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

3D All

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

3D UnitDistance

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

3D Polyhedron

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

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

{"BlackBishop",{10,11}}

Names

GraphData[{"BlackBishop",{10,11}},"StandardName"]

GraphData[{"BlackBishop",{10,11}},"StandardNames"]

Primary

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

All

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

Configuration

GraphData[{"BlackBishop",{10,11}},"Configuration"]

GraphData[{"BlackBishop",{10,11}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{10,11}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{10,11}},"Edges"]

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

RecognizeGraph[g]

Degenerate

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

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

Perspective

GraphData[{"BlackBishop",{10,11}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{10,11}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{10,11}},"Polyhedron"],{1,1,1}]

Bilateral

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

Circular

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

Circular construction

GraphData[{"BlackBishop",{10,11}},"Hamiltonian"]

GraphData[{"BlackBishop",{10,11}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{10,11}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{10,11}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{10,11}},"Planar"]

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

MinimalCrossing

GraphData[{"BlackBishop",{10,11}},{"RCN","CN"}]

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

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,11}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,11}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,11}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,11}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{10,11}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{10,11}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{10,11}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{10,11}},"Circulant"]

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

Circulant construction

GraphData[{"BlackBishop",{10,11}},"NotationRules","Circulant"]

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

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{10,11}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{10,11}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{10,11}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{10,11}}&]

RootGraph[GraphData[{"BlackBishop",{10,11}}]]

Halin

GraphData[{"BlackBishop",{10,11}},"Halin"]

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

Rigid

GraphData[{"BlackBishop",{10,11}},"Rigid"]

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

Flexible

GraphData[{"BlackBishop",{10,11}},"Flexible"]

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

LCF

GraphData[{"BlackBishop",{10,11}},"LCF"]

GraphData[{"BlackBishop",{10,11}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{10,11}},"LCFSignature"]

GraphData[{"BlackBishop",{10,11}},"LCFNotations"]

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

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{10,11}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{10,11}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{10,11}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{10,11}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{10,11}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{10,11}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{10,11}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{10,11}},"UnitDistance"]

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

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

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

UnitDistance by refinement

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

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{10,11}},"Matchstick"]

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

3D default

Graph3D[GraphData[{"BlackBishop",{10,11}},"Edges"]]

3D All

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

3D UnitDistance

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

3D Polyhedron

GraphData[{"BlackBishop",{10,11}},"Polyhedral"]

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

{"BlackBishop",{11,11}}

Names

GraphData[{"BlackBishop",{11,11}},"StandardName"]

GraphData[{"BlackBishop",{11,11}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{11,11}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{11,11}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{11,11}},"Configuration"]

GraphData[{"BlackBishop",{11,11}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{11,11}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{11,11}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{11,11}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{11,11}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{11,11}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{11,11}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,11}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{11,11}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{11,11}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{11,11}},"Hamiltonian"]

GraphData[{"BlackBishop",{11,11}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{11,11}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{11,11}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{11,11}},"Planar"]

GraphData[{"BlackBishop",{11,11}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{11,11}},{"RCN","CN"}]

GraphData[{"BlackBishop",{11,11}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,11}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,11}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,11}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,11}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,11}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{11,11}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{11,11}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{11,11}},"Circulant"]

GraphData[{"BlackBishop",{11,11}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{11,11}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{11,11}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{11,11}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{11,11}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{11,11}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{11,11}}&]

RootGraph[GraphData[{"BlackBishop",{11,11}}]]

Halin

GraphData[{"BlackBishop",{11,11}},"Halin"]

GraphData[{"BlackBishop",{11,11}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{11,11}},"Rigid"]

GraphData[{"BlackBishop",{11,11}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{11,11}},"Flexible"]

GraphData[{"BlackBishop",{11,11}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{11,11}},"LCF"]

GraphData[{"BlackBishop",{11,11}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{11,11}},"LCFSignature"]

GraphData[{"BlackBishop",{11,11}},"LCFNotations"]

GraphData[{"BlackBishop",{11,11}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{11,11}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{11,11}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{11,11}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{11,11}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{11,11}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{11,11}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{11,11}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{11,11}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{11,11}}],Debug->True]//Timing

GraphData[{"BlackBishop",{11,11}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{11,11}},"VertexList"],GraphData[{"BlackBishop",{11,11}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{11,11}},"Matchstick"]

GraphData[{"BlackBishop",{11,11}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{11,11}},"Edges"]]

3D All

GraphData[{"BlackBishop",{11,11}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{11,11}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{11,11}},"Polyhedral"]

GraphData[{"BlackBishop",{11,11}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{11,12}}

Names

GraphData[{"BlackBishop",{11,12}},"StandardName"]

GraphData[{"BlackBishop",{11,12}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{11,12}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{11,12}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{11,12}},"Configuration"]

GraphData[{"BlackBishop",{11,12}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{11,12}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{11,12}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{11,12}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{11,12}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{11,12}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{11,12}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{11,12}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{11,12}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{11,12}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{11,12}},"Hamiltonian"]

GraphData[{"BlackBishop",{11,12}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{11,12}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{11,12}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{11,12}},"Planar"]

GraphData[{"BlackBishop",{11,12}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{11,12}},{"RCN","CN"}]

GraphData[{"BlackBishop",{11,12}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,12}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,12}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,12}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,12}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{11,12}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{11,12}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{11,12}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{11,12}},"Circulant"]

GraphData[{"BlackBishop",{11,12}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{11,12}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{11,12}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{11,12}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{11,12}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{11,12}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{11,12}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{11,12}}&]

RootGraph[GraphData[{"BlackBishop",{11,12}}]]

Halin

GraphData[{"BlackBishop",{11,12}},"Halin"]

GraphData[{"BlackBishop",{11,12}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{11,12}},"Rigid"]

GraphData[{"BlackBishop",{11,12}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{11,12}},"Flexible"]

GraphData[{"BlackBishop",{11,12}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{11,12}},"LCF"]

GraphData[{"BlackBishop",{11,12}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{11,12}},"LCFSignature"]

GraphData[{"BlackBishop",{11,12}},"LCFNotations"]

GraphData[{"BlackBishop",{11,12}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{11,12}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{11,12}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{11,12}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{11,12}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{11,12}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{11,12}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{11,12}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{11,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{11,12}}],Debug->True]//Timing

GraphData[{"BlackBishop",{11,12}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{11,12}},"VertexList"],GraphData[{"BlackBishop",{11,12}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{11,12}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{11,12}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{11,12}},"Matchstick"]

GraphData[{"BlackBishop",{11,12}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{11,12}},"Edges"]]

3D All

GraphData[{"BlackBishop",{11,12}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{11,12}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{11,12}},"Polyhedral"]

GraphData[{"BlackBishop",{11,12}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{12,12}}

Names

GraphData[{"BlackBishop",{12,12}},"StandardName"]

GraphData[{"BlackBishop",{12,12}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{12,12}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{12,12}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{12,12}},"Configuration"]

GraphData[{"BlackBishop",{12,12}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{12,12}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{12,12}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{12,12}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{12,12}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{12,12}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{12,12}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,12}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{12,12}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{12,12}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{12,12}},"Hamiltonian"]

GraphData[{"BlackBishop",{12,12}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{12,12}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{12,12}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{12,12}},"Planar"]

GraphData[{"BlackBishop",{12,12}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{12,12}},{"RCN","CN"}]

GraphData[{"BlackBishop",{12,12}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,12}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,12}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,12}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,12}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,12}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{12,12}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{12,12}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{12,12}},"Circulant"]

GraphData[{"BlackBishop",{12,12}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{12,12}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{12,12}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{12,12}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{12,12}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{12,12}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{12,12}}&]

RootGraph[GraphData[{"BlackBishop",{12,12}}]]

Halin

GraphData[{"BlackBishop",{12,12}},"Halin"]

GraphData[{"BlackBishop",{12,12}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{12,12}},"Rigid"]

GraphData[{"BlackBishop",{12,12}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{12,12}},"Flexible"]

GraphData[{"BlackBishop",{12,12}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{12,12}},"LCF"]

GraphData[{"BlackBishop",{12,12}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{12,12}},"LCFSignature"]

GraphData[{"BlackBishop",{12,12}},"LCFNotations"]

GraphData[{"BlackBishop",{12,12}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{12,12}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{12,12}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{12,12}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{12,12}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{12,12}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{12,12}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{12,12}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{12,12}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{12,12}}],Debug->True]//Timing

GraphData[{"BlackBishop",{12,12}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{12,12}},"VertexList"],GraphData[{"BlackBishop",{12,12}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{12,12}},"Matchstick"]

GraphData[{"BlackBishop",{12,12}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{12,12}},"Edges"]]

3D All

GraphData[{"BlackBishop",{12,12}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{12,12}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{12,12}},"Polyhedral"]

GraphData[{"BlackBishop",{12,12}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{12,13}}

Names

GraphData[{"BlackBishop",{12,13}},"StandardName"]

GraphData[{"BlackBishop",{12,13}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{12,13}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{12,13}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{12,13}},"Configuration"]

GraphData[{"BlackBishop",{12,13}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{12,13}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{12,13}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{12,13}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{12,13}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{12,13}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{12,13}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{12,13}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{12,13}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{12,13}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{12,13}},"Hamiltonian"]

GraphData[{"BlackBishop",{12,13}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{12,13}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{12,13}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{12,13}},"Planar"]

GraphData[{"BlackBishop",{12,13}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{12,13}},{"RCN","CN"}]

GraphData[{"BlackBishop",{12,13}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,13}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,13}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,13}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,13}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{12,13}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{12,13}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{12,13}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{12,13}},"Circulant"]

GraphData[{"BlackBishop",{12,13}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{12,13}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{12,13}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{12,13}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{12,13}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{12,13}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{12,13}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{12,13}}&]

RootGraph[GraphData[{"BlackBishop",{12,13}}]]

Halin

GraphData[{"BlackBishop",{12,13}},"Halin"]

GraphData[{"BlackBishop",{12,13}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{12,13}},"Rigid"]

GraphData[{"BlackBishop",{12,13}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{12,13}},"Flexible"]

GraphData[{"BlackBishop",{12,13}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{12,13}},"LCF"]

GraphData[{"BlackBishop",{12,13}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{12,13}},"LCFSignature"]

GraphData[{"BlackBishop",{12,13}},"LCFNotations"]

GraphData[{"BlackBishop",{12,13}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{12,13}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{12,13}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{12,13}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{12,13}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{12,13}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{12,13}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{12,13}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{12,13}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{12,13}}],Debug->True]//Timing

GraphData[{"BlackBishop",{12,13}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{12,13}},"VertexList"],GraphData[{"BlackBishop",{12,13}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{12,13}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{12,13}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{12,13}},"Matchstick"]

GraphData[{"BlackBishop",{12,13}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{12,13}},"Edges"]]

3D All

GraphData[{"BlackBishop",{12,13}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{12,13}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{12,13}},"Polyhedral"]

GraphData[{"BlackBishop",{12,13}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{13,13}}

Names

GraphData[{"BlackBishop",{13,13}},"StandardName"]

GraphData[{"BlackBishop",{13,13}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{13,13}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{13,13}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{13,13}},"Configuration"]

GraphData[{"BlackBishop",{13,13}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{13,13}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{13,13}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{13,13}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{13,13}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{13,13}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{13,13}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,13}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{13,13}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{13,13}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{13,13}},"Hamiltonian"]

GraphData[{"BlackBishop",{13,13}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{13,13}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{13,13}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{13,13}},"Planar"]

GraphData[{"BlackBishop",{13,13}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{13,13}},{"RCN","CN"}]

GraphData[{"BlackBishop",{13,13}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,13}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,13}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,13}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,13}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,13}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{13,13}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{13,13}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{13,13}},"Circulant"]

GraphData[{"BlackBishop",{13,13}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{13,13}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{13,13}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{13,13}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{13,13}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{13,13}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{13,13}}&]

RootGraph[GraphData[{"BlackBishop",{13,13}}]]

Halin

GraphData[{"BlackBishop",{13,13}},"Halin"]

GraphData[{"BlackBishop",{13,13}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{13,13}},"Rigid"]

GraphData[{"BlackBishop",{13,13}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{13,13}},"Flexible"]

GraphData[{"BlackBishop",{13,13}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{13,13}},"LCF"]

GraphData[{"BlackBishop",{13,13}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{13,13}},"LCFSignature"]

GraphData[{"BlackBishop",{13,13}},"LCFNotations"]

GraphData[{"BlackBishop",{13,13}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{13,13}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{13,13}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{13,13}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{13,13}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{13,13}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{13,13}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{13,13}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{13,13}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{13,13}}],Debug->True]//Timing

GraphData[{"BlackBishop",{13,13}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{13,13}},"VertexList"],GraphData[{"BlackBishop",{13,13}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{13,13}},"Matchstick"]

GraphData[{"BlackBishop",{13,13}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{13,13}},"Edges"]]

3D All

GraphData[{"BlackBishop",{13,13}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{13,13}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{13,13}},"Polyhedral"]

GraphData[{"BlackBishop",{13,13}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{13,14}}

Names

GraphData[{"BlackBishop",{13,14}},"StandardName"]

GraphData[{"BlackBishop",{13,14}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{13,14}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{13,14}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{13,14}},"Configuration"]

GraphData[{"BlackBishop",{13,14}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{13,14}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{13,14}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{13,14}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{13,14}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{13,14}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{13,14}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{13,14}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{13,14}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{13,14}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{13,14}},"Hamiltonian"]

GraphData[{"BlackBishop",{13,14}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{13,14}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{13,14}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{13,14}},"Planar"]

GraphData[{"BlackBishop",{13,14}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{13,14}},{"RCN","CN"}]

GraphData[{"BlackBishop",{13,14}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,14}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,14}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,14}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,14}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{13,14}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{13,14}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{13,14}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{13,14}},"Circulant"]

GraphData[{"BlackBishop",{13,14}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{13,14}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{13,14}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{13,14}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{13,14}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{13,14}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{13,14}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{13,14}}&]

RootGraph[GraphData[{"BlackBishop",{13,14}}]]

Halin

GraphData[{"BlackBishop",{13,14}},"Halin"]

GraphData[{"BlackBishop",{13,14}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{13,14}},"Rigid"]

GraphData[{"BlackBishop",{13,14}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{13,14}},"Flexible"]

GraphData[{"BlackBishop",{13,14}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{13,14}},"LCF"]

GraphData[{"BlackBishop",{13,14}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{13,14}},"LCFSignature"]

GraphData[{"BlackBishop",{13,14}},"LCFNotations"]

GraphData[{"BlackBishop",{13,14}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{13,14}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{13,14}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{13,14}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{13,14}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{13,14}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{13,14}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{13,14}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{13,14}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{13,14}}],Debug->True]//Timing

GraphData[{"BlackBishop",{13,14}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{13,14}},"VertexList"],GraphData[{"BlackBishop",{13,14}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{13,14}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{13,14}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{13,14}},"Matchstick"]

GraphData[{"BlackBishop",{13,14}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{13,14}},"Edges"]]

3D All

GraphData[{"BlackBishop",{13,14}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{13,14}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{13,14}},"Polyhedral"]

GraphData[{"BlackBishop",{13,14}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{14,14}}

Names

GraphData[{"BlackBishop",{14,14}},"StandardName"]

GraphData[{"BlackBishop",{14,14}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{14,14}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{14,14}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{14,14}},"Configuration"]

GraphData[{"BlackBishop",{14,14}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{14,14}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{14,14}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{14,14}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{14,14}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{14,14}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{14,14}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,14}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{14,14}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{14,14}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{14,14}},"Hamiltonian"]

GraphData[{"BlackBishop",{14,14}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{14,14}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{14,14}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{14,14}},"Planar"]

GraphData[{"BlackBishop",{14,14}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{14,14}},{"RCN","CN"}]

GraphData[{"BlackBishop",{14,14}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,14}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,14}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,14}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,14}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,14}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{14,14}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{14,14}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{14,14}},"Circulant"]

GraphData[{"BlackBishop",{14,14}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{14,14}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{14,14}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{14,14}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{14,14}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{14,14}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{14,14}}&]

RootGraph[GraphData[{"BlackBishop",{14,14}}]]

Halin

GraphData[{"BlackBishop",{14,14}},"Halin"]

GraphData[{"BlackBishop",{14,14}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{14,14}},"Rigid"]

GraphData[{"BlackBishop",{14,14}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{14,14}},"Flexible"]

GraphData[{"BlackBishop",{14,14}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{14,14}},"LCF"]

GraphData[{"BlackBishop",{14,14}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{14,14}},"LCFSignature"]

GraphData[{"BlackBishop",{14,14}},"LCFNotations"]

GraphData[{"BlackBishop",{14,14}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{14,14}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{14,14}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{14,14}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{14,14}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{14,14}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{14,14}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{14,14}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{14,14}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{14,14}}],Debug->True]//Timing

GraphData[{"BlackBishop",{14,14}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{14,14}},"VertexList"],GraphData[{"BlackBishop",{14,14}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{14,14}},"Matchstick"]

GraphData[{"BlackBishop",{14,14}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{14,14}},"Edges"]]

3D All

GraphData[{"BlackBishop",{14,14}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{14,14}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{14,14}},"Polyhedral"]

GraphData[{"BlackBishop",{14,14}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{14,15}}

Names

GraphData[{"BlackBishop",{14,15}},"StandardName"]

GraphData[{"BlackBishop",{14,15}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{14,15}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{14,15}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{14,15}},"Configuration"]

GraphData[{"BlackBishop",{14,15}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{14,15}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{14,15}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{14,15}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{14,15}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{14,15}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{14,15}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{14,15}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{14,15}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{14,15}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{14,15}},"Hamiltonian"]

GraphData[{"BlackBishop",{14,15}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{14,15}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{14,15}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{14,15}},"Planar"]

GraphData[{"BlackBishop",{14,15}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{14,15}},{"RCN","CN"}]

GraphData[{"BlackBishop",{14,15}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,15}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,15}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,15}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,15}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{14,15}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{14,15}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{14,15}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{14,15}},"Circulant"]

GraphData[{"BlackBishop",{14,15}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{14,15}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{14,15}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{14,15}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{14,15}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{14,15}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{14,15}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{14,15}}&]

RootGraph[GraphData[{"BlackBishop",{14,15}}]]

Halin

GraphData[{"BlackBishop",{14,15}},"Halin"]

GraphData[{"BlackBishop",{14,15}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{14,15}},"Rigid"]

GraphData[{"BlackBishop",{14,15}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{14,15}},"Flexible"]

GraphData[{"BlackBishop",{14,15}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{14,15}},"LCF"]

GraphData[{"BlackBishop",{14,15}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{14,15}},"LCFSignature"]

GraphData[{"BlackBishop",{14,15}},"LCFNotations"]

GraphData[{"BlackBishop",{14,15}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{14,15}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{14,15}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{14,15}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{14,15}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{14,15}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{14,15}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{14,15}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{14,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{14,15}}],Debug->True]//Timing

GraphData[{"BlackBishop",{14,15}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{14,15}},"VertexList"],GraphData[{"BlackBishop",{14,15}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{14,15}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{14,15}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{14,15}},"Matchstick"]

GraphData[{"BlackBishop",{14,15}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{14,15}},"Edges"]]

3D All

GraphData[{"BlackBishop",{14,15}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{14,15}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{14,15}},"Polyhedral"]

GraphData[{"BlackBishop",{14,15}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{15,15}}

Names

GraphData[{"BlackBishop",{15,15}},"StandardName"]

GraphData[{"BlackBishop",{15,15}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{15,15}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{15,15}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{15,15}},"Configuration"]

GraphData[{"BlackBishop",{15,15}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{15,15}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{15,15}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{15,15}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{15,15}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{15,15}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{15,15}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,15}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{15,15}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{15,15}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{15,15}},"Hamiltonian"]

GraphData[{"BlackBishop",{15,15}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{15,15}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{15,15}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{15,15}},"Planar"]

GraphData[{"BlackBishop",{15,15}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{15,15}},{"RCN","CN"}]

GraphData[{"BlackBishop",{15,15}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,15}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,15}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,15}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,15}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,15}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{15,15}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{15,15}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{15,15}},"Circulant"]

GraphData[{"BlackBishop",{15,15}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{15,15}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{15,15}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{15,15}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{15,15}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{15,15}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{15,15}}&]

RootGraph[GraphData[{"BlackBishop",{15,15}}]]

Halin

GraphData[{"BlackBishop",{15,15}},"Halin"]

GraphData[{"BlackBishop",{15,15}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{15,15}},"Rigid"]

GraphData[{"BlackBishop",{15,15}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{15,15}},"Flexible"]

GraphData[{"BlackBishop",{15,15}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{15,15}},"LCF"]

GraphData[{"BlackBishop",{15,15}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{15,15}},"LCFSignature"]

GraphData[{"BlackBishop",{15,15}},"LCFNotations"]

GraphData[{"BlackBishop",{15,15}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{15,15}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{15,15}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{15,15}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{15,15}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{15,15}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{15,15}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{15,15}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{15,15}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{15,15}}],Debug->True]//Timing

GraphData[{"BlackBishop",{15,15}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{15,15}},"VertexList"],GraphData[{"BlackBishop",{15,15}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{15,15}},"Matchstick"]

GraphData[{"BlackBishop",{15,15}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{15,15}},"Edges"]]

3D All

GraphData[{"BlackBishop",{15,15}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{15,15}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{15,15}},"Polyhedral"]

GraphData[{"BlackBishop",{15,15}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{15,16}}

Names

GraphData[{"BlackBishop",{15,16}},"StandardName"]

GraphData[{"BlackBishop",{15,16}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{15,16}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{15,16}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{15,16}},"Configuration"]

GraphData[{"BlackBishop",{15,16}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{15,16}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{15,16}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{15,16}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{15,16}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{15,16}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{15,16}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{15,16}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{15,16}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{15,16}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{15,16}},"Hamiltonian"]

GraphData[{"BlackBishop",{15,16}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{15,16}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{15,16}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{15,16}},"Planar"]

GraphData[{"BlackBishop",{15,16}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{15,16}},{"RCN","CN"}]

GraphData[{"BlackBishop",{15,16}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,16}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,16}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,16}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,16}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{15,16}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{15,16}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{15,16}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{15,16}},"Circulant"]

GraphData[{"BlackBishop",{15,16}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{15,16}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{15,16}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{15,16}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{15,16}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{15,16}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{15,16}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{15,16}}&]

RootGraph[GraphData[{"BlackBishop",{15,16}}]]

Halin

GraphData[{"BlackBishop",{15,16}},"Halin"]

GraphData[{"BlackBishop",{15,16}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{15,16}},"Rigid"]

GraphData[{"BlackBishop",{15,16}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{15,16}},"Flexible"]

GraphData[{"BlackBishop",{15,16}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{15,16}},"LCF"]

GraphData[{"BlackBishop",{15,16}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{15,16}},"LCFSignature"]

GraphData[{"BlackBishop",{15,16}},"LCFNotations"]

GraphData[{"BlackBishop",{15,16}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{15,16}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{15,16}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{15,16}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{15,16}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{15,16}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{15,16}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{15,16}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{15,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{15,16}}],Debug->True]//Timing

GraphData[{"BlackBishop",{15,16}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{15,16}},"VertexList"],GraphData[{"BlackBishop",{15,16}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{15,16}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{15,16}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{15,16}},"Matchstick"]

GraphData[{"BlackBishop",{15,16}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{15,16}},"Edges"]]

3D All

GraphData[{"BlackBishop",{15,16}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{15,16}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{15,16}},"Polyhedral"]

GraphData[{"BlackBishop",{15,16}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{16,16}}

Names

GraphData[{"BlackBishop",{16,16}},"StandardName"]

GraphData[{"BlackBishop",{16,16}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{16,16}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{16,16}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{16,16}},"Configuration"]

GraphData[{"BlackBishop",{16,16}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{16,16}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{16,16}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{16,16}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{16,16}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{16,16}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{16,16}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,16}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{16,16}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{16,16}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{16,16}},"Hamiltonian"]

GraphData[{"BlackBishop",{16,16}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{16,16}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{16,16}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{16,16}},"Planar"]

GraphData[{"BlackBishop",{16,16}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{16,16}},{"RCN","CN"}]

GraphData[{"BlackBishop",{16,16}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,16}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,16}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,16}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,16}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,16}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{16,16}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{16,16}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{16,16}},"Circulant"]

GraphData[{"BlackBishop",{16,16}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{16,16}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{16,16}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{16,16}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{16,16}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{16,16}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{16,16}}&]

RootGraph[GraphData[{"BlackBishop",{16,16}}]]

Halin

GraphData[{"BlackBishop",{16,16}},"Halin"]

GraphData[{"BlackBishop",{16,16}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{16,16}},"Rigid"]

GraphData[{"BlackBishop",{16,16}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{16,16}},"Flexible"]

GraphData[{"BlackBishop",{16,16}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{16,16}},"LCF"]

GraphData[{"BlackBishop",{16,16}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{16,16}},"LCFSignature"]

GraphData[{"BlackBishop",{16,16}},"LCFNotations"]

GraphData[{"BlackBishop",{16,16}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{16,16}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{16,16}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{16,16}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{16,16}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{16,16}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{16,16}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{16,16}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{16,16}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{16,16}}],Debug->True]//Timing

GraphData[{"BlackBishop",{16,16}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{16,16}},"VertexList"],GraphData[{"BlackBishop",{16,16}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{16,16}},"Matchstick"]

GraphData[{"BlackBishop",{16,16}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{16,16}},"Edges"]]

3D All

GraphData[{"BlackBishop",{16,16}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{16,16}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{16,16}},"Polyhedral"]

GraphData[{"BlackBishop",{16,16}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{16,17}}

Names

GraphData[{"BlackBishop",{16,17}},"StandardName"]

GraphData[{"BlackBishop",{16,17}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{16,17}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{16,17}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{16,17}},"Configuration"]

GraphData[{"BlackBishop",{16,17}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{16,17}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{16,17}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{16,17}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{16,17}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{16,17}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{16,17}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{16,17}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{16,17}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{16,17}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{16,17}},"Hamiltonian"]

GraphData[{"BlackBishop",{16,17}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{16,17}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{16,17}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{16,17}},"Planar"]

GraphData[{"BlackBishop",{16,17}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{16,17}},{"RCN","CN"}]

GraphData[{"BlackBishop",{16,17}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,17}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,17}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,17}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,17}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{16,17}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{16,17}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{16,17}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{16,17}},"Circulant"]

GraphData[{"BlackBishop",{16,17}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{16,17}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{16,17}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{16,17}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{16,17}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{16,17}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{16,17}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{16,17}}&]

RootGraph[GraphData[{"BlackBishop",{16,17}}]]

Halin

GraphData[{"BlackBishop",{16,17}},"Halin"]

GraphData[{"BlackBishop",{16,17}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{16,17}},"Rigid"]

GraphData[{"BlackBishop",{16,17}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{16,17}},"Flexible"]

GraphData[{"BlackBishop",{16,17}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{16,17}},"LCF"]

GraphData[{"BlackBishop",{16,17}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{16,17}},"LCFSignature"]

GraphData[{"BlackBishop",{16,17}},"LCFNotations"]

GraphData[{"BlackBishop",{16,17}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{16,17}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{16,17}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{16,17}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{16,17}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{16,17}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{16,17}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{16,17}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{16,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{16,17}}],Debug->True]//Timing

GraphData[{"BlackBishop",{16,17}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{16,17}},"VertexList"],GraphData[{"BlackBishop",{16,17}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{16,17}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{16,17}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{16,17}},"Matchstick"]

GraphData[{"BlackBishop",{16,17}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{16,17}},"Edges"]]

3D All

GraphData[{"BlackBishop",{16,17}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{16,17}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{16,17}},"Polyhedral"]

GraphData[{"BlackBishop",{16,17}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{17,17}}

Names

GraphData[{"BlackBishop",{17,17}},"StandardName"]

GraphData[{"BlackBishop",{17,17}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{17,17}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{17,17}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{17,17}},"Configuration"]

GraphData[{"BlackBishop",{17,17}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{17,17}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{17,17}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{17,17}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{17,17}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{17,17}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{17,17}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,17}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{17,17}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{17,17}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{17,17}},"Hamiltonian"]

GraphData[{"BlackBishop",{17,17}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{17,17}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{17,17}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{17,17}},"Planar"]

GraphData[{"BlackBishop",{17,17}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{17,17}},{"RCN","CN"}]

GraphData[{"BlackBishop",{17,17}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,17}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,17}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,17}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,17}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,17}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{17,17}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{17,17}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{17,17}},"Circulant"]

GraphData[{"BlackBishop",{17,17}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{17,17}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{17,17}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{17,17}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{17,17}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{17,17}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{17,17}}&]

RootGraph[GraphData[{"BlackBishop",{17,17}}]]

Halin

GraphData[{"BlackBishop",{17,17}},"Halin"]

GraphData[{"BlackBishop",{17,17}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{17,17}},"Rigid"]

GraphData[{"BlackBishop",{17,17}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{17,17}},"Flexible"]

GraphData[{"BlackBishop",{17,17}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{17,17}},"LCF"]

GraphData[{"BlackBishop",{17,17}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{17,17}},"LCFSignature"]

GraphData[{"BlackBishop",{17,17}},"LCFNotations"]

GraphData[{"BlackBishop",{17,17}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{17,17}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{17,17}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{17,17}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{17,17}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{17,17}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{17,17}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{17,17}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{17,17}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{17,17}}],Debug->True]//Timing

GraphData[{"BlackBishop",{17,17}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{17,17}},"VertexList"],GraphData[{"BlackBishop",{17,17}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{17,17}},"Matchstick"]

GraphData[{"BlackBishop",{17,17}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{17,17}},"Edges"]]

3D All

GraphData[{"BlackBishop",{17,17}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{17,17}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{17,17}},"Polyhedral"]

GraphData[{"BlackBishop",{17,17}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{17,18}}

Names

GraphData[{"BlackBishop",{17,18}},"StandardName"]

GraphData[{"BlackBishop",{17,18}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{17,18}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{17,18}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{17,18}},"Configuration"]

GraphData[{"BlackBishop",{17,18}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{17,18}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{17,18}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{17,18}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{17,18}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{17,18}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{17,18}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{17,18}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{17,18}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{17,18}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{17,18}},"Hamiltonian"]

GraphData[{"BlackBishop",{17,18}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{17,18}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{17,18}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{17,18}},"Planar"]

GraphData[{"BlackBishop",{17,18}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{17,18}},{"RCN","CN"}]

GraphData[{"BlackBishop",{17,18}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,18}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,18}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,18}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,18}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{17,18}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{17,18}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{17,18}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{17,18}},"Circulant"]

GraphData[{"BlackBishop",{17,18}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{17,18}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{17,18}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{17,18}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{17,18}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{17,18}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{17,18}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{17,18}}&]

RootGraph[GraphData[{"BlackBishop",{17,18}}]]

Halin

GraphData[{"BlackBishop",{17,18}},"Halin"]

GraphData[{"BlackBishop",{17,18}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{17,18}},"Rigid"]

GraphData[{"BlackBishop",{17,18}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{17,18}},"Flexible"]

GraphData[{"BlackBishop",{17,18}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{17,18}},"LCF"]

GraphData[{"BlackBishop",{17,18}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{17,18}},"LCFSignature"]

GraphData[{"BlackBishop",{17,18}},"LCFNotations"]

GraphData[{"BlackBishop",{17,18}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{17,18}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{17,18}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{17,18}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{17,18}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{17,18}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{17,18}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{17,18}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{17,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{17,18}}],Debug->True]//Timing

GraphData[{"BlackBishop",{17,18}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{17,18}},"VertexList"],GraphData[{"BlackBishop",{17,18}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{17,18}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{17,18}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{17,18}},"Matchstick"]

GraphData[{"BlackBishop",{17,18}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{17,18}},"Edges"]]

3D All

GraphData[{"BlackBishop",{17,18}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{17,18}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{17,18}},"Polyhedral"]

GraphData[{"BlackBishop",{17,18}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{18,18}}

Names

GraphData[{"BlackBishop",{18,18}},"StandardName"]

GraphData[{"BlackBishop",{18,18}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{18,18}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{18,18}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{18,18}},"Configuration"]

GraphData[{"BlackBishop",{18,18}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{18,18}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{18,18}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{18,18}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{18,18}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{18,18}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{18,18}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,18}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{18,18}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{18,18}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{18,18}},"Hamiltonian"]

GraphData[{"BlackBishop",{18,18}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{18,18}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{18,18}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{18,18}},"Planar"]

GraphData[{"BlackBishop",{18,18}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{18,18}},{"RCN","CN"}]

GraphData[{"BlackBishop",{18,18}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,18}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,18}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,18}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,18}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,18}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{18,18}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{18,18}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{18,18}},"Circulant"]

GraphData[{"BlackBishop",{18,18}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{18,18}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{18,18}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{18,18}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{18,18}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{18,18}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{18,18}}&]

RootGraph[GraphData[{"BlackBishop",{18,18}}]]

Halin

GraphData[{"BlackBishop",{18,18}},"Halin"]

GraphData[{"BlackBishop",{18,18}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{18,18}},"Rigid"]

GraphData[{"BlackBishop",{18,18}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{18,18}},"Flexible"]

GraphData[{"BlackBishop",{18,18}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{18,18}},"LCF"]

GraphData[{"BlackBishop",{18,18}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{18,18}},"LCFSignature"]

GraphData[{"BlackBishop",{18,18}},"LCFNotations"]

GraphData[{"BlackBishop",{18,18}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{18,18}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{18,18}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{18,18}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{18,18}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{18,18}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{18,18}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{18,18}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{18,18}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{18,18}}],Debug->True]//Timing

GraphData[{"BlackBishop",{18,18}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{18,18}},"VertexList"],GraphData[{"BlackBishop",{18,18}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{18,18}},"Matchstick"]

GraphData[{"BlackBishop",{18,18}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{18,18}},"Edges"]]

3D All

GraphData[{"BlackBishop",{18,18}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{18,18}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{18,18}},"Polyhedral"]

GraphData[{"BlackBishop",{18,18}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{18,19}}

Names

GraphData[{"BlackBishop",{18,19}},"StandardName"]

GraphData[{"BlackBishop",{18,19}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{18,19}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{18,19}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{18,19}},"Configuration"]

GraphData[{"BlackBishop",{18,19}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{18,19}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{18,19}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{18,19}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{18,19}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{18,19}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{18,19}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{18,19}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{18,19}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{18,19}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{18,19}},"Hamiltonian"]

GraphData[{"BlackBishop",{18,19}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{18,19}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{18,19}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{18,19}},"Planar"]

GraphData[{"BlackBishop",{18,19}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{18,19}},{"RCN","CN"}]

GraphData[{"BlackBishop",{18,19}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,19}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,19}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,19}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,19}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{18,19}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{18,19}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{18,19}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{18,19}},"Circulant"]

GraphData[{"BlackBishop",{18,19}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{18,19}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{18,19}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{18,19}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{18,19}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{18,19}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{18,19}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{18,19}}&]

RootGraph[GraphData[{"BlackBishop",{18,19}}]]

Halin

GraphData[{"BlackBishop",{18,19}},"Halin"]

GraphData[{"BlackBishop",{18,19}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{18,19}},"Rigid"]

GraphData[{"BlackBishop",{18,19}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{18,19}},"Flexible"]

GraphData[{"BlackBishop",{18,19}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{18,19}},"LCF"]

GraphData[{"BlackBishop",{18,19}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{18,19}},"LCFSignature"]

GraphData[{"BlackBishop",{18,19}},"LCFNotations"]

GraphData[{"BlackBishop",{18,19}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{18,19}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{18,19}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{18,19}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{18,19}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{18,19}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{18,19}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{18,19}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{18,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{18,19}}],Debug->True]//Timing

GraphData[{"BlackBishop",{18,19}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{18,19}},"VertexList"],GraphData[{"BlackBishop",{18,19}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{18,19}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{18,19}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{18,19}},"Matchstick"]

GraphData[{"BlackBishop",{18,19}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{18,19}},"Edges"]]

3D All

GraphData[{"BlackBishop",{18,19}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{18,19}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{18,19}},"Polyhedral"]

GraphData[{"BlackBishop",{18,19}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{19,19}}

Names

GraphData[{"BlackBishop",{19,19}},"StandardName"]

GraphData[{"BlackBishop",{19,19}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{19,19}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{19,19}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{19,19}},"Configuration"]

GraphData[{"BlackBishop",{19,19}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{19,19}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{19,19}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{19,19}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{19,19}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{19,19}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{19,19}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,19}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{19,19}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{19,19}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{19,19}},"Hamiltonian"]

GraphData[{"BlackBishop",{19,19}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{19,19}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{19,19}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{19,19}},"Planar"]

GraphData[{"BlackBishop",{19,19}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{19,19}},{"RCN","CN"}]

GraphData[{"BlackBishop",{19,19}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,19}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,19}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,19}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,19}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,19}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{19,19}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{19,19}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{19,19}},"Circulant"]

GraphData[{"BlackBishop",{19,19}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{19,19}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{19,19}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{19,19}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{19,19}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{19,19}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{19,19}}&]

RootGraph[GraphData[{"BlackBishop",{19,19}}]]

Halin

GraphData[{"BlackBishop",{19,19}},"Halin"]

GraphData[{"BlackBishop",{19,19}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{19,19}},"Rigid"]

GraphData[{"BlackBishop",{19,19}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{19,19}},"Flexible"]

GraphData[{"BlackBishop",{19,19}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{19,19}},"LCF"]

GraphData[{"BlackBishop",{19,19}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{19,19}},"LCFSignature"]

GraphData[{"BlackBishop",{19,19}},"LCFNotations"]

GraphData[{"BlackBishop",{19,19}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{19,19}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{19,19}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{19,19}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{19,19}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{19,19}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{19,19}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{19,19}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{19,19}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{19,19}}],Debug->True]//Timing

GraphData[{"BlackBishop",{19,19}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{19,19}},"VertexList"],GraphData[{"BlackBishop",{19,19}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{19,19}},"Matchstick"]

GraphData[{"BlackBishop",{19,19}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{19,19}},"Edges"]]

3D All

GraphData[{"BlackBishop",{19,19}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{19,19}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{19,19}},"Polyhedral"]

GraphData[{"BlackBishop",{19,19}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{19,20}}

Names

GraphData[{"BlackBishop",{19,20}},"StandardName"]

GraphData[{"BlackBishop",{19,20}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{19,20}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{19,20}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{19,20}},"Configuration"]

GraphData[{"BlackBishop",{19,20}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{19,20}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{19,20}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{19,20}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{19,20}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{19,20}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{19,20}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{19,20}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{19,20}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{19,20}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{19,20}},"Hamiltonian"]

GraphData[{"BlackBishop",{19,20}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{19,20}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{19,20}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{19,20}},"Planar"]

GraphData[{"BlackBishop",{19,20}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{19,20}},{"RCN","CN"}]

GraphData[{"BlackBishop",{19,20}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,20}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,20}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,20}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,20}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{19,20}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{19,20}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{19,20}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{19,20}},"Circulant"]

GraphData[{"BlackBishop",{19,20}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{19,20}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{19,20}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{19,20}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{19,20}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{19,20}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{19,20}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{19,20}}&]

RootGraph[GraphData[{"BlackBishop",{19,20}}]]

Halin

GraphData[{"BlackBishop",{19,20}},"Halin"]

GraphData[{"BlackBishop",{19,20}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{19,20}},"Rigid"]

GraphData[{"BlackBishop",{19,20}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{19,20}},"Flexible"]

GraphData[{"BlackBishop",{19,20}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{19,20}},"LCF"]

GraphData[{"BlackBishop",{19,20}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{19,20}},"LCFSignature"]

GraphData[{"BlackBishop",{19,20}},"LCFNotations"]

GraphData[{"BlackBishop",{19,20}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{19,20}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{19,20}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{19,20}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{19,20}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{19,20}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{19,20}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{19,20}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{19,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{19,20}}],Debug->True]//Timing

GraphData[{"BlackBishop",{19,20}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{19,20}},"VertexList"],GraphData[{"BlackBishop",{19,20}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{19,20}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{19,20}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{19,20}},"Matchstick"]

GraphData[{"BlackBishop",{19,20}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{19,20}},"Edges"]]

3D All

GraphData[{"BlackBishop",{19,20}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{19,20}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{19,20}},"Polyhedral"]

GraphData[{"BlackBishop",{19,20}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{20,20}}

Names

GraphData[{"BlackBishop",{20,20}},"StandardName"]

GraphData[{"BlackBishop",{20,20}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{20,20}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{20,20}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{20,20}},"Configuration"]

GraphData[{"BlackBishop",{20,20}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{20,20}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{20,20}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{20,20}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{20,20}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{20,20}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{20,20}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,20}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{20,20}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{20,20}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{20,20}},"Hamiltonian"]

GraphData[{"BlackBishop",{20,20}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{20,20}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{20,20}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{20,20}},"Planar"]

GraphData[{"BlackBishop",{20,20}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{20,20}},{"RCN","CN"}]

GraphData[{"BlackBishop",{20,20}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,20}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,20}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,20}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,20}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,20}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{20,20}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{20,20}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{20,20}},"Circulant"]

GraphData[{"BlackBishop",{20,20}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{20,20}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{20,20}}]])//Timing

CirculantGraph1@@@ci

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

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{20,20}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{20,20}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{20,20}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{20,20}}&]

RootGraph[GraphData[{"BlackBishop",{20,20}}]]

Halin

GraphData[{"BlackBishop",{20,20}},"Halin"]

GraphData[{"BlackBishop",{20,20}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{20,20}},"Rigid"]

GraphData[{"BlackBishop",{20,20}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{20,20}},"Flexible"]

GraphData[{"BlackBishop",{20,20}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{20,20}},"LCF"]

GraphData[{"BlackBishop",{20,20}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{20,20}},"LCFSignature"]

GraphData[{"BlackBishop",{20,20}},"LCFNotations"]

GraphData[{"BlackBishop",{20,20}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{20,20}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{20,20}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{20,20}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{20,20}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{20,20}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{20,20}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{20,20}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{20,20}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{20,20}}],Debug->True]//Timing

GraphData[{"BlackBishop",{20,20}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{20,20}},"VertexList"],GraphData[{"BlackBishop",{20,20}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

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

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

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{20,20}},"Matchstick"]

GraphData[{"BlackBishop",{20,20}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{20,20}},"Edges"]]

3D All

GraphData[{"BlackBishop",{20,20}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{20,20}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{20,20}},"Polyhedral"]

GraphData[{"BlackBishop",{20,20}},"Graph",{"3D","Polyhedron"}]

{"BlackBishop",{20,21}}

Names

GraphData[{"BlackBishop",{20,21}},"StandardName"]

GraphData[{"BlackBishop",{20,21}},"StandardNames"]

Primary

GraphData[{"BlackBishop",{20,21}}]//StyleGraphs[#,ImageSize->Small]&

All

GraphData[{"BlackBishop",{20,21}},"Graph","All"]//StyleGraphs

Configuration

GraphData[{"BlackBishop",{20,21}},"Configuration"]

GraphData[{"BlackBishop",{20,21}},"Graph","Configuration"]//StyleGraphs

config=%[[1]]

AddAllConfigurationEdges[config]//RecognizeGraph

ConfigurationDiagram[config,2]

lines=ConfigurationLinesFromGraph[config]

r=LeviGraph[lines]//RecognizeGraph

FirstCase[GraphData[r,"StandardNames"],{"Incidence",_}]

Inexact

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

Embedding types

GraphDataEmbeddings[GraphData[{"BlackBishop",{20,21}},"EdgeList"]]

Default embedding

GraphPlot@GraphData[{"BlackBishop",{20,21}},"Edges"]

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

RecognizeGraph[g]

Degenerate

GraphData[{"BlackBishop",{20,21}},"Graph","Degenerate"]//StyleGraphs

DegenerateGraphEmbeddingTypes/@GraphData[{"BlackBishop",{20,21}},"Graph","Degenerate"]

Perspective

GraphData[{"BlackBishop",{20,21}},"Graph","Perspective"]//StyleGraphs

Perspective construction

GraphData[{"BlackBishop",{20,21}},"Polyhedron"]

PolyhedronGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"]]

Manipulate[PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{x,y,z}],{x,-1,1},{y,-1,1},{z,-1,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{0,.01,.01}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{0,0,1}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{0,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{1,0.01,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{1,1,0}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{1,0,1,-Pi/2}]

PolyhedronProjectionGraph[GraphData[{"BlackBishop",{20,21}},"Polyhedron"],{1,1,1}]

Bilateral

GraphData[{"BlackBishop",{20,21}},"Graph","Bilateral"]//StyleGraphs

Circular

GraphData[{"BlackBishop",{20,21}},"Graph","Circular"]//StyleGraphs

Circular construction

GraphData[{"BlackBishop",{20,21}},"Hamiltonian"]

GraphData[{"BlackBishop",{20,21}},"HamiltonianCycleCount"]

Length[hc=FindHamiltonianCycle[GraphData[{"BlackBishop",{20,21}}],All][[All,All,1]]]

circ=CircularEmbeddingFromHamiltonianCycle[GraphData[{"BlackBishop",{20,21}}],#]&/@hc

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

gs=bilat

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

quad

Planar

GraphData[{"BlackBishop",{20,21}},"Planar"]

GraphData[{"BlackBishop",{20,21}},"Graph","Planar"]//StyleGraphs

MinimalCrossing

GraphData[{"BlackBishop",{20,21}},{"RCN","CN"}]

GraphData[{"BlackBishop",{20,21}},"Graph","MinimalCrossing"]//StyleGraphs

MinimalCrossing construction

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,21}}],TimeConstraint->1])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,21}}],TimeConstraint->10])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,21}}],TimeConstraint->60])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,21}}],TimeConstraint->3600])//AbsoluteTiming

(cn=CrossingNumber[GraphData[{"BlackBishop",{20,21}}],TimeConstraint->5 3600])//AbsoluteTiming

(g=MinimalCrossingGraph[GraphData[{"BlackBishop",{20,21}}],"CrossingNumber"->cn])//PolyhedralGraphQ

faces=ReverseSort@SymmetricallyDistinctFaces[g]

Tally[ReverseSort[Length/@faces]]

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

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

Table[MinimalCrossingGraph[GraphData[{"BlackBishop",{20,21}}],"CrossingNumber"->cn,RandomSeed->i],{i,50}]//Union//Timing

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

RecognizeGraph[g]

RectilinearCrossingCount[g]

Circulant

GraphData[{"BlackBishop",{20,21}},"Circulant"]

GraphData[{"BlackBishop",{20,21}},"Graph","Circulant"]//StyleGraphs

Circulant construction

GraphData[{"BlackBishop",{20,21}},"NotationRules","Circulant"]

(ci=CirculantIndices[GraphData[{"BlackBishop",{20,21}}]])//Timing

CirculantGraph1@@@ci

Cases[GraphData[{"BlackBishop",{20,21}},"StandardNames"],{"Circulant",i_}:>i]

CirculantGraph1@@@%

Complement graph

GraphData[{"BlackBishop",{20,21}},"ComplementGraph","Name"]

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

Line graph

GraphData[{"BlackBishop",{20,21}},"Line"]

LineGraphQ[GraphData[{"BlackBishop",{20,21}}]]//Timing

RootGraph

Select[GraphData[All],GraphData[#,"LineGraph","Name"]=== {"BlackBishop",{20,21}}&]

RootGraph[GraphData[{"BlackBishop",{20,21}}]]

Halin

GraphData[{"BlackBishop",{20,21}},"Halin"]

GraphData[{"BlackBishop",{20,21}},"Graph","Halin"]//StyleGraphs

Rigid

GraphData[{"BlackBishop",{20,21}},"Rigid"]

GraphData[{"BlackBishop",{20,21}},"Graph","Rigid"]//StyleGraphs

Flexible

GraphData[{"BlackBishop",{20,21}},"Flexible"]

GraphData[{"BlackBishop",{20,21}},"Graph","Flexible"]//StyleGraphs

LCF

GraphData[{"BlackBishop",{20,21}},"LCF"]

GraphData[{"BlackBishop",{20,21}},"HamiltonianCycleCount"]

GraphData[{"BlackBishop",{20,21}},"LCFSignature"]

GraphData[{"BlackBishop",{20,21}},"LCFNotations"]

GraphData[{"BlackBishop",{20,21}},"Graph","LCF"]//StyleGraphs

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

LCF compute random

FindRandomLCFNotation[GraphData[{"BlackBishop",{20,21}}],TimeConstraint->120]

LCF compute 10^5

Tally[(lcf=LCF[GraphData[{"BlackBishop",{20,21}}],10^5])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

DeleteCases[lcf,{_,1}]

nicelcf=LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

l={
{{"BlackBishop",{20,21}},{0,Missing["NotAvailable",DeleteCases[nicelcf,{_,XXX}]]}}
}

PropertyReplace[l,"LCFNotations","14.1"]

RenameGraphFiles[]

LCF compute all

Divisors[GraphData[{"BlackBishop",{20,21}},"V"]]

Length[FindHamiltonianCycle[GraphData[{"BlackBishop",{20,21}}],All][[All,All,1]]]//Timing

Tally[(lcf=LCF[GraphData[{"BlackBishop",{20,21}}],All])[[All,2]]]//Timing

MaxMemoryUsed[]/10.^9 "GB"

Tally[(lcf=ReadProperty["LCFNotations",GraphNameToFileName[{"BlackBishop",{20,21}},".m.gz"]])[[All,2]]]//Timing

DeleteCases[lcf,{_,1}]

LCFGraph@@@DeleteCases[lcf,{_,1}]//StyleGraphs

Tally[LCFNotation[#][[-1]]&/@(gs=NiceLCFGraphs[lcf,2,1])]//Timing

Length[gs]

gs

BilateralGraphEmbeddingQ/@gs

UnitDistance

GraphData[{"BlackBishop",{20,21}},"UnitDistance"]

UnitDistanceGraphQ[GraphData[{"BlackBishop",{20,21}}],Debug->True]//Timing

GraphData[{"BlackBishop",{20,21}},"Graph","UnitDistance"]//StyleGraphs

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

UnitDistance by refinement

UnitDistanceEmbeddingRefine[Graph[GraphData[{"BlackBishop",{20,21}},"VertexList"],GraphData[{"BlackBishop",{20,21}},"EdgeList"]],MaxIterations->500]

UnitDistanceGraphEmbeddingQ[%]

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

Select[%,UnitDistanceGraphEmbeddingQ]

UnitDistance by FindUnitDistanceEmbedding

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{20,21}}],MaxIterations->5000,"ReturnWithMessage"->True]//Timing

FindUnitDistanceEmbedding[GraphData[{"BlackBishop",{20,21}}],MaxIterations->5000,"ReturnWithMessage"->False]//Quiet//Timing

UnitDistance by FindSubgraphUnitDistanceEmbedding

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

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

Matchstick

GraphData[{"BlackBishop",{20,21}},"Matchstick"]

GraphData[{"BlackBishop",{20,21}},"Graph","Matchstick"]//StyleGraphs

3D default

Graph3D[GraphData[{"BlackBishop",{20,21}},"Edges"]]

3D All

GraphData[{"BlackBishop",{20,21}},"Graph",{"3D","All"}]

3D UnitDistance

GraphData[{"BlackBishop",{20,21}},"Graph",{"3D","UnitDistance"}]

3D Polyhedron

GraphData[{"BlackBishop",{20,21}},"Polyhedral"]

GraphData[{"BlackBishop",{20,21}},"Graph",{"3D","Polyhedron"}]

GraphData

GraphDataClassString

GraphDataClassString["BlackBishop"]

GraphDataString

Square

Cases[GraphData[{"BlackBishop","WhiteBishop"}],{_,{n_,n_}}]

file=OpenAppend["black-bishop.m"]

Do[WriteString[file,GraphDataString[BlackBishopGraph[n,n],
"Name"->(gn="("<>ToString[n]<>","<>ToString[n]<>")\[Hyphen]black bishop graph"),
"AlternateNames"->If[EvenQ[n],{StringReplace[gn,"black"->"white"]},{}],
"StandardName"->{"BlackBishop",{n,n}},
"AlternateStandardNames"->If[EvenQ[n],{{"WhiteBishop",{n,n}}},{}],
"Classes"->{"BlackBishop"},
"NotationRules"->{
"BlackBishop"->{n,n},
If[EvenQ[n],"WhiteBishop"->{n,n},Sequence@@{}]
},
"Information"->"BlackBishopGraph",
"Skip"->{"ABCEnergy","ABCSpectralRadius","Arboricity","ArithmeticGeometricEnergy","ArithmeticGeometricSpectralRadius","BetweennessCentralities","BurningNumber","CharacteristicPolynomial","Circumference","CliqueCoveringNumber","ConnectedDominatingSets","ConstructionNumber","ConnectedInducedSubgraphPolynomial","ConnectedInducedSubgraphs","Curvatures","CyclePolynomial","CyclicEdgeConnectivity","DetourMatrix","DominatingSets","EigenvectorCentralities","EmbeddingClasses","Embeddings3D","Energy","Genus","GracefulLabeling","HadwigerNumber","HamiltonianPaths","HamiltonianWalk","HamiltonianWalks","HITSCentralities","IdiosyncraticPolynomial","IndependencePolynomial","IrredundacePolynomial","IrredundantSets","KatzCentralities","LinklesslyEmbeddable","LowerMatchingNumber","MatchingGeneratingPolynomial","MatchingPolynomial","MaximalIndependentEdgeSets","MaximalIndependentVertexSet","MaximalIndependentVertexSets","MaximumIndependentEdgeSetCount","MaximumIndependentEdgeSets","MaximumIndependentVertexSet","MaximumIndependentVertexSetCount","MaximumIndependentVertexSets","MaximumIrredundantSets","MetricDimension","Meyniel","MinimumCoveringsByMaximalCliques","MinimumCyclicEdgeCut","MinimumCyclicEdgeCuts","MinimumEdgeCuts","MinimumPathCovering","MinimumVertexCover","MinimumVertexCut","MinimumTotalDominatingSet","MinimumWeightFractionalEdgeColoring","MinimumWeightFractionalColoring","Minors","Outerplanar","PageRankCentralities","PathCoveringNumber","PathPolynomial","PathSignature","Paths","ProjectivePlanar","QuadraticEmbeddingConstant","RandicEnergy","RandicSpectralRadius","RectilinearCrossingCount","Skewness","SomborEnergy","SomborSpectralRadius","SpanningTreeCount","TopologicalIndex","TotalDominationPolynomial","TuttePolynomial","VertexCuts"},
Debug->True,
TimeConstraint->10
]],{n,15,20}]

Close[file]