Основы программного конструирования
Анализ алгоритма Боуэра-Мура
Алгоритм Рабина-Карпа
Суть алгоритма
Хитрость вычисления хешей в «стоге сена»
Анализ алгоритма Рабина-Карпа
Алгоритм Кнута-Морриса-Пратта
Профессия: программист
… со сложностью!
Что сложнее?
Работа с черными ящиками
Если нет черного ящика?
Декомпозиция
Первое представление модуля
Простейшие способы декомпозиции
Уточнение представления
Картинки связей
Меры против сложности
Интерфейс
Интерфейс
Интерфейс
Реализация
Интерфейс и реализация
Интерфейс и реализация
Интерфейс и реализация
Картинки связей
Устройство модулей в Python
Equsolver.py
Main.py
Стандартная библиотека Python
Что важнее интерфейс или реализация?
Почему интерфейс важнее реализации?
На сегодня все
1.04M

5 лекция_2026

1. Основы программного конструирования

ЛЕКЦИЯ №5
10 МАРТА 2026

2. Анализ алгоритма Боуэра-Мура

На практике работает очень хорошо, вплоть до: O(N/M).
В худшем случае (поиск “abbbb” в “bbbbbbbbbb”): O((N-M)*M).

3. Алгоритм Рабина-Карпа

Вместо сравнения подстрок будем использовать сравнение их
хешей.
Хеш-функция быстро преобразует произвольную строку в
некоторое численное значение, причем равные строки
преобразуются в равные значения.
Некое большое
Основание системы
простое число Q
счисления R
Например:
hash(“abc”) = 97 ∗ 2562 + 98 ⋅ 2561 + 99 ⋅ 2560 %997

4. Суть алгоритма

English     Русский Rules