使用BGL实现random_spanning_tree

时间:2018-07-22 14:37:47

标签: c++ boost random-seed

我在实现random_spanning_tree时遇到了一些问题。

如何初始化随机数生成器?

[OperationContract]
[WebInvoke(Method = "GET",
    BodyStyle = WebMessageBodyStyle.Bare,
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json)]
public List<JsonObj> GetData(string date)
{
    jsonObjects = new List<JsonObj>();
    var getJsonObjects = dbConnection.GetDbData(jsonObjects, date);
    return getJsonObjects;
}

这是链接:map(_:)
运行该功能的 boost::uniform_int<> rng(0,9); boost::random::random_number_generator <boost::uniform_int<>, long> gen(rng); boost::random_spanning_tree(g, gen, boost::root_vertex(1).predecessor_map(&p[0]) ) ; 参数的模型应该是什么?
预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在我看来,您应该只通过引擎作为发电机。

示例

Live On Coliru

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/random_spanning_tree.hpp>
#include <random>

int main() {
    using G = boost::adjacency_list<>;

    std::mt19937 gen;
    //std::uniform_int_distribution<> rng(0,9);

    G g(10);
    add_edge(1, 2, g);
    add_edge(2, 3, g);
    add_edge(2, 6, g);
    add_edge(6, 4, g);
    std::vector<G::vertex_descriptor> p(num_vertices(g));

    boost::random_spanning_tree(g, gen, boost::root_vertex(1).predecessor_map(&p[0])); 
}

可预测的失败,发生boost::loop_erased_random_walk_stuck异常。