Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码规范

C++ Boost sorted_erdos_renyi_iterator(已排序的 Erdös-Renyi 迭代器)
template<typename RandomGenerator, typename Graph>
class sorted_erdos_renyi_iterator
{
public:
  typedef std::input_iterator_tag iterator_category;
  typedef std::pair<vertices_size_type, vertices_size_type> value_type;
  typedef const value_type& reference;
  typedef const value_type* pointer;
  typedef void difference_type;

  sorted_erdos_renyi_iterator();
  sorted_erdos_renyi_iterator(RandomGenerator& gen, vertices_size_type n,
                              double probability = 0.0, bool allow_self_loops = false);

  // Iterator operations
  reference operator*() const;
  pointer operator->() const;
  sorted_erdos_renyi_iterator& operator++();
  sorted_erdos_renyi_iterator operator++(int);
  bool operator==(const sorted_erdos_renyi_iterator& other) const;
  bool operator!=(const sorted_erdos_renyi_iterator& other) const;
};

此类模板实现了一个 Erdös-Renyi 图的生成器,适用于使用基于迭代器的初始化来初始化 adjacency_list(邻接表) 或其他图结构。Erdös-Renyi 图 G = (n, p) 是一个具有 n 个顶点的图,其中对于任何顶点 uv,在 G 中存在边 (u, v) 的概率为 p。通常情况下,没有自环,但生成器可以选择以概率 p 引入自环。

Erdös-Renyi 图通常很少展现出结构。因此,它们在建模现实世界问题时很少有用。然而,它们经常用于确定复杂图算法的理论复杂度。

定义位置

boost/graph/erdos_renyi_generator.hpp

构造函数

sorted_erdos_renyi_iterator();
构造一个指向末尾的迭代器。
sorted_erdos_renyi_iterator(RandomGenerator& gen, vertices_size_type n,
                            double probability = 0.0, bool allow_self_loops = false);
构造一个 Erdös-Renyi 生成器迭代器,该迭代器创建一个具有n个顶点和给定概率(简单图可能具有的边总数的概率)的图。使用随机数生成器gen选择随机顶点和边。仅当allow_self_loopstrue.

时才允许自环。

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/erdos_renyi_generator.hpp>
#include <boost/random/linear_congruential.hpp>

typedef boost::adjacency_list<> Graph;
typedef boost::sorted_erdos_renyi_iterator<boost::minstd_rand, Graph> ERGen;

int main()
{
  boost::minstd_rand gen;
  // Create graph with 100 nodes and edges with probability 0.05
  Graph g(ERGen(gen, 100, 0.05), ERGen(), 100);
  return 0;
}


示例版权所有 © 2005)
Jeremiah Willcock,印第安纳大学()
Doug Gregor,印第安纳大学()