Documente Academic
Documente Profesional
Documente Cultură
Facultatea de Matematica-Informatica
Specializare Tehnologia Informatiei
Reprezentarea
Reed-Muller-Jegalkin
Jerca Vlad
anul I, gr. 152
Cuprins
1. Definitie.........................................................................................................................................3
2. Exemplu........................................................................................................................................10
3. Codificarea in Limbajul C...........................................................................................................12
4. Rularea programului ...................................................................................................................15
= xyz + xy z + x y z + x yz + x yz =
= m7 + m6 + m 4 + m5 + m1 =
(1,4,5,6,7 )
1.Definitie
=xyz + xy z + x y z + x yz + x yz =m7 + m6 + m 4 + m5 + m1 = (1,4,5,6,7 )
Deoarece formele canonice P sunt identice putem spune c :
A( x, y, z ) = B ( x, y, z )
a n + 2 x1 x3 ... a 2 n 1 x1 x 2 ...x n 1 x n
unde :
[ (
)]
x y
0
0
1
1
0
1
0
1
1
0
0
0
f ( x, y ) = x y = x. y = (1 x )(1 y ) = 1 x y xy
y) x y .
Aceasta reprezint forma Reed-Muller-Jegalkin pentru funcia NOR f ( x,=
Coeficienii RMJ au urmtoarele valori :
a 0 = 1
a1 = 1
a 2 = 1
a3 = 1
x+ y
0
0
1
1
0
1
0
1
0
1
1
1
f ( x, y ) = x y x y xy = (1 x ) y x(1 y ) xy =
= y xy x xy xy = x y xy
a1 = 1
a 2 = 1
a 3 = 1
f ( x, y ) = x y x y xy = (1 x ) y x(1 y ) xy =
= y xy x xy xy = x y xy
a1 = 1
a 2 = 1
a 3 = 1
xy
0
0
1
1
0
1
0
1
1
1
1
0
f ( x, y ) = x y x y x y = (1 x )(1 y ) (1 x ) y x(1 y ) =
=1 x y xy y xy x xy =1 xy
Aceasta reprezint forma RMJ pentru funcia NAND iar coeficienii RMJ
corespunztori sunt:
a 0 = 1
a1 = 0
a 2 = 0
a 3 = 1
este 2 2 = 16 .
Considerm forma canonic P a unei funcii de comutaie de o variabil scris cu
operatorul XOR ntre mintermeni :
f ( x) = d 0 m0 (x ) d1 m1 (x )
unde :
f ( x) = d 0 (1 x ) d 1 x = d 0 d 0 x d 1 x = d 0 x(d 0 d1 )
a 0 = d 0
=
a1 d 0 d1
0 d 0
1 d 1
Notm matricile :
0
1
= T1
1
1
a0
= a
a1
d0
= d
d1
Atunci : a = T1 d
Continum analiza pentru funciile de dou variabile. Forma canonic P a unei funcii
de comutaie de dou variabile scris cu operatorul XOR ntre mintermeni este :
=
f (x1 x 2 ) d 0 m0 d1 m1 d 2 m 2 d 3 m3
unde :
m0 (x1 x 2 ) = x1 x 2 = (1 x1 )(1 x 2 ) = 1 x1 x 2 x1 x 2
(1 x1 )x 2 =
m1 (x1 x 2 ) =
x1 x 2 =
x 2 x1 x 2
m 2 (x1 x 2 ) = x1 x 2 = x1 (1 x 2 ) = x1 x1 x 2
m3 (x1 x 2 ) = x1 x 2
(x1 x 2 ) d 0 (1 x1 x 2 x1 x 2 ) d1 (x 2 x1 x 2 ) d 2 (x1 x1 x 2 ) d 3 x1 x 2 =
f=
= d 0 x 2 (d 0 d1 ) x1 (d 0 d 2 ) x1 x 2 (d 0 d 1 d 2 d 3 )
a 0 = d 0
=
a1 d 0 d1
=
a 2 d 0 d 2
a 3 d 0 d1 d 2 d 3
=
0
1
...
0
1
...
...
...
...
...
0
0
...
1
1
0
d 0
0
d1
...
d
0 2
d
1 3
unde:
a0
a1
a=
a
2
a
3
d0
d1
d =
d
2
d
3
T1 0
T2 =
T1 T1
f (=
x1 x 2 x3 ) d 0 m0 d 1 m1 d 2 m 2 d 3 m3 d 4 m 4 d 5 m5 d 6 m6 d 7 m7
(1 x1 )(1 x 2 )x3 =
(1 x1 x 2 x1 x 2 ) x3 =
m1 =
x1 x 2 x3 =
x3 x1 x3 x 2 x3 x1 x 2 x3
m 2 = x1 x 2 x 3 = (1 x1 )x 2 (1 x 3 ) = (1 x1 x3 x1 x3 ) x 2 = x 2 x1 x 2 x 2 x3 x1 x 2 x 3
(1 x1 )x 2 x3 =
m3 =
x1 x 2 x 3 =
x 2 x3 x1 x 2 x 3
m6 = x1 x 2 x 3 = x1 x 2 (1 x3 ) = x1 x 2 x1 x 2 x 3
m7 = x1 x 2 x3
d 1 (x3 x1 x 3 x 2 x3 x1 x 2 x3 )
d 2 (x 2 x1 x 2 x 2 x3 x1 x 2 x3 )
d 3 ( x 2 x3 x1 x 2 x3 )
d 4 (x1 x1 x 2 x1 x3 x1 x 2 x 3 )
d 5 (x1 x3 x1 x 2 x3 )
d 6 (x1 x 2 x1 x 2 x3 ) d 7 x1 x 2 x3 =
= d 0 x1 (d 0 d 4 ) x 2 (d 0 d 2 ) x3 (d 0 d 1 )
x1 x 2 (d 0 d 2 d 4 d 6 )
x1 x 3 (d 0 d1 d 4 d 5 )
x 2 x 3 (d 0 d1 d 2 d 3 )
x1 x 2 x3 (d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 )
f (=
x1 x 2 x3 ) a 0 a1 x3 a 2 x 2 a 3 x 2 x3 a 4 x1 a 5 x1 x3 a 6 x1 x 2 a 7 x1 x 2 x 3
a0 = d 0
=
a1 d 0 d 1
=
a2 d 0 d 2
=
a3 d 0 d1 d 2 d 3
=
a4 d 0 d 4
=
a5 d 0 d1 d 4 d 5
=
a6 d 0 d 2 d 4 d 6
=
a 7 d 0 d1 d 2 d 3 d 4 d 5 d 6 d 7
n notaie matriceal:
1 0 0 0 ... 0 0 0
a0
1 1 0 0 ... 0 0 0
a1
a 1 0 1 0 ... 0 0 0
2 1 1 1 1 ... 0 0 0
a3
= .........................................
a 4 1 0 0 0 ... 1 0 0
a5
1 1 0 0 ... 1 1 0
a6
a 1 0 1 0 ... 1 0 1
7 1 1 1 1 ... 1 1 1
n notaie compat :
0
d 0
0
d1
0
d2
0
d 3
d
0 4
d
0 5
d
0 6
d 7
1
a = T3 d
unde:
T
T3 = 2
T2
T2
unde :
Tn 1
Tn =
Tn 1
Tn 1
unde :
x j
e
x jj =
1
daca e j = 1
daca e j = 0
este
[0, (2
)]
indexul
coeficientului
e j 2 n j
j =1
RMJ
gama
zecimal
valorile lui k sunt 0,1,2 i 3 ; coeficienii RMJ sunt a 0 a1 a 2 a 3 i termenii produs sunt
determinai astfel :
k =010 =(00 )2
(01)2
110 =
k=
k =210 =(10 )2
k=
310 =(11)2
1.1 =
1
x10 x 20 =
1.x 2 =x 2
x10 x 12 =
x11 x 20 =x1 .1 =x1
x11 x 12 =
1.x 2 =x1 x 2
f (x1=
x 2 ) a 0 0 a1 1 a 2 2 a3 =
a 0 a1 x 2 a 2 x1 a 3 x1 x 2
3
Pentru n = 3 , valorile lui k sunt 0,1,...,7 ; coeficienii RMJ sunt : a 0 ...a 7 iar termenii
produs sunt determinai astfel :
(000)2
010 =
k=
1.1.1 =
1
x10 x 20 x30 =
(001)2
110 =
k=
1.1.x3 =
x10 x 20 x31 =
x3
(010)2
210 =
k=
1.x 2 .1 =
x10 x12 x30 =
x2
(011)2
310 =
k=
1.x 2 .x3 =
x10 x 12 x31 =
x 2 x3
(100)2
410 =
k=
x11 x 20 x30 =
x1 .1.1 =
x1
(101)2
510 =
k=
x11 x 20 x31 =
x1 .1.x3 =
x1 x3
(110)2
610 =
k=
(111)2
k=
710 =
x11 x 12 x31 = x1 x 2 x3
f (=
x1 x 2 x3 ) a 0 a1 x3 a 2 x 2 a 3 x 2 x3 a 4 x1 a 5 x1 x3 a 6 x1 x 2 a 7 x1 x 2 x 3
n general, reprezentarea RMJ pentru n variabile se poate scrie n felul urmtor :
f (x1 x 2 ...x n ) =
unde :
2 n 1
a k k
k = 0
e j (0,1),
j [1, n]
x j , daca e j = 1
e
x jj =
daca e j = 0
1,
Coeficienii=
a k k 0, 2 n 1 sunt determinai din ecuaia matriceal :
(a ) = (Tn )(. d ) , unde
))
10
Tn 1
Tn =
Tn 1
Tn 1
1
T1 =
1
Ti 1
2 2 expresii diferite.
Algoritm :
Transformarea formei canonice P n reprezentare RMJ urmeaz urmtorii pai :
d0
d1
1). Formarea matricii d =
...
d n
2 1
2).Scrierea matricii (Tn )2 n 2n :
Tn 1
Tn =
Tn 1
Ti 1
Ti =
Ti 1
1
T1 =
1
Tn 1
0
Ti 1
x j , daca e j = 1
e
x jj =
daca e j = 0
1,
k10 = (e1e2 ...en )2
Exemplu :
Se d urmtoarea funcie de trei variabile :
f (x1 x 2 x3 ) = (0,4,5,6)
Matricea d
11
= x1 x 2 ...x n
x j , daca e j = 1
e
x jj =
daca e j = 0
1,
k10 = (e1e2 ...en )2
2.Exemplu
Exemplu :
Se d urmtoarea funcie de trei variabile :
f (x1 x 2 x3 ) = (0,4,5,6)
Matricea d
1
0
0
0
d =
1
1
1
0
11
Matricea T3 :
T2
T3 =
T2
T1 0 .
T1 T1 .
0
= .
. .
T2
T1 0 .
T1 T1 .
. .
T1 0
T1 T1
1
1
1
= .
1
1
1
0 0 0 . 0 0 0 0
1 0 0 . 0 0 0 0
0 1 0 . 0 0 0 0
1 1 1 . 0 0 0 0
. . . . . . . .
0 0 0 . 1 0 0 0
1 0 0 . 1 1 0 0
0 1 0 . 1 0 1 0
1 1 1 . 1 1 1 1
1
a0
1
a1
a 1
2 1
a3
= .
a 4 1
a5
1
a6
a 1
7 1
a0 = 1
0
1
0
1
.
0
1
0
1
0
0
1
1
.
0
0
1
1
0
0
0
1
.
0
0
0
1
. 0 0 0
. 0 0 0
. 0 0 0
. 0 0 0
. . . .
. 1 0 0
. 1 1 0
. 1 0 1
. 1 1 1
0
1
0
0
0
0
0
0
. .
1
0
1
0
1
0
0
1
a1 = 1
a2 = 1
a3 = 1
a4 = 0
a5 = 1
a6 = 1
a7 = 0
10
a3 = 1
a4 = 0
a5 = 1
a6 = 1
a7 = 0
000
111 =
1
x10 x 20 x30 =
k =1
001
11x 3 =
x10 x 20 x 31 =
x3
k =2
010
1x 2 1 =
x10 x 12 x30 =
x2
k =3
011
1x 2 x3 =
x10 x 12 x31 =
x 2 x3
k =4
100
x10 x 20 x30 =
x111 =
x1
k =5
101
x11 x 20 x 31 =
x11x3 =
x1 x 3
k =6
110
x11 x 12 x 30 =
x1 x 2 1 =
x1 x 2
k =7
111
x11 x 12 x 31 =
x1 x 2 x 3 =
x1 x 2 x 3
12
Putem verifica corectitudinea expresiei obinute prin scrierea formei canonice P a lui
f (x1 x 2 x3 ) cu operatorul XOR :
=
f (x1 x 2 x3 ) x1 .x 2 .x3 x1 .x 2 .x3 x1 x 2 x3 x1 x 2 x3 =
= 1 x1 x 2 x3 x1 x 2 x1 x3 x 2 x3 x1 x 2 x3 x1 x1 x 2 x1 x3 x1 x 2 x3 x1 x3 x1 x 2 x3
x1 x 2 x1 x 2 x 3 =
1 x3 x 2 x 2 x 3 x1 x3 x1 x 2
f 13
f 14
f 15
1 x 2 x1 x 2
1 x1
1100
1010
x1 x 2
1 x1 x1 x 2
1 x1 x 2
1011
1001
1001
x1 2 x 2
x1
x1 1 x 2
3.Codificarea in limbajul C
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
void construiescT(int a[255][255], int n)
{
a[1][1]=1;
for(int pas=1;pas<=pow(2,n-1);pas*=2)
for(int i=1;i<=pas;i++)
for(int j=1;j<=pas;j++)
{
a[i+pas][j]=a[i][j];
a[i+pas][j+pas]=a[i][j];
}
}
void afisezMat(int a[255][255], int n)
{
int i, j;
for(i=1;i<=n;i++)
{printf( );
for(j=1;j<=n;j++)
{
printf(%d , a[i][j]);
}
printf(\n);
}
}
void XORMatVect(int a[255][255], int vect[255], int rezultat[255], int n)
{
int i, pas;
printf(\n);
for(i=1;i<=n;i++)
{ rezultat[i]=0;
for(pas=1; pas<=n; pas++)
rezultat[i] = rezultat[i] + a[i][pas] * vect[pas] ;
}
for(i=1;i<=n;i++)
if(rezultat[i]%2==0)
rezultat[i]=0;
else rezultat[i]=1;
}
12
13
void RMJ()
{
int T[255][255], vect[255], polinom[255], n, numar;
printf(Introduceti ordinul: ); scanf(%d, &n);
printf(Introduceti numarul: ); scanf(%d, &numar);
construiescT(T,n); // construieste Tn
n=pow(2,n);
printf(Matricea Tn:\n);
afisezMat(T,n); // afiseaza Tn
printf(\nVectorul d:\n);
ToBinary(vect, numar, n); // afla vectorul lui f-numar
afisezVect(vect, n); // afiseaza vectorul lui f-numar
XORMatVect(T,vect,polinom,n); // afla polinomul caracteristic
printf(\nVectorul polinomial este:\n);
afisezVect(polinom, n);
printf(\nPolinomul caracteristic este:\n\n);
if(polinom[1]==1)
printf(1);
for(int i=2;i<=n;i++)
if(polinom[i]==1)
{
printf( ^ );
AfisPolin(i-1,n);
}
getch();
system(cls);
}
int main ()
{
char op;
while(op!=N)
{
RMJ();
printf(Doriti sa mai transformati un numar? (D/N) \n\nOptiune:);
op=toupper(getche());
system(cls);
}
return 0;
}
14
4.Rularea Programului
15