https://de.wikipedia.org/w/index.php?action=history&feed=atom&title=String-Matching-Algorithmus String-Matching-Algorithmus - Versionsgeschichte 2025-04-18T07:41:14Z Versionsgeschichte dieser Seite in Wikipedia MediaWiki 1.44.0-wmf.25 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=227452349&oldid=prev Invisigoth67: typo 2022-10-29T09:45:52Z <p>typo</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 29. Oktober 2022, 11:45 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 42:</td> <td colspan="2" class="diff-lineno">Zeile 42:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; das [[Präfix]] des Suchmusters bis einschließlich des Buchstabens an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; das [[Präfix]] des Suchmusters bis einschließlich des Buchstabens an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim <del style="font-weight: bold; text-decoration: none;">finden</del> eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax'' weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#008000"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim <ins style="font-weight: bold; text-decoration: none;">Finden</ins> eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax'' weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#008000"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Python-Implementation'''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Python-Implementation'''</div></td> </tr> </table> Invisigoth67 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=227371470&oldid=prev 46.114.142.194: Komma zugefügt 2022-10-26T11:24:54Z <p>Komma zugefügt</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 26. Oktober 2022, 13:24 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 23:</td> <td colspan="2" class="diff-lineno">Zeile 23:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Pseudocode:'''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Pseudocode:'''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> '''Eingabe''': Strings T = T&lt;sub&gt;1&lt;/sub&gt;… T&lt;sub&gt;n&lt;/sub&gt; und P = P&lt;sub&gt;1&lt;/sub&gt; … P&lt;sub&gt;m&lt;/sub&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> '''Eingabe''': Strings T = T&lt;sub&gt;1&lt;/sub&gt;… T&lt;sub&gt;n&lt;/sub&gt; und P = P&lt;sub&gt;1&lt;/sub&gt; … P&lt;sub&gt;m&lt;/sub&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> '''Ausgabe''': q die Stellen an denen P in T auftritt</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> '''Ausgabe''': q die Stellen<ins style="font-weight: bold; text-decoration: none;">,</ins> an denen P in T auftritt</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="pascal"&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="pascal"&gt;</div></td> </tr> </table> 46.114.142.194 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=186438182&oldid=prev Xqt: /* Siehe auch */ 2019-03-10T12:33:10Z <p><span class="autocomment">Siehe auch</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 10. März 2019, 14:33 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 189:</td> <td colspan="2" class="diff-lineno">Zeile 189:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Suchverfahren]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Suchverfahren]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Levenshtein-Distanz]] (approximative Suche)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Levenshtein-Distanz]] (approximative Suche)</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [[Gestalt Pattern Matching]] (approximative Suche)</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Volltextrecherche]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [[Volltextrecherche]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Xqt https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=185334203&oldid=prev Facme: /* Endlicher Automat */ Grammatik 2019-02-03T07:27:45Z <p><span class="autocomment">Endlicher Automat: </span> Grammatik</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 3. Februar 2019, 09:27 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 40:</td> <td colspan="2" class="diff-lineno">Zeile 40:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; das [[Präfix]] des Suchmusters bis einschließlich <del style="font-weight: bold; text-decoration: none;">dem</del> <del style="font-weight: bold; text-decoration: none;">Buchstaben</del> an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; das [[Präfix]] des Suchmusters bis einschließlich <ins style="font-weight: bold; text-decoration: none;">des</ins> <ins style="font-weight: bold; text-decoration: none;">Buchstabens</ins> an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim finden eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax'' weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#008000"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim finden eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax'' weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#008000"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> </tr> </table> Facme https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=178787329&oldid=prev 82.149.77.122 am 1. Juli 2018 um 18:55 Uhr 2018-07-01T18:55:42Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 1. Juli 2018, 20:55 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 42:</td> <td colspan="2" class="diff-lineno">Zeile 42:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; das [[Präfix]] des Suchmusters bis einschließlich dem Buchstaben an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; das [[Präfix]] des Suchmusters bis einschließlich dem Buchstaben an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim finden eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax''<del style="font-weight: bold; text-decoration: none;">"</del> weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#<del style="font-weight: bold; text-decoration: none;">800000</del>"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim finden eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax'' weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#<ins style="font-weight: bold; text-decoration: none;">008000</ins>"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Python-Implementation'''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Python-Implementation'''</div></td> </tr> </table> 82.149.77.122 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=166156678&oldid=prev 92.77.204.64: /* Endlicher Automat */ "Präfix" ist ein Neutrum 2017-06-07T08:45:14Z <p><span class="autocomment">Endlicher Automat: </span> &quot;Präfix&quot; ist ein Neutrum</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 7. Juni 2017, 10:45 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 40:</td> <td colspan="2" class="diff-lineno">Zeile 40:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; <del style="font-weight: bold; text-decoration: none;">der</del> [[Präfix]] des Suchmusters bis einschließlich dem Buchstaben an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Bei dem String-Matching-Algorithmus mit Hilfe von [[Endlicher Automat|endlichen Automaten]] wird ein für ein Alphabet &lt;math&gt;\Sigma&lt;/math&gt; und ein gegebenes Suchmuster der Länge &lt;math&gt;m&lt;/math&gt; ein Automat &lt;math&gt;(Q, \Sigma, \delta, q_0, \{q_m\})&lt;/math&gt; mit Zustandsmenge &lt;math&gt;\textstyle Q = \{q_i \mid 0 \le i \le m\}&lt;/math&gt; erstellt. Dabei stellt &lt;math&gt;\textstyle i&lt;/math&gt; die Anzahl von übereinstimmenden Buchstaben an der aktuellen Stelle vom Anfang des Suchmusters an betrachtet dar. Zur Einfachheit sei &lt;math&gt;\textstyle P_i&lt;/math&gt; <ins style="font-weight: bold; text-decoration: none;">das</ins> [[Präfix]] des Suchmusters bis einschließlich dem Buchstaben an der Stelle &lt;math&gt;\textstyle i&lt;/math&gt;. Die Übergangsfunktion &lt;math&gt;\delta(q_i, a)&lt;/math&gt; mit &lt;math&gt;a \isin \Sigma&lt;/math&gt; gibt nun für &lt;math&gt;0 \le i \le m - 1&lt;/math&gt; wieder einen Zustand &lt;math&gt;q_j&lt;/math&gt; zurück, bei dem &lt;math&gt;j&lt;/math&gt; die maximale Anzahl von Buchstaben darstellt, mit der &lt;math&gt;P_j&lt;/math&gt; ein [[Suffix]] vom Wort &lt;math&gt;P_i a&lt;/math&gt; ist. Also &lt;math&gt;\delta(q_i, a) = q_{max\{j \mid P_j \text{ ist Suffix von } P_i a\}}&lt;/math&gt;. Ist das Suchmuster gefunden, wird im Endzustand verharrt, also &lt;math&gt;\delta(q_m, a) = q_m&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim finden eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax''" weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#800000"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Der Vorteil dieses Algorithmus gegenüber dem naiven Algorithmus liegt darin, dass er auch beim finden eines nicht-passenden Zeichens das erlangte Wissen über den bereits verarbeiteten Teil der Zeichenkette nicht verwirft. Angenommen, wir suchen das Muster ''anax'' im Text ''ananax''. Trifft der automatenbasierte Algorithmus bei der Suche auf das Zweite ''n'' in ''&lt;span style="color:#008000"&gt;ana&lt;/span&gt;&lt;span style="color:#800000"&gt;n&lt;/span&gt;ax'', so wird er die ersten beiden Buchstaben verwerfen und beginnend mit ''an&lt;span style="color:#008000"&gt;an&lt;/span&gt;ax''" weitersuchen. Der naive Algorithmus hingegen hätte den kompletten bereits verarbeiteten Teil verworfen und hätte beginnend mit ''a&lt;span style="color:#800000"&gt;n&lt;/span&gt;anax'' einen nächsten Versuch begonnen.</div></td> </tr> </table> 92.77.204.64 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=166156643&oldid=prev 92.77.204.64: /* Endlicher Automat */ "Suffix" ist ein Neutrum 2017-06-07T08:43:06Z <p><span class="autocomment">Endlicher Automat: </span> &quot;Suffix&quot; ist ein Neutrum</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 7. Juni 2017, 10:43 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 47:</td> <td colspan="2" class="diff-lineno">Zeile 47:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="Python"&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="Python"&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>def is_suffix(suffix, word):</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>def is_suffix(suffix, word):</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> '''Überprüft ob <del style="font-weight: bold; text-decoration: none;">der</del> suffix ein Suffix von word ist.'''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> '''Überprüft ob <ins style="font-weight: bold; text-decoration: none;">das</ins> suffix ein Suffix von word ist.'''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> return word.endswith(suffix)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> return word.endswith(suffix)</div></td> </tr> </table> 92.77.204.64 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=162499648&oldid=prev Regi51: Änderungen von 87.143.156.89 (Diskussion) rückgängig gemacht (HG) (3.1.22) 2017-02-10T11:38:19Z <p>Änderungen von <a href="/wiki/Spezial:Beitr%C3%A4ge/87.143.156.89" title="Spezial:Beiträge/87.143.156.89">87.143.156.89</a> (<a href="/w/index.php?title=Benutzer_Diskussion:87.143.156.89&amp;action=edit&amp;redlink=1" class="new" title="Benutzer Diskussion:87.143.156.89 (Seite nicht vorhanden)">Diskussion</a>) rückgängig gemacht (<a href="/wiki/Wikipedia:Huggle" title="Wikipedia:Huggle">HG</a>) (3.1.22)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 10. Februar 2017, 13:38 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 36:</td> <td colspan="2" class="diff-lineno">Zeile 36:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Text: aaa...aab</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Text: aaa...aab</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Muster: ab</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Muster: ab</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Derartige Fälle sind in natürlich sprachlichen Texten äußerst <del style="font-weight: bold; text-decoration: none;">Penis</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Derartige Fälle sind in natürlich sprachlichen Texten äußerst <ins style="font-weight: bold; text-decoration: none;">unwahrscheinlich</ins>.</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> </tr> </table> Regi51 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=162499645&oldid=prev 87.143.156.89 am 10. Februar 2017 um 11:38 Uhr 2017-02-10T11:38:11Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 10. Februar 2017, 13:38 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 36:</td> <td colspan="2" class="diff-lineno">Zeile 36:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Text: aaa...aab</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Text: aaa...aab</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Muster: ab</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Muster: ab</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Derartige Fälle sind in natürlich sprachlichen Texten äußerst <del style="font-weight: bold; text-decoration: none;">unwahrscheinlich</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Derartige Fälle sind in natürlich sprachlichen Texten äußerst <ins style="font-weight: bold; text-decoration: none;">Penis</ins>.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Endlicher Automat ====</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Datei:Eines endlicher Automat zur Suche der Zeichenkette "anax" in Texten.svg|mini|Ein endlicher Automat zur Suche des Wortes ''anax'']]</div></td> </tr> </table> 87.143.156.89 https://de.wikipedia.org/w/index.php?title=String-Matching-Algorithmus&diff=159827621&oldid=prev 109.46.252.29: /* Multi-String-Matching */ 2016-11-18T23:50:13Z <p><span class="autocomment">Multi-String-Matching</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 19. November 2016, 01:50 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 150:</td> <td colspan="2" class="diff-lineno">Zeile 150:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Multi-String-Matching ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Multi-String-Matching ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Die Suche nach mehreren Mustern in einem Text nennt sich Multi-String-Matching&lt;ref&gt;{{Literatur |Autor=Gonzalo Navarro, Mathieu Raffinot |Titel=Flexible Pattern Matching Strings: Practical On-Line Search Algorithms for Texts and Biological Sequences |Datum=2008 |ISBN=0-521-03993-2}}&lt;/ref&gt;. Die meisten Algorithmen sind abgeleitet von einem entsprechenden String-Matching Algorithmus für <del style="font-weight: bold; text-decoration: none;">ganau</del> ein Muster. Eine besondere Herausforderung bei der Suche nach mehreren Suchwörtern ist die Behandlungen von Wort-Überlappungen.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Die Suche nach mehreren Mustern in einem Text nennt sich Multi-String-Matching&lt;ref&gt;{{Literatur |Autor=Gonzalo Navarro, Mathieu Raffinot |Titel=Flexible Pattern Matching Strings: Practical On-Line Search Algorithms for Texts and Biological Sequences |Datum=2008 |ISBN=0-521-03993-2}}&lt;/ref&gt;. Die meisten Algorithmen sind abgeleitet von einem entsprechenden String-Matching Algorithmus für <ins style="font-weight: bold; text-decoration: none;">genau</ins> ein Muster. Eine besondere Herausforderung bei der Suche nach mehreren Suchwörtern ist die Behandlungen von Wort-Überlappungen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Liste von Algorithmen ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Liste von Algorithmen ===</div></td> </tr> </table> 109.46.252.29