Как мне реализовать A * в Java? - PullRequest
0 голосов
/ 09 января 2020

Вот что у меня есть для моего алгоритма поиска пути:

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 - длина сетки по ширине и высоте, и карта в порядке, карта. Это логическое значение [] [], со всем ложным, кроме случаев, когда есть препятствия. Я предполагал, что мой код будет немного переходить от квадрата к квадрату, повторяя и находя наиболее эффективный квадрат до go до следующего. Что это не так? Он просто бесконечно зацикливается.

1 Ответ

1 голос
/ 15 января 2020

Это не ответ на вопрос, почему ваш алгоритм не работает, а скорее полезный источник материала, на который вы могли бы взглянуть, чтобы понять, как работает A * в целом. Я реализовал этот алгоритм в java некоторое время назад go и недавно обновил его до java13 и поместил его на github здесь:

Github-репо для проекта алгоритма A * в java13

Кроме этого, есть программа визуального тестирования javafx, в которой вы можете поиграть с пакетом, созданным из вышеуказанного модуля. Это можно найти по ссылке ниже:

Git репозиторий * визуального тестового приложения

, если вы настроили maven для работы с github, второй проект будет я думаю, что автоматически получаю пакет A * от github.

...