在boost :: graph

时间:2019-03-28 09:54:21

标签: c++ boost

我想通过以下方式将边缘添加到增强图中

boost::add_edge(100,101,g);
boost::add_edge(101,111,g);

,使图仅存储顶点101,101,111。如果我尝试使用此辅助功能显示图形内容

void Display() {
    Viter vIt, vEnd;
    Aiter nIt, nEnd;
    boost::tie(vIt, vEnd) = vertices(G);
    for (; vIt != vEnd; ++vIt)
    {
        std::cout << *vIt << " is connected with ";
        boost::tie(nIt, nEnd) = boost::adjacent_vertices(*vIt, G);
        for (; nIt != nEnd; ++nIt) {
            std::cout << *nIt << " ";
        }
        std::cout << "\n";
    }
}

然后我得到输出

0 is connected with
1 is connected with
...
100 is connected with 101

表示图正在自动形成其他顶点。有什么方法可以做到这一点而又不增加时间/空间的复杂性吗?即我可以引入一种映射,该映射会将0到0的整数映射到我要使用的整数。

  

我的问题是,有没有办法停止助推?还是如果我不理会空间复杂性真的有害吗?

邻接表的理论空间复杂度意味着,由于空间复杂度为$ O(V + E)$,因此这是有害的。

我的图形定义为

typedef boost::adjacency_list<boost::setS, boost::vecS, boost::undirectedS> Graph;

如果我将第二个模板更改为boost :: setS,则会被告知没有匹配的调用

boost::add_edge(n,m,g)

0 个答案:

没有答案