Grafuri Algoritmul Malgrange

S-ar putea să vă placă și

Sunteți pe pagina 1din 16

Ministerul Educaţiei şi Tineretului din Republica Moldova

Universitatea de Stat din Moldova

Lucrare de laborator

Tema: Mulţimi stabile în grafuri neorientate.

Algoritmul Malgrange

Student:
Student:
Profesor: Novac L.

Chişinău 2009
I. Noţiuni preliminare:
Fie M o matrice binară, finită, de dimensiune m×n, cu mulţimea de linii L={l
1,l2,…,lm} şi
mulţimea de coloane C={c1,c2,…,cm}. Vom nota ƒ=(A,B) matricea formată din
elementele de la
intersecţia liniilor AI şi a coloanelor BJ.
Fie acum ƒ1 şi ƒ2 două submatrice ale matricei M, determinate de perechile de
mulţimi de linii
şi coloane (Ai,Bi) i=1,2 (ƒ1=(A1,B1) şi ƒ2=(A2,B2)).
Dacă A1A2 , B1B2 (ƒ1ƒ2), matricea ƒ1 se numeşte submatrice a matricei ƒ2 .
Dacă toate elementele din ƒ sunt egale cu 1, submatricea ƒ a matricei M se
numeşte
completă.
Dacă submatricea ƒ este completă şi în M nu există o altă submatrice completă
ƒƒ ƒ’ astfel încît
ƒƒ’, se numeşte principală.
Dacă orice element egal cu 1 din M aparţine cel puţin unei submatrici din
familia C={ƒ1,ƒ2,
…,ƒp}, această familie C se numeşte acoperire a matricei C.
Cardinalul mulţimii stabile interior maxime a grafului G se notează prin
α0(G) şi se numeşte
număr de stabilitate internă.

II. Descrierea algoritmului


Fie A matricea de adiacenţă a unui graf neorientat G=(X;U):

a b c d e f

a 0 1 0 1 1 1

b 1 0 1 1 1 1

c 0 1 0 1 0 0

d 1 1 1 0 1 1

e 1 1 0 1 0 1

f 1 1 0 1 1 0

iar Ā este matricea complementară a acesteia (elementele āij ale matricei Ā se


calculează în baza
elementelor aij ale matricei A dupa formula āij=1- aij):

a b c d e f

2
a 1 0 1 0 0 0

b 0 0 0 0 0 0

c 1 0 1 0 1 1

d 0 0 0 1 0 0

e 0 0 1 0 1 0

f 0 0 1 0 0 1

1
Scopul lucrării: De a construi toate submatricile principale pătratice ale lui
Ā, în baza cărora
se pot determina toate mulţimile maximale stabile interior ale ale grafului G, prin
utilizarea
algoritmului Malgrange.

Pasul 1. Construim o acoperire arbitrară C0 a matricei Ā. În calitate de


acoperirea C0 se ia
familia tuturor submatricelor complete din Ā de forma ƒi=(Ai,Bi), unde |A|=1, iar
Bi este formată
din coloanele matricei Ā, ce conţin unitatea în linia Ai.

Acoperirea iniţială C0 a matricei Ā este:

C0 = { (a,ac), (b,b), (c,acef), (d,d), (e,ce), (f,cf) }.

Pasul 2. Pentru p=0, construim familia Xp={ƒiCp, ƒjƒi astfel, încît ƒj ƒi } –
familia tuturor
submatricelor complete din Cp, care care se conţin în alte submatrice ale lui Cp.

În acest caz X0= 

Pasul 3. Construim familia de submatrice Γ(Cp\Xp), care se obţine prin aplicarea


operaţiilor
⋂ şi ⋃ asupra tuturor perechilor posibile de matrice ƒi, ƒj din Cp\Xp, cu condiţia
ca aceste
elemente noi să nu le conţină pe submatricele din Cp\Xp.

C0\X0= C0Γ(C0\X0) = Γ(C0):

(a, ac) ⋃ (c,acef) = (a ⋃ c, ac ⋂ acef) = (ac,ac)


(a, ac) ⋃ (e,ce) = (a ⋃ e, ac ⋂ ce) = (ae,c)
(a, ac) ⋃ (f,cf) = (a ⋃ f, ac ⋂ cf) = (af,c)
(c, acef) ⋃ (e,ce) = (c ⋃ e, acef ⋂ ce) = (ce,ce)
(c, acef) ⋃ (f,cf) = (c ⋃ f, acef ⋂ cf) = (cf,cf)
(e,ce) ⋃ (f,cf) = (e ⋃ f, ce ⋂ cf) = (ef,c)

Γ(C0\X0) ={ (ac,ac), (ae,c), (af,c), (ce,ce), (cf,cf), (ef,c) }.

Pasul 4. Formăm acoperirea de matrice: Cp+1Cp\Xp) ⋃ (Γ(Cp\Xp))

3
C1C0\X0) ⋃ (Γ(C0\X0)) = { (a,ac), (b,b), (c,acef), (d,d), (e,ce), (f,cf),
(ac,ac), (ae,c), (af,c), (ce,ce),
(cf,cf), (ef,c) }.

Pasul 5. Dacă Cp+1  Cp, atunci considerăm p=p+1 şi ne reîntoarcem la Pasul 2.


C1 С0 

Pasul 2. Construim familia Xp+1=X1:


2
(a,ac) (ac,ac)
(e,ce) (ce,ce)
(f,cf) (cf,cf)

X1 ={ (a,ac), (e,ce), (f,cf) }.

Pasul 3. Construim familia Γ(Cp+1\Xp+1) = Γ(C1\X1):

C1\X1= { (b,b), (c,acef), (d,d), (f,cf), (ac,ac), (ae,c), (af,c), (ce,ce),


(ef,c) }.

(c,acef) ⋃ (f,cf) = (c ⋃ f, acef ⋂ cf) = (cf,cf)

(c,acef) ⋃ (ac,ac) = (c ⋃ ac, acef ⋂ ac) = (ac,ac)

(c,acef) ⋃ (ae,c) = (c ⋃ ae, acef ⋂ c) = (ace,c)

(c,acef) ⋃ (af,c) = (c ⋃ af, acef ⋂ c) = (acf,c)

(c,acef) ⋃ (ce,ce) = (c ⋃ ce, acef ⋂ ce) = (ce,ce)

(c,acef) ⋃ (ef,c) = (c ⋃ ef, acef ⋂ c) = (cef,c)

(f,cf) ⋃ (ac,ac) = (f ⋃ ac, cf ⋂ ac) = (acf,c)

(f,cf) ⋃ (af,c) = (f ⋃ af, cf ⋂ c) = (af,c)

(f,cf) ⋃ (ce,ce) = (f ⋃ ce, cf ⋂ ce) = (cef,c)

(f,cf) ⋃ (ef,c) = (f ⋃ ef, cf ⋂ c) = (ef,c)

(ac,ac) ⋃ (ce,ce) = (ac ⋃ ce, ac ⋂ ce) = (ace,c)

(ae,c) ⋃ (af,c) = (ae ⋃ af, c ⋂ c) = (aef,c)

(ae,c) ⋃ (ce,ce) = (ae ⋃ ce, c ⋂ ce) = (ace,c)

(ae,c) ⋃ (ef,c) = (ae ⋃ ef, c ⋂ c) = (aef,c)

4
(af,c) ⋃ (ce,ce) = (af ⋃ ce, c ⋂ ce) = (acef,c)

(af,c) ⋃ (ef,c) = (af ⋃ ef, c ⋂ c) = (aef,c)

(ce,ce) ⋃ (ef,c) = (ce ⋃ ef, ce ⋂ c) = (cef,c)

Γ(C1\X1) = { (cf,cf), (ac,ac), (ace,c), (acf,c), (ce,ce), (cef,c), (af,c), (ef,c),


(aef,c), (acef,c) }

Pasul 4.
C2C1\X1) ⋃ (Γ(C1\X1)) = { (b,b), (c,acef), (d,d), (f,cf), (ac,ac), (ae,c),
(af,c), (ce,ce), (ef,c), (cf,cf),
(ace,c), (acf,c), (cef,c), (aef,c), (acef,c) }

Pasul 5. C2 С1 

Pasul 2. Construim familia Xp+1=X2:

(f,cf) (cf,cf)
(ae,c) (ace,c), (aef,c) şi (acef,c)
(af,c)  (acf,c), (aef,c) şi (acef,c)
(ef,c)  (cef,c) şi (acef,c)
3
(ace,c)  (acef,c)
(acf,c)  (acef,c)
(cef,c)  (acef,c)
(aef,c)  (acef,c)
X2 = {(f,cf), (ae,c), (af,c), (ef,c), (ace,c), (acf,c), (cef,c), (aef,c)}

Pasul 3. Construim familia Γ(Cp+1\Xp+1) = Γ(C2\X2):

C2\X2= { (b,b), (c,acef), (d,d), (ac,ac), (ce,ce), (cf,cf), (acef,c)}

(c,acef )⋃ (ac,ac) = (c ⋃ ac, acef ⋂ ac) = (ac,ac)


(c,acef )⋃ (ce,ce) = (c ⋃ ce, acef ⋂ ce) = (ce,ce)
(c,acef) ⋃ (cf,cf) = (c ⋃ cf, acef ⋂ cf) = (cf,cf)
(c,acef )⋃ (acef,c) = (c ⋃ acef, acef ⋂ c) = (acef,c)
(ac,ac) ⋃ (ce,ce) = (ac⋃ ce, ac ⋂ ce) = (ace,c)
(ac,ac) ⋃ (cf,cf) = (ac ⋃ cf, ac ⋂ cf) = (acf,c)
(ac,ac) ⋃ (acef,c) = (ac ⋃ acef, ac ⋂ c) = (acef,c)
(ce,ce) ⋃ (cf,cf) = (ce ⋃ cf, ce ⋂ cf) = (cef,c)
(ce,ce) ⋃ (acef,c) = (ce ⋃ acef, ce ⋂ c) = (acef,c)
(cf,cf) ⋃ (acef,c) = (cf ⋃ acef, cf ⋂ c) = (acef,c)

Γ(C2\X2) = { (ac,ac), (ce,ce), (cf,cf), (acef,c), (ace,c), (acf,c), (cef,c) }

Pasul 4.
C3C2\X2) ⋃ (Γ(C2\X2)) = { (b,b), (c,acef), (d,d), (ac,ac), (ce,ce), (cf,cf),
(acef,c), (ace,c), (acf,c),
(cef,c) }

5
Pasul 5. C3 С2 

Pasul 2. Construim familia Xp+1=X3:

(ace,c)  (acef c)
(acf,c)  (acef,c)
(cef,c)  (acef,c)

X3 ={ (ace,c), (acf,c), (cef,c) }

Pasul 3. Construim familia Γ(Cp+1\Xp+1) = Γ(C3\X3):

C3\X3 ={ (b,b), (c,acef), (d,d), (ac,ac), (ce,ce), (cf,cf), (acef,c) } 


Γ(C3\X3) = { (ac,ac), (ce,ce), (cf,cf), (acef,c), (ace,c), (acf,c), (cef,c) }

4
Pasul 4.
C4C3\X3) ⋃ (Γ(C3\X3)) = C3

Pasul 5. C4 = С3 , rezultă că C3 conţine toate submatricele principale ale


matricei Ā.

Pasul 6.Construim o familie nouă F în care includem submatricele pătraticemaximale


ale
submatricelor principale din C3, respectînd condiţia ca fiecare dintre acestea să
nu le conţină
altă submatrice pătratică din F.

C3  { (b,b), (c,acef), (d,d), (ac,ac), (ce,ce), (cf,cf), (acef,c), (ace,c),


(acf,c), (cef,c) }

F = { (b,b), (d,d), (ac,ac), (ce,ce), (cf,cf) }

Vîrfurile ce corespund liniilor (coloanelor) matricelor familiei F formează o


mulţime stabilă
interior. Astfel, numărul tuturor mulţimilor stabil interior este egal cu |F| (|F|
=5).

S = { {b}, {d}, {a, c}, {c, e}, {c, f} } (S-familia tuturor mulţimilor stabile
interior a grafului G).

Mulţimile stabile interior maxim sunt {a, c}, {c, e} şi {c, f}.

Prin urmare α0(G) = 2.


Programul
#include <string.h>
#include <stdio.h>
#include <conio.h>

struct multsime{
struct submultime{
char A[10],B[10];
}sm[100];
}C[2],X[1];
char nit[10],nru[10];

unsigned cmp(char *, char );

6
unsigned c2(char *, char*);
void it(char* , char*);
void ru(char* , char*);
void sort(char *);
void del(unsigned , unsigned);
unsigned check(char *,char *,unsigned n);
unsigned eql(unsigned ,unsigned );

int main(){
//clrscr();
multsime S;
unsigned i, j, n, com[10][10]; //com - complementara
char *std="ABCDEFGH", lit[2]={'\0'};
int b[6][6]={
0,1,0,1,1,1,//1
1,0,1,1,1,1,//2
0,1,0,1,0,0,//3
1,1,1,0,1,1,//4
1,1,0,1,0,1,//5
1,1,0,1,1,0};//6
n=6;

/* printf("introdu nr de virfuri:");
scanf("%i", &v);
printf("introdu matricea de adiacenta:");
for(i=0; i<v; i++)
for(j=0; j<v; j++){
printf("\n b[%c][%c]=",std[i],std[j]);
scanf("%i", &b[i][j]);
}*/
printf("complementara:\n");
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
com[i][j]=1-b[i][j];
printf( " %i ",com[i][j]);}
printf("\n");
}

for(i=0; i<n; i++) { // transformarea in litere


lit[0]=*(std+i);lit[1]='\0';
strcat(C[0].sm[i].A,lit);
for(j=0; j<n; j++)
if(com[i][j]==1) {
lit[0]=*(std+j); lit[1]='\0';
strcat(C[0].sm[i].B,lit);}
}
unsigned m=0,k=0,v=n,l;

//-----------------------------------------------------------------

do{

C[1]=C[0];
m=n;
n=v;

//afisharea C0 submultsimelor A,B Pasul 2


printf("Afisharea lui C/ Pasul 2\n");
for (i=0;i<m;i++)
printf("C(%s|%s)\n", C[1].sm[i].A, C[1].sm[i].B);

//submultsimele din C[]

for (i=0;i<m;i++)
for (j=0;j<m;j++)
if ((i!=j) && (c2(C[0].sm[i].A, C[0].sm[j].A)) && (c2(C[0].sm[i].B,
C[0].sm[j].B))){
strcpy(X[0].sm[k].A,C[0].sm[j].A);
strcpy(X[0].sm[k].B,C[0].sm[j].B);
k++;
}
//afisharea X[]
printf("\nafisham multsimea X\n");
for (i=0;i<k;i++){

7
if (strlen(X[0].sm[i].A))
printf("X(%s|%s)\n", X[0].sm[i].A, X[0].sm[i].B);}
getch();

//(C[]/X[])

for(i=0;i<n;i++)
for(j=0;j<k+1;j++)
if( !strcmp(C[0].sm[i].A, X[0].sm[j].A) && !strcmp(C[0].sm[i].B, X[0].sm[j].B))
{del(i,n);n--;}

//C[] reuniunea shi intersectia cautarea in C[] it shi ru


printf("\nPasul 3\n");

for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++){
ru(C[0].sm[i].A, C[0].sm[j].A);
it(C[0].sm[i].B, C[0].sm[j].B);

printf("(%s,%s)U(%s,%s)=(%s,
%s)\n",C[0].sm[i].A,C[0].sm[i].B,C[0].sm[j].A,C[0].sm[j].B,nru,strlen(nit)>0?
nit:"Vid");
if (strlen(nit) && strlen(nru) && check(nru,nit,v)){
strcpy(C[0].sm[v].A, nru);
strcpy(C[0].sm[v].B, nit);
v++;
}
}
getch();
puts("C[0]");
for (l=0;l<m;l++) if(strlen(C[1].sm[l].A)) printf("\t%.2d.C[1](%s|%s)\n",l,
C[1].sm[l].A, C[1].sm[l].B);
puts("C[1]");
for (l=0;l<v;l++) if(strlen(C[0].sm[l].A)) printf("\t%.2d.C[0](%s|%s)\n",l,
C[0].sm[l].A, C[0].sm[l].B);

getch();
n=v;
printf("X=%d",k);
printf("\nCiclu\n\n");

}while(eql(m,n)); printf("\ndone!\n");
//------------------------------------------------------------------
char vt[10][10];
puts("Rezultat:");
printf("F=");
for (l=0;l<v;l++)
if ((strcmp(C[0].sm[l].A,C[0].sm[l].B)==0) && (strlen(C[0].sm[l].B)))
printf("(%s|%s);",C[0].sm[l].A, C[0].sm[l].B);
printf("\nS={");
for (l=0;l<v;l++)
if ((strcmp(C[0].sm[l].A,C[0].sm[l].B)==0) && (strlen(C[0].sm[l].B))){
printf("{");
for (i=0;i<strlen(C[0].sm[l].A);i++) printf("%s
%c",i?",":"",C[0].sm[l].A[i]);
printf("}");
}
printf("}");
getch();
return 1;
}
//controleaza da ca intrun shie se contsine caracterul variabila
unsigned cmp(char *p,char c){ //return 0 dace este return 1 daca nui
unsigned i=0;
while (*(p+i))
if(*(p+i++)==c) return 0;
return 1;
};

unsigned c2(char *a, char *b){


if ((strlen(a)>=strlen(b))){
while (*b)
if (cmp(a,*(b)++)) return 0;
return 1;}
return 0;
}

8
//intersectsia a 2 shiruri
void it(char *a,char *b){
char inter[10]={'\0'};
unsigned i=0;
if(strlen(a) && strlen(b))
while (*(b+i))
if(!cmp(a,*(b+i++))) *(inter+strlen(inter))=*(b+i-1);
sort(inter);
strcpy(nit,inter);
}
//reunuinea a 2 shiruri
void ru(char* a, char* b){
int i=0;
strcpy(nru,a);
char lit[2]={'\0'};
while (*(b+i))
if ( cmp(nru,b[i++]) ) {lit[0]=*(b+i-1); strcat(nru,lit);}

sort(nru);
}

//sortarea crescator a shirului (metoda bulelor)


void sort(char *p){
char tmp;
unsigned i,j,x=strlen(p);
for(i=1; i<x; i++)
for(j=0; j<x-i; j++)
if (p[j] > p[j+1] ) {tmp=p[j]; p[j]=p[j+1]; p[j+1]=tmp;}
}

//shtergerea din C[]


void del(unsigned i,unsigned n){
for (;i<n;i++){
C[0].sm[i]=C[0].sm[i+1];
}
}

//daca In C[] nu se contsine a shi b return 1


unsigned check(char *a,char *b,unsigned n){
for(int i=0;i<n;i++)
if( strcmp(C[0].sm[i].A,a)==0 )
if(strcmp(C[0].sm[i].B,b)==0) { return 0;}
return 1;
}

unsigned eql(unsigned n,unsigned m){


unsigned egale,j,i;
if (n!=m) return 1;
for(i=0;i<n;i++){
egale=0;
for(j=0;j<m;j++)
if((strcmp(C[0].sm[i].A,C[1].sm[j].A)==0) ||
(strcmp(C[0].sm[i].B,C[1].sm[j].B)==0)){
egale=1;break;}
}
if(egale) return 0; else return 1;
}
Rezultatul
complementara: 0 0 0 1 0 0
C(A|AC)
1 0 1 0 0 0 0 0 1 0 1 0
C(B|B)
0 1 0 0 0 0 0 0 1 0 0 1
C(C|ACEF)
1 0 1 0 1 1 Afisharea lui C/ Pasul 2
C(D|D)

9
C(E|CE) (B,B)U(AF,C)=(ABF,Vid) C(AE|C)
C(F|CF) (B,B)U(CE,CE)=(BCE,Vid) C(AF|C)
(B,B)U(CF,CF)=(BCF,Vid) C(CE|CE)
afisham multsimea X (B,B)U(EF,C)=(BEF,Vid) C(CF|CF)
(C,ACEF)U(D,D)=(CD,Vid) C(EF|C)
Pasul 3 (C,ACEF)U(AC,AC)=(AC,AC) C(|)
(A,AC)U(B,B)=(AB,Vid) (C,ACEF)U(AE,C)=(ACE,C) C(|)
(A,AC)U(C,ACEF)=(AC,AC) (C,ACEF)U(AF,C)=(ACF,C) C(|)
(A,AC)U(D,D)=(AD,Vid) (C,ACEF)U(CE,CE)=(CE,CE) C(ACE|C)
(A,AC)U(E,CE)=(AE,C) (C,ACEF)U(CF,CF)=(CF,CF) C(ACF|C)
(A,AC)U(F,CF)=(AF,C) (C,ACEF)U(EF,C)=(CEF,C) C(CEF|C)
(B,B)U(C,ACEF)=(BC,Vid) (D,D)U(AC,AC)=(ACD,Vid) C(ACEF|C)
(B,B)U(D,D)=(BD,Vid) (D,D)U(AE,C)=(ADE,Vid) C(AEF|C)
(B,B)U(E,CE)=(BE,Vid) (D,D)U(AF,C)=(ADF,Vid)
(B,B)U(F,CF)=(BF,Vid) (D,D)U(CE,CE)=(CDE,Vid) afisham multsimea X
(C,ACEF)U(D,D)=(CD,Vid) (D,D)U(CF,CF)=(CDF,Vid) X(A|AC)
(C,ACEF)U(E,CE)=(CE,CE) (D,D)U(EF,C)=(DEF,Vid) X(E|CE)
(C,ACEF)U(F,CF)=(CF,CF) (AC,AC)U(AE,C)=(ACE,C) X(F|CF)
(D,D)U(E,CE)=(DE,Vid) (AC,AC)U(AF,C)=(ACF,C) X(AE|C)
(D,D)U(F,CF)=(DF,Vid) (AC,AC)U(CE,CE)=(ACE,C) X(AF|C)
(E,CE)U(F,CF)=(EF,C) (AC,AC)U(CF,CF)=(ACF,C) X(EF|C)
C[0] (AC,AC)U(EF,C)=(ACEF,C) X(AE|C)
00.C[1](A|AC) (AE,C)U(AF,C)=(AEF,C) X(AF|C)
01.C[1](B|B) (AE,C)U(CE,CE)=(ACE,C) X(EF|C)
02.C[1](C|ACEF) (AE,C)U(CF,CF)=(ACEF,C) X(ACE|C)
03.C[1](D|D) (AE,C)U(EF,C)=(AEF,C) X(ACF|C)
04.C[1](E|CE) (AF,C)U(CE,CE)=(ACEF,C) X(CEF|C)
05.C[1](F|CF) (AF,C)U(CF,CF)=(ACF,C) X(AEF|C)
C[1] (AF,C)U(EF,C)=(AEF,C) X(AE|C)
00.C[0](A|AC) (CE,CE)U(CF,CF)=(CEF,C) X(AF|C)
01.C[0](B|B) (CE,CE)U(EF,C)=(CEF,C) X(EF|C)
02.C[0](C|ACEF) (CF,CF)U(EF,C)=(CEF,C)
03.C[0](D|D) C[0] Pasul 3
04.C[0](E|CE) 00.C[1](A|AC) (B,B)U(C,ACEF)=(BC,Vid)
05.C[0](F|CF) 01.C[1](B|B) (B,B)U(D,D)=(BD,Vid)
06.C[0](AC|AC) 02.C[1](C|ACEF) (C,ACEF)U(D,D)=(CD,Vid)
07.C[0](AE|C) 03.C[1](D|D) C[0]
08.C[0](AF|C) 04.C[1](E|CE) 00.C[1](B|B)
09.C[0](CE|CE) 05.C[1](F|CF) 01.C[1](C|ACEF)
10.C[0](CF|CF) 06.C[1](AC|AC) 02.C[1](D|D)
11.C[0](EF|C) 07.C[1](AE|C) 03.C[1](AC|AC)
X=0 08.C[1](AF|C) 04.C[1](AE|C)
Ciclu 09.C[1](CE|CE) 05.C[1](AF|C)
10.C[1](CF|CF) 06.C[1](CE|CE)
Afisharea lui C/ Pasul 2 11.C[1](EF|C) 07.C[1](CF|CF)
C(A|AC) C[1] 08.C[1](EF|C)
C(B|B) 00.C[0](B|B) 12.C[1](ACE|C)
C(C|ACEF) 01.C[0](C|ACEF) 13.C[1](ACF|C)
C(D|D) 02.C[0](D|D) 14.C[1](CEF|C)
C(E|CE) 03.C[0](AC|AC) 15.C[1](ACEF|C)
C(F|CF) 04.C[0](AE|C) 16.C[1](AEF|C)
C(AC|AC) 05.C[0](AF|C) C[1]
C(AE|C) 06.C[0](CE|CE) 00.C[0](B|B)
C(AF|C) 07.C[0](CF|CF) 01.C[0](C|ACEF)
C(CE|CE) 08.C[0](EF|C) 02.C[0](D|D)
C(CF|CF) 12.C[0](ACE|C) 03.C[0](AC|AC)
C(EF|C) 13.C[0](ACF|C) 04.C[0](CE|CE)
14.C[0](CEF|C) 05.C[0](CF|CF)
afisham multsimea X 15.C[0](ACEF|C) 06.C[0](ACEF|C)
X(A|AC) 16.C[0](AEF|C) X=64
X(E|CE) X=3 Ciclu
X(F|CF) Ciclu

Pasul 3 Afisharea lui C/ Pasul 2 done!


(B,B)U(C,ACEF)=(BC,Vid) C(B|B) Rezultat:
(B,B)U(D,D)=(BD,Vid) C(C|ACEF) F=(B|B);(D|D);(AC|AC);(CE|
CE);(CF|CF);
(B,B)U(AC,AC)=(ABC,Vid) C(D|D) S={{B}{D}{A,C}{C,E}{C,F}}
(B,B)U(AE,C)=(ABE,Vid) C(AC|AC)

10

S-ar putea să vă placă și