
363 print (f" {’Rex ’: >6} | { ’ No des ’: >6} | { ’ K_max ’: >6} | {’ K_ mean ’: >7} " )
364 print ("-" * 40)
365 im port copy
366 for rex in np. arange (0.50 , 1.02 , 0.0 2) :
367 random . see d ( args . seed ); np . rando m . seed ( args . seed )
368 global HA RD _S HE LL
369 old_hs = HARD _S HE LL
370 HARD_S HE LL = rex
371 sim = SS MH olograp hi cSim ( ta rg et _n od es =500 , li ft _p rob =0. 05)
372 sim . run ( verb ose = False )
373 s = sim . get_stats ()
374 jammed = " JAMM ED " if s [ ’n ’] < 450 else " "
375 print (f" { rex :5.2 f } | {s[ ’n ’]:6 d } | { s[’ k _ma x ’]:6 d } | "
376 f " {s [ ’ k_ mean ’]:7.2 f} { jamme d }")
377 HARD_S HE LL = old_hs
378
379 elif args . analyz e :
380 print ("= " * 65)
381 print (f" SSM FULL AN ALYSIS Sec ti ons 3.6 & 3.7")
382 print (f" Lift ={ args . lift * 100:.0 f }% , Seed ={ args . seed } ")
383 print ("= " * 65)
384
385 # ---- Secti on 3. 6: Finite - Size Scaling ----
386 print ("\ n" + "=" * 50)
387 print (" TABLE 2: Finite - Size Scaling ( Sect ion 3.6) " )
388 print ("= " * 50)
389 print (f" {’N ’: >6} {’ K_mean ’: >7} { ’K=12% ’: >7} {’K >=10% ’: >7} {’ Edge s ’: >7} ")
390 print ("-" * 45)
391 scale_data = []
392 for N in [500 , 1000 , 2000 , 3000 , 5 000]:
393 random . see d ( args . seed ); np . rando m . seed ( args . seed )
394 sim = SS MH olograp hi cSim ( ta rg et _n od es =N, l if t_ prob = args . lift )
395 sim . run ( verb ose = False )
396 s = sim . get_stats ()
397 print (f" {s[ ’n ’]:6 d } {s[ ’ k_m ean ’]:7.2 f} { s[’ pct_k12 ’]:6.1 f }% "
398 f " {s [ ’ pct_ k10 ’]:6.1f}% { s[’ edge s ’]:7 d }")
399 scale_ da ta . a ppend (( s [ ’n ’], s [ ’ pct_ k12 ’] / 100.0) )
400
401 Ns = np . array ([ d [0] for d in sc ale_data ])
402 fs = np . array ([ d [1] for d in sc ale_data ])
403 # Asymptotic fit from largest s ystem ( most r eliable for N ^{ -1/3} scalin g )
404 alpha_asym = flo at ((1 - fs [ -1]) * Ns [ -1]**( 1.0/3.0 ) )
405 # OLS fit ac ross all sizes
406 x = Ns **( -1.0/3 .0)
407 y = 1.0 - fs
408 alpha_ ol s = fl oat (np . sum (x * y) / np . sum (x * x))
409 alpha = al ph a_ as ym # Use a symptotic ( conservative , matc hes paper )
410 print (f" \ n Scaling law : f(K =12) = 1 - alpha / N ^(1/3) " )
411 print (f" alpha ( N =5000 as ymptotic ): { alpha_asym :.1 f } ")
412 print (f" alpha ( OLS all po ints ) : { a lpha_ols :.1 f} ")
413 print (f" Using alpha = { alp ha :.1f} ( asymp toti c , co ns er va ti ve ) ")
414 print (" Extrapo la ti on s : ")
415 for Nex , label in [(1 e4 , ’ 10^4 ’) , (1 e6 , ’10^6 ’) ,
416 (1 e9 , ’ 10^9 ’), (1 e60 , ’ 10^60 ( univer se ) ’) ]:
417 fex = max (0 , 1 - alpha / Nex ** (1 .0 /3 .0 ) )
418 print (f" N = { label : >20s }: K =12 = { fex * 100:.4 f }% " )
419
420 # ---- Secti on 3. 7: Layer Analysis ----
421 print ("\ n" + "=" * 50)
422 print (f" LAYER ANALYSIS (N ={ args . nodes }, S ection 3.7) ")
423 print ("= " * 50)
424 ra ndom . seed ( args . seed ) ; np . ra ndom . seed ( args . seed )
425 sim = SS MH olograp hi cSim ( ta rg et _n od es = args . nodes , li ft_prob = args . lift )
426 sim . run ( verb ose = False )
427 s = sim . get_stats ()
428 la = sim . a na ly ze _layers ()
429
430 print (f" \ nBas ic s ta tistics :")
431 print (f" Nodes : {s[ ’n ’]} ")
432 print (f" Edges : {s[ ’ edg es ’]} ")
433 print (f" Triang le s : { s [’ triangle s ’]} ")
434 print (f" K_max : {s[ ’ k_m ax ’]} ")
435 print (f" K_ mean : { s[’ k _mean ’]:.2f} ")
20