SlideShare ist ein Scribd-Unternehmen logo
1 von 73
Boyer-Moore-Algorithmus Ein Textsuchalgorithmus für  große Alphabete Martin Szugat (Martin.Szugat@GMX.net)
Agenda ,[object Object],[object Object],[object Object],[object Object]
Problemstellung ,[object Object],[object Object],[object Object]
Zur Erinnerung!!! ,[object Object],[object Object],[object Object],[object Object]
Lösung I: Naive Suche ,[object Object],[object Object],[object Object],[object Object],[object Object]
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 0
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 1
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 2
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 5
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 5
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 9
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 12
Naive Suche - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 20
Naive Suche - Laufzeit ,[object Object],[object Object],[object Object],[object Object],[object Object]
Lösung II: Knuth-Morris-Pratt ,[object Object],[object Object],[object Object],[object Object],[object Object]
Länge der Ränder aller Präfixe ,[object Object],[object Object],Leeres Wort
Länge der Ränder aller Präfixe ,[object Object],[object Object],Per Definition Leeres Wort
Länge der eigentlichen Ränder aller Präfixe ,[object Object],[object Object]
Länge der Ränder aller Präfixe ,[object Object],[object Object]
Länge der Ränder aller Präfixe ,[object Object],[object Object]
Länge der Ränder aller Präfixe ,[object Object],[object Object]
Knuth-Morris-Pratt - Beispiel ,[object Object],[object Object]
Knuth-Morris-Pratt - Beispiel ,[object Object],[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 5
Knuth-Morris-Pratt - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 5
Knuth-Morris-Pratt - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 6
Knuth-Morris-Pratt - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 8
Knuth-Morris-Pratt - Laufzeit ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Knuth-Morris-Pratt - Worst-Case ,[object Object],[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 3
Knuth-Morris-Pratt - Worst-Case ,[object Object],[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 5
Knuth-Morris-Pratt - Worst-Case ,[object Object],[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 6
Knuth-Morris-Pratt - Worst-Case ,[object Object],[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 9
Knuth-Morris-Pratt - Worst-Case ,[object Object],[object Object],Anzahl der Vergleiche: 14
Bad Character ,[object Object],[object Object],[object Object],[object Object],[object Object]
Bad Character – Beispiel I ,[object Object],[object Object],Anzahl der Vergleiche: 3
Bad Character - Beispiel I ,[object Object],[object Object],Anzahl der Vergleiche: 6
Bad Character - Beispiel I ,[object Object],[object Object],Anzahl der Vergleiche: 9
Muster von rechts nach links vergleichen ,[object Object],[object Object],[object Object]
Bad Character - Beispiel II ,[object Object],[object Object],Anzahl der Vergleiche: 1
Bad Character - Beispiel II ,[object Object],[object Object],Anzahl der Vergleiche: 2
Bad Character - Beispiel II ,[object Object],[object Object],Anzahl der Vergleiche: 5
Bad Character-Regel ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bad Character-Regel - Laufzeit ,[object Object],[object Object],[object Object],[object Object]
Sprungtabelle ,[object Object],[object Object],[object Object],[object Object],[object Object]
Good Suffix - Beispiel ,[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 0
Good Suffix - Beispiel ,[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 2
Good Suffix - Beispiel ,[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 7 Shift um 2
Good Suffix - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 7 Weak Good Suffix!
Good Suffix - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 15 Mismatch an derselben Stelle im Text mit dem gleichen Zeichen im Muster! Shift um 3
Strong Good Suffix-Regel ,[object Object],[object Object],[object Object]
Strong Good Suffix - Beispiel ,[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 2
Strong Good Suffix - Beispiel ,[object Object],[object Object],[object Object],[object Object],Anzahl der Vergleiche: 7 Shift um 2
Strong Good Suffix - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 7 Weak Good Suffix
Strong Good Suffix - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 7 Strong Good Suffix!
Strong Good Suffix - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 18 Shift um 6 Bereits überprüfter Bereich wird erneut verglichen.
Kein Strong Good Suffix?! ,[object Object],[object Object],Anzahl der Vergleiche: 7 Weak Good Suffix
Regel für die Ränder ,[object Object],[object Object],[object Object]
Randregel  - Beispiel ,[object Object],[object Object],Anzahl der Vergleiche: 7 In einer 2. Sprungtabelle werden die eigentlichen Ränder des Musters berücksichtigt.
Randregel - Beispiel ,[object Object],[object Object],[object Object],Anzahl der Vergleiche: 9 Vorheriger Mismatch
Boyer-Moore: Top-Down ,[object Object],[object Object],[object Object],[object Object]
Algorithmus für die  Bad Character-Regel ,[object Object],[object Object],[object Object],[object Object]
Algorithmus für die Sprungtabelle ,[object Object],[object Object],[object Object]
Berechnung der Zwischentabelle ,[object Object],[object Object],[object Object],N(i):= max{j: j  ≥ 0  Λ  P[(i – j + 1)..i] ist Suffix von P}
Berechnung der Zwischentabelle ,[object Object],[object Object],[object Object],N( 6 ):= max{j: j  ≥ 0  Λ  P[( 6  – j + 1).. 6 ]  ist Suffix von P} =  2
Algorithmus für die Berechnung der Zwischentabelle (1) ,[object Object],d c b a b a c  b a i,e b a a N(i) = i – a Muster  P
Algorithmus für die Berechnung der Zwischentabelle (2) ,[object Object],[object Object],[object Object],d c b a b a c b a b a i c  b a  b a N(i) = N(|P| + i – e - 1) N(3) = N(8) = 2 e a c  b a b a
Algorithmus für die Berechnung der Zwischentabelle (3) ,[object Object],a  b a  b a c b  a b a i b a  b a N(i) >= N(|P| + i – e - 1) N(2) = N(7) + 1 = 2 + 1 = 3 e a b a  b a
Berechnung der Sprungtabelle 1. ,[object Object],[object Object],Text Muster  P Muster  P Fehler bei  i + j i s |P| - j - 1 s
Berechnung der Sprungtabelle 2. ,[object Object],[object Object],Text Muster  P Muster  P Fehler bei  i + j i s |P| - s
Laufzeiten bei Boyer-Moore I ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Laufzeiten bei Boyer-Moore II ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fazit: Vorteile von Boyer-Moore ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vergleich zu Knuth-Morris-Pratt Um so größer das verwendete Alphabet ist und um so weniger Wiederholungen das Muster und der Text enthält, um so stärker nähert sich die tatsächliche Laufzeit der Laufzeit im Best-Case an. 3 (n + m) 2 (n + m) Worst-Case n / m 2 (n + m) Best-Case Boyer-Moore Knuth-Morris-Pratt Algo Case
Noch Fragen??? ,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Pattern matching
Pattern matchingPattern matching
Pattern matching
shravs_188
 
9 big o-notation
9 big o-notation9 big o-notation
9 big o-notation
irdginfo
 

Was ist angesagt? (20)

Kmp
KmpKmp
Kmp
 
String matching with finite state automata
String matching with finite state automataString matching with finite state automata
String matching with finite state automata
 
Pattern matching
Pattern matchingPattern matching
Pattern matching
 
Rabin karp string matching algorithm
Rabin karp string matching algorithmRabin karp string matching algorithm
Rabin karp string matching algorithm
 
String matching algorithm
String matching algorithmString matching algorithm
String matching algorithm
 
String matching algorithms(knuth morris-pratt)
String matching algorithms(knuth morris-pratt)String matching algorithms(knuth morris-pratt)
String matching algorithms(knuth morris-pratt)
 
Fuzzy Matching or Fuzzy Logic Explained
Fuzzy Matching or Fuzzy Logic ExplainedFuzzy Matching or Fuzzy Logic Explained
Fuzzy Matching or Fuzzy Logic Explained
 
Rabin karp string matcher
Rabin karp string matcherRabin karp string matcher
Rabin karp string matcher
 
Rabin Karp Algorithm
Rabin Karp AlgorithmRabin Karp Algorithm
Rabin Karp Algorithm
 
String matching algorithms
String matching algorithmsString matching algorithms
String matching algorithms
 
Boyer moore algorithm
Boyer moore algorithmBoyer moore algorithm
Boyer moore algorithm
 
Algorithms Lecture 6: Searching Algorithms
Algorithms Lecture 6: Searching AlgorithmsAlgorithms Lecture 6: Searching Algorithms
Algorithms Lecture 6: Searching Algorithms
 
String matching, naive,
String matching, naive,String matching, naive,
String matching, naive,
 
String Matching Algorithms-The Naive Algorithm
String Matching Algorithms-The Naive AlgorithmString Matching Algorithms-The Naive Algorithm
String Matching Algorithms-The Naive Algorithm
 
String Matching (Naive,Rabin-Karp,KMP)
String Matching (Naive,Rabin-Karp,KMP)String Matching (Naive,Rabin-Karp,KMP)
String Matching (Naive,Rabin-Karp,KMP)
 
Rabin Carp String Matching algorithm
Rabin Carp String Matching  algorithmRabin Carp String Matching  algorithm
Rabin Carp String Matching algorithm
 
9 big o-notation
9 big o-notation9 big o-notation
9 big o-notation
 
Rabin Karp - String Matching Algorithm
Rabin Karp - String Matching AlgorithmRabin Karp - String Matching Algorithm
Rabin Karp - String Matching Algorithm
 
Pattern matching programs
Pattern matching programsPattern matching programs
Pattern matching programs
 
Chomsky Normal Form
Chomsky Normal FormChomsky Normal Form
Chomsky Normal Form
 

Mehr von Martin Szugat

Facebook ist tot. Eine Obduktion in sieben Akten.
Facebook ist tot.  Eine Obduktion in sieben Akten.Facebook ist tot.  Eine Obduktion in sieben Akten.
Facebook ist tot. Eine Obduktion in sieben Akten.
Martin Szugat
 
Referenten martin szugat_snip_clip 2013
Referenten martin szugat_snip_clip 2013Referenten martin szugat_snip_clip 2013
Referenten martin szugat_snip_clip 2013
Martin Szugat
 
SnipClip @ LMU - Tag der offenen Türe 2013
SnipClip @ LMU - Tag der offenen Türe 2013SnipClip @ LMU - Tag der offenen Türe 2013
SnipClip @ LMU - Tag der offenen Türe 2013
Martin Szugat
 
Referentenprofil Martin Szugat
Referentenprofil Martin SzugatReferentenprofil Martin Szugat
Referentenprofil Martin Szugat
Martin Szugat
 

Mehr von Martin Szugat (20)

Self-Service.AI - Pitch Competition for AI-Driven SaaS Startups
Self-Service.AI - Pitch Competition for AI-Driven SaaS StartupsSelf-Service.AI - Pitch Competition for AI-Driven SaaS Startups
Self-Service.AI - Pitch Competition for AI-Driven SaaS Startups
 
MENSCHEN STATT SEITEN - Ein Plädoyer für People Analytics
MENSCHEN STATT SEITEN - Ein Plädoyer für People AnalyticsMENSCHEN STATT SEITEN - Ein Plädoyer für People Analytics
MENSCHEN STATT SEITEN - Ein Plädoyer für People Analytics
 
Pylba: App-as-a-Service für Mobile Content Marketing
Pylba: App-as-a-Service für Mobile Content MarketingPylba: App-as-a-Service für Mobile Content Marketing
Pylba: App-as-a-Service für Mobile Content Marketing
 
Datentreiber - Wir treiben Ihr Unternehmen voran.
Datentreiber - Wir treiben Ihr Unternehmen voran.Datentreiber - Wir treiben Ihr Unternehmen voran.
Datentreiber - Wir treiben Ihr Unternehmen voran.
 
Facebook Newsfeed Optimierung: Gefällt mir
Facebook Newsfeed Optimierung: Gefällt mirFacebook Newsfeed Optimierung: Gefällt mir
Facebook Newsfeed Optimierung: Gefällt mir
 
German CRM Forum 2014: Social Data für Customer Intelligence
German CRM Forum 2014: Social Data für Customer IntelligenceGerman CRM Forum 2014: Social Data für Customer Intelligence
German CRM Forum 2014: Social Data für Customer Intelligence
 
LMU - Tag der offenen Türe 2014 - Big Data = Big Business?
LMU - Tag der offenen Türe 2014 - Big Data = Big Business?LMU - Tag der offenen Türe 2014 - Big Data = Big Business?
LMU - Tag der offenen Türe 2014 - Big Data = Big Business?
 
Facebook ist tot. Eine Obduktion in sieben Akten.
Facebook ist tot.  Eine Obduktion in sieben Akten.Facebook ist tot.  Eine Obduktion in sieben Akten.
Facebook ist tot. Eine Obduktion in sieben Akten.
 
Daumen hoch: Conversion Optimierung für Social Commerce
Daumen hoch: Conversion Optimierung für Social CommerceDaumen hoch: Conversion Optimierung für Social Commerce
Daumen hoch: Conversion Optimierung für Social Commerce
 
Young Brand Awards 2013 - Auf Facebook sind meine Eltern.
Young Brand Awards 2013 - Auf Facebook sind meine Eltern.Young Brand Awards 2013 - Auf Facebook sind meine Eltern.
Young Brand Awards 2013 - Auf Facebook sind meine Eltern.
 
Social CRM als Grundlage für persönliche Kundenkommunikation und personalisie...
Social CRM als Grundlage für persönliche Kundenkommunikation und personalisie...Social CRM als Grundlage für persönliche Kundenkommunikation und personalisie...
Social CRM als Grundlage für persönliche Kundenkommunikation und personalisie...
 
What will Facebook do?
What will Facebook do?What will Facebook do?
What will Facebook do?
 
Social Media und Mobile Anwendungen sinnvoll verknüpfen
Social Media und Mobile Anwendungen sinnvoll verknüpfenSocial Media und Mobile Anwendungen sinnvoll verknüpfen
Social Media und Mobile Anwendungen sinnvoll verknüpfen
 
Referenten martin szugat_snip_clip 2013
Referenten martin szugat_snip_clip 2013Referenten martin szugat_snip_clip 2013
Referenten martin szugat_snip_clip 2013
 
SnipClip @ LMU - Tag der offenen Türe 2013
SnipClip @ LMU - Tag der offenen Türe 2013SnipClip @ LMU - Tag der offenen Türe 2013
SnipClip @ LMU - Tag der offenen Türe 2013
 
Die Mobile-Plattform der Zukunft: Facebook
Die Mobile-Plattform der Zukunft: Facebook Die Mobile-Plattform der Zukunft: Facebook
Die Mobile-Plattform der Zukunft: Facebook
 
Referentenprofil Martin Szugat
Referentenprofil Martin SzugatReferentenprofil Martin Szugat
Referentenprofil Martin Szugat
 
Facebook Marketing: Grundlagen und Erfolgsfaktoren
Facebook Marketing: Grundlagen und Erfolgsfaktoren Facebook Marketing: Grundlagen und Erfolgsfaktoren
Facebook Marketing: Grundlagen und Erfolgsfaktoren
 
So funktioniert erfolgreiches Facebook-Marketing
So funktioniert erfolgreiches Facebook-Marketing So funktioniert erfolgreiches Facebook-Marketing
So funktioniert erfolgreiches Facebook-Marketing
 
Ein bisschen Spaß muss sein: Game Mechanics im Social Media Marketing
Ein bisschen Spaß muss sein: Game Mechanics im Social Media MarketingEin bisschen Spaß muss sein: Game Mechanics im Social Media Marketing
Ein bisschen Spaß muss sein: Game Mechanics im Social Media Marketing
 

Boyer-Moore-Algorithmus

  • 1. Boyer-Moore-Algorithmus Ein Textsuchalgorithmus für große Alphabete Martin Szugat (Martin.Szugat@GMX.net)
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72. Vergleich zu Knuth-Morris-Pratt Um so größer das verwendete Alphabet ist und um so weniger Wiederholungen das Muster und der Text enthält, um so stärker nähert sich die tatsächliche Laufzeit der Laufzeit im Best-Case an. 3 (n + m) 2 (n + m) Worst-Case n / m 2 (n + m) Best-Case Boyer-Moore Knuth-Morris-Pratt Algo Case
  • 73.