Diskussion:Ableitung (Informatik)

message: Wie gehabt: 
Wikipedia:Wie schreibe ich gute Artikel
Gibt es ein oder mehrere praktische Beispiele, die für jeden nachvollziehbar sind, woran man den Sinn, die Verwendung einer Ableitung erkennen kann? Kein mathematisches Beispiel.
Auch wenn das Beispiel nicht richtig sein sollte, geht es um den Sinn der Aussage.
:In der Computertechnik wird ein Computerprogramm, ein Compiler, zur Übersetzung eines in einer Programmiersprache geschriebenen Quelltextes in ein Zielprogramm verwendet. Ein Parser, oft ein Teil eines Compilers, wird dazu verwendet ein Quellprogramm ganz oder schrittweise in einen Syntaxbaum, eine baumförmige Darstellung einer Ableitung, umzuwandeln. Scheitert der Parser dabei, so zeigt das an, dass das Quellprogramm kein syntaktisch korrektes Programm ist. Der Parser hat also in diesem Falle das Wortproblem und hat die Frage ob das das Programm ein Wort der Programmiersprache ist negativ beantwortet. Eine Zeichenkette gehört immer dann zu einer formalen Sprache, wenn die Zeichenkette eine Ableitung beinhaltet. --Strelok 19:34, 28. Mär. 2010 (CEST)
replies: text: Moderne Compiler (bzw. ihr Parser-Anteil) arbeiten nicht so, dass sie direkt die Ableitung des Wortes bilden. "Ableitung" ist ein wesentlicher Begriff der Theoretischen Informatik und insbesondere zum Aufbau und zum Verständnis der Grammatiken formaler Sprachen unverzichtbar. Er hat allerdings keine aktuelle direkte Entsprechung im Compilerbau.
--Bri B. 12:35, 4. Jan. 2012 (CET)

text: Ich weiß nicht, was für einen Hokuspokus moderne Parser betreiben, um syntaktische Korrektheit zu erkennen. An den theoretischen Grundlagen kommen sie nicht vorbei. ANTLR jedenfalls verwendet noch abstrakte Syntaxbäume. Erkennt es eine Eingabe als korrekt, ist die Eingabe eine Ableitung aus der Grammatik. Nichts, was man nicht tun könnte, ohne einen Namen dafür zu haben, aber der Name wird durch das Parser-Beispiel veranschaulicht. --Zahnradzacken 14:25, 4. Jan. 2012 (CET)
replies: text: Ein abstrakter Syntaxbaum ist aber kein Ableitungsbaum; insofern stimmt die Aussage des Artikels. -- UKoch 19:41, 11. Jan. 2012 (CET)
thread_title:  ÜA

message: :Einwände gegen die jetzige Fassung:
:*Terminale, also für Zeichen, die nicht weiter abgeleitet werden — das stimmt nur für CFGs; im allgemeinen können die ersetzten \alpha durchaus auch Terminale mitenthalten.
:*Nichtterminalsymbole, also die Zeichen, die noch zu Terminalen ungewandelt werden müssen.  — das Verb umwandeln gibt vielleicht Anlass zum Missverständnis, dass sie immer separat ersetzt werden und auch durch ein einzelnes Terminalsymbol.
:*Werden mehrere Regeln auf einmal angewendet schreibt man w \Rightarrow_G^* w'  —  das auf einmal führt in die Irre. \Rightarrow_G^* ist definiert als sukzessive Einzelersetzung, nicht als simultane. Das macht einen Unterschied, weil weiter zu ersetzende Nonterminale erst in vorherigen Schritten entstehen können, und weil (bei Klassen oberhalb CF) eine voll simultane Ersetzung längere Kontexte, an denen manche der Produktionen ansetzen, erst gar nicht entstehen lassen könnte. Bsp: N = \{S, A, B\}, P = \{S \rightarrow A B, A \rightarrow A B, B \rightarrow A B, A A \rightarrow c, A \rightarrow a, B \rightarrow b \}. Bei simultaner Ersetzung enthält kein erzeugtes Wort ein c, bei sukzessiver Einzelersetzung schon.
:*Da es sich hierbei häufig um kontextfreie Sprachen handelt, ist ein Kellerautomat nötig. — Nötig ist er im allgemeinen nicht; Reguläre Sprachen etwa können ja schon mit einem DFA analysiert werden. Und auch bei komplizierteren Sprachen könnte es natürlich im Einzelfall Parse-Mechanismen geben, die keine Kellerautomaten sind. Davon abgesehen, ist diese Aussage aus dem Kontext hier heraus gar nicht verständlich.
:Ich schlage die folgende neue Fassung der Definition vor:
:Sei G = \left(N, T, P, S \right) eine Chomsky-Grammatik. Sie besteht aus 4 Teilen:
:*aus T, dem endlichen Alphabet der Terminalsymbole oder Terminale in der Grammatik. Tritt im Zuge einer Ableitung eine Zeichenkette nur mit Zeichen aus T auf, dann ist die Ableitung beendet.
:*aus N, dem endlichen Alphabet der Nonterminalsymbole oder Nonterminale in der Grammatik. Solange im Zuge einer Ableitung die Zeichenkette noch irgend ein Zeichen aus N enthält, ist die Ableitung noch nicht beendet. Alle Nonterminale müssen also am Ende einer Ableitung verschwunden sein, wobei aber zwischendurch die Zahl der Nonterminale  durchaus auch wachsen kann.
:*aus S, dem sogenannten Startsymbol. Jede Ableitung fängt mit S an, und S muss ein Nonterminal sein. (Sonst begönne und endete jede Ableitung mit S, damit wäre von einer solchen Grammatik nur genau das Wort S selbst erzeugbar, also wäre die Sprache zu einem solchen G reichlich trivial.)
:*aus P, der endlichen Menge der Produktionsregeln oder Produktionen. Sie geben an, welche vorkommenden Teilzeichenketten durch welche anderen ersetzt werden dürfen. Eine einzelne Produktionsregel p hat die Gestalt p = \alpha \rightarrow \beta, worin \alpha und \beta für irgendwelchen endlichen Ketten aus Zeichen aus dem Gesamtalphabet \left(N\cup T\right) stehen. Wenn ein solches p = \alpha \rightarrow \beta in der Produktionenmenge  enthalten ist, dann erlaubt dies gerade, ein im Zwischenerzeugnis irgendwo vorkommendes \alpha genau an dieser Stelle im Zuge eines Ableitungsschritt durch \beta zu ersetzen. (Je nachdem, welche allgemeine Gestalt die \alpha und \beta aller Produktionen haben dürfen, unterscheidet man verschiedene Klassen von Grammatiken.)
: -- Silvicola Diskussion Silvicola 22:48, 23. Mär. 2010 (CET)
thread_title:  Abschnitt Definition

message: Es wird wohl Zeit, dass der Abschnitt überarbeitet wird. Erstens könnte man hier neben Parsern als zweites Beispiel auf die Linguistik verweisen (s. etwas verstecktes Beispiel bei Nichtterminalsymbol). Dort gibt es Ableitungen auch ohne Parser (in der Computerlinguistik werden aber auch Parser genutzt). Zweitens bin ich nicht mit der neusten Änderung einverstanden, die Ableitung sei nur ein begriffliches Konzept. Parser erstellen doch erst einen Syntaxbaum, bevor sie ihn in einen AST abstrahieren, oder nicht? Parser ohne AST finden dennoch eine Ableitung oder eben nicht, nämlich durch Anwenden von Regeln in einer bestimmten Reihenfolge. Ob die Ableitung später noch interessiert (i.d.R. schon, wenn man die Syntax nicht nur für einen Syntaxcheck parst, sondern um dann damit etwas zu tun), oder nicht, eine Ableitung fand statt (oder schlug fehl). --Zahnradzacken 19:13, 4. Jan. 2012 (CET)
thread_title:  Abschnitt ''Anwendungsbereich'' 

message: Ich komme von "Mit einer formalen Grammatik lassen sich ausgehend von einem Startsymbol S (auch Startvariable genannt) Produktionsregeln aus einer Regelmenge P anwenden, die aus dem Startsymbol neue Zeichenfolgen erzeugen, welche wiederum weiter ersetzt werden können. Diesen Vorgang nennt man auch Ableitung" (de.wikipedia.org/wiki/Formale_Grammatik) siehe auch ..../Produktionsregel.
Mit den ersten beiden Beschreibungen (besonders den Beispielen) komme ich recht gut zurecht. Das Beispiel mit dem Palindrom aber kommt mir doch sehr verwirrend vor. Gibt es kein besseres Beispiel, was sich an Grammatik / Produktionsregel (Wiki-Artikel) besser anlehnt ? Wäre schade wenn der Artikel deswegen verschmäht würde.
Platt ausgedrückt könnte "Ableitung" heißen : Von einem abstrakteren  (Nichtterminal) zu einen konkreterem (Nichtterminal/Terminal) bis hin zum "Ende" ?? 31.19.219.149 20:58, 22. Mai 2013 (CEST)
replies: text: Unter Formale Grammatik wird sich etwas ungenau ausgedrückt, dort fehlt der Hinweis, dass die Ableitung ein Wort ergibt (was sich nicht so leicht unterbringen lässt in einem gewollt einfachen Abschnitt, aber mit deiner "platten" Formulierung bist du in der richtigen Richtung). Doch worin genau siehst du denn eine Inkonsistenz? Was schreckt dich genau am Palindrom-Beispiel ab? --Zahnradzacken (Diskussion) 23:53, 22. Mai 2013 (CEST)
thread_title:  Besseres Beispiel (?) Inkonsistenz zu formale Grammatik / Produktionsregel