- •Часть 2
- •Содержание
- •1. Рабочая программа курса "математические основы информатики"
- •Часть 2.
- •Предисловие
- •Практические занятия
- •Литература (основная)
- •Литература (дополнительная)
- •2. Краткий конспект лекций
- •2.1.Задачи целочисленного булева программирования
- •2.2. Каноническая и многомерная задачи о ранце и их интерпретации
- •2.3. Задача коммивояжера и ее интерпретации
- •2.4. Задачи о назначениях и их интерпретации
- •2.5. Задача целочисленного линейного программирования в общей постановке
- •2.6. Метод ветвей и границ
- •2.7. Общая схема метода ветвей и границ Джеффриона-Марстена
- •2.8. Решение канонической задачи о ранце методом ветвей и границ
- •2.9. Решение многомерной задачи о ранце методом ветвей и границ
- •2.10. Решение задачи коммивояжера методом ветвей и границ
- •2.11. Решение задачи целочисленного линейного программирования методом ветвей и границ
- •2.12. Решение задачи о ранце с использованием табличной схемы
- •2.13. Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования
- •2.14. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
- •2.15. Задачи теории расписаний
- •2.16. Задачи теории расписаний с одним обслуживающим прибором
- •2.17. Перестановочный прием в задачах теории расписаний
- •2.18. Теорема Лившица-Кладова
- •2.19. Задачи теории расписаний в общей постановке
- •2.20. Задача Джонсона. Графики Ганта
- •2.21.Постановка задачи теории расписаний как задачи частично-целочисленного линейного программирования
- •2.22. Сетевые модели. Расчет временных характеристик сетевых моделей
- •2.23. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке
- •2.24. Алгоритм Форда-Фалкерсона нахождения максимального потока в транспортной сети
- •2.25. Решение задачи о назначениях алгоритмом Куна
- •2.26. Минимаксные задачи о назначениях
- •2.27. Задачи о назначениях с индивидуальными предпочтениями
- •3. Задачник с решением типовых задач
- •3.1. Решение задачи о ранце
- •3.1.1. Решение задачи о ранце методом ветвей и границ
- •3.1.2. Решение задачи о ранце методом динамического программирования (табличная форма)
- •3.1.3. Решение задачи о ранце методом динамического программирования (рекуррентная схема)
- •3.1.4. Решить следующие задачи о ранце :
- •3.2. Решение задачи коммивояжера
- •3.2.1. Решение задачи коммивояжера методом ветвей и границ
- •3.2.2. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
- •3.2.3. Решить задачи коммивояжера:
- •3.3. Решить задачу Джонсона для двух станков, построить график Ганта для оптимального расписания
- •3.4. Решение задачи о назначениях алгоритмом Куна
- •3.5. Решение минимаксных (максиминных) задач о назначениях
- •3.6. Решить задачи о назначениях с индивидуальными предпочтениями
- •3.7. Нахождение максимального потока в транспортной сети алгоритмом Форда-Фалкерсона
- •3.8. Расчет временных характеристик сетевых моделей
- •Рассчитать временные характеристики сетевой модели
- •4. Контрольные задания
- •5. Вопросы к экзамену
- •3.Задачи целочисленного булева программирования.
- •6.Задача коммивояжера и ее интерпретации.
- •8.Задача целочисленного линейного программирования в общей постановке.
3.1.2. Решение задачи о ранце методом динамического программирования (табличная форма)
Рассмотрим задачу о ранце с четырьмя предметами.
5x(1)+7x(2)+6x(3)+3x(4) max,
2x(1)+3x(2)+5x(3)+7x(4) 9,
x(i) {0,1}, i=1,2,3,4.
Все параметры задачи целые неотрицательные числа.
Обозначим через Z(k,p) - задачу, при условиях, что предметов k, k m (для нашей задачи m=4), а вместимость ранца p, p v(0) (для нашей задачи v(0)=9 ). Пусть R(k,p) - оптимум задачи Z(k,p). Тогда оптимум исходной задачи совпадает с оптимумом задачи Z(m,v(0)) и равен R(m,v(0)). Для определения величин R(m,v(0)) построим следующие рекуррентные соотношения:
R(k+1,p) = R(k,p) , если v(k+1) > p, (1)
R(k+1, p) = max { R(k,p), c(k+1) + R(k, p- v(k+1)}, если p> v(k+1) + 1.
Эти рекуррентные соотношения, с учетом граничных условий
R(1,p) = 0, если с(1) > p, (2)
R(1,p) = c(1), если c(1) < p+1,
будем использовать для решения исходной задачи о ранце.
Результаты вычислений по рекуррентным соотношениям будем представлять в виде таблицы с m=4 строками и v(0)=9 столбцами , в которой приводятся значения соответственных величин R(k,p). Для того чтобы решить исходную задачу о ранце необходимо заполнить клетку таблицы с координатами: m=4 , v(0)=9. Для этого не требуется заполнить все клетки таблицы, а лишь те, которые используются для вычисления значений величины R(4,9).
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
v(i) |
c(i) |
1 |
0 |
5(1) |
|
5(1) |
|
5(1) |
|
|
5(1) |
2 |
5 |
2 |
|
5(1) |
|
7(2) |
|
|
|
|
12(1,2) |
3 |
7 |
3 |
|
5(1) |
|
|
|
|
|
|
13(2,3) |
5 |
6 |
4 |
|
|
|
|
|
|
|
|
13(2,3) |
7 |
3 |
Таблица заполняется следующим образом.
R(4,9)=max { R(3,9), c(4)+ R(3,9-v(4))}= max { R(3,9), c(4)+ R(3, 9 - 7}=
max { R(3,9), c(4)+ R(3,2}. Таким образом, для заполнения ячейки (4,9) необходимо заполнить ячейки (3,9) и (3,2). В свою очередь для заполнения этих ячеек необходимо заполнить другие ячейки. Первой заполняется ячейка (1,1). В ней, согласно граничным условиям (2), значение R(1,1)=0. Затем, используя рекуррентные соотношения (1) заполняются остальные ячейки, пока ячейка с номером (4,9) не будет заполнена. Решение задачи о ранце, согласно содержанию ячейки (4,9), будет иметь вид:
x’(1)=0, x’(2)=1, x’(3)=1, x’(4)=0. Значение оптимума задачи F(x’)=13.
3.1.3. Решение задачи о ранце методом динамического программирования (рекуррентная схема)
Рассмотрим задачу о ранце с четырьмя предметами.
5x(1)+7x(2)+6x(3)+3x(4) max,
2x(1)+3x(2)+5x(3)+7x(4) 9,
x(i) {0,1}, i=1,2,3,4.
Множество предметов G={1,2,3,4} - множество номеров предметов.
Обозначим через W(G’, p) - суммарную полезность тех предметов, которые будут положены в ранец из предметов множества G’, при вместимости ранца p, и наилучшем способе выбора предметов ( с точки зрения функционала задачи),
G’ G, p v(0).
Обозначим через S = { i/ c(i) p, i G’}.
Тогда
W(G’,p) = max [ c(i) + W(G’\{i}, p - v(i)], (1)
где максимум берется по предметам из множества S.
Рекуррентные соотношения (1), с учетом граничных условий:
W(G’,p) = 0, если S - пустое множество, позволяют решить задачу о ранце.
W(G={1,2,3,4} , p=9) =max [5+ W({2,3,4},7), 7+ W({1,3,4},6), 6+ W({1,2,4},4), 3+ W({1,2,3},2)];
Отдельно найдем величины:
W({2,3,4},7)=max [7+ W({3,4},4), 6+ W({2,4},2), 3+ W({2,3},0)=max(7,6,3)=7(2).
W({1,3,4},6)=max[5+ W({3,4},4), 6+ W({1,4},1),]=max(5,6)=6(3).
W({1,2,4},4)=max[5+ W({2,4},2), 7+ W({1,4},1)]=max(5,7)=7(2).
W({1,2,3},2)=5(1).
Таким образом, получили:
W(G={1,2,3,4} , p=9)=max(5+7, 7+6, 6+7, 3+5)=13(2,3).
Оптимальное решение исходной задачи имеет вид:
x’=(0,1,1,0). F(x’)=13.