Create Graph In Sage

863 Views Asked by At

I want define new graph in sage. Let $V$ be vector space over finite field $GF(q)$. The graph's vertices are 1-dimensional subspace from $V$ and $n-1$ -dimensional subspace from $V$ and two vertices are adjacent if and only if direct sum of two subspace is $V$.

I have trouble with define this graph in sage. Any suggestion?

1

There are 1 best solutions below

0
On BEST ANSWER

Here is a simple algorithm to create the graph you want.

p=5
n=3
V=VectorSpace(GF(p),n)
edges=[]
for i in V.subspaces(1):
  for j in V.subspaces(n-1):
    gens=list(j.gens())
    gens.append(i.gens()[0])
    H=V.subspace(gens)
    if(H.dimension()==n):
      edges.append((i,j))

G=Graph(edges)

I'm not sure what you want to label them, so the edges are actually the current vectorspaces, which is rather inefficient. You should probably come up with a simple naming scheme using a python dictionary, for instance. There are also likely faster ways to compute this that cut out a good deal of the tests.