- •§ 8. Диафантовы множества.
- •Теорема Лагранжа.
- •8.1. Разрешимость в натуральных числах.
- •Определение.
- •Определение.
- •Теорема 8.1.
- •Теорема 8.2.
- •Необходимость.
- •Достаточность.
- •8.2. Нумерация кортежей.
- •Канторова нумерация.
- •Геделево кодирование.
- •Определение.
- •Теорема 8.3.
- •Теорема 8.4.
- •Определение.
- •0.2. Машина с неограниченными регистрами (мнр) [Ктл, c.16]
- •0.3. Равнодоступные адресные машины (рам) [Ахо, с.22]
- •Типы операндов.
- •Команды.
- •0.4. Интерпретация программы как функции.
- •0.6. Вычислительная сложность рам-программ.
- •Определение.
- •Определение.
- •Определение.
- •Логарифмический критерий.
- •0.7. Модификации рам.
- •0.8. Неветвящиеся программы и равномерный весовой критерий.
- •Определение.
- •0.9. Неветвящиеся программы и логарифмический весовой критерий.
- •0.10. Ветвления.
- •0.11. Операции с двоичными векторами фиксированной длины. Определение.
- •Определение.
- •0.12. Машина Тьюринга (k-ленточная).
- •Определение.
- •Определение.
- •0.13. Связь мт и рам.
- •Теорема 0.1.
- •Утверждение 1.
- •Утверждение 2.
- •§ 1. Структуры данных. Определение.
- •1) Вставка.
- •2) Удаление.
- •1.1. Очередь и стек. Определение.
- •Определение.
- •1.2. Множества. Представление множеств.
- •1) Применение списков.
- •3) Представление в виде массивов.
- •4) Представление в виде графа.
- •Определение.
- •Определение.
- •§ 2. “Разделяй и властвуй”.
- •Теорема 2.1
- •§ 3. Динамическое программирование
- •Алгоритм 3.1.
- •§ 4. Редактирующее расстояние
- •Алгоритм 4.1.
- •Алгоритм 4.2.
- •§ 5. Порядковые статистики Определение.
- •Алгоритм 5.1
- •Теорема 5.2.
- •§ 6. Вхождение образца
- •Определение.
- •Алгоритм 6.1a.
- •Алгоритм 6.1б. Вычисление функции отказов.
- •Теорема 6.2.
- •Алгоритм 6.1.Б вычисляет f за o(n) шагов.
- •Конец пока
- •Алгоритм lz
- •Дельта – алгоритм
- •Арифметическое кодирование
Определение.
В случае, когда в качестве модели вычислений берутся неветвящиеся программы, говорят, что данная задача имеет временную и емкостную сложность OA (f(n)), если найдется последовательность программ для ее решения с временной или емкостной сложностью не более cf(n) для некоторой постоянной c:
T cf(n) , S cf(n)
OA (f(n)) читается: “порядка f(n) шагов неветвящейся программы”. Индекс А cнизу обозначает “арифметический” - это основная характеристика неветвящихся программ.
Таким образом, вычисление полинома имеет временную, а также емкостную сложность OA (n).
OA - арифметический равномерный критерий.
0.9. Неветвящиеся программы и логарифмический весовой критерий.
Равномерный весовой критерий применительно к неветвящимся программам годится, если этот вес имеет ”разумный” размер. Модификация модели ,соответствующая логарифмической весовой функции, называется битовым вычислением. Это та же неветвящаяся программа, но в ней
1) все переменные принимают значения 0 или 1, т.е. это биты,
2) используются логические операции вместо арифметических (набор команд для РАМ должен состоять из этих операций): and обозначается через , or - через , exclusive or - через , not – через ¬.
Для битовой модели арифметические операции над целыми числами i и j занимают по меньшей мере l(i)+l(j) шагов, что соответствует логарифмическому весу операндов. Действительно, умножение и деление с помощью наилучших известных алгоритмов для умножения и деления
i на j требуют более, чем l(i)+l(j) шагов.
При битовых вычислениях порядок величин обозначается через OБ. Битовая модель полезна, когда речь идет об основных операциях, таких, как арифметические, которые исходны в других моделях. Например, для модели неветвящихся программ умножение двух n-разрядных чисел можно осуществить за OA(1) шагов, тогда как для битовой модели наилучший известный результат – OБ(n log n log log n) шагов.
0.10. Ветвления.
В некоторых задачах удобно в качестве основной меры сложности брать число выполняемых команд разветвления. Разумно рассматривать модель, в которой все шаги дают разветвления.
Обычно программу, состоящую из разветвлений, представляют в виде двоичного дерева, называемого деревом решений. Каждый внутренний узел представляет один из шагов решения.
В общем случае управление переходит от узла к одному из его сыновей, до тех пор пока не будет достигнут лист.
Пример.
Сортировка чисел.
Если рассматривается n чисел, то листов будет n На каждом шаге сравнения a<b<c можно попасть в одно из двух состояний. Программа получается без циклов.
Чтобы написать эффективный алгоритм, надо минимизировать максимальный путь. Эта схема будет , по возможности, сбалансированным бинарным деревом.
С ложность lg n! ;
lg (n!) O(n lg n) сортировка чисел с помощью сравнения может быть сделана меньше, чем за n lg n.
0.11. Операции с двоичными векторами фиксированной длины. Определение.
Неотрицательные функции f1(n) и f2(n) полиномиально связаны (эквивалентны), если найдутся такие полиномы p1(n) и p2(n) , что для всех n справедливы неравенства :
f1(n) p1(f2(n)) и f2(n) p2( f1(n) ).
Но n2 и 2n не являются полиномиально связанными, т.к. нет такого полинома p(x), что p(n2)2n
для всех n.
Это свойство является транзитивным и рефлексивным.
Пример.
n3 и n2 lg n lg lg lg (n3+(sin n)2 +2) - полиномиально эквивалентны.