<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Markow-Algorithmus</id>
	<title>Markow-Algorithmus - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Markow-Algorithmus"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Markow-Algorithmus&amp;action=history"/>
	<updated>2026-05-27T11:36:37Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Markow-Algorithmus&amp;diff=278882&amp;oldid=prev</id>
		<title>imported&gt;Jansan: /* Erkennung korrekter Klammerausdrücke */ klarer als Beispiel gekennzeichnet</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Markow-Algorithmus&amp;diff=278882&amp;oldid=prev"/>
		<updated>2025-12-01T21:36:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Erkennung korrekter Klammerausdrücke: &lt;/span&gt; klarer als Beispiel gekennzeichnet&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{QS-Informatik}}&lt;br /&gt;
Das vom russischen Mathematiker [[Andrei Andrejewitsch Markow (Mathematiker, 1903)|Andrei Markow]] entwickelte Konzept des &amp;#039;&amp;#039;&amp;#039;Markow-Algorithmus&amp;#039;&amp;#039;&amp;#039; stellt einen wichtigen Ansatz zur [[Formalisierung]] des [[Algorithmus|Algorithmusbegriffs]] dar. Formal handelt es sich bei einem Markow-Algorithmus um ein spezielles [[Semi-Thue-System]].&lt;br /&gt;
&lt;br /&gt;
Besonders Aufgaben der symbolischen Datenverarbeitung, beispielsweise die Konjugation und Deklination natürlicher Sprachen, lassen sich mit seiner Hilfe sehr effizient lösen. &lt;br /&gt;
== Definition ==&lt;br /&gt;
=== Informelle Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Der Markow-Algorithmus betrachtet die Eingabedaten eines [[Algorithmus]] als Wörter oder Sätze, aus denen durch Übersetzung ein Ergebnis ermittelt werden kann. Das Lösungsprinzip beruht also ausschließlich auf der [[Substitution (Mathematik)|Substitution]] von Zeichenketten. Weitere Operationen stehen nicht zur Verfügung. Analog zur [[Turingmaschine]] wird eine Symbolkette als grundlegende [[Datenstruktur]] verwendet. Obwohl Produktivsysteme meist eine nichtdeterministische Verarbeitung solcher Symbolketten vornehmen, lässt sich durch spezielle Einschränkungen ein deterministisches Verhalten erreichen:&lt;br /&gt;
* Können mehrere Regeln angewendet werden, muss die Anwendungsreihenfolge immer eindeutig festgelegt sein.&lt;br /&gt;
* Ist eine Regelanwendung an mehreren Positionen des Ausgangsworts möglich, muss stets eine Priorität definiert sein.&lt;br /&gt;
&lt;br /&gt;
Der Markow-Algorithmus erfüllt die Anforderungen an einen solchen deterministischen Wortkalkül. Mit Mitteln der [[Berechenbarkeit]]stheorie kann man beweisen, dass Markow-Algorithmen genauso mächtig sind wie beliebige andere Algorithmen, Turingmaschinen oder [[Μ-Rekursion|µ-rekursive Funktionen]]. {{siehe auch|Church-Turing-These}}&lt;br /&gt;
&lt;br /&gt;
=== Formale Definition ===&lt;br /&gt;
&lt;br /&gt;
Markow-Algorithmus und natürlicher Algorithmus stellen Semi-Thue-Systeme dar,&amp;lt;ref&amp;gt;{{Literatur |Titel=Lexikon der Mathematik |Hrsg=Guido Walz |Band=3 |Auflage=2 |Verlag=Springer |Ort=Berlin / Heidelberg |Datum=2017 |ISBN=978-3-662-53501-1 |Seiten=356}}&amp;lt;/ref&amp;gt; deren Regeln eine geordnete Menge bilden, die wiederum in folgende disjunkte Teilmengen zerfällt:&lt;br /&gt;
* terminierende Regeln&lt;br /&gt;
* nicht terminierende Regeln&lt;br /&gt;
&lt;br /&gt;
Unter folgenden Voraussetzungen ist bei einem Markow-Algorithmus das Wort&amp;amp;nbsp;Q aus dem Wort&amp;amp;nbsp;P durch eine Regel&amp;amp;nbsp;R direkt ableitbar:&lt;br /&gt;
* P wurde durch eine nicht terminierende Regel erzeugt&lt;br /&gt;
* R ist die erste auf P anwendbare Regel&lt;br /&gt;
* Q wird durch Anwendung von R auf das am weitesten links zu findende Teilwort von&amp;amp;nbsp;R in&amp;amp;nbsp;P erzeugt&lt;br /&gt;
&lt;br /&gt;
Die Arbeit des Markow-Algorithmus bricht bei dem Wort ab, das durch eine terminierende Regel erzeugt wurde oder auf das keine weitere Regel anwendbar ist. Im Unterschied zum [[Post-Kalkül]] wird stets nur auf den passenden Teilen des Wortes operiert. Die Substitution eines Wortpaares (P,&amp;amp;nbsp;Q) bildet die Grundlage des Markow-Algorithmus:&lt;br /&gt;
* Ein gegebenes Ausgangswort wird auf das erste Enthaltensein des Wortes P durchsucht&lt;br /&gt;
* Kann P gefunden werden, wird es durch das Wort Q ersetzt&lt;br /&gt;
&lt;br /&gt;
Es existieren folgende Spezialfälle der Substitution:&lt;br /&gt;
* ε ⇒ Q&amp;lt;br /&amp;gt;Das [[Leeres Wort|leere Wort]] wird durch ein Wort Q ersetzt.&lt;br /&gt;
* P ⇒ ε&amp;lt;br /&amp;gt;Ein Wort P wird durch das leere Wort ersetzt.&lt;br /&gt;
* ε ⇒ ε&amp;lt;br /&amp;gt;Das leere Wort wird durch sich selbst ersetzt.&lt;br /&gt;
&lt;br /&gt;
Die zu verarbeitenden Wörter werden aus einem Alphabet&amp;amp;nbsp;A gebildet. Linke und rechte Teile der Regeln eines Markow-Algorithmus stellen Wörter des Alphabets&amp;amp;nbsp;A dar. Folgende Metazeichen dürfen nicht im Alphabet enthalten sein:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;⇒&amp;#039;&amp;#039;&amp;#039; &amp;amp;nbsp; wird als Substitutionsoperator verwendet&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039; &amp;amp;nbsp; kennzeichnet terminierende Regeln&lt;br /&gt;
&lt;br /&gt;
=== Arbeitsweise ===&lt;br /&gt;
&lt;br /&gt;
==== Flussdiagramm ====&lt;br /&gt;
&lt;br /&gt;
[[Datei:Markow flowchart lf.png|links|Markow-Algorithmus als Flussdiagramm]]&lt;br /&gt;
Auf dem zu verarbeitenden Eingangswort findet eine Suche über das linke Wort der ersten Regel statt. Ist dieses im Eingangswort enthalten, wird eine der Regel entsprechende Substitution ausgelöst. Das Eingangswort wird von links nach rechts durchsucht. Somit wird bei einem Mehrfachvorkommen des linken Wortes der Regel stets das am weitesten links stehende Vorkommen substituiert.&lt;br /&gt;
&lt;br /&gt;
Ist die oben beschriebene Suche erfolglos, wird zur nächsten Regel übergegangen. Kann unter Einbeziehung aller weiteren Regeln keine Substitution vorgenommen werden, so ist der Algorithmus beendet. Auch die Anwendung einer terminierenden Regel führt zu dessen Beendigung. Wurde mittels einer nicht terminierenden Regel substituiert, so beginnt der gesamte Ablauf unter Berücksichtigung des geänderten Wortes erneut.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Einfaches Fallbeispiel ====&lt;br /&gt;
&lt;br /&gt;
Zu den Erläuterungen zum Flussdiagramm noch ein simples Fallbeispiel zur Erklärung der Arbeitsweise; besonders die Reihenfolge der Regelanwendung und die daraus resultierenden Ergebnisse werden im Folgenden gut verdeutlicht.&lt;br /&gt;
&lt;br /&gt;
Das im Beispiel verwendete Eingabewort lautet:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   A_I_I_I_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus seien folgende Regeln definiert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; line&amp;gt;&lt;br /&gt;
 01 I-&amp;gt;A&lt;br /&gt;
 02 _-&amp;gt;B&lt;br /&gt;
 03 AB-&amp;gt;_B&lt;br /&gt;
 04 BBBBBBBB-&amp;gt;.I_I_I_I_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ergeben sich folgende Substitutionen (die Nummer der angewendeten Regel wurde vorangestellt):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   1.   A_I_I_I_&lt;br /&gt;
   1.   A_A_I_I_&lt;br /&gt;
   1.   A_A_A_I_&lt;br /&gt;
   1.   A_A_A_A_&lt;br /&gt;
   2.   ABA_A_A_&lt;br /&gt;
   2.   ABABA_A_&lt;br /&gt;
   2.   ABABABA_&lt;br /&gt;
   2.   ABABABAB&lt;br /&gt;
   3.   _BABABAB&lt;br /&gt;
   2.   BBABABAB&lt;br /&gt;
   3.   BB_BABAB&lt;br /&gt;
   2.   BBBBABAB&lt;br /&gt;
   3.   BBBB_BAB&lt;br /&gt;
   2.   BBBBBBAB&lt;br /&gt;
   3.   BBBBBB_B&lt;br /&gt;
   2.   BBBBBBBB&lt;br /&gt;
   4.   I_I_I_I_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Hier terminiert die Berechnung wegen des Punktes (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) in der Definition der Regel 4.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Inkrementation und Addition ===&lt;br /&gt;
&lt;br /&gt;
Die Zahlendarstellung im Dezimalsystem ist für die Lösung des Problems nicht optimal. Verwendet man jedoch einen einfachen Unärcode, so besteht der Algorithmus zur Inkrementation bzw. Addition jeweils aus nur einer einzigen Regel.&lt;br /&gt;
&lt;br /&gt;
Darstellung:&lt;br /&gt;
* die Kodierung der Zahlen erfolgt in Form von &amp;amp;nbsp; &amp;lt;code&amp;gt;1 = I, 2 = II, 3 = III&amp;lt;/code&amp;gt; &amp;amp;nbsp; etc.&lt;br /&gt;
* die Addition &amp;amp;nbsp; &amp;lt;code&amp;gt;1 + 0 + 2 + 4&amp;lt;/code&amp;gt; &amp;amp;nbsp; wird beispielsweise als &amp;amp;nbsp; &amp;lt;code&amp;gt;I++II+IIII&amp;lt;/code&amp;gt; &amp;amp;nbsp; kodiert&lt;br /&gt;
&lt;br /&gt;
Es ergibt sich folgende Lösung:&lt;br /&gt;
* ε ⇒ &amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;I&amp;lt;br /&amp;gt;Inkrementation&lt;br /&gt;
* + ⇒ ε&amp;lt;br /&amp;gt;Addition&lt;br /&gt;
&lt;br /&gt;
=== Beispiel: Erkennung korrekter Klammerausdrücke ===&lt;br /&gt;
&lt;br /&gt;
Der Schlüssel zur Lösung dieses Problems liegt im Auffinden und Streichen zusammengehöriger Klammerpaare. Gestrichene Klammern verschwinden und ihr Platz wird von den angrenzenden Zeichen eingenommen. Nun sind die Klammern der folgenden Paare direkt benachbart und können wiederum leicht aufgefunden werden. Für unser Beispiel wird angenommen, dass der Klammerausdruck beidseitig durch das Zeichen &amp;#039;$&amp;#039; eingegrenzt ist.&lt;br /&gt;
&lt;br /&gt;
Es ergibt sich folgende Lösung:&lt;br /&gt;
* () ⇒ ε&amp;lt;br /&amp;gt;Löschen eines Klammerpaares&lt;br /&gt;
* $$ ⇒ $.1$&amp;lt;br /&amp;gt;Alle Paare gelöscht, Ergebnis ist 1&lt;br /&gt;
* ( ⇒ 0&amp;lt;br /&amp;gt;) ⇒ 0&amp;lt;br /&amp;gt;Löschen der Restklammern&lt;br /&gt;
* 00 ⇒ 0&amp;lt;br /&amp;gt;Löschen aller überzähligen Nullen&lt;br /&gt;
&lt;br /&gt;
Die aufgezeigte Form zur Lösung der Aufgabe ist denkbar einfach und verständlich. Der Markow-Algorithmus bietet hier ein der Problemstellung gut angepasstes Lösungsprinzip.&lt;br /&gt;
&lt;br /&gt;
{{Siehe auch |Algorithmus|Automatentheorie|Turingmaschine}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* {{Internetquelle |autor=L. Budach, O. Wilhelm |url=http://www.cs.uni-potsdam.de/~khasse/Lehrer/WS2002-03/Beispiele-Erg.Materialien/AutomatenUndUmwelten.pdf |titel=Automaten und Umwelten |format=PDF; 1,1&amp;amp;nbsp;MB |archiv-url=https://web.archive.org/web/20030911143543/http://www.cs.uni-potsdam.de/~khasse/Lehrer/WS2002-03/Beispiele-Erg.Materialien/AutomatenUndUmwelten.pdf |archiv-datum=2003-09-11 |abruf=2025-11-06 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |url=https://rosettacode.org/wiki/Execute_a_Markov_algorithm |titel=Markov-Algorithmus Interpreter |werk=Rosetta Code |sprache=en |abruf=2025-11-06 |abruf-verborgen=ja}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Theoretische Informatik]]&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Jansan</name></author>
	</entry>
</feed>