Приёмы сокращения перебора Метод ветвей и границ Динамическое программирование.

Презентация:



Advertisements
Похожие презентации
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Advertisements

1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Цель: развивать умение ориентироваться на плоскости.
Помоги Незнайке разместить картинки по местам: Автобус – в верхний правый угол Солнце – в нижний левый угол Лягушку – в верхний левый угол Игрушки – в.
Динамическое программирование. Основные концепции Федор Царев, Андрей Лушников Спецкурс «Олимпиадное программирование» Лекция Санкт-Петербург,
Маршруты на графах Нахождение компонент связности Поиск маршрутов, удовлетворяющим определённым требованиям Кратчайшие маршруты.
Раскраски графов Раскраска вершин Пусть Г (V,E,Ф) – граф, раскраска вершин Г в n цветов – отображение f : V {1,2,…,n } Правильная раскраска вершин графа.
Двумерные массивы Обработка относительно диагоналей.
Целочисленные алгоритмы © К.Ю. Поляков, Алгоритм ЕвклидаАлгоритм Евклида 2.Решето ЭратосфенаРешето Эратосфена 3.Длинные числаДлинные числа 4.Целочисленная.
Динамическое программирование. Олимпиадные задачи.
Перед работой внимательно прочитай инструкцию! 1. Тест состоит из 4-х вопросов. 2. Внимательно прочитай вопрос. 3. В нижнем левом углу выбери ручку, фломастер.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Задание 1. Какое значение будет принимать переменная х после выполнения фрагмента программы? 1.f:=5; d:=7; if f>=d then x:=f else x:=d; Ответ: х=7 2.a:=5;
Проект Три шара Постановка задачи : Дано число N – количество вызовов функции, которая возвращает шар одного из трех цветов : красный, синий или желтый.
Санкт-Петербургский колледж Информационных технологий Студенческое научное общество «Шаг в будущее» 7-я итоговая студенческая научно-практическая конференция.
Устный счет Язык программирования Pascal ABC Условные операторы.
Функция у=кх², её свойства и график. 8 класс учебник Мордковича А. Г.
Механические преобразования графиков
Лекция 20 План лекции Классы задач P и NP, сводимость, NP- полные и NP-трудные задачи Метод поиска с возвратом Алгоритмы решения классических задач комбинаторного.
МАТЕМАТИЧЕСКАЯ РАСКРАСКА Раскрась лошадку и она оживет! Реши примеры и покажи ответы.
Транксрипт:

Приёмы сокращения перебора Метод ветвей и границ Динамическое программирование

Числа Фибоначчи f(0)=f(1)=1 f(n)=f(n-1)+f(n-2), при n>1 n f(n)

Динамическое программирование Задача. Найти количество кратчайших путей из левого верхнего в правый нижний угол. c[i,j] = c[i-1,j] + c[i,j-1]

Сокращение перебора За счёт симметрии задачи Метод ветвей и границ Задача раскраски графа int colors[]; function paintGraph(int n, int k) { // раскрасить n первых вершин в k цветов if( n ) { // осталось раскрасить n вершин int i; for(i=1;i

Сокращение перебора Задача раскраски графа Сокращение перебора за счёт симметрии задачи int colors[]; int maxColor; function paintGraph(int n) { // раскрасить n первых вершин if( n ) { // осталось раскрасить n вершин int i; for(i=1;i maxColor) { maxColor++; paintGraph(n-1); maxColor--; } else paintGraph(n-1); } else { // получили раскраску if( maxColor < bestColorNumber ) { bestColorNumber= maxColor; saveColors(); }

Сокращение перебора Задача раскраски графа Метод ветвей и границ int colors[]; int maxColor; function paintGraph(int n) { // раскрасить n первых вершин if( n ) { // осталось раскрасить n вершин int i; int limit=min(bestColorNumber-1,maxColor+1); for(i=1;i maxColor) { maxColor++; paintGraph(n-1); maxColor--; } else paintGraph(n-1); } else { // получили раскраску if( maxColor < bestColorNumber ) { bestColorNumber= maxColor; saveColors(); }

Порядок перебора Имеет значение порядок в котором мы выбираем вершины Распространение ограничений