Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TA_last_u3.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.69 Mб
Скачать
  1. Розроблення алгоритму.

Для цього етапу важливо мати методи розроблення алго­ритмів, які забезпечують створення ефективних алгоритмів, що, головним чином, визначає ефективність комп’ютеризованих систем. Два різних алгоритми можуть бути правильними, але суттєво відрізнятися за ефективністю. Ми пізніше розглянемо типові підходи до розроб­лення алгоритмів, а наразі розпочнемо з того, що першим кидається в очі: перебір усіх об­ходів з запам’ятовуванням поточного найкоротшого.

Здійснивши нумерацію п міст цілими числами від 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. Крім того, цей алгоритм ймовірно не найефективніший. Але най­ви­тон­ченіші програми не можуть усунути недоліки алгоритму. Тому варто приділити увагу розроб­ленню ефективного алгоритму, пам’ятаючи, що ми завжди за необхідності можемо повторити попередні етапи.

  1. Правильність алгоритму.

Доведення правильності алгоритму - один з найсклад­ніших етапів створення алго­ритму.

Алгоритм вважають правильним, якщо на будь-якому припустимому (для даної проблеми) вході він закінчує роботу і видає результат, що задовольняє вимогам проб­леми. В цьому випадку кажуть, що алгоритм розв’язує дану проблему. Неправильний алгоритм може (для деяко­го входу) взагалі не зупинитися або видати неправильний результат.

Традиційне тестування рідко виклю­чає усі сумніви, воно тільки демонструє, що програма «працює» в деяких випадках, однак може існувати випадок, в якому програма не працює.

Потрібна певна загальна методика доведення пра­вильності алгоритмів. У зв’язку з тим, що алгоритм описується у вигляді послідовності кроків, звичайно доведення пра­вильності алгоритму зводиться до обґрунтування правомірності кожного кроку. Наприклад, широко застосовуються леми про умови, що діють до і після пройденого кроку. Потім потрібно довести скінченність алгоритму. Загальна концепція: перевірка відповідності не­скін­ченного відображення усіх відповідних пар вхідних і вихідних даних скінченими ме­то­дами. Доведення правильності алгоритму ETS: оскільки перевіряється кожен тур, то повинен бути перевіреним і тур з найменшою вартістю; коли до нього дійде черга, його запам’ятають; він не буде відкинутим — це може трапитися тільки в тому випадку, коли існує тур з мен­шою вартістю. Алгоритм повинен завершити роботу, тому що число турів, які потрібно перевірити, скінчене. Зазначимо, що подібний метод доведення відомий як «доведення вичерпуванням» – найгрубіший із усіх методів доведення.

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