Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕОРІЯ ЦИФРОВИХ АВТОМАТІВ ТА ФОРМАЛЬНИХ МОВ..doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.72 Mб
Скачать

3.2. Висловлювання, предикати, булеві функції

ВИСЛОВЛЮВАННЯМ називається розповідне речення, яке може бути істинним або хибним. Якщо про будь-яку частину речення не можна сказати, вона істинна чи хибна, то говорять, що ВИСЛОВЛЮВАННЯ ПРОСТЕ. Наприклад, «сьогодні гарна погода». Це висловлювання просте.

Звичайно в реченні можна виділити частини, які самі являються висловлюваннями, що з’єднані сполучниками «і», «або», «інакше», «якщо…то…» і т. ін. Але розбиття складного розповідного речення на прості висловлювання треба робити за смислом, а не за словами. В реченні «у цій аудиторії присутні студенти і викладач» частинами-висловлюваннями являються (у цій аудиторії присутні студенти), (у цій аудиторії присутній викладач), які з’єднані сполучником і.

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

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

Якщо висловлювання містить змінні, то воно називається логІчНИМ вИРАЗОМ або ПРЕДИКАТОМ. Наприклад, (х більше 0). Логічний вираз (предикат) може бути істинним або хибним залежно від значення змінної х. Іншими словами, предикат – функція від змінних, яка приймає тільки два значення – {істина, хибність}. Для предикатів використовують функціональне позначення: M(x) = (x > 0).

Предикати дозволяють формалізувати ВЛАСТИВОСТІ ЗМІННИХ:

M(x) = true означає, що x володіє властивістю (x > 0), а M(x) = false означає, що х не володіє властивістю (x > 0).

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

function M(x: real):boolean; int M(float x)

begin або { if (x>0) return 1; else return ; }

M:= (x>0)

end;

БУЛЕВОЮ ЗМІННОЮ називається змінна, яка приймає значення {істина, хибність}.

БУЛЕВОЮ ФУНКЦІЄЮ називають предикат, у якого змінні є булевими.

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

Можна також сказати, що булева функція – це функція від змінних, які приймають два значення, і множина її значень складається з двох елементів. Звичайно ці два значення позначаються або {0, 1}, або {false, true}. Найчастіше позначення {0, 1} вибирають, коли неможливо сплутати логічне значення істина з числом 1. Якщо ж у тексті використовуються як числа, так і логічні значення, то вибирають друге позначення.

В алгоритмічній мові Паскаль є дві логічні константи false і true та тип Boolean = {false, true}, за допомогою якого можна вводити логічні змінні:

var x, y: Boolean;

Сполучники І, АБО, НІ, АБО…АБО…, ЯКЩО…, ТО… використовуються в логіці.

Суть цих сполучників така:

  • A I B – істинно, якщо істинні і А, і В;

  • А АБО В – істинно, якщо істинне А, або істинне В, або істинні обидва;

  • НІ А – істинно, якщо А хибне;

  • АБО А, АБО В – істинно, якщо істинне А або В, але не обидва зразу;

  • ЯКЩО А, ТО В – хибно, якщо істинне А і хибне В. У всіх інших випадках це істинно. Наприклад, ЯКЩО хибність, ТО B – істинно незалежно від значення В. Говорять у зв’язку з цим, що із хибності слідує що завгодно.

Сполучникам І, АБО, НІ, АБО…АБО… в алгоритмічній мові Паскаль відповідають булеві оператори: and, or, not, xor – «і», «або», «ні», «розподілювальне або». Оператор and називається також КОН’ЮНКЦІЄЮ, оператор or – ДИЗ’ЮНКЦІЄЮ, оператор not – ЗАПЕРЕЧЕННЯМ. Вирази виду (x or y), (x and y), ((x and not (y)) or (not (x) and y) і т. ін. – називаються булевими.

Функція f, яка залежить від п змінних x1, x2, …, xn, називається булевою, або перемикаючою, якщо сама функція f і будь-який з її аргументів приймають значення тільки з множини {0, 1}. Аргументи булевої функції також називаються булевими.

У булевих виразах використовуються оператори: and, or, not, xor – «І», «АБО», «НІ», «виключне АБО». Кожний булевий вираз задає булеву функцію. Але правильно і те, що кожна булева функція може бути задана булевим виразом.

Найбільш поширеними способами подання булевих функцій є: табличний, метод перелічення, цифровий еквівалент, аналітичний, семантичне дерево.

При використанні табличного способу булева функція f(x1, …, xn) задається таблицею істинності (табл. 3.1), у всіх стовпцях якої, крім крайнього правого, представлені всі можливі двійкові набори довжини п, а в крайньому правому стовпці вказуються значення функції на цих наборах.

Таблиця 3.1 – Таблиця істинності функції f1

x1

x2

x3

f1

0

0

0

0

0

0

1

0

0

1

0

1

0

1

1

1

1

0

0

0

1

0

1

1

1

1

0

0

1

1

1

1

Під двійковим набором розуміється сукупність значень аргументів x1, x2, …, xn булевої функції f. Двійковий набір має довжину n, якщо він поданий n елементами з множини {0, 1}. У табл. 3.1 перелічені всі двійкові набори довжини три відповідно.

Іноді двійкові набори в таблиці істинності булевої функції зручно представляти номерами наборів. Запишемо аргументи x1, x2, …, xn в порядку збільшення їх індексів. Тоді будь-який двійковий набір можна розглядати як ціле двійкове число N

.

Воно називається номером набору. Наприклад, двійкові набори 0101 і 1000 мають номери 5 і 8 відповідно. Очевидно, що будь-яка булева функція може бути задана переліченням наборів, які приймають, наприклад, одиничне значення. Функція f1 в цьому випадку може бути представлена таким чином: f1 (x1, x2 ,х3) = (2, 3, 5, 7)1.

Булеву функцію, задану на всіх її наборах, називають повністю визначеною. В табл. 3.1 наведений приклад повністю визначеної булевої функції.

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

Легко переконатись, що якщо булева функція f2 не визначена на т = 3 наборах аргументів, то шляхом її довизначення можна отримати 2m різних повністю визначених функцій. В табл. 3.2 наведений приклад не повністю визначеної булевої функції чотирьох змінних.

Таблиця 3.2 – Таблиця істинності функції f2

x1

x2

x3

х4

f2

0

0

0

0

0

0

0

0

1

0

0

0

1

0

*

0

0

1

1

1

0

1

0

0

0

0

1

0

1

*

0

1

1

0

1

0

1

1

1

0

1

0

0

0

1

1

0

0

1

*

1

0

1

0

0

1

0

1

1

0

1

1

0

0

0

1

1

0

1

1

1

1

1

0

1

1

1

1

1

0

Цифровий еквівалент подання функції можна отримати, якщо виписати усі значення функції, починаючи зі старшого номера двійкових наборів, а потім отриману двійкову послідовність перевести в десяткове число. Наприклад, в табл. 3.1 значення f1(x1, х2, x3) являють собою послідовність 101011002 => 128 + 32 + 8 + 4 = 17210.

Аналітичне подання булевої функції являє собою логічну формулу. Наприклад, аналітичне подання функції:

f1(x1, х2, x3) = .

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