我使用各种搜索技术分配了一个问题。该问题与Escape From Zurg问题或Bridge and Torch问题非常相似。我的问题是我迷失了如何将数据表示为树。
这是我对如何做的猜测,但搜索没有多大意义。
另一种方法是使用按行走时间排序的二叉树。但是,我仍然不确定我是否正确地攻击了这个问题,因为搜索算法不一定需要二叉树。
任何有关表示此数据的提示都将受到赞赏。
答案 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;
....
}