
- •Зміст дисципліни.
- •Найменування тем, їхній зміст, обсяг у годинах лекційних занять
- •Вказівки з використанНя літературних джерел
- •Алгоритми й структури даних
- •Стеки, списки
- •Дерева пошуку Бінарні дерева
- •Двійкові дерева
- •Червоно- чорні дерева
- •Частково впорядковані дерева Статья I.При створенні чуд елементи вводилися в наступному порядку: (13, 6, 15, 5, 10, 6, 3, 13, 5, 6, 35, 8). Пояснити побудова (переформування) дерева.
- •Рекурсія
- •Перебір з поверненням
- •Машина Тьюрінга
- •Приклади Послідовний пошук
- •Структури даних. Масиви Решето Ератосфена
- •Обчислення найближчої точки
- •Структури даних. Списки Приклад циклічного списку (задача Йосипа)
- •Сортування методом вставки в список
- •Звертання порядку проходження елементів списку
- •Структури даних. Рядки Сортування масиву рядків
- •Абстрактні типи даних (атд) Інтерфейс абстрактного типу даних стека
- •Реалізація черги fifo на базі масиву
- •Реалізація черги fifo на базі зв'язного списку
- •Перетворення з інфіксної форми в постфіксну
- •Рекурсія Алгоритм Евклида
- •Рекурсивна програма для оцінки префіксних виразів
- •Розв’язання
- •Приклад 2 Завдання
- •Розв’язання
- •Приклад 3 Завдання
- •Розв’язання
- •Приклад 4 Завдання
- •Розв’язання
- •Приклад 5 Завдання
- •Розв’язання
- •Приклад 6 Завдання
- •Розв’язання
- •Приклад 7 Завдання
- •Розв’язання
- •Алгоритм роботи машини т’юринга
- •Дослідження функції на рекурсивність
- •Нормальні алгоритми Маркова
- •Алгоритм роботи програми.
- •Приклад роботи програми.
- •Варіанти курсових робіт
- •Варіанти виконання Алгоритм виконання курсової роботи:
- •Приклад1.
- •Побудова моделі.
- •Розроблення алгоритму.
- •Правильність алгоритму.
- •Реалізація алгоритму.
- •Перевірка програми.
- •Приклад2
- •Постановка задачі
- •Перший варіант розв’язку
- •Другий варіант розв’язку.
- •Приклад3
- •Опукла оболонка
- •Метод обходу Грехема
- •Метод обходу Джарвіса
- •Алгоритм апроксимації опуклої оболонки
- •Швидкі методи побудови опуклої оболонки
- •Алгоритм типу розділяй та пануй
- •Побудова опуклої оболонки простого многокутника
- •Динамічні алгоритми побудови опуклої оболонки
- •Порівняльний аналіз алгоритмів побудови опуклої оболонки
- •Висновки
Розроблення алгоритму.
Для цього етапу важливо мати методи розроблення алгоритмів, які забезпечують створення ефективних алгоритмів, що, головним чином, визначає ефективність комп’ютеризованих систем. Два різних алгоритми можуть бути правильними, але суттєво відрізнятися за ефективністю. Ми пізніше розглянемо типові підходи до розроблення алгоритмів, а наразі розпочнемо з того, що першим кидається в очі: перебір усіх обходів з запам’ятовуванням поточного найкоротшого.
Здійснивши нумерацію п міст цілими числами від 1 до п (базовому місту приписуємо номер п), поставимо кожному туру у взаємно однозначну відповідність перестановку цілих чисел 1, 2, ..., п—1. Задачу можна розв’язати, якщо, утворюючи усі перестановки перших п–1 цілих додатних чисел і будуючи відповідні тури, обчислювати їх вартість та запам’ятовувати тур, який на поточний момент має найменшу вартість. Якщо ми зустрічаємо тур меншої вартості, то виконуємо подальші порівняння з цим туром.
Algorithm ETS (Вичерпний комівояжер). Задача комівояжера з N містами. С – матриця вартостей. TOUR – тур з найменшою вартістю MIN.
Крок 0. [Ініціалізація] Set TOUR ; and MIN.
Крок 1. [Утворення усіх перестановок] For l1 to (N—I)! do through крок 4 od; and STOP.
Крок 2. [Отримання нової перестановки] Set Р I-а перестановка цілих чисел 1, 2, ..., N—1.
Крок 3. [Побудова нового туру] Будуємо тур Т(Р), що відповідає перестановці Р; and обчислюємо вартість COST(T(P)).
Крок 4. [Порівняння] If COST (Т(P)) < MIN then set TOUR T(Р); and MIN COST (T(P)) fi.
Варто зауважити, що опис алгоритму ETS виглядає ще дуже далеким від остаточної програми. Для отримання останньої необхідно доопрацювати кроки алгоритму, насамперед потребують деталізації кроки 2,3. Крім того, цей алгоритм ймовірно не найефективніший. Але найвитонченіші програми не можуть усунути недоліки алгоритму. Тому варто приділити увагу розробленню ефективного алгоритму, пам’ятаючи, що ми завжди за необхідності можемо повторити попередні етапи.
Правильність алгоритму.
Доведення правильності алгоритму - один з найскладніших етапів створення алгоритму.
Алгоритм вважають правильним, якщо на будь-якому припустимому (для даної проблеми) вході він закінчує роботу і видає результат, що задовольняє вимогам проблеми. В цьому випадку кажуть, що алгоритм розв’язує дану проблему. Неправильний алгоритм може (для деякого входу) взагалі не зупинитися або видати неправильний результат.
Традиційне тестування рідко виключає усі сумніви, воно тільки демонструє, що програма «працює» в деяких випадках, однак може існувати випадок, в якому програма не працює.
Потрібна певна загальна методика доведення правильності алгоритмів. У зв’язку з тим, що алгоритм описується у вигляді послідовності кроків, звичайно доведення правильності алгоритму зводиться до обґрунтування правомірності кожного кроку. Наприклад, широко застосовуються леми про умови, що діють до і після пройденого кроку. Потім потрібно довести скінченність алгоритму. Загальна концепція: перевірка відповідності нескінченного відображення усіх відповідних пар вхідних і вихідних даних скінченими методами. Доведення правильності алгоритму ETS: оскільки перевіряється кожен тур, то повинен бути перевіреним і тур з найменшою вартістю; коли до нього дійде черга, його запам’ятають; він не буде відкинутим — це може трапитися тільки в тому випадку, коли існує тур з меншою вартістю. Алгоритм повинен завершити роботу, тому що число турів, які потрібно перевірити, скінчене. Зазначимо, що подібний метод доведення відомий як «доведення вичерпуванням» – найгрубіший із усіх методів доведення.