Справочник от Автор24
Поделись лекцией за скидку на Автор24

Основы анализа алгоритмов

  • 👀 446 просмотров
  • 📌 420 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Основы анализа алгоритмов» pdf
Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Начнём приблизительно в 11:25-11:30. . 1 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Алгоритм является оптимальным, если не существует алгоритма, работающего быстрее. Пример, сортировка списка из трёх чисел. 1, 2, 4 2, 4, 1 1<2 да .1<4 да 2<4 да 2<4 да 2<1 нет 4, 2, 1 4, 2, 1 3 шага 2 шага 𝑥1 ≤ 𝑥2 𝑥1 ≤ 𝑥3 𝑥1 ≤ 𝑥3 𝑥2 ≤ 𝑥3 𝑥3 , 𝑥1 , 𝑥2 𝑥2 , 𝑥1 , 𝑥3 𝑥1 , 𝑥2 , 𝑥3 𝑥1 , 𝑥3 , 𝑥2 𝑥2 ≤ 𝑥3 𝑥2 , 𝑥3 , 𝑥1 𝑥3 , 𝑥2 , 𝑥1 2 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов N чисел → N! Перестановок (классов входных данных) Каждый уровень отличается от предыдущего в 2 раза Число узлов на уровне M равно 2М−1 Число уровней находим из 𝑁! ≤ 2𝑀−1 log 2 (𝑁!) ≤ 𝑀 − 1 тогда log 2 (𝑁!) + 1 ≤ 𝑀 log 2 𝑁! = log 2 𝑁 ∙ 𝑁 − 1 ∙ ⋯ ∙ 1 = 2 = log 2 𝑁 + log 2 𝑁 − 1 + ⋯ + log 2 1 ≈ 𝑁log 2 𝑁 M= 𝑁log 2 𝑁+1=5,7≈5 𝟑 𝟏 𝟒 . 4 𝟐 3 N!=3!=1*2*3=6 1 5 𝟓 𝟔 3 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Рекуррентные соотношения Формы записи: 4, 𝑇 𝑛 = 4𝑇 если 𝑛 ≤ 4 𝑛 − 1, если 𝑛 > 4 2 или 𝑛 𝑇 𝑛 = 4𝑇 −1 2 𝑇 𝑇 𝑇 𝑇 4 3 2 1 =4 =4 =4 =4 4 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Рекуррентные соотношения 𝑇 𝑛 = 4𝑇 𝑛 2 𝑛 𝑇 4 𝑛 𝑇 8 𝑛 𝑇 16 𝑇 𝑛 2 − 1; 𝑇 4 = 4; 𝑛 −1 4 𝑛 = 4𝑇 −1 8 𝑛 = 4𝑇 −1 16 𝑛 = 4𝑇 −1 32 = 4𝑇 𝑇 3 =4; 𝑇 2 =4; 𝑇 1 =4 𝑛 𝑛 𝑛 − 1 = 4 4𝑇 − 1 − 1 = 16𝑇 −5= 2 4 4 𝑛 𝑛 = 16 4𝑇 − 1 − 5 = 64𝑇 − 13 = ⋯ = 8 8 𝑇 𝑛 = 4𝑇 𝑇 𝑛 = 4𝑚−1 ∙ 4𝑇 𝑛 −( 2 4𝑚−3 ) 5 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Рекуррентные соотношения 𝑇 𝑛 = 4𝑇 𝑛 2 𝑇 𝑛 = 4𝑚−1 ∙ 4𝑇 n=8: 𝑇 8 = 4𝑇 n/2=4→n=8 𝑇 4 = 4; − 1; 8 2 𝑛 2𝑚 𝑇 3 =4; 𝑇 2 =4; 𝑇 1 =4 − ( 4𝑚−3 ) − 1 = 4𝑇 4 − 1 = 4 ∗ 4 − 1 = 15 9 n=9: 𝑇 9 = 4𝑇 − 1 = 4𝑇 4,5 − 1 = 4 ∗ 4 ∗ 4 − 1 − 1 = 43 − 41 − 1 2 16 n=16: 𝑇 16 = 4𝑇 − 1 = 4𝑇 8 − 1 = 4 ∗ 4 ∗ 4 − 1 − 1 = 43 − 41 − 1 2 17 n=17: 𝑇 17 = 4𝑇 − 1 = 4𝑇 8,5 − 1 = 4 ∗ 4 ∗ 𝑇 4,25 − 1 − 1 2 = 4 ∗ 4 ∗ 4 ∗ 4 − 1 − 1 − 1 = 44 − 42 − 41 − 1 6 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Рекуррентные соотношения 𝑇 𝑛 = 4𝑇 𝑛 2 𝑇 𝑛 = 4𝑚−1 ∙ 4𝑇 𝑇 4 =𝑇 𝑇 4 = 4; − 1; 𝑛 2𝑚 𝑛 2log2(𝑛−3) 𝑇 𝑛 = 4log2 𝑛−3 −1 𝑇 9 = 4log2 6 𝑇 17 = 4log2 𝑇 2 =4; 𝑇 1 =4 − ( 4𝑚−3 ) 4 =𝑇 2log2(4−3) ∙ 4𝑇 4 − ( ∙𝑇 4 −( 14 𝑇 3 =4; =𝑇 2log2(1) =𝑇 log2 𝑛−3 −1 𝑖 4 )=4log2 𝑛−3 𝑖=0 log2 6 −1 𝑖 4 )=42 𝑖=0 ∙𝑇 4 −( 4 ∙4−( log2 14 −1 𝑖 3 4 )=4 𝑖=0 4 20 ∙𝑇 4 −( 2 −1 𝑖 3 𝑖=0 4 )=4 ∙4−( log2 𝑛−3 −1 𝑖 4) 𝑖=0 −1−4 3 −1 𝑖 3 𝑖=0 4 )=4 − 1 − 4 − 42 7 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Рекуррентные соотношения 𝑇 𝑛 = 4𝑇 𝑛 2 − 1; 𝑇 4 = 4; 𝑇 3 =4; 𝑇 2 =4; 𝑇 1 =4 Подставим начальные условия и приведем к замкнутому виду 𝑇 𝑛 = 4log2 𝑛−3 𝑇 𝑛 = 4log2 ∙𝑇 4 −( 𝑛−3 +1 −( log2 𝑛−3 −1 𝑖 4) 𝑖=0 log2 𝑛−3 −1 𝑖 4) 𝑖=0 При желании можно дальше упростить это выражение путем разложений в ряд и эквивалентных преобразований. 8 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Последовательный поиск Алгоритм последовательного поиска последовательно просматривает по одному элементу списка, начиная с первого, до тех пор, пока не найдет целевой элемент. 1 𝐴 𝑁 = 𝑁 𝑁 𝑖=1 1 𝑁 𝑁+1 𝑁+1 𝑖= ∙ = 𝑁 2 2 1 𝐴 𝑁 = ( 𝑁+1 𝑁 𝑖=1 𝑁+2 𝑖 + 𝑁) ≈ 2 У алгоритма последовательного поиска два наихудших случая. В первом случае целевой элемент стоит в списке последним. Во втором его вовсе нет в списке. 9 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Двоичный поиск При сравнении целевого значения со средним элементом отсортированного списка возможен один из трёх результатов: значения равны, целевое значение меньше элемента списка, либо целевое значение больше элемента списка. В первом, и наилучшем, случае поиск завершен. В остальных двух случаях можем отбросить половину списка. 𝐴 𝑁 ≈ log 2 𝑁 + 1 − 1 𝐴 𝑁 ≈ log 2 𝑁 + 1 − 1/2 Анализ алгоритма двоичного поиска выполняется через дерево решений (метод турниров). 10 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Вычисление значений многочленов вида: 𝑝 𝑥 = 𝑎𝑛 𝑥 𝑛 + 𝑎𝑛−1 𝑥 𝑛−1 + 𝑎𝑛−2 𝑥 𝑛−2 + ⋯ + 𝑎1 𝑥 1 + 𝑎0 В цикле for содержится два умножения, которые выполняются n-1 раз. Одно умножение выполняется перед циклом, поэтому общее число умножений равно 2n-2+1=2n-1. В цикле выполняется также одно сложение, и одно сложение выполняется перед циклом, поэтому общее число сложений равно n-1+1=n. Общее количество: 3n-1 11 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Вычисление по схеме Горнера для многочлена вида: 𝑝 𝑥 =((…((𝑎𝑛 𝑥 + 𝑎𝑛−1 )𝑥 + 𝑎𝑛−2 )𝑥 + ⋯ + 𝑎1 )𝑥 + 𝑎0 Цикл выполняется n раз, причем внутри цикла есть одно умножение и одно сложение. Поэтому вычисление по схеме Горнера требует n умножений и n сложений. Общее количество: 2n 12 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Результат можно улучшить, если обработать коэффициенты многочлена до начала работы алгоритма. Основная идея состоит в том, чтобы выразить многочлен через многочлены меньшей степени: 𝑝 𝑥 = 𝑥 𝑗 + 𝑏 𝑞 𝑥 + 𝑟 𝑥 , 𝑗 = 2𝑘−1 В обоих многочленах q и r будет вдвое меньше членов, чем в р. 13 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Пример Дано 𝑝 𝑥 = 𝑥 7 + 4𝑥 6 − 8𝑥 4 + 6𝑥 3 + 9𝑥 2 + 2𝑥 − 3 Сначала определим 𝑥 𝑗 + 𝑏 . Степень многочлена p равна 7, т. е. 23 − 1 = 8 − 1 = 7 → 𝑘 = 3 𝑗 = 2𝑘−1 = 23−1 = 22 = 4 Теперь выберем b по правилу 𝑏 = 𝑎𝑗−1 − 1 = 𝑎4−1 − 1 = 𝑎3 − 1 = 6 − 1 = 5 14 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Пример Найдём q и r из 𝑥 7 + 4𝑥 6 − 8𝑥 4 + 6𝑥 3 + 9𝑥 2 + 2𝑥 − 3 = 𝑥 4 + 5 𝑞 𝑥 + 𝑟(𝑥), то есть p 𝑥 = 𝑥 4 + 5 𝑥 3 + 4𝑥 2 + 0𝑥 1 + 8 + 𝑥 3 − 11𝑥 2 + 2𝑥 1 − 37 15 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Пример Аналогично делаем с q и r 𝑞 𝑥 = 𝑥 2 − 1 𝑥 + 4 + 𝑥 + 12 𝑟 𝑥 = 𝑥 2 + 1 𝑥 − 11 + (𝑥 − 26) В итоге получаем p 𝑥 = 𝑥4 + 5 𝑥 2 − 1 𝑥 + 4 + 𝑥 + 12 + 𝑥 2 + 1 𝑥 − 11 + (𝑥 − 26) 16 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Многочлены Число операций для многочлена степени 7 Число операций для многочлена степени N 17 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Умножение матриц Стандартный алгоритм умножения Алгоритм умножения по Винограду 18 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Умножение матриц Если посмотреть на результат умножения двух матриц, то видно, что каждый элемент в нем представляет собой скалярное произведение соответствующих строки и столбца исходных матриц. Можно заметить также, что такое умножение допускает предварительную обработку, позволяющую часть работы выполнить заранее. 𝑉 = (𝑣1 , 𝑣2 , 𝑣3 , 𝑣4 ) Исходные вектора 𝑊 = (𝑤1 , 𝑤2 , 𝑤3 , 𝑤4 ) 𝑉 ∙ 𝑊 = 𝑣1 𝑤1 +𝑣2 𝑤2 +𝑣3 𝑤3 +𝑣4 𝑤4 Перепишем выражение в другом виде 𝑉 ∙ 𝑊: 𝑉 ∙ 𝑊 =(𝑣1+𝑤2 )(𝑣2 +𝑤1 )+(𝑣3 +𝑤4 )(𝑣4 +𝑤3 )-𝑣1 𝑣2 -𝑣3 𝑣4 -𝑤1 𝑤2 -𝑤3 𝑤4 19 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Численные алгоритмы. Умножение матриц Алгоритм Штрассена работает с квадратными матрицами. Он настолько эффективен, что иногда разумно расширить матрицы до квадратных, и при этом он все равно дает выигрыш, превышающий расходы на введение дополнительных элементов. Формулы Штрассена: 𝑥1 = (𝐺1,1 +𝐺2,2 ) (𝐻1,1 +𝐻2,2 ) 𝑥2 = (𝐺2,1 +𝐺2,2 ) (𝐻1,1 ) 𝑥3 = (𝐺1,1 ) (𝐻1,1 −𝐻2,2 ) 𝑥4 = (𝐺1,1 ) (𝐻1,2 −𝐻2,2 ) 𝑥5 = (𝐺1,1 +𝐺2,2 ) (𝐻2,2 ) 𝑥6 = (𝐺2,1 −𝐺1,1 ) (𝐻1,1 +𝐻1,2 ) 𝑥7 = (𝐺2,1 −𝐺2,2 ) (𝐻2,1 +𝐻2,2 ) 𝑅1,1 = 𝑥1 + 𝑥4 −𝑥5 +𝑥7 𝑅2,1 = 𝑥2 + 𝑥4 𝑅1,2 = 𝑥3 + 𝑥5 𝑅2,2 = 𝑥1 + 𝑥3 − 𝑥2 +𝑥6 20 Математическая логика и теория алгоритмов Лекция № 12. Основы анализа алгоритмов Всем спасибо, все свободны) 21
«Основы анализа алгоритмов» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Смотреть все 938 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot