algorytmy i struktury danych do przetwarzania...
TRANSCRIPT
![Page 1: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/1.jpg)
Algorytmy i struktury danychdo przetwarzania tekstów
czyli moje zainteresowania naukowe
Tomasz [email protected]
Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego
Wręczenie Nagrody im. Witolda LipskiegoWarszawa, 4 października 2018
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 1/22
![Page 2: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/2.jpg)
Wprowadzenie
Teksty
Słowo — skończony ciąg symboli z ustalonego zbioru (alfabetu)
000100000101101100111100111101100111011110000101011111101000100111011010111000001111011010110110100011010000111010000001011010010100111111011000101101101001000001100110111011011110101101000111101000100101100000000000
GTGGACCTCCCTGCAGGCCCTGGCTGAAGCAGCTTCCCCCTCCACTCTCTATCCTATTCCTCTTTTATTCATAGAATATATCACTGAATTTAACTCATGTATGTTTGTAAAAACATTTATTGTGTGGTACCCCGCGGGAATGCAGGTGCCATGAGAGTGTCCTCATCTGTCTTTTCCATCACTGTACCACAGCACCTAAAAACACATAGGTATGTT
Fundacja Rozwoju Informatyki, przy współpracy z Polskim Stowarzyszeniemdla Maszyn Liczących (Polish Chapter of ACM) i Polskim TowarzystwemInformatycznym, z inicjatywy grupy polskich informatyków pracujących zagranicą ustanawia nagrodę dla młodych polskich naukowców za dorobekw dziedzinie informatyki i jej zastosowań.
83 56 92 24 79 83 76 49 53 4 87 76 66 42 79 3 16 11 81 7 20 55 93 75 4 2951 30 35 38 32 5 79 92 53 30 9 65 5 86 28 5 95 93 30 77 52 27 75 80 38 3811 63 67 87 76 41 11 78 7 67 58 6 66 30 80 73 47 79 61 51 76 69 29 83 55
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 2/22
![Page 3: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/3.jpg)
Wprowadzenie
Teksty
Słowo — skończony ciąg symboli z ustalonego zbioru (alfabetu)
000100000101101100111100111101100111011110000101011111101000100111011010111000001111011010110110100011010000111010000001011010010100111111011000101101101001000001100110111011011110101101000111101000100101100000000000
GTGGACCTCCCTGCAGGCCCTGGCTGAAGCAGCTTCCCCCTCCACTCTCTATCCTATTCCTCTTTTATTCATAGAATATATCACTGAATTTAACTCATGTATGTTTGTAAAAACATTTATTGTGTGGTACCCCGCGGGAATGCAGGTGCCATGAGAGTGTCCTCATCTGTCTTTTCCATCACTGTACCACAGCACCTAAAAACACATAGGTATGTT
Fundacja Rozwoju Informatyki, przy współpracy z Polskim Stowarzyszeniemdla Maszyn Liczących (Polish Chapter of ACM) i Polskim TowarzystwemInformatycznym, z inicjatywy grupy polskich informatyków pracujących zagranicą ustanawia nagrodę dla młodych polskich naukowców za dorobekw dziedzinie informatyki i jej zastosowań.
83 56 92 24 79 83 76 49 53 4 87 76 66 42 79 3 16 11 81 7 20 55 93 75 4 2951 30 35 38 32 5 79 92 53 30 9 65 5 86 28 5 95 93 30 77 52 27 75 80 38 3811 63 67 87 76 41 11 78 7 67 58 6 66 30 80 73 47 79 61 51 76 69 29 83 55
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 2/22
![Page 4: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/4.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 5: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/5.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 6: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/6.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 7: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/7.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 8: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/8.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 9: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/9.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 10: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/10.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytm
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 11: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/11.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 12: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/12.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcja
struktura danychT
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 13: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/13.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcja
struktura danychT
zapytania
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 14: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/14.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcja
struktura danychT
zapytaniaP
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 15: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/15.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcja
struktura danychT
zapytaniaP
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 16: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/16.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcja
struktura danychT
zapytaniaczas O(m + occ)
rozmiar O(n)
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 17: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/17.jpg)
Wprowadzenie
Wyszukiwanie wzorca: algorytmy i struktury danych
Problem
Znajdź fragmenty tekstu T (dł. n) pasujące do wzorca P (dł. m).
10110011110011111011100111100001T
1100111P
Dwie klasyczne wersje problemu:
P + T
algorytmczas O(n)
wystąpienia
T
konstrukcjaczas O(n)*
struktura danychT
zapytaniaczas O(m + occ)
rozmiar O(n)
P
wystąpienia
P ′
wystąpienia
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 3/22
![Page 18: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/18.jpg)
Wybrane kierunki moich badań
Struktury danych do zapytań wewnętrznych
Utrzymywanie dynamicznych kolekcji słów
Przetwarzanie tekstów w małej pamięci roboczej
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 4/22
![Page 19: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/19.jpg)
Wybrane kierunki moich badań
Struktury danych do zapytań wewnętrznych
Utrzymywanie dynamicznych kolekcji słów
Przetwarzanie tekstów w małej pamięci roboczej
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 4/22
![Page 20: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/20.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.
2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28]
, T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 21: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/21.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 9
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28]
, T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 22: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/22.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 9 20 28
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28]
, T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 23: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/23.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 9 20 28
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28]
, T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 24: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/24.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 15 20 32
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28], T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 25: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/25.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 15 20 32
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28], T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 26: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/26.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 15 20 32
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28], T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 27: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/27.jpg)
Struktury danych do zapytań wewnętrznych
Zapytania wewnętrzne
1 Statyczny tekst T długości n.2 Zapytania dotyczące fragmentów T [i ..j ] tekstu T .
Każdy fragment T [i ..j ] reprezentowany przez skrajne pozycje i oraz j .
3 15 20 32
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Podstawowe zapytania:Czy T [i ..j ] pasuje do T [i ′..j ′]?
T [3..9] = T [20..28], T [3..15] 6= T [20..32].
Jaki jest najdłuższy wspólny prefiks T [i ..j ] oraz T [i ′..j ′]?lcp(T [3..15],T [20..32]) = 10.
Czy T [i ..j ] jest leksykograficznie mniejszy niż T [i ′..j ′]?T [3..15] > T [20..32].
Motywacja: Podproblemy wielu algorytmów i struktur danych.Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 5/22
![Page 28: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/28.jpg)
Struktury danych do zapytań wewnętrznych
Wewnętrzne wyszukiwanie wzorcaK, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania
Znajdź wystąpienia fragmentu x zawarte we fragmencie y .
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wystąpienia x = T [20..26] w y = T [1..17] to: T [3..9] oraz T [9..15]
.
Czas zapytania O(|y |/|x |)Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 6/22
![Page 29: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/29.jpg)
Struktury danych do zapytań wewnętrznych
Wewnętrzne wyszukiwanie wzorcaK, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania
Znajdź wystąpienia fragmentu x zawarte we fragmencie y .
1 17 20 26xy1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wystąpienia x = T [20..26] w y = T [1..17] to:
T [3..9] oraz T [9..15]
.
Czas zapytania O(|y |/|x |)Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 6/22
![Page 30: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/30.jpg)
Struktury danych do zapytań wewnętrznych
Wewnętrzne wyszukiwanie wzorcaK, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania
Znajdź wystąpienia fragmentu x zawarte we fragmencie y .
1 17 20 263 9 15
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wystąpienia x = T [20..26] w y = T [1..17] to: T [3..9] oraz T [9..15].
Czas zapytania O(|y |/|x |)Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 6/22
![Page 31: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/31.jpg)
Struktury danych do zapytań wewnętrznych
Wewnętrzne wyszukiwanie wzorcaK, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania
Znajdź wystąpienia fragmentu x zawarte we fragmencie y .
1 17 20 263 9 15
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wystąpienia x = T [20..26] w y = T [1..17] to: T [3..9] oraz T [9..15].
Czas zapytania O(|y |/|x |)Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 6/22
![Page 32: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/32.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 33: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/33.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to
00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 34: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/34.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to
00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 35: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/35.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 0
0111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 36: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/36.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00
111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 37: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/37.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 001
11 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 38: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/38.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 0011
1 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 39: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/39.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111
= T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 40: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/40.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].
Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 41: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/41.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to
111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 42: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/42.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to
111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 43: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/43.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 1
11100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 44: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/44.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 11
1100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 45: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/45.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111
100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 46: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/46.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 1111
00111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 47: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/47.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 48: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/48.jpg)
Struktury danych do zapytań wewnętrznych
Najmniejszy i największy leksykograficznie sufiks podsłówBabenko, Gawrychowski, K, Starikovskaya (CPM 2014), K (CPM 2016)
Zapytania
Wyznacz najmniejszy oraz największy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Najmniejszy leksykograficznie sufiks T [3..15] to 00111 = T [11..15].Największy leksykograficznie sufiks T [3..15] to 111100111 = T [7..15].
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 7/22
![Page 49: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/49.jpg)
Struktury danych do zapytań wewnętrznych
Selekcja sufiksów podsłówBabenko, Gawrychowski, K, Starikovskaya (SODA 2015)
Zapytania
Wyznacz k-ty najmniejszy leksykograficznie sufiks fragmentu x .
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [11..15]=00111T [5..15]=00111100111T [12..15]=0111T [6..15]=0111100111
T [15..15]=1T [10..15]=100111T [4..15]=100111100111T [14..15]=11T [9..15]=1100111
T [3..15]=1100111100111T [13..15]=111T [8..15]=11100111T [7..15]=111100111
Czas zapytania O(log |x |)Rozmiar O(n)
Czas konstrukcji O(n√
log n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 8/22
![Page 50: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/50.jpg)
Struktury danych do zapytań wewnętrznych
Selekcja sufiksów podsłówBabenko, Gawrychowski, K, Starikovskaya (SODA 2015)
Zapytania
Wyznacz k-ty najmniejszy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [11..15]=00111T [5..15]=00111100111T [12..15]=0111T [6..15]=0111100111
T [15..15]=1T [10..15]=100111T [4..15]=100111100111T [14..15]=11T [9..15]=1100111
T [3..15]=1100111100111T [13..15]=111T [8..15]=11100111T [7..15]=111100111
Czas zapytania O(log |x |)Rozmiar O(n)
Czas konstrukcji O(n√
log n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 8/22
![Page 51: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/51.jpg)
Struktury danych do zapytań wewnętrznych
Selekcja sufiksów podsłówBabenko, Gawrychowski, K, Starikovskaya (SODA 2015)
Zapytania
Wyznacz k-ty najmniejszy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [11..15]=00111T [5..15]=00111100111T [12..15]=0111T [6..15]=0111100111
T [15..15]=1T [10..15]=100111T [4..15]=100111100111T [14..15]=11T [9..15]=1100111
T [3..15]=1100111100111T [13..15]=111T [8..15]=11100111T [7..15]=111100111
Czas zapytania O(log |x |)Rozmiar O(n)
Czas konstrukcji O(n√
log n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 8/22
![Page 52: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/52.jpg)
Struktury danych do zapytań wewnętrznych
Selekcja sufiksów podsłówBabenko, Gawrychowski, K, Starikovskaya (SODA 2015)
Zapytania
Wyznacz k-ty najmniejszy leksykograficznie sufiks fragmentu x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [11..15]=00111T [5..15]=00111100111T [12..15]=0111T [6..15]=0111100111
T [15..15]=1T [10..15]=100111T [4..15]=100111100111T [14..15]=11T [9..15]=1100111
T [3..15]=1100111100111T [13..15]=111T [8..15]=11100111T [7..15]=111100111
Czas zapytania O(log |x |)Rozmiar O(n)
Czas konstrukcji O(n√
log n)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 8/22
![Page 53: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/53.jpg)
Struktury danych do zapytań wewnętrznych
Kompresja podsłówBabenko, Gawrychowski, K, Starikovskaya; K, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania (Cormode i Muthukrishnan, SODA 2005)
Wyznacz skompresowaną postać podsłowa występującego jako fragment x .
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Zastosowania technik stworzonych do prostszych zapytań wewnętrznychWewnętrzne wyszukiwanie wzorca:
kompresja przy użyciu algorytmu Lempela-Ziva LZ77 (np. zip, gzip).
Selekcja sufiksów:kompresja przy użyciu transformaty Burrowsa-Wheelera (np. bzip2).
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 9/22
![Page 54: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/54.jpg)
Struktury danych do zapytań wewnętrznych
Kompresja podsłówBabenko, Gawrychowski, K, Starikovskaya; K, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania (Cormode i Muthukrishnan, SODA 2005)
Wyznacz skompresowaną postać podsłowa występującego jako fragment x .
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [3..15] =?
Zastosowania technik stworzonych do prostszych zapytań wewnętrznychWewnętrzne wyszukiwanie wzorca:
kompresja przy użyciu algorytmu Lempela-Ziva LZ77 (np. zip, gzip).
Selekcja sufiksów:kompresja przy użyciu transformaty Burrowsa-Wheelera (np. bzip2).
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 9/22
![Page 55: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/55.jpg)
Struktury danych do zapytań wewnętrznych
Kompresja podsłówBabenko, Gawrychowski, K, Starikovskaya; K, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania (Cormode i Muthukrishnan, SODA 2005)
Wyznacz skompresowaną postać podsłowa występującego jako fragment x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [3..15] =?
Zastosowania technik stworzonych do prostszych zapytań wewnętrznychWewnętrzne wyszukiwanie wzorca:
kompresja przy użyciu algorytmu Lempela-Ziva LZ77 (np. zip, gzip).
Selekcja sufiksów:kompresja przy użyciu transformaty Burrowsa-Wheelera (np. bzip2).
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 9/22
![Page 56: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/56.jpg)
Struktury danych do zapytań wewnętrznych
Kompresja podsłówBabenko, Gawrychowski, K, Starikovskaya; K, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania (Cormode i Muthukrishnan, SODA 2005)
Wyznacz skompresowaną postać podsłowa występującego jako fragment x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [3..15] =? [1..1]
Zastosowania technik stworzonych do prostszych zapytań wewnętrznychWewnętrzne wyszukiwanie wzorca:
kompresja przy użyciu algorytmu Lempela-Ziva LZ77 (np. zip, gzip).
Selekcja sufiksów:kompresja przy użyciu transformaty Burrowsa-Wheelera (np. bzip2).
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 9/22
![Page 57: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/57.jpg)
Struktury danych do zapytań wewnętrznych
Kompresja podsłówBabenko, Gawrychowski, K, Starikovskaya; K, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania (Cormode i Muthukrishnan, SODA 2005)
Wyznacz skompresowaną postać podsłowa występującego jako fragment x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [3..15] =? [1..1] dekompresja 1100111100111
Zastosowania technik stworzonych do prostszych zapytań wewnętrznychWewnętrzne wyszukiwanie wzorca:
kompresja przy użyciu algorytmu Lempela-Ziva LZ77 (np. zip, gzip).
Selekcja sufiksów:kompresja przy użyciu transformaty Burrowsa-Wheelera (np. bzip2).
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 9/22
![Page 58: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/58.jpg)
Struktury danych do zapytań wewnętrznych
Kompresja podsłówBabenko, Gawrychowski, K, Starikovskaya; K, Radoszewski, Rytter, Waleń (SODA 2015)
Zapytania (Cormode i Muthukrishnan, SODA 2005)
Wyznacz skompresowaną postać podsłowa występującego jako fragment x .
153
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
T [3..15] =? [1..1] dekompresja 1100111100111
Zastosowania technik stworzonych do prostszych zapytań wewnętrznychWewnętrzne wyszukiwanie wzorca:
kompresja przy użyciu algorytmu Lempela-Ziva LZ77 (np. zip, gzip).
Selekcja sufiksów:kompresja przy użyciu transformaty Burrowsa-Wheelera (np. bzip2).
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 9/22
![Page 59: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/59.jpg)
Struktury danych do zapytań wewnętrznych
Najdłuższy wspólny prefiks podsłówKlasyczna struktura danych:
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Nowy wynik (alfabet rozmiaru σ):
Czas zapytania O(1)
Rozmiar O(n/ logσ n)
Czas konstrukcji O(n/ logσ n)
Czy można lepiej?
NIE! (dla dużych alfabetów)
TAK! (dla małych alfabetów)
Standardowy model obliczeń (word RAM):
Słowa maszynowe po w = Ω(log n) bitów (w praktyce w = 64)
Operacje bitowe i arytmetyczne w czasie stałym
10110011110011111011100111100001
w = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 10/22
![Page 60: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/60.jpg)
Struktury danych do zapytań wewnętrznych
Najdłuższy wspólny prefiks podsłówKlasyczna struktura danych:
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Nowy wynik (alfabet rozmiaru σ):
Czas zapytania O(1)
Rozmiar O(n/ logσ n)
Czas konstrukcji O(n/ logσ n)
Czy można lepiej?
NIE! (dla dużych alfabetów)
TAK! (dla małych alfabetów)
Standardowy model obliczeń (word RAM):
Słowa maszynowe po w = Ω(log n) bitów (w praktyce w = 64)
Operacje bitowe i arytmetyczne w czasie stałym
10110011110011111011100111100001
w = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 10/22
![Page 61: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/61.jpg)
Struktury danych do zapytań wewnętrznych
Najdłuższy wspólny prefiks podsłówKlasyczna struktura danych:
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Nowy wynik (alfabet rozmiaru σ):
Czas zapytania O(1)
Rozmiar O(n/ logσ n)
Czas konstrukcji O(n/ logσ n)
Czy można lepiej?
NIE! (dla dużych alfabetów)
TAK! (dla małych alfabetów)
Standardowy model obliczeń (word RAM):
Słowa maszynowe po w = Ω(log n) bitów (w praktyce w = 64)
Operacje bitowe i arytmetyczne w czasie stałym
10110011110011111011100111100001
w = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 10/22
![Page 62: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/62.jpg)
Struktury danych do zapytań wewnętrznych
Najdłuższy wspólny prefiks podsłówKlasyczna struktura danych:
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Nowy wynik (alfabet rozmiaru σ):
Czas zapytania O(1)
Rozmiar O(n/ logσ n)
Czas konstrukcji O(n/ logσ n)
Czy można lepiej?
NIE! (dla dużych alfabetów)
TAK! (dla małych alfabetów)
Standardowy model obliczeń (word RAM):
Słowa maszynowe po w = Ω(log n) bitów (w praktyce w = 64)
Operacje bitowe i arytmetyczne w czasie stałym
10110011110011111011100111100001
w = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 10/22
![Page 63: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/63.jpg)
Struktury danych do zapytań wewnętrznych
Najdłuższy wspólny prefiks podsłówKlasyczna struktura danych:
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Nowy wynik (alfabet rozmiaru σ):
Czas zapytania O(1)
Rozmiar O(n/ logσ n)
Czas konstrukcji O(n/ logσ n)
Czy można lepiej?
NIE! (dla dużych alfabetów)
TAK! (dla małych alfabetów)
Standardowy model obliczeń (word RAM):
Słowa maszynowe po w = Ω(log n) bitów (w praktyce w = 64)
Operacje bitowe i arytmetyczne w czasie stałym
10110011110011111011100111100001
w = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 10/22
![Page 64: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/64.jpg)
Struktury danych do zapytań wewnętrznych
Najdłuższy wspólny prefiks podsłówKlasyczna struktura danych:
Czas zapytania O(1)
Rozmiar O(n)
Czas konstrukcji O(n)
Nowy wynik (alfabet rozmiaru σ):
Czas zapytania O(1)
Rozmiar O(n/ logσ n)
Czas konstrukcji O(n/ logσ n)
Czy można lepiej?
NIE! (dla dużych alfabetów)
TAK! (dla małych alfabetów)
Standardowy model obliczeń (word RAM):
Słowa maszynowe po w = Ω(log n) bitów (w praktyce w = 64)
Operacje bitowe i arytmetyczne w czasie stałym
10110011110011111011100111100001
w = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 10/22
![Page 65: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/65.jpg)
Wybrane kierunki moich badań
Struktury danych do zapytań wewnętrznych
Utrzymywanie dynamicznych kolekcji słów
Przetwarzanie tekstów w małej pamięci roboczej
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 11/22
![Page 66: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/66.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W:
011
01012
03
1014
105
16
107
10018
make string(01) = 1
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 67: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/67.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
make string(01) = 1
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 68: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/68.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
concat(1, 1) = 2
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 69: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/69.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
split(2, 1) = (3, 4)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 70: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/70.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
equal(1, 3) = false
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 71: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/71.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
split(4, 2) = (5, 6)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 72: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/72.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
concat(6, 3) = 7
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 73: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/73.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
equal(5, 7) = true
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 74: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/74.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
concat(7, 1) = 8
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 75: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/75.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
LCP(4, 8) = 2
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 76: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/76.jpg)
Utrzymywanie dynamicznych kolekcji słów
Model dynamicznych kolekcji słówMehlhorn, Sundar, Uhrig (SODA 1994); Alstrup, Brodal, Rauhe (SODA 2000)
Utrzymujemy kolekcję W niepustych słów, wspierając operacje:
make string(w): Wstaw w do W.
concat(w1,w2): Dla w1,w2 ∈ W, wstaw w1w2 do W.
split(w , k): Dla w ∈ W, wstaw w [1..k] oraz w [k + 1..|w |] do W.
equal(w1,w2): Czy słowa w1,w2 ∈ W są równe?
LCP(w1,w2): Jaki jest najdłuższy wspólny prefiks w1,w2 ∈ W?
compare(w1,w2): Porównaj leksykograficznie w1 oraz w2 ∈ W.
W: 011
01012
03
1014
105
16
107
10018
compare(4, 8) = ‘>’
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 12/22
![Page 77: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/77.jpg)
Utrzymywanie dynamicznych kolekcji słów
WynikiGawrychowski, Karczmarz, K, Łącki, Sankowski (SODA 2018)
Alstrup i in. Nowe wynikimake string O(|w | log n) O(|w |+ log n) o(|w | log n)concat O(log n log∗ n) O(log n) o(log n)split O(log n log∗ n) O(log n) o(log n)equal O(1) O(1) o(log n)compare O(1) O(1) -LCP O(log n) O(1) -Randomizacja Las Vegas Las Vegas Monte CarloCzas pesymistyczny pesymistyczny amortyzowany
Oznaczenia:n — łączna długość słów w kolekcji Wlog∗ n — logarytm iterowany: mink : log log · · · log︸ ︷︷ ︸
k razy
n < 1.
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 13/22
![Page 78: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/78.jpg)
Wybrane kierunki moich badań
Struktury danych do zapytań wewnętrznych
Utrzymywanie dynamicznych kolekcji słów
Przetwarzanie tekstów w małej pamięci roboczej
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 14/22
![Page 79: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/79.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 80: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/80.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 81: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/81.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
15
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 82: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/82.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
15
1
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 83: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/83.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
15
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 84: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/84.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
15
0
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 85: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/85.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 86: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/86.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Dostęp tylko do odczytu
Model:
Dane wejściowe dostępne przez wyrocznię.
Złożoność pamięciowa obejmuje tylko pamięć roboczą.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wyszukiwanie wzorca (Galil i Seiferas, STOC 1981):
Czas O(n)
Pamięć robocza O(1)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 15/22
![Page 87: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/87.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Sortowanie wskazanych sufiksówGawrychowski, K (SODA 2017)
Rzadka tablica sufiksowa
Posortuj leksykograficznie sufiksy T [ij ..n] dla danych pozycji i1, . . . , ib.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
31 0118 01110011110000123 011110000127 10000110 1001111101110011110000120 110011110000115 11101110011110000113 11111011100111100001
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 16/22
![Page 88: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/88.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Sortowanie wskazanych sufiksówGawrychowski, K (SODA 2017)
Rzadka tablica sufiksowa
Posortuj leksykograficznie sufiksy T [ij ..n] dla danych pozycji i1, . . . , ib.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 11313 20201818 2727 31311010 1515 2323
31 0118 01110011110000123 011110000127 10000110 1001111101110011110000120 110011110000115 11101110011110000113 11111011100111100001
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 16/22
![Page 89: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/89.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Sortowanie wskazanych sufiksówGawrychowski, K (SODA 2017)
Rzadka tablica sufiksowa
Posortuj leksykograficznie sufiksy T [ij ..n] dla danych pozycji i1, . . . , ib.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 11313 20201818 2727 31311010 1515 2323
31 0118 01110011110000123 011110000127 10000110 1001111101110011110000120 110011110000115 11101110011110000113 11111011100111100001
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 16/22
![Page 90: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/90.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Sortowanie wskazanych sufiksówGawrychowski, K (SODA 2017)
Czas Pamięć Randomizacja
Bille i in. (ICALP 2013) O(n log2 b) O(b) Monte Carlo
Bille i in. (ICALP 2013) O((n + b2) log2 b) O(b) Las Vegas
I i in. (STACS 2014) O(n) O(b log b) Monte Carlo
I i in. (STACS 2014) O(n log b) O(b) Las Vegas
Nowy wynik O(n) O(b) Monte Carlo
Nowy wynik O(n√
log b) O(b) Las Vegas
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 17/22
![Page 91: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/91.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:
Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.Przetwarzanie danych w czasie rzeczywistym:
Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 92: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/92.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 93: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/93.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1
1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 94: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/94.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
12
0
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 95: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/95.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 03
1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 96: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/96.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 14
1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 97: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/97.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 1 15
0
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 98: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/98.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 11 0 1 132
1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 99: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/99.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.
Przetwarzanie danych w czasie rzeczywistym:Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 100: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/100.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.Przetwarzanie danych w czasie rzeczywistym:
Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 101: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/101.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.Przetwarzanie danych w czasie rzeczywistym:
Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 102: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/102.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Algorytmy strumieniowe
Model:Jednokrotny, sekwencyjny odczyt danych wejściowych.Złożoność pamięciowa obejmuje tylko pamięć roboczą.Przetwarzanie danych w czasie rzeczywistym:
Odpowiedź dla znanej części przed wczytaniem kolejnego symbolu.
1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1
Wyszukiwanie wzorca:W strumieniu wzorzec poprzedza tekst.Wystąpienie T [i ..j ] wzorca P raportowane przed wczytaniem T [j + 1].
Porat i Porat, FOCS 2009; Breslauer i Galil, CPM 2011:Czas na symbol O(1)Pamięć robocza O(logm)Randomizacja typu Monte Carlo
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 18/22
![Page 103: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/103.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
0100111
0100111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 104: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/104.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
0100111
0100111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 105: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/105.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0110011
0100111
0100111
0100111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 106: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/106.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
1100111
0100111
0100111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 107: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/107.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
0100111
1100111
0100111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 108: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/108.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
0100111
0100111
1110111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 109: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/109.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
0100111
0100111
0100111
1100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 110: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/110.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Problem
Znajdź fragmenty tekstu T różniące się od wzorca P na ¬ k pozycjach.
10110011110011111011100111100001T
0100111P
k = 2
0100111
0100111
0100111
0100111
0100111
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 19/22
![Page 111: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/111.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Czas na symbol Pamięć
Porat i Porat (FOCS 2009) O(k2) O(k3)
Clifford i in. (SODA 2016) O(√k) O(k2)
Golan i in. (ICALP 2018) O(k) O(k)
Nowy wynik O(√k) O(k)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 20/22
![Page 112: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/112.jpg)
Przetwarzanie tekstów w małej pamięci roboczej
Wyszukiwanie wzorca z niezgodnościamiClifford, K, Porat (SODA 2019)
Czas na symbol Pamięć
Porat i Porat (FOCS 2009) O(k2) O(k3)
Clifford i in. (SODA 2016) O(√k) O(k2)
Golan i in. (ICALP 2018) O(k) O(k)
Nowy wynik O(√k) O(k logm)
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 20/22
![Page 113: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/113.jpg)
Podziękowania dla współautorów
Anna AdamaszekMai Alzamel
Maxim BabenkoGolnaz Badkobeh
Evangelos BampasHideo BannaiCarl Barton
Anudhyan BoralPanagiotis Charalampopoulos
Raphael CliffordMaxime Crochemore
Marek CyganJerzy Czyżowicz
Gabriele FiciJohannes Fischer
Tomas FlouriTravis Gagie
Michał GańczorzPaweł Gawrychowski
Leszek GąsieniecGarance Gourdel
Szymon GrabowskiFabrizio Grandoni
David IlcinkasCostas S. IliopoulosShunsuke Inenaga
Artur JeżAdam Karczmarz
Ralf KlasingIgnat KolesnichenkoDmitry Kosolobov
Marcin KubicaRitu KunduJakub Łącki
Alessio LangiuThierry Lecroq
Arnaud LefebvreChang Liu
Manal MohamedJakub PachockiDominik Pająk
Marcin Pilipczuk
Michał PilipczukSolon P. Pissis
Ely PoratElise Prieur-Gaston
Simon J. PuglisiJakub Radoszewski
Wojciech RytterPiotr SankowskiArseny M. Shur
William F. SmythTatiana Starikovskaya
Juliusz StraszyńskiShiho SugimotoBartosz Szreder
Wojciech TyczyńskiHjalte Wedel Vildhøj
Tomasz WaleńBartłomiej Wiśniewski
Michał WłodarczykWiktor Zuba
xx
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 21/22
![Page 114: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/114.jpg)
Podziękowania dla współautorów
Anna AdamaszekMai Alzamel
Maxim BabenkoGolnaz Badkobeh
Evangelos BampasHideo BannaiCarl Barton
Anudhyan BoralPanagiotis Charalampopoulos
Raphael CliffordMaxime Crochemore
Marek CyganJerzy Czyżowicz
Gabriele FiciJohannes Fischer
Tomas FlouriTravis Gagie
Michał GańczorzPaweł Gawrychowski
Leszek GąsieniecGarance Gourdel
Szymon GrabowskiFabrizio Grandoni
David IlcinkasCostas S. IliopoulosShunsuke Inenaga
Artur JeżAdam Karczmarz
Ralf KlasingIgnat KolesnichenkoDmitry Kosolobov
Marcin KubicaRitu KunduJakub Łącki
Alessio LangiuThierry Lecroq
Arnaud LefebvreChang Liu
Manal MohamedJakub PachockiDominik Pająk
Marcin Pilipczuk
Michał PilipczukSolon P. Pissis
Ely PoratElise Prieur-Gaston
Simon J. PuglisiJakub Radoszewski
Wojciech RytterPiotr SankowskiArseny M. Shur
William F. SmythTatiana Starikovskaya
Juliusz StraszyńskiShiho SugimotoBartosz Szreder
Wojciech TyczyńskiHjalte Wedel Vildhøj
Tomasz WaleńBartłomiej Wiśniewski
Michał WłodarczykWiktor Zuba
xx
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 21/22
![Page 115: Algorytmy i struktury danych do przetwarzania tekstównagrodalipskiego.mimuw.edu.pl/archiwum-prezentacji/... · 2018. 10. 4. · Algorytmy i struktury danych do przetwarzania tekstów](https://reader036.vdocuments.net/reader036/viewer/2022070221/6138ae4f0ad5d20676496831/html5/thumbnails/115.jpg)
Pytania?
Dziękuję za uwagę!
Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 22/22