Производительность алгоритма поиска в глубину (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?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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