H5 6.2

Stumpf.Alex
Nerd
Nerd
Beiträge: 645
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Wenn das zwei mögliche Wege darstellen soll..ja! An der Formatierung musst du wirklich noch arbeiten. :wink:

Benutzeravatar
Skylo
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 149
Registriert: 7. Nov 2006 20:08
Wohnort: Darmstadt (Woogsviertel)
Kontaktdaten:

Beitrag von Skylo »

mein backtracking funktioniert aber noch nich so richtig...

kann mir jemand grundlegend seine fälle schildern...

ich habe folgende...

entweder ist der akkumulator mit den zu besuchenden Kanten leer , d.h. ich hab "eine" Lösung gefunden ( kann aber noch andere geben )
ODER es sind keine Wege mehr möglich dann fügt er dem ersten Akku wieder das Objekt hinzu oder?
oder beides nicht der fall, dann wird einfach der derzeitige Pfad mit dem rekursiven Aufrug verbunden

also

(cond
[empty? E) akku]
[empty? liste-der-möglichen-kanten-von-Node) (delete-item ITEM akku)]
[else
(append last-item (rekursion (alle-möglichen kanten) (lösche-kante aus E) (append ITEM akku)]

hmmmm wie schaut das für euch aus!
Zuletzt geändert von Skylo am 2. Dez 2007 23:10, insgesamt 1-mal geändert.
Junge, geh kacken! Echt jetzt!

Stumpf.Alex
Nerd
Nerd
Beiträge: 645
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Da ich eine Hilfsfunktion habe, die generate-paths n-mal aufruft für alle möglichen Kanten die man von einem Knoten aus besuchen kann, habe ich das Problem nicht. Ich appende einfach die verschiedenen Lösungen von den n-Aufrufen von generate-paths. Daher ist der zweite Fall bei mir empty, also keinen möglichen Weg gefunden und nicht (append ITEM E).

Benutzeravatar
Skylo
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 149
Registriert: 7. Nov 2006 20:08
Wohnort: Darmstadt (Woogsviertel)
Kontaktdaten:

Beitrag von Skylo »

übrigens meine Ausgabe auf
(generate-paths 'a '( (a b) (b c) (c a)) '())
sieht nun richtigerweise so
(list (list (list 'a 'b) (list 'b 'c) (list 'c 'a)) (list (list 'c 'a) (list 'b 'c) (list 'a 'b)))
aus!

Leider gibt es bei schwierigeren Problemen mehr probleme und unendlich lange lösungen! :/ scheiss backtracking sollte eigentlich funktionieren!


------------------------------------------
Bei mir läuft das eigentlich so.

Code: Alles auswählen

(map rekursiv-bearbeiten (finde-kanten-um knoten aus-list-kanten))
dann steht in

Code: Alles auswählen

(define rekursiv-bearbeiten ....
eigentlich nur

Code: Alles auswählen

append item-aus-map  (generate paths.. usw
Plus die Sonderfälle... hmmmm! Idee?
Junge, geh kacken! Echt jetzt!

Antworten

Zurück zu „Archiv“