Олимпиадные задачи. Динамическое программирование

Содержание

Слайд 2

Задача «Возрастающая подпоследовательность»

Задача «Возрастающая подпоследовательность»

Слайд 3

Пример

Пример

Слайд 4

Решение

Решение

Слайд 5

Детали реализации

Детали реализации

Слайд 6

Сдать можно как задачу №613 http://informatics.mccme.ru/mod/statements/view3.php?chapterid=613#1

Сдать можно как задачу №613

http://informatics.mccme.ru/mod/statements/view3.php?chapterid=613#1

Слайд 7

Задача «Таблица»

Задача «Таблица»

Слайд 8

Слайд 9

Первый способ

Первый способ

Слайд 10

Второй способ С диагоналями. Нужен, чтобы хранить не 3 строки одной

Второй способ

С диагоналями. Нужен, чтобы хранить не 3 строки одной таблицы

(B), а по две строки трех таблиц (L, R, B)
Слайд 11

L R B Что должно получиться Первую строку заполняем первой строкой

L

R

B

Что должно
получиться

Первую строку заполняем первой строкой из А

Заполняем вторую строку

B по-честному
Слайд 12

L R B Что должно получиться Первую строку заполняем первой строкой

L

R

B

Что должно
получиться

Первую строку заполняем первой строкой из А

Заполняем вторую строку

B по-честному
Слайд 13

L R B Что должно получиться Теперь можно и третью строку

L

R

B

Что должно
получиться

Теперь можно и третью строку В заполнить

B[i, j] =

2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]

Заполняем вторую строку L и R по формулам

Слайд 14

L R B Что должно получиться B[i, j] = 2*B[i-1,j] +

L

R

B

Что должно
получиться

B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j]

= L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]

Теперь можно и третью строку В заполнить

Слайд 15

L R B Что должно получиться B[i, j] = 2*B[i-1,j] +

L

R

B

Что должно
получиться

B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j]

= L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]

Теперь можно и третью строку В заполнить

Слайд 16

L R B Что должно получиться B[i, j] = 2*B[i-1,j] +

L

R

B

Что должно
получиться

B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j]

= L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]

Теперь можно и третью строку В заполнить

Слайд 17

L R B Что должно получиться Теперь можно и третью строку

L

R

B

Что должно
получиться

Теперь можно и третью строку В заполнить

B[i, j] =

2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]
Слайд 18

L R B Что должно получиться Далее заполняем по формулам третьи

L

R

B

Что должно
получиться

Далее заполняем по формулам третьи строки L и R

B[i,

j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]
Слайд 19

L R B Что должно получиться Далее заполняем по формулам третьи

L

R

B

Что должно
получиться

Далее заполняем по формулам третьи строки L и R

и т.д.

B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]

Слайд 20

L R B Что должно получиться Далее заполняем по формулам третьи

L

R

B

Что должно
получиться

Далее заполняем по формулам третьи строки L и R

и т.д.

B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
R[i, j] = R[i-1,j+1] + B[i,j]

Слайд 21

Задача «Черепашка»

Задача «Черепашка»

Слайд 22

Решение задачи «Черепашка». П.П. Полный перебор вариантов – универсальный способ решения.

Решение задачи «Черепашка». П.П.

Полный перебор вариантов – универсальный способ решения. Но

рассмотрим его потенциальные возможности
Пусть дана таблица 4х4. Любой путь состоит из трёх перемещений вверх и трех перемещений вправо, т.е. длина пути равна шести. Другими словами, дано 6 шагов, из них 3 выбираются для перемещений вверх, оставшиеся 3 – для перемещений вправо определяются однозначно. Т.о. количество способов выбора трех перемещений из шести
При нахождении суммы (стоимости) пути потребуется 5 операци сложения, всего 100 операций. Оценим время решения задачи для компьютера с миллионным быстродействием (см. презентация предыдущих занятий о сложности алгоритмов и быстродействии на примере задачи о тупоугольном треугольнике)
Слайд 23

Длительность вычислений

Длительность вычислений

Слайд 24

Решение задачи «Черепашка». Д.П.

Решение задачи «Черепашка». Д.П.

Слайд 25

Код (на паскале)

Код (на паскале)

Слайд 26

Вычисление пути

Вычисление пути

Слайд 27

Вычисление пути

Вычисление пути