假设我有一个无向图 G。假设我添加以下内容
add_edge(1,2,G);
add_edge(1,3,G);
add_edge(0,2,G);
现在我再说一遍:
add_edge(0,2,G);
我的图中从 0 ---> 2 开始有两条边吗?
如果我添加了两次边缘并且我这样做了会发生什么:
remove_edge(0,2,G);
两个边缘都消失了,还是我还有其中之一?
最佳答案
你的两个问题的答案都取决于图 G 的定义。
第一个问题的答案,根据boost::graph tutorial , 取决于哪个 OutEdgeList
您在图形定义中使用。如果使用不能表示多条边的容器(例如 setS
或 hash_setS
),无论插入多少次,两个顶点之间都只会有一条边。如果您使用 vectorS
, multisetS
或类似的,每次调用 add_edge()
都会插入一条边。 .
第二个问题的答案,根据the same page (页面的该部分不允许直接链接 - 只需搜索 remove_edge
)是在调用特定的 remove_edge()
后将删除两个顶点之间的所有边。功能。 remove_edge()
还有其他几个版本(在同一页面上描述),每个都有略微不同的行为。
关于boost - 在图中添加和删除现有边(BOOST)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27191846/