Алгоритмы и структуры данных (продвинутый поток): различия между версиями
Перейти к навигации
Перейти к поиску
м Ryabchikov.andrey переименовал страницу Data Structures and Algorithms 2022 (advanced) в Алгоритмы и структуры данных (продвинутый поток) |
|||
| Строка 19: | Строка 19: | ||
|- | |- | ||
! № | ! № | ||
! | ! Часть 1. Строки | ||
|- | |- | ||
|1|| | |1|| Префикс-функция. Линейный алгоритм нахождения. Алгоритм Кнута-Морриса-Пратта. | ||
|- | |- | ||
|2|| | |2|| Определение Z-функции. Линейный алгоритм нахождения. Применение для поиска подстроки в строке. | ||
|- | |- | ||
|3|| | |3|| Алгоритм Манакера. Поиск максимальной подстроки-палиндрома. | ||
|- | |- | ||
|4|| | |4|| Алгоритм Галила-Сейфераса поиска подстроки в строки за O(n) времени и O(1) дополнительной памяти. | ||
|- | |- | ||
|5|| | |5|| Структура данных бор. Построение бора, оценка времени и объема памяти. Разные способы хранения детей дерева. Оценка объема памяти для каждого варианта. Понятие суффиксной ссылки. Пример дерева с суффиксными ссылками. | ||
|- | |- | ||
|6|| | |6|| Алгоритм построения бора вместе с суффиксными ссылками. Оценка времени работы. Алгоритм Ахо-Корасик. “Сжатые” суффиксные ссылки, то есть ссылки, идущие в следующую терминальную вершину, которая является суффиксом текущей. Оценка времени работы при использовании “сжатых” суффиксных ссылок. | ||
|- | |- | ||
|7|| | |7|| Дерево палиндромов. Линейный алгоритм построения дерева палиндромов. | ||
|- | |- | ||
|8|| | |8|| Определение суффиксного массива. Построение за O(N log N) с использованием цифровой сортировки для пар. Оптимизация “одна сортировка подсчетом вместо двух”. | ||
|- | |- | ||
|9|| | |9|| Алгоритм Арикавы-Аримуры-Касаи-Ли-Парка. | ||
|- | |- | ||
|10|| Доказательство | |10|| Суффиксное дерево. Сжатое суффиксное дерево. Доказательство линейности числа вершин и ребер в сжатом суффиксном дереве. | ||
|- | |- | ||
|11|| | |11|| Построение суффиксного дерева. Алгоритм Укконена. | ||
|- | |- | ||
|12|| | |12|| Суффиксный автомат. Правые контексты, их свойства. Классы эквивалентности подстрок; критерий максимальности подстроки в своем классе эквивалентности. Линейность числа вершин и ребер, достижимость оценок. | ||
|- | |- | ||
|13|| | |13|| Суффиксный автомат. Линейный алгоритм построения. | ||
|} | |} | ||
Версия от 14:44, 4 декабря 2022
Общие сведения
- Семестр: 3 (второй курс курс)
- Форма контроля: дифференцированный зачет
Важные ссылки
- Регистрация на курс (доступ для физтех-аккаунтов)
- Материалы курсa (доступ для физтех-аккаунтов)
- Чат курса
- Таблица с оценками
Требования
- Физтех-почта (домен phystech.edu)
- Аккаунт на GitHub
- Ноутбук на занятиях
План курса
| № | Часть 1. Строки |
|---|---|
| 1 | Префикс-функция. Линейный алгоритм нахождения. Алгоритм Кнута-Морриса-Пратта. |
| 2 | Определение Z-функции. Линейный алгоритм нахождения. Применение для поиска подстроки в строке. |
| 3 | Алгоритм Манакера. Поиск максимальной подстроки-палиндрома. |
| 4 | Алгоритм Галила-Сейфераса поиска подстроки в строки за O(n) времени и O(1) дополнительной памяти. |
| 5 | Структура данных бор. Построение бора, оценка времени и объема памяти. Разные способы хранения детей дерева. Оценка объема памяти для каждого варианта. Понятие суффиксной ссылки. Пример дерева с суффиксными ссылками. |
| 6 | Алгоритм построения бора вместе с суффиксными ссылками. Оценка времени работы. Алгоритм Ахо-Корасик. “Сжатые” суффиксные ссылки, то есть ссылки, идущие в следующую терминальную вершину, которая является суффиксом текущей. Оценка времени работы при использовании “сжатых” суффиксных ссылок. |
| 7 | Дерево палиндромов. Линейный алгоритм построения дерева палиндромов. |
| 8 | Определение суффиксного массива. Построение за O(N log N) с использованием цифровой сортировки для пар. Оптимизация “одна сортировка подсчетом вместо двух”. |
| 9 | Алгоритм Арикавы-Аримуры-Касаи-Ли-Парка. |
| 10 | Суффиксное дерево. Сжатое суффиксное дерево. Доказательство линейности числа вершин и ребер в сжатом суффиксном дереве. |
| 11 | Построение суффиксного дерева. Алгоритм Укконена. |
| 12 | Суффиксный автомат. Правые контексты, их свойства. Классы эквивалентности подстрок; критерий максимальности подстроки в своем классе эквивалентности. Линейность числа вершин и ребер, достижимость оценок. |
| 13 | Суффиксный автомат. Линейный алгоритм построения. |
Оценивание
Оценка по курсу состоит из нескольких частей:
- Тесты
- Контесты
- Практические проекты
- Лабораторная работа
Тесты
- Небольшие тесты на 10 минут в начале каждого занятия
- Вопросы по материалам прошлого занятия
- Для прохождения нужен phystech.edu-аккаунт
- За каждый тест - 10 баллов.
Контесты
- Набор задач с автоматической проверкой тестирующей системой Я.Контест (нужен phystech.edu-аккаунт)
- Всего 6 тестов - после каждой темы базового блока
- Срок решения - 2 недели
- За каждый контест - 10 баллов
- Списывание детектируется и наказуемо!
Практические проекты
- 2 проекта - консольное приложение (после ООП) и серверное приложение (после Сети-2)
- Работа над кодом в несколько итераций на GitHub (нужен аккаунт)
- Срок работы - 2 недели + 1 неделя на каждую следующую итерацию
- Список тем проектов будет позднее
- Оценка за проект: зачет / незачет + до 2 доп. баллов (wow-эффект)
Лабораторная работа
- Анализ данных с помощью Pandas и Matplotlib
- Выдается после “Инструменты визуализации”
- Срок работы - 2 недели
- Оценка - 10 баллов
- Является блокирующей! Для получения зачета за курс необходимо набрать хотя бы 1 балл
Команда курса
- Преподаватели:
- Рухович Филипп
- Белый Антон