| 1 | <html> | 
|---|
| 2 | <!-- | 
|---|
| 3 |   -- Copyright (c) 2003 Vladimir Prus | 
|---|
| 4 |   -- | 
|---|
| 5 |   -- Distributed under the Boost Software License, Version 1.0. | 
|---|
| 6 |   -- (See accompanying file LICENSE_1_0.txt or copy at | 
|---|
| 7 |   -- http://www.boost.org/LICENSE_1_0.txt) | 
|---|
| 8 |   --> | 
|---|
| 9 | <head> | 
|---|
| 10 | <title>Boost Graph Library: random</title> | 
|---|
| 11 |  | 
|---|
| 12 | <body BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"  | 
|---|
| 13 |         ALINK="#ff0000">  | 
|---|
| 14 | <IMG SRC="../../../boost.png"  | 
|---|
| 15 |      ALT="C++ Boost" width="277" height="86">  | 
|---|
| 16 |  | 
|---|
| 17 | <br> | 
|---|
| 18 |  | 
|---|
| 19 | The header <tt><boost/graph/random></tt> provides routines to create | 
|---|
| 20 | random graph, select random vertices and edges, and randomize properties. | 
|---|
| 21 |  | 
|---|
| 22 | <h1>Synopsis</h1> | 
|---|
| 23 |  | 
|---|
| 24 | <pre> | 
|---|
| 25 |  | 
|---|
| 26 |   template <class Graph, class RandomNumGen> | 
|---|
| 27 |   typename graph_traits<Graph>::vertex_descriptor | 
|---|
| 28 |   random_vertex(Graph& g, RandomNumGen& gen); | 
|---|
| 29 |  | 
|---|
| 30 |   template <class Graph, class RandomNumGen> | 
|---|
| 31 |   typename graph_traits<Graph>::edge_descriptor | 
|---|
| 32 |   random_edge(Graph& g, RandomNumGen& gen); | 
|---|
| 33 |  | 
|---|
| 34 |   template <typename MutableGraph, class RandNumGen> | 
|---|
| 35 |   void generate_random_graph | 
|---|
| 36 |     (MutableGraph& g,  | 
|---|
| 37 |      typename graph_traits<MutableGraph>::vertices_size_type V, | 
|---|
| 38 |      typename graph_traits<MutableGraph>::vertices_size_type E, | 
|---|
| 39 |      RandNumGen& gen, | 
|---|
| 40 |      bool self_edges = false); | 
|---|
| 41 |  | 
|---|
| 42 |   template<class Property, class G, class RandomGenerator> | 
|---|
| 43 |     void randomize_property(G& g, RandomGenerator rg); | 
|---|
| 44 |  | 
|---|
| 45 | </pre> | 
|---|
| 46 |  | 
|---|
| 47 | <h1>Description</h1> | 
|---|
| 48 |  | 
|---|
| 49 | <h2 id="random_vertex">random_vertex</h2> | 
|---|
| 50 |  | 
|---|
| 51 | <pre> | 
|---|
| 52 |   template <class Graph, class RandomNumGen> | 
|---|
| 53 |   typename graph_traits<Graph>::vertex_descriptor | 
|---|
| 54 |   random_vertex(Graph& g, RandomNumGen& gen); | 
|---|
| 55 | </pre> | 
|---|
| 56 |  | 
|---|
| 57 | <p><b>Effects:</b> Selects a random vertex in a graph and returns it. | 
|---|
| 58 | <p><b>Preconditions:</b> <tt>num_vertices(g) != 0</tt> | 
|---|
| 59 | <p><b>Complexity:</b> <tt>O(num_vertices(g))</tt> | 
|---|
| 60 |  | 
|---|
| 61 | <h2 id="random_edge">random_edge</h2> | 
|---|
| 62 |  | 
|---|
| 63 | <pre> | 
|---|
| 64 |   template <class Graph, class RandomNumGen> | 
|---|
| 65 |   typename graph_traits<Graph>::edge_descriptor | 
|---|
| 66 |   random_edge(Graph& g, RandomNumGen& gen); | 
|---|
| 67 | </pre> | 
|---|
| 68 |  | 
|---|
| 69 | <p><b>Effects:</b> Selects a random edge in a graph and returns it. | 
|---|
| 70 | <p><b>Preconditions:</b> <tt>num_edges(g) != 0</tt> | 
|---|
| 71 | <p><b>Complexity:</b> <tt>O(num_edges(g))</tt> | 
|---|
| 72 |  | 
|---|
| 73 | <h2 id="generate_random_graph">generate_random_graph</h2> | 
|---|
| 74 |  | 
|---|
| 75 | <pre> | 
|---|
| 76 |   template <typename MutableGraph, class RandNumGen> | 
|---|
| 77 |   void generate_random_graph | 
|---|
| 78 |     (MutableGraph& g,  | 
|---|
| 79 |      typename graph_traits<MutableGraph>::vertices_size_type V, | 
|---|
| 80 |      typename graph_traits<MutableGraph>::vertices_size_type E, | 
|---|
| 81 |      RandNumGen& gen, | 
|---|
| 82 |      bool allow_parallel = true, | 
|---|
| 83 |      bool self_edges = false); | 
|---|
| 84 | </pre> | 
|---|
| 85 |  | 
|---|
| 86 | <p><b>Effects:</b> Adds <tt>V</tt> vertices and <tt>E</tt> edges, to | 
|---|
| 87 | <tt>g</tt>. Source and target vertices of each edge are randomly choosen. If | 
|---|
| 88 | <tt>self_edges</tt> is false, then no edge will have the same source and | 
|---|
| 89 | targets. | 
|---|
| 90 | <p><b>Precondition:</b> <tt>num_vertices(g) == 0</tt> | 
|---|
| 91 | <p><b>Compleixity:</b> <tt>O(V*E)</tt> | 
|---|
| 92 |  | 
|---|
| 93 | <h2 id="randomize_property">randomize_property</h2> | 
|---|
| 94 |  | 
|---|
| 95 | <pre> | 
|---|
| 96 |   template<class Property, class G, class RandomGenerator> | 
|---|
| 97 |     void randomize_property(G& g, RandomGenerator& rg); | 
|---|
| 98 | </pre> | 
|---|
| 99 |  | 
|---|
| 100 | <p><b>Effects:</b> Sets the random value of property on either all vertices, or | 
|---|
| 101 | all edges, depending on property kind. | 
|---|
| 102 | <p><b>Complexity:</b> <tt>O(V)</tt> or <tt>O(E)</tt>, depending on property | 
|---|
| 103 | kind. | 
|---|
| 104 |  | 
|---|
| 105 | <hr> | 
|---|
| 106 |  | 
|---|
| 107 | <p class="revision">Last modified: Feb 05, 2003</p> | 
|---|
| 108 |  | 
|---|
| 109 | <p>© Copyright Vladimir Prus 2003. Permission to copy, use, modify, | 
|---|
| 110 | sell and distribute this document is granted provided this copyright | 
|---|
| 111 | notice appears in all copies. This document is provided ``as is'' without | 
|---|
| 112 | express or implied warranty, and with no claim as to its suitability for | 
|---|
| 113 | any purpose.</p> | 
|---|
| 114 |  | 
|---|
| 115 | </body> | 
|---|
| 116 |  | 
|---|
| 117 | </html> | 
|---|