Algorytmy i struktury danych do przetwarzania...

115
Algorytmy i struktury danych do przetwarzania tekstów czyli moje zainteresowania naukowe Tomasz Kociumaka [email protected] Wydzial Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego Wręczenie Nagrody im. Witolda Lipskiego Warszawa, 4 października 2018 Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 1/22

Transcript of Algorytmy i struktury danych do przetwarzania...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pytania?

Dziękuję za uwagę!

Tomasz Kociumaka Algorytmy i struktury danych do przetwarzania tekstów 22/22