Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмізація та програмування.doc
Скачиваний:
31
Добавлен:
16.11.2019
Размер:
3.81 Mб
Скачать

1.1.2. Алфавітні оператори

Алфавітним оператором (або відображенням) називають будь-яку відповідність (функцію), яка зіставляє слова в тому самому або в іншому алфавіті.

Алфавітні оператори мають різні особливості залежно від того, які вихідні слова вони зіставляють із вхідним.

Якщо алфавітний оператор зіставляє із вхідним словом лише одне вихідне, він є однозначним.

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

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

Найпростіші відображення — це посимвольні (політерні), тобто такі, що зіставляють символи двох різних алфавітів.

Потім ідуть відображення, які зіставляють із символом вхідного алфавіту слово вихідного алфавіту. До них належать так звані кодуючі відображення, застосування яких називають кодуванням. При кодуванні кожний символ аi вхідного алфавіту А зіставляється із послідовністю bi1, bi2 ... b символів алфавіту В, тобто словом в алфавіті В. Це слово можна назвати кодом символу аi, якщо

1) кожному символу відповідає тільки одне слово;

2) різним символам алфавіту А відповідають різні слова в алфавіті В;

3) код будь-якого символу алфавіту А не збігається з жодним початковим відрізком кодів інших символів цього алфавіту.

Дотримання цих умов дозволяє однозначно виконати зворотній процес — декодування. Наприклад, нехай є два алфавіти А = {a, b, c, ..., z} та В = {, , , ..., }, а також відображення а  ; b  ; с  ;... Нехай ми маємо вихідне слово . Яким було вхідне слово? аbа чи са? Неоднозначність випливає з того, що код символу а збігається з початковим відрізком коду с. Отже, ці відображення не є кодуючими.

Таких складностей можна уникнути, якщо прийняти, що коди мають однакову довжину, отже, умова 3 буде дотримуватись автоматично.

Кодування дозволяє звести вивчення довільних алфавітних відображень у якомусь стандартному алфавіті, наприклад у двійковому. При цьому можна визначити мінімальну довжину кода, якщо відомі кількості літер вхідного та вихідного алфавітів.

Нехай А — довільний алфавіт, що має n літер; В — стандартний алфавіт, що має m літер. То завжди можна знайти число k таке, щоб задовольнити нерівність mk>n, де mk — кількість різних слів довжини k в алфавіті, що складається з m букв. Якщо алфавіт В двійковий, алфавіт А — латинський (26 літер), то 2k >26, виконується для k>5. Тобто всі літери алфавіту А можна закодувати словами алфавіту В довжиною 5 літер: 00001, 00010 ... 11010.

Існує теорема, за якою кожному алфавітному оператору в алфавіті А відповідає алфавітний оператор в алфавіті В, спряжений з ним. Це дуже важлива теорема, бо вона дозволяє будь-яку послідовність оператора перетворення інформації в одному алфавіті (А) замінити послідовністю операторів перетворення інформації в іншому алфавіті (В) з попереднім кодуванням вхідної інформації (А  В), а потім декодуванням вихідної інформації (В  А).

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

Однак є важливий момент. Алфавітний оператор тільки вказує, яке вихідне слово ставиться у відповідність деякому вхідному. А от як це вихідне слово отримати, алфавітний оператор не говорить, тобто це свого роду позначення Y = f(х). За якими правилами визначити оце f(х), — невідомо. Так от:

Алфавітні оператори, що задаються за допомогою системи правил, називають алгоритмами.

Наприклад, можна систему правил задати як таблицю відповідності (словники, шрифти ...), як формулу (Y = Х2, тобто ХХХ, Х = 1, 2, ..., n) або просто перелічити правила гри у шахи, якими можна скористатися, щоб від початкового положення фігур на дошці прийти до такого, коли супротивник втрачає короля, тобто програє.

Отже, на відміну от алфавітного оператора, для якого головним є встановлення відповідності між вхідними і вихідними словами, для алгоритму головним є спосіб, за яким ця відповідність встановлюється.

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

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

Два алгоритми вважаються еквівалентними, якщо у них збігаються алфавітні оператори, а способи їх завдання (реалізації) не збігаються (наприклад, розв’язання задач різними способами).

Самозмінювані алгоритми — це такі, що в процесі реалізації не тільки змінюють інформацію, а й змінюються самі. Це вже перетворення алгоритмів.

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