Теория игр и исследование операций. Модели, алгоритмы, сложность: Конспект лекций, страница 36

x

j1

j2

j3

y

x1(y)

F1(y)

x2(y)

F2(y)

x3(y)

F3(y)

x

j2(x)

F3(y-x)

j2+F3

£1

2

3

2

£1

0

5

0

2

0

3

3

6

2

3

4

2

2

2

6

0

2

1

3

3

6

3

3

4

3

3

0

6

3

3

2

4

2

6

4

4

5

3

4

4

7

3

3

3

4

2

6

5

4

5

3

5

2

7

3

3

4

5

2

7

6

5

5

4

6

4

8

6

4

max=7

7

5

5

4

7

2

8

6

4

xk(y) = min { xk £ y |

8

5

5

4

8

4

11

2

8

6

4

jk(xk) + Fk+1(y-xk)=Fk(y)}

Случай идентичных потребителей: ji(x)=j(x). Докажите, что а) если j(x) выпукла по x, то весь ресурс можно отдать одному потребителю, б) если вогнута, то его надо делить поровну между всеми потребителями.

№31. Задача о рюкзаке.

Пусть есть рюкзак объема V ³ 0 и n камней с объемами vi и ценами ci. С каждым камнем свяжем переменную xi, принимающую значение 1 (если камень берется) или 0 (в противном случае). Требуется найти подмножество камней с максимальной суммарной стоимостью Sici×xi, влезающее в рюкзак (т.е. Sivi×xi,  £ V).

ПустьFk(y) - максимальная стоимость камней с номерами от k до n, влезающих в рюкзак объема y.       Т.к. любая часть оптимального решения оптимальна, то

Fn(y) = cn (если vn£ y)или 0 (в противном случае)         ЕслиV и vi – целые, то метод

Fk(y) = max { Fk+1(y), ck + Fk+1(y-vk) если y³vk}          динамического программирования:

xk(y) = min { xk £ y | ck×xk + Fk+1(y-vk×xk) = Fk(y) }.     меняя k от n-1 до 1, найдемF1(V), Трудоемкость - O(n×V).                            x1(y1=V), xk+1(yk+1= yk -vk×xk(yk)).

y

x1(y)

F1(y)

x2(y)

F2(y)

x3(y)

F3(y)

x4(y)

F4(y)

£ 1

0

0

0

0

0

0

2

1

6

0

0

0

0

3

0

8

1

8

0

0

4

0

10

0

10

1

10

5

1

15

1

14

0

10

1

10

Пример:

5x1+6x2 + 8x3+10x4® max

x1+2x2 + 3x3+  4x4£ 5

F2(4) =max{ F3(4),6+ F3(4-2=2)}

= max{10,6+0} = 10,    x2(4)=0.

F1(5) =max{ F2(5),10+ F2(5-1)}

= max{14,5+10} = 15,  x1(5)=1.

x1 =x1(5)=1,      x2 =x2(5-v1×x1 =4)=0,    x3 =x3(4-v2×x2 =4)=0,    x4=x4(4-v3×x3 =4)=1.