Sie sind nicht angemeldet.

1

28.09.2005, 15:56

Prolog

Hallo,
Könnte mir einer von euch ein Beispielprogramm von Prolog bezüglich eines Stammbaumes mit den dazugehörigen Regeln zusenden oder hier Posten. Wär echt nett brauch das nämlich zu Freitag (die Regeln bis Urgroßeltern über schwager usw.) schon mal danke im Vorraus.

2

28.09.2005, 16:51

RE: Prolog

Was hast Du selbst diesbezüglich schon erreicht? Wie lautet Deine Aufgabenstellung? Findest Du es in Ordnung, Dir Hausaufgaben oder gar Übungsscheine in nem Forum lösen zu lassen?

Dein Problem wirst Du mit Hilfe dieses Links sicher allein lösen können: http://home.arcor.de/rkrell/if-prolog.htm
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

3

28.09.2005, 16:59

Also slbst mit dem Programm bin ich gekommen Bis vater/Mutter und Kind/Sohn/Tochter aber bei allem was danach kommt kommen irgendwelche fhelermeldungen und ich konn verdammtnochmal nicht weiter

die Aufgabenstellung genau lautete wir sollen einen Stammbaum erstellen und Regeln für die Abfrage von Urenkel>Enkel>Sohn/Tochte<Vater/Mutter>Opa/Oma>Urgroßelter>Onkel/Tanten>Schwager usw aufstellen

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

4

28.09.2005, 18:18

Wie wärs, wenn du deine Wissensbasis mal postest.
Hab sowas schon mal gemacht, find es nur furstierend dich einfach abschreiben zu lassen.
localhost,
sweet localhost

5

28.09.2005, 18:59

Mal Grob Nicht ärgern wenn Fehler drin sind hab das jetzt nur Aus dem Kopf aufgeschrieben denn ich ahb auf dem rechner kein Prolog und das Programm.

maennlich(maik).
maennlich(axel).
maennlich(horst).
maennlich(peter).
maennlich(paul).
maennlich(horst).

weiblich(ute).
weiblich(jana).
weiblich(petra).
weiblich(anna).
weiblich(julia).
weiblich(susi).
weiblich(julia2).

eltern(maik,axel,ute).
eltern(horst,peter,jana).
eltern(petra,sven,anna).
eltern(julia,paul,susi).
eltern(julia2,paul,susi).
eltern(horst2,peter,jana).

verheiratet(axel,ute).
verheiratet(ute,axel).
verheiratet(peter,jana).
verheiratet(jana,peter.
verheiratet(sven,anna).
verheiratet(anna,sven).
verheiratet(paul,susi).
verheiratet(susi,paul).


Und hier fangen die Probleme an

mutter(Ki,Ma):- eltern(Ki,Pa,Ma), weiblich(Ma).
vater(Ki,Pa):- eltern(Ki,Pa,Ma), maennlich(Pa).
sohn(Pa,Ma,Ki):- eltern(Ki,Pa,Ma), maennlich(Ki).
tochter(Pa,Ma,Ki):- eltern(Ki,Pa,Ma), weiblich(Ki).


opa(Opa,Pa,Ma):- Ist der Vater vom Vater, männlich
das problem ist ich weiß jetzt nicht wie ich das in das Programm schreibe :?
sorry aber geht nicht

6

28.09.2005, 21:44

Mir würde auch schon helfen wenn mir einer schnell und kompackt erklärt wie ich das dann mit großen schachtelungen fortführen kann.

7

28.09.2005, 21:58

So vieleicht hab ich es selbst rein bekommen könnte Opa etwa so von statten gehen

Vater lautet ja so wenn da jetzt kein fehler drin ist

vater(Ki,Pa):- eltern(Ki,Pa,Ma), maennlich(Pa).

der Opa ist der Vater vom Vater

Opa(Pa,Opa):- eltern(Ki,Pa,Ma), maennlich(Pa),vater(Pa,Opa).
oder? ich glaub das ist immernoch falsch

@ Imhotep wär nett wenn ich zumindes die Ansätze mal von dir haben könnte mit ich wenigstens mal sehe wie man darauf kommt

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

8

28.09.2005, 22:07

Vielleicht machst du es dir mit eltern zu kompliziert.
Besser wär doch, wenn du nur die Beziehung elternteil-kind-vater-mutter machst.

Edit: neue Version =D
vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Va).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Ma).
kind(Ki, Et) :- elternteil(Ki, Et).

Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).

Außerdem denk ich, es reicht, wenn du einmal sagst, dass 2 miteinander verheiratet sind.
Versuch so wenig wie möglich Regeln zu benutzen, um die Breite des Testbaums so gering wie möglich zu halten. Schon Zeit, Stack und Nerven.
localhost,
sweet localhost

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Imhotep« (28.09.2005, 22:15)


9

28.09.2005, 22:17

Erzähl das mal unseren informatik Lehrer

vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Pa).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Pa).
kind(Ki, Et) :- elternteil(Ki, Et).

Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).

Wenn das so ist muss ich aber auch die angabe der Eltern nur 2 Teilig gestallten oder ?

Opa hab ich glaub ich auch langsam verstanden
für Ek könnte man Theoretisch auch Ki nehmen wenn man es fortführen
wollte aber du hast maennlich(Op). vergessen :applaus: hab einen Fehler gefunden

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

10

28.09.2005, 22:32

Nein hab ich nicht. männlich wird doch schon mit vater bewiesen.

Mal eine Erklärung:
opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X)
Um opa zu beweisen muss er beweisen, dass vater und elternteil gilt.
Um Vater zu beweisen, muss er einen ( X ) finden zu dem Op Vater ist.
vater (X, Op) :- elternteil(X, Op), maennlich(OP).
Und dann muss er elternteil beweisen, in dem er einen findet, zu dem X eltern teil ist.
elternteil(Ek, X).

Bsp. Heinz hat 2 Kinder, Otto und Karin. Otto hat 2 Kinder Kevin und Susi und Karin eines Uwe.
Nun fragst du ihn, ob Heinz der Opa von Uwe ist.
Prolog startet und zwar (das ist wichtig) immer oben in seiner Wissensbasis. Das wird oft ausgenutz um mache Dinge einfacher zu formulieren.
Zu erst will Prolog vater beweisen und findet Otto. Dann muss er beweisen, dass Otto elternteil von Uwe ist. Das scheitert.
Nun versucht er vater alternativ zu beweisen und findet Karin. Auch der Beweis, dass Karin elternteil von Uwe ist klappt, damit ist opa bewiesen.

Edit: Man das Beispiel hat selbst mich verwirrt. Hoffe du hast es verstanden.
localhost,
sweet localhost

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Imhotep« (28.09.2005, 22:36)


11

28.09.2005, 22:48

Also lautert nach deiner schreibweise der Uropa

uropa(Uek,Uopa):- opa(Y,Uopa), elternteil(Uek,Y).


ich versuch mal Bruder

bruder(Pa,Bru):- maennlich(Bru), elternteil ???
wie sagt man, dass es ein bruder ist
männlich oder weiblich OK kein Problem
aber wie sagt man dann das beide oder alle die gelichen Eltern ahben?

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

12

28.09.2005, 23:03

bruder(Gs, Br) :- maennlich(Br), elternteil(Br, X), elternteil(Gs, X).
localhost,
sweet localhost

13

28.09.2005, 23:08

AH habs gerafft wenn amn 2 oder mehrere die das selbe sind (Brüder/schwestern/onkel/tanten/etc) aufzählen will nimmt man 2 mal die gleiche Regel und lässt ein merkmal gleich als Gemeinsamkeit

elternteil(Br, X)
elternteil(Gs, X)

X= die Gemeinsamkeit (eltern)

Drüder und Geschwister sind ja das gleiche (fast)

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

14

28.09.2005, 23:17

Bruder ist eine verschärfung der Regel Geschwister. Bei Geschwister ist das Geschlecht egal, bei Bruder muss der Bruder halt männlich sein.

Dazu sind ja die "Variablen" X, Va und so da, Prolog ersetzt die mit für ihn bekannten Dingen und versucht zu beweisen, dass er eine Regel hat, die wahr ist mit dem was er eingesetzt hat.
localhost,
sweet localhost

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Imhotep« (28.09.2005, 23:21)


15

28.09.2005, 23:20

Hab ja auch nur gesagt fast
ich werd mich morgen mal drann setzen und alles durcharbeiten und mal sehen wie weit ich komme. ich denke aber das ich soweit alles verstanden habe und wenn schrei ich das mal morgen hier ins Forum.

Danke für deine Hilfe Imhotep

16

29.09.2005, 16:09

maennlich(horst).
usw.

weiblich(susi).
usw.

elternteil(susi,horst).
usw.

verheiratet(horst,susi).
usw.

#Regeln#

vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Va).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Ma).
eltern (Ki, El) :- elternteil(Ki, El).
Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).
Oma(Ek, Om) :- mutter(Y, Om), elternteil(Ek, Y).
UOpa(UEk, UOp) :- opa(X, UOp), elternteil(UEk, X).
UOma(UEk, UOm) :- Oma(X, UOm), elternteil(UEk, X).
kind(Ki, Et) :- elternteil(Ki, Et).
bruder(Gs, Br) :- maennlich(Br), elternteil(Br, X), elternteil(Gs, X).
schwester(Gs, Schw) :- weiblich(Schw), elternteil(Schw, Y), elternteil(Gs, Y).
geschwister(Gs, Gss) :- elternteil(Gs, Z), elternteil(Gss, Z).

onkel(Ki, ):- elternteil(

Verdammt
Onkel/Tante
Schwager/Schwägerin
Enkel/Urenkel
Cousin

bekomm ich noch nicht hin

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

17

29.09.2005, 16:58

Du musst rangehen wie beim Opa.
Überleg doch mal wann einer dein Onkel ist. Du hast doch alle Regeln die du dazu brauchst.
localhost,
sweet localhost

18

29.09.2005, 17:31

Onkel/Tanten sin ja die Geschwister meiner Eltern
Gemeinsam haben alle meine Eltern

onkel/tante(Ki,OT):- eltern(Ki,El), elternteil(El, Op), elternteil(Ki, Op).

Oder glaub das ist falsch :'( kann es leider nicht überprüfen hab auf dem rechner kein Prolog :keineahnung:

Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

19

29.09.2005, 17:37

Du hast doch schon eine Regel für Bruder und Schwester. Ein Onkel ist der Bruder eines deiner Elternteile.

Wegen Prolog einfach mal google fragen.
http://www.swi-prolog.org/
localhost,
sweet localhost

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Imhotep« (29.09.2005, 17:39)


20

29.09.2005, 20:00

onkel(Ki, Ok) :- eltern(Ki, X), bruder(Ok, X).
tante(Ki, Ta) :- eltern(Ki, X), bruder(Ta, X).

oder?

Thema bewerten