Slide 1

Slide 1 text

Суперсжатие на строках Рубаненко Мария МФТИ / Fintech AI / ШАД(Яндекс) 2025

Slide 2

Slide 2 text

Содержание 2 ● 1. Терминология сжатия ● 2. Базовые понятия про суперсжатие ❏ 2.1. Операции access / rank / select ❏ 2.2. Как суперсжать битовый массив ● 3. Суперсжатие на строках ❏ 3.1. Вейвлет-дерево ❏ 3.2. Преобразование Берроуза-Уилера ❏ 3.3. Обратное преобразование Берроуза-Уилера ❏ 3.4. FM-индекс ❏ 3.5. Графовое представление Берроуза-Уилера ● 4. Как реализовать суперсжатие на строках ❏ 4.1 Pysdsl ● 5. Выводы

Slide 3

Slide 3 text

1. Терминология сжатия 3 Compressed data structure = Сжатая структура данных ● без потерь ● с потерями Implicit data structure = Эффективная структура данных X + O(1) bit of Space, где X - нижняя граница теории информации Succinct data structure = Суперсжатая структура данных X + o(X) bit of Space, где X - нижняя граница теории информации Compact data structure = Компактная структура данных O(X) bit of Space, где X - нижняя граница теории информации

Slide 4

Slide 4 text

* Идея суперсжатых структур 4 ● Есть данные размера O(n). Но для выполнения некоторых операций (например, эффективного поиска) нужно строить дополнительную структуру данных на исходных данных размера O(n)[o-большое]. ● Но мы хотим построить дополнительную структуру данных размера o(n)[o-малое], чтобы при n->∞ вспомогательная структура занимала константную по размеру память. ● Такая доп. структура будет сжатой, но мы еще хотим, чтобы операции на доп. сжатой структуре по времени имели такую же асимптотику, что и операции на доп. не сжатой структуре, то есть хотим суперсжать. ● Как достичь суперсжатия?

Slide 5

Slide 5 text

* Идея суперсжатых структур 5 ● Чтобы построить суперсжатие произвольной структуры данных нужно закодировать ее в битовый вектор, а операции на структуре выразить через комбинацию базовых методов суперсжатия: rank() и select().

Slide 6

Slide 6 text

* Область применения суперсжатых структур данных 6 ■ Поиск информации ● поиск документов ● поисков шаблонов в документе ● автодополнение поискового запроса ● индексы поиска ■ ML ● эмбеддинги языковой модели ● ранжирование документов ● генерация синтетической речи ● распознавание речи на определенную тему ■ Криптография ● Неинтерактивные протоколы доказательства с нулевым разглашением ● Гомоморфное шифрование

Slide 7

Slide 7 text

2. Базовые понятия про суперсжатие 7 ● 1. Терминология сжатия ● 2. Базовые понятия про суперсжатие ❏ 2.1. Операции access / rank / select ❏ 2.2. Как суперсжать битовый массив ● 3. Суперсжатие на строках ❏ 3.1. Вейвлет-дерево ❏ 3.2. Преобразование Берроуза-Уилера ❏ 3.3. Обратное преобразование Берроуза-Уилера ❏ 3.4. FM-индекс ❏ 3.5. Графовое представление Берроуза-Уилера ● 4. Как реализовать суперсжатие на строках ❏ 4.1 Pysdsl ● 5. Выводы

Slide 8

Slide 8 text

2.1. Операции access / rank / select 8

Slide 9

Slide 9 text

2.1. Операции access / rank / select 9

Slide 10

Slide 10 text

2.1. Операции access / rank / select 10

Slide 11

Slide 11 text

2.2. Как суперсжать битовый массив 11

Slide 12

Slide 12 text

2.2. Как суперсжать битовый массив 12

Slide 13

Slide 13 text

3. Суперсжатие на строках 13 ● 1. Терминология сжатия ● 2. Базовые понятия про суперсжатие ❏ 2.1. Операции access / rank / select ❏ 2.2. Как суперсжать битовый массив ● 3. Суперсжатие на строках ❏ 3.1. Вейвлет-дерево ❏ 3.2. Преобразование Берроуза-Уилера ❏ 3.3. Обратное преобразование Берроуза-Уилера ❏ 3.4. FM-индекс ❏ 3.5. Графовое представление Берроуза-Уилера ● 4. Как реализовать суперсжатие на строках ❏ 4.1 Pysdsl ● 5. Выводы

Slide 14

Slide 14 text

3.1. Вейвлет-дерево 14

Slide 15

Slide 15 text

3.1. Вейвлет-дерево 15

Slide 16

Slide 16 text

3.1. Вейвлет-дерево 16

Slide 17

Slide 17 text

3.1. Вейвлет-дерево 17

Slide 18

Slide 18 text

3.1. Вейвлет-дерево 18

Slide 19

Slide 19 text

3.1. Вейвлет-дерево 19

Slide 20

Slide 20 text

3.1. Вейвлет-дерево 20

Slide 21

Slide 21 text

3.1. Вейвлет-дерево 21

Slide 22

Slide 22 text

3.1. Вейвлет-дерево 22

Slide 23

Slide 23 text

3.1. Вейвлет-дерево 23

Slide 24

Slide 24 text

3.1. Вейвлет-дерево 24

Slide 25

Slide 25 text

3.1. Вейвлет-дерево 25

Slide 26

Slide 26 text

3.1. Вейвлет-дерево 26

Slide 27

Slide 27 text

3.1. Вейвлет-дерево 27

Slide 28

Slide 28 text

3.1. Вейвлет-дерево 28

Slide 29

Slide 29 text

3.1. Вейвлет-дерево 29

Slide 30

Slide 30 text

3.1. Вейвлет-дерево 30

Slide 31

Slide 31 text

3.1. Вейвлет-дерево 31

Slide 32

Slide 32 text

3.2. Преобразование Берроуза-Уилера 32

Slide 33

Slide 33 text

3.2. Преобразование Берроуза-Уилера 33

Slide 34

Slide 34 text

3.2. Преобразование Берроуза-Уилера 34

Slide 35

Slide 35 text

3.2. Преобразование Берроуза-Уилера 35

Slide 36

Slide 36 text

3.2. Преобразование Берроуза-Уилера 36

Slide 37

Slide 37 text

3.3. Обратное преобразование Берроуза-Уилера 37

Slide 38

Slide 38 text

3.3. Обратное преобразование Берроуза-Уилера 38

Slide 39

Slide 39 text

3.3. Обратное преобразование Берроуза-Уилера 39

Slide 40

Slide 40 text

3.3. Обратное преобразование Берроуза-Уилера 40

Slide 41

Slide 41 text

3.3. Обратное преобразование Берроуза-Уилера 41

Slide 42

Slide 42 text

3.3. Обратное преобразование Берроуза-Уилера 42

Slide 43

Slide 43 text

3.4. FM-индекс (Full-text index in Minute space) 43

Slide 44

Slide 44 text

3.4. FM-индекс 44

Slide 45

Slide 45 text

3.4. FM-индекс 45

Slide 46

Slide 46 text

3.4. FM-индекс 46

Slide 47

Slide 47 text

3.4. FM-индекс 47

Slide 48

Slide 48 text

3.4. FM-индекс 48

Slide 49

Slide 49 text

3.4. FM-индекс 49

Slide 50

Slide 50 text

3.4. FM-индекс 50

Slide 51

Slide 51 text

3.4. FM-индекс 51

Slide 52

Slide 52 text

3.4. FM-индекс 52

Slide 53

Slide 53 text

3.5. Графовое представление Берроуза-Уилера 53

Slide 54

Slide 54 text

3.5. Графовое представление Берроуза-Уилера 54

Slide 55

Slide 55 text

3.5. Графовое представление Берроуза-Уилера 55

Slide 56

Slide 56 text

3.5. Графовое представление Берроуза-Уилера 56

Slide 57

Slide 57 text

3.5. Графовое представление Берроуза-Уилера 57

Slide 58

Slide 58 text

3.5. Графовое представление Берроуза-Уилера 58

Slide 59

Slide 59 text

3.5. Графовое представление Берроуза-Уилера 59

Slide 60

Slide 60 text

3.5. Графовое представление Берроуза-Уилера 60

Slide 61

Slide 61 text

3.5. Графовое представление Берроуза-Уилера 61

Slide 62

Slide 62 text

3.5. Графовое представление Берроуза-Уилера 62

Slide 63

Slide 63 text

3.5. Графовое представление Берроуза-Уилера 63

Slide 64

Slide 64 text

3.5. Графовое представление Берроуза-Уилера 64

Slide 65

Slide 65 text

3.5. Графовое представление Берроуза-Уилера 65

Slide 66

Slide 66 text

3.5. Графовое представление Берроуза-Уилера 66

Slide 67

Slide 67 text

3.5. Графовое представление Берроуза-Уилера 67

Slide 68

Slide 68 text

4. Как реализовать суперсжатие на строках 68 ● 1. Терминология сжатия ● 2. Базовые понятия про суперсжатие ❏ 2.1. Операции access / rank / select ❏ 2.2. Как суперсжать битовый массив ● 3. Суперсжатие на строках ❏ 3.1. Вейвлет-дерево ❏ 3.2. Преобразование Берроуза-Уилера ❏ 3.3. Обратное преобразование Берроуза-Уилера ❏ 3.4. FM-индекс ❏ 3.5. Графовое представление Берроуза-Уилера ● 4. Как реализовать суперсжатие на строках ❏ 4.1 Pysdsl ● 5. Выводы

Slide 69

Slide 69 text

4.1. Pysdsl 69 https://github.com/QratorLabs/pysdsl

Slide 70

Slide 70 text

4.1. Pysdsl 70

Slide 71

Slide 71 text

4.1. Pysdsl 71

Slide 72

Slide 72 text

4.1. Pysdsl 72

Slide 73

Slide 73 text

4.1. Pysdsl 73

Slide 74

Slide 74 text

4.1. Pysdsl 74

Slide 75

Slide 75 text

4.1. Pysdsl 75

Slide 76

Slide 76 text

5. Выводы 76 ● 1. Терминология сжатия ● 2. Базовые понятия про суперсжатие ❏ 2.1. Операции access / rank / select ❏ 2.2. Как суперсжать битовый массив ● 3. Суперсжатие на строках ❏ 3.1. Вейвлет-дерево ❏ 3.2. Преобразование Берроуза-Уилера ❏ 3.3. Обратное преобразование Берроуза-Уилера ❏ 3.4. FM-индекс ❏ 3.5. Графовое представление Берроуза-Уилера ● 4. Как реализовать суперсжатие на строках ❏ 4.1 Pysdsl ● 5. Выводы

Slide 77

Slide 77 text

5. Выводы 77 Сжатие Суперсжатие

Slide 78

Slide 78 text

Спасибо за внимание!

Slide 79

Slide 79 text

● Материалы к докладу: 1. https://github.com/mariyana-rubanenko/MoscowPython_103 2. https://vkvideo.ru/@club230164570 3. https://www.youtube.com/@so_besy 79 ● Контактная информация: telegram - https://t.me/maryrubik GitHub VK YouTube