
- •0Міністерство освіти і науки, молоді та спорту україни
- •«Теорія алгоритмів» Методичні вказівки
- •2.1 Види алгоритмів
- •2.2 Організація лінійних алгоритмів .
- •2.3 Організація розгалужень в са
- •2.4 Організація циклів.
- •Розділ 3. Моделі обчислень
- •3.1 Скінченний автомат, як модель перетворювача дискретної інформації
- •3.2 Визначення та властивості скінченого автомату
- •3.3 Автомат Мілі
- •3.4 Автомат Мура
- •3.5 Машина Тюрінга.
- •3.5.1 Історія
- •3.5.2 Визначення машини т.
- •3.5.3 Можливості машини Тюрінга
- •3.5.4 Приклади
- •4.1 Необхідність структурування даних. Поняття Структури даних
- •4.2 Послідовне і зв’язне розподілення даних в пам’яті еом.
- •4.2.2 Зв'язаний розподіл в пам'яті.
- •4.3 Лінійні та нелінійні структури даних.
- •4.3.1 Лінійні струтури даних
- •Однозв'язні списки
- •Двохзв'язні списки
- •4.3.2 Нелінійні структури даних
- •4.4 Статичні структури даних.
- •4.5 Уявлення в пам’яті машини множин; операції над множинами. Уявлення графів. Дерева і бінарні дерева. Характеристики дерев. Ліс. Уявлення бінарних дерев. Перехід від дерева до бінарного дерева.
- •4.5.1 Множини. Опис множин, операції над множинами.
- •4.5.2 Поняття графа як структури даних.
- •Застосування графів
- •4.5.3 Поняття дерева як структури даних
- •4.5.4 Бінарне дерево
- •Перехід від дерева до бінарного дерева
- •4.6 Порядок обходу вузлів дерева: обернений і внутрішній. Властивості обходу вузлів дерева: прямий, обернений і внутрішній. Властивості обходу дерев. Порядок та властивості обходу дерева.
- •5.1 Предмет теорії комбінаторних алгоритмів (обчислювань)
- •5.2 Правила множення і суми для знаходження
- •5.3 Види задач підрахунку числа елементів множин
- •1. Метод рекурентних співвідношень.
- •2. Метод включення і виключення.
- •5.4 Елементи комбінаторики. Набори: набори з повторюванням; специфікація набору
- •Розділ 6 Ефективність алгоритмів
- •6.1. Характеристики алгоритмів.
- •6.2 Ємна та часова складність. Поліноміальна зв’язність.
- •6.3 Класи p та np
0Міністерство освіти і науки, молоді та спорту україни
Кам’янець-Подільський коледж харчової промисловості, НУХТ
«Теорія алгоритмів» Методичні вказівки
до самостійного вивчення
для студентів спеціальності №5.05010101
«Обслуговування програмних систем та комплексів»
2011
Методичні вказівки до самостійного вивчення навчальної дисципліни «Теорія алгоритмів» для студентів спеціальності №5.05010101 «Обслуговування програмних систем та комплексів»./Укладач: Н.Б. Ілаш – Кам’янець-Подільський: К-ПКХП НУХТ, 2011р. –46.
Розглянуто і затверджено на засіданні циклової комісії інформаційних технологій
Протокол № __ від __________2011р.
Розглянуто і схвалено рішенням науково-методичної ради
Протокол № __ від __________2011р.
Укладач: Ілаш Надія Борисівна, викладач Кам’янець-Подільського коледжу харчової промисловості НУХТ, викладач ІІ категорії
Рецензент : Городинська Лариса Миколаївна, викладач спец дисциплін Кам’янець-Подільського коледжу харчової промисловості НУХТ, викладач І категорії
Зміст
Вступ |
5 |
1 Стисла історія формування поняття «Алгоритм». |
6 |
2 Простіші алгоритми |
7 |
2.1 Види алгоритмів |
7 |
2.2 Організація лінійних алгоритмів. |
7 |
2.3 Організація розгалужень в СА |
|
2.4 Організація циклів. |
9 |
3 Моделі обчислень |
13 |
3.1 Скінченний автомат, як модель перетворювача дискретної інформації |
13 |
3.2 Визначення та властивості скінченого автомату |
13 |
3.3 Автомат Мілі |
14 |
3.4 Автомат Мура |
15 |
3.5 Машина Тюрінга. |
16 |
3.5.1 Історія |
16 |
3.5.2 Визначення машини Тюрінга. |
17 |
3.5.3 Можливості машини |
18 |
3.5.4 Приклади |
19 |
4 Структури данних |
20 |
4.1 Необхідність структурування даних. Поняття Структури даних |
20 |
4.2 Послідовне і зв’язне розподілення даних в пам’яті ЕОМ. |
22 |
4.2.1 Послідовний розподіл пам’яті. |
22 |
4.2.2 Зв’язний розподіл пам’яті. |
23 |
4.3 Лінійні та нелінійні структури даних. |
|
4.3.1 Лінійні структури пам’яті. |
23 |
4.3.2 Неінійні структури пам’яті. |
26 |
4.4 Статичні структури даних. |
26 |
4.5 Уявлення в пам’яті машини множин; операції над множинами. Уявлення графів. Дерева і бінарні дерева. Характеристики дерев. Ліс. Уявлення бінарних дерев. Перехід від дерева до бінарного дерева. |
28 |
4.5.1 Множини. Опис множин, операції над множинами. |
29 |
4.5.2 Поняття графа як структури даних. |
30 |
4.5.3 Поняття дерева як структури даних |
32 |
4.5.4 Бінарне дерево |
33 |
4.6 Порядок обходу вузлів дерева: обернений і внутрішній. Властивості обходу вузлів дерева: прямий, обернений і внутрішній. Властивості обходу дерев. |
34 |
5 Комбінаторні обчислювання на скінчених множинах. |
36 |
5.1 Предмет теорії комбінаторних алгоритмів (обчислювань) |
36 |
5.2 Правила множення і суми для знаходження потужності множин |
36 |
5.3 Види задач підрахунку числа елементів множин |
37 |
5.4 Елементи комбінаторики. Набори: набори з повторюванням; специфікація набору |
38 |
6 Ефективність алгоритмів |
42 |
6.1. Характеристики алгоритмів. |
42 |
6.2 Ємна та часова складність. Поліноміальна зв’язність. |
42 |
6.3 Класи P та NP |
44 |
6.4 NP-повні задачі. |
44 |
6.5 NP-важкі задачі |
45 |
Література |
46 |
Вступ
Широке використання сучасної інформаційної технології потребує вивчення наукових основ і практичних методів алгоритмізації обчислювальних процесів.
Метою викладення дисципліни є навчання студентів основам побудови алгоритмів та оцінювання їх складності при вирішуванні комбінаторних задач, задач символьної, графічної та іншого виду обробки.
Основні завдання курсу:
ознайомлення з основними поняттями теорії алгоритмів;
ознайомлення з алгоритмами пошуку та сортування;
ознайомлення з основами структурного програмування;
ознайомлення з класичними методами побудови алгоритмів.
В результаті освоєння програмного курсу студенти повинні:
знати:
способи побудови оптимальних алгоритмів та оцінювання їх складності;
основні алгоритми обробки даних;
основні принципи структурованого програмування;
класичні загальні методи розв’язання алгоритмів;
методи розв’язання класичних задач та недоліки і переваги кожного з них;
принципи побудови рекурсивних алгоритмів;
уміти:
на практиці використовувати загальні методи побудови алгоритмів;
будувати рекурсивні алгоритми;
будувати алгоритми для специфічних задач;
реалізовувати багатомодульні програми.
Дисципліна “Теорія алгоритмів” вивчається разом з вивченням курсів: “Основи програмування та алгоритмічні мови”, “Вища математика”, “Дискретна математика”
Розділ 1 Ознаки Алгоритму.
У 820 р. нашої ори в Бухарі був написаний підручник «Аль-Джабр Ва-аль-Мукабала» («Наука виключення скорочення»), у якому були представлені правила виконання чотирьох арифметичних дій над числами в десятковій системі числення. Автором підручника був арабський математик Мухаммед бен Муса аль-Хорезмі. Від слів «альджебр» у назві підручника пішло слово «алгебра», а під імені Аль-Хорезмі — слово «алгоризм», що пізніше перейшло в «алгоритм» і що розуміється як сукупність правил.
Найдавнішому записаному алгоритму вже 3800 років. Близько 1800р. до п. е. житель Вавилона зобразив па глиняній табличці процедуру розв'язування задачі, в якій було потрібно знайти, скільки часу піде на подвоєння наявної кількості зерна при річному прирості в 20%. Цей алгоритм використовується і зараз у банківських розрахунках.
У ПІ в. до н. е. у класичному трактаті «Начала» грецького математика Евкліда був описаний алгоритм, що і тепер застосовується для знайдення найбільшого спільного дільника двох чисел.
Інтуїтивне представлення про значення слова «алгоритм» має кожний. Це процедура, рецепт рішення задачі, що однозначно наказує, як і в якій послідовності виконувати дії. Незважаючи на простоту і гнучкість такого представлення, воно нечітке й обмежене. Кожний з вас уміє зав'язувати шнурки. Спробуйте (без картинок і демонстрацій) описати алгоритм зав'язування шнурків. Великий розділ інформатики, що називається "алгоритмізація", вивчає алгоритми, їхні властивості, методи і прийоми побудови алгоритмів.
У будь-якого алгоритма має бути виконавець. Оскільки мова йде про розв'язування задач за допомогою "комп'ютера, то виконавцем є комп'ютер. Можна сказати, що алгоритм — це однозначна скінченна послідовність точно визначених кроків або дій. що забезпечує розв'язання задачі, й для виконання якої потрібні скінченний обсяг оперативної пам'яті і скінченний час.
Розділ 2. Простіші алгоритми.