logo search
shpori (1) / shpori (1)

18. Задача о рюкзаке

Вход:

1.n видов предметов, которыe имеет веса w1,…,wn и стоимости с1,…cn;

2.рюкзак размера R.

Нужно унести в рюкзаке предметы наибольшей суммарной стоимости

Пусть– количество предметовi-го вида.

+…+® max

+…+£ R

Будем строить матрицу A размера n´(R+1). A[i][j] – максимальная стоимость предметов

из множества {1,…,i}, которые занимают в рюкзаке объем не более j.

A[n][R] - ?

A[i][0] = 0, A[1][j] = ?

Утверждение.

A[i][j] = max{mici + A[i-1][j - miwi], где максимум берется по всем 0£mi£j/wi

Трудоемкость - О()

Алгоритм неполиномиальный, например если R = (2n+1 – размер входа).

Но в реальности R ограничен, тогда алгоритм полиномиальный. Такие алгоритмы называются псевдополиномиальными.

19. Алгоритм Штрассена умножения матриц Задача: перемножить две матрицы n на n.Стандартное умножение – O(n3).Предположим для простоты, что n – степень двойки

AB = C

C1,1=A1,1B1,1+A1,2B2,1

………………………….

C2,2=A2,1B1,2+A2,2B2,2

T(n) – трудоемкость алгоритма умножения матриц T(n) = 8T(n/2) + 4*n2/4 . Решение этого рекуррентного уравнения – O(n3). Пусть мы умеем перемножать матрицы 2 на 2 с помощью m умножений и a сложений .

T(n) = mT(n/2) + a*n2/4 Лемма. T(n) = O(nlogm)

Лемма. Умножение двух матриц размера 2 на 2 можно выполнить с помощью 7 умножений и 18 сложений (вычитаний)

Теорема. Умножение двух матриц размера n на n можно выполнить за время O(nlog7)»O(n2,81)

В наст время сущ алгор с трудоемкост O(n2,376)

20. Определение. Машина Тьюринга – это семерка (Γ,b,Q,q0,qy,qn,), где Γ – множество символов, bΓ – пустой символ, Q – конечное множество состояний, q0,qy,qnQ – начальное и конечные состояния, : (Q\{qy,qn})ΓQΓ{-1,0,1}