ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
2039
2039
EMPFEHLEN
-
20.11.05 13:51 #1
- Registriert seit
- Sep 2005
- Beiträge
- 6
Hi Leute,
ich hab hier eine kleine Aufgabe zu bewältigen und weiß nicht, wie ich da rangehen kann.
"Zeigen Sie, dass die Funktionen exp und pred primitiv rekursive Funktionen sind."
Dadrunter stehen dann noch 4 kleine Hilfestellungen, die bis auf die 2. auch alle klar sind:
exp(x, 0) = 1
exp(x, succ((y)) = mult(x, exp(x, y))
pred(0) = 0
pred(succ(y)) = y
Kann jemand helfen, wie ich diese Aufgabe zu lösen hab?
Gruß
Basti
-
Also... dass exp eine rekursive Funktion ist, erkennt man imho an dem Selbstaufruf (2. Hinweis) und an der Abbruchbedingung, s. 1 Hinweis. Dass es sich um primitiv-rekursive Fkt. handelt (Laut Wikipedia: Funktionen, die auf bestimmte Art aus einfachen Grundoperationen zusammengesetzt werden können), ist für mich nicht ersichtlich. Auch warum pred eine rekursive Prozedur ist, kann ich nicht aus den Hinweisen herauslesen. Höchstens eine Abbruchbedingung im 3. Hinweis. Hast du vielleicht irgendwelche Funktionen gegeben, also Quelltext dazu? Oder zumindest einen hinweis, was die einzelnen Funktionen machen?
Zitat von BlackWidow83
lg Hellie
-
20.11.05 14:36 #3
- Registriert seit
- Sep 2005
- Beiträge
- 6
Hallo Hellie,
erstmal vielen Dank für Deine Antwort.
Also weitere Hilfestellungen/Funktionen sind in der Aufgabe nicht gegeben. Allerdings kann ich Dir sagen, was die einzelnen Funktionen machen:
exp = Exponent (z. B. exp(x, 0)) = x^0
succ = Nachfolger eines Ausdrucks (z. B. succ(3) = 4)
pred = analog zu succ der Vorgänger eines Ausdrucks
-
Hi BlackWidow83,
also ich fass es nochmal zusammen.
Die Funktionen sind rekursiv, da sie sich selbst aufrufen.
Primitiv Rekursive Funktionen beruhen auf der Idee, dass sich komplexe Funktionen aus einfachen Basisfunktionen definieren lassen (durch Funktionsschachtelung und Rekursion).
Basisfunktionen der primitiven Rekursion sind:
- die Nullfunktion n(x)=0
- die Nachfolgerfunktion s(x) = x+1
- die Projektion
Also sehen Funktionen immer so aus:
f(0,x) = g(x)
f(n+1,x) = h(f(n,x),n,x)
Wenn du also eine Formel bekommst, also z.b. f(2,2) dann schaust du wo sie passt, in dem Fall die 2. Funktion, da der Parameter 2 ja größer 0 ist und dann wendest du die rechte Seite an. wenn auf der rechten seite f(y,y) vorkommt, dann setzt du wieder die richtige formel ein etc.
Hoffe das hat etwas geholfen.
MfG LarsGeändert von Merlin732 (20.11.05 um 15:00 Uhr)
-
Dann sollte man das ganze vielleicht umschreiben, aus den Hinweisen:
Der zweite Hinweis sagt ja eigentlich, dass x^y= x* x^(y-1) ist. Demnach kann man statt
exp(x, succ((y)) = mult(x, exp(x, y)) auch exp(x, x)= mult(y, exp(x, pred(y))) schreiben. Damit wird der Exponent mit jedem rekursiven Aufruf um 1 verringert, bis er schließlich 0 erriecht, was als Abbruchbedingung gilt.
Und wenn pred(succ(y))=y ist, kann man auch sagen, dass pred(y)=y-1 ist. Prinzipiell könnte man argumentieren, dass der Funktionswert von y abhängig ist (das erkennt man auch an Hinweis 4 selbst), allerdings sehe ich darin keinen Selbstaufruf an sich, weil die Funktion ja nicht noch mal aufgerufen wird. Laut Wikipedia ist das aber auch nicht wichtig (sorry, ich steh selbst nicht sonderlich tief in der Materie). Dort findest du auch eine Erklärung, warum Multiplikation und Addition primitiv-rekursiv sind. Mit meinem Schülerwissen komme ich da leider nicht so ganz mit.
lg Hellie
-
wie gesagt, primitiv rekursiv bedeutet nur, dass man komplexe funktionen auf einfache basisfunktionen zurückführen kann.
in den komplexen funktionen sind dann natürlich die basisfunktionen enthalten und diese können sich auf wieder selbst aufrufen.
ich würde raten einfach mal ein bespiel zu rechnen, also mal
exp(5,2) rechnen, die funktion dafür ist ja bekannt.
exp(x, 0) = 1
exp(x, succ((y)) = mult(x, exp(x, y))
wenn du das verstanden hast, dann versuch doch einfach mal eine solche primitive rekursion für fibbonaci zahlen zu finden.
-
Hast Du inzwischen mal reingeschaut:
Etwa hier:
http://de.wikipedia.org/wiki/Primiti...rsive_Funktion
Damit solltest Du alles haben, was benötigt wird.
P.S.
Die Frage an sich ist ja nicht gerade Pascal/Delphi....
vop
Ähnliche Themen
-
Datentyp - primitiv oder komplex
Von willeswissen im Forum .NET CaféAntworten: 5Letzter Beitrag: 08.09.10, 09:33 -
Rekursiv!
Von yeronimo im Forum JavaAntworten: 11Letzter Beitrag: 25.11.08, 20:57 -
Rekursiv-Sortieren
Von drpingoo im Forum JavaAntworten: 12Letzter Beitrag: 09.03.08, 17:25 -
Trigger rekursiv
Von mistirios im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 05.01.08, 17:02 -
Rekursiv
Von User Maik im Forum PHPAntworten: 7Letzter Beitrag: 17.12.03, 14:33





Zitieren
Login





