Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 2 укр.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
179.71 Кб
Скачать

2.3. Принцип декомпозиції

Це один із широко застосовуваних прийомів у технології програмування. Складна задача аналізується на змістовному рівні, де виявляється можливість розчленовування її на окремі підзадачі. Іноді це вдається зробити на етапі формалізації чи навіть у рамках пошуку численних методів. Далі кожна підзадача може виявитися настільки складною, що знову потрібно буде застосувати операцію декомпозиції. Мета цього прийому - одержати прості підзадачі, до яких можна застосувати відомі методи розв'язання чи ці методи досить легко розробити. Для ілюстрації методу декомпозиції розглянемо простий приклад.

Приклад.

З деякої фабрики В необхідно доставити в продовольчі магазини М1,М2,М3 і М4 продукцію. На схемі приведена основна інформація про можливі шляхи доставки продукції. Задача полягає в тому, щоб вибрати такий шлях перевезення, при якому витрати (часу, пального) будуть мінімальними.

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

Р ис. 2.1. Схема маршрутів у задачі комівояжера

Має свою назву і сама задача подібного типу. Це задача комівояжера. Суть її в тому, що необхідно вибрати деякий маршрут пересування з початкового пункту Ф через усі пункти Мі так, щоб побувати у всіх n пунктах Mi (i=1,n) рівно один раз, повернутися у вихідний пункт Ф, затративши мінімум деякого ресурсу (часу, довжини шляху, енергії, вартості проїзду і т.п.).

Таким чином, у задачі потрібно встановити такий порядок пересування від пункту до пункту, при якому мінімізуються загальні витрати ресурсу. З вихідного пункту може бути n варіантів напрямків руху, з наступного пункту - n - 1 і т.д. Загальна кількість можливих варіантів n!, якщо витрати по маршрутах у прямому і зворотному напрямках різні. Кожен такий шлях на графі називається гамільтоновим контуром.

Існують різні математичні методи розв'язання подібних задач цілочисельного програмування (не плутайте з програмуванням для ЕОМ); галузей і границь (можна використовувати і метод Монте-Карло, заснований на випадковому пошуку розв'язку). У даному випадку будемо розглядати не самі методи, а загальну ідею розвязання комбінаторної задачі. При малому n можна використовувати прийом простого перебору всіх припустимих варіантів маршрутів з оцінкою витрат ресурсу по кожному з них і вибору того, у якого ці витрати мінімальні.

У такому випадку розв'язок задачі розпадається на три послідовні самостійні підзадачі:

I) формування всіх n! гамільтонових контурів - чисто комбінаторна задача;

2) визначення значення витрат ресурсу по кожному маршруті - гамільтоновому контуру - обчислювальна задача;

З) вибір із усіх значень витрат ресурсу мінімального - задача сортування.

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

Розглянуті прийоми дозволяють усвідомити деякі загальні закономірності попередньої фази рішення задачі, її підготовки.

I. На підставі вихідного опису об'єкта, формулювання задачі і мети її рішення формуються вербальна (змістовна) модель, модельний об'єкт, більш спрощений у порівнянні з реальним. При цьому, як правило, використовуються схеми, креслення, малюнки, що дозволяють більш наочно представити об'єкт, підкреслити його істотні параметри, ознаки і характеристики, виявити особливості, позбутися другорядних моментів і факторів, що заважають.

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

2. Подальший процес абстрагування повинний дати можливість визначити розділ математики (алгебру, геометрію, диференціальні рівняння, матриці, теорію графів, алгебру логіки, числення предикатів), у рамках якого буде формуватися математична модель. Її одержання відноситься до творчого процесу. У своїй книзі "Як розвязувати задачу" Д.Пойа помітив, що ідея розвязання задачі "може з'являтися поступово чи вона може виникнути раптом в одну мить, після, здавалося б, безуспішних спроб і тривалих сумнівів..". Важко розраховувати на вдалу ідею, маючи слабке пізнання в предметі, і неможливо знайти таку ідею, не маючи ніяких пізнань".

3. Пошук чисельних методів вимагає детального аналізу математичної моделі, що у цьому випадку стає об'єктом, а сам процес аналізу - розвязком своєрідної задачі. І тут також необхідні знання. Наприклад, при визначенні чисельним методом застосовують формулу Ньютона

4 . На будь-якому етапі аналізу задачі, як тільки з'являється можливість, необхідно використовувати принцип декомпозиції. Це дозволяє перейти до розвязку більш простих, менш громіздких підзадач. У багатьох випадках вдається відшукати готові алгоритми і програми, до яких застосовна форма складального чи програмування, що конкретизує.

5. У результаті виконання перших трьох етапів схеми аналізу задачі формується своєрідний эадачний об'єкт у предметній області «програмування для ЕОМ». У цьому об'єкті досить повно повинні бути визначені:

  • мета розвязку задачі у вигляді шуканих результатів Dr,., що представляють собою кінцеву безліч елементів, абстрагованих від конкретного вихідного змісту;

  • вихідні дані DE значення яких відомі з умови задачі;

  • формальні співвідношення F, що зв'язують вихідні дані DE і шукані результати Dr у єдину сукупність, наділену структурою.

Є всі підстави називати подібний об'єкт задачним, оскільки розробка програми також є своєрідним видом розвязку задачі.