
ASD_Lecture01
.pdf
Теорія алгоритмів
Що таке алгоритм?
Відповідно до критеріїв, що висуваються до алгоритмів, чи є наступна послідовність кроків алгоритмом?
Млинці
Просіяти борошно в миску Додати щіпку солі Злегка збити яйця
Додати борошно і добре перемішати Залишити принаймні на 1 годину або через ніч
Лекція 1

Теорія алгоритмів
Що таке алгоритм?
Відповідно до критеріїв, що висуваються до алгоритмів, чи є наступна послідовність кроків алгоритмом?
Млинці
Просіяти борошно в миску Додати щіпку солі Злегка збити яйця
Додати борошно і добре перемішати Залишити принаймні на 1 годину або навіть через ніч
Не відповідає (визначеність)
"Щіпка солі" “злегка збити" "добре перемішати" " навіть через ніч"
Всі неоднозначні або розпливчасті
Як кухар ми можемо приблизно інтерпретувати, але даний опис не є достатньо точним для комп'ютера.
Лекція 1

Теорія алгоритмів
Що таке алгоритм?
Відповідно до критеріїв, що висуваються до алгоритмів, чи є наступна послідовність кроків алгоритмом?
Гра в шахи
1.Побудувати дерево всіх можливих дійсних станів гри
2.Позначити позицію “перемога", якщо гравець може виграти цей хід, або “програш", якщо гравець програє незалежно від будь-якого наступного ходу
3.Позначити позицію “програш", якщо всі нащадки мають позначку " перемога "
4.Позначити позицію " перемога ", якщо хоча б один з нащадків позначений “програш"
5.Повторити кроки 3 і 4, поки не будуть позначені всі стани
6.Якщо перший крок позначено "перемога ", тоді повернути повідомлення "білі завжди перемагають"
Лекція 1

Теорія алгоритмів
Що таке алгоритм?
Гра в шахи
1.Побудувати дерево всіх можливих дійсних станів гри
2.Позначити позицію “перемога", якщо гравець може виграти цей хід, або “програш", якщо гравець програє незалежно від будь-якого наступного ходу
3.Позначити позицію “програш", якщо всі нащадки мають позначку " перемога "
4.Позначити позицію " перемога ", якщо хоча б один з нащадків позначений “програш"
5.Повторити кроки 3 і 4, поки не будуть позначені всі стани
6.Якщо перший крок позначено "перемога ", тоді повернути повідомлення "білі завжди перемагають"
Не відповідає (скінченість)
~1043 можливих станів гри – хоча кількість скінчена, проте нереально оцінити всі Оцінити 1 мільйон станів за секунду = 3.2×1029 років!
(Вік Землі приблизно 4.5×109 років)
Лекція 1

Теорія алгоритмів
Що таке алгоритм?
Відповідно до критеріїв, що висуваються до алгоритмів, чи є наступна послідовність кроків алгоритмом?
Знайти найбільший спільний дільник з двох додатніх чисел m і n
1.Якщо m<n, обміняти значення m і n
2.Поділити m на n і нехай r буде залишком
3.Якщо r = 0, завершити виконання і повернути n як відповідь
4.Встановити m = n і n = r, повернутинся на крок 1
Лекція 1

Теорія алгоритмів
Що таке алгоритм?
Відповідно до критеріїв, що висуваються до алгоритмів, чи є наступна послідовність кроків алгоритмом?
Знайти найбільший спільний дільник з двох додатніх чисел m і n
1.Якщо m<n, обміняти значення m і n
2.Поділити m на n і нехай r буде залишком
3.Якщо r = 0, завершити виконання і повернути n як відповідь
4.Встановити m = n і n = r, повернутинся на крок 1
Відповідає
Це є наш перший алгоритм
Один з найстарших відомих алгоритмів (300 рік до Р.Х.) описаний Евклідом (у дещо іншій формі)
Лекція 1

Алгоритми і структури даних
Що таке алгоритм?
На практиці ми хочемо, щоби алгоритми були:
Коректними (правильними)
Ефективними
Легкими в реалізації
Проте часто досягнути одразу три цілі неможливо
Лекція 1

Теорія алгоритмів
Специфікація і точність
Алгоритм є реалізацією вирішення проблеми
Нам потрібно засоби для вираження проблеми, тоді ми зможемо розробити алгоритми для її вирішення
Комп'ютерна програма є переведення алгоритму на конкретну мову програмування (також реалізацією)
Перевіряти те, що реалізація правильно виконує алгоритм є задачею програмної інженерії і формальних методів
Ми зацікавлені у розробленні та аналізі алгоритмів
Нам байдуже якою мовою він згодом буде реалізований
Але нам дійсно потрібно мова, щоб висловити алгоритми
Q: Чому б нам не користуватисмя українською? Чому б нам не програмувати на комп'ютері англійською?
Лекція 1

Специфікація і точність
самовираження |
|
Три можливості: |
|
2. |
Псевдокод |
||
легкостіЗростання |
1. |
Українська |
|
3. |
Мова програмування |
||
|
Теорія алгоритмів
точності Зростання
Лекція 1

Теорія алгоритмів
Вираження алгоритмів
Ми використовуватимемо поєднання української мови і псевдокоду
Хороші властивості псевдокоду:
Псевдокод представляє хороший баланс між точністю і читабельністю
Можна легко перетворити на код будь-якої мови програмування
Він інтуітивний – немає потреби його вчити
Лекція 1