Алгоритмы

Набор допустимых операций

Каждой допустимой операции 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

Ч.Т.Д.