Скачиваний:
43
Добавлен:
30.05.2020
Размер:
2.41 Mб
Скачать

Якщо продовжити хід міркувань далі, то можна дійти вис­ новку, що бажано намагатися перетворити таблицю елементів усіх п пристроїв керування таким чином, щоб у кожному пристрої керування лише один елемент дорівнював 1, а решта були 0. Причому всі ці одиничні елементи були на різних по­ зиціях, тобто а\ = 1, а^ = 0 для і, k = 1, 2, ..., п. Цей запис озна­ чає, що задану таблицю пристроїв керування можна звести до такого вигляду, коли всі елементи матимуть значення «0» і ли­ ше елементи головної діагоналі дорівнюватимуть «1»:

1 0 0 . . . 0

0 1 0 . . . 0

0 0 1 ...0

0 0 0 . . . 1 При цьому результативність використання перетворених

пристроїв керування буде такою самою, як і заданих. А як ско­ ристатися новою системою пристроїв керування? Оскільки тепер кожний із перетворених пристроїв керування впливає лише на один із елементів заданого пристрою, то залишається вибрати тільки ті з них, що виконають перетворення не­ обхідних елементів заданого пристрою.

Розглянемо наведений на початку приклад. Якщо з початко­ вого стану 0,1,1,0,1 необхідно перейти у кінцевий стан 0,0,1,1,0, то нескладно помітити, що при цьому змінилися тільки стани другого, четвертого та п'ятого елементів. Тому з перетвореної матриці пристроїв керування необхідно вибрати лише ті, що мають у цих позиціях значення 1 і таким чином після застосування змінять значення необхідних елементів за­ даного пристрою.

Описаний алгоритм вимагає лише однієї додаткової умови: на кожному кроці перетворення заданої системи пристроїв ке­ рування необхідно запам'ятовувати послідовність застосуван­ ня цих пристроїв. Це буде послідовність з їх порядкових но­ мерів від 1 до п. Після завершення процесу зведення необхідно із цієї послідовності прибрати всі пари однакових номерів, оскільки вони не впливають на кінцевий результат. Та послі­ довність, що залишиться, і буде оптимальною шуканою послі­ довністю пристроїв керування, які необхідно застосувати до початкової послідовності елементів заданого пристрою, щоб пе­ ревести її у шуканий кінцевий стан.

Традиційно розглянемо покрокове виконання описаного алго­ ритму на прикладі. Спочатку займемося зведенням таблиці еле­ ментів пристроїв керування до трикутного вигляду (мал. 178).

Домовимося про такі позначення. У стовпцях «Ознаки засто­ сування ПК (пристроїв керування)» визначатимемо рівень ви­ користання і-го пристрою керування: «+» - ПК використо-

322

Ознаки

 

 

 

 

 

Послідовність

застосу­

Стан елемен­

вання

 

тів ПК

 

застосування

 

 

 

 

ПК

 

 

ПК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОІ1

1

0

1

ТІ

0

0

0

0

 

 

0

1

1

1

0

0

1

0

0

0

+

 

1

0

0

1

1

0

0

1

0

0

 

 

0

1

1

1

1

0

0

0

1

0

 

/

1 0

1

1

0

1 0

0

0

1

Ознаки

 

 

 

 

 

Послідовність

застосу­

Стан елемен­

застосування

вання

 

тів ПК

 

 

 

ПК

 

 

ПК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

О1 1

1

0

1

1

0

0

0

0

 

/

0

1

1

1

0

0

1

 

0

0

0

JL

 

1 0

0

1

1

Ж

0

 

1

0

0

 

/

0

1

1

1

1

0

0

 

0

1

0

 

 

0

0

1

0

1

0

0

 

1

0

1

Мал. 178

вується для перетворення таблиці на поточному кроці; «X» - ПК уже використовувався для перетворення таблиці; «/» - ПК, над яким виконується перетворення на поточному кроці. У стовпцях «Стан елементів ПК» у кожному і-му рядку містять­ ся значення елементів і-го пристрою керування на момент ви­ конання поточного кроку перетворення. У стовпцях «Послідов­ ність застосування ПК» міститься інформація про використан­ ня пристроїв керування для перетворення таблиці на поточному кроці: у-й елемент і-го рядка містить інформацію про загальну кількість використання j-то пристрою керування для перетво­ рення таблиці на момент виконання поточного кроку.

Розглянемо перший крок (мал. 178, а). Стан елементів ПК збігається з початковим їх станом. На першому кроці викону­ ватиметься перетворення перших елементів пристроїв керу­ вання (стовпець виділений сірим кольором).

Який із пристроїв керування взяти? Оскільки ми нама­ гаємося отримати у цьому стовпці лише одне значення «1», то і шуканий рядок має містити у першому стовпці значення «1». Таких рядків у нашому випадку є два: третій і п'ятий. З них можна взяти будь-який, але логічно зупинитися на першому з них зверху. Саме він позначений символом «+».

А до яких рядків цей пристрій керування буде застосова­ ний? Зрозуміло, що до тих наступних, у яких перший елемент дорівнює «1». Саме це дасть змогу перетворити їх значення на «0». Такий рядок на першому кроці виконання алгоритму є ли­ ше один, і він розташований на п'ятій позиції та позначений символом «/».

У стовпцях, що визначають послідовність застосування ПК, поки що визначені лише самі ці пристрої: для першого при­ строю лічильник застосування цього пристрою встановлений на 1, для другого пристрою значення 1 стоїть у позиції 2, для третього - у позиції 3 і т. д. Результат виконання першого кро­ ку зображений на малюнку 178, б: у першому стовпці для всіх пристроїв керування, окрім третього, значення перетворилися

323

на «О». Це означає, що для того щоб перетворити значення пер­ шого елемента заданого пристрою на протилежне, необхідно скористатися лише третім пристроєм керування, решта при­ строїв керування ніяких змін не дасть.

Перейдемо до другого кроку (мал. 178, б). Спочатку позначи­ мо 3-й пристрій символом «X», що означає подальшу заборону використання цього пристрою для перетворення значень інших пристроїв. У результаті застосування 3-го пристрою до 5-го пристрою значення останнього з послідовності 1,0,1,1,0 перетворяться на 0,0,1,0,1 (див. 5-й рядок мал. 178, б). Змі­ ниться і послідовність застосування пристроїв керування до 5-го ПК: для його перетворення на попередньому кроці був за­ стосований 3-й пристрій, тому значення третього елемента цієї послідовності збільшиться на 1, і ця послідовність набуде ви­ гляду 001 0 1.

На другому кроці змінюватимемо значення другого стовпця, що відмічений сірим кольором. Перша одиниця у цьому стовпці зустрічається у першому пристрої керування. Виби­ раємо його для наступних перетворень і помічаємо символом «+». Для перетворення визначаємо 2-й та 4-й рядки, де на другій позиції стоять значення «1». їх треба прибрати, зали­ шивши значення «1» тільки у другій позиції 1-го пристрою ке­ рування. Цим буде досягнута можливість впливу на значення 2-го елемента заданого пристрою лише одним із пристроїв ке­ рування, а саме першим. Результат виконання другого кроку зображений на малюнку 179, а.

Ознаки

 

 

 

 

 

Послідовність

застосу­

Стан елемен­

вання

 

тів ПК

 

застосування

 

 

 

 

ПК

 

 

ПК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

0

1

1

0

1

1

0

 

0

0

0

 

 

0

0

0

1

1

1

 

0

0

0

X

 

1

0

0

1

1

0

0

 

1

0

0

 

 

0

0

0

1

0

і

0

 

0

1

0

+

 

0

0

1

0

1

0

0

 

1

0

1

Ознаки

 

 

 

 

 

Послідовність

застосу­

Стан елемен­

застосування

вання

 

тів ПК

 

 

 

ПК

 

 

ПК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JL

 

0

1

0

0

0

1

0

 

1

0

1

 

 

 

 

 

 

+

 

0

0

0

1

1

1

1

 

0

0

0

JL

/

1

0

0

1

1

0

0

 

1

0

0

0

0

1

0

1

0

 

0

0

 

/

0

 

1

X

 

0

0

1

0

1

0

0

 

1

0

1

а)

6)

 

Мал. 179

На третьому кроці (мал. 179, а) відбувається перетворення елементів третього стовпця (сірий колір). Перше значення «1» зустрічається у 1-му пристрої керування, але цей пристрій був уже попередньо використаний для перетворень, тому вико­ нуємо пошук далі. Варто зупинитись і пояснити, чому не мож­ на використати повторно раніше використаний пристрій. Це пояснюється дуже просто: якщо пристрій використовувався, то на попередніх (і - 1)-х кроках один із його елементів 1, 2, ...,

324

Ознаки

 

 

 

 

 

Послідовність

застосу­

Стан елемен­

застосування

вання

 

тів ПК

 

 

 

ПК

 

 

ПК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JL

 

 

 

 

 

 

 

 

 

 

 

 

 

Oj

1

0

0

0

1

0

 

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

JL

/

0

0

0

1

1

1

1

 

0

0

0

 

 

 

 

 

 

JL

 

1

0

0

0

0

1

1

 

1

0

0

 

 

 

 

 

 

 

 

 

 

 

+

 

Oj

0

0

0

1

2

1

0

1

0

X

/

0

0

1

0

1

0

0

 

1

0

1

Ознаки

 

 

 

Послідовність

застосу­

Стан елемен­

застосування

вання

тів ПК

 

ПК

 

ПК

 

 

 

 

 

 

 

 

 

 

 

JL

 

Oil

 

0І0І0ІІ1І0

і

0\1

X

 

 

 

 

ОІО 0 110:\3\2

0

1\0

X

 

1 0 0 0 0

Ш

1

0\0

JL

 

0І0|0"|0ІЇІП2ТІ

0

1\0

 

 

 

 

 

 

 

Xі

 

ОІО 1І0 0ІІ2 і

1

1\1

а)

б)

Мал.

180

(і - 1) може мати значення «1». А це значить, що при повторно­ му використанні цього елемента іншим пристроєм керування його значення буде змінене. Як видно з значень 1-го і 2-го стовпців поточного стану елементів ПК (мал. 179, а), вони вже зведені до необхідного вигляду: у кожному стовпці лише по од­ ному значенню «1».

Проаналізуємо, як змінилися послідовності використання пристроїв керування на третьому кроці. Оскільки на другому кроці до пристроїв 2 і 4 був застосований пристрій 1, то і лічильники першого елемента цих пристроїв збільшені на 1. Послідовність застосуваня пристроїв до пристрою 2 буде мати вигляд 1 1 0 0 0, & до пристрою 4-10010.

Повернемося назад до виконання третього кроку алгоритму. Наступний пристрій, що має для 3-го елемента значення «1» - 5-й пристрій. Помічаємо його символом «+». Шукаємо при­ стрій, до якого його треба застосувати, перетворивши значення «1» у третьому стовпці на значення «0». Таким є пристрій 1: позначимо його символом «X».

Результат виконання третього кроку зображений на малюн­ ку 179, б: перші три стовпці мають значення «1» лише в одній із позицій.

Четвертий (мал. 179, б) і п'ятий (мал. 180, а) кроки ана­ логічні попереднім. Результат виконання всіх п'яти кроків зображений на малюнку 180, б: кожний із пристроїв керування був застосований для перетворення, таблиця стану елементів пристроїв керування зведена до необхідного вигляду (у кож­ ному рядку і стовпці лише один елемент дорівнює 1), а в таблиці послідовностей застосування пристроїв керування до кожного з них міститься інформація про кількість таких застосувань.

Тепер можна переходити до фінального етапу алгоритму: визначення мінімальної кількості пристроїв керування, які необхідно застосувати до заданого пристрою, щоб перевести його з початкового стану 0,1,1,0,1 у кінцевий 0,0,1,1,0. Оскільки необхідні зміни лише 2, 4 і 5 елементів, то слід ско­ ристатися інформацією про перетворені пристрої керування 1,

325

2 і 4, оскільки саме вони у позиціях 2, 4 і 5 мають значення «1», а на решту елементів початкового стану заданого при­ строю не вплинуть. А які пристрої керування і скільки разів були використані для переведення пристроїв 2, 4, 5 у стан, отриманий на. останньому кроці? Ця інформація міститься у таблиці послідовностей застосування ПК (мал. 180, б): перший пристрій був застосований 6 разів (1 + 3 + 2), другий - 3 рази (0 + 2 + 1), третій - 1 (1 + 0 + 0), четвертий - 2 (0 + 1 + 1), п'ятий - 1 (1 + 0 + 0).

Як відомо, парна кількість застосувань одного і того самого пристрою не змінює початковий стан елементів заданого, а непарна переводить у протилежний стан. Скориставшись цією властивістю, отримаємо відповідь, що для переведення задано­ го пристрою керування з початкового стану 0,1,1,0,1 у кінце­ вий 0,0,1,1,0 небхідно застосувати пристрої керування 2, 3, 5.

Перевірка цієї відповіді проста. Можна піти двома шляха­ ми. Застосуємо почергово пристрої керування 2, 3, 5 у їх неперетвореному варіанті до початкового стану заданого пристрою:

01101 0 1 1 1 0 > о о о і і 1 0 0 1 1 , ю о о о 1 0 1 1 0 , о о і ю .

Як бачимо, шуканий результат отримано.

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

о т о 1 0 0 1 1 > і і ю і 1 0 1 1 0 > о ю і і .

Отримано «універсальний» пристрій керування, який замі­ нює всі три пристрої керування 2, 3, 5 і має значення «1» лише у тих позиціях, значення яких необхідно змінити на проти­ лежні у сформульованій задачі.

Останні дві перевірки зроблені лише для того, щоб практично пересвідчитися у справедливості запропонованого алгоритму.

Представимо фрагмент основної частини програми, що ре­ алізує описаний алгоритм, обмежившись випадком, коли за­ дана таблиця вхідних даних для пристроїв керування обов'яз­ ково зводиться до вигляду, у якому по головній діагоналі розміщені елементи зі значеннями 1, а решта - 0:

for і := 1 to n do

{Ініціалізація масивів ознак і результатів.}

lj>egin

 

рг[і] := 0; rez[i] := 0

 

end;

 

for і := 1 to n do

{Ініціалізація масиву послідовності застосування ПК.}

forj := 1 to n do

if і = j then s[i, j] := 1 else s[i, j] := 0;

326

{«помітити» його,} {запам'ятати його порядковий номер.} {До решти пк,} {для якиху'-й елемент має значення 1,}
{застосувати визначений ПК, перетворивши}

for j := 1 to n do

{Перетворення таблиці станів елементів ПК.}

begin

 

 

і : = 0 ;

 

 

repeat

{Визначення порядкового номера ПК,}

І іпс(І)

{який має у позиції) значення 1 і ще не використовувався}

until (і > n) or ((pk[i, j]= 1) and (pr[i]= 0));

{для перетворення.}

if І <= П then

 

{Якщо такий ПК знайдено, то}

begin

 

 

рг[і] := 1; k := і; rz[j] := k; for і := 1 to n do

if (І О k) and (рк[І, j]=1) then

for m := 1 to П do begin

pk[i, m] := pk[i, m] xor pk[k, m ] ; {елементи /-го ПК операцією XOR} S[i, m] := s[i, m] + s[k, m] {та його послідовності застосування ПК.}

end;

 

end;

 

end;

 

for і := 1 to П do

{Для елементів заданого пристрою керування,}

if St[i] <> fn[i] then

{що змінюють свої значення,}

for j := 1 to П do

{визначити загальну кількість тих ПК, які необхідно}

rez[j] := rez[j] + s[rz[i], j ] ; {застосувати для отримання кінцевого результату.} for І := 1 to П do {Визначення тих ПК, які використовуються для перетворення} if odd(rez[i]) then write(f_Out, і, ' '); {заданої таблиці непарну кількість разів.}

Логічним є запитання: чи завжди можна звести задану таб­ лицю елементів пристроїв керування до вигляду, в якому у кожному рядку і стовпці є лише по одному елементу зі зна­ ченням 1, а решта елементів мають значення 0, чи завжди сформульована задача має розв'язок? Ні, не завжди. Однознач­ ної відповіді на ці запитання дати не можна.

Розглянемо кілька окремих ситуацій. Якщо систему, яка описує пристрої керування, не можна звести до необхідного спрощеного вигляду, то це означає, що, можливо, відсутня та­ ка послідовність пристроїв керування, яка переводить заданий пристрій із початкового стану у кінцевий. Серед пристроїв ке­ рування після перетворення значень їх елементів можуть бути такі, що мають лише нульові елементи, або ж кілька елементів зі значеннями 1. Однак це може повністю задовольняти умову задачі:

-«нульові» пристрої керування взагалі не впливають на по­ шук розв'язку задачі, їх можна опустити;

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

327

Для прикладу дещо змінимо умову попередньо розглянутої задачі.

Нехай початковий і кінцевий стани заданого пристрою залишаються без змін (01101 пристрої керування > 0 Q 1 1 0 ) j & от значення останнього елемента 4-го пристрою керування змінимо з 1 на 0 (мал. 181, а). Опускаючи всі етапи перетворен­ ня вхідних даних за описаним алгоритмом, розглянемо отри­ маний результат (мал. 181, б). Спочатку проаналізуємо, чи вплинули зміни у вхідних даних на очікуваний результат вико­ нання алгоритму. Мабуть, ні, оскільки зміни зроблені для того пристрою керування, який не задіяний для перетворення по­ чаткового стану пристрою керування у його кінцевий стан.

А тепер проаналізуємо інформацію, зображену на малюн­ ку 181, б. Як бачимо, значення елементів 4-го пристрою ке­ рування перетворилися на 0, а це означає, що він взагалі зай­ вий. А от у 2-го пристрою керування два елементи мають зна­ чення 1: четвертий і п'ятий. Але самі ці елементи повинні змінити значення у заданому пристрої. Не вистачає лише пристрою керування, який би змінив значення другого еле­ мента заданого пристрою. Але це може зробити 1-й пристрій керування!

Стан елемен­

 

Послідовність

 

Стан елемен­

 

Послідовність

 

застосування

 

 

застосування

 

тів ПК

 

 

 

 

тів ПК

 

 

 

 

 

 

 

ПК

 

 

 

 

 

 

 

 

ПК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

0

1

 

1

0

 

0

0

0

 

|0

1

0

0

0

 

1

0

 

1

0

1

0

1

1

1

0

 

[0

1

 

0

0

0

 

0

0

0

1

1

 

1

і

0

0

0

1

0

0

1

1

 

0

1

0

0

 

tj

0

0

0

0

 

1

і

1

0

0

0

1

1

1

0

0

 

0

 

0

0

0

0

0

 

2

і

0

1

0

 

0

 

1

 

0

 

1

0

1

1

0

 

о

0

 

0

0

1

 

0

0

1

0

1

 

Ж

0

1

0

1

 

 

 

 

 

 

а)

 

 

 

 

 

 

 

 

 

 

 

 

б)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мал. 181

 

 

 

 

 

 

 

 

 

 

 

Отже, відповідь знайдена: звернемося до 1-го і 2-го при­ строїв керування у перетвореній таблиці. Для зведення цих пристроїв керування до перетвореного вигляду були задіяні такі ПК (табл. послідовності застосування ПК, мал. 181, б): 1-й - два рази, 2-й - один раз, 3-й - один раз, 4-й - жодного ра­ зу, 5-й - один раз. Виберемо ті ПК, які застосовувалися непар­ ну кількість разів, і отримаємо шукану відповідь: для зміни по­ чаткового стану заданого пристрою на кінцевий необхідно задіяти 2, 3 та 5 пристрої керування. Ця відповідь збіглася з по­ передньою і саме такою передбачалася.

Описана задача є дещо формалізованою. На практиці зустрічаються задачі, які можна звести до застосування описа-

328

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

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

При тестуванні алгоритму, що використовує метод виклю­ чення, необхідно передбачити ситуації, коли у перетвореній таблиці елементів пристроїв керування значення 1 знаходять­ ся на головній діагоналі, а решта елементів мають значення 0; коли немає можливості отримати таку перетворену таблицю елементів пристрою керування, однак розв'язок задачі існує; коли розв'язок задачі не існує. Всі ці варіанти можливих вхідних даних слід перевірити для різної кількості елементів пристрою керування: п < 10, п ^ 50, п < 100.

Завдання

1.Розробити і реалізувати у вигляді програми метод виклю­ чення для задачі з пристроями керування.

2.Виконати завдання 1 для пристроїв з кількістю елементів N < 10 за умови, що таблиця елементів пристроїв керування зводиться до вигляду, коли по головній діагоналі знаходять­ ся елементи зі значеннями 1, а решта елементів мають зна­ чення 0. Результат виконання програми вивести у файл.

3.Виконати завдання 1 для пристроїв з кількістю елементів N < 10 за умови, що таблиця елементів пристроїв керування не зводиться до вигляду, коли по головній діагоналі знахо­ дяться елементи зі значеннями 1, а решта елементів мають значення 0, однак розв'язок задачі існує. Результат вико­ нання програми вивести у файл.

4.Виконати завдання 1 для пристроїв з кількістю елементів N ^ 10 за умови, що задача не має розв'язку. Результат ви­ конання програми вивести у файл.

5.Виконати завдання 2-4 для пристроїв з кількістю елементів ЛГ<100.

329

Запитання для самоконтролю

1.У чому полягає суть методу виключення для системи п лінійних рівнянь з п невідомими?

2.Для якого типу задач можна застосувати метод виключення? Сформулюйте загальний вигляд цієї задачі.

3.У чому полягають основні ідеї застосування методу виключення для алгоритмічних задач?

4.У чому полягає оптимізація застосування методу виключення для алгоритмічних задач?

5.Продемонструйте покрокове виконання методу виключення для власного прикладу.

6.Наведіть фрагмент основної програми, що реалізує метод ви­ ключення для задачі з пристроями.

7.Які можливі варіанти отримання розв'язку задачі з використанням методу виключення? Проаналізуйте й обґрунтуйте свою відповідь.

8.Чи можлива відсутність розв'язку задачі при використанні мето­

s:

ду виключення?

330

Література

1.Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие для студентов зконом. спец, вузов. - М.: Вьісш. шк., 1986. -319 с.

2.Аммерал Л. Принципи программирования в машинной графи-

ке: Пер. сангл. - М.: Сол Систем, 1992. - 224 с.

З.АхоАльфред В., Хопкрофт Джон, Ульман Джеффри Д. Структу­ ри данньїх и алгоритми: Пер. с англ.: Учеб. пособие. - М.: Издательский дом «Вильямс», 2000. - 384 с.

4.БондаревВ.М., Рублинецкий В.И., Качко Е.Г. Основи программи­ рования. - Харьков: Фолио; Ростов н/Д.: Феникс, 1997. - 368 с.

5.Вентцєль Е.С. Исследование операций: задачи, принципи, методология. - 2-е изд., стер. - М.: Наука. Гл. ред. физ.-мат. лит., 1988.-208 с.

6.Зубов B.C. Справочник программиста. Базовие методи решения графовьіх задач и сортировки. - М.: Информационно-изда- тельский дом «Филинь», 1999. - 256 с.

7. Иванов В.П., Батраков А.С. Трехмерная компьютерная графика

/ Под ред. Г.М. Полищука. - М.: Радио и связь, 1995. - 224 с.

8.Караванова Т.П. Інформатика: Методи побудови алгоритмів та їх аналіз. Необчисл. алгоритми: Навч. посіб. для 9-10 кл. із поглибл. вивч. інф-ки. - К.: Генеза, 2007. -216 с.

9.Караванова Т.П. Інформатика: Основи алгоритмізації та програ­ мує.: 777 задач з рек. та прикл.: Навч. посіб. для 8-9 кл. із по­ глибленим вивч. інф-ки / За заг. ред. М.З. Згуровського - К.: Ге­ неза, 2006. - 286 с.

10.Кормен Т, Леизерсон Ч., Ривест Р. Алгоритми: Построение и анализ.-М.: МЦНМО, 2001.-960 с.

11.Липский В. Комбинаторика для программистов: Пер. с польск. - М.: Мир, 1988.-213 с.

12.Макконел Дж. Анализ алгоритмов. Вводньїй курс. - М.: Техносфера, 2002. - 304 с.

13.Маценко В.Г. Комп'ютерна графіка. Частина II: Навч. посіб.- Чернівці: Рута, 2006. - 103 с.

14.Маценко В.Г. Комп'ютерна графіка: Навч. посіб. - Чернівці: ЧНУ, 2006.-160 с.

15.Окулов CM. Программирование в алгоритмах. - М.: БИНОМ. Лаборатория знаний, 2002. - 341 с.

16.Шикин Е.В., Боресков А.В., Зайцев А.А. Начала компьютерной графики. - М.: ДИАЛОГ-МИФИ, 1993. - 138 с.