LAL: Linear Arrangement Library 24.10.00
A library focused on algorithms on linear arrangements of graphs.
|
Uniformly random selection of projective arrangements of a rooted tree. More...
#include <rand_projective_arrangements.hpp>
Public Member Functions | |
rand_projective_arrangements (const graphs::rooted_tree &rT, const uint64_t seed=0) noexcept | |
Constructor with tree. | |
rand_projective_arrangements (const rand_projective_arrangements &Gen) noexcept=default | |
Default copy constructor. | |
rand_projective_arrangements (rand_projective_arrangements &&Gen) noexcept=default | |
Default move constructor. | |
~rand_projective_arrangements ()=default | |
Default destructor. | |
linear_arrangement | get_arrangement () noexcept |
Make a random projective arrangement of a rooted tree. | |
linear_arrangement | yield_arrangement () noexcept |
Returns a random projective arrangement. | |
Private Attributes | |
const graphs::rooted_tree & | m_rT |
The rooted tree of which we are making projective arrangements uniformly at random. | |
detail::array< detail::array< node > > | m_rdata |
The random data for all vertices. | |
std::mt19937 | m_gen |
Random number generator. | |
Uniformly random selection of projective arrangements of a rooted tree.
This class does not take into account the symmetries between arrangements produced by swapping leaves of the tree connected to the same parent. That is, the arrangements are select from the can be seen as arrangements of labelled trees. Therefore, this class will select u.a.r. one of the \(n!\) arrangements for a star tree of \(n\) vertices.
See Types of arrangements for the definition of projective arrangements.
An example of usage of this class is
Equivalently,
|
noexcept |
Constructor with tree.
rT | Input rooted tree |
seed | The seed used for the random generator. If the seed is 0 then a random seed is generated and used. |
|
defaultnoexcept |
Default copy constructor.
Gen | Random projective arrangement generator. |
|
defaultnoexcept |
Default move constructor.
Gen | Random projective arrangement generator. |
|
nodiscardnoexcept |
Make a random projective arrangement of a rooted tree.
|
private |
The random data for all vertices.
This is a member of the class to avoid its initialisation at every call to get_arrangement.