FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P1 Aufgabenblatt 3

P1 Aufgabenblatt 3 2002-11-02 15:04
Ksireau
Ich hab da mal ne Frage zu Aufgabe 2. a) 4.!
Die lautet:
Welches Haus wurde mit Gewinn weiterverkauft?
Wie soll ich denn einen Gewinn ausrechnen, wenn ich nur einen Kaufpreis habe?
bew(1, 1, mueller, meier, 450000, '97.01.01').
bew(2, 3, schulze, schneider, 560000, '88.12.13').
bew(3, 3, schneider, mueller, 615000, '96.12.01').
bew(4, 5, bund, piepenbrink, 3500000, '91.06.01').
Heisst das jetzt, dass jedes Objekt aus bew mit Gewinn weiterverkauft worden ist?

Re: P1 Aufgabenblatt 3 2002-11-02 15:09
Ksireau
Ok, habs grad selbst gepeilt =)

Re: P1 Aufgabenblatt 3 2002-11-02 15:10
Slater
interessant so ne halben aufgabenstellungen,

aber ich kann mich ja noch halbwegs erinnern, und an den daten erkennt man auch, das nur das haus 3 weiterverkauft wurde, und offensichtlich mit 55000 dm gewinn nach 12 jahren,

das in prolog auszudrücken, puh da bräucht ich wieder ne eingewöhungszeit ;)

@björn: ich sehe da ein 'wenn' in deinem post

Re: P1 Aufgabenblatt 3 2002-11-02 15:33
Popcorn
Wieso? Das ist doch die Aufgabe von letzten Jahr, nur mit anderen Namen? *g* Das wäre mit Copy 'n Paste zu lösen, wenn Du die Lösungen noch auf der Platte hast.

P.S. Über 1500 Avatare (gut, nicht alle soo doll) und trotzdem werden noch welche doppelt ausgewählt. %)

Re: P1 Aufgabenblatt 3 2002-11-02 17:52
Ksireau
Ich wusste ja nich, dass die Aufgaben jedes Jahr wieder drankommen =) Ausserdem wollte ich keine 3.Semester+ Leute mit meinem Pipifax nerven ;)
Ich habs jetzt zumindest so gelöst, falls das jemanden aus meinem Semester weiterhelfen sollte:
?- obj(X,_,Str,No,_),bew(_,X,_,_,Preis,_),bew(_,X,_,_,Preis2,_),Preis<Preis2.


Re: P1 Aufgabenblatt 3 2002-11-02 18:35
Popcorn
Hmm. Da hatte ich auch ein @Slater vergessen. Ansonsten ist es doch eigentlich gut, wenn jemand das aus dem Ärmel schütteln kann. Belästigen tust Du damit sicher niemanden. :) Wer will und kann antwortet halt.

Re: P1 Aufgabenblatt 3 2002-11-06 18:24
RaggaDee
Man, was is alleine denn mit Aufgabe 1a gemeint.
In wie fern soll ich den die Relationen beschreiben?
Etwa so:
Diese Anfrage sucht nach einem vollständig unterspezifiziertem Ziel mit der Instanziierung mutter_von(out1,out2), vater_von(out3,out2). Dabei werden gezielt die Eltern von Hans gesucht, da Z in beiden Anfragen an der zweiten Position, also der des Kindes, gesetzt wird.
Es werden also nach und nach die Kinder (immer mit Z definiert) mit den dazugehörigen Müttern (immer mit X definiert) sowie den dazuhgehörigen Vätern (immer mit Y definiert) ausgegeben.

Re: P1 Aufgabenblatt 3 2002-11-06 18:59
Swordsman
da nicht alle die zettel @home haben, wären kurze umschreibungne (statt "bei 1a") gut. sonst können dir eben wirklich nur die leute deines jahrgangs helfen und keine veteranen… [img]http://www.sternenvolk.de/symb/22.gif[/img]

sword
ps: d.h. aber net, dass ich der prolog-freak bin [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P1 Aufgabenblatt 3 2002-11-06 19:44
TriPhoenix
da nicht alle die zettel @home haben, wären kurze umschreibungne (statt "bei 1a") gut. sonst können dir eben wirklich nur die leute deines jahrgangs helfen und keine veteranen… [img]http://www.sternenvolk.de/symb/22.gif[/img]
http://kogs-www.informatik.uni-hamburg.de/~klug/p1/aufgaben.html

[img]http://www.sternenvolk.de/symb/24.gif[/img] Viel Spaß, ich will Prolog nie wieder sehen müssen [img]http://www.sternenvolk.de/symb/28.gif[/img]



Re: P1 Aufgabenblatt 3 2002-11-06 19:54
Slater
Diese Anfrage sucht nach einem vollständig unterspezifiziertem Ziel mit der Instanziierung mutter_von(out1,out2), vater_von(out3,out2). Dabei werden gezielt die Eltern von Hans gesucht, da Z in beiden Anfragen an der zweiten Position, also der des Kindes, gesetzt wird.
Es werden also nach und nach die Kinder (immer mit Z definiert) mit den dazugehörigen Müttern (immer mit X definiert) sowie den dazuhgehörigen Vätern (immer mit Y definiert) ausgegeben.
edit
jetzt erinner ich mich wieder, was da stehen soll:

X ist Mutter von Z
Y ist Vater von Z
X und Y sind verheiratet/ haben gemeinsames Kind

nach diesem schema jeweils die verwandschaften beschreiben

Re: P1 Aufgabenblatt 3 2002-11-06 20:36
RaggaDee
X ist Mutter von Z
Y ist Vater von Z
X und Y sind verheiratet/ haben gemeinsames Kind

nach diesem schema jeweils die verwandschaften beschreiben

also so wie ich ungefähr, nur noich so kompliziert…
möglichst einfach haltn…
???



Re: P1 Aufgabenblatt 3 2002-11-06 22:02
Slater
also ich kann das jetzt nicht beschwören, aber falls du in meine richtung noch mal nachgefragt hast: jo so einfach!

gerade in hinsicht auf das was man in b machen soll..

edit
(gefragt ist nach den relationen zwischen X,Y,Z, nicht was die anfrage auf dem prolog system macht)

Re: P1 Aufgabenblatt 3 2002-11-06 22:35
Faleiro
Ich wuerde sagen:

(1a)

- Sucht nach gueltigen Tripeln Vater, Mutter und Kind. Also jeweils ein Kind mit seinem Vater und seiner Mutter.

- X ist Mutter von A und B (beides Maenner, da sie beide Vaeter sind :-) sowie Grossmutter von Y und Z

- Elternpaar X (Mutter) und Y (Vater) hat Tochter A, welche ein Kind mit Namen Z hat. (Demzufolge sind X und Y Großeltern von Z.)

Also einfach natuerlichsprachlich beschreiben.

Re: P1 Aufgabenblatt 3 2002-11-07 00:54
Anonymer User
Es geht tatsächlich um Antworten der Form "X ist der Schwippschwager von Y". Fragt doch sowas eure P1-Übungsgruppenleiter bei der Vorbesprechung, die Aufgabenzettel gibts doch ne halbe Woche vorher! ;)



Re: P1 Aufgabenblatt 3 2002-11-08 16:03
Ksireau
Ich bin schon wieder verwirrt!
Gegeben sind:
obj(1, efh, gaertnerstr, 15, 1965).
obj(2, efh, bahnhofsstr, 27, 1943).
obj(3, efh, bahnhofsstr, 29, 1955).
obj(4, mfh, bahnhofsstr, 28, 1991).
obj(5, bahnhof, bahnhofsstr, 30, 1901).
obj(6, kaufhaus, bahnhofsstr, 26, 1997).
obj(7, efh, gaertnerstr, 17, 1982).
und
bew(1, 1, mueller, meier, 450000, '97.01.01').
bew(2, 3, schulze, schneider, 560000, '88.12.13').
bew(3, 3, schneider, mueller, 615000, '96.12.01').
bew(4, 5, bund, piepenbrink, 3500000, '91.06.01').

Die Aufgabe lautet:
Definieren Sie ein Prädikat, besitzt(Besitzer, Objektnummer), das wahr ist für alle Immobilien, die sich derzeit im Eigentum von Besitzer befinden. Stellen Sie mit Hilfe dieses Prädikats die folgenden Anfragen:

Heisst hier definieren, dass ich mit assert(besitzer(mueller,1)). arbeiten soll, oder muss ich hier ne Regel (oder wie immer das auch heisst ;) ) aufstellen? Weiter unten in der Aufgabe wird beschrieben, wie man Datumsangaben miteinander vergleichen kann. Ich sehe aber keinen Grund, warum ich für diese Aufgabe Datumsangaben vergleichen muss! Man soll nur herausfinden, welche Immobilie mehr als ne Million gekostet hat und welche Grundstücke nebeneinander liegen. <– Dafür soll man dann seine Datenbasis erweitern. Vielleicht kann mir mal jemand verraten wie man da rangehen muss!? Ich hab zwar jetzt schon alles gelöst, aber wie gesagt nur mit assert(besitzter(X,Y)). Hab ich das so richtig verstanden?

Re: P1 Aufgabenblatt 3 2002-11-08 16:37
Slater
ein prädikat (= regel!) definieren bedeutet nicht, die faktensammlung zu erweitert, zumal besitzt() ein sehr unsicheres faktum wäre, da es sich jederzeit ändern kann (durch verkauf), dann müsste man die datenbank sehr genau pflegen,
weiterhin geht die information ja aus den vorhandenen fakten hervor, also kein problem für ein prädikat, das bisschen rumfragt unter den daten:
besitzt(käufer,haus) = bew(…haus…käufer…), und wenn es mehrere bew zu einen haus gibt, dann der käufer in der bew mit dem aktuellsten datum (dafür datum vergleichen)

die datenbasis nur mit weiteren obj() und bew() nach bedarf erweitern (um alle testfälle auch mal zu haben), nichts neues reinschreiben in diesem fall

edit
gerade wenn man ein paar neue obj() und bew() reinhaut (die für sich unumstössliche und alleinstehende daten sind), sind schwubs die früheren assert(besitzt()) nicht mehr vollständig/ oder gar falsch,
wartung der datenbank bei grossen daten -> pff….,
also wenn irgend möglich prädikate statt fakten/daten verwenden, die sind automatisch aktuell

Re: P1 Aufgabenblatt 3 2002-11-08 17:25
Ksireau
Ich danke dir!

Re: P1 Aufgabenblatt 3 2002-11-08 18:20
Ksireau
Wieso bekomme ich jedesmal wenn ich versuche ein Prädikat zu definieren die Meldung:
ERROR: Undefined procedure: (:-)/2



Re: P1 Aufgabenblatt 3 2002-11-08 18:27
Fred
Wieso bekomme ich jedesmal wenn ich versuche ein Prädikat zu definieren die Meldung:
ERROR: Undefined procedure: (:-)/2
Poste bitte die entsprechende Definition.


Re: P1 Aufgabenblatt 3 2002-11-08 18:34
Ksireau
Zum Beispiel wenn ich ein Beispiel aus dem Skript ausprobiere:
?- verbrecher(X) :- mann(X).
ERROR: Undefined procedure: (:-)/2

Re: P1 Aufgabenblatt 3 2002-11-08 18:44
Slater
sone regel kann man nicht an die eingabeaufforderung schreiben, sondern muss bei den fakten stehen, schätz ich,

ich schau gleich mal ins p1-skript, ob ich hier viel blödsinn schreibe ;)

beispiel skript 54/55, wenn du das gleiche hast

Re: P1 Aufgabenblatt 3 2002-11-08 18:52
Ksireau
Ah ok!
Wer lesen kann ist klar im Vorteil =)


Re: P1 Aufgabenblatt 3 2002-11-08 19:34
Slater
also noch mal eigenkorrektur:

ein prädikat (= regel!) definieren bedeutet nicht, die faktensammlung zu erweitert,


ein prädikat, was immer das sein soll, kann sowohl

nur aus fakten:
wurzelvonvier(2).
wurzelvonvier(-2).

nur aus regeln:
wurzelvonvier(X) :- wurzelvon(4,X).

oder aus beiden bestehen:
wurzelvonvieroderfuenf(2).
wurzelvonvieroderfuenf(-2).
wurzelvonvieroderfuenf(X) :- wurzelvon(5,X).



Re: P1 Aufgabenblatt 3 2002-11-08 21:07
Ksireau
Boa ich raff die Aufgabe nicht.
Wie muss das Prädikat denn aussehen? Kann mir da einer ne Lösung verraten? Ich verzweifle gleich an dem Kack!
Die Aufgabe lautet:
Definieren Sie ein Prädikat, besitzt(Besitzer, Objektnummer), das wahr ist für alle Immobilien, die sich derzeit im Eigentum von Besitzer befinden.
Gegeben sind:
obj(1, efh, gaertnerstr, 15, 1965).
obj(2, efh, bahnhofsstr, 27, 1943).
obj(3, efh, bahnhofsstr, 29, 1955).
obj(4, mfh, bahnhofsstr, 28, 1991).
obj(5, bahnhof, bahnhofsstr, 30, 1901).
obj(6, kaufhaus, bahnhofsstr, 26, 1997).
obj(7, efh, gaertnerstr, 17, 1982).
und
bew(1, 1, mueller, meier, 450000, '97.01.01').
bew(2, 3, schulze, schneider, 560000, '88.12.13').
bew(3, 3, schneider, mueller, 615000, '96.12.01').
bew(4, 5, bund, piepenbrink, 3500000, '91.06.01').

Ich bekomme es irgendwie nicht hin, herauszufinden, ob ein Objekt nur einmal in der Datenbasis ist oder öfters. Ohne das zu wissen sehe ich keine Möglichkeit die Objekte auf Kaufdatum zu prüfen. Wenn ich sage Kaufdatum1 < Kaufdatum2 ist nur der gute Herr mueller eine wahre Aussage. Prüfe ich ob Kaufdatum1 <= Kaufdatum2 ist alles wahr.
Aahhhh Brain overflow!


Re: P1 Aufgabenblatt 3 2002-11-08 21:50
Cyrax
Ksi, dein Avatar kenn ich aus nem OnlineGame, das sich ConquerSpace nennt. Der Typ, der immer den Avatar hat nennt sich thefade von SKYLINER… der Mensch bist du aber nicht zufällig oder?

Re: P1 Aufgabenblatt 3 2002-11-08 21:59
Slater
ich hab mal bisschen rumprobiert, das hier könnte gehen:

besitzt(X,Y) :- bew(_, Y, _ , X, _, Z1),bew(_, Y, X , _, _, Z2),Z2@< Z1.

besitzt(X,Y) :- bew(_, Y, _ , X, _, _),not(bew(_, Y, X , _, _, _)).

noch ein wenig lang, ich bin aus der übung ;)


Re: P1 Aufgabenblatt 3 2002-11-08 22:12
Ksireau
Ksi, dein Avatar kenn ich aus nem OnlineGame, das sich ConquerSpace nennt. Der Typ, der immer den Avatar hat nennt sich thefade von SKYLINER… der Mensch bist du aber nicht zufällig oder?
Nein bin ich nicht.

Slater: Danke, das war sehr hilfreich. Wusste nicht, dass man ein Prädikat auch über 2 "Zeilen" definieren kann, das erleichtert die ganze Sache natürlich =)

Re: P1 Aufgabenblatt 3 2002-11-08 22:20
Slater
da geht recht vieles, was sinnvoll ist,
zum beispiel auch rekursion, ein paar einzelne fakten, oder eben mehrere regeln:

natürlichezahlist(0).
natürlichezahlist(X) :- natürlichezahlist(X-1).

naja an den übungen soll man es ja merken, wenns die vorlesung nicht rüberbringt ;)
vielleicht ist das in diesem beispiel noch nicht nötig, aber siehts schon ganz ok aus

edit
endlossschleifen wie bei natürlichezahlist(-1) da oben sind natürlich auch drin..




Re: P1 Aufgabenblatt 3 2002-11-09 12:14
Slater
besitzt(X,Y) :- bew(_, Y, _ , X, _, Z1),bew(_, Y, X , _, _, Z2),Z2@< Z1.

besitzt(X,Y) :- bew(_, Y, _ , X, _, _),not(bew(_, Y, X , _, _, _)).
tja leider ist das für spezialfälle noch unzureichend,
etwa werden leute als besitzer ausgeben, die das haus erst verkauft, dann gekauft und dann wieder verkauft haben,
fügt man noch einige weitere hin- und herkaufe hinzu, so wird der besitzer mehrmals ausgegeben (für jedes faktenpaar verkauf & kauf)

vielleicht gibts ne ganz simple lösung und ich seh die nur auch nicht, aber das hier ist das einfachste, was ich mir basteln konnte ;) :

maxz(Z,[Z]).
maxz(Z,[Z|R]) :- maxz(_Z2,R),Z@>_Z2.
maxz(Z,[_Z2|R]) :- maxz(Z,R),Z@>_Z2.

besitzt(B,O) :- obj(O,_,_,_,_),findall(_Z1,bew(_,O, _ , _, _, _Z1),_L),maxz(_ZMAX,_L),bew(_,O,_,B,_,_ZMAX).

maxz() sucht aus einer liste aus zeiten das maximum, also die aktuellste zeit,

besitzt() erstellt zu jedem haus eine liste aller zeiten, an denen das haus gekauft wurde, dann wird mit maxz die aktuellste zeit rausgesucht, und mit hilfe der entsprechenden bew() der käufer/ besitzer bestimmt

findall() ist auf seite 47 beschrieben, listenmanipulation kam aber sicher noch nicht dran, oder?
dann muss es ja noch einfacher gehen, bin gespannt auf die musterlösung ;)



Re: P1 Aufgabenblatt 3 2002-11-09 12:18
Zaphod
Mann… du kniest dich da echt tief rein.. oder wiederholst du heimlich P1? [img]http://www.sternenvolk.de/symb/24.gif[/img]

Re: P1 Aufgabenblatt 3 2002-11-09 12:19
Slater
das ist schon recht lustig

Re: P1 Aufgabenblatt 3 2002-11-09 15:12
Ksireau
Erstmal vielen Dank!
Hab nur noch mal ne allgemeine Frage:
Wenn man für besitzt(X,Y) zwei Regeln macht (so wie es in deinem ersten Vorschlag der Fall war), heißt das dann, dass die erste Regel alles ausspuckt, was die Regel wahr macht und die 2. Regel nur das, was für sie gilt?
Kurz gefragt, sind die Regeln voneinander unabhänig?

Was deinen 2. Vorschlag angeht, wir hatten zwar schon Listen in der Vorlesung, aber wie genau man mit den arbeiten kann, hatten wir noch nicht, deswegen nehme ich lieber deinen ersten Vorschlag, sonst muss ich nachher noch an die Tafel und das komplizierte Teil erklären =)

Re: P1 Aufgabenblatt 3 2002-11-09 15:14
Fred
Wenn man für besitzt(X,Y) zwei Regeln macht (so wie es in deinem ersten Vorschlag der Fall war), heißt das dann, dass die erste Regel alles ausspuckt, was die Regel wahr macht und die 2. Regel nur das, was für sie gilt?
Kurz gefragt, sind die Regeln voneinander unabhänig?
Wenn mindestens eine der beiden Bedingungen erfuellt ist, gilt die Regel als erfuellt. Ist quasi ne oder-Beziehung… glaube ich jedenfalls, ist ja schon ein Jahr her [img]http://www.sternenvolk.de/symb/12.gif[/img]


Re: P1 Aufgabenblatt 3 2002-11-09 15:33
Slater
jo vergleiche 'oder',
an sonsten kommt das mit unabhängig auch hin,
schreibt man eine regel identisch ein zweites mal hin, kriegt man auch exakt doppelt so viele ergebnisse

Re: P1 Aufgabenblatt 3 2002-11-09 15:39
MoKrates
Ja, die Regeln koennen sich aber auch gegenseitig aufeinander beziehen. Wie schon in dem erwaehnten Beispiel: IstNatuerlich().

MoKrates

Re: P1 Aufgabenblatt 3 2002-11-09 21:42
Anonymer User
Frage zu P1 aufgabenblatt 3, Frage 3

Wie soll mann auf so ne verkorkste Frage antworten?
Hat jemand ma irgendwelche Vorschläge?
Thx im vorraus.

morph

Re: P1 Aufgabenblatt 3 2002-11-09 21:48
Anonymer User
Frage zu P1 aufgabenblatt 3, Frage 3

Wie soll mann auf so ne verkorkste Frage antworten?
Hat jemand ma irgendwelche Vorschläge?
Thx im vorraus.

morph

morph nochma,

die frage 3 lautet:
Erklären sie, welchen Zweck Unifikation und Suche in der relationalen Programmierung erfüllen.

(???????) ;o)


Re: P1 Aufgabenblatt 3 2002-11-09 22:12
Faleiro
Ich habe im Moment leider keine Zeit, laenger zu suchen, aber dies aus unseren Aufgabenloesungen vom letzten Jahr:

Unifikation ist einfach der Vergleich, also die unterste Ebene bei der Lösungsfindung durch Relationen. Wenn zwei Seiten einer Relation (etwa durch das Mittel geeigneter Variablenbindung) unifizieren, geht sie auf. Die Suche ist einfach das geordnete Durchsuchen der Faktenmenge und Regelmenge, um eine Unifikation gelingen zu lassen. Dies geschieht in festgelegter Reihenfolge.

Das war aber wohlgemerkt keine Musterloesung, sondern meine / unsere.
(Weiss nicht genau, wie die Fragestellung dazu war! Hoffentlich aehnlich. Im Grunde egal, ist ja eine Schwafelaufgabe.)

Re: P1 Aufgabenblatt 3 2002-11-14 17:55
Anonymer User
Prädikate sind Teil der Datenbasis und werden in Dateien definiert. Du kannst sie, wenn du unbedingt willst, auch mit assert/1 definieren, oder über [user]. (C-d als EOF angeben), aber die beste Lösung ist sicherlich die Datei zu editieren und anschließend consult(dateiname). zu verwenden.

In der Datei kannst du dann gleich auch noch sinnvolle Einrückung etc. zu verwenden, so dass du schon jetzt übst lesbaren Code zu schreiben. :)