Хакасский государственный университет им. Н.Ф. Катанова

     Структуры и алгоритмы обработки данных

   Лекция: Методы пр...
Методы программирования


 • Жадные алгоритмы - производится локально оптималь-
   ный выбор в надежде, что он приведет к ...
Жадные алгоритмы


 • Не всегда дают оптимальный реультат. Например, рас-
   краска графа.


 • Также являются жадными: ал...
Задача о выборе процессов

Дано: множество процессов S = {a1, a2, . . . , an}, процессам
требуется некоторый ресурс, котор...
Задача о выборе процессов. Оптимальное решение.

Пусть S осортировано по f в порядке возрастания.

Aij = sk ∈ S : fi ≤ sk ...
Задача о выборе процессов. Жадный алгоритм.




                                              5
Задача о выборе процессов. Жадный алгоритм.




                                              6
Задача о выборе процессов

T (n) = Θ(N logN ). Почему?

Доказательство оптимальности:




                                7
Задача о рюкзаке.




                    8
Жадный метод


1. Привести задачу оптимизации к виду, когда после сделан-
   ного выбора остается решить только одну поздз...
На семинар


 • Теоретические основы жадных алгоритмов.


 • Задача планировки заданий, выполняющихся на одном
   процессо...
Динамическое программирование - применяется если под-
задачи не являются независимыми.


1. Описание структуры оптимальног...
Числа Фиббоначи
          
          1,                       при n = 1, n = 2
F (n) =
          f (n − 1) + f (n − 2),...
Дискретная задача о рюкзаке

Дано: N предметов {x1, x2, . . . , xN } с различной стоймостью
Vi и весом Wi, максимальный ве...
Дискретная задача о рюкзаке. Описание структуры

Ciw - максимальная стоимость предметов из множества
{x1, x2, . . . , xi} ...
Дискретная задача о рюкзаке. Алгоритм.
1    for (i=0;i<=N ;i++) C[i][0] = 0;
2    for (w=0;w<=Wmax;w++) C[0][w] = 0;
3
4  ...
Дискретная задача о рюкзаке. Анализ алгоритма.

T (N, Wmax) = Θ(N · Wmax)




                                            ...
Отличие строк. Edit distance problem

Дано: две строки, стоимость удаления, вставки и замены
символа.

Найти: минимальное ...
Отличие строк. Описание структуры

d(s1, s2) - количество действий по переобразованию строки
s1 в s2 .
              
   ...
Отличие строк. Алгоритм.

     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<...
Отличие строк. Анализ алгоритма.

T (s1, s2) = Θ(|s1| · |s2|)




                                   20
На семинар


 • Задача составления расписания конвейера.


 • Задача перемножения цепочки матриц.


 • Поиск самой длинной...
Лабораторная работа

В далекой стране Тарватии разгорелся бензиновый кризис.
Вследствие чего цены на топливо в каждом горо...
Список литературы


 • David M. Mount, The Lecture notes: Design and Analysis
   of Computer Algorithms. [Электронный ресу...
Upcoming SlideShare
Loading in …5
×

Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки данных"

2,554 views

Published on

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,554
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки данных"

  1. 1. Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Методы программирования. Николай Гребенщиков, www.grebenshikov.ru
  2. 2. Методы программирования • Жадные алгоритмы - производится локально оптималь- ный выбор в надежде, что он приведет к оптимальному решению глобальной задачи. • Динамическое программрование - разбить большую задачу на подзадачи и не вычислять подзадачи более од- ного раза (использовать память). 1
  3. 3. Жадные алгоритмы • Не всегда дают оптимальный реультат. Например, рас- краска графа. • Также являются жадными: алгоритмы поиска минималь- ного остовного дерева, алгоритм Дейкстры, алгоритм Хафф- мана. 2
  4. 4. Задача о выборе процессов Дано: множество процессов S = {a1, a2, . . . , an}, процессам требуется некоторый ресурс, который одновременно может использоваться лишь одним процессом. Каждый процесс ai характеризуется начальным моментом si и конечным мо- ментом si, где 0 ≤ si < fi < ∞. Будучи выбран, процесс ai длится в течение [si, fi), а процессы ai и aj совместимы, если интервалы [si, fi) и sj , fj не перекрываются. Найти: подмножество взаимно совместимых процессов, об- разующих множество максимального размера. 3
  5. 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
  6. 6. Задача о выборе процессов. Жадный алгоритм. 5
  7. 7. Задача о выборе процессов. Жадный алгоритм. 6
  8. 8. Задача о выборе процессов T (n) = Θ(N logN ). Почему? Доказательство оптимальности: 7
  9. 9. Задача о рюкзаке. 8
  10. 10. Жадный метод 1. Привести задачу оптимизации к виду, когда после сделан- ного выбора остается решить только одну поздзадачу. 2. Доказать, что существует оптимальное решение, которое можно получить жадным выбором и такой выбор всегда допустим. 3. Показать, что после жадного выбора остается подзадача, которую можно решить жадным методом. 9
  11. 11. На семинар • Теоретические основы жадных алгоритмов. • Задача планировки заданий, выполняющихся на одном процессоре. 10
  12. 12. Динамическое программирование - применяется если под- задачи не являются независимыми. 1. Описание структуры оптимального решения. 2. Рекурсивное определение значения оптимального реше- ния. 3. Вычисление значения с помощью восходящего анализа. 4. Составление оптимального решения на основе информа- ции, полученной предыдущих этапах. 11
  13. 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. 14. Дискретная задача о рюкзаке Дано: N предметов {x1, x2, . . . , xN } с различной стоймостью Vi и весом Wi, максимальный вес Wmax. Найти: подмножество предметов, вес которых бы не привы- шал Wmax, стоймость которых была бы максимальной. 13
  15. 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. 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
  17. 17. Дискретная задача о рюкзаке. Анализ алгоритма. T (N, Wmax) = Θ(N · Wmax) 16
  18. 18. Отличие строк. Edit distance problem Дано: две строки, стоимость удаления, вставки и замены символа. Найти: минимальное количество действий необходимых для преобразования одной строки в другую. Применение: сравнение ДНК. 17
  19. 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
  20. 20. Отличие строк. Алгоритм. 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. 21. Отличие строк. Анализ алгоритма. T (s1, s2) = Θ(|s1| · |s2|) 20
  22. 22. На семинар • Задача составления расписания конвейера. • Задача перемножения цепочки матриц. • Поиск самой длинной общей подпоследовательности. • Построение оптимального бинарного дерева поиска. • Задача оптимальной триангуляции многоугольника. 21
  23. 23. Лабораторная работа В далекой стране Тарватии разгорелся бензиновый кризис. Вследствие чего цены на топливо в каждом городе отлича- лись в значительной степени. В это время принц Педро Де Ля Вега решил проехать по своей стране на автомобиле. Он проложил маршрут, так что ну пути его следования будут находиться N городов. В каждом из этих городов есть за- правочные станции. Агенты принца сообщили ему стоимость бензина в каждом из городов. Помогите, пожалуйста, Педро выбрать в каких городах ему заправиться, чтобы потратить на бензин как можно меньше денег. Примите во внимание, что принц всегда заправляет полный бак. 22
  24. 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

×