SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Хакасский государственный университет им. Н.Ф. Катанова

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

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

       Николай Гребенщиков, 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

Weitere ähnliche Inhalte

Was ist angesagt?

05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программированиеFedor Tsarev
 
05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программированиеFedor Tsarev
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Alexey Paznikov
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Лекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахЛекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахMikhail Kurnosov
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Mikhail Kurnosov
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделейAlex
 
Лекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеЛекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Technosphere1
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыTechnosphere1
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6Andrey Danilchenko
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 

Was ist angesagt? (20)

05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программирование
 
05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программирование
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Лекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахЛекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графах
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделей
 
Лекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеЛекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графе
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 

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

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2simple_people
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
повторение 7кл. алгебра
повторение 7кл. алгебраповторение 7кл. алгебра
повторение 7кл. алгебраLyudmila Yefremova
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
лекция1
лекция1лекция1
лекция1ap0f30z
 
Алгебра и начала анализа (решение задач)
Алгебра и начала анализа (решение задач)Алгебра и начала анализа (решение задач)
Алгебра и начала анализа (решение задач)Eza2008
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 

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

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
5
55
5
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
7
77
7
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
8
88
8
 
повторение 7кл. алгебра
повторение 7кл. алгебраповторение 7кл. алгебра
повторение 7кл. алгебра
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)
 
лекция1
лекция1лекция1
лекция1
 
Алгебра и начала анализа (решение задач)
Алгебра и начала анализа (решение задач)Алгебра и начала анализа (решение задач)
Алгебра и начала анализа (решение задач)
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 

Mehr von Nikolay Grebenshikov

Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Nikolay Grebenshikov
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Nikolay Grebenshikov
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Nikolay Grebenshikov
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 

Mehr von Nikolay Grebenshikov (12)

Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №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
  • 6. Задача о выборе процессов. Жадный алгоритм. 5
  • 7. Задача о выборе процессов. Жадный алгоритм. 6
  • 8. Задача о выборе процессов T (n) = Θ(N logN ). Почему? Доказательство оптимальности: 7
  • 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
  • 17. Дискретная задача о рюкзаке. Анализ алгоритма. T (N, Wmax) = Θ(N · Wmax) 16
  • 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
  • 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. Отличие строк. Анализ алгоритма. T (s1, s2) = Θ(|s1| · |s2|) 20
  • 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