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 с.