Polinomul Zhegalkin este un polinom peste câmpul , adică un polinom cu coeficienți de forma 0 și 1, unde conjuncția este luată ca produs și exclusivul sau este luat ca adunare . Polinomul a fost propus în 1927 de Ivan Zhegalkin ca mijloc convenabil de reprezentare a funcțiilor logice booleene . În literatura străină, reprezentarea sub forma unui polinom Zhegalkin este de obicei numită formă normală algebrică (ANF).
Teorema lui Zhegalkin este o afirmație despre existența și unicitatea reprezentării oricărei funcții booleene sub forma unui polinom Zhegalkin [1] .
Polinomul Zhegalkin este suma modulo doi a produselor distincte perechi ale variabilelor neinversate, unde nicio variabilă nu apare de mai multe ori în orice produs și, de asemenea, (dacă este necesar) constanta 1 [1] . Formal, polinomul Zhegalkin poate fi reprezentat ca
sau mai formalizat ca
Exemple de polinoame Zhegalkin:
Conform teoremei lui Post , pentru ca un sistem de funcții booleene să fie complet, este necesar ca acesta să conțină:
Această cerință este îndeplinită, în special, de sistemul de funcții (conjuncție, adiție modulo doi, constantă 1). Pe baza ei, sunt construite polinoamele Zhegalkin.
Prin teorema lui Zhegalkin, fiecare funcție booleană este reprezentată în mod unic ca un polinom Zhegalkin. Teorema se demonstrează după cum urmează. Rețineți că există n funcții booleene variabile . În acest caz, există exact 2 n conjuncții , deoarece fiecare dintre cei n factori posibili fie intră în conjuncție, fie nu. Într-un polinom, fiecare astfel de conjuncție are 0 sau 1, adică există polinoame Zhegalkin diferite în n variabile. Acum este suficient să demonstrăm că polinoamele diferite realizează funcții diferite. Să presupunem contrariul. Apoi, echivalând două polinoame diferite și transferând unul dintre ele în cealaltă parte a egalității, obținem un polinom care este identic egal cu zero și are coeficienți nenuli. Apoi luați în considerare un termen cu un coeficient unitar de cea mai mică lungime, adică cu cel mai mic număr de variabile incluse în el (oricare, dacă sunt mai multe). Înlocuind cu unii în locurile acestor variabile și cu zerourile în locurile restului, obținem că pe această mulțime doar acest termen capătă o valoare unitară, adică funcția zero de pe una dintre mulțimi ia valoarea 1. A contradicţie. Aceasta înseamnă că fiecare funcție booleană este realizată de polinomul Zhegalkin într-un mod unic.
În comparație cu DNF , nu există operații SAU și NU în polinomul Zhegalkin. Astfel, polinomul Zhegalkin poate fi obținut din DNF exprimând operațiile OR și NOT prin operațiile de adunare modulo doi și constanta 1. Pentru aceasta se aplică următoarele relații:
Mai jos este un exemplu de conversie a unui DNF într-un polinom Zhegalkin:
Transformările se bazează pe relații
SDNF are proprietatea că, pentru orice valoare a variabilelor de intrare, nu mai mult de un membru al expresiei se transformă în unitate. Pentru astfel de expresii, operația de disjuncție este echivalentă cu operația de adunare modulo doi .
Când transformați un SDNF într-un polinom Zhegalkin, este suficient să înlocuiți toate disjuncțiile cu operații modulo doi adăugare și să scăpați de inversiuni folosind transformarea echivalentă
Funcția logică a trei variabile , reprezentată ca o hartă Carnot , este convertită într-un polinom Zhegalkin în următorii pași:
Metoda triunghiului (numită adesea metoda triunghiului lui Pascal) vă permite să convertiți tabelul de adevăr într-un polinom Zhegalkin prin construirea unui tabel triunghiular auxiliar în conformitate cu următoarele reguli:
Metoda triunghiului se bazează pe o teoremă propusă de V.P. Suprun, care nu este direct legată de triunghiul lui Pascal. În 1985, metoda triunghiului binar a fost propusă pentru a transforma un vector de valori ale unei forme normale disjunctive perfecte într-un vector de coeficienți polinomi Zhegalkin pentru o funcție booleană simetrică arbitrară. În 1987, metoda a fost extinsă la o funcție booleană arbitrară. Rețineți că metoda triunghiului permite construirea polinomului Reed-Muller cu polarizare negativă atât pentru funcții simetrice, cât și pentru funcții arbitrare. .
Cea mai economică din punct de vedere al numărului de calcule și potrivită pentru construirea manuală a polinomului Zhegalkin este metoda Fast Fourier Transform (FFT).
Construim un tabel format din 2 N coloane și N + 1 rânduri, unde N este numărul de variabile din funcție. În rândul de sus al tabelului plasăm vectorul valorilor funcției, adică ultima coloană a tabelului de adevăr.
Împărțim fiecare rând al tabelului rezultat în blocuri (linii negre din figură). În primul rând, un bloc ocupă o celulă, în al doilea rând, două, în al treilea, patru, în al patrulea, opt și așa mai departe. Fiecare bloc dintr-un rând, pe care îl vom numi „blocul de jos”, corespunde întotdeauna exact două blocuri din linia anterioară. Să le numim „bloc din stânga sus” și „bloc din dreapta sus”.
Construcția începe de la a doua linie. Conținutul blocurilor din stânga sus este transferat fără modificări în celulele corespunzătoare din blocul inferior (săgețile verzi din figură). Apoi, operația „modulo two addition” se realizează bit cu bit peste blocurile din dreapta sus și din stânga sus, iar rezultatul obținut este transferat în celulele corespunzătoare din partea dreaptă a blocului inferior (săgeți roșii din figură). Această operație se efectuează cu toate liniile de sus în jos și cu toate blocurile din fiecare linie. După finalizarea construcției, linia de jos conține un șir de numere, care sunt coeficienții polinomului Zhegalkin, scrise în aceeași succesiune ca și în metoda triunghiului descrisă mai sus.
Folosind tabelul de adevăr, este ușor să calculați coeficienții individuali ai polinomului Zhegalkin. Pentru a face acest lucru, trebuie să însumați modulo 2 valorile funcției din acele rânduri ale tabelului în care variabilele care nu sunt în conjuncție iau valori zero.
Să presupunem, de exemplu, că trebuie să găsiți coeficientul la conjuncția xz pentru o funcție a trei variabile f ( x , y , z ). Nu există o variabilă y în această conjuncție . Să găsim seturile de intrare în care variabila y ia valoare zero. Acestea sunt seturile 0, 1, 4, 5 (000, 001, 100, 101). Atunci coeficientul de la conjuncția xz este egal cu
Deoarece nu există variabile în membrul liber, atunci
Pentru un membru care include toate variabilele, suma include toate valorile funcției:
Să reprezentăm grafic coeficienții polinomului Zhegalkin ca sumă modulo 2 a valorilor funcțiilor în anumite puncte. Pentru a face acest lucru, construim un tabel pătrat, în care fiecare coloană reprezintă valoarea funcției la unul dintre puncte, iar rândul este coeficientul polinomului Zhegalkin. Un punct la intersecția unei anumite coloane și rânduri înseamnă că valoarea funcției într-un punct dat este inclusă în suma pentru un coeficient polinomial dat (vezi figura). Să numim acest tabel T N , unde N este numărul de variabile ale funcției.
Există un model care vă permite să obțineți un tabel pentru o funcție de N variabile, având un tabel pentru o funcție de N - 1 variabile. Noul tabel T N +1 este aranjat ca o matrice 2 × 2 de tabele T N , cu blocul din dreapta sus al matricei șters.