Projective set experiments: Difference between revisions
(Created page with "Question: how many points in $\mathbb P_{\mathbb F_2}^n$ are needed to touch all lines? It can be done with $2^n-1$ points (take the hyperplane at infinity), and requires at leas...") |
(No difference)
|
Latest revision as of 12:36, 19 October 2011
Question: how many points in $\mathbb P_{\mathbb F_2}^n$ are needed to touch all lines? It can be done with $2^n-1$ points (take the hyperplane at infinity), and requires at least $\frac 13(2^{n+1}-1)$ points (dividing total number of lines by number of lines through a point).
import random
def setup( dim ):
points = [[0],[1]]
i = dim
while i>0:
points = [x+[0] for x in points] + [x+[1] for x in points]
i-=1
points = [tuple(x) for x in points]
points.remove(tuple([0]*(dim+1)))
lines = set([tuple(sorted([a,b,tuple([a[i]^b[i] for i in range(len(a))])])) for a in points for b in points if b!=a])
return (points, lines)
def search( dim ):
points, lines = setup(dim)
size = 2**dim - 1
found = False
print "looking for size",size
while True:
S = random.sample(points,size)
found = True
for L in lines:
if len([p for p in L if p in S])==0: # S misses L
found = False
break
if found:
print size, S
size-=1
def build( dim ):
S=[]
points, lines = setup(dim)
for L in lines:
if len([p for p in L if p in S])==0: # S misses L
S.append(random.choice(L))
return len(S), S