Алгоритмы и структуры данных, часть 2

Новосибирск, весна 2021

Описание

Вторая часть курса Алгоритмы и структуры данных 1 посвящена углублённому изучению алгоритмов по темам:

  1. Строки.
  2. Конечные автоматы, регулярные выражения, формальные грамматики.
  3. Графы.

Канал курса в Слаке: #algo-2-nsk-21

Критерии оценки

  • Отлично: F≥2 и S≥800,
  • Хорошо: F≥2 и S≥600 или F≥1 и S≥800,
  • Зачет: F≥2 и S≥400 или F≥1 и S≥600,

где F — количество задач, сданных по полной схеме, S — сумма баллов за задачи в контестах. Всего будет 2 задачи по полной схеме.

Преподаватели

Список лекций

Лекция 2. Алгоритм Кнута-Морриса-Пратта, borders, Префикс-функция.

Алгоритм Кнута-Морриса-Пратта: идея, время работы. Префикс-суффиксы (borders), максимальный из них, множество всех префикс-суффиксов строки. Префикс-функция строки. Алгоритм вычисления префикс-функции, время работы. Префикс-функция строки P#T, предподсчёт и поиск КМП. Много образцов: время работы. Бор (trie), вставка слов в бор. Порождённый образцами бор, пометки вершин бора. Определение функции отката FF(a). Проход по тексту с отслеживанием вершины в боре, время работы. Определение найденных вхождений образцов, время работы. Построение функции FF, порядок обхода вершин (в ширину), время работы. Зависимость затрат времени и памяти от размера алфавита: использование массива, списка, дерева поиска для хранения переходов.