如何表示要用于DFS / BFS的数据

时间:2012-02-01 20:41:23

标签: algorithm data-structures tree multiway-tree

我使用各种搜索技术分配了一个问题。该问题与Escape From Zurg问题或Bridge and Torch问题非常相似。我的问题是我迷失了如何将数据表示为树。

这是我对如何做的猜测,但搜索没有多大意义。

Graph

另一种方法是使用按行走时间排序的二叉树。但是,我仍然不确定我是否正确地攻击了这个问题,因为搜索算法不一定需要二叉树。

任何有关表示此数据的提示都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

通常,当您使用树搜索来解决问题时,每个节点代表一个可能的世界“状态”(例如,谁在桥的哪一侧),并且每个节点的子节点代表所有可能的“继承国“(可以从前一个州一步到达的新州)。深度优先搜索然后表示尝试一个选项直到它结束,然后备份到另一个选项可用的最后状态并尝试它。广度优先搜索表示并行尝试大量选项,并查看第一个选项何时找到目标节点。

就实际的编码方式而言,您可以将其表示为多路树。每个节点可能包含当前状态,以及指向子节点的指针列表。

希望这有帮助!

答案 1 :(得分:1)

你可以使用这样的东西:

public class Node
{
   public int root;
   public List<Node> neighbours;
   public Node(int x)
   {
       root=x;
   }
   public void setNeighboursList(List<Node> l)
   {
       neighbours = l;
   }
   public void addNeighbour(Node n)
   {
       if(neighbours==null) neighbours = new ArrayList<Node>();
       neighbours.add(n);
   }
   ...
} 

public class Tree
{
    public Node root;
    ....
}