Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Parallel BGL Unique R-MAT generator

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Parallel BGL Unique R-MAT generator

 template<typename RandomGenerator, typename Graph>
 class unique_rmat_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;
   unique_rmat_iterator();
   unique_rmat_iterator(RandomGenerator& gen, vertices_size_type n,
                 edges_size_type m, double a, double b, double c,
                 double d, bool permute_vertices = true);
   // Iterator operations
   reference operator*() const;
   pointer operator->() const;
   unique_rmat_iterator& operator++();
   unique_rmat_iterator operator++(int);
   bool operator==(const unique_rmat_iterator& other) const;
   bool operator!=(const unique_rmat_iterator& other) const;
};

Этот шаблон класса реализует генератор для графов R-MAT[CZF04]., подходит для инициализации списка смежности или другой графовой структуры с инициализацией на основе итератора. График R-MAT имеет степень безмасштабного распределения w.r.t. и реализуется с использованием разбиения Recursive-MATrix. Список краев, создаваемый этим итератором, гарантированно не содержит параллельных краев.

Where Defined

boost/graph/rmat_graph_generator.hpp>

Constructors

unique_rmat_iterator();

Создает итератор прошлого-конца.

unique_rmat_iterator(RandomGenerator& gen, vertices_size_type n,
                     edges_size_type m, double a, double b, double c,
                     double d, bool permute_vertices = true,
                     EdgePredicate ep = keep_all_edges());

Конструирует итератор генератора R-MAT, который создает граф сnвершинами имкраями.a,b,cиdпредставляют вероятность того, что сгенерированный край расположен на каждом из 4 квадрантов разделённой матрицы смежности. Вероятности взяты из генератора случайных чиселгена. Индексы Vertex изменяются для устранения локальности, когдаpermute_verticesЭто правда.epпозволяет пользователю указать, какие края сохраняются, это полезно в том случае, когда пользователь желает воздерживаться от хранения удаленных краев локально во время генерации для снижения потребления памяти.

Example

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/rmat_graph_generator.hpp>
#include <boost/random/linear_congruential.hpp>
typedef boost::adjacency_list<> Graph;
typedef boost::unique_rmat_iterator<boost::minstd_rand, Graph> RMATGen;
int main()
{
  boost::minstd_rand gen;
  // Create graph with 100 nodes and 400 edges
  Graph g(RMATGen(gen, 100, 400, 0.57, 0.19, 0.19, 0.05,),
          RMATGen(), 100);
  return 0;
}

Bibliography

[CZF04]D Chakrabarti, Y Zhan и C Faloutsos. R-MAT: Рекурсивная модель для графического майнинга. Proceedings of 4th International Conference on Data Mining, pages 442--446, 2004.

Copyright (C) 2009 Попечители Университета Индианы.

Авторы: Ник Эдмондс и Эндрю Ламсдейн

Статья Parallel BGL Unique R-MAT generator раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 11:02:45/0.006317138671875/0