🗊Презентация Об алгоритмах на примерах

Нажмите для полного просмотра!
Об алгоритмах на примерах, слайд №1Об алгоритмах на примерах, слайд №2Об алгоритмах на примерах, слайд №3Об алгоритмах на примерах, слайд №4Об алгоритмах на примерах, слайд №5Об алгоритмах на примерах, слайд №6Об алгоритмах на примерах, слайд №7Об алгоритмах на примерах, слайд №8Об алгоритмах на примерах, слайд №9Об алгоритмах на примерах, слайд №10Об алгоритмах на примерах, слайд №11Об алгоритмах на примерах, слайд №12Об алгоритмах на примерах, слайд №13Об алгоритмах на примерах, слайд №14Об алгоритмах на примерах, слайд №15Об алгоритмах на примерах, слайд №16Об алгоритмах на примерах, слайд №17Об алгоритмах на примерах, слайд №18Об алгоритмах на примерах, слайд №19Об алгоритмах на примерах, слайд №20Об алгоритмах на примерах, слайд №21Об алгоритмах на примерах, слайд №22Об алгоритмах на примерах, слайд №23Об алгоритмах на примерах, слайд №24Об алгоритмах на примерах, слайд №25Об алгоритмах на примерах, слайд №26Об алгоритмах на примерах, слайд №27Об алгоритмах на примерах, слайд №28Об алгоритмах на примерах, слайд №29Об алгоритмах на примерах, слайд №30Об алгоритмах на примерах, слайд №31Об алгоритмах на примерах, слайд №32Об алгоритмах на примерах, слайд №33Об алгоритмах на примерах, слайд №34Об алгоритмах на примерах, слайд №35Об алгоритмах на примерах, слайд №36Об алгоритмах на примерах, слайд №37Об алгоритмах на примерах, слайд №38Об алгоритмах на примерах, слайд №39Об алгоритмах на примерах, слайд №40Об алгоритмах на примерах, слайд №41Об алгоритмах на примерах, слайд №42Об алгоритмах на примерах, слайд №43Об алгоритмах на примерах, слайд №44Об алгоритмах на примерах, слайд №45Об алгоритмах на примерах, слайд №46Об алгоритмах на примерах, слайд №47Об алгоритмах на примерах, слайд №48Об алгоритмах на примерах, слайд №49Об алгоритмах на примерах, слайд №50Об алгоритмах на примерах, слайд №51Об алгоритмах на примерах, слайд №52Об алгоритмах на примерах, слайд №53Об алгоритмах на примерах, слайд №54Об алгоритмах на примерах, слайд №55Об алгоритмах на примерах, слайд №56Об алгоритмах на примерах, слайд №57Об алгоритмах на примерах, слайд №58Об алгоритмах на примерах, слайд №59Об алгоритмах на примерах, слайд №60Об алгоритмах на примерах, слайд №61Об алгоритмах на примерах, слайд №62Об алгоритмах на примерах, слайд №63

Содержание

Вы можете ознакомиться и скачать презентацию на тему Об алгоритмах на примерах. Доклад-сообщение содержит 63 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Об алгоритмах на примерах, слайд №1
Описание слайда:

Слайд 2


Об алгоритмах на примерах, слайд №2
Описание слайда:

Слайд 3


Об алгоритмах на примерах, слайд №3
Описание слайда:

Слайд 4


Об алгоритмах на примерах, слайд №4
Описание слайда:

Слайд 5


Об алгоритмах на примерах, слайд №5
Описание слайда:

Слайд 6


Об алгоритмах на примерах, слайд №6
Описание слайда:

Слайд 7


Об алгоритмах на примерах, слайд №7
Описание слайда:

Слайд 8


Об алгоритмах на примерах, слайд №8
Описание слайда:

Слайд 9


Об алгоритмах на примерах, слайд №9
Описание слайда:

Слайд 10


Об алгоритмах на примерах, слайд №10
Описание слайда:

Слайд 11


Об алгоритмах на примерах, слайд №11
Описание слайда:

Слайд 12


Об алгоритмах на примерах, слайд №12
Описание слайда:

Слайд 13


Об алгоритмах на примерах, слайд №13
Описание слайда:

Слайд 14


Об алгоритмах на примерах, слайд №14
Описание слайда:

Слайд 15


Об алгоритмах на примерах, слайд №15
Описание слайда:

Слайд 16


Об алгоритмах на примерах, слайд №16
Описание слайда:

Слайд 17


Об алгоритмах на примерах, слайд №17
Описание слайда:

Слайд 18


Об алгоритмах на примерах, слайд №18
Описание слайда:

Слайд 19


Об алгоритмах на примерах, слайд №19
Описание слайда:

Слайд 20


Об алгоритмах на примерах, слайд №20
Описание слайда:

Слайд 21


Об алгоритмах на примерах, слайд №21
Описание слайда:

Слайд 22


Об алгоритмах на примерах, слайд №22
Описание слайда:

Слайд 23


Об алгоритмах на примерах, слайд №23
Описание слайда:

Слайд 24


Об алгоритмах на примерах, слайд №24
Описание слайда:

Слайд 25


Об алгоритмах на примерах, слайд №25
Описание слайда:

Слайд 26


Об алгоритмах на примерах, слайд №26
Описание слайда:

Слайд 27


Об алгоритмах на примерах, слайд №27
Описание слайда:

Слайд 28


Об алгоритмах на примерах, слайд №28
Описание слайда:

Слайд 29


Об алгоритмах на примерах, слайд №29
Описание слайда:

Слайд 30






 Общность и эффективность решения задачи
Общие решения - менее эффективны.  
Более узкие решения (одной задачи, например, а не целого класса) - более эффективны
Как следствие стало необходимым понятие сложности дискретных алгоритмов и задач,  которое позволяет лучше понять причины неэффективности решений, понять, можно ли исключить полный перебор в решении задачи.
Описание слайда:
Общность и эффективность решения задачи Общие решения - менее эффективны. Более узкие решения (одной задачи, например, а не целого класса) - более эффективны Как следствие стало необходимым понятие сложности дискретных алгоритмов и задач, которое позволяет лучше понять причины неэффективности решений, понять, можно ли исключить полный перебор в решении задачи.

Слайд 31






Задача об упаковке рюкзака: 
Множество вещей {Pp  | p=(v,w)}Упаковать вещи так, чтобы суммарная ценность V была максимальной при суммарном весе не превоcходящем W.
Другие задачи: планирование исполнения множества программ, размещение груза на корабле, и т.д. и т.п.
     Полный ПЕРЕБОР   Сложность = O(n!)
     Метод ветвей и границ. Известно решение V = k, надо построить решение. Частично построенный вариант можно не испытывать, если он уже хуже оптимального.
Класс задач NP – множество всех переборных задач,
Класс Р – переборные задачи, разрешимые за полиномиальное время
 Построить оптимальную упаковку можно полным перебором, а  иного, не переборного, алгоритма может и в принципе не существовать. Это и есть труднорешаемая задача.
Описание слайда:
Задача об упаковке рюкзака: Множество вещей {Pp | p=(v,w)}Упаковать вещи так, чтобы суммарная ценность V была максимальной при суммарном весе не превоcходящем W. Другие задачи: планирование исполнения множества программ, размещение груза на корабле, и т.д. и т.п. Полный ПЕРЕБОР Сложность = O(n!) Метод ветвей и границ. Известно решение V = k, надо построить решение. Частично построенный вариант можно не испытывать, если он уже хуже оптимального. Класс задач NP – множество всех переборных задач, Класс Р – переборные задачи, разрешимые за полиномиальное время Построить оптимальную упаковку можно полным перебором, а иного, не переборного, алгоритма может и в принципе не существовать. Это и есть труднорешаемая задача.

Слайд 32






СВОДИМОСТЬ
	Переборная задача П1 сводится к переборной задаче П2, если метод решения П1 можно преобразовапть к методу решения П2. 
	Сводимость полиномиальная, если это преобразование можно сделать за полиномиальное время.
	NP-полные задачи те, к которым полиномиально сводятся любая задача из NP, это класс универсальных в некотором смысле  задач.
 	Если бы Р= NP, тогда можно было бы надеяться создать эффективные полиномиальные алгоритмы решения переборных задач. Но к сожалению, это видимо не так и для решения каждой переборной задачи придется разрабатывать свои эффективные алгоритмы решения
Описание слайда:
СВОДИМОСТЬ Переборная задача П1 сводится к переборной задаче П2, если метод решения П1 можно преобразовапть к методу решения П2. Сводимость полиномиальная, если это преобразование можно сделать за полиномиальное время. NP-полные задачи те, к которым полиномиально сводятся любая задача из NP, это класс универсальных в некотором смысле задач. Если бы Р= NP, тогда можно было бы надеяться создать эффективные полиномиальные алгоритмы решения переборных задач. Но к сожалению, это видимо не так и для решения каждой переборной задачи придется разрабатывать свои эффективные алгоритмы решения

Слайд 33






Полиномиальная и экспоненциальная сложность
	Функция f(n) есть O(g(n)), если |f(n)| ≤ c| g(n)|.
Полиномиальный (полиномиальной временнόй сложностью) называется алгоритм, сложность которого O(р(n)), где р(n) полином от n. Если алгоритм невозможно так оценить, то он имеет экспоненциальную сложность.
             Скорость роста 	      n =	 10         20     30        40
  линейная сложность	         0,001  0,002  0,003   0,004
  квадратичная сложность    0,001  0,004  0,009   0,016 (n2)
  показательная функция (экспоненциальная сложность)
                            2n                 0.1       10    
Полнопереборные задачи:
Найти в графе кратчайшее расстояние между вершинами  А  и  В
Раскраска графа. Задан граф G=(V,E),  K≤|V|. Существует ли К-раскраска, при которой любые две связанные вершины раскрашиваются в разные цвета?
Описание слайда:
Полиномиальная и экспоненциальная сложность Функция f(n) есть O(g(n)), если |f(n)| ≤ c| g(n)|. Полиномиальный (полиномиальной временнόй сложностью) называется алгоритм, сложность которого O(р(n)), где р(n) полином от n. Если алгоритм невозможно так оценить, то он имеет экспоненциальную сложность. Скорость роста n = 10 20 30 40 линейная сложность 0,001 0,002 0,003 0,004 квадратичная сложность 0,001 0,004 0,009 0,016 (n2) показательная функция (экспоненциальная сложность) 2n 0.1 10 Полнопереборные задачи: Найти в графе кратчайшее расстояние между вершинами А и В Раскраска графа. Задан граф G=(V,E), K≤|V|. Существует ли К-раскраска, при которой любые две связанные вершины раскрашиваются в разные цвета?

Слайд 34


Об алгоритмах на примерах, слайд №34
Описание слайда:

Слайд 35


Об алгоритмах на примерах, слайд №35
Описание слайда:

Слайд 36


Об алгоритмах на примерах, слайд №36
Описание слайда:

Слайд 37





Инварианты цикла (loop  invariant) 
В начале каждой итерации цикла for  подмассив 
А [1..j-1] содержит те же элементы, которые были в нем с самого начала, но расположенные в отсортированном порядке. 
Инварианты циклов обладают следующими тремя свойствами. 
Инициализация. Они справедливы перед первой инициализацией цикла. 
Сохранение. Если они истинны перед очередной итерацией цикла, то остаются истинны и после нее. 
Завершение. По завершении цикла инварианты позволяют убедиться в правильности алгоритма.
Описание слайда:
Инварианты цикла (loop invariant) В начале каждой итерации цикла for подмассив А [1..j-1] содержит те же элементы, которые были в нем с самого начала, но расположенные в отсортированном порядке. Инварианты циклов обладают следующими тремя свойствами. Инициализация. Они справедливы перед первой инициализацией цикла. Сохранение. Если они истинны перед очередной итерацией цикла, то остаются истинны и после нее. Завершение. По завершении цикла инварианты позволяют убедиться в правильности алгоритма.

Слайд 38





Анализ алгоритма 
Время работы процедуры Insertion__Sort зависит от набора входных значений: для сортировки тысячи чисел требуется больше времени, чем для сортировки трех чисел. 
   Кроме того, время сортировки может быть разным для последовательностей, состоящих из одного и того же количества элементов, в зависимости от степени упорядоченности этих последовательностей до начала сортировки.
    В общем случае время работы алгоритма увеличивается с увеличением количества входных данных, поэтому общепринятая практика — представлять время работы программы как функцию, зависящую от количества входных элементов. 
   Понятие размер задачи уточняется для каждой задачи. Это может быть число от числа элементов в массиве, от количества битов для представления входных данных, от количества вершин и дуг графа и т.д.
Описание слайда:
Анализ алгоритма Время работы процедуры Insertion__Sort зависит от набора входных значений: для сортировки тысячи чисел требуется больше времени, чем для сортировки трех чисел. Кроме того, время сортировки может быть разным для последовательностей, состоящих из одного и того же количества элементов, в зависимости от степени упорядоченности этих последовательностей до начала сортировки. В общем случае время работы алгоритма увеличивается с увеличением количества входных данных, поэтому общепринятая практика — представлять время работы программы как функцию, зависящую от количества входных элементов. Понятие размер задачи уточняется для каждой задачи. Это может быть число от числа элементов в массиве, от количества битов для представления входных данных, от количества вершин и дуг графа и т.д.

Слайд 39





Время работы алгоритма для того или иного ввода измеряется в количестве элементарных операций, или "шагов", которые необходимо выполнить.  Каждый элементарный шаг выполняется за константное время.
Время работы алгоритма для того или иного ввода измеряется в количестве элементарных операций, или "шагов", которые необходимо выполнить.  Каждый элементарный шаг выполняется за константное время.
введем для процедуры Insertion_Sort время выполнения каждой инструкции и количество их повторений. Для каждого j = 2,3,..., n,  где n = length [А], обозначим через tj количество проверок условия в цикле while 
Время работы алгоритма (эффективность алгоритма) — это сумма времён, необходимых для выполнения каждой входящей в его состав исполняемой инструкции.
Если выполнение инструкции длится в течение времени сi и она повторяется в алгоритме n раз, то ее вклад в полное время работы алгоритма равно сi n.  Чтобы вычислить время работы алгоритма Insertion_Sort (обозначим его через T(n)), нужно просуммировать произведения значений, стоящих в столбцах время и количество раз, в результате чего получим:
Описание слайда:
Время работы алгоритма для того или иного ввода измеряется в количестве элементарных операций, или "шагов", которые необходимо выполнить. Каждый элементарный шаг выполняется за константное время. Время работы алгоритма для того или иного ввода измеряется в количестве элементарных операций, или "шагов", которые необходимо выполнить. Каждый элементарный шаг выполняется за константное время. введем для процедуры Insertion_Sort время выполнения каждой инструкции и количество их повторений. Для каждого j = 2,3,..., n, где n = length [А], обозначим через tj количество проверок условия в цикле while Время работы алгоритма (эффективность алгоритма) — это сумма времён, необходимых для выполнения каждой входящей в его состав исполняемой инструкции. Если выполнение инструкции длится в течение времени сi и она повторяется в алгоритме n раз, то ее вклад в полное время работы алгоритма равно сi n. Чтобы вычислить время работы алгоритма Insertion_Sort (обозначим его через T(n)), нужно просуммировать произведения значений, стоящих в столбцах время и количество раз, в результате чего получим:

Слайд 40





Insertion_Sort(A) 	время 	количество раз 
Insertion_Sort(A) 	время 	количество раз 
1   for j  2 to length[A] 	c1 	n 
2      do key   A[j] 	c2 	n — 1 
3          -  Вставка элемента A[j] в отсортированную 
                  последовательность A[1,...,j — 1]. 0 	n — 1 
4          i  j — 1 	с4 	 n — 1 
5         while i > 0 and A[i] > key 	c5 	
6            do A[i + 1]  A[i] 	c6
7                 i  i — 1 	c7 	 
8       А[i +1]  key 	c8	 n — 1
Описание слайда:
Insertion_Sort(A) время количество раз Insertion_Sort(A) время количество раз 1 for j  2 to length[A] c1 n 2 do key  A[j] c2 n — 1 3 - Вставка элемента A[j] в отсортированную последовательность A[1,...,j — 1]. 0 n — 1 4 i  j — 1 с4 n — 1 5 while i > 0 and A[i] > key c5 6 do A[i + 1]  A[i] c6 7 i  i — 1 c7 8 А[i +1]  key c8 n — 1

Слайд 41


Об алгоритмах на примерах, слайд №41
Описание слайда:

Слайд 42


Об алгоритмах на примерах, слайд №42
Описание слайда:

Слайд 43





ПОРЯДОК роста функции
Огрубляем оценку роста  an2  +bn +c , отбрасывая члены меньших порядков и опуская коэффициент при n2 (это константа) получаем порядок  роста n2 . Алгоритм с меньшим порядком роста предпочтительнее, так как при росте n такой полином растет медленнее.
Описание слайда:
ПОРЯДОК роста функции Огрубляем оценку роста an2 +bn +c , отбрасывая члены меньших порядков и опуская коэффициент при n2 (это константа) получаем порядок роста n2 . Алгоритм с меньшим порядком роста предпочтительнее, так как при росте n такой полином растет медленнее.

Слайд 44


Об алгоритмах на примерах, слайд №44
Описание слайда:

Слайд 45





Построение алгоритма методом разделяй и властвуй
Рекурсивные алгоритмы. Задача разбивается на подзадачи. Затем эти задачи меньшего размера решаются рекурсивным вызовом разрабатываемой процедуры и так пока размер массива дойдет до единицы, а это уже упорядоченный массив.
     Соединение двух упорядоченных массивов в один делается  процедурой MERGE объединения двух упорядоченных массивов А[p..q]  и А[q..n].
Описание слайда:
Построение алгоритма методом разделяй и властвуй Рекурсивные алгоритмы. Задача разбивается на подзадачи. Затем эти задачи меньшего размера решаются рекурсивным вызовом разрабатываемой процедуры и так пока размер массива дойдет до единицы, а это уже упорядоченный массив. Соединение двух упорядоченных массивов в один делается процедурой MERGE объединения двух упорядоченных массивов А[p..q] и А[q..n].

Слайд 46





Динамическое программирование
Динамическое программирование  — способ решения сложных задач путём разбиения их на более простые подзадачи, сложность которых меньше исходной
Чтобы решить поставленную задачу, требуется решить подзадачи, после чего объединить решения подзадач в одно общее решение. Часто многие из этих подзадач одинаковы. Подход динамического программирования состоит в том, чтобы решить каждую подзадачу только один раз, сократив тем самым количество вычислений.
Описание слайда:
Динамическое программирование Динамическое программирование  — способ решения сложных задач путём разбиения их на более простые подзадачи, сложность которых меньше исходной Чтобы решить поставленную задачу, требуется решить подзадачи, после чего объединить решения подзадач в одно общее решение. Часто многие из этих подзадач одинаковы. Подход динамического программирования состоит в том, чтобы решить каждую подзадачу только один раз, сократив тем самым количество вычислений.

Слайд 47






В общем случае задача решается в три шага
- Разбиение задачи на подзадачи меньшего размера.
- Нахождение оптимального решения подзадач рекурсивно, проделывая такой же трехшаговый алгоритм
- Использование полученного решения подзадач для конструирования решения исходной задачи
Описание слайда:
В общем случае задача решается в три шага - Разбиение задачи на подзадачи меньшего размера. - Нахождение оптимального решения подзадач рекурсивно, проделывая такой же трехшаговый алгоритм - Использование полученного решения подзадач для конструирования решения исходной задачи

Слайд 48





Пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц. Пусть имеется последовательность (цепочка), состоящая из n матриц, и нужно вычислить их произведение 
Пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц. Пусть имеется последовательность (цепочка), состоящая из n матриц, и нужно вычислить их произведение 
А1А2 … Аn.  Это произведение можно вычислить, используя в качестве подпрограммы стандартный алгоритм умножения пар матриц. Однако сначала нужно расставить скобки, чтобы устранить все неоднозначности в порядке перемножения (зафиксировать порядок перемножения).
Описание слайда:
Пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц. Пусть имеется последовательность (цепочка), состоящая из n матриц, и нужно вычислить их произведение Пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц. Пусть имеется последовательность (цепочка), состоящая из n матриц, и нужно вычислить их произведение А1А2 … Аn. Это произведение можно вычислить, используя в качестве подпрограммы стандартный алгоритм умножения пар матриц. Однако сначала нужно расставить скобки, чтобы устранить все неоднозначности в порядке перемножения (зафиксировать порядок перемножения).

Слайд 49





(А1(А2(А3А4))) , 
(А1(А2(А3А4))) , 
(А1((А2А3) А4)) , 
((А1(А2А3)) А4) , 
(((А1А2) А3) А4) . 
то способ вычисления их произведения можно полностью определить с помощью скобок разными способами: 
	(А1(А2(А3А4)))  
	(А1((А2А3)А4)) , 
	((А1(А2А3))А4) , 
	(((А1А2)А3)АА) . 
Пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц. Пусть имеется последовательность (цепочка), состоящая из n матриц, и нужно вычислить их произведение 
А1А2 … Аn.  Это произведение можно вычислить, используя в качестве подпрограммы стандартный алгоритм умножения пар матриц. Однако сначала нужно расставить скобки, чтобы устранить все неоднозначности в порядке перемножения (зафиксировать порядок перемножения).
Описание слайда:
(А1(А2(А3А4))) , (А1(А2(А3А4))) , (А1((А2А3) А4)) , ((А1(А2А3)) А4) , (((А1А2) А3) А4) . то способ вычисления их произведения можно полностью определить с помощью скобок разными способами: (А1(А2(А3А4))) (А1((А2А3)А4)) , ((А1(А2А3))А4) , (((А1А2)А3)АА) . Пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц. Пусть имеется последовательность (цепочка), состоящая из n матриц, и нужно вычислить их произведение А1А2 … Аn. Это произведение можно вычислить, используя в качестве подпрограммы стандартный алгоритм умножения пар матриц. Однако сначала нужно расставить скобки, чтобы устранить все неоднозначности в порядке перемножения (зафиксировать порядок перемножения).

Слайд 50





Матричное умножение обладает свойством ас-социативности, поэтому результат не зависит от расстановки скобок.
Матричное умножение обладает свойством ас-социативности, поэтому результат не зависит от расстановки скобок.
 От того как расставлены скобки при умножении последовательности матриц, может сильно зависеть время, затраченное на вычисление произведения.  Матрицы А и В можно перемножать, только если они совместимы: количество столбцов матрицы А должно совпадать с количеством строк матрицы В. Если А — это матрица размера р × q, а В - матрица размера q×r, то в результате их перемножения получится матрица С размера р × r.
Описание слайда:
Матричное умножение обладает свойством ас-социативности, поэтому результат не зависит от расстановки скобок. Матричное умножение обладает свойством ас-социативности, поэтому результат не зависит от расстановки скобок. От того как расставлены скобки при умножении последовательности матриц, может сильно зависеть время, затраченное на вычисление произведения. Матрицы А и В можно перемножать, только если они совместимы: количество столбцов матрицы А должно совпадать с количеством строк матрицы В. Если А — это матрица размера р × q, а В - матрица размера q×r, то в результате их перемножения получится матрица С размера р × r.

Слайд 51





Время вычисления матрицы С преимущественно определяется количеством произведений скаляров. Это количество равно pqr. Это и есть стоимость умножения матриц 
Время вычисления матрицы С преимущественно определяется количеством произведений скаляров. Это количество равно pqr. Это и есть стоимость умножения матриц
Описание слайда:
Время вычисления матрицы С преимущественно определяется количеством произведений скаляров. Это количество равно pqr. Это и есть стоимость умножения матриц Время вычисления матрицы С преимущественно определяется количеством произведений скаляров. Это количество равно pqr. Это и есть стоимость умножения матриц

Слайд 52





ПРИМЕР.
ПРИМЕР.
Перемножаются три матрицы (А1, A2, A3). Предположим, что размеры этих матриц равны 
10 х 100, 100 х 5 и 5 х 50 соответственно. Перемножая матрицы в порядке, заданном выражением ((А1 A2) A3), необходимо выполнить 10 *100 *5 = 5 000 скалярных умножений, чтобы найти результат произведения А1, A2 (при этом получится матрица размером 10 х 5), а затем — еще 10 * 5 * 50 = 2 500 скалярных умножений, чтобы умножить эту матрицу на матрицу А3. Всего получается 7 500 скалярных умножений.
Описание слайда:
ПРИМЕР. ПРИМЕР. Перемножаются три матрицы (А1, A2, A3). Предположим, что размеры этих матриц равны 10 х 100, 100 х 5 и 5 х 50 соответственно. Перемножая матрицы в порядке, заданном выражением ((А1 A2) A3), необходимо выполнить 10 *100 *5 = 5 000 скалярных умножений, чтобы найти результат произведения А1, A2 (при этом получится матрица размером 10 х 5), а затем — еще 10 * 5 * 50 = 2 500 скалярных умножений, чтобы умножить эту матрицу на матрицу А3. Всего получается 7 500 скалярных умножений.

Слайд 53





Если вычислять результат в порядке, заданном выражением (А1 (A2 A3)), то сначала понадобится выполнить 100 *5 *50 = 25 000 скалярных умножений (при этом будет найдена матрица 
Если вычислять результат в порядке, заданном выражением (А1 (A2 A3)), то сначала понадобится выполнить 100 *5 *50 = 25 000 скалярных умножений (при этом будет найдена матрица 
A2 A3 размером 100 х 50),  а затем еще 10 *100*50 = 50 000 скалярных умножений, чтобы умножить А1 на эту матрицу. Всего получается 75 000 скалярных умножений. Таким образом, для вычисления результата первым способом понадобится в 10 раз меньше времени.  Следует полностью определить порядок умножений в матричном произведении (А1 A2 …, Аn), при котором количество скалярных умножений сведется к минимуму.
Описание слайда:
Если вычислять результат в порядке, заданном выражением (А1 (A2 A3)), то сначала понадобится выполнить 100 *5 *50 = 25 000 скалярных умножений (при этом будет найдена матрица Если вычислять результат в порядке, заданном выражением (А1 (A2 A3)), то сначала понадобится выполнить 100 *5 *50 = 25 000 скалярных умножений (при этом будет найдена матрица A2 A3 размером 100 х 50), а затем еще 10 *100*50 = 50 000 скалярных умножений, чтобы умножить А1 на эту матрицу. Всего получается 75 000 скалярных умножений. Таким образом, для вычисления результата первым способом понадобится в 10 раз меньше времени. Следует полностью определить порядок умножений в матричном произведении (А1 A2 …, Аn), при котором количество скалярных умножений сведется к минимуму.

Слайд 54





Первый этап применения парадигмы динамического программирования — найти оптимальную вспомогательную подструктуру, а затем с ее помощью сконструировать оптимальное решение задачи по оптимальным решениям вспомогательных задач. В рассматриваемой задаче этот этап можно осуществить следующим образом. 
Первый этап применения парадигмы динамического программирования — найти оптимальную вспомогательную подструктуру, а затем с ее помощью сконструировать оптимальное решение задачи по оптимальным решениям вспомогательных задач. В рассматриваемой задаче этот этап можно осуществить следующим образом.
Описание слайда:
Первый этап применения парадигмы динамического программирования — найти оптимальную вспомогательную подструктуру, а затем с ее помощью сконструировать оптимальное решение задачи по оптимальным решениям вспомогательных задач. В рассматриваемой задаче этот этап можно осуществить следующим образом. Первый этап применения парадигмы динамического программирования — найти оптимальную вспомогательную подструктуру, а затем с ее помощью сконструировать оптимальное решение задачи по оптимальным решениям вспомогательных задач. В рассматриваемой задаче этот этап можно осуществить следующим образом.

Слайд 55





Обозначим для удобства результат перемножения матриц Ai A(i+1) … Aj через Ai.j, где i≤j. Заметим, что если задача нетривиальна, т.е. i < j, то любой способ расстановки скобок в произведении Ai  … Aj разбивает это произведение на произведение матриц  Ai..k и A(k+i).j , где к — целое, удовлетворяющее условию i≤ к < j. Таким образом, при некотором k сначала вычисляются матрицы, а затем они умножаются друг на друга, в результате чего получается произведение Ai..j. Стоимость, соответствующая этому способу расстановки скобок, равна сумме стоимости вычисления матрицы Ai,k , стоимости вычисления матрицы Ak+i..j   и стоимости вычисления их произведения.
Обозначим для удобства результат перемножения матриц Ai A(i+1) … Aj через Ai.j, где i≤j. Заметим, что если задача нетривиальна, т.е. i < j, то любой способ расстановки скобок в произведении Ai  … Aj разбивает это произведение на произведение матриц  Ai..k и A(k+i).j , где к — целое, удовлетворяющее условию i≤ к < j. Таким образом, при некотором k сначала вычисляются матрицы, а затем они умножаются друг на друга, в результате чего получается произведение Ai..j. Стоимость, соответствующая этому способу расстановки скобок, равна сумме стоимости вычисления матрицы Ai,k , стоимости вычисления матрицы Ak+i..j   и стоимости вычисления их произведения.
рассматриваемой задаче этот этап можно осуществить следующим образом.
Описание слайда:
Обозначим для удобства результат перемножения матриц Ai A(i+1) … Aj через Ai.j, где i≤j. Заметим, что если задача нетривиальна, т.е. i < j, то любой способ расстановки скобок в произведении Ai … Aj разбивает это произведение на произведение матриц Ai..k и A(k+i).j , где к — целое, удовлетворяющее условию i≤ к < j. Таким образом, при некотором k сначала вычисляются матрицы, а затем они умножаются друг на друга, в результате чего получается произведение Ai..j. Стоимость, соответствующая этому способу расстановки скобок, равна сумме стоимости вычисления матрицы Ai,k , стоимости вычисления матрицы Ak+i..j и стоимости вычисления их произведения. Обозначим для удобства результат перемножения матриц Ai A(i+1) … Aj через Ai.j, где i≤j. Заметим, что если задача нетривиальна, т.е. i < j, то любой способ расстановки скобок в произведении Ai … Aj разбивает это произведение на произведение матриц Ai..k и A(k+i).j , где к — целое, удовлетворяющее условию i≤ к < j. Таким образом, при некотором k сначала вычисляются матрицы, а затем они умножаются друг на друга, в результате чего получается произведение Ai..j. Стоимость, соответствующая этому способу расстановки скобок, равна сумме стоимости вычисления матрицы Ai,k , стоимости вычисления матрицы Ak+i..j и стоимости вычисления их произведения. рассматриваемой задаче этот этап можно осуществить следующим образом.

Слайд 56





Предположим, что в результате оптимальной расстановки скобок последовательность Ai   …  Aj  разбивается на подпоследовательности Ai,k , и  Ak+i..j   Тогда расстановка скобок в "префиксной" подпоследовательности  Ai,k тоже должна быть оптимальной. Иначе, если бы существовал более экономный способ расстановки скобок в последовательности Ai,k, то его применение позволило бы перемножить матрицы Ai   … Aj  еще эффективнее, что противоречит предположению об оптимальности первоначальной расстановки скобок. Аналогично можно прийти к выводу, что расстановка скобок в подпоследовательности матриц A(k+i).j, возникающей в результате оптимальной расстановки скобок в последовательности A(k+i).j, также должна быть оптимальной.
Предположим, что в результате оптимальной расстановки скобок последовательность Ai   …  Aj  разбивается на подпоследовательности Ai,k , и  Ak+i..j   Тогда расстановка скобок в "префиксной" подпоследовательности  Ai,k тоже должна быть оптимальной. Иначе, если бы существовал более экономный способ расстановки скобок в последовательности Ai,k, то его применение позволило бы перемножить матрицы Ai   … Aj  еще эффективнее, что противоречит предположению об оптимальности первоначальной расстановки скобок. Аналогично можно прийти к выводу, что расстановка скобок в подпоследовательности матриц A(k+i).j, возникающей в результате оптимальной расстановки скобок в последовательности A(k+i).j, также должна быть оптимальной.
Описание слайда:
Предположим, что в результате оптимальной расстановки скобок последовательность Ai … Aj разбивается на подпоследовательности Ai,k , и Ak+i..j Тогда расстановка скобок в "префиксной" подпоследовательности Ai,k тоже должна быть оптимальной. Иначе, если бы существовал более экономный способ расстановки скобок в последовательности Ai,k, то его применение позволило бы перемножить матрицы Ai … Aj еще эффективнее, что противоречит предположению об оптимальности первоначальной расстановки скобок. Аналогично можно прийти к выводу, что расстановка скобок в подпоследовательности матриц A(k+i).j, возникающей в результате оптимальной расстановки скобок в последовательности A(k+i).j, также должна быть оптимальной. Предположим, что в результате оптимальной расстановки скобок последовательность Ai … Aj разбивается на подпоследовательности Ai,k , и Ak+i..j Тогда расстановка скобок в "префиксной" подпоследовательности Ai,k тоже должна быть оптимальной. Иначе, если бы существовал более экономный способ расстановки скобок в последовательности Ai,k, то его применение позволило бы перемножить матрицы Ai … Aj еще эффективнее, что противоречит предположению об оптимальности первоначальной расстановки скобок. Аналогично можно прийти к выводу, что расстановка скобок в подпоследовательности матриц A(k+i).j, возникающей в результате оптимальной расстановки скобок в последовательности A(k+i).j, также должна быть оптимальной.

Слайд 57





Для решения любой нетривиальной задачи об оптимальном произведении последовательности матриц всю последовательность необходимо разбить на подпоследовательности и при этом каждое оптимальное решение содержит в себе оптимальные решения подзадач. Другими словами, решение полной задачи об оптимальном перемножении последовательности матриц можно построить путем разбиения этой задачи на две подзадачи — оптимальную расстановку скобок в подпоследовательно- стях  AiAi+1... Ak  и Ak+iAk+2 • • -Aj. После этого находятся оптимальные решения подзадач, из которых затем составляется оптимальное решение полной задачи. Необходимо убедиться, что при поиске способа перемножения матриц учитываются все возможные разбиения — только в этом случае можно быть уверенным, что найденное решение будет глобально оптимальным.
Для решения любой нетривиальной задачи об оптимальном произведении последовательности матриц всю последовательность необходимо разбить на подпоследовательности и при этом каждое оптимальное решение содержит в себе оптимальные решения подзадач. Другими словами, решение полной задачи об оптимальном перемножении последовательности матриц можно построить путем разбиения этой задачи на две подзадачи — оптимальную расстановку скобок в подпоследовательно- стях  AiAi+1... Ak  и Ak+iAk+2 • • -Aj. После этого находятся оптимальные решения подзадач, из которых затем составляется оптимальное решение полной задачи. Необходимо убедиться, что при поиске способа перемножения матриц учитываются все возможные разбиения — только в этом случае можно быть уверенным, что найденное решение будет глобально оптимальным.
Описание слайда:
Для решения любой нетривиальной задачи об оптимальном произведении последовательности матриц всю последовательность необходимо разбить на подпоследовательности и при этом каждое оптимальное решение содержит в себе оптимальные решения подзадач. Другими словами, решение полной задачи об оптимальном перемножении последовательности матриц можно построить путем разбиения этой задачи на две подзадачи — оптимальную расстановку скобок в подпоследовательно- стях AiAi+1... Ak и Ak+iAk+2 • • -Aj. После этого находятся оптимальные решения подзадач, из которых затем составляется оптимальное решение полной задачи. Необходимо убедиться, что при поиске способа перемножения матриц учитываются все возможные разбиения — только в этом случае можно быть уверенным, что найденное решение будет глобально оптимальным. Для решения любой нетривиальной задачи об оптимальном произведении последовательности матриц всю последовательность необходимо разбить на подпоследовательности и при этом каждое оптимальное решение содержит в себе оптимальные решения подзадач. Другими словами, решение полной задачи об оптимальном перемножении последовательности матриц можно построить путем разбиения этой задачи на две подзадачи — оптимальную расстановку скобок в подпоследовательно- стях AiAi+1... Ak и Ak+iAk+2 • • -Aj. После этого находятся оптимальные решения подзадач, из которых затем составляется оптимальное решение полной задачи. Необходимо убедиться, что при поиске способа перемножения матриц учитываются все возможные разбиения — только в этом случае можно быть уверенным, что найденное решение будет глобально оптимальным.

Слайд 58





Организация больших массивов
Алгоритмы размещения и поиска данных. Определить алгоритмы вычисления функций РАЗМЕСТИТЬ, НАЙТИ и УДАЛИТЬ элемент.
Массив помещается в оперативной памяти .
Прямая адресация, как в массиве программы: Ключ элемента – целочисленный номер.
Лексикографическое упорядочивание. Ключ элемента – текст имени элемента
Описание слайда:
Организация больших массивов Алгоритмы размещения и поиска данных. Определить алгоритмы вычисления функций РАЗМЕСТИТЬ, НАЙТИ и УДАЛИТЬ элемент. Массив помещается в оперативной памяти . Прямая адресация, как в массиве программы: Ключ элемента – целочисленный номер. Лексикографическое упорядочивание. Ключ элемента – текст имени элемента

Слайд 59





Hash-таблицы
Массив большой и, например, не помещается весь в оперативной памяти, но в каждый момент времени обрабатывается ограниченное количество элементов. В этом случае используются hash- функции.
Описание слайда:
Hash-таблицы Массив большой и, например, не помещается весь в оперативной памяти, но в каждый момент времени обрабатывается ограниченное количество элементов. В этом случае используются hash- функции.

Слайд 60





Какой должна быть хорошая hash-функция?
Описание слайда:
Какой должна быть хорошая hash-функция?

Слайд 61


Об алгоритмах на примерах, слайд №61
Описание слайда:

Слайд 62


Об алгоритмах на примерах, слайд №62
Описание слайда:

Слайд 63


Об алгоритмах на примерах, слайд №63
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию