Критерій Поста

Матеріал з testwiki
Версія від 13:14, 2 грудня 2024, створена imported>J. Gradowski (Стаття потребує поліпшення)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Шаблон:Поліпшити Шаблон:Приєднати до Критерій Поста — одна з центральних теорем математичної логіки, описує необхідні та достатні умови функціональної повноти множини булевих функцій. Був сформульований американським математиком Емілем Постом в 1921. Отже, для того щоб наша система була повною, необхідно і достатньо, щоб вона містила хоча б одну нелінійну функцію, хоча б одну несамодвоїсту, хоча б одну немонотонну, хоча б одну неафінну, хоча б одну функцію, яка не зберігатиме нуль та хоча б одну функцію, що не зберігає одиницю.

Постановка задачі

Булева n-арна функція, це функція BnB, де B={0,1} — булева множина.

Кількість n-арних булевих функцій дорівнює 22n, а загалом, існує нескінченна кількість булевих функцій.

Довільна булева функція може бути представлена у вигляді:

Тому природним є питання: чи є функціонально повною деяка множина функцій?

Замкнені класи

Шаблон:Main

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

Основними в теоремі Поста є 5 замкнених класів що називаються передповними класами.

Критерій

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

Доведення

Необхідність умови випливає з функціональної замкненості та неповноти классів монотонних, лінійних, самодвоїстих функцій та функції, які зберігають 0 та 1. Для доведення достатності необхідно показати, що за допомогою функцій, які не належать деяким з класів T0, T1,M,L,S, можна побудувати деяку повну систему функцій. Прикладом повної системи є заперечення та кон'юнкція. Дійсно довільна булева функція може бути представлена у вигляді ДДНФ, тобто у вигляді кон'юнкції, диз'юнкції та заперечення. Відповідна система є функціонально повною. Можна виключити з неї диз'юнкцію так що вона буде представлена як суперпозиція та ¬: xy=(x¯y¯).
Спочатку побудуємо константи. Почнемо з константи 1. Нехай ϕ(0)=f0(x,...x), де f0 - функція, що не зберігає нуль. Тоді ϕ(0)=f0(0,...0)0, тобто ϕ(0)=1. Можливі два випадки:

1. ϕ(1)=1. В цьому випадку формула реалізує 1.
2. ϕ(1)=0. Тоді формула ϕ реалізує заперечення. В цьому випадку розглянемо несамодвоїсту функцію f^. Маємо:
α1,,αn:f^(α1,,αn)¬f^(¬α1,,¬αn).
Відповідно,f^(α1,,αn)=f^(¬α1,,¬αn). Нехай тепер ψ(x)=f^(xα1,,xαn). Тоді:
ψ(0)=f^(0α1,,0αn)=f^(α1,,αn)=f^(1α1,,1αn)=ψ(1).

Таким чином, ψ(0)=ψ(1), звідки ψ=1 або ψ=0. Якщо ψ=1, то ми побудували константу 1. В іншому випадку ψ реалізує нуль, а тому ϕ(ψ(x))=1. Константа 0 будується аналогічно, тільки замість f0 треба брати f1 - функцію, що не зберігає 1.

За допомогою немонотонної функції підстановкою в неї констант можна побудувати заперечення. Нехай fM - немонотонна функція. Тоді існують набори α та β, такі, що α переслідує β, тобто αβ, а fM(α)=1, fM(β)=1. Оскільки αβ, то у α є декілька, наприклад, k елементів, які рівні 0, в той час як у β ті ж самі елементи рівні 1. Візьмемо набір α та замінимо в ньому перший такий нульовий елемент на 1, отримаємо α1: αα1, який відрізняється від α тільки одним елементом. Повторюючи цю операцію k разів, отримаємо послідовність наборів αα1αk1β, в якій кожні два сусідніх набори відрізняються один від одного тільки одним елементом. В цьому ланцюжку знайдуться два таких набори αi,αi+1, що fM(αi)=1 та fM(αi+1)=1. Нехай ці набори відрізняються j-м (значення змінної xj), а решта елементів однакові. Підставимо у fM ці значення. Тоді отримаємо функцію fM(α1i,,αj1i,xj,αj+1i,αni=ω(xj), яка залежить тільки від xj. Тоді ω(0)=ω(αji)=f(αi)=1, ω(1)=ω(αji+1)=f(αi+1)=0. Звідси, маємо, що ω(xj)=¬xj.

Побудуємо кон’юнкцію за допомогою підстановки у нелінійну функцію констант та використання заперечення. Нехай fL - нелінійна функція. Тоді в її поліномі Жегалкіна існує нелінійний доданок, який містить кон'юнкцію принаймні двох змінних. Нехай, для визначеності, це x1 та x2. Тоді:

fL=(x1x2fa(x3,,xn))(x1fb(x3,,xn))(x2fc(x3,,xn))fd(x3,,xn),

до того ж fa(x3,,xn) ≠ 0. Відповідно,

α3,,αn:fa(α3,,αn)=1.

Нехай b=fb(α3,,αn),c=fc(α3,,αn),d=fd(α3,,αn) та

ϕ(x1,x2)=fL(x1,x2,α3,,αn)=(x1x2)(x1b)(x2c)d.

Тоді нехай

ψ(x1,x2)=ϕ(x1c,x2b)(bc)d.

Тоді

ψ(x1,x2)=(x1c)(x2b)b(x1c)c(x2b)d(bc)d=
=(x1x2)(x2c)(x1b)(cb)(x1b)(x2c)(cb)(cb)(cb)dd=x1x2

(функцію xα можна виразити за допомогою x1=x¯,x0=x).

Приклади

Приклад 1

Перевірити повноту системи
xy,x¯

Розглянемо формулу F=xy

х y F
0 0 1
0 1 1
1 0 0
1 1 1

Розглянемо формулу V=x¯

x V
0 1
1 0

Побудуємо таблицю Поста( якщо функція входить у функціонально замкнений клас, то в таблиці Поста у відповідній комірці ставиться знак "+", інакше - "-"

Т0 Т1 S M L
F - + - - -
V - - - - +

Система є повною.

Приклад 2

Перевірити на повноту систему:
(xy¯)z,(xy)(xz¯),x¯y

Розглянемо F=(xy¯)z

x y z y¯ xy¯ F
0 0 0 1 0 1
0 0 1 1 0 1
0 1 0 0 0 1
0 1 1 0 0 1
1 0 0 1 1 0
1 0 1 1 1 1
1 1 0 0 0 1
1 1 1 0 0 1

Перевірка на лінійність:

x¯y¯z¯x¯y¯zx¯yz¯x¯yzxy¯zxyz¯xyz=
=(x1)(y1)(z1)(x1)(y1)z(x1)y(z1)(x1)yzx(y1)zxy(z1)xyz=
=xyzxyxzyzxyz1xyzxzyzzxyzxyyzyxyzyzxyzxzxyzxyxyz=
=xyzxyyzxzx1

B=(xy)(xz¯)

x y z z¯ xy xz¯ B
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 1 0 1 1 0 0
0 1 1 0 1 0 0
1 0 0 1 1 1 1
1 0 1 0 1 0 0
1 1 0 1 0 1 0
1 1 1 0 0 0 1

Перевірка на лінійність: x¯y¯z¯x¯y¯zxy¯z¯xyz=xyzxyyzxzxyz1xyzxzyzzxyzxyxzxxyz=xzy1
C=x¯y

x y x¯ C
0 0 1 0
0 1 1 1
1 0 0 0
1 1 0 0

Перевірка на лінійність: x¯y=xyy

Т0 Т1 M S L
F - + - - -
B - + - - -
C + - - - -

Отже система є повною.

Приклад 3

Перевірити на повноту систему
(x¯y)z,(xy)(xz),x¯y¯

Розглянемо F=(x¯y)z

x y z x¯ x¯y F
0 0 0 1 1 0
0 0 1 1 1 1
0 1 0 1 1 0
0 1 1 1 1 1
1 0 0 0 0 1
1 0 1 0 0 1
1 1 0 0 1 0
1 1 1 0 1 1

Перевіримо на лінійність:

x¯y¯zx¯yzxy¯z¯xy¯zxyz=
=(x1)(y1)z(x1)yzx(y1)(z1)x(y1)zxyz=
=xyzxzyzzxyzyzxyzxyxzxxyzxzxyz=
=xzxyxzxyz

P=(xy)(xz)

x y z xy xz P
0 0 0 1 0 1
0 0 1 1 1 0
0 1 0 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 0 1 0 1 1
1 1 0 1 1 0
1 1 1 1 1 0

Перевіримо на лінійність:

x¯y¯z¯x¯yzxy¯z¯xy¯z=
=(x1)(y1)(z1)(x1)yzx(y1)(z1)x(y1)z=

=xyzxyyzxzxyz1xyzyzxyzxyxzxxyzxz=xzyz1
B=x¯y¯

x y x¯ y¯ B
0 0 1 1 1
0 1 0 1 1
1 0 0 1 1
1 1 0 0 0

Перевіримо на лінійність: x¯y¯x¯yxy¯=(x1)(y1)(x1)yx(y1)=xyxy1xyxxyy=xy1

T0 T1 M S L
F + + - - -
P - - - - -
B - - - - -

Отже, система - повна.

Шаблон:Без джерел