Изменения

Перейти к: навигация, поиск

Динамическое программирование по профилю

21 байт добавлено, 03:49, 9 января 2015
Общие принципы
== Общие принципы ==
Обычно дана таблица и надо посчитать количество замощений этой таблицы некоторыми фигурами (замощение шахматной доски доминошками). Можно перебрать все варианты и выбрать из них удовлетворяющие условию. Но можно воспользоваться методом динамического программирования по профилю и сократить время по одной размерности до линейной. Затем пусть у нас есть правило по которому надо заполнить и для него нам надо <tex>k</tex> предыдущих линий. Тогда можно перебрать все замощения длиной <tex>k\times n</tex>. В итоге нужно заполнить данную таблицу этими замощениями. Получается, что если перебирать все варианты нам понадобиться <tex>O(a^{nm})</tex> времени, а если перебирать только состояния и переходить по ним нам потребуется <tex>O(a^{kn} \cdot m)</tex> времени (где а <tex>a</tex> - количество способов замещения <tex>1 </tex> клетки).
== '''Задача о замощении домино''' ==
Анонимный участник

Навигация