Oefeningen op algoritmen voor strings - caagt
Oefeningen op algoritmen voor strings - caagt
Oefeningen op algoritmen voor strings - caagt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Oefeningen</strong> <strong>op</strong> <strong>algoritmen</strong> <strong>voor</strong> <strong>strings</strong><br />
Het brute-kracht-algoritme<br />
1. Zij gegeven een patroon P van lengte m en een tekst T van lengte n. We hebben gezien<br />
dat het brute-kracht-algoritme <strong>voor</strong> het controleren of P in T <strong>voor</strong>komt, tijdscomplexiteit<br />
O(m(n − m + 1)) heeft. Geef een <strong>voor</strong>beeld van een patroon en een tekst waar<strong>voor</strong> het<br />
algoritme ook effectief Θ(m(n − m+1)) vergelijkingen doet.<br />
2. We beschouwen het matchen met een wildcard “?”. We veronderstellen dat “?” een<br />
speciaal teken in het alfabet is, dat niet <strong>voor</strong>komt in de tekst die moet doorzocht worden.<br />
De wildcard matcht elke letter in de tekst.<br />
Bij<strong>voor</strong>beeld, de eerste match <strong>voor</strong> “?01?” in “1001110” is “0011”, startend <strong>op</strong> de<br />
tweede positie in de tekst. Merk <strong>op</strong> dat het teken “?”met verschillende karakters kan<br />
overeenkomen in dezelfde match.<br />
Breid het brute-kracht-algoritme uit, zodanig dat ook naar patronen met de wildcard “?”<br />
kan gezocht worden.<br />
Het algoritme van Boyer-Moore-Horspool<br />
3. (a) We hebben gezien dat de occurrence-heuristiek in het algoritme van Boyer-Moore<br />
tot een negatieve verschuiving kan leiden. Geef een <strong>voor</strong>beeld waarbij het patroon P<br />
over |P|−1 posities naar links verschoven wordt (dit is de grootst mogelijke negatieve<br />
verschuiving).<br />
(b) Kan de occurrence-heuristiek ook leiden tot een verschuiving over nul posities?<br />
4. (a) Toon aan dat het algoritme van Boyer-Moore-Horspool uitvoeringstijd Ω(mn) in het<br />
slechtste geval heeft (veronderstel dat het alfabet vast is).<br />
(b) Toon aan dat het algoritme van Boyer-Moore-Horspool uitvoeringstijd O(n/m) in het<br />
beste geval heeft (veronderstel dat het alfabet vast is).<br />
(c) We kunnen niet altijd veronderstellen dat het alfabet een kleine, vaste grootte heeft.<br />
Wat is de uitvoeringstijd in het slechtste geval van het algoritme van Boyer-Moore-<br />
Horspool, wanneer we ook de grootte van het alfabet in rekening moeten brengen?<br />
27
28<br />
5. (a) Bereken de verschuivingstabel uit het algoritme van Boyer-Moore-Horspool <strong>voor</strong> het<br />
patroon P = abracadabra.<br />
(b) Gebruik het algoritme van Boyer-Moore-Horspool <strong>voor</strong> het zoeken naar P in de tekst<br />
T = abrabracabracadabracadabracad. Hoeveel vergelijkingen maakt het<br />
algoritme?<br />
6. (a) Bereken de verschuivingstabel uit het algoritme van Boyer-Moore-Horspool <strong>voor</strong> het<br />
patroon P = entente.<br />
(b) Gebruik het algoritme van Boyer-Moore-Horspool <strong>voor</strong> het zoeken naar P in de tekst<br />
T = tenttentetententen. Hoeveel vergelijkingen maakt het algoritme?<br />
7. (a) Bereken de verschuivingstabel <strong>voor</strong> het algoritme van Boyer-Moore-Horspool <strong>voor</strong><br />
het patroon P = banana.<br />
(b) Gebruik het algoritme van Boyer-Moore-Horspool <strong>voor</strong> het zoeken naar P in de tekst<br />
T = cananabananab. Hoeveel vergelijkingen maakt het algoritme?<br />
8. (a) Bereken de verschuivingstabel <strong>voor</strong> het algoritme van Boyer-Moore-Horspool <strong>voor</strong><br />
het patroon P = antenna.<br />
(b) Gebruik het algoritme van Boyer-Moore-Horspool <strong>voor</strong> het zoeken naar het patroon<br />
P in de tekst T = anterrantennar. Hoeveel vergelijkingen maakt het algoritme?<br />
9. (a) Bereken de verschuivingstabel <strong>voor</strong> de match-heuristiek van het algoritme van Boyer-<br />
Moore <strong>voor</strong> het patroon P = antenna.<br />
(b) Gebruik het algoritme van Boyer-Moore <strong>voor</strong> het zoeken naar het patroon P in de<br />
tekst T = anterrantennar. Hoeveel vergelijkingen maakt het algoritme?<br />
Het algoritme van Knuth-Morris-Pratt<br />
10. (a) Bereken de verschuivingstabel uit het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het patroon<br />
P = abracadabra.<br />
(b) Gebruik het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het zoeken naar P in de tekst<br />
T = abrabracabracadabracadabracad. Hoeveel vergelijkingen maakt het<br />
algoritme?<br />
11. (a) Bereken de verschuivingstabel uit het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het patroon<br />
P = entente.<br />
(b) Gebruik het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het zoeken naar P in de tekst T =<br />
tenttentetententen. Hoeveel vergelijkingen maakt het algoritme?<br />
12. (a) Bereken de verschuivingstabel uit het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het patroon<br />
P = banana.<br />
Algoritmen en Datastructuren III Veerle.Fack@UGent.be
(b) Gebruik het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het zoeken naar P in de tekst T =<br />
cananabananab. Hoeveel vergelijkingen maakt het algoritme?<br />
13. (a) Bereken de verschuivingstabel <strong>voor</strong> het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het<br />
patroon P = antenna.<br />
(b) Gebruik het algoritme van Knuth-Morris-Pratt <strong>voor</strong> het zoeken naar P in de tekst T =<br />
anterrantennar. Hoeveel vergelijkingen maakt het algoritme?<br />
Het algoritme van Rabin-Karp<br />
14. Breid het algoritme van Rabin-Karp uit zodanig dat alle <strong>voor</strong>komens van een patroon in<br />
een tekst gevonden worden. De gemiddelde uitvoeringstijd moet nog steeds O(n+m) zijn.<br />
15. We beschouwen <strong>op</strong>nieuw het matchen met een wildcard “?”.<br />
Bespreek hoe het algoritme van Rabin-Karp kan uitgebreid worden patronen met wildcards<br />
te behandelen.<br />
Hint: Zoek eerst een O(kn+m) algoritme, waarbij k het aantal wildcards in P is. Maak dan<br />
een aangepaste keuze van q waardoor het algoritme in tijd O(n+m) werkt <strong>voor</strong> elke k.<br />
Benaderend string-matching<br />
16. (a) Gegeven twee <strong>strings</strong> S en T . Gevraagd is om de string S om te zetten in de string T ,<br />
waarbij volgende editeerbewerkingen toegelaten zijn:<br />
• het vervangen van een karakter door een ander;<br />
• het verwijderen van een karakter;<br />
• het tussenvoegen van een karakter.<br />
Geef een gretig algoritme <strong>voor</strong> het bepalen van een reeks editeerbewerkingen die S<br />
omzet in T .<br />
(b) Bewijs dat dit algoritme niet gegarandeerd de reeks met het kleinste aantal editeerbewerkingen,<br />
nodig om S in T om te zetten, teruggeeft. Geef daartoe een tegen<strong>voor</strong>beeld.<br />
17. Gebruik het geziene algoritme met dynamisch programmeren <strong>voor</strong> het bepalen van de editeerafstand<br />
tussen “AACTTACTATTA” en “ACTTAGTA”. Bepaal ook de beste alignering<br />
van deze twee <strong>strings</strong>.<br />
18. Gebruik het geziene algoritme met dynamisch programmeren <strong>voor</strong> het bepalen van de<br />
editeerafstand tussen “ATGCGATTGTAGT” en “TTGAGAATGTGT”. Bepaal ook de beste<br />
alignering van deze twee <strong>strings</strong>.<br />
Algoritmen en Datastructuren III Veerle.Fack@UGent.be<br />
29