Hallo, ich wollte mich mal mit den verschidenen such Algorithmen auseinander setzen bzw es versuchen
habe nun zum Thema Tiefensuchen folgenden code gefunden
Was ich nicht verstehe warum es zwei boolean vergleiche gibt und wieso es ein index für den sring gibt sowie ein für den Knoten,der sring gehört doch zum Knoten, oder?
hoffe auf ein paar Tipps
habe nun zum Thema Tiefensuchen folgenden code gefunden
,
Java:
import java.util.*;
class Graph{
int knotenZahl;
Knoten[] knotenArray;
Graph(){
Knoten a = new Knoten("A"), b = new Knoten("B"), c = new Knoten("C"),
d = new Knoten("D"), e = new Knoten("E"), f = new Knoten("F"),
g = new Knoten("G"), h = new Knoten("H"), i = new Knoten("I"),
k = new Knoten("K"), l = new Knoten("L"), m = new Knoten("M"),
n = new Knoten("N"), o = new Knoten("O"), p = new Knoten("P");
Knoten[] ka = {a,b,c,d,e,f,g,h,i,k,l,m,n,o,p};
knotenArray = ka;
knotenZahl = ka.length;
//Kanten definieren
b.nachbarn.add(a);
d.nachbarn.add(e); d.nachbarn.add(c); d.nachbarn.add(b);
e.nachbarn.add(h);
f.nachbarn.add(d); f.nachbarn.add(i);
g.nachbarn.add(h);
h.nachbarn.add(n); h.nachbarn.add(l); h.nachbarn.add(f);
k.nachbarn.add(g);
l.nachbarn.add(n); l.nachbarn.add(i);
m.nachbarn.add(k);
n.nachbarn.add(p); n.nachbarn.add(o);
p.nachbarn.add(m);
}
void resetMarken(){for (Knoten k : knotenArray) k.markiert = false;}
int index(Knoten k){
for (int i=0; i < knotenZahl; i++)
if (k == knotenArray[i]) return i;
return -1;
}
int index(String s){
for (int i=0; i < knotenZahl; i++)
if (s.equals(knotenArray[i].name)) return i;
return -1;
}
Knoten find(String s){
for (int i=0; i < knotenZahl; i++)
if (s.equals(knotenArray[i].name)) return knotenArray[i];
return null;
}
boolean kante(int k1, Knoten k2){
for (Knoten k : knotenArray[k1].nachbarn)
if (k == k2) return true;
return false;
}
boolean kante(Knoten k1, Knoten k2){
for (Knoten i1 : knotenArray)
if (i1 == k1) for (Knoten i2 : k1.nachbarn)
if (i2 == k2) return true;
return false;
}
void nachbarn(){
for (Knoten k1 : knotenArray)
for (Knoten k2 : k1.nachbarn)
System.out.println("Kante von "+k1+" nach "+k2+" vorhanden");
}
void tiefenSuche(Knoten k){
resetMarken();
rekTiefenSuche(k);
}
void rekTiefenSuche(Knoten k){
k.markiert = true;
System.out.println(k);
for (Knoten n : k.nachbarn)
if (!n.markiert) rekTiefenSuche(n);
}
}
Java:
import java.util.*;
class Knoten{
String name;
boolean markiert;
ArrayList<Knoten> nachbarn;
Knoten(String s){ name = s; nachbarn = new ArrayList<Knoten>();}
public String toString(){ return name;}
}
Was ich nicht verstehe warum es zwei boolean vergleiche gibt und wieso es ein index für den sring gibt sowie ein für den Knoten,der sring gehört doch zum Knoten, oder?
hoffe auf ein paar Tipps