В задаче о ранце 0/1 нам необходимо 2 входа (1 массив и 1 целое число), чтобы решить эту проблему:
- массив из n элементов: [n1,n2, n3, ...], каждый элемент со своим индексом значения и индексом веса.
- целое число Ш как максимально допустимый вес
Давайтепредположим, что n = 10 и W = 8:
- n = [n1, n2, n3, ..., n10]
- W = 1000 в двоичном выражении (4длиной в бит)
, поэтому сложность по времени T (n) = O (nW) = O (10 * 8) = O (80)
Если вы удвоите размер n :
n = [n1, n2, n3, ..., n10 ] -> n= [n1, n2, n3, ..., n20 ]
, поэтому сложность времени T (n) = O (nW) = O (20 * 8) = O (160)
но поскольку вы удваивает размер W , это не означает, что W = 16, но длина будет вдвое больше:
W = 1000 -> W = 10000000 в двоичном выражении (8-битная длина)
, поэтому T (n) = O (nW) = O (10 * 128) = O (1280)
необходимое время увеличивается в геометрической прогрессии, так что это проблема NPC.