Sunteți pe pagina 1din 9

Universitatea Bucuresti

Facultatea de Matematica-Informatica
Specializarea Tehnologia Informatiei

Relaia dintre algebra


comutaional i algebra
boolean
Jerca Vlad
anul I, gr 152

Cuprins

1. Definitie.........................................................................................................................................3
2. Exemple.........................................................................................................................................4
3. Codificarea in Limbajul C...........................................................................................................5
4. Rularea programului ...................................................................................................................9

1. Definitie
Proprietate : Algebra comutaional B2 este izomorf fa de o mulime putere P(S) a unei
mulimi S care este un singleton.
Demonstraie : Fie P(S) o mulime putere a unei mulimi S care este un singleton. P(S)
conine doar dou elemente : P(S) = {, S}. Pe aceast mulime P(S) definim cele trei operaii
specifice teoriei mulimilor , i anume : intersecia (), reuniunea () i complementul (C)
Definim o funcie bijectiv f care arat funciile : f () = 0 i f (S ) =1
n urma comparrii tabelelor de adevr putem trage concluzia c B2 este izimorfic cu P(S),
adic B2 P(S).
Generalizare : Orice algebr boolean este izomorfic cu o anume algebr pe o mulime
putere. Se tie c orice mulime putere conine elemente dac mulimea iniial conine elemente ; deci , numrul de elemente ale unei algebre booleene este totdeauna o putere a lui 2 .
Cu alte cuvinte , pentru o algebr boolean B exist un ntreg pozitiv n astfel nct numrul de
elemente din B este 2n .
Exemplu : S considerm algebra boolean cu 4 elemente :
B4 = {0, a,b,1}

Considerm mulimea putere P(I ) , unde I = {A, B} . Membrii lui sunt mulimea vid
, submulimile A, B i universul. Pe P(I) se definesc cele trei operaii de baz specifice teoriei
(,,C) mulimilor :

2. Exemple

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include <stdlib.h>
//Functie ce afiseaza niste spatii pentru lizibilitate -> in momentul in care se afiseaza operatorii
void spatii(int nr)
{

for(int i=1; i<=nr; i++)
printf( );
}
// Functie de transformare in binar
void ToBinary(int a, int n)
{

int i, b;
b=n/2;


for( i=1 ; i<=b ; i=i*2 );
i=i/2;


for( i=i ; i >= 1 ; i = i/2 )
{

if( a/i >= 1 )
{
printf(1);
a=a-i;
}
else {
printf(0);
}

}
printf( );


}
void ToBinaryNON(int a, int n)
{

int i, b;
b=n/2;


for( i=1 ; i<=b ; i=i*2 );
i=i/2;


for( i=i ; i >= 1 ; i = i/2 )
{

if( a/i >= 1 )
{
printf(0);
a=a-i;
}
else {
printf(1);
}

}
printf( );

}
//functia de incarcare si afisare a matricei cu valori
void incarcMatrice()
{

int matrice[200][200], putere, n, i, j; //variabile

printf(Pentru 2 la puterea: );

scanf(%d, &putere); //citirea puterii


n = int(pow (2, putere)); //calculeaza 2^putere



for(i=1;i<=n;i++) //incarca valori in prima linie / coloana a matricii cu valori cuprinse intre 0 si n-1
{
matrice[i][0]=i-1;
matrice[0][i]=i-1;
}


printf(\nB2^%d x (B2)^%d = {, putere, putere); //se afiseaza elementele multimii B2^putere x (B2)^putere

for(j=1;j<=n;j++)

{

ToBinary(matrice[0][j], n);
if(j<n)
printf(;);

}

printf(} \n\t = {);

for(i=1;i<=n;i++)
if(i==1)
printf(0; );

else if(i==n) printf(1}); else

if(i!=1&&i!=n) printf(%c ;, a+i-2);



printf(\nPentru OR logic (+):\n); //afisarea rezultatelor pentru OR logic binar
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
{printf(+);spatii(putere);}
else
{
if(i==0||j==0)
ToBinary(matrice[i][j], n);
else
{
matrice[i][j]=matrice[0][j] | matrice[i][0];
ToBinary(matrice[i][j], n);
}
}

}
printf(\n);
}


printf(\nPentru OR logic (+):\n); //afisarea rezultatelor pentru OR logic alfa
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
printf(+ );

else
{
if(i==0||j==0)
if(matrice[i][j]==0)
printf(0 );
else if(matrice[i][j]==n-1)
printf(1 );
else
printf(%c , matrice[i][j]+a-1);
else
{
matrice[i][j]=matrice[0][j] | matrice[i][0];
if(matrice[i][j]==0)
printf(0 );
else if(matrice[i][j]==n-1)
printf(1 );
else
printf(%c , matrice[i][j]+a-1);
}
}

}
printf(\n);
}



printf(\nPentru AND logic (*):\n); //afisarea rezultatelor pentru AND logic
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
{printf(*);spatii(putere);}
else
{
if(i==0||j==0)
ToBinary(matrice[i][j], n);
else
{
matrice[i][j]=matrice[0][j] & matrice[i][0];
ToBinary(matrice[i][j], n);
}
}

}

printf(\n);
}


printf(\nPentru AND logic (*):\n); //afisarea rezultatelor pentru AND logic alfa
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
printf(* );
else
{
if(i==0||j==0)
if(matrice[i][j]==0)
printf(0 );
else if(matrice[i][j]==n-1)
7
printf(1 );

else
printf(%c , matrice[i][j]+a-1);
else
{
matrice[i][j]=matrice[0][j] & matrice[i][0];
if(matrice[i][j]==0)
printf(0 );
else if(matrice[i][j]==n-1)
printf(1 );
else
printf(%c , matrice[i][j]+a-1);
}
}

}
printf(\n);
}


printf(\nPentru NOT logic (,):\n); //afisarea rezultatelor pentru NOT logic
printf(,);spatii(putere);
for(j=1;j<=n;j++)
ToBinary(matrice[0][j], n);
printf(\n);spatii(putere+1);
for(j=1;j<=n;j++)
ToBinaryNON(matrice[0][j], n);
printf(\n);


printf(\nPentru NOT logic (,):\n); //afisarea rezultatelor pentru NOT logic alfa
printf(,);spatii(putere);
for(j=1;j<=n;j++)
if(matrice[0][j]==0)
printf(0 );
else if(matrice[0][j]==n-1)
printf(1 );
else
printf(%c , matrice[0][j]+a-1);
printf(\n );spatii(putere);

for(j=n;j>=1;j--)
if(matrice[0][j]==0)
printf(0 );
else if(matrice[0][j]==n-1)
printf(1 );
else
printf(%c , matrice[0][j]+a-1);
printf(\n);
}
//functia principala
int main()
{

int operatie=1;

while(operatie) // pentru executare repetata
{
incarcMatrice();

printf(\nMai doriti sa rulati o data programul (1/0): );

scanf(%d, &operatie);
system(cls);
}
getch();

return 0;
}

4. Rularea programului