提升图形库:防止 DFS 访问未连接的节点
Boost Graph Library: Prevent DFS from visiting unconnected nodes
我有一个双向图。某些顶点未连接。我使用 boost::d epth_first_search 来遍历顶点。我还提供起始源节点。我看到未连接的顶点也在连接的节点完成后进行处理。如何防止访问此类节点?事实上,如何告诉 DFS 只访问可从源节点访问的节点,而不访问其他任何节点?
我有以下代码:
/// Define vertex properties.
struct NodeProperty
{
unsigned id; /// Id.
unsigned kind; /// Kind.
unsigned depth; /// Depth.
unsigned layer_color; /// Layer color.
unsigned signal_color; /// Signal color.
unsigned sch_color; /// Sch color.
CBoundingBox bounds; /// Bounds of polygon.
NodeProperty()
: id(0), kind(0), depth(0), layer_color(0), signal_color(0), sch_color(0), bounds(0,0,0,0)
{
;
}
};
/// Define net topology graph.
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, NodeProperty> Graph;
class receiver_visitor : public boost::default_dfs_visitor
{
public:
receiver_visitor(std::vector<Vertex>& r)
: res(r)
{
;
}
void discover_vertex(Vertex v, Graph const& g) const
{
std::cout << "Visit: " << v << std::endl;
if (g[v].sch_color) {
res.push_back(g[v].sch_color);
}
}
std::vector<Vertex>& res;
};
std::vector<std::size_t>
NetTopology::getReceivers(std::size_t src) const
{
std::vector<Vertex> r;
receiver_visitor vis(r);
boost::depth_first_search(data_->g, boost::visitor(vis).root_vertex(src));
return r;
}
你想使用depth_first_visit
,而不是depth_first_search
。
相关文章:
- 反向给定链表中的K节点
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- Boost Graph Library,修复节点大小
- 将头连接到链表中的其他节点
- C++ 链表合并排序的实现在连接 1 个以上节点的子列表时失败
- 如何使用指针连接两种不同的节点类型(结构)?
- 节点MCU上的持久https连接
- 查找树(不属于任何特定类型的简单连接树)中两个节点之间的路径
- 如何将这些节点连接为有向图
- Linux复制文件连接到节点JS / Python / C / C 之后
- 连接二叉树中同一级别的节点
- 如何将C++应用程序与节点.js服务器连接以获取 JSON 数据
- 检查节点是否使用Maya API连接到特定的插头
- 提升图形库:防止 DFS 访问未连接的节点
- 连接具有n个节点的图中k个节点的最小路径
- 创建一组随机连接的节点
- DFS:如何在c++中表示连接组件的节点
- 将两个传感器dht11和dht22连接到同一个节点模块esp-12e
- 动态连接 QML 中图形的节点 la Pd 或 Max(又名"patching"接口)
- 社交图中 2 个节点之间的连接程度