Logik:Klausuren/04.11.2004/5. Aufgabe

Aus Tudwiki
Wechseln zu: Navigation, Suche

1. Aufgabenstellung[Bearbeiten]

Natürliche Zahlen können als iterierte Nachfolger der Zahl $ 0\, $ dargestellt werden

$ d.h.\qquad 1=s(0)\,,\ 2=s(s(0))\,,\ 3=s(s(s(0)))\, $ usw.

Die Addition zweier natürlicher Zahlen in iterrierter darstellung wird durch das folgende Programm realisiert:

$ add\,(N\,,0\,,N)\,. $

$ add\,(N\,,s(M)\,,s(K)):-add(N\,,M\,,K). $



a) Welcher Additionsaufgabe in Zahlendarstellung entspricht der Aufruf

$ ?-add\,(s(0)\,,s(s(s(0)))\,,E)\,. $



b) Geben Sie den vollständigen Ableitungsbaum für den Aufruf:

$ ?-add\,(s(s(0))\,,s(s(0))\,,E)\,. $ an.

Wie lautet das Ergebnis für $ E\, $ ?



c) Schreiben Sie ein Prologprogramm, das die Multiplikation zweier natürlicher Zahlen in iterirter Darstellung repräsentiert.

z.B. soll der Aufruf

$ ?-mal(\,s(s(s(0)))\,,s(s(0))\,,M\,). $

das Ergebnis $ M\,=s(s(s(s(s(s(0)))))) $ liefern.

( Sie können die natürlichen Zahlen wie oben angegeben als definiert voraussetzen.)

2. Lösung[Bearbeiten]

a)

$ ?-add\,(s(0)\,,s(s(s(0)))\,,E)\,.\Longrightarrow \ 1+3=4 $


b)

Aufgabe5 addition.png


c)

$ mal(\,N\,,0\,,0). $

$ mal(\,N\,,s(M)\,,E):-mal(\,N,M,E1),\ add(\,E1,N,E). $

3. Lösungsweg[Bearbeiten]

4. Alternativen/Diskussion/Hinweise etc.[Bearbeiten]


zum Prolog-Testat 04.11.2004
Kategorie Prolog-Aufgaben