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?

AI unit-2 lecture notes.docx
AI unit-2 lecture notes.docxAI unit-2 lecture notes.docx
AI unit-2 lecture notes.docx
CS50Bootcamp
 
Pattern matching
Pattern matchingPattern matching
Pattern matching
shravs_188
 

Was ist angesagt? (20)

Comp10 unit3e lecture_slides
Comp10 unit3e lecture_slidesComp10 unit3e lecture_slides
Comp10 unit3e lecture_slides
 
RABIN KARP ALGORITHM STRING MATCHING
RABIN KARP ALGORITHM STRING MATCHINGRABIN KARP ALGORITHM STRING MATCHING
RABIN KARP ALGORITHM STRING MATCHING
 
Naive string matching
Naive string matchingNaive string matching
Naive string matching
 
Kmp
KmpKmp
Kmp
 
String Matching (Naive,Rabin-Karp,KMP)
String Matching (Naive,Rabin-Karp,KMP)String Matching (Naive,Rabin-Karp,KMP)
String Matching (Naive,Rabin-Karp,KMP)
 
String matching algorithms-pattern matching.
String matching algorithms-pattern matching.String matching algorithms-pattern matching.
String matching algorithms-pattern matching.
 
String matching algorithm
String matching algorithmString matching algorithm
String matching algorithm
 
spam_msg_detection.pdf
spam_msg_detection.pdfspam_msg_detection.pdf
spam_msg_detection.pdf
 
String matching algorithms
String matching algorithmsString matching algorithms
String matching algorithms
 
Pattern matching programs
Pattern matching programsPattern matching programs
Pattern matching programs
 
String matching algorithms(knuth morris-pratt)
String matching algorithms(knuth morris-pratt)String matching algorithms(knuth morris-pratt)
String matching algorithms(knuth morris-pratt)
 
Naive String Matching Algorithm | Computer Science
Naive String Matching Algorithm | Computer ScienceNaive String Matching Algorithm | Computer Science
Naive String Matching Algorithm | Computer Science
 
FIFO, LRU, OPTIMAL Page Replacement Algorithm
FIFO, LRU, OPTIMAL Page Replacement AlgorithmFIFO, LRU, OPTIMAL Page Replacement Algorithm
FIFO, LRU, OPTIMAL Page Replacement Algorithm
 
String matching, naive,
String matching, naive,String matching, naive,
String matching, naive,
 
NLP_KASHK:Regular Expressions
NLP_KASHK:Regular Expressions NLP_KASHK:Regular Expressions
NLP_KASHK:Regular Expressions
 
String matching algorithms
String matching algorithmsString matching algorithms
String matching algorithms
 
AI unit-2 lecture notes.docx
AI unit-2 lecture notes.docxAI unit-2 lecture notes.docx
AI unit-2 lecture notes.docx
 
Pattern matching
Pattern matchingPattern matching
Pattern matching
 
Associative memory
Associative memoryAssociative memory
Associative memory
 
Specification-of-tokens
Specification-of-tokensSpecification-of-tokens
Specification-of-tokens
 

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.