gpt4 book ai didi

c# - 通过有向图查找路径的递归 lambda 表达式?

转载 作者:太空狗 更新时间:2023-10-30 00:59:26 26 4
gpt4 key购买 nike

我需要在复杂的图形结构中找到一条或多条路径。该图是使用与此类似的东西构建的:

class Node
{
public string Value { get; set;}
public List<Node> Nodes { get; set;}

public Node()
{
Nodes = new List<Node>();
}
}

让事情变得复杂的是节点可以引用回更早的节点。例如,

A -> C -> E -> A

我需要做的是获取一个堆栈列表,这些堆栈表示通过节点的路径,直到我到达具有特定值的节点。由于可能有一些非常大的路径可用,我们可以尝试最大节点数。

List<Stack<Node>> paths = FindPaths(string ValueToFind, int MaxNumberNodes);

有没有人有办法构建这个(或类似的东西)?我过去做过递归,但出于某种原因,我脑子里全是屁。我的问题指定了一个 lambda 表达式,但不一定需要使用 lambda。如果有任何解决方案,我将不胜感激。

旁注:我从 aku 对 this recursion question 的出色回答中提取了类(class).虽然他下面显示的优雅解决方案遍历了树结构,但它似乎没有足够的灵 active 来执行我需要的操作(例如,关闭圆形路径并跟踪成功的路径)。

Action<Node> traverse = null;
traverse = (n) => { Console.WriteLine(n.Value); n.Nodes.ForEach(traverse);};
traverse(root); // where root is the tree structure

编辑:

根据以下评论和答案的输入,我在 CodeProject 中找到了一个很好的解决方案。它使用 A* 寻路算法。 Here is the link.

最佳答案

如果您遇到的问题与 Pathfinding 相关,您可能需要在 google 上搜索“A star”或“A*”。它是一种通用且高效的寻路算法。参见 this article有关与您的问题直接相关的示例。

您可能还想查看 Dijsktra Algorithm

关于c# - 通过有向图查找路径的递归 lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/396296/

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