Beispielklausur Aufgabe 5 a)

Eser
Windoof-User
Windoof-User
Beiträge: 37
Registriert: 6. Okt 2004 18:20

Beispielklausur Aufgabe 5 a)

Beitrag von Eser »

Hallo, wir sind hier am lernen und sehen an der Lösung von Aufgabe 5 a) keinen Sinn.

Man soll eine direktverbindung als Relation definieren mit Parametern A und B die uns eine Direktverbindung zwischen zwei Bahnhöfen (Orten) OHNE UMSTEIGEN liefert.

Die Lösung ist:
direktverbindung(A,B):- haelt_in(Nr, A, _, _, _), haelt_in(Nr, B, _, _, _).

Doch diese Relation liefert mir doch einfach nur zwei Orte an denen ein und der selbe Zug anhält, aber zwischen diesen beiden Orten kann doch noch ein Halteort liegen und der MUSS ausgeschlossen werden oder nicht? Daher fehlen hier doch noch einige Bedingungen oder? Daher gibt doch die Lösung einfach alle möglichen Ortepaare ab bei denen ein und derselbe Zug anhält.

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

Ich glaube, Direktverbindung soll einfach heißen: Ohne Umsteigen.

So verstehe ich das "Direktverbindung (d.h. ohne Umsteigen)".
Zwischen A und B besteht also eine direkte Verbindung, wenn man nicht umsteigen muss.

Ansonsten wäre das sehr viel umständlicher.
Vielleicht sowas wie
direktverbindung(A,B) :- haelt_in(Nr, A, X, _, _) , haelt_in(Nr, B, Y, _, _), nachbarn(Nr,A,B,X,Y).

nachbarn(A,B, X,Y) :- X < Y, \+(haelt_in(Nr, C, Z,_,_), X < Z, Z < Y).
nachbarn(A,B, X,Y) :- X > Y, \+(haelt_in(Nr, C, Z,_,_), X > Z, Z > Y).

Eser
Windoof-User
Windoof-User
Beiträge: 37
Registriert: 6. Okt 2004 18:20

Beitrag von Eser »

Ich bin mir sicher das die Lösung falsch ist, denn ich habe das ganze mal beispielhaft programmiert.
Das kam als Ergebnis raus als ich direktverbindung(X,Y). eingegeben habe.

Code: Alles auswählen

DES> direktverbindung(X,Y).

{
  direktverbindung(berlin,berlin),
  direktverbindung(berlin,hamburg),
  direktverbindung(darmstadt,darmstadt),
  direktverbindung(darmstadt,frankfurt),
  direktverbindung(darmstadt,langen),
  direktverbindung(frankfurt,darmstadt),
  direktverbindung(frankfurt,frankfurt),
  direktverbindung(frankfurt,langen),
  direktverbindung(hamburg,berlin),
  direktverbindung(hamburg,hamburg),
  direktverbindung(langen,darmstadt),
  direktverbindung(langen,frankfurt),
  direktverbindung(langen,langen)
}
Das zugehörige Programm in der *.pl Datei sieht so aus, damit ihr auch seht das alles korrekt ist.

Code: Alles auswählen


zug(1, ice).
zug(2, rb).
zug(3, sbahn).
zug(4, ic).
haelt_in(1, berlin, 11, 907, 915).
haelt_in(1, hamburg, 10, 930, 935).
haelt_in(2, frankfurt, 9, 905, 908).
haelt_in(2, langen, 3, 920, 921).
haelt_in(2, darmstadt, 10, 931, 933).

direktverbindung(A, B) :- haelt_in(Nr, A, _, _, _), haelt_in(Nr, B, _, _, _).

Benutzeravatar
bettmenn
Erstie
Erstie
Beiträge: 13
Registriert: 15. Apr 2004 08:45
Kontaktdaten:

Beitrag von bettmenn »

Wäre also

Code: Alles auswählen

direktverbindung(A,B) :-
haelt in(Nr, A,_,_,_),
haelt in(Nr, B,_,_,_),
A \= B.
korrekt, oder? Dann kommt zwar noch für jedes Paar von Städten, die nicht gleich sind ein Zug in jeder Richtung, aber das sollte ja nicht beachtet werden (laut Aufgabenstellung).
Viele Grüße,

Florian

Horschie
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 132
Registriert: 10. Nov 2005 17:51
Wohnort: Heppenheim
Kontaktdaten:

Beitrag von Horschie »

zug(1, ice).
zug(2, rb).
zug(3, sbahn).
zug(4, ic).

haelt_in(1, berlin, 11, 907, 915).
haelt_in(1, hamburg, 10, 930, 935).
haelt_in(2, frankfurt, 9, 905, 908).
haelt_in(2, langen, 3, 920, 921).
haelt_in(2, darmstadt, 10, 931, 933).

direktverbindung(A, B) :- haelt_in(Nr, A, _, _, _), haelt_in(Nr, B, _, _, _), A \= B.




in Prolog funktioniert der Kram so. Wieder ein Fehler in der Mulö. Obwohl Fehler??
Naja, zumindest macht die Lösung keinen Sinn *gg* Ein- und direkt wieder aussteigen könnte man ja.

Benutzeravatar
Crazy
Neuling
Neuling
Beiträge: 5
Registriert: 20. Jul 2005 19:00
Wohnort: Frankfurt am Main

Beitrag von Crazy »

Hallo,

erst mal -wir müssen das in Datalog programmieren. Und wenn du dir unsere Ausgabe genau anschaust, dann siehst du dass dir das Programm auch eine Verbindung zwischen Frankfurt - Darmstadt zurückgibt. Aber es besteht keine Direktverbindung zwischen diese beide Städte ( Langen liegt dazwischen )

Grüße
Es ist nicht genug zu wissen-man muss auch anwenden!
Es ist nicht genug zu wollen-man muss auch tun!

dcdead
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 190
Registriert: 11. Nov 2004 21:20

Beitrag von dcdead »

Aber! In der Aufgabe steht doch, dass Direktverbindung nur ohne Umsteigen heißt - und zwischen Frankfurt und Darmstadt muss man eben nicht umsteigen

Horschie
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 132
Registriert: 10. Nov 2005 17:51
Wohnort: Heppenheim
Kontaktdaten:

Beitrag von Horschie »

Also ob die nächste Haltestelle nach DA die Haltestelle Frankfurt ist bekommt man aus der Relation eh nicht raus. Da können beliebig viele oder auch keine dazwischen liegen.

Es sei denn man setzt die Vollständigkeit der gegebenen Daten voraus. dann könnte man das über Akunfts- und Abfahrtszeiten machen.

Eser
Windoof-User
Windoof-User
Beiträge: 37
Registriert: 6. Okt 2004 18:20

Beitrag von Eser »

Oh, ok wir haben Umsteigen mit Zwischenstopp verwechselt. Aber die Lösung gibt immer noch Frankfurt,Frankfurt als Lösung aus, das ist ja Unsinn oder?

Dann muss also wirklich nur noch das A\=B in die Relation. Hm, so ein Mist.

Horschie
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 132
Registriert: 10. Nov 2005 17:51
Wohnort: Heppenheim
Kontaktdaten:

Beitrag von Horschie »

Richtig ;)

Kann jmd das Prolog-Zeug von mir mal bitte in Datalog übersetzen?

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Beitrag von Gnomix »

Kann jmd das Prolog-Zeug von mir mal bitte in Datalog übersetzen?
Das läuft auch auf Anhieb in DES, also sollte das doch Datalog sein.

Horschie
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 132
Registriert: 10. Nov 2005 17:51
Wohnort: Heppenheim
Kontaktdaten:

Beitrag von Horschie »

ich würde doch jetzt mal ganz frech behaupten, dass der Quelltext HIER identisch ist...ob er jetzt als Prolog oder Datalog interpretiert wird. Lediglich wird die Suche der Lösung anders ablaufen.

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Beitrag von Gnomix »

Wichtig ist es eigentlich nur, dass man bei "Übersetzungen" nach Prolog an den richtigen Stellen ein Break setzt oder die Regeln etwas umstellt, da es sonst du unendlichen Suchen kommen kann.

Antworten

Zurück zu „Archiv“