- •Предисловие
- •Введение
- •Алгоритмы и их сложность
- •Примеры задач и алгоритмов
- •Задачи на графах: «Коммивояжер», «Кратчайшие пути», «Остовные деревья»
- •Приближенные алгоритмы: «Составление расписаний»
- •«Сортировка слиянием»
- •«Быстрая сортировка»
- •Формально об алгоритмах. Несложно о сложности
- •«RAM»: машины с произвольным доступом
- •Сложность в худшем случае
- •Сложность в среднем
- •Полиномиальные алгоритмы
- •Полиномиальность и эффективность
- •Аппроксимация с гарантированной точностью
- •Алгоритмы с оценками точности
- •Жадные алгоритмы для «Покрытия множеств»
- •Приближенные алгоритмы для «Вершинного покрытия»
- •Жадный алгоритм для «Рюкзака»
- •Алгоритм Кристофидеса
- •Аппроксимация с заданной точностью
- •«Рюкзак»: динамическое программирование
- •Полностью полиномиальная приближенная схема для «Рюкзака»
- •Вероятностный анализ детерминированных алгоритмов
- •Сложность и полиномиальность в среднем
- •Задача упаковки
- •Выполнимость КНФ
- •Точность алгоритма для почти всех входов
- •«Рюкзак»: полиномиальность в среднем
- •Вероятностные алгоритмы и их анализ
- •Вероятностная проверка тождеств
- •Максимальное по включению независимое множество в графе
- •Протокол византийского соглашения
- •Вероятностное округление
- •Максимальный разрез в графе
- •Методы дерандомизации
- •Метод условных вероятностей
- •Метод малых вероятностных пространств
- •Полиномиальная проверка простоты
- •Основы теории сложности вычислений
- •Сложность вычислений
- •Машины Тьюринга и вычислимость
- •Сводимость по Куку
- •Недетерминированные алгоритмы
- •Сводимость по Карпу
- •Вероятностные вычисления
- •Вероятностно проверяемые доказательства
- •Схемы и схемная сложность
- •Коммуникационная сложность
- •Диаграмма классов сложности
- •Приложения
- •Введение в Python
- •Глоссарий
- •Предметный указатель
- •Список алгоритмов
7.2. ГЛОССАРИЙ |
343 |
чтобы максимально избавить текст алгоритма от технических подробностей, но все же это настоящие, работающие алгоритмы, и трассировка их вывода получена при выполнении программы.
7.2Глоссарий
По результатам чтения лекций, были выявлены основные обозначения, вызывающие у студентов затруднения. Они приведены в виде справочного материала.
Определение 7.2.1. Алфавит — конечный набор символов.
Определение 7.2.2. Слово — конечная последовательность символов из некоторого алфавита .
Пустое слово обозначается . Набор слов длины n над алфавитом обозначается n, набор всех слов (включая пустое) — .
Определение 7.2.3. Язык L — произвольное подмножество L , т. е. произвольное множество слов над алфавитом .
Надо отличать пустой язык (язык не содержащий ни одного слова), который также обозначается , от языка f g, содержащего единственное пустое слово.
Определение 7.2.4. Дополнение языка L — язык L, состоящий из всех возможных слов над алфавитом
, не входящих в язык L — L n L.
Множество вещественных чисел обозначается R, целых — Z, рациональных — Q, натуральных — N. Неотрицательные их подмножества обозначаются соответственно R+, Z+, Q+.
Пусть f : N ! R, g : N ! R.
344 |
Глава 7. ПРИЛОЖЕНИЯ |
Определение 7.2.5. f=O(g), если 9c 2 R; c > 0, и
9n0 2 N; 8n > n0 : jf(n)j cjg(n)j:
Определение 7.2.6. f=o(g), если limn!1 f(n) = 0.
g(n)
Определение 7.2.7. f = Ω(g), если g = O(f).
Определение 7.2.8. f = (g), если f = O(g) и g = O(f).
Определение 7.2.9. Кортеж (к-кортеж) — упорядоченный набор из k элементов (множеств, подмножеств, элементов множеств). Обозначается угловыми скобками, например, кортеж из элементов a, b, и множества C — a; b; C .
Определение 7.2.10. x — наибольшее целое, не превосходящее x.
Определение 7.2.11. x — наименьшее целое, не меньшее x.
Z — множество целых чисел.
Q — множество рациональных чисел.
