0% au considerat acest document util (0 voturi)
516 vizualizări10 pagini

Grafuri - Algoritmul Malgrange

Documentul descrie algoritmul Malgrange pentru determinarea submatricilor principale ale unei matrice binare si a mulțimilor stabile maxime din graful corespunzator. Algoritmul construieste o acoperire initiala a matricei, apoi genereaza noi submatrici prin uniunea si intersectia elementelor acoperirii curente, pana cand nu se mai obtin noi elemente. Submatricile generate reprezinta mulțimile stabile maxime ale grafului.

Încărcat de

Mihaela Jura
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
516 vizualizări10 pagini

Grafuri - Algoritmul Malgrange

Documentul descrie algoritmul Malgrange pentru determinarea submatricilor principale ale unei matrice binare si a mulțimilor stabile maxime din graful corespunzator. Algoritmul construieste o acoperire initiala a matricei, apoi genereaza noi submatrici prin uniunea si intersectia elementelor acoperirii curente, pana cand nu se mai obtin noi elemente. Submatricile generate reprezinta mulțimile stabile maxime ale grafului.

Încărcat de

Mihaela Jura
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 10

Ministerul Educaiei i Tineretului din Republica Moldova

Universitatea de Stat din Moldova

Lucrare de laborator

Tema: Mulimi stabile n grafuri neorientate.

Algoritmul Malgrange

Student:
Student:
Profesor: Novac L.

Chiinu 2009
I. Noiuni preliminare:
Fie M o matrice binar, finit, de dimensiune mn, cu mulimea de linii L={l 1,l2,,lm} i
mulimea de coloane C={c1,c2,,cm}. Vom nota =(A,B) matricea format din elementele de la
intersecia liniilor AI i a coloanelor BJ.
Fie acum 1 i 2 dou submatrice ale matricei M, determinate de perechile de mulimi de linii
i coloane (Ai,Bi) i=1,2 (1=(A1,B1) i 2=(A2,B2)).
Dac A1A2 , B1B2 (12), matricea 1 se numete submatrice a matricei 2 .
Dac toate elementele din sunt egale cu 1, submatricea a matricei M se numete
complet.
Dac submatricea este complet i n M nu exist o alt submatrice complet astfel nct
, se numete principal.
Dac orice element egal cu 1 din M aparine cel puin unei submatrici din familia C={1,2,
,p}, aceast familie C se numete acoperire a matricei C.
Cardinalul mulimii stabile interior maxime a grafului G se noteaz prin 0(G) i se numete
numr 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 lucrrii: De a construi toate submatricile principale ptratice ale lui , n baza crora
se pot determina toate mulimile 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 conin unitatea n linia Ai.

Acoperirea iniial 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={iCp, ji astfel, nct j i } familia tuturor
submatricelor complete din Cp, care care se conin n alte submatrice ale lui Cp.

n acest caz X0=

Pasul 3. Construim familia de submatrice (Cp\Xp), care se obine prin aplicarea operaiilor
i asupra tuturor perechilor posibile de matrice i, j din Cp\Xp, cu condiia ca aceste
elemente noi s nu le conin 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. Formm acoperirea de matrice: Cp+1Cp\Xp) ((Cp\Xp))

3
C1C0\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 considerm p=p+1 i ne rentoarcem 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.
C2C1\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.
C3C2\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.
C4C3\X3) ((C3\X3)) = C3

Pasul 5. C4 = 3 , rezult c C3 conine toate submatricele principale ale matricei .

Pasul 6.Construim o familie nou F n care includem submatricele ptraticemaximale ale


submatricelor principale din C3, respectnd condiia ca fiecare dintre acestea s nu le conin
alt submatrice ptratic 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) }

Vrfurile ce corespund liniilor (coloanelor) matricelor familiei F formeaz o mulime stabil


interior. Astfel, numrul tuturor mulimilor stabil interior este egal cu |F| (|F|=5).

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

Mulimile 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