• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки данных"
 

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

on

  • 2,635 views

 

Statistics

Views

Total Views
2,635
Views on SlideShare
2,624
Embed Views
11

Actions

Likes
0
Downloads
19
Comments
0

1 Embed 11

http://www.slideshare.net 11

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Методы программирования. Николай Гребенщиков, 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 ak Akj .  0, при Sij = c[i, j] = maxi<k<j,a ∈S {c[i, k] + c[k, j] + 1} , при Sij = k ij 4
    • Задача о выборе процессов. Жадный алгоритм. 5
    • Задача о выборе процессов. Жадный алгоритм. 6
    • Задача о выборе процессов T (n) = Θ(N logN ). Почему? Доказательство оптимальности: 7
    • Задача о рюкзаке. 8
    • Жадный метод 1. Привести задачу оптимизации к виду, когда после сделан- ного выбора остается решить только одну поздзадачу. 2. Доказать, что существует оптимальное решение, которое можно получить жадным выбором и такой выбор всегда допустим. 3. Показать, что после жадного выбора остается подзадача, которую можно решить жадным методом. 9
    • На семинар • Теоретические основы жадных алгоритмов. • Задача планировки заданий, выполняющихся на одном процессоре. 10
    • Динамическое программирование - применяется если под- задачи не являются независимыми. 1. Описание структуры оптимального решения. 2. Рекурсивное определение значения оптимального реше- ния. 3. Вычисление значения с помощью восходящего анализа. 4. Составление оптимального решения на основе информа- ции, полученной предыдущих этапах. 11
    • Числа Фиббоначи  1, при n = 1, n = 2 F (n) = 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.  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
    • Дискретная задача о рюкзаке. Алгоритм. 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
    • Дискретная задача о рюкзаке. Анализ алгоритма. T (N, Wmax) = Θ(N · Wmax) 16
    • Отличие строк. Edit distance problem Дано: две строки, стоимость удаления, вставки и замены символа. Найти: минимальное количество действий необходимых для преобразования одной строки в другую. Применение: сравнение ДНК. 17
    • Отличие строк. Описание структуры 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
    • Отличие строк. Алгоритм. 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
    • Отличие строк. Анализ алгоритма. T (s1, s2) = Θ(|s1| · |s2|) 20
    • На семинар • Задача составления расписания конвейера. • Задача перемножения цепочки матриц. • Поиск самой длинной общей подпоследовательности. • Построение оптимального бинарного дерева поиска. • Задача оптимальной триангуляции многоугольника. 21
    • Лабораторная работа В далекой стране Тарватии разгорелся бензиновый кризис. Вследствие чего цены на топливо в каждом городе отлича- лись в значительной степени. В это время принц Педро Де Ля Вега решил проехать по своей стране на автомобиле. Он проложил маршрут, так что ну пути его следования будут находиться N городов. В каждом из этих городов есть за- правочные станции. Агенты принца сообщили ему стоимость бензина в каждом из городов. Помогите, пожалуйста, Педро выбрать в каких городах ему заправиться, чтобы потратить на бензин как можно меньше денег. Примите во внимание, что принц всегда заправляет полный бак. 22
    • Список литературы • 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