1 / 36

Uma Apresentação do Sistema GAP – Laboratório II

Uma Apresentação do Sistema GAP – Laboratório II. Professores : Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes. Listas: Revisão. gap> L : [6,8,9];; # Elementos entre colchetes e separados por vírgula.

arnaud
Download Presentation

Uma Apresentação do Sistema GAP – Laboratório II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e AnliySargeant Monitor: Junior AssisBarretoBernardes

  2. Listas: Revisão gap> L : [6,8,9];; # Elementos entre colchetes e separados por vírgula. gap> Append(L, [2]);; # Concatena a segunda lista passada no final da primeira. gap> Add(L, true); # Adiciona o elemento no final da lista. gap> L[3]; # Acesso a determinada posição da lista. 9

  3. Listas: Revisão gap> List([1,2,3], x -> x^3); [1,8,27] gap> Length(L); # Retorna a quantidade de elementos da lista. 5 gap> Position(L, 8); # Retorna a posição que o elemento passado ocupa na lista. 2

  4. Conjuntos • Os conjuntos são definidos no GAP como listas densas (sem buracos) e sem repetições, cujos elementos obedecem uma certa ordem que, no caso dos números inteiros, deve ser crescente. gap> IsSet([1,2,3,4]); true gap> IsSet([1,,2,,3,4]); false

  5. Conjuntos gap> IsSet([3,2,1]); false gap> IsSet([1,2,2,3]); false gap> AsSet([1,,3,2,,]); [1,2,3] gap> IsSet([“a”, “b”, “c”]); true gap> IsSet([“c”, “b”, “a”]); false

  6. Conjuntos • Conjuntos Heterogêneos: gap> IsSet(["a",4,true,3,0,false,8/9,"b",-6]); false gap> AsSet(["a",4,true,3,0,false,8/9,"b",-6]); [ -6, 0, 8/9, 3, 4, true, false, "a", "b" ]

  7. Conjuntos • Existem funções para adicionar e remover elementos obedecendo as restrições dos conjuntos: gap> S := [2,3,7,11];; gap> AddSet( S, 5 ); gap> S; [ 2, 3, 5, 7, 11 ] gap> RemoveSet(S,7); gap> S; [ 2, 3, 5, 11 ]

  8. Álgebra dos Conjuntos • As operações União, Interseção e Diferença já estão definidas no sistema. gap> B := [1,2,3];; gap> A := [1,5,6];; gap> Union (A,B); [1, 2, 3, 5, 6] gap> Intersection (A,B); [1] gap> Difference(A,B); [5, 6] gap> Difference(B,A); [2, 3]

  9. Álgebra dos Conjuntos • Quando as listas passadas não estão nas condições necessárias para representarem conjuntos, o próprio sistema faz uma conversão interna para executar as operações: gap> C := [1,2,,,3,3,,2];; gap> D := [,1,,1,,,5,6,5,6];; gap> Union(D,C); [1, 2, 3, 5, 6] gap> Intersection(D,C); [1] gap> Difference(D,C); [5, 6] gap> Difference(C,D); [2, 3]

  10. Álgebra dos Conjuntos gap> P := [-7, 1, true, "b", "o"]; [ -7, 1, true, "b", "o" ] gap> Q := [0, false, true, "o"]; [ 0, false, true, "o" ] gap> Union(P,Q); [ -7, 0, 1, true, false, "b", "o" ] gap> Intersection(P,Q); [ true, "o" ] gap> Difference(P,Q); [ -7, 1, "b" ] gap> Difference(Q,P); [ 0, false ]

  11. Relações entre Conjuntos • Igualdade gap> [1,2,3] = [3,2,1]; false gap> IsEqualSet([1,2,3],[3,2,1]); true gap> IsEqualSet([1,2,3],[1,2,2,3]); true gap> IsEqualSet([1,2,3],[1,2,3,4]); false gap> IsEqualSet(["a",true,8],[8,true,"a"]); true Gap> IsEqualSet([1,2,,3],[1,2,3]); true

  12. Relações entre Conjuntos • Subconjunto gap> IsSubset(Rationals,Integers); #Obs: A ordem é se o segundo é subconjunto do primeiro. true gap> IsSubset([1,2,3,4], [2,3,5]); false gap> IsSubset([1,2,3],[2,1]); true gap> IsSubset([1,2,,2,3,4,,,5,],[2,1]); true gap> IsSubset([1,2,,2,3,4,,,5,],[2,1,2,,5]); true

  13. Relação Especial • Pertinência (Entre elemento e conjunto) gap> 3 in Integers; true gap> 2/8 in Integers; false gap> 1 in [1,2,3]; true gap> [1] in [1,2,3]; false gap> [1] in [[1],[2],[3]]; true gap> 1 in [[1],[2],[3]]; false

  14. Relações • Uma relação binária em A é definida como um subconjunto do produto cartesiano de A com A: gap> A := [1,2,3]; gap> Cartesian(A,A); [ [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 2 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ], [ 3, 3 ] ] gap> IsBinaryRelation([[1,1],[2,2],[3,3]]); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `IsEndoGeneralMapping' on 1 arguments called from <function>( <arguments> ) called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue

  15. Relações • A função IdentityBinaryRelation(n) gera a relação dada pelo diagonal do conjunto dos inteiros de 1 até n: gap> R1 := IdentityBinaryRelation(3); <equivalence relation on <object> gap> Source(R); #Conjunto gap> <object> gap> List(Source(R)); [1 ,2 ,3] gap> List(UnderlyingRelation(R)); #Elementos [ Tuple( [ 1, 1 ] ), Tuple( [ 2, 2 ] ), Tuple( [ 3, 3 ] ) ]

  16. Relações • A função IdentityBinaryRelation também pode ser aplicada a outros conjuntos: gap> R2 := IdentityBinaryRelation(Integers); IdentityMapping( Integers ) gap> Source(R2); Integers gap> List(Source(R2)); Error, resulting list would be too large (length infinity) called from …

  17. Relações • A função EmptyBinaryRelation(n) gera a relação vazia no conjunto dos inteiros de 1 até n: gap> R3 := EmptyBinaryRelation(4); Binary Relation on 4 points gap> List(Source(R3)); [ 1, 2, 3, 4 ] gap> List(UnderlyingRelation(R3)); [ ]

  18. Relações • A função EmptyBinaryRelation também pode ser aplicada a outros conjuntos: gap> R4 := EmptyBinaryRelation(Rationals); <general mapping: Rationals -> Rationals > gap> Source(R4); Rationals gap> List(Source(R4)); Error, resulting list would be too large (length infinity) called from gap> List(UnderlyingRelation(R4)); [ ]

  19. Relações • A função BinaryRelationByElements(A, R) gera a relação R do conjunto A: gap> A := [1,2,3];; gap>BinaryRelationByElements(A,[[1,1],[2,2],[3,3]]); Error, <S> and <R> must be domains called from GeneralMappingByElements( d, d, elms ) called from <function>( <arguments> ) called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue

  20. Relações • Como definir relações no sistema usando a função BinaryRelationByElements(A, R) ? • Primeiramente deve-se definir o conjunto A , para o sistema o domínio A usando a função Domain: gap> A := Domain([1,2,3]);;

  21. Relações 2) Depois define-se os elementos da relação R, isto é os pares de elementos relacionados por R, para o sistema as tuplas usando a função Tuple: gap>R := [Tuple([1,1]),Tuple([2,2]),Tuple([3,3])]; 3) Por fim, define-se a relação em si: gap> RR := BinaryRelationByElements (A, R);

  22. Relações: Propriedades gap> IsReflexiveBinaryRelation(R1); true gap> IsReflexiveBinaryRelation(R2); true gap> IsReflexiveBinaryRelation(R3); false gap> IsReflexiveBinaryRelation(R4); false gap> IsReflexiveBinaryRelation(RR); true

  23. Relações: Propriedades gap> A := Domain(["a","b"]); <object> gap> R :=[Tuple(["a","b"])]; [ Tuple( [ a, b ] ) ] gap> R5 := BinaryRelationByElements(A,R); <general mapping: <object> -> <object> > gap> IsBinaryRelation(R5); true gap> IsReflexiveBinaryRelation(R5); false

  24. Relações: Propriedades gap> IsTransitiveBinaryRelation(R1) true gap> IsTransitiveBinaryRelation(R1) true gap> IsTransitiveBinaryRelation(R3) true gap> IsTransitiveBinaryRelation(R4) true gap> IsTransitiveBinaryRelation(RR) true gap> IsTransitiveBinaryRelation(R5); true

  25. Relações: Propriedades gap> IsSymmetricBinaryRelation(R1); true gap> IsSymmetricBinaryRelation(R2); true gap> IsSymmetricBinaryRelation(R3); true gap> IsSymmetricBinaryRelation(R4); true gap> IsSymmetricBinaryRelation(RR); true gap> IsSymmetricBinaryRelation(R5); false

  26. Relações: Propriedades gap> B := Domain(["a","b"]); <object> gap> R :=[Tuple(["a","b"]), Tuple(["b","a"])]; [ Tuple( [ a, b ] ), Tuple( [ b, a ] ) ] gap> R6 := BinaryRelationByElements(B,R); <general mapping: <object> -> <object> > gap> IsBinaryRelation(R6); true gap> IsSymmetricBinaryRelation(R6); true

  27. Relações: Propriedades gap> IsAntisymmetricBinaryRelation(R1); true gap> IsAntisymmetricBinaryRelation(R2); true gap> IsAntisymmetricBinaryRelation(R3); true gap> IsAntisymmetricBinaryRelation(R4); true gap> IsAntisymmetricBinaryRelation(RR); true gap> IsAntisymmetricBinaryRelation(R6); false

  28. Funções (Mappings) • Função é um caso particular de relação. Assim, está definida analogamente no sistema: gap> S := Domain([1,2,3]); <object> gap> R := Domain([1,2,3,4,5]); <object> gap> elms := [Tuple([1,5]),Tuple([3,4])]; [ Tuple( [ 1, 5 ] ), Tuple( [ 3, 4 ] ) ] gap> F := GeneralMappingByElements(S,R,elms); <general mapping: <object> -> <object> >

  29. Funções (Mappings) • Outra maneira de definir: gap> B := Domain([1,2,3]); gap> G := MappingByFunction(B,Integers,x->x^2); MappingByFunction( <object>, <object>, function( x ) ... end ) gap> UnderlyingRelation(G); <object> gap> List(last); [ Tuple( [ 1, 1 ] ), Tuple( [ 2, 4 ] ), Tuple( [ 3, 9 ] ) ]

  30. Funções: Propriedades gap> IsSurjective(F); false gap> IsSurjective(G); false gap> IsInjective(G); true gap> IsInjective(F); true gap> IsBijective(F); false gap> IsBijective(G); false

  31. Funções: Propriedades gap> F := Domain([-1,-2,-3]); <object> gap> H := MappingByFunction(Integers,F,x -> x^2); MappingByFunction( <object>, <object>, function( x ) ... end ) gap> IsInjective(last); false gap> IsBijective(H); false

  32. Funções: Propriedade gap> A := Domain(["a","b","c"]); <object> gap> B := Domain(["a","b","c"]); <object> gap> R :=[Tuple(["a","b"]), Tuple(["b","a"]), Tuple(["c","c"])]; [ Tuple( [ a, b ] ), Tuple( [ b, a ] ), Tuple( [ c, c ] ) ] gap> F2 := GeneralMappingByElements(A,B,R); <general mapping: <object> -> <object> >

  33. Funções: Propriedades gap> List(UnderlyingRelation(F2)); [ Tuple( [ a, b ] ), Tuple( [ b, a ] ), Tuple( [ c, c ] ) ] gap> IsInjective(F2); true gap> IsSurjective(F2); true gap> IsBijective(F2); true

  34. Funções (Programação) • gap> cubo := x -> x^3; function( x ) ... end gap> cubo(5); 125 • function ([argumentos f, argumentos g]) local identicador local f, identicador local g; instruções; end;

  35. Funções (Programação) • gap> fat := function(n) > local f,i; # Variaveis locais > f := 1; > for i in [1 .. n] do > f := f*i; > od; > return f; # Retorno da função. > end;

  36. Funções (Programação) • gap> fatorial := function(n) > if n = 0 then > return 1; > else > return n*fatorial(n-1); #Chamada recursiva, também presente no GAP. > fi ; > end;

More Related