Ticket #10781: trac_10781-Shrikhande-graph.patch

File trac_10781-Shrikhande-graph.patch, 4.7 KB (added by kini, 11 years ago)
  • sage/graphs/graph_generators.py

    # HG changeset patch
    # User Keshav Kini <kini@member.ams.org>
    # Date 1300392903 25200
    # Node ID 24c278b993c91473c9148863878e7e11128c0be1
    # Parent 6a679959b54b7975af1841df4dd77d28b0faef28
    trac #10781: add Shrikhande graph to the common graphs database
    
    diff --git a/sage/graphs/graph_generators.py b/sage/graphs/graph_generators.py
    a b  
    114114- :meth:`MoserSpindle <GraphGenerators.MoserSpindle>`
    115115- :meth:`PappusGraph <GraphGenerators.PappusGraph>`
    116116- :meth:`PetersenGraph <GraphGenerators.PetersenGraph>`
     117- :meth:`ShrikhandeGraph <GraphGenerators.ShrikhandeGraph>`
    117118- :meth:`ThomsenGraph <GraphGenerators.ThomsenGraph>`
    118119
    119120
     
    218219- Edward Scheinerman (2010-08-11): RandomTree
    219220
    220221- Ed Scheinerman (2010-08-21): added Grotzsch graph and Mycielski graphs
     222
     223- Minh Van Nguyen (2010-11-26): added more named graphs
     224
     225- Keshav Kini (2011-02-16): added Shrikhande graph
     226
    221227"""
    222228
    223229###########################################################################
     
    34513457                            5:[11],6:[13,17],7:[12,14],8:[13,15],9:[14,16],\
    34523458                            10:[15,17],11:[12,16],12:[15],13:[16],14:[17]},\
    34533459                           pos=pos_dict, name="Pappus Graph")
    3454    
     3460
    34553461    def PetersenGraph(self):
    34563462        """
    34573463        The Petersen Graph is a named graph that consists of 10 vertices
     
    34763482        P.name("Petersen graph")
    34773483        return P
    34783484   
     3485    def ShrikhandeGraph(self):
     3486        """
     3487        Returns the Shrikhande graph.
     3488
     3489        For more information, see the `MathWorld article on the Shrikhande graph
     3490        <http://mathworld.wolfram.com/ShrikhandeGraph.html>`_ or the `Wikipedia
     3491        article on the Shrikhande graph
     3492        <http://en.wikipedia.org/wiki/Shrikhande_graph>`_.
     3493
     3494        EXAMPLES:
     3495
     3496        The Shrikhande graph was defined by S. S. Shrikhande in 1959. It has
     3497        `16` vertices and `48` edges, and is strongly regular of degree `6` with
     3498        parameters `(2,2)`::
     3499           
     3500            sage: G = graphs.ShrikhandeGraph(); G
     3501            Shrikhande graph: Graph on 16 vertices
     3502            sage: G.order()
     3503            16
     3504            sage: G.size()
     3505            48
     3506            sage: G.is_regular(6)
     3507            True
     3508            sage: set([ len([x for x in G.neighbors(i) if x in G.neighbors(j)])
     3509            ...     for i in range(G.order())
     3510            ...     for j in range(i) ])
     3511            set([2])
     3512
     3513        It is non-planar, and both Hamiltonian and Eulerian::
     3514           
     3515            sage: G.is_planar()
     3516            False
     3517            sage: G.is_hamiltonian()
     3518            True
     3519            sage: G.is_eulerian()
     3520            True
     3521
     3522        It has radius `2`, diameter `2`, and girth `3`::
     3523           
     3524            sage: G.radius()
     3525            2
     3526            sage: G.diameter()
     3527            2
     3528            sage: G.girth()
     3529            3
     3530
     3531        Its chromatic number is `4` and its automorphism group is of order
     3532        `192`::
     3533           
     3534            sage: G.chromatic_number()
     3535            4
     3536            sage: G.automorphism_group().cardinality()
     3537            192
     3538
     3539        It is an integral graph since it has only integral eigenvalues::
     3540           
     3541            sage: G.characteristic_polynomial().factor()
     3542            (x - 6) * (x - 2)^6 * (x + 2)^9
     3543        """
     3544        pos_dict = {}
     3545        for i in range(8):
     3546            pos_dict[i] = [float(cos((2*i) * pi/8)),
     3547                           float(sin((2*i) * pi/8))]
     3548            pos_dict[8 + i] = [0.5 * pos_dict[i][0],
     3549                               0.5 * pos_dict[i][1]]
     3550        edge_dict = {
     3551            0O00: [0O06, 0O07, 0O01, 0O02,   0O11, 0O17],
     3552            0O01: [0O07, 0O00, 0O02, 0O03,   0O12, 0O10],
     3553            0O02: [0O00, 0O01, 0O03, 0O04,   0O13, 0O11],
     3554            0O03: [0O01, 0O02, 0O04, 0O05,   0O14, 0O12],
     3555            0O04: [0O02, 0O03, 0O05, 0O06,   0O15, 0O13],
     3556            0O05: [0O03, 0O04, 0O06, 0O07,   0O16, 0O14],
     3557            0O06: [0O04, 0O05, 0O07, 0O00,   0O17, 0O15],
     3558            0O07: [0O05, 0O06, 0O00, 0O01,   0O10, 0O16],
     3559
     3560            0O10: [0O12, 0O13, 0O15, 0O16,   0O07, 0O01],
     3561            0O11: [0O13, 0O14, 0O16, 0O17,   0O00, 0O02],
     3562            0O12: [0O14, 0O15, 0O17, 0O10,   0O01, 0O03],
     3563            0O13: [0O15, 0O16, 0O10, 0O11,   0O02, 0O04],
     3564            0O14: [0O16, 0O17, 0O11, 0O12,   0O03, 0O05],
     3565            0O15: [0O17, 0O10, 0O12, 0O13,   0O04, 0O06],
     3566            0O16: [0O10, 0O11, 0O13, 0O14,   0O05, 0O07],
     3567            0O17: [0O11, 0O12, 0O14, 0O15,   0O06, 0O00]
     3568        }
     3569       
     3570        return graph.Graph(edge_dict, pos=pos_dict, name="Shrikhande graph")
     3571   
    34793572    def ThomsenGraph(self):
    34803573        """
    34813574        Returns the Thomsen Graph.