03.07.2013 Views

Oefeningen op algoritmen voor strings - caagt

Oefeningen op algoritmen voor strings - caagt

Oefeningen op algoritmen voor strings - caagt

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!