Laboratoare Spinu.docx

  • Uploaded by: Vasile Galben
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Laboratoare Spinu.docx as PDF for free.

More details

  • Words: 12,579
  • Pages: 143
MINISTERUL EDUCAȚIEI AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT DIN TIRASPOL

CATEDRA FIZICĂ, MATEMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE SPECIALITATEA TEHNOLOGII INFORMAȚIONALE ÎN INSTRUIRE

Structuri algebrice pe calculator

Laboratoare Realizat: Spînu Mariana Grupa: C1I1

Verificat: Chiriac Liubomir

Chişinău, 2017 1

Cuprins Algoritmi de verificare a unor proprietăţi algebrice și de identificare a unităților pe structuri algebrice finite .............................................................................................................................................................. 3 Algoritmi de realizare a produsului direct dintre doi grupoizi ....................................................................21 Algoritmi de realizare a produsului direct special dintre doi grupoizi ........................................................36 Algoritmi pentru identificarea unităților multiple .......................................................................................52 Algoritmi privind obținerea izotopilor unui grupoid ...................................................................................67 Algoritmi privind verificareaobținerea izomorfismelor de grupoizi ...........................................................89 Algoritm privind compunerea substituțiilor ..............................................................................................107 Algoritmi privind obținerea quasigrupului dintr-un grup comutativ pe care sunt definite careva operații binare .........................................................................................................................................................111

2

Algoritmi de verificare a unor proprietăţi algebrice și de identificare a unităților pe structuri algebrice finite Problema. Se dă grupoidul (Q, ∙). Se cere de elaborat un program care verifică dacă în grupoidul respective se îndeplinesc următoarele proprietăți: 1. Asociativitatea: a(bc)=(ab)c ,∀a,b ,c ∈Q 2. Medialitatea: (ab)(cd)=(ac )(bd ),∀a,b, c ,d∈Q 3. Paramedialitatea: (ab)(cd)=(db)( ca),∀a,b , c ,d ∈Q 4. Bicomutativitatea: (ab)(cd)=(dc)(ba),∀a ,b , c ,d∈Q 5. AG grupoid: (ab) c=(cb)a ,∀a ,b , c∈Q 6. GA grupoid: (ab) c=c(ba),∀a , b, c∈Q 7. GA-1 grupoid: (ab) c=(ca)b ,∀a,b , c∈Q 8. AD grupoid: a(bc)=c(ba),∀a,b, c∈Q 9. DA grupoid: a(bc)=c(ab),∀a,b ,c ∈Q 10. Hexagonalitatea:a⋅a=a ;(ab)(cd)=(ac )(bd),a(ba)=(ab)a=b ,∀a ,b , c ,d∈Q 11. Distributivitatea la dreapta: (ab)c=(ac)(bc ),∀a, b, c∈Q 12. Distributivitatea la stânga: c (ab)=(ca)(cb),∀ a ,b , c∈Q 13. Unitatea la dreapta: xe=x ,∀x∈Q 14. Uniatea la stânga: ex=x ,∀x∈Q 15. Unitateaxe=ex=x ,∀x∈Q 16. Ward: ab=(ac)(bc)∀a , b, c∈Q 17. Ward invers: ab=( ca)(cb)∀a,b, c∈Q.

3

Aplicând programul elaborat să se cerceteze proprietățile următoarelor structuri algebrice: Grupoidul(𝑄1 ) 1 2 1 2 3 2 4 1 3 3 2 4 1 4

3 1 3 4 2

4 4 4 1 3

Grupoidul(𝑄4 ) 1 2 1 2 1 2 1 3 3 3 4 4 4 2

3 3 4 2 1

4 4 2 1 3

Grupoidul(𝑄7 ) 1 2 1 1 4 2 6 2 3 4 7 4 2 5 5 7 3 6 5 1 7 3 6

3 7 5 3 1 6 4 2

4 3 1 6 4 2 7 5

Grupoidul(𝑄9 ) 1 2 1 1 2 2 2 3 3 4 1 4 3 4

3 4 1 3 2

Grupoidul(𝑄12 ) 1 2 1 1 2 2 3 1 3 2 3

3 3 2 1

Grupoidul(𝑄15 ) 1 2 1 1 2 2 3 1 3 2 4

3 3 4 1

4 3 4 2 1

4 4 2 3

5 6 4 2 7 5 3 1

Grupoidul(𝑄2 ) 1 2 1 1 2 2 2 3 3 4 1 4 3 4

3 4 1 3 2

Grupoidul(𝑄5 ) 1 2 1 1 2 2 2 3 3 3 1

3 3 1 2

6 2 7 5 3 1 6 4

3 4 1 3 2

4 3 4 2 1

Grupoidul(𝑄6 ) 1 2 1 1 4 2 3 2 3 4 1 4 2 3

3 2 4 3 1

4 3 1 2 4

5 6 6 6 2 5 4

6 4 4 4 5 2 6

Grupoidul(𝑄11 ) 1 2 1 2 1 2 3 4 3 4 3 4 1 2

3 3 2 1 4

4 4 1 2 3

Grupoidul(𝑄14 ) 1 2 1 1 3 2 2 1 3 3 4 4 4 2

3 2 4 1 3

4 4 3 2 1

Grupoidul(𝑄8 ) 1 2 1 1 2 2 2 2 3 2 2 4 6 6 5 4 4 6 5 5

7 5 3 1 6 4 2 7

Grupoidul(𝑄10 ) 1 2 1 2 1 2 1 3 3 3 4 4 4 2

4 3 4 2 1

Grupoidul(𝑄3 ) 1 2 1 1 2 2 2 3 3 4 1 4 3 4

3 3 4 2 1

Grupoidul(𝑄13 ) 1 2 1 1 3 2 2 1 3 3 2

3 2 3 1

Grupoidul(𝑄16 ) 1 2 1 1 3 2 2 1 3 3 2

3 2 3 1

4 4 2 1 3

4 4 6 5

5 5 4 6

3 2 2 3 6 4 5

4 5 5 3 4 6 2

6 6 5 4 4

4

4

3

2

1

4 5 6

4 5 6

6 4 5

5 6 4

1 3 2

2 1 3

3 2 1

Elaborarea programului: Program problema1_2; uses crt; type masiv=array[1..15,1..15] of integer; var a,gr:masiv; r1,d1,r,d,r2,n,t,i,j,k,p,l,d2:integer; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este medial') else writeln('Nu este medial'); end; 5

Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') else writeln('Nu este paramedial'); end; Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; 6

if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end; Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; 7

if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); var l:integer; begin l:=0; 8

for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; if gr[d,k]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; 9

Procedure unitate_stanga(gr:masiv); var l:integer; begin j:=0; r2:=0; for i:=1 to n do begin l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end; Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure afisare; begin for i:=1 to n do begin writeln; for j:=1 to n do begin write(a[i,j],' '); end; end; end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); end; 10

Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Begin clrscr; write('Dati n= '); readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,', ',j,']='); readln(a[i,j]); end; afisare; writeln; asociativ(a); medial(a); paramedial(a); bicomutativ(a); ag_gr(a); ga_gr(a); ga_gr1(a); ad_gr(a); da_gr(a); hexagonal(a); dist_dr(a); dist_st(a); unitate_dreapta(a); unitate_stanga(a); unitate; ward(a); ward_inv(a); End. 11

În urma compilării sau obţinut următoarele rezultatele : Grupoidul 1:

Grupoidul 2:

12

Grupoidul 3:

Grupoidul 4:

13

Grupoidul 5:

Grupoidul 6:

14

Grupoidul 7:

Grupoidul 8:

15

Grupoidul 9:

Grupoidul 10:

16

Grupoidul 11:

Grupoidul 12:

17

Grupoidul 13:

Grupoidul 14:

18

Grupoidul 15:

19

Grupoidul 16:

Tabelul cu proprietățile grupoizilor : Asociativ Medial Paramedial Bicomutativ AG grupoid GA grupoid GA1 grupoid AD grupoid DA grupoid Hexagonal Distributivladreapta Distributivlastânga Unitatededreapta Unitatedestânga Unitate Ward Wardinvers

G1 G2 + + + + + -

G3 + + -

G4 + + -

G5 + + + + + + + + + 1 1 1 -

G6 + + + + + + -

G7 + + + + -

G8 -

G9 + + -

G10 G11 G12 G13 G14 G15 G16 + + + + + + + + + + + + + + + + + + + 1 1 1 1 1 + + + + + -

20

Algoritmi de realizare a produsului direct dintre doi grupoizi Problemă. Se cere de elaborat un algoritm care efectuează produsul cartezian dintre grupoidul (𝐺1 ,∙) și (𝐺2 ,∗) conform următoarei reguli: (𝑎1 , 𝑏1 ) ∘ (𝑎2 , 𝑏2 ) = (𝑎1 ⋅ 𝑎2 , 𝑏1 ∗ 𝑏2 ), ∀(𝑎1 , 𝑏1 ), (𝑎2 , 𝑏2 ) ∈ 𝐺1 × 𝐺2 .

Să se realizeze produsul direct dintre grupoizii indicați mai jos: Ex.1 · 1 2

1 1 2

2 2 1

Ex.2 · 1 2 3 4

1 2 4 3 1

2 3 1 2 4

3 1 3 4 2

Ex.3 · 1 2 3 4

1 1 2 4 3

2 2 3 1 4

3 4 1 3 2

Ex.4 · 1 2 3

1 1 2 3

2 2 3 1

3 3 1 2

Ex.5 · 1 2 3

1 1 6 4

2 4 2 7

3 7 5 3

* 1 2 3

1 1 3 2

2 2 1 3

3 3 2 1

4 4 2 1 3

* 1 2 3 4 5 6 7

1 1 6 4 2 7 5 3

2 4 2 7 5 3 1 6

3 7 5 3 1 6 4 2

4 3 4 2 1

* 1 2 3

1 1 3 2

2 2 1 3

3 3 2 1

* 1 2 3 4

1 1 3 4 2

2 4 2 1 3

3 2 4 3 1

* 1 2 3

1 1 3 2

2 2 1 3

3 3 2 1

4 3 1 6

5 6 4 2

6 2 7 5

7 5 3 1

4 3 1 6 4 2 7 5

5 6 4 2 7 5 3 1

6 2 7 5 3 1 6 4

7 5 3 1 6 4 2 7

4 3 1 2 4

21

4 5 6 7

2 7 5 3

5 3 1 6

1 6 4 2

4 2 7 5

7 5 3 1

3 1 6 4

6 4 2 7

Ex.6 · 1 2 3 4

1 4 3 2 1

2 3 4 1 2

3 2 1 4 3

4 1 2 3 4

* 1 2 3 4

1 1 2 3 4

2 2 3 4 1

3 3 4 1 2

4 4 1 2 3

Ex.7 · 1 2 3 4

1 1 3 2 4

2 2 4 1 3

3 4 2 3 1

4 3 1 4 2

* 1 2 3 4

1 2 3 4 1

2 1 4 3 2

3 3 2 1 4

4 4 1 2 3

Ex.8 · 1 2 3 4

1 2 3 4 1

2 3 2 1 4

3 4 1 2 3

4 1 4 3 2

* 1 2 3 4

1 4 3 2 1

2 3 4 1 2

3 2 1 4 3

4 1 2 3 4

Elaborarea programului: Program produs_cartezian; uses crt; type masiv=array[1..15,1..15] of integer; var a,b,rez,t1,p1,gr:masiv; c,f:array[1..100] of integer; r1,d1,d2,r,d,r2,n,m,t,i,j,k,p,l:integer; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; 22

d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este medial') else writeln('Nu este medial'); end; Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') else writeln('Nu este paramedial'); end; 23

Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; 24

d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end; Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do 25

for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; if gr[d,k]<>gr[d1,r1] then inc(l); end; 26

if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; Procedure unitate_stanga(gr:masiv); var l:integer; begin j:=0; r2:=0; for i:=1 to n do begin 27

l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end; Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure afisare; begin for i:=1 to n do begin writeln; for j:=1 to n do begin write(a[i,j],' '); end; end; end; Procedure prod_cartezian(var s:masiv); begin k:=1; for i:=1 to n do for j:=1 to m do begin c[k]:=i; t1[i,j]:=k; f[k]:=j; k:=k+1; end; for i:=1 to n*m do for j:=1 to n*m do s[i,j]:=t1[a[c[i],c[j]],b[f[i],f[j]]]; end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; 28

for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); end; Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Begin clrscr; writeln('Dati n= '); readln(n); writeln('Dati m= '); readln(m); for i:=1 to n do for j:=1 to n do begin write ('a [', i,',' , j, '] = '); readln(a[i,j]); end; for i:=1 to m do for j:=1 to m do begin write('b[',i,',',j,'] = '); readln(b[i,j]); end; afisare; writeln; 29

prod_cartezian(rez); for i:=1 to n*m do begin for j:=1 to n*m do begin write(rez[i,j],' '); end; writeln; end; asociativ(rez); medial(rez); paramedial(rez); bicomutativ(rez); ag_gr(rez); ga_gr(rez); ga_gr1(rez); ad_gr(rez); da_gr(rez); hexagonal(rez); dist_dr(rez); dist_st(rez); unitate_dreapta(rez); unitate_stanga(rez); unitate; ward(rez); ward_inv(rez); readkey; End.

În urma compilarii sau obținut următoarele rezultate:

30

Ex. 1

Ex. 2 2314 4132 3241 1423 8 11 14 10 13 9 12 15 18 21 17 20 16 19 1 4 7 3 6 2 5 22 25 28 24 27 23 26 13 9 12 8 11 14 10 20 16 19 15 18 21 17 6 2 5 1 4 7 3 27 23 26 22 25 28 24 11 14 10 13 9 12 8 18 21 17 20 16 19 15 4 7 3 6 2 5 1 25 28 24 27 23 26 22 9 12 8 11 14 10 13 16 19 15 18 21 17 20 2 5 1 4 7 3 6 23 26 22 25 28 24 27 14 10 13 9 12 8 11 21 17 20 16 19 15 18 7 3 6 2 5 1 4 28 24 27 23 26 22 25 12 8 11 14 10 13 9 19 15 18 21 17 20 16 5 1 4 7 3 6 2 26 22 25 28 24 27 23 10 13 9 12 8 11 14 17 20 16 19 15 18 21 3 6 2 5 1 4 7 24 27 23 26 22 25 28 22 25 28 24 27 23 26 1 4 7 3 6 2 5 15 18 21 17 20 16 19 8 11 14 10 13 9 12 27 23 26 22 25 28 24 6 2 5 1 4 7 3 20 16 19 15 18 21 17 13 9 12 8 11 14 10 25 28 24 27 23 26 22 4 7 3 6 2 5 1 18 21 17 20 16 19 15 11 14 10 13 9 12 8 23 26 22 25 28 24 27 2 5 1 4 7 3 6 16 19 15 18 21 17 20 9 12 8 11 14 10 13 28 24 27 23 26 22 25 7 3 6 2 5 1 4 21 17 20 16 19 15 18 14 10 13 9 12 8 11 26 22 25 28 24 27 23 5 1 4 7 3 6 2 19 15 18 21 17 20 16 12 8 11 14 10 13 9 24 27 23 26 22 25 28 3 6 2 5 1 4 7 17 20 16 19 15 18 21 10 13 9 12 8 11 14 15 18 21 17 20 16 19 8 11 14 10 13 9 12 22 25 28 24 27 23 26 1 4 7 3 6 2 5 20 16 19 15 18 21 17 13 9 12 8 11 14 10 27 23 26 22 25 28 24 6 2 5 1 4 7 3 18 21 17 20 16 19 15 11 14 10 13 9 12 8 25 28 24 27 23 26 22 4 7 3 6 2 5 1 16 19 15 18 21 17 20 9 12 8 11 14 10 13 23 26 22 25 28 24 27 2 5 1 4 7 3 6 21 17 20 16 19 15 18 14 10 13 9 12 8 11 28 24 27 23 26 22 25 7 3 6 2 5 1 4 19 15 18 21 17 20 16 12 8 11 14 10 13 9 26 22 25 28 24 27 23 5 1 4 7 3 6 2 17 20 16 19 15 18 21 10 13 9 12 8 11 14 24 27 23 26 22 25 28 3 6 2 5 1 4 7 1 4 7 3 6 2 5 22 25 28 24 27 23 26 8 11 14 10 13 9 12 15 18 21 17 20 16 19 6 2 5 1 4 7 3 27 23 26 22 25 28 24 13 9 12 8 11 14 10 20 16 19 15 18 21 17 4 7 3 6 2 5 1 25 28 24 27 23 26 22 11 14 10 13 9 12 8 18 21 17 20 16 19 15 2 5 1 4 7 3 6 23 26 22 25 28 24 27 9 12 8 11 14 10 13 16 19 15 18 21 17 20 7 3 6 2 5 1 4 28 24 27 23 26 22 25 14 10 13 9 12 8 11 21 17 20 16 19 15 18 5 1 4 7 3 6 2 26 22 25 28 24 27 23 12 8 11 14 10 13 9 19 15 18 21 17 20 16 3 6 2 5 1 4 7 24 27 23 26 22 25 28 10 13 9 12 8 11 14 17 20 16 19 15 18 21 Nu este asociativ Este medial Nu este paramedial Nu este bicomutativ Nu este AG grupoid

31

Nu este GA grupoid Nu este GA1 grupoid Nu este AD grupoid Nu este DA grupoid Nu este hexagonal Nu este distributiv la dreapta Nu este distributiv la stinga Nu este unitate de dreapta Nu este unitate de stanga Nu este unitate Nu este Ward Nu este Ward invers

Ex. 3

Ex.4

Ex. 5 1473625 6251473 4736251 2514736 7362514 5147362 3625147 1 2 3 10 11 12 19 20 21 7 8 9 16 17 18 4 5 6 13 14 15 3 1 2 12 10 11 21 19 20 9 7 8 18 16 17 6 4 5 15 13 14 2 3 1 11 12 10 20 21 19 8 9 7 17 18 16 5 6 4 14 15 13 16 17 18 4 5 6 13 14 15 1 2 3 10 11 12 19 20 21 7 8 9 18 16 17 6 4 5 15 13 14 3 1 2 12 10 11 21 19 20 9 7 8 17 18 16 5 6 4 14 15 13 2 3 1 11 12 10 20 21 19 8 9 7

32

10 11 12 19 20 21 7 8 9 16 17 18 4 5 6 13 14 15 1 2 3 12 10 11 21 19 20 9 7 8 18 16 17 6 4 5 15 13 14 3 1 2 11 12 10 20 21 19 8 9 7 17 18 16 5 6 4 14 15 13 2 3 1 4 5 6 13 14 15 1 2 3 10 11 12 19 20 21 7 8 9 16 17 18 6 4 5 15 13 14 3 1 2 12 10 11 21 19 20 9 7 8 18 16 17 5 6 4 14 15 13 2 3 1 11 12 10 20 21 19 8 9 7 17 18 16 19 20 21 7 8 9 16 17 18 4 5 6 13 14 15 1 2 3 10 11 12 21 19 20 9 7 8 18 16 17 6 4 5 15 13 14 3 1 2 12 10 11 20 21 19 8 9 7 17 18 16 5 6 4 14 15 13 2 3 1 11 12 10 13 14 15 1 2 3 10 11 12 19 20 21 7 8 9 16 17 18 4 5 6 15 13 14 3 1 2 12 10 11 21 19 20 9 7 8 18 16 17 6 4 5 14 15 13 2 3 1 11 12 10 20 21 19 8 9 7 17 18 16 5 6 4 7 8 9 16 17 18 4 5 6 13 14 15 1 2 3 10 11 12 19 20 21 9 7 8 18 16 17 6 4 5 15 13 14 3 1 2 12 10 11 21 19 20 8 9 7 17 18 16 5 6 4 14 15 13 2 3 1 11 12 10 20 21 19 Nu este asociativ Este medial Nu este paramedial Nu este bicomutativ Nu este AG grupoid Nu este GA grupoid Nu este GA1 grupoid Nu este AD grupoid Nu este DA grupoid Nu este hexagonal Nu este distributiv la dreapta Nu este distributiv la stinga Nu este unitate de dreapta Nu este unitate de stanga Nu este unitate Nu este Ward Nu este Ward invers

33

Ex.6 Ex.7

34

Ex.8

Tabelul proprietăților grupoizilor verificați: Asociativ Medial Paramedial Bicomutativ AG grupoid GA grupoid GA1 grupoid AD grupoid DA grupoid Hexagonal Distributivladreapta Distributivlastânga Unitatededreapta Unitatedestânga Unitate Ward Wardinvers

Ex.1 + + + + 1 +

Ex.2 + -

Ex.3 + 1 -

Ex.4 + + + + + + -

Ex.5 + -

Ex.6 + + + + + + + + + -

Ex.7 + -

Ex.8 + + + + + + + + + + +

35

Algoritmi de realizare a produsului direct special dintre doi grupoizi Problemă. Se dă grupul(𝑄, +), se cere de elaborat un algoritm care realizează produsul direct special(𝑄, +) × (𝑄, +), conform următoarelor legi: Legea 1 (𝑥1 , 𝑦1 ) × (𝑥2 , 𝑦2 ) = (𝑥1 + 𝑦1 − 𝑦2 , 𝑥2 + 𝑦2 − 𝑥1 ), ∀𝑥1 , 𝑦1 , 𝑥2 , 𝑦2 ) ∈ 𝑄;

Legea 2 (𝑥1 , 𝑦1 ) × (𝑥2 , 𝑦2 ) = (𝑥1 + 𝑦1 − 𝑦2 , 𝑥2 + 𝑦2 − 𝑦1 ), ∀𝑥1 , 𝑦1 , 𝑥2 , 𝑦2 ) ∈ 𝑄.

Pentru fiecare din exemplele de mai jos să se realizeze (𝑄, +) × (𝑄, +) Ex.1 + 1 2 3

1 1 2 3

2 2 3 1

3 3 1 2

Ex.4 + 1 2 3 4

1 1 2 3 4

2 2 1 4 3

3 3 4 1 2

4 4 3 2 3

Ex.2 + 1 2

1 1 2

2 2 1

Ex.5 + 1 2 3

1 1 3 2

2 2 1 3

Ex.3 + 1 2 3 4

1 1 2 3 4

2 2 3 4 1

3 3 4 1 2

4 4 1 2 3

3 3 2 1

Elaborarea programului: Program prblm4; uses crt; type masiv=array[1..50,1..50] of integer; var gr1,gr2,opus,a,tabel,gr:masiv; r1,d1,r,d,r2,n,m,t,i,j,k,p,l,d2:integer; i2,k2,k1:integer; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do 36

for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este medial') else writeln('Nu este medial'); end; Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') 37

else writeln('Nu este paramedial'); end; Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do 38

for k:=1 to n do begin d:=gr[i,j]; d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end; Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin 39

l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; 40

if gr[d,k]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; Procedure unitate_stanga(gr:masiv); var l:integer; begin 41

j:=0; r2:=0; for i:=1 to n do begin l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end; Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure Topus(n:integer); var i,j,element,k:integer; begin for i:=1 to n do for j:=1 to n do begin write ('a [', i,',' , j, '] = '); readln(element); gr[i,j]:=element; if (element=1) then opus[i,1]:=j; end; k:=1; for i:=1 to n do for j:=1 to n do begin tabel[i,j]:=k; k:=k+1; end; end; Procedure pr_cartezian(gr:masiv); var i,j,k1,k2,i1,j2:integer; begin k1:=0; for i:=1 to n do for j:=1 to n do begin k1:=k1+1; 42

k2:=0; for i2:=1 to n do for j2:=1 to n do begin k2:=k2+1; gr2[k1,k2]:=tabel[gr[gr[i,j],opus[j2,1]],gr[gr[i2,j2],opus[i,1]]]; {gr2[k1,k2]:=tabel[gr[gr[i,j],opus[j2,1]],gr[gr[i2,j2],opus[j,1]]];} //legea2 end; end; end; Procedure afisare_pr(gr2:masiv); var a,i,j:integer; begin for i:=1 to n*n do begin for j:=1 to n*n do write(gr2[i,j]:4); writeln; end; end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); end; Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; 43

if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Begin clrscr; writeln('Dati n='); readln(n); Topus(n); pr_cartezian(gr); writeln('Produsul'); afisare_pr(gr2); asociativ(gr2); medial(gr2); paramedial(gr2); bicomutativ (gr2); ag_gr(gr2); ga_gr(gr2); ga_gr1(gr2); ad_gr(gr2); da_gr(gr2); hexagonal(gr2); dist_dr(gr2); dist_st(gr2); unitate_dreapta(gr2); unitate_stanga(gr2); unitate; ward(gr2); ward_inv(gr2); readkey; End.

44

Rezultatele obținute în urma compilării conform legii 1: Ex.1

Ex.2

45

Ex.3

46

Ex.4

Ex.5

47

Rezultatele obținute în urma compilării conform legii 2: Ex. 1

Ex. 2

48

Ex. 3

Ex. 4

49

Ex. 5

50

Tabelul rezultatelor obținute: Legea 1 Asociativ Medial Paramedial Bicomutativ AG grupoid GA grupoid GA1 grupoid AD grupoid DA grupoid Hexagonal Distributivladreapta Distributivlastânga Unitatededreapta Unitatedestânga Unitate Ward Wardinvers

Ex.1 + + + + -

Ex.2 + + + + + + -

Ex.3 + + + + -

Ex.4 + + + + + + -

Ex.5 + -

Ex.1 -

Legea 2 Ex.2 Ex.3 Ex.4 -

Ex.5 -

51

Algoritmi pentru identificarea unităților multiple Problema.Fie (𝐺,∙) – grupoid. Se cere de elaborat un program care identifică (n, m) – unitatea în grupoidul respectiv. Să se testeze proprietățile algebrice. Elementul e, 𝑒 ∈ 𝐺 se numește (n, m) – unitate dacă se îndeplinesc următoarele condții: 1. e*e=1 2. n(e, x)=x, pentru orice 𝒙 ∈ (𝑮,∙) 3. (x, e)m=x, pentru orice 𝒙 ∈ (𝑮,∙) Pentru fiecare din exemple, să se determine (n,m)-unitățile. Ex.1 · 1 2 3

1 1 3 2

2 2 1 3

3 3 2 1

Ex.2 · 1 2 3 4

1 1 3 4 2

2 2 4 1 3

3 4 2 3 1

4 3 1 2 4

Ex.5 · 1 2 3 4 5

1 1 3 2 5 4

2 3 4 1 2 5

3 2 1 5 4 3

4 5 2 4 3 1

Ex.7 · 1 2 3 4

1 1 2 4 3

2 2 1 3 4

3 3 4 1 2

4 4 3 2 1

Ex.4 · 1 2 3 4

1 1 2 3 4

2 2 1 4 3

3 4 3 1 2

4 3 4 2 1

Ex.6 · 1 2 3 4 5

1 1 4 5 3 2

2 3 2 4 5 1

3 2 5 3 1 4

4 5 1 2 4 3

5 4 3 1 2 5

Ex.3 · 1 2 3 4 5

1 1 3 5 2 4

2 5 2 4 1 3

3 4 1 3 5 2

4 3 5 2 4 1

5 2 4 1 3 5

5 4 5 3 1 2

52

Elaborarea programului: Program unitate_multipla; uses crt; label y; type masiv=array[1..20,1..20] of byte; var {i,j,n,}l:byte; s:boolean; a,gr:masiv; c,b:array[1..20] of 0..20; r1,d1,r,d,r2,n,t,i,j,k,p,d2:integer; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este medial') 53

else writeln('Nu este medial'); end; Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') else writeln('Nu este paramedial'); end; Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin 54

l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end;

55

Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; 56

r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; if gr[d,k]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; 57

begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; Procedure unitate_stanga(gr:masiv); var l:integer; begin j:=0; r2:=0; for i:=1 to n do begin l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end; Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure afisare; begin for i:=1 to n do begin writeln; for j:=1 to n do begin 58

write(a[i,j],' '); end; end; end; Function mm(g:byte):byte; var ii,jj,k,x,q:byte; begin for jj:=1 to n do begin k:=0; x:=jj; repeat begin x:=a[x,g]; inc(k); end; until(x=jj)or(k>n); if k>n then b[jj]:=0 else b[jj]:=k; end; q:=b[1]; for jj:=1 to n do if b[jj]>q then q:=b[jj]; mm:=q; end; Function nn(gg:byte):byte; var ii,jj,k,x,q:byte; begin for jj:=1 to n do begin k:=0; x:=jj; repeat begin x:=a[gg,x]; inc(k); end; until (x=jj)or(k>n+1); if k>n then c[jj]:=0 else c[jj]:=k; end; q:=c[1] ; for jj:=1 to n do if c[jj]>q then q:=c[jj]; nn:=q; end; 59

Procedure tipar(h:masiv); var contor:integer; begin contor:=0; write('a,(*);'); for i:=1 to n do begin contor:=contor+3; gotoxy(2+3*i,3);write('_'); gotoxy(4,i+3);write('|'); gotoxy(3+contor,3);write(i); end; for i:=1 to n do for j:=1 to n do begin gotoxy(3+3*j,3+i);writeln(h[i,j]); end;end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); end; Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; 60

if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Begin y:clrscr; write ('Dati n= '); readln(n); for i:=1 to n do begin gotoxy(2+3*i,3);write('_'); gotoxy(4,i+3);write('|'); gotoxy(3+3*i,2);write(i); gotoxy (3,3+i);write(i); end; for i:=1 to n do for j:=1 to n do begin gotoxy(3+3*j,3+i); read(a[i,j]); end; for i:=1 to n do for j:=1 to n do for l:=1 to j-1 do if a[i,j]=a[i,1] then goto y; for i:=1 to n do for j:=1 to n do for l:=1 to j-1 do if a[i,j]=a[i,l] then goto y; clrscr; tipar(a); for i:=1 to n do if ((a[i,i]=i) and (mm(i)<>0) and (nn(i)<>0)) then begin writeln(i,'=E(',nn(i),',',mm(i),')'); end; afisare; writeln; asociativ(a); medial(a); paramedial(a); bicomutativ(a); ag_gr(a); ga_gr(a); ga_gr1(a); ad_gr(a); 61

da_gr(a); hexagonal(a); dist_dr(a); dist_st(a); unitate_dreapta(a); unitate_stanga(a); unitate; ward(a); ward_inv(a); readkey; End.

În urma compilării sau obținut următoarele rezultate: Ex. 1

62

Ex. 2

Ex. 3

63

Ex. 4

Ex. 5

64

Ex. 6

Ex. 7

65

Tabelul proprietăților obținute : Ex.1

Unități multiple

Asociativ Medial Paramedial Bicomutativ AG grupoid GA grupoid GA1 grupoid AD grupoid DA grupoid Hexagonal Distributivladreapta Distributivlastânga Unitatededreapta Unitatedestânga Unitate Ward Wardinvers

Ex.2

Ex.3

Ex.4

Ex.5

Ex.6

Ex.7

1=E(2,4) 1=E(2,4) 1=E(2,3) 2=E(2,4) 2=E(2,4) 1=E(1,2) 3=E(3,2) 3=E(2,4) 1=E(2,1) 1=E(2,2) 3=E(2,4) 1=E(1,2) 4=E(3,3) 4=E(2,4) 4=E(2,4) 5=E(2,4) 5=E(2,4) + + + + 1 +

-

+ + + + + -

+ + + + 1 + -

+ + + + -

+ + + + + -

+ + + + 1 +

66

Algoritmi privind obținerea izotopilor unui grupoid Problemă. Fie grupoidul (𝑄,∙) de dimensiunea n. Fie 𝛼, 𝛽, 𝛾sunt trei permutări arbitrare ale mulțimii Q. Atunci aplicând permutarea 𝛼 elementelor de pe linia de bordare, permutarea 𝛽 elementelor de pe coloana de bordare și permutarea 𝛾 −1 a elementelor din interiorul tabelei, se obține o nouă lege de compoziție ° pe Q și este clar că (𝑄, °) este izotop cu quasigrupul (𝑄,∙). Se cere să se elaboreze un program care efecuează permutările date. Să se cerceteze proprietățile algebrice ale quasigrupului obținut.

Pentru fiecare din exemple, să se efectueze transformările 𝜶, 𝜷, 𝜸−𝟏 .

Ex.1

Ex.2

·

1

2

3

4

·

1

2

3

4

1

4

1

2

3

α=(2 3 4 1)

1

1

2

3

4

α=(2 3 1 4)

2

3

4

1

2

β=(4 3 2 1)

2

2

3

4

1

β=(3 1 4 2)

−1

3

4

1

2

3

𝛾 −1 =(1 3 4 2)

4

3

4

1

2

·

1

2

3

3

2

3

4

1

4

1

2

3

4

𝛾

=(2 1 4 3)

Ex.3

Ex.4

·

1

2

3

4

5

1

1

2

3

4

5

α=(2 3 1 5 4)

1

1

2

3

α=(1 3 2)

2

2

3

1

5

4

β=(3 1 2 4 5)

2

3

1

2

β=(3 2 1)

−1

3

2

3

1

𝛾 −1 =(2 1 3)

·

1

2

3

4

3

4

1

5

2

3

4

3

5

4

1

2

5

5

4

2

3

1

𝛾 =(5 3 2 4 1)

Ex.5

Ex.6

·

1

2

3

4

1

1

2

3

4

α=(4 3 2 1)

1

1

2

3

4

α=(4 3 2 1)

2

2

1

4

3

β=(4 3 2 1)

2

3

1

4

2

β=(3 4 1 2)

−1

3

2

4

1

3

𝛾 −1 =(2 3 4 1)

4

4

3

2

1

3

3

4

1

2

4

4

3

2

1

𝛾

=(4 3 2 1)

67

Ex.7 ·

1

2

3

4

5

α=(5 4 3 2 1)

1

1

2

3

4

5

β=(4 3 2 1 5)

2

2

3

4

5

1

𝛾 −1 =(3 2 1 5 4)

3

3

4

5

1

2

4

4

5

1

2

3

5

5

1

2

3

4

Elaborarea programului: Program L5; uses crt; label y; type masiv=array[1..20,1..20] of byte; var l:byte; s:boolean; m,gr,m1,m2,m3:masiv; a,g,c,b:array[1..20] of 0..20; r1,d1,r,d,r2,n,t,i,j,k,p,d2:integer; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; 68

for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este medial') else writeln('Nu este medial'); end; Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') else writeln('Nu este paramedial'); end; Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; 69

d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; 70

for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end; Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); 71

var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; if gr[d,k]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin 72

d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; Procedure unitate_stanga(gr:masiv); var l:integer; begin j:=0; r2:=0; for i:=1 to n do begin l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end;

73

Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure afisare; begin for i:=1 to n do begin writeln; for j:=1 to n do begin write(m[i,j],' '); end; end; end; Procedure afisare1; begin for i:=1 to n do begin writeln; for j:=1 to n do begin write(m3[i,j],' '); end; end; end; Function mm(g:byte):byte; var ii,jj,k,x,q:byte; begin for jj:=1 to n do begin k:=0; x:=jj; repeat begin x:=m[x,g]; inc(k); end; until(x=jj)or(k>n); if k>n then b[jj]:=0 else b[jj]:=k; end; q:=b[1]; for jj:=1 to n do if b[jj]>q then q:=b[jj]; mm:=q; end;

74

Function nn(gg:byte):byte; var ii,jj,k,x,q:byte; begin for jj:=1 to n do begin k:=0; x:=jj; repeat begin x:=m[gg,x]; inc(k); end; until (x=jj)or(k>n+1); if k>n then c[jj]:=0 else c[jj]:=k; end; q:=c[1] ; for jj:=1 to n do if c[jj]>q then q:=c[jj]; nn:=q; end; Function mm1(g:byte):byte; var ii,jj,k,x,q:byte; begin for jj:=1 to n do begin k:=0; x:=jj; repeat begin x:=m3[x,g]; inc(k); end; until(x=jj)or(k>n); if k>n then b[jj]:=0 else b[jj]:=k; end; q:=b[1]; for jj:=1 to n do if b[jj]>q then q:=b[jj]; mm1:=q; end; Function nn1(gg:byte):byte; var ii,jj,k,x,q:byte; 75

begin for jj:=1 to n do begin k:=0; x:=jj; repeat begin x:=m3[gg,x]; inc(k); end; until (x=jj)or(k>n+1); if k>n then c[jj]:=0 else c[jj]:=k; end; q:=c[1] ; for jj:=1 to n do if c[jj]>q then q:=c[jj]; nn1:=q; end; Procedure tipar(h:masiv); var contor:integer; begin contor:=0; write(' '); for i:=1 to n do begin contor:=contor+3; gotoxy(2+3*i,3);write('_'); gotoxy(4,i+3);write('|'); gotoxy(3+contor,3);write(i); end; for i:=1 to n do for j:=1 to n do begin gotoxy(3+3*j,3+i);writeln(h[i,j]); end;end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; 76

if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); end; Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Begin y:clrscr; write ('Dati n= '); readln(n); for i:=1 to n do begin gotoxy(2+3*i,3);write('_'); gotoxy(4,i+3);write('|'); gotoxy(3+3*i,2);write(i); gotoxy (3,3+i);write(i); end; for i:=1 to n do for j:=1 to n do begin gotoxy(3+3*j,3+i); read(m[i,j]); end; for i:=1 to n do for j:=1 to n do for l:=1 to j-1 do if m[i,j]=m[i,1] then goto y; for i:=1 to n do for j:=1 to n do for l:=1 to j-1 do 77

if m[i,j]=m[i,l] then goto y; clrscr; tipar(m); writeln; writeln('Introdu substitutia ALFA'); for i:=1 to n do read(a[i]); writeln; writeln('Introdu substitutia BETA'); for i:=1 to n do read(b[i]); writeln; writeln('Introdu substitutia GAMA'); for i:=1 to n do read(g[i]);writeln; for i:=1 to n do for j:=1 to n do begin t:=a[i]; m1[i,j]:=m[t,j]; end; writeln; writeln ('Iteratia ALFA'); for i:=1 to n do begin for j:=1 to n do write(m1[i,j]: 2); writeln; end; for i:=1 to n do for j:=1 to n do begin t:=b[j]; m2[i,j]:=m1[i,t]; end; writeln; writeln ('Iteratia BETA'); for i:=1 to n do begin for j:=1 to n do write(m2[i,j]: 2); writeln; end; for i:=1 to n do for j:=1 to n do begin t:=m2[i,j]; 78

m3[i,j]:=g[t]; end; writeln; writeln('Iteratia GAMA'); for i:=1 to n do begin for j:=1 to n do write(m3[i,j]:2); writeln; end; writeln; writeln('Proprietatile algebrice grupoid initial'); readln; afisare; writeln; for i:=1 to n do if ((m[i,i]=i) and (mm(i)<>0) and (nn(i)<>0)) then begin writeln(i,'=E(',nn(i),',',mm(i),')'); end; asociativ(m); medial(m); paramedial(m); bicomutativ(m); ag_gr(m); ga_gr(m); ga_gr1(m); ad_gr(m); da_gr(m); hexagonal(m); dist_dr(m); dist_st(m); unitate_dreapta(m); unitate_stanga(m); unitate; ward(m); ward_inv(m); writeln; writeln('Proprietatile algebrice grupoid gama'); readln; afisare1; writeln; for i:=1 to n do 79

if ((m3[i,i]=i) and (mm1(i)<>0) and (nn1(i)<>0)) then begin writeln(i,'=E(',nn1(i),',',mm1(i),')'); end; asociativ(m3); medial(m3); paramedial(m3); bicomutativ(m3); ag_gr(m3); ga_gr(m3); ga_gr1(m3); ad_gr(m3); da_gr(m3); hexagonal(m3); dist_dr(m3); dist_st(m3); unitate_dreapta(m3); unitate_stanga(m3); unitate; ward(m3); ward_inv(m3); readkey; End.

80

În urma compilării sau obținut următoarele rezultate: Ex. 1

81

Ex. 2

82

Ex. 3

83

Ex. 4

84

Ex. 5

85

Ex. 6

86

Ex. 7

87

Tabelul rezultatelor obținute :

După proprietățile grupoidului inițial și grupoidului final 𝜸−𝟏 observăm că ex.4, ex.5 și ex. 7 sunt izomorfe deoarece au aceleași proprietăți.

88

obținerea

Algoritmi privind verificarea izomorfismelor de grupoizi

Problemă. Fie că avem doi grupoizi (𝑄,∙)și (𝑄,∗) de același ordin n. Să se verifice dacă (𝑄,∙) este izomorf cu (𝑄,∗). Algoritmul de verificare al grupoizilor la izomorfism este următorul: 1. Se introduce dimensiunea n a grupoizilor. 2. Se introduce grupoidul (𝑄,∙) din n elemente. 3. Se introduce grupoidul (𝑄,∗) din n elemente. 4. Se generează toate substituțiile 𝛼(𝑛!) și se testează condiția: 𝛼(𝑥)°𝛼(𝑦) = 𝛼(𝑥 ∗ 𝑦). 5. Se afișează la monitor acele substituții 𝛼 pentru care obținem izomorfism. 6. Se afișează la monitor rezultatul obținut: grupoizii dați (𝑄,∙), (𝑄,∗) sunt izomorfi pentru substituțiile𝑎1 , 𝑎2 , … , 𝑎𝑛 ori grupoizii respectivi nu sînt izomorfi. Pentru fiecare din exemple, să se verifice dacă există izomorfism între (𝑄,∙) și (𝑄,∗). Ex.1

Ex.2

Ex.3

Ex.4

·

1

2

3

4

·

1

2

3

4

·

1

2

3

·

1

2

3

1

1

2

3

4

1

1

2

3

4

1

1

2

3

1

1

2

3

2

2

3

4

1

2

2

1

4

3

2

3

1

2

2

2

3

1

3

4

1

2

3

3

3

4

1

2

3

2

3

1

3

3

1

2

4

3

4

1

2

4

4

3

2

1

*

1

2

3

4

*

1

2

3

4

*

1

2

3

*

1

2

3

1

1

2

3

4

1

2

1

4

3

1

3

2

1

1

3

1

2

2

2

4

1

3

2

1

2

3

4

2

1

3

2

2

2

3

1

3

4

3

2

1

3

4

3

2

1

3

2

1

3

3

1

2

3

4

3

1

4

2

4

3

4

1

2

89

Elaborarea programului: program p4; uses crt; type masiv=array[1..25,1..25] of integer; type vector=array[1..25] of integer; var st:vector; gr,m,m1,m2,m3,m4:masiv; iz:boolean; r1,d1,d2,r,d,r2,n,t,i,j,k,p,l,fact:integer; a,b,g:array[1..20] of 0..20; f1,f2,f3:text; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; 90

if l=0 then writeln('Este medial') else writeln('Nu este medial'); end; Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') else writeln('Nu este paramedial'); end; Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin 91

l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end;

92

Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; 93

r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; if gr[d,k]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; 94

begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; Procedure unitate_stanga(gr:masiv); var l:integer; begin j:=0; r2:=0; for i:=1 to n do begin l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end; Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do 95

for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); end; Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Function valid(p:integer):boolean; var i:integer; ok:boolean; begin ok:=true; for i:=1 to p-1 do if (st[p]=st[i]) then ok:=false; valid:=ok; end; Procedure tipar (p:integer); var i:integer; begin for i:=1 to p do write(f3,st[i]:2,' ') ; writeln(f3); end;

96

Procedure backtr(p:integer); var pval:integer; begin for pval:=1 to n do begin st[p]:=pval; if (valid(p)) then if (p=n) then tipar(p) else backtr (p+1); end; end; Begin clrscr; assign(f1,'input4.txt'); assign(f2,'output4.txt'); assign(f3,'alf.txt'); reset(f1); rewrite(f2); rewrite(f3); readln(f1,n); backtr(1); close(f3); fact:=1; for i:=1 to n do fact:=fact*i; writeln(f2,'(Q,.)'); for i:=1 to n do begin for j:=1 to n do begin read (f1,m[i,j]); write(f2,m[i,j]:2); end; writeln(f2); end; writeln(f2,'(Q,*)'); for i:=1 to n do begin for j:=1 to n do begin read(f1,m4[i,j]); write(f2,m4[i,j]:2);end; writeln(f2);end; reset(f3); iz:=false; for k:=1 to fact do begin for i:=1 to n do read(f3,a[i]); 97

readln(f3); b:=a;g:=a; for i:=1 to n do for j:=1 to n do begin t:=a[i]; m1[i,j]:=m[t,j]; end; for i:=1 to n do for j:=1 to n do begin t:=b[j]; m2[i,j]:=m1[i,t]; end; for i:=1 to n do for j:=1 to n do begin t:=m2[i,j]; m3[i,j]:=g[t]; end; p:=1; for i:=1 to n do for j:=1 to n do if (m3[i,j]=m4[i,j]) then p:=p*1 else p:=0; if p=1 then begin iz:=true; write(f2,'grupoizii dati sunt izomorfi pentru ALFA =' ); for i:=1 to n do write(f2,a[i]:2); writeln; end; end; if iz=false then write (f2,'grupoizii dati nu sunt izomorfi'); writeln; writeln({f2},'Pentru quasigrupul avem proprietatile'); readln; asociativ(m); medial(m); paramedial(m); bicomutativ(m); ag_gr(m); ga_gr(m); ga_gr1(m); ad_gr(m); da_gr(m); hexagonal(m); dist_dr(m); 98

dist_st(m); unitate_dreapta(m); unitate_stanga(m); unitate; ward(m); ward_inv(m); writeln; readln; writeln({f2},'Pentru quasigrupul izotop avem proprietatile'); asociativ(m4); medial(m4); paramedial(m4); bicomutativ(m4); ag_gr(m4); ga_gr(m4); ga_gr1(m4); ad_gr(m4); da_gr(m4); hexagonal(m4); dist_dr(m4); dist_st(m4); unitate_dreapta(m4); unitate_stanga(m4); unitate; ward(m4); ward_inv(m4); close (f1);close(f2); close(f3); End

99

În urma compilării am obținem următoare rezultate : Ex.1 Fișierul input4.txt

Fișierul alf.txt

100

Fișierul output4.txt

Proprietăți:

101

Ex.2 Fișierul input4.txt

Fișierul alf.txt

102

Fișierul output4.txt

Proprietăți

Ex.3 Fișierul input4.txt

103

Fișierul alf.txt

Fișierul output4.txt

104

Proprietăți

Ex.4 Fișierul input4.txt

Fișierul alf.txt

Fișierul output4.txt

105

Proprietăți:

Tabelul rezultatelor obținute : Ex.1

Ex.2

Ex.3

Ex.4

Avemizomorfismpentrusubstitu ția

α= 1 2 4 3

α= 2 1 3 4 α= 2 1 4 3 α= 2 3 4 1 α= 2 4 1 3

Nu

Nu

Asociativ Medial Paramedial Bicomutativ AG grupoid GA grupoid GA1 grupoid AD grupoid DA grupoid Hexagonal Distributivladreapta Distributivlastânga Unitatededreapta Unitatedestânga Unitate Ward Wardinvers

1 -

+ + + + + + + + + 1 1 1 + +

1 -

+ + + + + + + + + 2 2 2 + +

+ + + + 1 +

+ + + + 3 + -

+ + + + + + + + + 1 1 1 -

+ + + + 3 +

106

Algoritm privind compunerea substituțiilor Problemă. Fie că sunt date următoarele substituții: e=(1 2 3), a=(2 3 1), b=(3 1 2), g=(2 1 3), h=(3 2 1), r=(1 3 2). Se cere de elaborat un algoritm care realizează compoziția substituțiilor date și completează un tabel Cayley. Substituțiile se introduc într-un fișier, se extrag substituțiile necesare și se află compoziția lor. Elaborarea programului: Program p8; usescrt; type sub=array[1..6]of 1..3; vari,j:integer; e,a,b,g,h,r,pr:sub; f1,f2:text; Procedure prod(x,y:sub); var p1,p2,p3,p4,p5,p6:byte; begin for i:=1 to 3 do pr[i]:=x[y[i]]; p1:=1; for i:=1 to 3 do if (pr[i]=e[i]) then p1:=p1 else p1:=0; if p1=1 then write(f2,'e':2); p2:=1; for i:=1 to 3 do if (pr[i]=a[i]) then p2:=p2 else p2:=0; if p2=1 then write(f2,'a':2); p3:=1; for i:=1 to 3 do if (pr[i]=b[i]) then p3:=p3 else p3:=0; 107

if p3=1 then write(f2,'b':2); p4:=1; for i:=1 to 3 do if (pr[i]=g[i]) then p4:=p4 else p4:=0; if p4=1 then write(f2,'g':2); p5:=1; for i:=1 to 3 do if (pr[i]=h[i]) then p5:=p5 else p5:=0; if p5=1 then write(f2,'h':2); p6:=1; for i:=1 to 3 do if (pr[i]=r[i]) then p6:=p6 else p6:=0; if p6=1 then write(f2,'r':2); end; Procedure citire; begin write(f2,'e='); for i:=1 to 3 do begin read(f1,e[i]); write(f2,e[i]:2); end; writeln (f2); write (f2,'a='); for i:=1 to 3 do begin read(f1,a[i]); write(f2,a[i]:2); end; writeln (f2); write (f2,'b='); for i:=1 to 3 do begin read(f1,b[i]); write(f2,b[i]:2); end; writeln (f2); write (f2,'g='); for i:=1 to 3 do begin read(f1,g[i]); write(f2,g[i]:2); end; writeln (f2); write (f2,'h='); for i:=1 to 3 do begin 108

read(f1,h[i]); write(f2,h[i]:2); end; writeln (f2); write (f2,'r='); for i:=1 to 3 do begin read(f1,r[i]); write(f2,r[i]:2); end; writeln (f2); end; Begin clrscr; assign(f1,'input1.txt') ; assign(f2,'output1.txt'); reset(f1); rewrite(f2); citire; close(f1); writeln(f2,' PRODUSUL SUBSTITUTIILOR'); writeln(f2,' | e a b g h r'); writeln(f2,'-|------------') ; write(f2,'e|');prod(e,e);prod(e,a);prod(e,b);prod(e,g);prod(e,h);prod(e,r); writeln(f2); write(f2,'a|');prod(a,e);prod(a,a);prod(a,b);prod(a,g);prod(a,h);prod(a,r); writeln(f2); write(f2,'b|');prod(b,e);prod(b,a);prod(b,b);prod(b,g);prod(b,h);prod(b,r); writeln(f2) ; write(f2,'g|');prod(g,e);prod(g,a);prod(g,b);prod(g,g);prod(g,h);prod(g,r); writeln(f2); write(f2,'h|');prod(h,e);prod(h,a);prod(h,b);prod(h,g);prod(h,h);prod(h,r) ; writeln(f2) ; write(f2,'r|');prod(r,e);prod(r,a);prod(r,b);prod(r,g);prod(r,h);prod(r,r); writeln(f2); close (f2); End.

109

Introducerea substituțiilor în fișierul input1.txt :

Rezultatul obținut în fișierul output1.txt

110

Algoritmi privind obținerea quasigrupului dintr-un grup comutativ pe care sunt definite careva operații binare Problema. Se dă grupul comutativ (Q, +) . Definim pe mulțimea Q una din următoarele operații: 1. 2. 3. 4.

𝑥°𝑦 = 𝑥 − 𝑦; 𝑥°𝑦 = −𝑥 + 𝑦; 𝑥°𝑦 = −𝑥 − 𝑦; 𝑥°𝑦 = 𝑥 + 𝑦.

Se cere de elaborat un program care va permite obținerea quasigrupului (Q, °) . Să se realizeze următoarele exemple: Ex.1 + 1 2 3

1 1 2 3

2 2 3 1

3 3 1 2

Ex.4 + 1 2 3 4

1 1 2 3 4

2 2 3 4 1

3 3 4 1 2

Ex.2 + 1 2 3

1 1 3 2

2 3 2 1

4 4 1 2 3

Ex.3 + 1 2 3 4

3 2 1 3

Ex.5 + 1 2 3 4 5

1 1 2 3 4 5

2 2 3 4 5 1

1 1 2 3 4

3 3 4 5 1 2

2 2 1 4 3

4 4 5 1 2 3

3 3 4 1 2

4 4 3 2 1

5 5 1 2 3 4

Ex.6

7 8 9

7 7 8 9

8 8 9 7

9 9 7 8

Elaborarea programului: Program p1; //uses crt; type masiv=array[1..50,1..50] of integer; 111

var gr1,gr2,opus,a,tabel,gr:masiv; r1,d1,r,d,r2,n,m,t,i,j,k,p,l,d2:integer; i2,k2,k1:integer; Procedure asociativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[d1,k] then inc(l); end; if l=0 then writeln('Este asociativ') else writeln('Nu este asociativ ' ) ; end; Procedure medial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este medial') else writeln('Nu este medial'); end; Procedure paramedial(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do 112

for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[t,j]; r1:=gr[k,i]; if gr[d,r]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este paramedial ') else writeln('Nu este paramedial'); end; Procedure bicomutativ(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t] ; d1:=gr[t,k] ; r1:=gr[j,i]; if gr[d,r]<>gr[d1,r1] then inc (l); end; if l=0 then writeln('Este bicomutativ') else writeln('Nu este bicomutativ'); end; Procedure ag_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,j]; if gr[d,k]<>gr[d1,i] then inc(l); end; if l=0 then writeln('Este AG grupoid') 113

else writeln('Nu este AG grupoid'); end; Procedure ga_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[j,i]; if gr[d,k]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este GA grupoid') else writeln('Nu este GA grupoid'); end; Procedure ga_gr1(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; if gr[d,k]<>gr[d1,j] then inc(l); end; if l=0 then writeln('Este GA1 grupoid') else writeln('Nu este GA1 grupoid'); end; Procedure ad_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[j,i]; 114

if gr[i,d]<>gr[k,d1] then inc (l); end; if l=0 then writeln('Este AD grupoid') else writeln('Nu este AD grupoid' ); end; Procedure da_gr(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[j,k]; d1:=gr[i,j]; if gr[i,d]<>gr[k,d1] then inc(l); end; if l=0 then writeln('Este DA grupoid') else writeln('Nu este DA grupoid'); end; Procedure hexagonal(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do for t:=1 to n do begin d:=gr[i,j]; r:=gr[k,t]; d1:=gr[i,k]; r1:=gr[j,t]; r2:=gr[j,i]; if (gr[i,i]<>i)or(gr[d,r]<>gr[d1,r1]) or(gr[i,r2]<>gr[d,i]) and(gr[d,i]<>j)then inc(l); end; if l=0 then writeln('Este hexagonal') else writeln('Nu este hexagonal '); end; Procedure dist_dr(gr:masiv); 115

var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; r1:=gr[j,k]; if gr[d,k]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la dreapta') else writeln('Nu este distributiv la dreapta'); end; Procedure dist_st(gr:masiv); var l:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; r1:=gr[k,j]; if gr[k,d]<>gr[d1,r1] then inc(l); end; if l=0 then writeln('Este distributiv la stinga') else writeln ('Nu este distributiv la stinga'); end; Procedure unitate_dreapta(gr:masiv); var l:integer; begin j:=0; r:=0; for i:=1 to n do begin l:=0; inc(j); if gr[j,i]=i then begin for k:=1 to n do begin if gr[k,j]=k then inc(l); 116

if l=n then r:=j; end; end; end; if r<>0 then writeln('Este unitate de dreapta ',r) else writeln('Nu este unitate de dreapta'); end; Procedure unitate_stanga(gr:masiv); var l:integer; begin j:=0; r2:=0; for i:=1 to n do begin l:=0; inc(j); if gr[i,j]=i then begin for k:=1 to n do begin if gr[j,k]=k then inc(l); if l=n then r2:=j; end; end; end; if r2<>0 then writeln('Este unitate de stanga ', r2) else writeln('Nu este unitate de stanga '); end; Procedure unitate; begin if (r=r2) and (r>0) then writeln('Este unitate ',r) else writeln('Nu este unitate'); end; Procedure Topus(n:integer); var i,j,element,k:integer; begin for i:=1 to n do for j:=1 to n do begin write ('a [', i,',' , j, '] = '); readln(element); gr[i,j]:=element; if (element=1) then opus[i,1]:=j; end; k:=1; for i:=1 to n do for j:=1 to n do begin tabel[i,j]:=k; k:=k+1; 117

end; end; Procedure pr_cartezian(gr:masiv); var i,j:integer; begin for i:=1 to n do for j:=1 to n do begin gr2[i,j]:=gr[gr[i,1],opus[j,1]];//legea 1 //gr2[i,j]:=gr[opus[i,1],gr[j,1]];//legea 2 //gr2[i,j]:=gr[opus[i,1],opus[j,1]];//legea 3 //gr2[i,j]:=gr[gr[i,1],gr[j,1]];//legea 4 end; for i:=1 to n do begin for j:=1 to n do write(gr2[i,j]:3); writeln; end; end;

Procedure afisare_pr(gr2:masiv); var a,i,j:integer; begin for i:=1 to n do begin for j:=1 to n do write(gr2[i,j]:4); writeln; end; end; Procedure ward(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[i,k]; d2:=gr[j,k]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward') else writeln('Nu este Ward'); 118

end; Procedure ward_inv(gr: masiv); var i,j,k:integer; begin l:=0; for i:=1 to n do for j:=1 to n do for k:=1 to n do begin d:=gr[i,j]; d1:=gr[k,i]; d2:=gr[k,j]; if d<>gr[d1,d2] then l:=l+1; end; if l=0 then writeln('Este Ward invers') else writeln('Nu este Ward invers'); end; Begin //clrscr; writeln('Dati n='); readln(n); Topus(n); pr_cartezian(gr); writeln('Quasigrupul obtinut'); afisare_pr(gr2); writeln('Proprietati:'); asociativ(gr2); medial(gr2); paramedial(gr2); bicomutativ (gr2); ag_gr(gr2); ga_gr(gr2); ga_gr1(gr2); ad_gr(gr2); da_gr(gr2); hexagonal(gr2); dist_dr(gr2); dist_st(gr2); unitate_dreapta(gr2); unitate_stanga(gr2); unitate; ward(gr2); 119

ward_inv(gr2); //readkey; End.

Rezultatele obținute pentru operația 𝒙°𝒚 = 𝒙 − 𝒚 : Ex.1

Ex.2

120

Ex.3

121

Ex.4

Ex.5

122

Ex.6

Rezultatele obținute pentru operația 𝒙°𝒚 = −𝒙 + 𝒚 Ex.1

123

Ex.2

Ex.3

124

Ex.4

Ex.5

125

Ex.6

Rezultatele obținute pentru legea 𝒙°𝒚 = −𝒙 − 𝒚 Ex.1

126

Ex.2

Ex.3

127

Ex.4

Ex.5

128

Ex.6

Rezultatele obținute pentru operatia 𝒙°𝒚 = 𝒙 + 𝒚 Ex.1

129

Ex.2

Ex.3

130

Ex.4

Ex.5

131

Ex.6

Tabelul obţinut :

Notă: Semnul „+” denotă că proprietatea respectivă se îndeplinește. 132

Algoritmi privind obținerea quasigrupului dintr-un grup comutativ pe care sunt definite careva operații binare 5. 6. 7. 8.

𝑥°𝑦 = 𝑥 − 𝑦; 𝑥°𝑦 = −𝑥 + 𝑦; 𝑥°𝑦 = −𝑥 − 𝑦; 𝑥°𝑦 = 𝑥 + 𝑦.

1. Ex1

1 2 3 4 5 6

1 1 2 3 4 5 6

2 2 1 5 6 3 4

3 3 4 1 2 6 5

4 4 3 6 5 1 2

5 5 6 2 1 4 3

6 6 5 4 3 2 1

Verificarea pentru proprietatea x-y

133

Verificarea pentru proprietatea –x+y

Verificarea pentru proprietatea –x-y

134

Verificarea pentru proprietatea x+y

135

2. D4 D4 1 2 3 4 5 6 7 8

1 1 2 3 4 5 6 7 8

2 2 3 4 1 8 5 6 7

3 3 4 1 2 7 8 5 6

4 4 1 2 3 6 7 8 5

5 5 6 7 8 1 2 3 4

6 6 7 8 5 4 1 2 3

7 7 8 5 6 3 4 1 2

8 8 5 6 7 2 3 4 1

Verificarea pentru proprietatea x-y

136

Verificarea pentru proprietatea : -x+y

Verificarea pentru proprietatea : -x-y

137

Verificarea pentru proprietatea x+y

3. Q Q 1 2 3 4 5 6 7 8

1 1 2 3 4 5 6 7 8

2 2 3 4 1 8 5 6 7

3 3 4 1 2 7 8 5 6

4 4 1 2 3 6 7 8 5

5 5 6 7 8 1 2 3 4

6 6 7 8 5 4 1 2 3

7 7 8 5 6 3 4 1 2

8 8 5 6 7 2 3 4 1

138

Verificarea pentru proprietatea: x-y

Verificarea pentru proprietatea: -x+y

139

Verificarea pentru proprietatea: -x-y

Verificarea pentru proprietatea: x+y

140

4.D5 D5 1 2

3

4

5

6

7

8

9

10

1 2

1 2

2 3

3 4

4 5

5 1

6 7

7 8

8 9

9 10

10 6

3

3

4

5

1

2

8

9

10

6

7

4 5 6 7

4 5 6 7

5 1 10 6

1 2 9 10

2 3 8 9

3 4 7 8

9 10 1 2

10 6 5 1

6 7 4 5

7 8 3 4

8 9 2 3

8

8

7

6

10

9

3

2

1

5

4

9 10

9 10

8 9

7 8

6 7

10 6

4 5

3 4

2 3

1 2

5 1

Verificarea pentru proprietatea: x-y

141

Verificarea pentru proprietatea: -x+y

Verificarea pentru proprietatea: -x-y

142

Verificarea pentru proprietatea: x+y

Tabelul rezultatelor obținute:

Asociativ Medial Paramedial Bicomutativ AG grupoid GA grupoid GA1 grupoid AD grupoid DA grupoid Hexagonal Distributiv la dreapta Distributiv la stânga Unitate de dreapta Unitate de stânga Unitate Ward Ward invers

Ex.1 -

Legea 1 D4 Q -

D5 -

Ex.1 -

Legea 2 D4 Q -

D5 -

Ex.1 -

Legea 3 D4 Q -

D5 -

Ex.1 + -

Legea 4 D4 Q + -

D5 -

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

1

1

1

1

1

1

-

1

1

1

1

1

1

1

1

1

-

-

-

-

-

1

1

-

-

1

-

-

1

1

-

-

+ -

+ -

-

+ -

+ -

1 -

-

+ -

+ -

1 -

-

+ -

1 -

1 -

-

+ -

143

Related Documents


More Documents from "Keshav"

Dame.docx
June 2020 9
Vasea Galben .docx
June 2020 7
June 2020 9