> X:={seq(ithprime(2*i),i=1..20)}; X := {3, 7, 13, 19, 29, 37, 43, 53, 61, 71, 79, 89, 101, 107, 113, 131, 139, 151, 163, 173} > N:=sum (X[ithprime(i)],i=1..8); N := 574 > count:=0: subsetsum(X,{},N);count; {3, 7, 13, 19, 29, 37, 43, 53, 61, 71, 107, 131} true 223 > N:=sum (X[i],i=1..8); N := 204 > count:=0: subsetsum(X,{},N);count; {3, 7, 13, 19, 29, 37, 43, 53} true 9 > N:=sum (X[i],i=11..18); N := 910 > count:=0: subsetsum(X,{},N);count; {3, 7, 13, 19, 29, 37, 43, 53, 61, 71, 107, 131, 163, 173} true 27803 Given that the number of subsets to be searched through using an exhaustive search is [22.sup.20] =
1048576, we see that backtracking can provide a better alternative.
We also computed the server storage used up by Path ORAM, Ring ORAM, XOR Ring, and Onion ORAM while varying the number of nodes N as 1024, 4096,16384, 65536, 262144, 1048576, 4194304, and 16777216.
N Path Ring XOR Ring 1024 33.54 50.80 50.80 4096 134.20 203.27 203.27 16384 536.85 813.15 813.15 65536 214747 3252.66 3252.66 262144 8589.92 13010.71 13010.71 1048576 34359.72 52042.90 52042.90 4194304 137438.93 208171.67 208171.67 16777216 549755.80 832686.76 832686.76 N Onion w/o AHE Onion with AHE 1024 33.77 40.90 4096 135.12 170.27 16384 540.52 708.65 65536 2162.15 2963.83 262144 8648.64 12331.96 1048576 34594.60 51311.27 4194304 138378.46 213499.06 16777216 553513.90 888345.90
[n.sub.x] [beta] = 1.3 [beta] = 1.7 [beta] = 1.3 [beta] = 1.7 32768 6.0 (0.43) 7.0 (0.47) 6.8 (0.90) 6.0 (0.81) 65536 6.0 (0.96) 7.0 (0.97) 6.4 (1.93) 6.0 (1.75) 131072 6.0 (1.85) 7.0 (2.23) 5.9 (3.93) 5.9 (3.89) 262144 6.0 (7.10) 7.1 (8.04) 5.4 (12.78) 6.0 (13.52) 524288 6.0 (15.42) 7.8 (19.16) 5.1 (25.71) 6.0 (27.40)
1048576 6.0 (34.81) 8.0 (41.76) 4.9 (51.02) 6.3 (62.57) TABLE 5.3 The solver IKPIK is presented, for a variety of meshes and two different values of [beta] in both the constant and the variable coefficient cases.