Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ASD_Lecture01

.pdf
Скачиваний:
20
Добавлен:
12.02.2016
Размер:
9.5 Mб
Скачать

Теорія алгоритмів

Що таке алгоритм?

Відповідно до критеріїв, що висуваються до алгоритмів, чи є наступна послідовність кроків алгоритмом?

Млинці

Просіяти борошно в миску Додати щіпку солі Злегка збити яйця

Додати борошно і добре перемішати Залишити принаймні на 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]