FB18 - Das Forum für Informatik

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

F3-Verständnisfrage: Berechenbare Funktionen

F3-Verständnisfrage: Berechenbare Funktionen 2006-02-05 23:54
euphie
wolle nur mal wissen, ob das so richtig ist, wie ich das verstanden habe - eine berechenbare fkt. ist eine , welche auf 0,1 abgebildet werden kann. Berechenbare Funktionen können total sein, dazu gehören die primitiv rekursiven funktionen und nicht totale sind die partiell rekursiven Funktionen, wozu die müh-rekursive fkt gehört ? Und die Ackermann Fkt hängt dann irgendwie dazwischen , weil sie zwar total aber nicht primitiv rekursiv ist ?

(edit fal: Topictitel)

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-02-06 13:05
Viciarg
Also eine totale Funktion ist das Gegenteil einer partiellen Funktion. Die totalen Funktion ordnet jedem Wert im Definitionsbereich einen Wert im Wertebereich zu.

Die partiell-rekursiven Funktionen sind laut Wikipedia (ja leckst mi hoid am Oarsch!) identisch mit den μ-rekursiven Funktionen, sind also alle berechenbar

Was wir da jetzt noch nicht verstanden haben, ist:

- Der µ-Operator: Was macht der eigentlich genau … in WP steht Jede μ-rekursive Funktion entspricht einer WHILE-Schleife und umgekehrt. Das ist toll, aber was macht die WHILE-Schleife genau und wie wende ich den Operator an, wenn ich eine gegebene Funktion (meinetwegen Ackermann) durch µ-Rekursion erzeugen will? Das einzige Beispiel im Skript ist keines, weil da auf eine nicht existierende Quelle [6] verwiesen wird. [img]http://www.fb18.de/gfx/8.gif[/img]

- Wie verhalten sich jetzt die totalen Funktionen zu den partiell-rekursiven? Muß eine berechenbare Funktion entweder total oder partiell-rekursiv sein?

- Wie zur Hölle komme ich von einem gegebenen Algorithmus auf dessen Komplexität?

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-02-07 19:45
georg
- Der µ-Operator: Was macht der eigentlich genau …
Hier hab ich schon mal ein paar Worte dazu gesagt. Vielleicht hilft das ja
schonmal weiter. Sonst frag nochmal nach [img]http://www.fb18.de/gfx/23.gif[/img]

in WP steht Jede μ-rekursive Funktion entspricht einer WHILE-Schleife und umgekehrt. Das ist toll, aber was macht die WHILE-Schleife genau und wie wende ich den Operator an, wenn ich eine gegebene Funktion (meinetwegen Ackermann) durch µ-Rekursion erzeugen will?

Was der µ-Operator macht, ist ja eigentlich eine While-
Schleife: er sucht die kleinste Nullstelle bzgl. der letzten
Argumentstelle, d.h. er wertet die Funktion solange mit
fortlaufenden Argumenten in der letzten Argumentstelle aus,
bis die Funktion mal 0 zurückliefert. Und das Argument, das
er als Nullstelle identifiziert hat, gibt er zurück.

Um den µ-Operator nun als While-Schleifen-Ersatz zu verwenden,
muss man die Bedingung fürs Schleifenende als Nullstellengleichung
schreiben. Als Beispiel für eine While-Schleife, die man
mit dem µ-Operator schreibt, bietet sich z.B. das Suchen
der natürlichzahligen Wurzel an. Angenommen, wir haben das
Programm
input: n a:=0; while(a*a != n && a != n) { a:=a+1; } return a;
Dann setzt man [img]http://mokrates.de/cgi-bin/texstring?f(n%2Ca)%3D(a%5E2-n)(a-n)[/img].
(das ist offensichtlich primitiv-rekursiv). Dann ist
f an der Stelle (n,a) genau dann ungleich 0, wenn a*a != n
und a!=n. Also berechnet die Funktion [img]http://mokrates.de/cgi-bin/texstring?%5Cpsi%3A%3D%5Cmu%20f[/img]
die natürlichzahlige Wurzel, d.h. [img]http://mokrates.de/cgi-bin/texstring?%5Cpsi(n)%3D%5Csqrt%7Bn%7D[/img],
falls n eine Quadratzahl ist und [img]http://mokrates.de/cgi-bin/texstring?%5Cpsi(n)%3Dn[/img], falls n
keine Quadratzahl ist.

Umgekehrt geht man entsprechend vor: man programmiert eine
While-Schleife, die die Funktion f an allen möglichen Stellen
auswertet und das solange, bis f 0 liefert. Hier sieht man auch,
warum das Ergebnis der Nullstellensuche nur dann definiert ist,
wenn alle Funktionswerte bei kleineren Werten definiert sind,
denn die Whileschleife muss ja f bei allen kleineren Werten
auswerten.


- Wie verhalten sich jetzt die totalen Funktionen zu den partiell-rekursiven?

Total bedeutet nur, dass die Funktion auf allen Eingabewerten
definiert ist. Wenn eine Funktion nun nicht total ist, kann sie
trotzdem berechenbar sein, z.B. von einer TM, die für die
Stellen, an denen f nicht definiert ist, kein Ergebnis liefert.
Und berechenbar ist äquivalent zu partiell-rekursiv.

Muß eine berechenbare Funktion entweder total oder partiell-rekursiv sein?

Als nicht-ausschließendes Oder: ja, denn berechenbare Funktionen
sind alle partiell rekursiv (und viele sind total).

Als XOR: Nein, denn viele berechenbare (und damit
partiell-rekursive) Funktionen sind total.

- Wie zur Hölle komme ich von einem gegebenen Algorithmus auf dessen Komplexität?

Du suchst dir ein Maß für die Größe der Eingabe und schätzt bis
auf einen konstanten Faktor ab, wie lange das Programm in
Abhängigkeit von diesem Maß läuft. "Bis auf einen konstanten
Faktor" bedeutet: du nimmst an, dass jede Einheit, deren
Ausführungsdauer nicht von der Größe der Eingabe abhängt, eine
Zeiteinheit benötigt.

Z.B. bei einer Funktion, die eine ROT13-Verschlüsselung macht:
dort nimmt man als Maß vernünftigerweise die Länge des zu
kodierenden Strings. Und der Algorithmus wird für jede
Position im String eine Umrechnung machen. Eine Umrechnung
eines Zeichens dauert immer gleich lang, egal wie lang der
String ist, also wird für jede Position im String eine
Zeiteinheit verbraucht, d.h. man hat Zeitkomplexität n.

Konstante Summanden (z.B. für das initialisieren einer Tabelle)
kann man dabei übrigens meistens vernachlässigen, denn wenn der
Rest des Programms Zeitkomplexität f hat, dann ist 2*f ab irgend-
einer Eingabegröße sicher größer als f+k (wenn k die Konstante ist),
denn Zeitschranken (f, in diesem Fall), sind meistens monoton.
Und O(2f)=O(f).

Ist das klar geworden?
(Ich weiß nicht, was man auf der allgemeinen Ebene noch dazu
sagen kann).

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-02-07 21:20
Anonymer User
[img]http://www.fb18.de/gfx/dafuer.gif[/img] [x] Georg soll die Vorlesung halten. [img]http://www.fb18.de/gfx/teach.gif[/img]

Man du bist besser als der Skript. [img]http://www.fb18.de/gfx/sensationell.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-02-07 21:28
UncleOwen
[img]http://www.fb18.de/gfx/dafuer.gif[/img] [x] Georg soll die Vorlesung halten. [img]http://www.fb18.de/gfx/teach.gif[/img]

Musst Dich nur ein paar Jahre gedulden, dann kommt das. Bestimmt.

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-02-07 21:40
Viciarg
Georg, danke schonmal [img]http://www.fb18.de/gfx/23.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-02-08 10:28
georg
[img]http://www.fb18.de/gfx/dafuer.gif[/img] [x] Georg soll die Vorlesung halten. [img]http://www.fb18.de/gfx/teach.gif[/img]

Man du bist besser als der Skript. [img]http://www.fb18.de/gfx/sensationell.gif[/img]

Danke! [img]http://www.fb18.de/gfx/10.gif[/img]


Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-11 01:13
Sven Port
Wenn ich solch eine Zeichnung aufstelle, liege ich dann richtig???
[img]http://www.svenport.de/funktionen.png[/img]
Oder ist das totaler Blödsinn??? [img]http://www.fb18.de/gfx/26.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-11 03:07
georg
Wenn ich solch eine Zeichnung aufstelle, liege ich dann richtig???

Ich nenne mal ein paar Sachen, die falsch sind, ohne
Garantie, dass die Berücksichtigung dieser Anmerkungen
zu einer vollkommen richtigen Zeichnung führt:

(1) Es sind nicht alle totalen Funktionen Turing-berechenbar.
(Charakteristische Funktionen von rekursiv aufzählbaren, aber
nicht entscheidbaren Sprachen sind total, aber nicht berechenbar).

(2) Der Inhalt der beiden mittleren grünen Kästen kommt in
der Vorlesung garnicht vor. Was man da betrachtet sind zum einen
die Menge der primitiv-rekursiven Funktionen. Die können dann
aber auch durch mehrere Schritte der Substitution bzw. primitive
Rekursion entstehen (auch beides! D.h. erst substituieren, dann
primitive Rekursion, dann vielleicht wieder primitive…). Und zum
anderen die partiell-rekursiven Funktionen, die dann zusätzlich
noch µ-Rekursion bereitstellen.

(3) Die grünen Kästen enthalten ja, bis auf den unteren,
primitiv-rekursive Funktionen, die müssten also noch in den
unteren roten mit rein.

Bau mal diese Veränderungen ein, dann kannst du das Bild
ja nochmal posten [img]http://www.fb18.de/gfx/28.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-11 11:57
Sven Port
Also hier noch ein Versuch.
Ich finde es schwer zu unterscheiden, ob nun die partiellen Funktionen eine Erweiterung der totalen Funktionen sind, oder ob man diese gegeneinanderstellen sollte.
[img]http://www.svenport.de/funktionen2.png[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-12 17:47
georg
Ich finde es schwer zu unterscheiden, ob nun die partiellen Funktionen eine Erweiterung der totalen Funktionen sind, oder ob man diese gegeneinanderstellen sollte.

Ich würde sagen, totale Funktionen sind auch partiell. Die Klasse
der partiellen Funktionen muss also im Diagramm alle anderen
enthalten.

Weitere Anmerkungen:
(1) L_d, dessen Komplement und H sind ja Mengen und keine
Funktionen, daher könntest du eigentlich nur deren
charakteristische Funktionen einordnen, aber selbst dann gehört
die charakteristische Funktion zu [img]http://mokrates.de/cgi-bin/texstring?%5Coverline%7BL_d%7D[/img] und H nicht zu
den berechenbaren Funktionen, denn eine charakteristische Funktion
ist nur dann berechenbar, wenn die zugehörige Menge entscheidbar
ist (die Mengen sind lediglich rekursiv aufzählbar).

(2) Soweit ich weiß, gibt es nur eine Ackermannfunktion
(vielleicht hat ja jemand mal mehrere Funktionen definiert und
die Ackermannfunktionen genannt, aber das kommt zumindest nicht
in F3 dran).

(3) Ist nicht falsch, aber jetzt hast du die primitiv-rekursiven
Funktionen zweimal drin. Am besten wäre wohl ein Diagramm mit
überlappenden Flächen.

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-12 20:19
Sven Port
Weitere Anmerkungen:
(1) L_d, dessen Komplement und H sind ja Mengen und keine
Funktionen, daher könntest du eigentlich nur deren
charakteristische Funktionen einordnen, aber selbst dann gehört
die charakteristische Funktion zu [img]http://mokrates.de/cgi-bin/texstring?%5Coverline%7BL_d%7D[/img] und H nicht zu
den berechenbaren Funktionen, denn eine charakteristische Funktion
ist nur dann berechenbar, wenn die zugehörige Menge entscheidbar
ist (die Mengen sind lediglich rekursiv aufzählbar).
Das mit den Mengen stimmt natürlich [img]http://www.fb18.de/gfx/19.gif[/img]. Sind keine Funktionen.
(2) Soweit ich weiß, gibt es nur eine Ackermannfunktion
(vielleicht hat ja jemand mal mehrere Funktionen definiert und
die Ackermannfunktionen genannt, aber das kommt zumindest nicht
in F3 dran).
Hab ich deswegen gemacht, weil auf: http://de.wikipedia.org/wiki/Ackermannfunktion folgendes steht:
"Heute gibt es eine ganze Reihe von Funktionen, die als Ackermannfunktion bezeichnet werden.".
(3) Ist nicht falsch, aber jetzt hast du die primitiv-rekursiven
Funktionen zweimal drin. Am besten wäre wohl ein Diagramm mit
überlappenden Flächen.
Hm. Das verstehe ich nicht so ganz. Wieso sind sie zweimal drin? Meinst du die Basisfunktionen sind doppelt??? Oder weil die primitiv rekursiven Funktionen, auch wenn sie totale Funktionen sind, auch
[img]http://mokrates.de/cgi-bin/texstring?%5Cmu[/img]-rekursive Funktionen sind???

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-12 20:39
georg
(3) Ist nicht falsch, aber jetzt hast du die primitiv-rekursiven
Funktionen zweimal drin. Am besten wäre wohl ein Diagramm mit
überlappenden Flächen.
Hm. Das verstehe ich nicht so ganz. Wieso sind sie zweimal drin? Meinst du die Basisfunktionen sind doppelt??? Oder weil die primitiv rekursiven Funktionen, auch wenn sie totale Funktionen sind, auch
[img]http://mokrates.de/cgi-bin/texstring?%5Cmu[/img]-rekursive Funktionen sind???

Naja, links hast du in rosa die primitiv-rekursiven und rechts
in blau die partiell-rekursiven und letztere enthalten die ersteren.
(Steht der blaue Kasten rechts jetzt für die partiellen oder die
partiell-rekursiven?)

Nochwas: die totalen Funktionen enthalten nicht alle berechenbaren
Funktionen. Es gibt auch partielle Funktionen, die berechenbar sind.

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-12 21:16
Sven Port
Oh je, oh je, oh je.

Also nochmal überarbeitet. Vielleicht schaffe ich es ja mal ein halbwegs korrektes Schaubild zu malen.
[img]http://www.svenport.de/funktionen3.png[/img]

Hab auf jeden Fall schonmal vielen, vielen Dank für deine Geduld und Mühen.
Bin gespannt, was du dazu sagst…[img]http://www.fb18.de/gfx/28.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-12 21:44
georg
Die totalen Funktionen sind nicht alle µ-rekursiv.
Du wirst kein richtiges Diagramm (das auch nichts doppelt
enthält) malen, wenn du keine Überlappungen drin hast.
Die totalen Funktionen liegen nur zu einem Teil in der
Menge der µ-rekursiven, also muss das Feld für die totalen
Funktionen herausragen, und zwar hinein in den Bereich
der nicht berechenbaren partiellen Funktionen, sodass
dann auch die nicht berechenbaren totalen Funktionen im
Bereich der totalen Funktionen liegen. Ansonsten seh ich
gerade keine Fehler.

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-12 21:51
Sven Port
Hm. In den partiellen, nicht berechenbaren Funktionen liegen ja die totalen Funktionen, die nicht berechenbar sind.
Bei den oberen totalen Funktionen meinte ich eigentlich auch nur die totalen Funktionen, die berechenbar sind, weil sie sonst nicht drinliegen könnten…

Vielen, vielen Dank an Dich, Georg. Jetzt hab auch ich es soweit verstanden. [img]http://www.fb18.de/gfx/10.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-13 19:49
georg
Hm. In den partiellen, nicht berechenbaren Funktionen liegen ja die totalen Funktionen, die nicht berechenbar sind.
Bei den oberen totalen Funktionen meinte ich eigentlich auch nur die totalen Funktionen, die berechenbar sind, weil sie sonst nicht drinliegen könnten…

Vielen, vielen Dank an Dich, Georg. Jetzt hab auch ich es soweit verstanden. [img]http://www.fb18.de/gfx/10.gif[/img]

Gern geschehen! Wenn du das mit der Berechenbarkeit der totalen
Funktionen noch dazuschreibst, kannst du die Grafik ja ins Wiki
stellen. [img]http://www.fb18.de/gfx/14.gif[/img][img]http://www.fb18.de/gfx/23.gif[/img]

Re: F3-Verständnisfrage: Berechenbare Funktionen 2006-09-14 11:35
Sven Port
… kannst du die Grafik ja ins Wiki
stellen. [img]http://www.fb18.de/gfx/14.gif[/img][img]http://www.fb18.de/gfx/23.gif[/img]

Hab ich verbessert und ins Wiki gestellt…