SlideShare a Scribd company logo
Хороший, поганий, повільний
Види алгоритмів. Поняття складності алгоритму
Основи програмування мовою 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
 
Первісна
ПервіснаПервісна
Визначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний змістВизначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний зміст
Formula.co.ua
 
11 логарифми
11 логарифми11 логарифми
11 логарифми
daniil chilochi
 
квадратична функція 9 клас
квадратична функція 9 класквадратична функція 9 клас
квадратична функція 9 класvalia55
 
практ 1 копия
практ 1   копияпракт 1   копия
практ 1 копия
cit-cit
 
Простейшие преобразования графиков функций
Простейшие преобразования графиков функцийПростейшие преобразования графиков функций
Простейшие преобразования графиков функций
Илья Сыч
 
Перетворення графіків
Перетворення графіківПеретворення графіків
Перетворення графіків
Darina Shama
 
Квадратична функція
Квадратична функціяКвадратична функція
Квадратична функція
natasha29091997
 
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Lesia Sobolevska
 
Функція
ФункціяФункція
найпростіші перетворення графіків функцій
найпростіші перетворення графіків функційнайпростіші перетворення графіків функцій
найпростіші перетворення графіків функційFr3dd0
 
Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції NataliaGrychko
 
График уравнения с двумя переменным
График уравнения с двумя переменнымГрафик уравнения с двумя переменным
График уравнения с двумя переменным
Илья Сыч
 
Графік функції франгмент
Графік функції франгментГрафік функції франгмент
Графік функції франгмент
AnnaTimohovich
 

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

Мат_прогр_СП.ppt
Мат_прогр_СП.pptМат_прогр_СП.ppt
Мат_прогр_СП.ppt
ssuser0e2f2a
 
3 клас урок 30
3 клас урок 303 клас урок 30
3 клас урок 30
Оксана Кикоть
 
завдання контрольної № 2 по темах 8 20
завдання контрольної № 2 по темах 8 20завдання контрольної № 2 по темах 8 20
завдання контрольної № 2 по темах 8 20
cit-cit
 
завдання контрольної №_2_по_темах_8-20
завдання контрольної №_2_по_темах_8-20завдання контрольної №_2_по_темах_8-20
завдання контрольної №_2_по_темах_8-20
cit-cit
 
Algoritm
AlgoritmAlgoritm
рацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiярацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiя
Andy Levkovich
 
мпр т 9
мпр т 9мпр т 9
мпр т 9Ivan
 
Lec (5) інегрування раціональних функцій
Lec (5) інегрування раціональних функційLec (5) інегрування раціональних функцій
Lec (5) інегрування раціональних функцій
Roman Yukhym
 
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
PavloTsiura
 

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

Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
olaola5673
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
Наказ про зарахування 1 класу 2024 2025.pdf
Наказ про зарахування 1 класу 2024 2025.pdfНаказ про зарахування 1 класу 2024 2025.pdf
Наказ про зарахування 1 класу 2024 2025.pdf
Ostap Vuschna
 
Практика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у ПольщіПрактика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у Польщі
tetiana1958
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
olaola5673
 
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptxПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ssuserd1824d
 
Portfolio2024 .pdf
Portfolio2024                       .pdfPortfolio2024                       .pdf
Portfolio2024 .pdf
home
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 
звіт 2023-2024 32024 32024 32024 32024 3.pptx
звіт 2023-2024 32024 32024 32024 32024 3.pptxзвіт 2023-2024 32024 32024 32024 32024 3.pptx
звіт 2023-2024 32024 32024 32024 32024 3.pptx
home
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
педрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptxпедрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptx
home
 
Управлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptxУправлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptx
ssuserce4e97
 
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptxzvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
sadochok
 

Recently uploaded (14)

Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
Наказ про зарахування 1 класу 2024 2025.pdf
Наказ про зарахування 1 класу 2024 2025.pdfНаказ про зарахування 1 класу 2024 2025.pdf
Наказ про зарахування 1 класу 2024 2025.pdf
 
Практика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у ПольщіПрактика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у Польщі
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
 
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptxПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
 
Portfolio2024 .pdf
Portfolio2024                       .pdfPortfolio2024                       .pdf
Portfolio2024 .pdf
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 
звіт 2023-2024 32024 32024 32024 32024 3.pptx
звіт 2023-2024 32024 32024 32024 32024 3.pptxзвіт 2023-2024 32024 32024 32024 32024 3.pptx
звіт 2023-2024 32024 32024 32024 32024 3.pptx
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
педрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptxпедрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptx
 
Управлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptxУправлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptx
 
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptxzvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
 

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