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

(define
  (Tiefensuche Start Ziel Graph)

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

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

Wenn die erste Alternative gleich dem Ziel ist, sind wir fertig. Wir können diesen Knoten ausgeben und lösen das backtracking mit einem von #f verschiedenen Wert aus, hier dem Zielknoten. Anderenfalls geht es weiter bei ...

      ((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