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