String Pathing BFS

时间:2013-04-30 19:00:13

标签: java string path breadth-first-search

我试图找到两个字符串之间的最短路径,并返回一个int,其中包含了多少步骤。鉴于我有一个HashMap,其中每个String(键)都有一个包含所有字符串邻居的String[](对象)。

这段代码是我掀起的。我刚拿了一个基本的BFS并尝试复制它,但我无法找到进步的方法。

public class Main {
private static HashMap<String, String[]> list;

private static int makePath(String from, string to) {

    int path = 0;
    PriorityQueue<String> queue = new PriorityQueue<>();
    queue.add(from);

    while (!queue.isEmpty()) {
        String u = queue.poll();
        if (u == to) {
            return path;
        }
        else {
            for (String r : list.get(u)) {

               ...

            }
            return path;
        }
    }
    return 0;
}

}

这只是我的HashMap可能的样子:

Goat, adj[] {Fish, Cow, Chicken}
Cow, adj[] {Pig, Pigeon}
Fish, adj[] {Goat, Bulbasaur, Dolphin, Eagle}

从鱼到牛我需要两个步骤。从鱼到山羊,从山羊到鱼。

所以如果你有任何想法可以随意分享:)

1 个答案:

答案 0 :(得分:0)

我正在考虑使用2个队列。我将from单词排入firstQueue,而firstQueue不为空,我将执行交替逻辑以将邻居存储在另一个队列中,如果该邻居仍然不等于{{1 }}

如果我提供代码,它会更清楚,

to