![]()  | 
			|||
| HSG | 
		    
  | 
		
Breitensuche verfolgt von Anfang an alle möglichen Wege. Man findet also automatisch einen minimalen Weg zuerst.
kante(a,b).
kante(a,c).
kante(b,d).
kante(b,e).
kante(c,e).
kante(c,f).
kante(d,g).
kante(e,f).
kante(e,g).
kante(e,h).
kante(f,i).
kante(g,h).
kante(g,j).
kante(h,i).
kante(h,k).
kante(i,m).
kante(j,k).
kante(k,m).
verbunden(A,B):- kante(A,B).
verbunden(A,B):- kante(B,A).
breitensuche(Start,Ziel,Loesung):-breitensuche([Start],[],Ziel,Loesung).
breitensuche(Pfad,Pfade,Ziel,Loesung):-Pfad=[Ziel|_],Pfad=Loesung,!.
breitensuche(Pfad,Pfade,Ziel,Loesung):-Pfad=[KnotenA|_],
                                       findall([KnotenN|Pfad],
                                         (verbunden(KnotenA,KnotenN),not(member(KnotenN,Pfad))),
                                         GefundenePfade),
                                       append(Pfade,GefundenePfade,NeuePfade),
                                       NeuePfade=[PfadN|RestPfade],
                                       breitensuche(PfadN,RestPfade,Ziel,Loesung).






