Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки данных"
1. Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Методы программирования.
Николай Гребенщиков, www.grebenshikov.ru
2. Методы программирования
• Жадные алгоритмы - производится локально оптималь-
ный выбор в надежде, что он приведет к оптимальному
решению глобальной задачи.
• Динамическое программрование - разбить большую
задачу на подзадачи и не вычислять подзадачи более од-
ного раза (использовать память).
1
3. Жадные алгоритмы
• Не всегда дают оптимальный реультат. Например, рас-
краска графа.
• Также являются жадными: алгоритмы поиска минималь-
ного остовного дерева, алгоритм Дейкстры, алгоритм Хафф-
мана.
2
4. Задача о выборе процессов
Дано: множество процессов S = {a1, a2, . . . , an}, процессам
требуется некоторый ресурс, который одновременно может
использоваться лишь одним процессом. Каждый процесс ai
характеризуется начальным моментом si и конечным мо-
ментом si, где 0 ≤ si < fi < ∞. Будучи выбран, процесс ai
длится в течение [si, fi), а процессы ai и aj совместимы,
если интервалы [si, fi) и sj , fj не перекрываются.
Найти: подмножество взаимно совместимых процессов, об-
разующих множество максимального размера.
3
5. Задача о выборе процессов. Оптимальное решение.
Пусть S осортировано по f в порядке возрастания.
Aij = sk ∈ S : fi ≤ sk < fk ≤ sj - подмножество процессов,
которые можно выполнить в промежутке между заверше-
нием ai и началом aj
Оптимальное решение задачи Sij равно Aij = Aik ak Akj .
0, при Sij =
c[i, j] =
maxi<k<j,a ∈S {c[i, k] + c[k, j] + 1} , при Sij =
k ij
4
10. Жадный метод
1. Привести задачу оптимизации к виду, когда после сделан-
ного выбора остается решить только одну поздзадачу.
2. Доказать, что существует оптимальное решение, которое
можно получить жадным выбором и такой выбор всегда
допустим.
3. Показать, что после жадного выбора остается подзадача,
которую можно решить жадным методом.
9
11. На семинар
• Теоретические основы жадных алгоритмов.
• Задача планировки заданий, выполняющихся на одном
процессоре.
10
12. Динамическое программирование - применяется если под-
задачи не являются независимыми.
1. Описание структуры оптимального решения.
2. Рекурсивное определение значения оптимального реше-
ния.
3. Вычисление значения с помощью восходящего анализа.
4. Составление оптимального решения на основе информа-
ции, полученной предыдущих этапах.
11
13. Числа Фиббоначи
1, при n = 1, n = 2
F (n) =
f (n − 1) + f (n − 2), при n > 2
Trecursive(n) = O(2n)
Ttable(n) = O(n) - это и есть динамическое программирова-
ние.
12
14. Дискретная задача о рюкзаке
Дано: N предметов {x1, x2, . . . , xN } с различной стоймостью
Vi и весом Wi, максимальный вес Wmax.
Найти: подмножество предметов, вес которых бы не привы-
шал Wmax, стоймость которых была бы максимальной.
13
15. Дискретная задача о рюкзаке. Описание структуры
Ciw - максимальная стоимость предметов из множества
{x1, x2, . . . , xi} при максимальном весе равном w.
0,
если i = 0 ∨ w = 0
Ciw = C , если Wi > w
(i−1)w
если Wi ≤ w
max(C
(i−1)w , C(i−1)(w−Wi ) + Vi
Ответ: CN W
14
16. Дискретная задача о рюкзаке. Алгоритм.
1 for (i=0;i<=N ;i++) C[i][0] = 0;
2 for (w=0;w<=Wmax;w++) C[0][w] = 0;
3
4 for (i=1;i<=N;i++)
5 for (w=1;w<=Wmax;w++) {
6 if (Wi[i] > w)
7 C[i][w] = C[i-1][w];
8 else
9 C[i][w] = max(C[i-1][w] , C[i-1][w-Wi[i]]+Vi[i]);
10 }
11
12 output(C[N][Wmax]);
15
18. Отличие строк. Edit distance problem
Дано: две строки, стоимость удаления, вставки и замены
символа.
Найти: минимальное количество действий необходимых для
преобразования одной строки в другую.
Применение: сравнение ДНК.
17
19. Отличие строк. Описание структуры
d(s1, s2) - количество действий по переобразованию строки
s1 в s2 .
0,
если s1 =<> ∨s2 =<>
(s1 =<> ∧s2 = s)∨
|s|,
если
(s1 = s ∧ s2 =<>)
d(s1, s2) = min(d(s1, s2
ˆ ˆ
+if (c1 = c2)0else1),
если s1 = s1 + c1, s2 = s2 + c2
ˆ ˆ
d(s , s ),
1 ˆ
2
d(s1, s2))
ˆ
18
22. На семинар
• Задача составления расписания конвейера.
• Задача перемножения цепочки матриц.
• Поиск самой длинной общей подпоследовательности.
• Построение оптимального бинарного дерева поиска.
• Задача оптимальной триангуляции многоугольника.
21
23. Лабораторная работа
В далекой стране Тарватии разгорелся бензиновый кризис.
Вследствие чего цены на топливо в каждом городе отлича-
лись в значительной степени. В это время принц Педро Де
Ля Вега решил проехать по своей стране на автомобиле. Он
проложил маршрут, так что ну пути его следования будут
находиться N городов. В каждом из этих городов есть за-
правочные станции. Агенты принца сообщили ему стоимость
бензина в каждом из городов. Помогите, пожалуйста, Педро
выбрать в каких городах ему заправиться, чтобы потратить
на бензин как можно меньше денег. Примите во внимание,
что принц всегда заправляет полный бак.
22
24. Список литературы
• David M. Mount, The Lecture notes: Design and Analysis
of Computer Algorithms. [Электронный ресурс] / Dept. of
Computer Science, University of Maryland, 2004. - Режим
доступа: http://www.cs.umd.edu/ mount/451/Lects/451lects.pdf
. - сс.11-25
• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-
мы: построение и анализ, 2-е издание. - М. : Издатель-
ский дом “Вильямс”, 2007. сс.386-481.
23