zurück weiter
;;;                           einfache schematische-Tiefensuche.scm

(define
  (Tiefensuche Start Ziel Graph)

  (let
    t-s
    ((Alternativen (Nachfolger Start  Graph)))
    (cond
      ((null? Alternativen) #f)

(null? Alternativen) prüft, ob die Liste der Alternativen (das bedeutet nicht "gleich 0", sondern) leer ist. Dieser Fall bedeutet, dass wir im Verlauf unserer Suche in einer Sackgasse gelandet sind oder uns an einer Verzweigung befinden, zu der schon alle Möglichkeiten versucht wurden. Dann ist "#f" der Wert, der an die aufrufende Stufe zurückgegeben werden muss. Weiter geht es bei ...

      ((eq? (car Alternativen) Ziel)
       (Ausgabe (car Alternativen))
       (car Alternativen))

      ((t-s
        (Nachfolger (car Alternativen) Graph))
       (Ausgabe (car Alternativen))
       (car Alternativen))

      (else
       (t-s
        (cdr Alternativen))))))

;;; ===== Nachfolger ================================================
(define
   (Nachfolger Element Graph)
   (cadr assoc Element Graph)))
;;; ===== Ausgabe ===================================================
(define
  (Ausgabe Knoten)
  (display Knoten)
  (display " <-- "))

;;; ===== Aufruf ====================================================
(define Start 1)
(define Ziel 8)
(if (Tiefensuche Start Ziel Graph) (display Start))
Graph Bild des Labyrinthes