繁体   English   中英

如何在 Java 中实现 A*?

[英]How do I implement A* in Java?

到目前为止,这是我的寻路算法:

public void AAlg(int a, int b){
        boolean bool=true;
        while(bool) {
            bool = false;
            for (int i = 0; i <map.length; i++) {
                for (int j = 0; j < map.length; j++) {
                    if(ifObj(i, j)) {
                        bool=true;
                    }
                }
            }
            int smallest=N;
            int[] coords = new int[2];
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    if((i==1&&j==0)||(i==2&&j==1)||(i==1&&j==2)||(i==0&&j==1)) {
                        findFGH(i+a,j+b);
                        if(f<smallest) {
                            smallest=f;
                            coords[0]=i+a;
                            coords[1]=j+b;
                        }
                    }
                }
            }
            if(coords[0]==N-1&&coords[1]==.N-1) {
                System.out.println("The distance travelled is "+cnt);
            }
            AAlg(coords[0], coords[1]);
            cnt++;
        }

N 是网格的宽度和高度的长度,地图很好,地图。 它是一个布尔值[][],除了有障碍物的地方外,一切都是假的。 我设想我的代码只是从一个方块到另一个方块,迭代并找到最有效的方块以进行下一步。 有什么错? 它只是无限循环。

这不是为什么您的算法不起作用的答案,而是更多有用的材料来源,您可以查看以了解 A* 通常如何工作。 前段时间我在java中实现了这个算法,最近升级到java13,放到github上:

用于 java13 中 A* 算法项目的 Github 存储库

在此之上是一个 javafx 可视化测试程序,您可以在其中使用从上述模块创建的包。 这可以在以下链接中找到:

A* 视觉测试应用程序的 Git 存储库

如果您已将 maven 设置为与 github 一起使用,我认为第二个项目将自动从 github 获取 A* 包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM