Производительность алгоритма поиска в глубину (DFS) в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Производительность алгоритма поиска в глубину (DFS) в Java

Сообщение Anonymous »

Я рекурсивно реализовал поиск в глубину (DFS) на Java.
Моя текущая реализация выполняет поиск по всему списку узлов каждый раз, когда я иду по ребру, чтобы найти целевой узел.

Код: Выделить всё

public void dfsSearch(String start){
List besuchliste = new ArrayList();
for(int i = 0; i < getKnotenListe().size();i++){
Knoten knoten = getKnotenListe().get(i);
if(knoten.get_name().equals(start)){
hilfMethodea(knoten,besuchliste);
}
}
}

private void hilfsMethode(Knoten aktuellerknoten, List besuchsliste){
besuchsliste.add(aktuellerknoten.get_name());
System.out.println("Besuchter Knoten" + aktuellerknoten.get_name());
for(int i = 0; i < aktuellerknoten.get_kanten().size();i++){
Kante kante = aktuellerknoten.get_kanten().get(i);
String ziel  = String.valueOf(kante.get_ziel());
if(!besuchsliste.contains(ziel)){
for (int j = 0; j < getKnotenListe().size(); j++){
Knoten knoten = getKnotenListe().get(i);
if(knoten.get_name().equals(ziel)){
hilfMethodea(knoten,besuchsliste);
break;
}
}
}

}
Это работает, но кажется неэффективным из-за вложенного цикла.
Мне интересно:
  • Есть ли более чистый способ определения целевых узлов?
  • Должен ли я использовать Map для более быстрого поиска?
  • Есть ли дополнительные улучшения в отношении лучших практик DFS в Java?

Вернуться в «JAVA»