BFS在非加权有向图上。如何返回A和B之间的路径列表

时间:2015-05-03 00:24:31

标签: c# graph

我有一个用图表表示的网格。每个“节点”称为Cell。

我想要输出的是从A到B的路径。我在控制台上写了输出,我发现它是错误的。特别是它似乎产生了一个“跳跃”很多的路径,意思是从一个节点到下一个节点没有直接链接。

如果正常工作,我只需要一条从A到B的路径,而不是到达每个节点的路径。

我的代码出了什么问题?

Cell是一个包含List<Cell> NearCells的对象,其中包含所有adiacent单元格的引用。

    private List<Cell> FindPath(Cell A, Cell B)
    {
        List<Cell> path = new List<Cell>();
        List<Cell> visited = new List<Cell>();

        path.Add(A);

        while (path.Count != 0)
        {
            Cell c = path[0];
            path.RemoveAt(0);

            visited.Add(c);

            if (c == B)
                return path;

            foreach (Cell near in c.NearCells)
            {
                    if (!visited.Contains(near))
                    {
                        visited.Add(near);
                        path.Add(near);
                    }
            }

        }

        return path;
    }

0 个答案:

没有答案