ݺߣ

ݺߣShare 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 (19)

Границя і неперервність функції
Границя і неперервність функціїГраниця і неперервність функції
Границя і неперервність функції
Formula.co.ua
Визначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний змістВизначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний зміст
Formula.co.ua
квадратична функція 9 клас
квадратична функція 9 класквадратична функція 9 клас
квадратична функція 9 клас
valia55
практ 1 копия
практ 1   копияпракт 1   копия
практ 1 копия
cit-cit
Простейшие преобразования графиков функций
Простейшие преобразования графиков функцийПростейшие преобразования графиков функций
Простейшие преобразования графиков функций
Илья Сыч
Перетворення графіків
Перетворення графіківПеретворення графіків
Перетворення графіків
Darina Shama
Квадратична функція
Квадратична функціяКвадратична функція
Квадратична функція
natasha29091997
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Lesia Sobolevska
найпростіші перетворення графіків функцій
найпростіші перетворення графіків функційнайпростіші перетворення графіків функцій
найпростіші перетворення графіків функцій
Fr3dd0
Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції
NataliaGrychko
График уравнения с двумя переменным
График уравнения с двумя переменнымГрафик уравнения с двумя переменным
График уравнения с двумя переменным
Илья Сыч
Графік функції франгмент
Графік функції франгментГрафік функції франгмент
Графік функції франгмент
AnnaTimohovich
Границя і неперервність функції
Границя і неперервність функціїГраниця і неперервність функції
Границя і неперервність функції
Formula.co.ua
Визначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний змістВизначений інтеграл та його геометричний зміст
Визначений інтеграл та його геометричний зміст
Formula.co.ua
квадратична функція 9 клас
квадратична функція 9 класквадратична функція 9 клас
квадратична функція 9 клас
valia55
практ 1 копия
практ 1   копияпракт 1   копия
практ 1 копия
cit-cit
Простейшие преобразования графиков функций
Простейшие преобразования графиков функцийПростейшие преобразования графиков функций
Простейшие преобразования графиков функций
Илья Сыч
Перетворення графіків
Перетворення графіківПеретворення графіків
Перетворення графіків
Darina Shama
Квадратична функція
Квадратична функціяКвадратична функція
Квадратична функція
natasha29091997
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.Моделювання на ЕОМ. Лекція №7. Теорія графів.
Моделювання на ЕОМ. Лекція №7. Теорія графів.
Lesia Sobolevska
найпростіші перетворення графіків функцій
найпростіші перетворення графіків функційнайпростіші перетворення графіків функцій
найпростіші перетворення графіків функцій
Fr3dd0
Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції Функція. Область визначення та область значення. Способи задання функції
Функція. Область визначення та область значення. Способи задання функції
NataliaGrychko
График уравнения с двумя переменным
График уравнения с двумя переменнымГрафик уравнения с двумя переменным
График уравнения с двумя переменным
Илья Сыч
Графік функції франгмент
Графік функції франгментГрафік функції франгмент
Графік функції франгмент
AnnaTimohovich

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

МатпрогрСП.
МатпрогрСП.МатпрогрСП.
МатпрогрСП.
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
Algoritm
Ирина Слуцкая
рацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiярацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiя
Andy Levkovich
мпр т 9
мпр т 9мпр т 9
мпр т 9
Ivan
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
завдання контрольної № 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
рацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiярацIонал нi числа,_6_клас_презентацiя
рацIонал нi числа,_6_клас_презентацiя
Andy Levkovich
мпр т 9
мпр т 9мпр т 9
мпр т 9
Ivan
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

Recently uploaded (20)

Презентація Інституту геодезії 2025 НУЛП
Презентація Інституту геодезії 2025 НУЛППрезентація Інституту геодезії 2025 НУЛП
Презентація Інституту геодезії 2025 НУЛП
Anatoliy13
Транспорт України 2.ppt івм ауаПМкписаипав
Транспорт України 2.ppt івм ауаПМкписаипавТранспорт України 2.ppt івм ауаПМкписаипав
Транспорт України 2.ppt івм ауаПМкписаипав
JurgenstiX
458549.pptx fhffujikgibhikfloflodlesdelsdekidj
458549.pptx fhffujikgibhikfloflodlesdelsdekidj458549.pptx fhffujikgibhikfloflodlesdelsdekidj
458549.pptx fhffujikgibhikfloflodlesdelsdekidj
ssuserfed972
1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч
1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч
1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч
shkilni pidruchnyky
1-matem-zaika1-matem-zaika1-matem-zaika
1-matem-zaika1-matem-zaika1-matem-zaika1-matem-zaika1-matem-zaika1-matem-zaika
1-matem-zaika1-matem-zaika1-matem-zaika
shkilni pidruchnyky
1-ukrmova-chumarna1-ukrmova-chumarna 2ч
1-ukrmova-chumarna1-ukrmova-chumarna 2ч1-ukrmova-chumarna1-ukrmova-chumarna 2ч
1-ukrmova-chumarna1-ukrmova-chumarna 2ч
shkilni pidruchnyky
«ЧАРІВНА СКРИНЬКА КАЗОК МИКОЛИ ЗІНЧУКА»: віртуальна книжкова виставка до 100-...
«ЧАРІВНА СКРИНЬКА КАЗОК МИКОЛИ ЗІНЧУКА»: віртуальна книжкова виставка до 100-...«ЧАРІВНА СКРИНЬКА КАЗОК МИКОЛИ ЗІНЧУКА»: віртуальна книжкова виставка до 100-...
«ЧАРІВНА СКРИНЬКА КАЗОК МИКОЛИ ЗІНЧУКА»: віртуальна книжкова виставка до 100-...
Чернівецька обласна бібліотека для дітей
66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf
66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf
66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf
ssuser46127c
1-ukrmova-ichenko1-ukrmova-ichenko 1ч
1-ukrmova-ichenko1-ukrmova-ichenko 1ч1-ukrmova-ichenko1-ukrmova-ichenko 1ч
1-ukrmova-ichenko1-ukrmova-ichenko 1ч
shkilni pidruchnyky
1-ukrmova-cepova1-ukrmova-cepova 1ч
1-ukrmova-cepova1-ukrmova-cepova 1ч1-ukrmova-cepova1-ukrmova-cepova 1ч
1-ukrmova-cepova1-ukrmova-cepova 1ч
shkilni pidruchnyky
Особливості економіки країн Америки. Первинний сектор економіки..pptx
Особливості економіки країн Америки. Первинний сектор економіки..pptxОсобливості економіки країн Америки. Первинний сектор економіки..pptx
Особливості економіки країн Америки. Первинний сектор економіки..pptx
JurgenstiX
ТУкр.ٳппкерекп4куеапфцефуепурпекекірек
ТУкр.ٳппкерекп4куеапфцефуепурпекекірекТУкр.ٳппкерекп4куеапфцефуепурпекекірек
ТУкр.ٳппкерекп4куеапфцефуепурпекекірек
JurgenstiX
День відкритих дверей_presentation_6.pptx
День відкритих дверей_presentation_6.pptxДень відкритих дверей_presentation_6.pptx
День відкритих дверей_presentation_6.pptx
artemschoolacc1
1-ukrmova-ponomareva1-ukrmova-ponomareva
1-ukrmova-ponomareva1-ukrmova-ponomareva1-ukrmova-ponomareva1-ukrmova-ponomareva
1-ukrmova-ponomareva1-ukrmova-ponomareva
shkilni pidruchnyky
«Шевченкова весна під сонцем шани і любові»
«Шевченкова весна під сонцем шани і любові»«Шевченкова весна під сонцем шани і любові»
«Шевченкова весна під сонцем шани і любові»
Бібліографи ОДБ ім. Т. Г. Шевченка
Наказатестаціядон61470峦564359岹4ڳ93131.
Наказатестаціядон61470峦564359岹4ڳ93131.Наказатестаціядон61470峦564359岹4ڳ93131.
Наказатестаціядон61470峦564359岹4ڳ93131.
ssuser46127c
1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч
1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч
1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч
shkilni pidruchnyky
Орієнтовний план 2025 Орієнтовний план 2025.pdf
Орієнтовний план 2025 Орієнтовний план 2025.pdfОрієнтовний план 2025 Орієнтовний план 2025.pdf
Орієнтовний план 2025 Орієнтовний план 2025.pdf
home
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
JurgenstiX
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
JurgenstiX
Презентація Інституту геодезії 2025 НУЛП
Презентація Інституту геодезії 2025 НУЛППрезентація Інституту геодезії 2025 НУЛП
Презентація Інституту геодезії 2025 НУЛП
Anatoliy13
Транспорт України 2.ppt івм ауаПМкписаипав
Транспорт України 2.ppt івм ауаПМкписаипавТранспорт України 2.ppt івм ауаПМкписаипав
Транспорт України 2.ppt івм ауаПМкписаипав
JurgenstiX
458549.pptx fhffujikgibhikfloflodlesdelsdekidj
458549.pptx fhffujikgibhikfloflodlesdelsdekidj458549.pptx fhffujikgibhikfloflodlesdelsdekidj
458549.pptx fhffujikgibhikfloflodlesdelsdekidj
ssuserfed972
1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч
1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч
1-ukrmova-bolshakova1-ukrmova-bolshakova 1ч
shkilni pidruchnyky
1-matem-zaika1-matem-zaika1-matem-zaika
1-matem-zaika1-matem-zaika1-matem-zaika1-matem-zaika1-matem-zaika1-matem-zaika
1-matem-zaika1-matem-zaika1-matem-zaika
shkilni pidruchnyky
1-ukrmova-chumarna1-ukrmova-chumarna 2ч
1-ukrmova-chumarna1-ukrmova-chumarna 2ч1-ukrmova-chumarna1-ukrmova-chumarna 2ч
1-ukrmova-chumarna1-ukrmova-chumarna 2ч
shkilni pidruchnyky
66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf
66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf
66e806fcb90e2017837434_8bf6561a-3d10-40fd-9397-0abe74117037.pdf
ssuser46127c
1-ukrmova-ichenko1-ukrmova-ichenko 1ч
1-ukrmova-ichenko1-ukrmova-ichenko 1ч1-ukrmova-ichenko1-ukrmova-ichenko 1ч
1-ukrmova-ichenko1-ukrmova-ichenko 1ч
shkilni pidruchnyky
Особливості економіки країн Америки. Первинний сектор економіки..pptx
Особливості економіки країн Америки. Первинний сектор економіки..pptxОсобливості економіки країн Америки. Первинний сектор економіки..pptx
Особливості економіки країн Америки. Первинний сектор економіки..pptx
JurgenstiX
ТУкр.ٳппкерекп4куеапфцефуепурпекекірек
ТУкр.ٳппкерекп4куеапфцефуепурпекекірекТУкр.ٳппкерекп4куеапфцефуепурпекекірек
ТУкр.ٳппкерекп4куеапфцефуепурпекекірек
JurgenstiX
День відкритих дверей_presentation_6.pptx
День відкритих дверей_presentation_6.pptxДень відкритих дверей_presentation_6.pptx
День відкритих дверей_presentation_6.pptx
artemschoolacc1
1-ukrmova-ponomareva1-ukrmova-ponomareva
1-ukrmova-ponomareva1-ukrmova-ponomareva1-ukrmova-ponomareva1-ukrmova-ponomareva
1-ukrmova-ponomareva1-ukrmova-ponomareva
shkilni pidruchnyky
Наказатестаціядон61470峦564359岹4ڳ93131.
Наказатестаціядон61470峦564359岹4ڳ93131.Наказатестаціядон61470峦564359岹4ڳ93131.
Наказатестаціядон61470峦564359岹4ڳ93131.
ssuser46127c
1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч
1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч
1-ukrmova-naumchuk1-ukrmova-naumchuk 1ч
shkilni pidruchnyky
Орієнтовний план 2025 Орієнтовний план 2025.pdf
Орієнтовний план 2025 Орієнтовний план 2025.pdfОрієнтовний план 2025 Орієнтовний план 2025.pdf
Орієнтовний план 2025 Орієнтовний план 2025.pdf
home
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
JurgenstiX
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
Дослідження № 4. Традиційні продукти харчування в Україні та країнах-сусідах....
JurgenstiX

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