Алгоритмы
Набор допустимых операций
Каждой допустимой операции xi →t(xi)∈ ℝ ≥ 0
m: In(m), Out(m)
∀ In(m) ∃ строго определенная
последовательность допустимых операций, получающая Out(m)
Конечность
In(m) → N∈ ℕ =
#In(m)
Время работы алгоритма m на In(m) = сумма времен выполнения допустимых операций алгоритма m на In(m)
Верхняя оценка времени работы
алгоритма m: Φ(N):ℕ →ℝ
∀ In(m):
#In(m)≤N :T(m,In(m))≤ Φ(N)
Каждый m решает некоторую задачу z с теми же наборами In(z) и Out(m) и с набором алгоритмов на основе
заданного набора допустимых операций.
Верхняя оценка времени решения
задачи z: Φ(N):ℕ →ℝ : ∃ m решения z, для которого Φ(N) – верхняя оценка
времени работы.
Для длинного алгоритма m1 таскания кирпичей на k шаге k раз таскаем кирпич и к-1 возвращаем
его Φ(N)=N(N+1)/2
Φ(N)=N(N+1)/2 – верхняя оценка времени решения задачи переноса кирпичей
Для короткого алгоритма m2 за один шаг – один кирпич таскания кирпичей Φ(N)=N
Φ(N)=N – верхняя оценка времени
решения задачи переноса кирпичей
Куча из N кирпичей любого конечного веса, время
перетаскивания кирпича = весу кирпича – нет верхней оценки времени решения
задачи (т.к. ∀ m !∃ верхней оценки)
Верхняя оценка характеризует худшее
время работы алгоритма на #In(m)=N
Нижняя оценка времени работы
алгоритма m: φ(N):ℕ →ℝ
∀N∈ ℕ ∃ In(m): #In(m)=N :T(m,In(m))≥
φ(N)
Задача таскания кучи кирпичей весом
до 5 кг (время перетаскивания = весу):
нижняя оценка для короткого алгоритма m2 за один шаг – один кирпич таскания кирпичей: φ(N)=N
φ(N)=5N
Φ(N)=5N
Нижняя оценка времени решения
задачи z: φ(N):ℕ →ℝ :∀
m
решения
z
φ(N) – нижняя оценка времени работы алгоритма.
Задача таскания кучи кирпичей весом
до 5 кг (время перетаскивания = весу):
φ(N)=5N
Сведение задач: z1 →g(N) z2: существует алгоритм p преобразующий In(z1) размером N в In(z2)
размером N и Out(z2) в Out(z1) за суммарное время ≤ g(N)
Теорема1. z1 →g(N) z2 и Φ2(N) – верхняя оценка времени решения z2, то
Φ1(N)= Φ2(N)+g(N) – верхняя оценка z1
Теорема2. z1 →g(N) z2 и Φ1(N) – нижняя оценка времени решения z1, то
Φ2(N)= Φ1(N)-g(N) – нижняя оценка z2
Д-во
Φ2(N)= Φ1(N)-g(N) – нижняя оценка z2:
∀ m2
решения z2 ∀ N∈ ℕ ∃ #In(m2)=N : T(m2, In(m2))≥
Φ2(N)= Φ1(N)-g(N)
допустим это не верно:
∃ m2
решения z2 ∃ N∈ ℕ ∀ #In(m2)=N : T(m2, In(m2))<
Φ2(N)=
Φ1(N)-g(N)
Рассмотрим алгоритм решения z1: с помощью m2 и сведения задач за время g(N):
∃ N∈ ℕ ∀ #In(m2)=N: T(сведения+m2,
In(m1)) < Φ2(N)+g(N)=
Φ1(N)-g(N)+g(N)=
Φ1(N)
Получили алгоритм m1 : ∃
N∈ ℕ ∀ #In(m1)=N:
T(m1,In(m1) < Φ1(N)
противоречие с тем, что Φ1(N) – нижняя оценка z1
Ч.Т.Д.