Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在迷宫中寻找最短路径_Java_Algorithm_Shortest Path_Maze - Fatal编程技术网

Java 在迷宫中寻找最短路径

Java 在迷宫中寻找最短路径,java,algorithm,shortest-path,maze,Java,Algorithm,Shortest Path,Maze,我是业余程序员,学习如何编程。 我从未上过任何计算机科学课程,因此我遇到了这个小问题: class Room { String name; ArrayList<Room> neighbors = new ArrayList<Room>(); // constructor with name // getters void addNeighbor(Room room) { neighbors.add(room);

我是业余程序员,学习如何编程。 我从未上过任何计算机科学课程,因此我遇到了这个小问题:

class Room {
    String name;
    ArrayList<Room> neighbors = new ArrayList<Room>();

    // constructor with name
    // getters
    void addNeighbor(Room room) {
        neighbors.add(room);
    }
}

class Finder {
    void findShortestPath(Room start, Room end) {
        // ?
    }
}
教室{
字符串名;
ArrayList邻居=新的ArrayList();
//名为的构造函数
//吸气剂
空房间(房间){
邻居。添加(房间);
}
}
类查找器{
void findShortestPath(文件室开始、文件室结束){
// ?
}
}
每个房间都有邻居。超过4,所以它不像面向矩阵的问题。您将获得结束房间,您必须找到从开始房间到结束房间的最短路径(比较房间的名称)。结果应该是“方式”,如:

起点:厨房

完:厕所

路径:厨房、客厅、走廊、卧室、卫生间

我想我必须对房间使用一些递归,我想我应该保存我已经在堆栈中的位置。但我真的不知道如何开始

你们几个CS能帮我吗?谢谢你要找的人

在您的例子中,图形
G=(V,E)
实际上是
V={all rooms}
E={(u,V),(V,u)| u和V是相邻的房间}

请注意,在算法开始之前,您并不关心没有所有边[邻居]——您知道如何使用
邻居
字段动态计算相关的边[和房间]集。
这是真的,因为您需要用于路径的每一条“边”都是在您发现路径中距离源较近的房间时“发现”的


您可以查看-运行BFS后如何找到实际路径。

您想编写一个广度优先搜索。关于这个主题有很多可用的资源。

*\u搜索算法每个房间都需要花费一定费用的路线。然后你就可以穿越这些路线。@JakobBowyer只需将1作为成本:)@jonmorgan:字母表的第一个字母和它有什么关系:P@mellamokb:名称为“A*搜索算法”。Markdown只是在装傻。如果有帮助的话:)有了这些知识,我就能完成这件事。非常感谢。不客气,南希。如果你发现一个有用的答案,别忘了回答。