Source code for boolean_cayley_graphs.royle_x_graph
r"""
The Royle X graph
=================
The ``royle_x_graph`` module defines the
``royle_x_graph`` function,
which returns a strongly regular graph, as described by Royle [Roy2008]_.
AUTHORS:
- Paul Leopardi (2016-10-19): initial version
"""
#*****************************************************************************
# Copyright (C) 2016-2017 Paul Leopardi paul.leopardi@gmail.com
#
# Distributed under the terms of the GNU General Public License (GPL)
# as published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
# http://www.gnu.org/licenses/
#*****************************************************************************
from sage.combinat.combination import Combinations
from sage.graphs.graph import Graph
from sage.modules.vector_integer_dense import vector
[docs]def royle_x_graph():
r"""
Return a strongly regular graph, as described by Royle [Roy2008]_.
INPUT:
None.
OUTPUT:
An object of class ``Graph``, representing Royle's X graph [Roy2008]_.
EXAMPLES:
::
sage: from boolean_cayley_graphs.royle_x_graph import royle_x_graph
sage: g = royle_x_graph()
sage: g.is_strongly_regular()
True
sage: g.is_strongly_regular(parameters=True)
(64, 35, 18, 20)
REFERENCES:
Royle [Roy2008]_.
"""
n = 8
order = 64
vecs = [vector([1]*n)]
for a in Combinations(range(1, n), 4):
vecs.append(vector([
-1 if x in a else 1
for x in range(n)]))
for b in Combinations(range(n), 2):
vecs.append(vector([
-1 if x in b else 1
for x in range(n)]))
return Graph([
(i,j) for i in range(order)
for j in range(i+1, order)
if vecs[i]*vecs[j] == 0])