Geschrieben von Surma am 15.11.2007 um 11:24:
Verstaendnisproblem mit einem Beispielalgorithmus aus Knuth
Moin.
Ich lese gerade den ersten Band von Donald E. Knuth's "The Art of Computer Programming"-Reihe.
Ich bin zwar gerade erst am Anfang, jedoch kann ich einen Beispielalgorithmus von ihm nicht nachvollziehen. Das ganze ist wie folgt definiert:
Ein Algorithmus soll durch
definiert werden koennen, wobei
die Untermengen
und
enthaelt und
gilt.
sollen Fixpunkte von
sein, es soll also gelten
.
repraesentieren dabei den Berechnungsstatus, den Input, den Output und die Berechnungsregel (i.d.Reihenfolge).
Dabei soll fuer jedes
gelten:
und
fuer
Nun Knuth nach diesem System einen Beispielalgorithmus aufgestellt, der wie folgt definiert ist:
Sei
die Menger aller Buchstaben und
sei die Menger aller Strings aus
, also alle
mit
und
mit
.
ist ein nicht-negativer Integer und
ist die Menge aller
, wobei
und
.
soll jetzt die Untermenge von
sein, bei der
gilt,
die mit
.
Wenn
und
jetzt aus
sind, dann sagt man,
kommt in
vor, wenn
die Form
hat, mit
und
aus
.
ist nun definiert mit den beiden Strings
,
und den beiden Integern
,
mit
als:
Wenn
nicht in
auftaucht,
Wenn
der kuerzeste String ist, fuer den gilt
Mein Problem ist, dass ich die Rolle von
und
nicht verstehe. Ihre Werte oder ihr Sinn werden nicht genannt und ich kann sie mir auch nicht denken. Und wo ist der Unterschied, ob ich jetzt
erhalte, oder
, denn Wertetechnisch ist das doch ein und das Selbe?
Ich bitte euch, mir da ein wenig auf die Spruenge zu helfen.
MfG
Surma
Geschrieben von Tobias am 15.11.2007 um 11:44:
Abgesehen von deinen LaTeX-Fehlern (Statt A* lieber A^\ast, Indizes bitte vollständig klammern: nicht x_k+1 sondern x_{k+1}) ist das, höflich gesprochen, nicht sehr ausgiebig formuliert. Ist der Text aus dem Buch abgeschrieben oder hast du nach eigenem Belieben gekürzt?
Soweit ich es verstanden habe geht die Funktion hin und ersetzt einen Teilstring
durch den String
, falls dieser vorhanden ist und ersetzt dann j zu b_j. Falls der String nicht gefunden wird, wird nichts ersetzt aber j durch a_j ersetzt. Für jedes j sind Strings und a_j, b_j definiert. Ziel ist es wohl, die Funktion mehrfach hintereinander auszuführen und irgendwann in einen Fixpunkt hineinzulaufen.
Ist in deinem Buch irgendwas über den Sinn des Algorithmus erzählt? In welchem Kontext taucht er auf?
Geschrieben von Surma am 15.11.2007 um 17:18:
Danke erstmal fuer die Latex-Hinweise.
Das ganze ist (meiner Meinung nach) ungekuerzt, aber frei aus dem Englischen uebersetzt.
Das ganze taucht im Kontext von "effizienten" Algorithmen auf. Da vor wurde in diesem Schema Euklid's ggT-Algorithmus gezeigt, der wohl ineffizient war. Den hab' ich aber problemlos verstanden (siehe Anhang).
Ich habe mal die relevante Seite hier angehaengt, vielleicht hab' ich auch was relevantes uebersehen. Die mathematische Ausfuehrung fangt auf der ersten Seite letzter Absatz an.
http://drebesium.org/~crock/stuff/knuth.pdf
MfG
Surma