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

ASD_Lecture01

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

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

Приклад псевдокоду

Вхідні дані

відсортована послідовність n (n >0) чисел (база даних)

одне число (запит)

Вихідні дані

• індекс знайденого числа або NIL

a1, a2, a3,….,an; q

 

j

2

5

4

10

11;

5

2

 

2

5

4

10

11;

9

NIL

Лекція 1

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

Приклад псевдокоду

Вхідні дані: A[1..n] – масив цілих чисел, q – ціле число. Вхідні дані: A[1..n] – масив цілих чисел, q – ціле число.

Вихідні дані: індекс j такий, що A[j] = q. NIL, якщо j (1 j n): A[j] q Вихідні дані: індекс j такий, що A[j] = q. NIL, якщо j (1 j n): A[j] q

j 1 j 1

поки j n і A[j] q поки j n і A[j] q

виконуй j++ виконуй j++

якщо j n тоді повернути j якщо j n тоді повернути j інакше повернути NIL інакше повернути NIL

Алгоритм використовує техніку brute-force (грубої сили) – послідовно сканує вхідні дані.

Код написано на недвозначному псевдокоді і ВХІДНІ і ВИХІДНІ дані алгоритму чітко визначені

Лекція 1

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

Аналіз алгоритмів

Час обчислення як функція від розміру

вхідних даних

for j 2 to n

вартість

час

c1

n

do key A[j]

c2

n-1

Вставити A[j] у відсортовану

0

n-1

послідовність A[1..j-1]

c3

n-n1

i j-1

while i>0 and A[i]>key

c4

nj 2tj

 

c

5

nj 2(tj 1)

do A[i+1] A[i]

 

j 2(tj 1)

i--

c6

A[i+1]:=key

c7

n-1

Лекція 1

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

Кращий/гірший/середній випадок

Кращий випадок: елемени вже відсортовані tj=1, час виконання = f(n),

тобто, лінійний.

Гірший випадок : елементи відсортовані у зворотньому порядку

tj=j, час виконання = f(n2), тобто,

квадратичний

Середній випадок : tj=j/2, час виконання = f(n2), тобто, квадратичний.

Лекція 1

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

Кращий/гірший/середній випадок

Для визначеного розміру вхідних даних n, провести дослідження часу виконання для різних наборів вхідних даних:

6n

5n

4n

3n

2

n 1n

Лекція 1

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

Наступне заняття

•Коректність алгоритмів

•Асимптотична нотація великого О, відома також як нотація Ландау

Лекція 1

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

Машина Поста

Склад машини Поста

Дії каретки підпорядковані програмі, яка складається з пронумерованого набору команд (команди можна представляти як рядки програми). Команди бувають шести типів:

1.записати 1 (мітку), перейти до i-го рядка програми;

2.записати 0 (стерти мітку), перейти до i-го рядка програми;

3.переміститися вліво, перейти до i-го рядка програми;

4.переміститися вправо, перейти до i-го рядка програми;

5.зупинка;

6.якщо 0, то перейти до i-го рядка програми, інакше перейти до j-го рядка програми.

Лекція 1

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

Графічне представлення команд машини Поста

Крок вправо

Крок вліво

V

Записати мітку

X

Стерти мітку

? a: b

Переглянути комірку: якщо в комірці

 

знаходиться 0, тоді перейти на команду з

 

номером а, інакше на командуз номером b.

!

Зупинка

Лекція 1

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

Машина Поста

Не дивлячись на примітивність машини Поста, будь-

який існуючий алгоритм може бути записаний у

вигляді програми для машини Поста. У теорії

алгоритмів існує так звана «теза Поста»: «Будь-який

алгоритм можна представити у вигляді машини

Поста». Ця теза одночасно є і формальним

визначенням алгоритму. Алгоритм (за Постом) - програма для машини Поста, що приводить до вирішення поставленої задачі.

Лекція 1

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

Машина Тюрінга

Алан Тьюрінґ висловив припущення, що будь-який алгоритм в інтуїтивному значенні цього слова може бути представлений еквівалентною машиною Тюрінґа. Це припущення відоме як теза Чорча–Тюрінґа. Кожний комп’ютер може моделювати машину Тюрінґа (операції перезапису комірок, порівняння і переходу до іншої сусідньої комірки з урахуванням зміни стану машини).

Отже, він може моделювати алгоритми в будь-якому формалізмі, і всі комп’ютери (незалежно від потужності, архітектури тощо) еквівалентні з погляду принципової можливості рішення алгоритмічних задач.

Лекція 1

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