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

Содержание

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

Слайд 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. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


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

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