#OK to post homework #Salman Manzoor 03-02-2025, Assignment 10 read `C10.txt`: SimulateNAND:=proc(n,k,K) local i,sum: sum:=0: for i from 1 to K do sum:=sum+nops(EvalSP(RSLP(n,k),n)): od: sum/K: end: Monotone:=proc(n,k,p) local P,i,i1,j1,gate: P:=[seq(i,i=1..n)]: for i from n+1 to k+n do i1:=rand(1..nops(P))(): j1:=rand(1..nops(P))(): gate:=1: if (evalb(rand(1..denom(p))()<=numer(p))) then gate:=2 fi: P:=[op(P),[i1,j1,gate]]: od: P: end: EvalMP1:=proc(P,IN) local n,P1,i,i1,j1,k: P1:=IN: n:=nops(IN): for i from n+1 to nops(P) do i1:=P[i][1]: j1:=P[i][2]: k:=AND(P1[i1],P1[j1]): if (P[i][3]=1) then k:=OR(P1[i1],P1[j1]): fi: P1:=[op(P1),k]: od: P1[-1]: end: EvalMP:=proc(P,n) local V,v,T: V:=TF(n): T:={}: for v in V do if EvalMP1(P,v) then T:=T union {v}: fi: od: T: end: SimulateMonotone:=proc(n,k,p,K) local i,sum: sum:=0: for i from 1 to K do sum:=sum+nops(EvalMP(Monotone(n,k,p),n)): od: sum/K: end: #The SimulateNAND tests gave [693.7600000, 664.6560000, 643.3480000, 636.93300000] #The SimulateMonotone tests gave [505.0880000, 507.4640000, 517.7280000, # 499.7220000, 379.9360000, 341.6560000, 306.6000000, 238.1860000, # 216.5920000, 172.9920000, 109.3000000, 53.22500000]