深度搜索算法dfs
深度搜索算法用于查找图中某一点到另一点的距离。下面有C#实现深度搜索算法
public class DepthFirstPaths
{
private Boolean[] marked;//用一个布尔数组存储哪些顶点已经被访问过
private int[] edgeTo;//从起点到一个顶点的已知路径上的最后一个顶点
private static int firstPoint;//起点
public DepthFirstPaths(Graph G, int s)
{
marked = new Boolean[G.GetV()];
edgeTo = new int[G.GetV()];
firstPoint = s;
dfs(G, s);
}
private void dfs(Graph G, int v)
{
marked[v] = true;
foreach (int w in G.getAddj(v))
{
if (!marked[w])
{
edgeTo[w] = v;
dfs(G, w);
}
}
}
public bool hasPathTo(int v)
{
return marked[v];
}
public List<int> pathTo(int v)
{
if (!hasPathTo(v)) return null;
List<int> path = new List<int>();
for (int x = v; x != firstPoint; x = edgeTo[x])
{
path.Add(x);
}
path.Add(firstPoint);
return path;
}
}
创建一个类用于设置图中1的所有顶点,可以看从顶点1能够到哪些顶点。