Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретна математика

.pdf
Скачиваний:
149
Добавлен:
17.03.2016
Размер:
3.51 Mб
Скачать
Cтрічка
К П

Розрізняють МП-перетворювачі і МП-розпізнавачі. У першому випадку автомат в процесі функціонування переглядає вхідну програму і в кожному такті видає вихідний символ на вихідну стрічку, реалізуючи деяке відображення E* B*, де E, B – вхідний і вихідний алфавіти відповідно.

В другому випадку автомат повинен допускати (розпізнавати) слова тільки визначеної мови. Тоді автомат працює з вхідною програмою, що перед початком його функціонування записується на вхідну стрічку, і допускає цю програму, якщо послідовність тактів приводить його до заключної конфігурації. Часто під МП-автоматом розуміють саме МП-розпізнавач. Далі, якщо не обумовлене супротивне, під МПавтоматом будемо розуміти саме МП-розпізнавач.

У будь-якому випадку вхідна голівка МП-автомата тільки читає символи вхідної стрічки.

104.М шин Т'юрінг

Машина Т‘юрінга - це нескінчений автомат. Як математичний об'єкт вона являє собою таку систему:

М = <Е, B, А, Q, f >,

де Е - вхідний алфавіт; B - вихідний алфавіт; А - робочий алфавіт; Q - множина станів; функція f : A Q

A Q {R, L, S}, тут R, L, S означають деякі операції руху стрічки машини Т‘юрінга. Як пристрій машина Т‘юрінга складається з таких складових:

КП - пристрій керування, який може знаходитися в одному зі станів множини Q = {Q0, Q1, ... , Qr}. Множина Q скінчена.

КГЧЗ - комбінована голівка читання-запису.

КГЧЗ

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

Стрічкопротяжний механізм може рухати стрічку на одну клітинку праворуч (R), ліворуч (L) чи залишати на місці (S).

Машина оперує в дискретні моменти часу 0, 1, 2, ... . У кожен такий момент часу машина знаходиться в одному з r+1 станів. Стан q0 - пасивний, всі інші стани активні.

Починаючи з моменту 0 машина в кожен момент оглядає одну з клітинок. Машина функціонує тільки в активному стані. Потрапляючи в пасивний стан, вона припиняє роботу. У кожен момент часу,

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

1)надрукувати в клітці, що оглядається, один із символів робочого алфавіту чи стерти вміст, чи стерти записаний символ і надрукувати інший, чи нічого не робити в клітці, що оглядається;

2)зрушити стрічку на клітинку вліво чи вправо, або залишити на місці;

3)перейти в інший стан чи залишитися в колишньому стані.

Назвемо стан машини з вмістом клітки, що оглядається, у даний момент конфігурацією машини Т‘юрінга в даний момент. Стан машини Т‘юрінга і вміст усієї стрічки назвемо ситуацією машини Т‘юрінга.

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

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

Розглядаємо алфавіт А1 = { , I}. Натуральне число представляється послідовністю символів I, що знаходяться в сусідніх клітинках. Машину підготовляють до роботи встановлюючи в момент часу 0 у стан 1, коли оглядається остання з кліток, що представляють число.

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

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

1

0

}

} }

а

а с

121

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

Прикл д обчислення функції м шиною Тьюрінг . Ми спробуємо розглянути машину Тьюринга, що буде обчислювати функцію f (а) = а + 1, тобто це повинна бути машина, що починає з конфігурації

 

 

1

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і закінчує конфігурацією

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}а

} }

 

а а+1

Якщо машина буде починати роботу над будь-яким числом а, представленим послідовністю символів I довжиною а+1, і закінчувати обчислення ситуацією, коли після цього числа і після порожньої клітки випливає послідовність символів I довжиною а+2 для представлення числа а+1, то, мабуть, що ця машина

обчислює функцію f (а) = а + 1.

Машина Тьюринга, для якої визначений вхідний, вихідний і робочий алфавіт А1, множин станів якої визначено як множина {q0, ... , qr} у такий спосіб може бути задана тільки заданням функції f. Функція f, звичайно, задається таблицею дій. Таблицю дій продемонструємо на розглянутому прикладі:

Стан

У клітці, що огляється, □

У клітці, що огляється, I

1

З0

R2

2

R3

R9

3

PL4

R3

4

L5

L4

5

L5

L6

6

R2

R7

7

R8

ER7

8

R8

R3

9

PR9

L10

10

C0

ER11

11

PC0

R11

C - стояти;

R - праворуч;

L - ліворуч;

P - друкувати I;

Е - стерти I.

Розглянемо приклад роботи побудованої машини над словом II.

Момент часу.

Ситуація машини і стрічки.

0

0 1 11 0 0 0 0 0

1

0 1 1 02 0 0 0 0

2

0 1 1 0 03 0 0 0

3

0 1 1 04 1 0 0 0

4

0 1 15 0 1 0 0 0

5

0 16 1 0 1 0 0 0

6

0 1 17 0 1 0 0 0

7

0 1 07 0 1 0 0 0

8

0 1 0 08 1 0 0 0

9

0 1 0 0 18 0 0 0

10

0 1 0 0 1 03 0 0

11

0 1 0 0 14 1 0 0

12

0 1 0 04 1 1 0 0

13

0 1 05 0 1 1 0 0

14

0 15 0 0 1 1 0 0

15

06 1 0 0 1 1 0 0

16

0 12 0 0 1 1 0 0

17

0 1 09 0 1 1 0 0

18

0 1 1 09 1 1 0 0

19

0 1 1 1 19 1 0 0

20

0 1 1 110 1 1 0 0

122

21

0 1 1 0 111 1 0 0

22

0 1 1 0 1 111 0 0

23

0 1 1 0 1 1 011 0

24

0 1 1 0 1 1 10 0

Використовуючи таблицю дій машини Тьюринга, ми можемо обчислити значення функції f(а) = а + 1 для будь-якого а. Таким чином, якщо побудована таблиця дій, то обчислення не являє собою особливої складності. По виду таблиці дій, навіть для такої простої функції, як а + 1 можна припустити, що створення машини Тьюринга для більш складних функцій задача не проста.

Машина Т‘юрінга найбільш «допитлива» із всіх автоматів, що і визначає її використання в якості уточнювача поняття обчислюваності функцій. У відношенні машини Т‘юрінга доведення обчислюваності заданої функції зводиться до теоретичного обґрунтування одержання машини Т‘юрінга, що обчислює задану функцію (доведення неможливості побудови машини Т‘юрінга для заданої функції).

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

а) побудувати машини Т‘юрінга для найпростіших операцій типу заповнення символами порожніх кліток між двома символами;

б) визначити функцію за допомогою простих операцій над декількома вихідними типами функцій; в) побудувати машину Т‘юрінга для кожної з вихідних функцій і операцій;

г) побудувати машину Т‘юрінга для складної функції, виходячи з раніше побудованих машин для вихідних функцій і операцій.

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

105.Алгоритм Кок -Янгер -К с мі

Ідея алгоритму досить проста: якщо задана КВ-граматика G = D, E, P, d0 в НФ Хомського без правил виду di , то для ланцюжка на вході: e1e2…en E* побудувати трикутну таблицю розбору, елементи якої tij, де 1 i n, 1 j n – i + 1, будуть підмножинами D: de tij тоді і тільки тоді, коли з de виводиться підланцюжок довжиною j символів, що починається із символу ei. Тобто

de + eiei+1…ei+j–1.

Вихідний ланцюжок e1e2…en належить L(G) тоді і тільки тоді, коли d0 t1n.

Таким чином, потрібно обчислити таблицю розбору Т і визначити приналежність d0 множині t1n, де n – довжина вхідного ланцюжка.

Алгоритм КЯК. Вхід алгоритму: КВ-граматика G = D, E, P, d0 в НФ Хомского без правил di , ланцюжок = e1e2…en E+.

Вихід алгоритму: Таблиця розбору Т. 1.Установити j = 1, tij = {de/de ei P}, i = 1,…,n 2.j = j + 1

3.Якщо j<n, то перейти на крок 4, інакше кінець. 4.Установити:

tij = {de / k, 1 k j de drdq P dr tik dq ti+k, j–k}.

Перейти на крок 2.

Тому що на кроці 4 для tij виконується умова 1 k j, то k і j-k менше j, а значить tik і ti+k, j–k обчислюються раніше, ніж tij і алгоритм буде працювати.

Приклад. Розглянемо граматику G = {d0, d1}, {a, b}, P, d0 , де

Р: d0 d1d1 d0 d1 d0 d0 b

d1 d0 d1 d1 d1d0

d1 a

Розглянемо роботу алгоритму для вхідного ланцюжка: abaab.

 

d1

d0

d1

d1

d0

=1

 

 

 

 

 

 

i=1

i=2

i=3

i=4

i=5

 

 

 

 

 

 

 

a

b

a

a

b

123

 

d0d1

 

d1

 

d0

 

d0d1

 

 

=2

 

 

 

 

 

 

 

 

 

 

d1

 

d0

 

d1

 

d1

 

d0

=1

 

 

 

 

 

 

 

 

 

 

i=1

 

i=2

 

i=3

 

i=4

 

i=5

 

 

 

 

 

 

 

 

 

 

 

a

b

 

a

a

 

b

 

d0d1

 

d0d1

 

d1

 

 

 

 

=3

 

 

 

 

 

 

 

 

 

 

d0d1

 

d0d1

 

d0

 

d0d1

 

 

=2

 

 

 

 

 

 

 

 

 

 

d1

 

d0

 

d1

 

d1

 

d0

=1

 

 

 

 

 

 

 

 

 

 

i=1

 

i=2

 

i=3

 

i=4

 

i=5

 

 

 

 

 

 

 

 

 

 

 

a

b

 

a

 

a

 

b

Видача розбору:

 

 

 

 

 

 

 

 

Алгоритм, що породжує лівий розбір, який відповідає виводу: S + e1e2…en, i = 1, j=n список ―розбір‖ - порожній.

Якщо S tij, то перехід на крок 2, інакше видати «Ланцюжок невиведений».

Якщо j=1 і nl ei P, причому це правило має номер m, то до «розбору» приписуємо m. Перехід на крок7. k=1.

Якщо nr tik, nq ti+k, j–k і nu nr nq P, причому це правило має номер m, то приписуємо в список «розбір» m, підрозбір (i,k,nr), підрозбір (i + k, j – k, nq). Перехід на крок 7.

k=k+1

Якщо k j – 1, то перехід на крок 4.

Якщо в списку «розбір» є елемент виду: підрозбір (g, f, nv) (якщо їх кілька вибираємо самий лівий), то i=g, j=f, nl = nv і перехід на крок 2.

Видача розбору у виді списку «розбір». Граматика:

(1)S BAb

(2)S CAc

(3)A BA

(4)A a

B a C a

Породжує ланцюжок виду:

a ab, n 2

n

a ac, n 2

n

Граматика:

S Ab

S Ac

A AB A a B a

Породжує ланцюжок виду:

a ab, n 2

a ab, n 2

 

 

n

n

106.ІХ(к)-гр м тики

Почнемо з визначення LL(k)–граматик. Спочатку обумовимося, що розглянуті нами граматики однозначні. Розуміти під цим будемо існування для кожної виведеної в граматиці G = N, E, P, S ланцюжка= e1e2…en тільки однієї послідовності лівовививідних ланцюжків 0 1m, такий що S= 0, i i+1, 0 i m, m= . Тут p0p1…pm–1 – лівий розбір ланцюжка.

До LL(k)- граматик ми віднесемо такі граматики, що дозволяють у процесі побудови згаданих вище послідовностей лівовививідних ланцюжків у момент аналізу, коли ми вже пройшли перші j вхідних символів і порівняли їх з першими j символами ланцюжка i=e1…ejnr , nr N, однозначно вибрати правило для розгорнення нетермінала nr на основі e1…e2 і k вхідних символів з позиції ej, тобто ej+1,… ej+k.

124

Визначення. КВ-граматику G = N, E, P, S назвемо LL(k)-граматикою, якщо для деякого натурального k з існування таких двох лівих виводів:

S * nr * x S * nr * y,

що виведені в G з х і у слова довжини k співпадають, випливає, що = .

Іншими словами, граматику G назвемо LL(k)-граматикою, якщо для заданого слова nr (N E)*, де - термінальне слова, і перших k символів (якщо вони існують), що виводяться з nr , існує не більш одного правила виводу, застосовуючи яке для розгорнення nr, ми одержимо вивід слова, який починається із символу і триває k терміналів.

Визначення. Граматику назвемо LL-граматикою, якщо вона є LL(k)-граматикою для деякого k з множини натуральних чисел.

Приклад.

G1=<{S,n1},{0,1},{S 0n1S,S 1,n1 0,n1 {Sn1},S}> - LL(1) -граматика. G2=<{S,n1},{0,1},{S ,S 01n1,n1 S00,n1 1},S> - LL(2) -граматика. G3=<{S,n1,n2},{0,1,a,b},P,S>, де

Р: S n1

n2 an2bb

S n2

n2 1

n1 an1b

 

n1 0

не є LL – граматикою.

Встановити ці факти можна інтуїтивно, моделюючи читання довільних словів у відповідних вхідних алфавітах.

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

Визначення. КВ–граматика без ni правил називається простою чи розділеною LL(1) – граматикою, якщо для кожного нетермінала всі його альтернативи починаються різними термінальними символами.

Випадок із граматикою G2 складніше. Однак, структуру виведених у ній слів можна представити в

наступному виді:

01 0100 00, n 1

n

n

01 0100 00, n 2

n n 1

107.Висловлюв ння

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

Якщо те, що стверджується в судженні має місце в дійсності, то судження істинне, інакше -

хибне.

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

Тому тут використовується термін "висловлювання".

Означення. Висловлювання - речення певної мови, яке розглядається у зв`язку з встановленням його істинності (хибності).

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

Для відображення відношень між предметом, словом і поняттям звичайно використовують семантичний трикутник:

Аналогічно відношення між висловлюваннями, їх змістом і ситуаціями дійсності можна продемонструвати семантичним трикутником:

125

Приклади висловлювань українською мовою:

1.Земля крутиться.

2.НТУУ ―КПІ‖ розташований на проспекті Перемоги.

3.Париж - столиця Англії.

4.Чубарук присутній на нашій лекції.

5.Якщо вірне те, що коли йде дощ, то асфальт мокрий, то вірне також і те, що коли асфальт сухий, то дощ не йде.

Ці приклади надають нам можливість глибше зрозуміти властивості висловлювань. Так, висловлювання 1, 2, 5 - істинні, а висловлювання 3 - хибне. Висловлювання 4 може бути істинним або хибним залежно від ситуації, з якою воно пов`язане. Висловлювання 1, 2, 3, 4 - прості, тому що не містять в собі інших висловлювань. Висловлювання 5 складне - воно містить в собі декілька простих висловлювань, зокрема "Йде дощ", "Асфальт мокрий" та інші.

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

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

До певної міри аналогічні функтори є і в формальних мовах, які використовуються для формулювання висловлювань. В мовах логіки висловлювань ці функтори звичайно називають логічними зв‘язками. Ми розглянемо їх нижче, коли будемо готові дати означення цим зв`язкам. Означення логічних зв‘язок надасть нам можливість більш детально означити і складні висловлювання.

Ще зазначимо, що в логіці висловлювань логічні істини часто називають абсолютно істинними висловлюваннями.

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

108.Зв'язки т істинність

Тоді кожне просте висловлювання можна позначити літерою А, В, С, ... і розглядати як змінну, яка набуває значення з множини істинність, хибність . Далі для зручності приймемо для істинності позначення Т (від англійського слова ―true‖), а для хибності - F (від англійського слова ―false‖). Таким чином, утворення складного висловлювання із простих за допомогою зв`язок ми можемо означити у вигляді відповідних операцій над T та F. Через те, що прості висловлювання можуть набувати значеня T або F, значення істинності складного висловлювання, утвореного за допомогою зв`язки з простих, повинно бути визначеним для кожного набору значень істинності цих простих висловлювань. Кожна зв`язка, крім заперечення, ставить у відповідність двом висловлюванням, які вона поєднує, одне із двох значень T або F залежно від значення істинності цих висловлювань і смислу зв`язки. Зв`язка заперечення перетворює висловлювання в його заперечення.

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

При визначенні зв‘язок ми використовуємо смисл, який вкладається в функтори природної мови, але при цьому є деякі відмінності.

В логіці висловлювань операції або зв`язки, за допомогою яких утворюються складні висловлювання, звичайно вибираються з перелічених нижче (перший стовпчик - символічний запис; другий стовпчик - прочитання зв`язки українською мовою; третій стовпчик - назва зв`язки; четвертий стопвчик - інші символи, які використовуються в науковій та навчальній літературі для позначення зв`язки):

А ~ В А "еквівалентне" В еквівалентність , ,

126

 

А В

А "визначає" В

імплікація

 

,

 

 

А В

А "і" В

кон`юнкція

 

, , and, і

 

 

А В

А "або" В

диз`юнкція

 

, or, або

 

 

 

A

"не" А

заперечення

, not, не

 

 

Означаються зв`язки формально за допомогою таблиці:

 

A

 

B

 

A

А В

 

А В

 

А В

A~B

F

 

F

 

T

F

 

F

 

T

T

F

 

T

 

T

F

 

T

 

T

F

T

 

F

 

F

F

 

T

 

F

F

T

 

T

 

F

T

 

T

 

T

T

Більш детально розглянемо співвідношення зв`язок та функторів.

1.З перечення.

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

2. Кон`юнкція.

Складне висловлювання А В істинне тоді і тільки тоді, коли істинні обидва висловлювання А та В. Очевидно, що вона означена на основі функтора природної мові "і" та вкладеного в нього змісту.

3. Диз` юнкція.

Висловлювання А В істинне, якщо істинне щонайменше одне з висловлювань А чи В. Означена на основі функтора природної мови "або" та вкладеного в нього змісту. Але треба пам`ятати, що це "або" повинно бути не виключаючим.

4. Імплік ція.

На перший погляд ця зв‘язка означена на основі функтора природної мови "якщо ... , то ...". Однак цей функтор має на увазі причинний зв`язок, тобто наявність висновку при наявності причини. Для цього було б досить 3-го та 4-го рядків таблиці. Перші два рядки таблиці використовуються, щоб зробити означення зв‘язки повним, виходячи з того, що з точки зору логіки із хибного виводиться все що завгодно.

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

Якщо справедлива і обернена теорема В А, то при умові істинності В встановлюється істинність А. Тут встановлюється неможливість ситуації з другого рядка таблиці означення таблиці зв`язки імплікація. Тоді та частина таблиці, що залишилася набуває вигляду:

А

В

А В

 

 

 

F

F

T

 

 

 

T

T

T

Але ця таблиця нагадує таблицю для зв`язки еквівалентності, коли виключені ситуації рядків, в яких А~В набуває значення F. Таким чином, якщо доведені пряма А В, та обернена В А теореми, то А~В є логічною істиною.

Тому пряма і обернена теореми можуть формулюватися у вигляді А~В, але доведення їх базується

на доведенні того, що А В та В А є логічними істинами.

 

Варто ще нагадати, що протилежна теорема для А В буде мати вигляд

А B, а якщо пряма

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

підкреслити її подвійну роль. Вона виражає не тільки логічний зв`язок двох висловлювань, але й структуру міркувань. В останньому випадку в А В формула А розглядається як засновок (антецедент), а формула В як висновок (консеквент). Тому в математиці в загальному випадку використовувати вираз А В не можна, тому що формули пов`язані чисельними відношеннями певного нелогічного формалізму. Тут краще використовувати вираз A B.

5. Еквів лентність.

Висловлювання А~В істинне тоді і тільки тоді, коли значення істинності А та В співпадають. Означена на основі функтора природної мови "тоді і тільки тоді, коли"("для того щоб ... , необхідно і достатньо ...") та вкладеного в ньго змісту.

Як ми бачили, у вигляді А~В формулюють одночасно пряму і зворотню теореми. Зв`язки , , ,

~ будемо називати двомісними, а зв`язку - одномісною.

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

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

127

109.Т бличний метод вст новлення істинності

Отже, почнемо з точного означення складного висловлювання. Як ми бачили, складні висловлювання A, А В, А В, А В, А~В можна одержати з простих висловлювань А, В за допомогою

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

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

Означення складного висловлювання:

а) будь-яке просте висловлювання є складним висловлюванням;

б) якщо А, В - складні висловлювання, то (A), (B), (А В), (А В), (А В), (А~В) є також складними висловлюваннями;

в) інших складних висловлювань, ніж визначених за допомогою вище наведених правил а), б),

немає.

В цьому означенні правило а) задає вихідні складні висловлювання, а правило б) - механізм побудови все нових складних висловлювань з побудованих раніше.

Таким чином, щоб визначити, чи є певний вираз, який складаєьться з літер А, В, С, ... та логічний зв`язок, складним висловлюванням, його треба побудувати за допомогою правил а), б) означення складного висловлювання.

Наприклад, маємо вираз ((А (В С)) ~ (В (D (С)))). Доведенням того, що це є складне висловлювання є така послідовність виконання правил а), б):

1)А, В, С, D - складні висловлювання (за правилом а));

2)(В С) - складне висловлювання (за правилом б));

3)С - складне висловлювання (за правилом б));

4)(D (С)) - складне висловлювання (за правилом б));

5)(В (D (С)))) - складне висловлювання (за правилом б));

6)(А (В С)) - складне висловлювання (за правилом б));

7)((А (В С)) ~ (В (D (С)))) - складне висловлювання (за правилом б)).

Зазаначимо, що утворювані складні висловлювання беруться в дужки. Якщо дотримуватися цього правила, то одержуватимемо висловлювання в повному дужковому запису. Найбільшу глибину вкладення дужок назвемо порядком складного висловлювання. Наприклад, висловлювання ((А (В

С)) ~ (В (D (С)))) - має порядок 4, а висловлювання (С) - порядок 1. Щоб зберегти універсальний підхід до всіх висловлювань будемо вважати, що прості висловлювання мають порядок 0.

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

меншого на 1 за допомогою зв`язки , або з двох висловлювань, хоч би одне з яких має порядок менший на 1, за допомогою однієї з двомісних зв`язок.

Складні висловлювання звичайно записуюються у вигляді виразів, складених з простих висловлювань та логічних зв`язок. Інколи настає потреба позначити складне висловлювання, наприклад, при формулюванні означень (тут потрібно позначити будь-яке складне висловлювання) чи просто для скорочення опису його особливостей (тут потрібно позначити конкретне складне висловлювання). У такому випадку, щоб відрізняти позначення складних висловлювань від простих висловлювань, будемо використовувати літери А, В, С,...

Інколи будемо говорити, що висловлювання А більш складне, ніж висловлювання В, якщо А утворене з В за допомогою заміни простого висловлювання на складне.

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

128

Наприклад, визначення значення істинності складного висловлювання (А ((В С) (С (А))))

при хибних простих висловлюваннях А, В, С буде мати такий вигляд:

(F ((F F) (F (F)))) (F ((F F) (F T)))

(F (F (F T))) (F (F T))

(F T) T

Інколи від повного дужкового запису складного висловлювання можна відмовитися, зберігши вірний порядок виконання логічних операцій за рахунок введення рангу зв`язок в бік зменшення: ~, ,

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

Наприклад, висловлювання А В С у повному дужковому запису буде мати вигляд ((А В) С), а висловлювання A В~С D - вигляд (((A) В)~(С D)). Таким чином, відмовитися від повного дужкового запису для висловлювання (А (В С)), використовуючи ранг зв`язок, ми не маємо змоги.

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

А

В

С

(А ((В С) (С ( А))))

F

F

F

T

F

F

T

T

F

T

F

T

F

T

T

T

T

F

F

T

T

F

T

F

T

T

F

T

T

T

T

F

Недоліком табличного методу є великі розміри таблиць істинності, які для складних висловлювань, що утворені з n простих висловлювань, мають 2n рядків. Тому виправданим є пошук шляхів збільшення ефективності процесу визначення істинності складних висловлювань.

110.Алгебр їчний метод вст новлення істинності

Повернемося до наведеного вище прикладу. Обидва висловлювання мають однакові таблиці істинності, а оскільки нас цікавлять тільки значення істинності, то, очевидно, зручніше використовувати для запису і аналізу висловлювання В. Узагальнимо отриманий за допомогою прикладу результат: одну і ту ж таблицю істинності можуть мати висловлювання різної складності. І всі ці висловлювання з точки зору істинності для нас однакові. Очевидно, що таких множин теж може бути певна кількість (множина), і вони не перетинаються, в той же час складаючи всю множину висловлювань. Інакше кажучи, ми маємо розбиття на всій множині висловлювань, причому в кожній підмножині об`єднуються висловлювання, які мають однакові таблиці істинності, а деякі ще й найзручнішу для нас структуру. Перехід від однієї структури до іншої - це деяке структурне перетворення висловлювання, причому таке перетворення, яке залишає висловлювання в тій же підмножині розбиття. Такі перетворення характерні для алгебраїчних систем. Для переходу до алгебр, які можна використовувати для аналізу висловлювань, треба знайти відповідну алгебраїчну систему.

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

Так, в нашому прикладі для спрощення (А А) В можна використати властивість операції заперечення і замінити А А на F, а потім за допомогою властивості виділеного елементу F, замінити F В на В.

Для подання властивостей операцій булевої алгебри треба ввести означення відношення тотожності на множині висловлювань.

Означення. Нехай висловлювання А та В утворені з простих висловлювань А1, А2, ..., Аn. Висловлювання А і В будемо називати тотожніми і позначати А = В, якщо висловлювання А і В мають однакові таблиці істинності.

Варто зауважити, що в наведеному означенні не вимагається, щоб кожне з висловлювань А та В включало кожне з простих висловлювань А1, А2, ..., Аn. Але кожне з простих висловлювань А1, А2, ..., Аn

129

має належати висловлюванню А або висловлюванню В . Якщо висловлювання А, В абсолютно істинні (хибні), то вони можуть складатися з різних простих висловлювань.

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

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

Тепер конкретизуємо нашу мету:

1)побудувати алгебраїчну систему, носієм якої буде множина всіх висловлювань, а операціями - логічні зв`язки;

2)дослідити властивості зв`язок та можливості використати їх для тотожніх перетворень складних висловлювань з метою їх спрощення;

3)сформулювати процедуру спрощення складних висловлювань.

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

111.Булев лгебр висловлюв нь

Ми будемо будувати булеву алгебру висловлювань, використовуючи відомі нам означення алгебри Буля, за яким під булевою алгеброю розуміють алгебраїчну систему <R, , , , 0, 1>, де R - множина (носій алгебри), 0 та 1 - елементи R (виділені елементи), та - бінарні, а - унарна операції, відносно яких виконуються вісім груп властивостей, якими б не були елементи носія x, y, z:

1)ідемпотентність: x x = x, x x = x;

2)комутативність:

x y = y x,

x y = y x;

 

3)

асоціативність:

 

 

 

(x y) z = x (y z),

(x y) z = x (y z);

4)

дистрибутивність:

 

 

x (y z) = (x y) (x z),

x (y z) = (x y) (x y);

5)властивості виділених елементів: x 0 = 0, x 1 = x,

x 0 = x, x 1 = 1;

6)властивості унарної операції:

x x = 0,x x = 1;

7)властивість подвійної унарної операції:

x x;

8)правила де Моргана

(x y) = x y,

(x y) = x y.

Варто нагадати,

що в цьому означені використовуються абстрактні операції. Тобто вимагається

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

Так, якщо замість носія вибрати множину P(U) всіх підмножин деякої універсальної множини U, то відносно операцій над множинами, відповідно, перетину, об`єднання, доповнення виконуються зазначені вище вісім груп властивостей, якщо за виділені елементи 0 та 1 взяти, відповідно, порожню множину та універсальну множину U. Цю алгебраїчну систему називають алгеброю Кантора і вона подібна (або, як говорять алгебраїсти, ізоморфна) алгебрі Буля.

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

Беручи до уваги означення складних висловлювань, почнемо формування носія з множини R0 всіх простих висловлювань. Нехай R1 - множина всіх складних висловлювань, які утворені з висловлювань

R0 за допомогою зв`язок ~, , , , так, щоб будь-яке висловлювання, утворене із R1 за допомогою

будь-якої із зв`язок ~, , , , також належало R1. Отже, мається на увазі, що формування множини R1 - це послідовний процес реалізації правил побудови складних висловлювань, коли при наступних застосуваннях правил використовуються результати попередніх застосувань.

Очевидно, множина R0 R1 охоплює всі висловлювання, які ми можемо розглядати. Таким чином, R = R0 U R1 - це носій нашої алгебри.

Отже, на множині R задані логічні операції ~, , , ,. Крім того на множині висловлювань R має місце відношення тотожності висловлювань, яке ми ввели в попередній лекції. На роль бінарних булевих операцій звичайно претендують кон`юнкція та диз`юнкція, а на роль унарної булевої операції -

130