Sommersemester 2005 Abgabe am 6.5.2005 Prof. Dr. Stefan Posch, Dipl.-Inf. Birgit M¨oller
4. ¨ Ubung
” Algorithmen der Bioinformatik I“
1. Wir betrachten das Good Suffix Preprocessing im Boyer-Moore-Algorithmus.
i) Beweisen Sie, dassNj(P) =Zn
−j+1(Pr)gilt.
ii) Beweisen Sie, dass der Algorithmus zur Berechnung derL0(i)aus denNj(P)korrekt arbeitet.
2. Implementieren Sie den Boyer-Moore-Algorithmus mit einfacher Bad Character Rule und dem Strong Good Suffix Preprocessing. Verwenden Sie dabei den in der Vorlesung vorgestellten Algorithmus zur Berechnung derl0(i)in linearer Laufzeit.
3. Im Folgenden sollen die Laufzeiten vom naiven Algorithmus mit Bad Character Rule und dem Boyer- Moore-Algorithmus in Abh¨angigkeit von Alphabetgr¨oße und Musterl¨ange untersucht werden.
Zur Analyse der Laufzeiten soll jeweils die Anzahl durchgef¨uhrter Vergleiche herangezogen werden.
Inkrementieren Sie dazu einen Z¨ahler vor oder nach jedem erfolgten Zeichenvergleich. Der Grund f¨ur diese (und keine m¨oglicherweise effizientere) Z¨ahlung ist, dass wir nun die Operation Zeichenver- gleich und Z¨ahlerinkrementierung als eine komplexere Vergleichsoperation betrachten k¨onnen und somit die Laufzeiten f¨ur die verschiedenen Algorithmen in gleichem Maße beeinflusst werden. Des weiteren soll die durchschnittliche L¨ange durchgef¨uhrter Shifts unter Anwendung der einzelnen Re- geln ermittelt werden.
Auf der Internetseite zur Vorlesung finden sich Texte ¨uber einem Alphabet von 40 bzw. 80 Zeichen.
Suchen Sie in diesen Texten jeweils nach Mustern der L¨angen 10, 20, 50, 100, 200, 500, 1000, 2000 und 5000. Erstellen Sie anschließend f¨ur beide Alphabetgr¨oßen Diagramme, die die ben¨otigte Anzahl an Vergleichen pro Musterl¨ange sowie die durchschnittliche L¨ange von Shifts jeweils f¨ur beide Re- geln (bad character und good suffix) zeigen, in Abh¨angigkeit der Musterl¨ange. Was l¨asst sich daraus ersehen?