首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rust的petgraph中,我如何测试一个节点是否是循环的一部分?

在Rust的petgraph中,我如何测试一个节点是否是循环的一部分?
EN

Stack Overflow用户
提问于 2021-02-27 12:41:49
回答 1查看 176关注 0票数 2

我正在使用Rust的petgraph库,我想知道如何检查节点是否是循环的一部分。petgraph::algo::is_cyclic_directed函数会告诉我图中是否有循环,但是在浏览了所有文档之后,我找不到任何函数来告诉我节点是否属于循环。我本以为这是一项非常常见的任务,因此需要一个helper函数。

现在我可以自己遍历图,但我能想出的代码既不是最简洁的,也不太可能是高效率的。

这里最好的选择是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-02-28 13:57:20

我认为这段代码正在工作,但如果有人知道更好的方法,我会很感激的!

代码语言:javascript
复制
use petgraph::{algo, visit};
fn is_node_in_cycle<G>(graph: G, node: G::NodeId) -> bool
where G: visit::IntoNeighbors + visit::Visitable {
    let mut space = algo::DfsSpace::new(&graph);
    for neighbour in graph.neighbors(node) {
        if algo::has_path_connecting(graph, neighbour, node, Some(&mut space)) {
            return true
        }
    }
    false
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66395664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档