Ticket #904: clique_ind_set-2.patch

File clique_ind_set-2.patch, 3.3 KB (added by jason, 12 years ago)

Replaces the first patch above.

  • sage/graphs/graph.py

    diff -r 9241a4ebc628 sage/graphs/graph.py
    a b class GenericGraph(SageObject): 
    27512751                return False
    27522752        return True
    27532753
    2754     def independent_set(self, vertices=None):
    2755         r"""
    2756         Returns True if the set of vertices defines an independent set and False otherwise.  If no vertices are passed, then we assume the whole graph.
    2757        
    2758         EXAMPLE:
    2759             sage: G = graphs.EmptyGraph()
    2760             sage: G.add_vertices([0..10])
    2761             sage: G.independent_set()
     2754    ### Substructures
     2755
     2756    def is_clique(self, vertices=None, directed_clique=False):
     2757        """
     2758        Returns True if the set \code{vertices} is a clique, False if not.  A
     2759        clique is a set of vertices such that there is an edge between
     2760        any two vertices.
     2761
     2762        INPUT:
     2763
     2764        vertices -- Vertices can be a single vertex or an iterable
     2765        container of vertices, e.g. a list, set, graph, file or
     2766        numeric array.  If not passed, defaults to the entire graph.
     2767
     2768        directed_clique -- (default False) If set to False, only
     2769        consider the underlying undirected graph.  If set to True and the
     2770        graph is directed, only return True if all possible edges in
     2771        _both_ directions exist.
     2772
     2773        EXAMPLE:
     2774
     2775            sage: g = graphs.CompleteGraph(4)
     2776            sage: g.is_clique([1,2,3])
    27622777            True
    2763             sage: graphs.PathGraph(3).independent_set([0,2])
     2778            sage: g.is_clique()
    27642779            True
    2765             sage: graphs.PathGraph(3).independent_set([0,1])
     2780            sage: h = graphs.CycleGraph(4)
     2781            sage: h.is_clique([1,2])
     2782            True
     2783            sage: h.is_clique([1,2,3])
    27662784            False
    2767         """
     2785            sage: h.is_clique()
     2786            False
     2787            sage: i = graphs.CompleteGraph(4).to_directed()
     2788            sage: i.delete_edge([0,1])
     2789            sage: i.is_clique()
     2790            True
     2791            sage: i.is_clique(directed_clique=True)
     2792            False
     2793        """
     2794
     2795        if directed_clique and self.is_directed():
     2796            subgraph=self.subgraph(vertices)
     2797            subgraph.loops(False)
     2798            subgraph.multiple_edges(False)
     2799            n=subgraph.order()
     2800            return subgraph.size()==n*(n-1)
     2801        else:
     2802            subgraph=self.subgraph(vertices).to_simple()
     2803            n=subgraph.order()
     2804            return subgraph.size()==n*(n-1)/2
     2805
     2806
     2807    def is_independent_set(self, vertices=None):
     2808        """
     2809        Returns True if the set \code{vertices} is an independent set, False
     2810        if not.  An independent set is a set of vertices such that
     2811        there is no edge between any two vertices.
     2812
     2813        INPUT:
     2814
     2815        vertices -- Vertices can be a single vertex or an iterable
     2816        container of vertices, e.g. a list, set, graph, file or
     2817        numeric array.  If not passed, defaults to the entire graph.
     2818
     2819
     2820        EXAMPLE:
     2821
     2822            sage: graphs.CycleGraph(4).is_independent_set([1,3])
     2823            True
     2824            sage: graphs.CycleGraph(4).is_independent_set([1,2,3])
     2825            False
     2826        """
     2827
    27682828        return self.subgraph(vertices).to_simple().size()==0
     2829
     2830
    27692831
    27702832class Graph(GenericGraph):
    27712833    r"""