Heim  >  Artikel  >  Java  >  So implementieren Sie den Tiefensuchalgorithmus mit Java

So implementieren Sie den Tiefensuchalgorithmus mit Java

WBOY
WBOYOriginal
2023-09-19 16:51:351199Durchsuche

So implementieren Sie den Tiefensuchalgorithmus mit Java

So implementieren Sie einen Tiefensuchalgorithmus in Java

Die Tiefensuche (DFS) ist ein klassischer Suchalgorithmus in der Graphentheorie, der normalerweise zur Lösung von Graphen- oder Baumdurchquerungsproblemen verwendet wird. In diesem Artikel wird das Schreiben eines Tiefensuchalgorithmus mit Java vorgestellt und spezifische Codebeispiele bereitgestellt.

  1. Algorithmusprinzip

Die Tiefensuche (DFS) beginnt an einem Knoten und geht einen Pfad entlang, bis es nicht mehr weitergeht, geht dann zum vorherigen Knoten zurück und versucht einen anderen Pfad. Diese Suchmethode ähnelt der Erkundung eines Labyrinths. Wir wählen zunächst einen Knoten als Startpunkt aus, markieren ihn als besucht und besuchen dann rekursiv seine angrenzenden Knoten, bis der Endpunkt erreicht ist oder alle Knoten besucht wurden.

  1. Implementierungsschritte

Schritt 1: Erstellen Sie eine Diagrammklasse, um die Struktur des Diagramms darzustellen. Wir können Diagramme mithilfe von Adjazenzlisten oder Adjazenzmatrizen darstellen.

class Graph {
    private int V; // 图的顶点数
    private LinkedList<Integer> adj[]; // 邻接表

    // 构造方法
    Graph(int v) {
        V = v;
        adj = new LinkedList[v];
        for(int i=0; i<v; ++i) {
            adj[i] = new LinkedList();
        }
    }

    // 添加边
    void addEdge(int v, int w) {
        adj[v].add(w);
    }

    // 深度优先搜索
    void DFS(int v, boolean visited[]) {
        visited[v] = true; // 标记当前节点为已访问

        System.out.print(v + " "); // 打印当前节点

        Iterator<Integer> i = adj[v].listIterator();
        while(i.hasNext()) {
            int n = i.next();
            if(!visited[n]) {
                DFS(n, visited);
            }
        }
    }

    // 对图进行深度优先搜索
    void depthFirstSearch(int v) {
        boolean visited[] = new boolean[V]; // 用于记录节点是否已经访问过

        DFS(v, visited);
    }
}

Schritt 2: Erstellen Sie eine Testklasse, um die Richtigkeit des Tiefensuchalgorithmus zu überprüfen.

class DFSAlgorithm {
    public static void main(String args[]) {
        Graph graph = new Graph(5); // 创建一个包含5个顶点的图

        graph.addEdge(0, 1);
        graph.addEdge(0, 2);
        graph.addEdge(1, 3);
        graph.addEdge(2, 4);

        System.out.println("深度优先搜索结果:");
        graph.depthFirstSearch(0);
    }
}
  1. Laufende Ergebnisse

Ergebnisse der Tiefensuche:
0 1 3 2 4

  1. Zusammenfassung

Der Tiefensuchalgorithmus ist ein häufig verwendeter Diagrammalgorithmus, der alle Knoten im Diagramm durchlaufen kann. Durch Rekursion können wir einfach den Tiefensuchalgorithmus implementieren. Der obige Code stellt ein Beispiel für einen grundlegenden Tiefensuchalgorithmus dar, den Sie entsprechend den tatsächlichen Anforderungen ändern und erweitern können.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Tiefensuchalgorithmus mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn