SlideShare a Scribd company logo
1 of 31
Хороший, поганий, повільний
Види алгоритмів. Поняття складності алгоритму
Основи програмування мовою Python, лекція 8 Київ, 2015
Будь-яка задача має як мінімум 2 розв'язки
x = a
a = b
b = x
a = a+b
b = a-b
a = a-b
простіше
швидше
менше зміннихбільше змінних
повільніше
Простибоженко Солоха Ореївна 14 350 12312312312312 1965
Квітка Ганна Казимирівна 7 500 23423423423423 1978
Всі прізвища є вигаданими, будь-яке співпадіння з реальними особами є випадковим :-)
Лютий Краснояр Даромирович 8 900 34343434343434 1985
Мамай Милорада Любомирівна 8 600 53454756342109 1982
Безіменко Любомир Добромудрович 6 800 78328943905402 1976
Розбийніс Златозар Радиборович 8 600 74836732902100 1970
Яховайко Дарислава Гудимирівна 10 200 11567567567211 1971
Варіант №1
1
1
1
1
x
Nx
M
1
~ 4*N*M + M операцій
Варіант №2
~ 4*N*log2N
M
~ 4*N*log2N + M операцій
4*N*M + M 4*N*log2N + M
4*N*M + M 4*N*log2N + M
4*N*M 4*N*log2N
M log2N
при M=6 ~ однакова кількість операцій
при M>6 2й варіант ефективніший
при M<6 1й варіант ефективніший
нехай N=64, тоді:
M
так як робиться 1 раз,
швидкість несуттєва
1
<N
1
Варіант №3
Обчислювальна складність —
поняття теорії алгоритмів,
що позначає функцію залежності
обсягу роботи алгоритму
від об'єму вхідних даних
f(n), де n – об'єм вхідних даних
3
прочитати дані поточного об'єкту
прочитати дані "найкращого" об'єкту
порівняти
1
0 або M
в середньому М/2 порівнянь, для кожного
необхідно ще прочитати поле, тобто 2*М/2
(якщо 1-ша умова хибна, сюди не потрапимо)
~4
0 або 1
(якщо умови хибні, сюди не потрапимо)
N повторів
f(n) = (4 + M)*N + 5
графік
y = (4+M)*N+5
3
прочитати дані поточного об'єкту
прочитати дані "найкращого" об'єкту
порівняти
1
0 або M
в середньому М/2 порівнянь, для кожного
необхідно ще прочитати поле, тобто 2*М/2
(якщо 1-ша умова хибна, сюди не потрапимо)
~4
0 або 1
(якщо умови хибні, сюди не потрапимо)
N повторів
f(n) = (4 + M)*N + 5f(n) = 3*N + 5 + M
графік y = 3*N+5+M
y = f(n) = (4+M)*N+5
значить: функція,
що залежить від n
f(n) O(n)ϵ
Асимптотична складність – поняття,
що позначає рівень зростання обсягу
роботи алгоритму з ростом об'єму
вхідних даних
– лінійна
значить: функція,
що залежить від n
y = f(n) = 5
f(n) O(k)ϵ – константна
f(n) O(log n)ϵ – логарифмічна
y = f(n) = log N
Бінарний пошук
20 21 23 30 38 44 55 64 66 77 79 82 90 97
55<64
знайти 64:
< < < < < < < < < < < < <
64 66 77 79 82 90 97
79>64
64 66 77
66>64
64SUCCESS!!!
f(n) = log2n
бінарний пошук на python
генерація випадкової відсортованої
послідовності
сам пошук
y
=
f(n) =
n
2
y=f(n)=n3
y=f(n)=n4
поліноміальні:
f(n) O(nϵ 2
)
f(n) ϵ O(n3
)
f(n) ϵ O(n4
)
...
2x4
+ 5x3
+ 3x2
+ 4x
бульбашкове сортування
(bubble sort)
найпростіший код,
але найменш ефективне
для сортування послідовності
вимагає порядку n2
операцій
"швидке" сортування
(quicksort)
для сортування послідовності
вимагає порядку n*log2n операцій
реалізоване як вбудована функція
в більшості мов програмування
y=f(n)=2n
y=f(n)=3n
y=f(n)=4n
експоненціальні:
f(n) O(2ϵ n
)
f(n) ϵ O(3n
)
f(n) ϵ O(4n
)
...
Підбор паролю
abcdefghijklmnopqrstuvwxyz
26n
комбінацій
?????? (n=6)
266
= 308 915 776
= 308 916 секунд
= 5 148.6 хвилин
= 85.8 годин
= 3.6 днів
2610
= 141 167 095 653 376
= 141 167 095 653 секунд
= 2 352 784 927.5 хвилин
= 39 213 082 годин
= 1 633 878 днів
= 4 000 років
?????????? (n=10)
Підбор паролю
abcdefghijklmnopqrstuvwxyz
26n
комбінацій
?????? (n=6)
266
= 308 915 776
= 308 916 секунд
= 5 148.6 хвилин
= 85.8 годин
= 3.6 днів
2610
= 141 167 095 653 376
= 141 167 095 653 секунд
= 2 352 784 927.5 хвилин
= 39 213 082 годин
= 1 633 878 днів
= 4 000 років
?????????? (n=10)
• перебір з використанням словників
• імітація форми входу
• використання особистих даних для
відновлення паролю
та ін.
Задача про 8 ферзів
8х8 = 64 поля
4 426 165 368 комбінацій
розстановки ферзів
Не намагайтеся повторити це вдома
Як мінімум,
з перебору
слід виключити
зовсім безглузді варіанти
див. example8_1.py
Перша оптимізація
оскільки кожний ферзь
"пробиває" до кінця
вертикалі та горизонталі,
їх можна одразу
розподілити по 1 на лінії
і перебирати
лише 1 координату
див. example8_3.py
Перебір з поверненням (backtracking)
якщо на будь-якому
етапі перебору хоч 1 фігура
займає погану позицію,
всі наступні варіанти,
які її включають, також
будуть завідомо погані
тому ефективніше
повернутися на крок назад
і переставити цю фігуру,
одразу відкинувши ціле
сімейство поганих варіантів
див. example8_4.py
Ще одна оптимізація
початкову позицію
перших 4 фігур взагалі
легко розрахувати вручну
(0, 1) або (0, 0)
(1, 3) (1, 2)
(2, 5) (2, 4)
(3, 7) (3, 6)
див. example8_5.py
Евристичний алгоритм (евристика) —
це алгоритм розв'язку задачі,
який не має точного обґрунтування,
але в більшості практичних випадків
забезпечує прийнятну відповідь
(за якістю та часом роботи).
Евристичний розв'язок
2
2
2
2
1
2
1
1
обрати фігуру, яка
"погано" стоїть,
знайти для неї найменш
потенційно небезпечне
поле та переставити
повторювати, поки
не знайдено розв'язок
див. example8_6.py
• чи є задача типовою?
• чи існує для неї точний відомий розв'язок?
• чи можна виявити закономірності і побудувати еврістичний алгоритм?
• спробуйте розв'язати задачу вручну
• невже її можна розв'язати лише перебором?
• точно???
• ну хоча б перебором із поверненням
• а розуміння, вироблене під час розв'язку вручну,
допоможе зменшити кількість варіантів
• f(n) O(k)ϵ — константна складність
• f(n) O(n)ϵ — лінійна складність
• f(n) O(nϵ k
) — поліноміальна складність
• f(n) O(nϵ 2
) — квадратична складність (частковий випадок)
• f(n) O(kϵ n
) — лінійна складність
• f(n) O(logϵ kn) — логарифмічна складність
Складність алгоритму можна приблизно оцінити за кількістю циклів
Для вибору алгоритму порівнюють вищу межу або середню складність
Дякую за увагу!
Над випуском працювали:
• Павлюченко Нікіта Сергійович
• Панібрат Марія Олексіївна
НТУУ "КПІ", 2015

More Related Content

What's hot

Границя і неперервність функції
Границя і неперервність функціїГраниця і неперервність функції
Границя і неперервність функції
Formula.co.ua
 
квадратична функція 9 клас
квадратична функція 9 класквадратична функція 9 клас
квадратична функція 9 клас
valia55
 
практ 1 копия
практ 1   копияпракт 1   копия
практ 1 копия
cit-cit
 
найпростіші перетворення графіків функцій
найпростіші перетворення графіків функційнайпростіші перетворення графіків функцій
найпростіші перетворення графіків функцій
Fr3dd0
 
Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції
NataliaGrychko
 

What's hot (19)

Границя і неперервність функції
Границя і неперервність функціїГраниця і неперервність функції
Границя і неперервність функції
 
Первісна
ПервіснаПервісна
Первісна
 
Urok 03 l
Urok 03 lUrok 03 l
Urok 03 l
 
Визначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний змістВизначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний зміст
 
11 логарифми
11 логарифми11 логарифми
11 логарифми
 
Функція
ФункціяФункція
Функція
 
квадратична функція 9 клас
квадратична функція 9 класквадратична функція 9 клас
квадратична функція 9 клас
 
практ 1 копия
практ 1   копияпракт 1   копия
практ 1 копия
 
Urok 13 z
Urok 13 zUrok 13 z
Urok 13 z
 
Простейшие преобразования графиков функций
Простейшие преобразования графиков функцийПростейшие преобразования графиков функций
Простейшие преобразования графиков функций
 
Перетворення графіків
Перетворення графіківПеретворення графіків
Перетворення графіків
 
Urok 01 l
Urok 01 lUrok 01 l
Urok 01 l
 
Квадратична функція
Квадратична функціяКвадратична функція
Квадратична функція
 
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.
 
Функція
ФункціяФункція
Функція
 
найпростіші перетворення графіків функцій
найпростіші перетворення графіків функційнайпростіші перетворення графіків функцій
найпростіші перетворення графіків функцій
 
Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції
 
График уравнения с двумя переменным
График уравнения с двумя переменнымГрафик уравнения с двумя переменным
График уравнения с двумя переменным
 
Графік функції франгмент
Графік функції франгментГрафік функції франгмент
Графік функції франгмент
 

Similar to Prometheus. Масовий онлайн курс "Основи програмування". Лекція 8 (9)

Мат_прогр_СП.ppt
Мат_прогр_СП.pptМат_прогр_СП.ppt
Мат_прогр_СП.ppt
 
3 клас урок 30
3 клас урок 303 клас урок 30
3 клас урок 30
 
завдання контрольної №_2_по_темах_8-20
завдання контрольної №_2_по_темах_8-20завдання контрольної №_2_по_темах_8-20
завдання контрольної №_2_по_темах_8-20
 
завдання контрольної № 2 по темах 8 20
завдання контрольної № 2 по темах 8 20завдання контрольної № 2 по темах 8 20
завдання контрольної № 2 по темах 8 20
 
Algoritm
AlgoritmAlgoritm
Algoritm
 
рацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiярацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiя
 
мпр т 9
мпр т 9мпр т 9
мпр т 9
 
Lec (5) інегрування раціональних функцій
Lec (5) інегрування раціональних функційLec (5) інегрування раціональних функцій
Lec (5) інегрування раціональних функцій
 
Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828
 

Recently uploaded

ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ssuser59e649
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
JurgenstiX
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptx
OlgaDidenko6
 

Recently uploaded (17)

Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
 
Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdf
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 клас
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptx
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентація
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішення
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповідання
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptx
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptx
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.ppt
 

Prometheus. Масовий онлайн курс "Основи програмування". Лекція 8

  • 1. Хороший, поганий, повільний Види алгоритмів. Поняття складності алгоритму Основи програмування мовою Python, лекція 8 Київ, 2015
  • 2. Будь-яка задача має як мінімум 2 розв'язки x = a a = b b = x a = a+b b = a-b a = a-b простіше швидше менше зміннихбільше змінних повільніше
  • 3. Простибоженко Солоха Ореївна 14 350 12312312312312 1965 Квітка Ганна Казимирівна 7 500 23423423423423 1978 Всі прізвища є вигаданими, будь-яке співпадіння з реальними особами є випадковим :-) Лютий Краснояр Даромирович 8 900 34343434343434 1985 Мамай Милорада Любомирівна 8 600 53454756342109 1982 Безіменко Любомир Добромудрович 6 800 78328943905402 1976 Розбийніс Златозар Радиборович 8 600 74836732902100 1970 Яховайко Дарислава Гудимирівна 10 200 11567567567211 1971
  • 5. Варіант №2 ~ 4*N*log2N M ~ 4*N*log2N + M операцій
  • 6. 4*N*M + M 4*N*log2N + M 4*N*M + M 4*N*log2N + M 4*N*M 4*N*log2N M log2N при M=6 ~ однакова кількість операцій при M>6 2й варіант ефективніший при M<6 1й варіант ефективніший нехай N=64, тоді:
  • 7. M так як робиться 1 раз, швидкість несуттєва 1 <N 1 Варіант №3
  • 8. Обчислювальна складність — поняття теорії алгоритмів, що позначає функцію залежності обсягу роботи алгоритму від об'єму вхідних даних f(n), де n – об'єм вхідних даних
  • 9. 3 прочитати дані поточного об'єкту прочитати дані "найкращого" об'єкту порівняти 1 0 або M в середньому М/2 порівнянь, для кожного необхідно ще прочитати поле, тобто 2*М/2 (якщо 1-ша умова хибна, сюди не потрапимо) ~4 0 або 1 (якщо умови хибні, сюди не потрапимо) N повторів f(n) = (4 + M)*N + 5 графік y = (4+M)*N+5
  • 10. 3 прочитати дані поточного об'єкту прочитати дані "найкращого" об'єкту порівняти 1 0 або M в середньому М/2 порівнянь, для кожного необхідно ще прочитати поле, тобто 2*М/2 (якщо 1-ша умова хибна, сюди не потрапимо) ~4 0 або 1 (якщо умови хибні, сюди не потрапимо) N повторів f(n) = (4 + M)*N + 5f(n) = 3*N + 5 + M графік y = 3*N+5+M
  • 11. y = f(n) = (4+M)*N+5 значить: функція, що залежить від n f(n) O(n)ϵ Асимптотична складність – поняття, що позначає рівень зростання обсягу роботи алгоритму з ростом об'єму вхідних даних – лінійна
  • 12. значить: функція, що залежить від n y = f(n) = 5 f(n) O(k)ϵ – константна
  • 13. f(n) O(log n)ϵ – логарифмічна y = f(n) = log N
  • 14. Бінарний пошук 20 21 23 30 38 44 55 64 66 77 79 82 90 97 55<64 знайти 64: < < < < < < < < < < < < < 64 66 77 79 82 90 97 79>64 64 66 77 66>64 64SUCCESS!!! f(n) = log2n
  • 15. бінарний пошук на python генерація випадкової відсортованої послідовності сам пошук
  • 16. y = f(n) = n 2 y=f(n)=n3 y=f(n)=n4 поліноміальні: f(n) O(nϵ 2 ) f(n) ϵ O(n3 ) f(n) ϵ O(n4 ) ... 2x4 + 5x3 + 3x2 + 4x
  • 17. бульбашкове сортування (bubble sort) найпростіший код, але найменш ефективне для сортування послідовності вимагає порядку n2 операцій
  • 18. "швидке" сортування (quicksort) для сортування послідовності вимагає порядку n*log2n операцій реалізоване як вбудована функція в більшості мов програмування
  • 20. Підбор паролю abcdefghijklmnopqrstuvwxyz 26n комбінацій ?????? (n=6) 266 = 308 915 776 = 308 916 секунд = 5 148.6 хвилин = 85.8 годин = 3.6 днів 2610 = 141 167 095 653 376 = 141 167 095 653 секунд = 2 352 784 927.5 хвилин = 39 213 082 годин = 1 633 878 днів = 4 000 років ?????????? (n=10)
  • 21. Підбор паролю abcdefghijklmnopqrstuvwxyz 26n комбінацій ?????? (n=6) 266 = 308 915 776 = 308 916 секунд = 5 148.6 хвилин = 85.8 годин = 3.6 днів 2610 = 141 167 095 653 376 = 141 167 095 653 секунд = 2 352 784 927.5 хвилин = 39 213 082 годин = 1 633 878 днів = 4 000 років ?????????? (n=10) • перебір з використанням словників • імітація форми входу • використання особистих даних для відновлення паролю та ін.
  • 22. Задача про 8 ферзів 8х8 = 64 поля 4 426 165 368 комбінацій розстановки ферзів
  • 23. Не намагайтеся повторити це вдома Як мінімум, з перебору слід виключити зовсім безглузді варіанти див. example8_1.py
  • 24. Перша оптимізація оскільки кожний ферзь "пробиває" до кінця вертикалі та горизонталі, їх можна одразу розподілити по 1 на лінії і перебирати лише 1 координату див. example8_3.py
  • 25. Перебір з поверненням (backtracking) якщо на будь-якому етапі перебору хоч 1 фігура займає погану позицію, всі наступні варіанти, які її включають, також будуть завідомо погані тому ефективніше повернутися на крок назад і переставити цю фігуру, одразу відкинувши ціле сімейство поганих варіантів див. example8_4.py
  • 26. Ще одна оптимізація початкову позицію перших 4 фігур взагалі легко розрахувати вручну (0, 1) або (0, 0) (1, 3) (1, 2) (2, 5) (2, 4) (3, 7) (3, 6) див. example8_5.py
  • 27. Евристичний алгоритм (евристика) — це алгоритм розв'язку задачі, який не має точного обґрунтування, але в більшості практичних випадків забезпечує прийнятну відповідь (за якістю та часом роботи).
  • 28. Евристичний розв'язок 2 2 2 2 1 2 1 1 обрати фігуру, яка "погано" стоїть, знайти для неї найменш потенційно небезпечне поле та переставити повторювати, поки не знайдено розв'язок див. example8_6.py
  • 29. • чи є задача типовою? • чи існує для неї точний відомий розв'язок? • чи можна виявити закономірності і побудувати еврістичний алгоритм? • спробуйте розв'язати задачу вручну • невже її можна розв'язати лише перебором? • точно??? • ну хоча б перебором із поверненням • а розуміння, вироблене під час розв'язку вручну, допоможе зменшити кількість варіантів
  • 30. • f(n) O(k)ϵ — константна складність • f(n) O(n)ϵ — лінійна складність • f(n) O(nϵ k ) — поліноміальна складність • f(n) O(nϵ 2 ) — квадратична складність (частковий випадок) • f(n) O(kϵ n ) — лінійна складність • f(n) O(logϵ kn) — логарифмічна складність Складність алгоритму можна приблизно оцінити за кількістю циклів Для вибору алгоритму порівнюють вищу межу або середню складність
  • 31. Дякую за увагу! Над випуском працювали: • Павлюченко Нікіта Сергійович • Панібрат Марія Олексіївна НТУУ "КПІ", 2015