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

Содержание

Слайд 1ОЛИМПИАДНЫЕ ЗАДАЧИ
Динамическое программирование

Григорьева А.В.


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


Слайд 3Пример


Слайд 4Решение


Слайд 5Детали реализации


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


Слайд 7Задача «Таблица»


Слайд 9Первый способ


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

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

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

B по-честному

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

B по-честному

Слайд 13L
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 по формулам


Слайд 14L
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]

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


Слайд 15L
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]

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


Слайд 16L
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]

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


Слайд 17L
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]

Слайд 18L
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]

Слайд 19L
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]


Слайд 20L
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Вычисление пути


Слайд 28Сдать можно как задачу №2965
Там даже не требуется вывести путь
И идет

черепашка в другом направлении
http://informatics.mccme.ru/mod/statements/view3.php?id=656&chapterid=2965#1

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика