I'd start by checking that the parameters of these strongly regular graphs are the same, i.e. comparing
G2.is_strongly_regular(parameters=True) G1.is_strongly_regular(parameters=True) it could be that you'd need to take the complement, or, even worse, a graph coming from the dual (in the S-ring, etc sense) association scheme. In particular, I recall stumbling upon this while working on these graphs, and finding out that the formulae here: http://moodle.tec.hkr.se/~chen/research/2-weight-codes/index.htm are not always correct. Dima On Monday, October 24, 2016 at 11:22:55 AM UTC, Paul Leopardi wrote: > > On Monday, 24 October 2016 01:45:10 UTC+11, David Joyner wrote: >> >> >> I haven't looked at your code but are you comparing the SRG associated >> to the Boolean bent function and the graph associated to the incidence >> matrix of that graph? >> >> > I don't understand your precise meaning here, so I will spell out exactly > what I have done. > > Briefly, if f is a Boolean bent function f: Z_2^{dim} -> Z_2, with f(0)=0, > then, if Z_2^{dim} is given lexicographical ordering from 0 to 2^{dim}-1, > define the matrix M[i,j]=f(i \xor j). > The matrix M is the *adjacency* matrix of the Cayley graph of f, and is > simple because f(0) != 1. The following function takes the equivalent f : Z > -> Z_2 and produces the Cayley graph for a given dim. > > def boolean_cayley_graph(dim, f): > v = 2 ** dim > result = Graph(v) > result.add_edges([(i,j) for i in xsrange(v) for j in xsrange(i) if f(i > ^ j)]) > return result > > This is the graph that I am using for G1 in test_isomorphism.sage > > A Boolean bent function can also generate a projective, two-weight linear > code. Again, we take lexicographic ordering of Z_2^{dim} and produce a > matrix M, but here the number of columns is the weight of f, i.e. the size > of the support of f, > the number of rows is 2^{dim}, and each entry M[x,j] = <x, {support}_j> > where support is a list corresponding to the support of f. This matrix M > generates the linear code. In fact, the elements of the code are the rows > of M. > > def linear_code(self): > dim = self.nvariables() > v = 2 ** dim > f = self.extended_translate() > support = [y > for y in xsrange(n) > if f(y)==1] > M = matrix(GF(2), [[inner(x, y) > for y in support] > for x in xsrange(v)]) > return LinearCode(M) > > There is Sage function strongly_regular_from_two_ > weight_code(), described at > http://doc.sagemath.org/html/en/reference/graphs/sage/graphs/strongly_regular_db.html > "A strongly regular graph can be built from a two-weight projective code > with weights w1,w2 (assuming w1 < w2) by adding an edge between any two > codewords whose difference has weight w1." > > The graph G2 that I am using in test_isomorphism.sage is thus > strongly_regular_from_two_weight_code(f.linear_code()). > > The bent function f can have one of two weights. If m=dim/2, the weight of > f is either 2^{2m-1} - 2^{m-1} (weight class 0) or 2^{2m-1}+2^{m-1} (weight > class 1). > In all cases where m<4, it turns out that if f has weight class 0 then > f.cayley_graph() is isomorphic to f.strongly_regular_graph(), and if f has > weight class 0 then f.cayley_graph() is isomorphic to > f.strongly_regular_graph().complement(). > For m=4, these isomorphisms are true for the bent functions in the > extended affine equivalence class of the bent function corresponding to > each of the first 8 polynomials listed below. For polynomials 9 and 10, > there are exceptions, > according to the canonical label algorithms as implemented in Sage. > > def bent_function_extended_affine_representative_polynomials_dimension_8(): > r""" > The Boolean polynomials p8[i] for from 1 to 10 are the representatives > of > the extended affine equivalence classes of bent functions in 8 > variables, > with degree up to 3, as listed at 7.3 of Tokareva 2015, > with citation [167] to Hou 1998. > """ > R8.<x1,x2,x3,x4,x5,x6,x7,x8> = BooleanPolynomialRing(8) > p8 = [None]*11 > p8[1] = x1*x2 + x3*x4 + x5*x6 + x7*x8 > p8[2] = x1*x2*x3 + x1*x4 + x2*x5 + x3*x6 + x7*x8 > p8[3] = x1*x2*x3 + x2*x4*x5 + x3*x4 + x2*x6 + x1*x7 + x5*x8 > p8[4] = x1*x2*x3 + x2*x4*x5 + x1*x3 + x1*x5 + x2*x6 + x3*x4 + x7*x8 > p8[5] = x1*x2*x3 + x2*x4*x5 + x3*x4*x6 + x3*x5 + x2*x6 + x2*x5 + x1*x7 > + x4*x8 > p8[6] = x1*x2*x3 + x2*x4*x5 + x3*x4*x6 + x3*x5 + x1*x3 + x1*x4 + x2*x7 > + x6*x8 > p8[7] = x1*x2*x3 + x2*x4*x5 + x3*x4*x6 + x3*x5 + x2*x6 + x2*x5 + x1*x2 > + x1*x3 + x1*x4 + x7*x8 > p8[8] = x1*x2*x3 + x2*x4*x5 + x3*x4*x6 + x3*x5 + x1*x6 + x2*x7 + x4*x8 > p8[9] = x1*x2*x7 + x3*x4*x7 + x5*x6*x7 + x1*x4 + x3*x6 + x2*x5 + x4*x5 > + x7*x8 > p8[10] = x1*x2*x3 + x2*x4*x5 + x3*x4*x6 + x1*x4*x7 + x3*x5 + x2*x7 + > x1*x5 + x1*x6 + x4*x8 > return p8 > > > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.
