<?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=Pattern_Matching</id>
	<title>Pattern Matching - 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=Pattern_Matching"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Pattern_Matching&amp;action=history"/>
	<updated>2026-05-17T09:36:34Z</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=Pattern_Matching&amp;diff=239937&amp;oldid=prev</id>
		<title>imported&gt;Winof: /* Programmierung */ Zeichensetzung</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Pattern_Matching&amp;diff=239937&amp;oldid=prev"/>
		<updated>2022-06-28T15:14:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Programmierung: &lt;/span&gt; Zeichensetzung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Pattern Matching&amp;#039;&amp;#039;&amp;#039; (englisch für &amp;#039;&amp;#039;Musterabgleich&amp;#039;&amp;#039;) oder &amp;#039;&amp;#039;&amp;#039;musterbasierte Suche&amp;#039;&amp;#039;&amp;#039; ist ein Begriff für symbolverarbeitende Verfahren, die anhand eines vorgegebenen Musters [[Diskretheit|diskrete]] Strukturen oder Teilmengen einer diskreten Struktur identifizieren.&lt;br /&gt;
&lt;br /&gt;
Das Pattern Matching ist beispielsweise eine Methode der phylogenetischen Analyse in der [[Bioinformatik]].&lt;br /&gt;
&lt;br /&gt;
== Grundlagen ==&lt;br /&gt;
Eine diskrete Struktur besteht aus diskreten Elementen ([[Symbol]]en) und Beziehungen zwischen diesen. Beispiele sind [[Zeichenkette]]n, aber auch [[Baum (Graphentheorie)|Bäume]] oder [[Graph (Graphentheorie)|Graphen]]. Das Suchmuster selbst ist ebenfalls eine diskrete Struktur, die aber durch Verwendung zusätzlicher [[Metazeichen]] eine ganze Klasse von Strukturen beschreiben kann. Im Gegensatz zur [[Mustererkennung]], die kontinuierliche Strukturen interpretiert, operiert das Pattern Matching von vornherein auf einer symbolischen Repräsentation.&lt;br /&gt;
&lt;br /&gt;
Das Pattern Matching spielt jedoch nicht nur bei der Suche, sondern auch bei der muster- und regelbasierten Transformation diskreter Strukturen eine zentrale Rolle. In [[Termersetzungssystem|Ersetzungs- oder Transformationssystemen]] bildet das Pattern Matching den ersten Schritt. Dabei werden Teile des Musters mit Teilen der analysierten Struktur identifiziert. Die gefundenen Teil-Strukturen gehen dann als Parameter in die Transformationsfunktion ein. Beispiele für solche Transformationen sind Textersetzung in Zeichenketten und [[Graphersetzungssysteme]].&lt;br /&gt;
&lt;br /&gt;
== Anwendungsgebiete ==&lt;br /&gt;
=== Programmierung ===&lt;br /&gt;
In einigen [[Funktionale Programmierung|funktionalen]] oder [[Logische Programmierung|logischen]] Programmiersprachen wird Pattern Matching genutzt, um Daten anhand ihrer Struktur zu verarbeiten (z.&amp;amp;nbsp;B.: [[Scala (Programmiersprache)|Scala]], [[Objective CAML]], [[ML (Programmiersprache)|ML]], [[Haskell (Programmiersprache)|Haskell]], [[Erlang (Programmiersprache)|Erlang]], [[Opal (Programmiersprache)|Opal]], [[Python (Programmiersprache)|Python]]).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039; Fallunterscheidung: Eine mögliche Definition der n-ten Fibonaccizahl ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{fib}(n) = \begin{cases}0 &amp;amp;\text{wenn }n=0\\ 1 &amp;amp;\text{wenn }n=1\\ \text{fib}(n-1) + \text{fib}(n-2) &amp;amp;\text{sonst}\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Definition kann so mithilfe von Pattern Matching direkt nach [[Haskell (Programmiersprache)|Haskell]] übertragen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
-- Matcht die ersten beiden Fälle&lt;br /&gt;
fib 0 = 0&lt;br /&gt;
fib 1 = 1&lt;br /&gt;
-- Alle anderen Zahlen n sind definiert als&lt;br /&gt;
fib n = fib(n-1) + fib(n-2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039; In Haskell werden die Argumente in einer Funktionsdefinition mit Pattern gematcht. Ein Pattern kann, muss aber nicht, wie im vorherigen Beispiel, ein elementarer Wert (zum Beispiel 0) sein, sondern kann auch einen Daten-Konstruktor beschreiben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
-- matcht die leere Liste (Konstruktor [])&lt;br /&gt;
f [] = ...&lt;br /&gt;
-- matcht alle Listen der Länge &amp;gt; 0 (Konstruktor :), wobei x den Kopf und xs den Listenrest enthält&lt;br /&gt;
f (x:xs) = ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das äquivalente Beispiel in der Syntax von Python (ab Version 3.10):&amp;lt;ref&amp;gt;{{Internetquelle | url=https://peps.python.org/pep-0636/ | titel=PEP 636 – Structural Pattern Matching: Tutorial | autor=Daniel F. Moisset | werk=python.org | datum=2020-09-12 | abruf=2022-06-28 | sprache=en }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
match n:&lt;br /&gt;
    case (): ...&lt;br /&gt;
    case (x, *xs): ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textverarbeitung ===&lt;br /&gt;
{{Hauptartikel|String-Matching-Algorithmus}}&lt;br /&gt;
&lt;br /&gt;
Pattern Matching wird auch verwendet, um Text zu bearbeiten. In Programmiersprachen wie [[Perl (Programmiersprache)|Perl]] oder [[awk]] und auch in den meisten [[Texteditor]]en existieren Werkzeuge, um einen Text nach einem Muster zu durchsuchen. Die Muster bestehen aus [[Regulärer Ausdruck|regulären Ausdrücken]].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Suchverfahren]]&lt;br /&gt;
* [[Musteranalyse]]&lt;br /&gt;
* [[Levenshtein-Distanz]]&lt;br /&gt;
* [[Gestalt Pattern Matching]]&lt;br /&gt;
* [[Unscharfe Suche]]&lt;br /&gt;
* [[Phonetische Suche]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{BibISBN|0521826144|Kommentar=Abschnitt 3.17, [https://www.haskell.org/onlinereport/exps.html#pattern-matching HTML-Version]}}&lt;br /&gt;
* {{bibISBN|0134843460}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Suchalgorithmus]]&lt;br /&gt;
[[Kategorie:Künstliche Intelligenz]]&lt;br /&gt;
[[Kategorie:Bioinformatik]]&lt;br /&gt;
[[Kategorie:Dokumentation]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Winof</name></author>
	</entry>
</feed>