gpt4 book ai didi

c++ - 如何在无向图中找到两条边的相等性?

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:31 26 4
gpt4 key购买 nike

使用 boost 图形库,我有这种类型的图形:

typedef boost::adjacency_list<
boost::vecS, //OutEdgeList
boost::vecS, //VertexList
boost::undirectedS //Directed
> Graph;

并添加几个 2 边:

boost::add_edge(0, 1, g);
boost::add_edge(0, 2, g);
boost::add_edge(1, 0, g);
boost::add_edge(2, 4, g);
boost::add_edge(4, 3, g);
boost::add_edge(3, 1, g);

我想检查 2 个边的“相等性”:0-1 和 1-0。

我需要一个实现的起点。

谢谢

最佳答案

我的解决方案当然不是最优雅的。这是我所做的:我将顶点成对放置,完成相等函数,然后检查对等性。

1) 将顶点配对:

std::pair<unsigned int, unsigned int> pairEdge( boost::numeric_cast<unsigned int>(boost::source(e, g)), boost::numeric_cast<unsigned int>(boost::target(e, g)));

2)完成相等函数

template <typename T1, typename T2>
bool pairEquality(std::pair<T1, T2> &lhs, std::pair<T1, T2> &rhs) {
//standard way
if (lhs == rhs) {
return true;
};

//permutation
std::pair<T1, T2> lhsSwap(lhs.second, lhs.first);
if (lhsSwap == rhs) {
return true;
}
return false;
}

3) 通过栈的for循环检查是否相等

关于c++ - 如何在无向图中找到两条边的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com