/// DEEP SEARCH PROTOCOL: LEVEL 4-6 ///
STATUS: Grundstruktur steht. Wir müssen nun den Kern-Algorithmus Zeile für Zeile zusammensetzen.
Level 4: Der Scanner (Nachbarn suchen)
Wir stehen auf einem Knoten und wollen alle möglichen anderen Knoten anschauen, um zu prüfen, ob sie Nachbarn sind.
Schritt 4.1: Die Auswahl
Welcher algorithmische Baustein eignet sich am besten, um eine **bekannte Anzahl** an Knoten (0 bis anzKnoten) nacheinander abzulaufen?
Schritt 4.2: Code-Konstruktion
Baue den Kopf der Schleife zusammen.
i++
(
i < anzKnoten;
while
)
i <= anzKnoten;
int i=0;
for
int k=0;
{
do
}
k++
k < anzKnoten
if (
);
Level 5: Die Entscheidung (If-Logik)
Wir haben nun eine Zählvariable i, die alle Knotennummern durchläuft.
Wir müssen nun prüfen: "Darf ich zu Knoten i gehen?"
Schritt 5.1: Die Datenquellen
Welche zwei Bedingungen müssen gleichzeitig wahr sein?
Schritt 5.2: Syntax-Montage
Setze die IF-Bedingung zusammen. Achte auf die korrekten Arrays und Indizes!
Tipp: Wir sind bei aktuellerKnoten und schauen zu i.
besucht[i]
(
!besucht[i]
||
adja[i][i]
besucht[aktuellerKnoten]
adja[aktuellerKnoten][i]
&&
)
{
if
while
!besucht[aktuellerKnoten]
adja[i][aktuellerKnoten]
== true
false
Level 6: Der Abstieg (Rekursion)
Die Bedingung ist wahr: Es gibt einen Weg zu i und wir waren dort noch nicht.
Jetzt rufen wir unsere Funktion erneut auf. Aber Achtung bei den Parametern!
Schritt 6.1: Parameter-Wahl
Die Methode heißt: tiefensucheRekursiv(int aktuellerKnoten, int zielKnoten, boolean[] besucht)
Wir rufen sie nun innerhalb der Schleife auf. Welchen Wert übergeben wir als neuen Startpunkt?
SYSTEM UNLOCKED
Du hast alle Komponenten im Kopf zusammengesetzt. Gehe jetzt in den Java-Workspace.
Implementiere TODO 3 (Schleife), TODO 4 (Bedingung) und TODO 5 (Rekursion) genau so, wie du es hier gebaut hast.