matemática discreta para ciência da computação

103
Matemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para Ciência da Computação P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS

Upload: others

Post on 16-Oct-2021

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 1

Matemática Discreta paraCiência da Computação

P. Blauth Menezes

[email protected]

Departamento de Informática Teórica

Instituto de Informática / UFRGS

Page 2: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 2

Matemática Discreta para Ciência da Computação

P. Blauth Menezes

1 Introdução e Conceitos Básicos2 Lógica e Técnicas de Demonstração3 Álgebra de Conjuntos4 Relações5 Funções Parciais e Totais6 Endorrelações, Ordenação e Equivalência7 Cardinalidade de Conjuntos8 Indução e Recursão9 Álgebras e Homomorfismos10 Reticulados e Álgebra Booleana11 Conclusões

Page 3: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 3

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 4: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 4

3.1 Introdução

♦ Álgebra, desde a sua origem até a sua forma atual

• refere-se a cálculos

♦ Desenvolvida de forma informal ou formal

• praticamente em todos os níveis de escolaridade• exemplo: operações aritméticas (adição, multiplicação…) sobre R

♦ Álgebras, em CC, destaca-se a partir de 1950

• Teoria dos Autômatos e Linguagens Formais

Page 5: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 5

♦ De certa forma, toda a CC é construída sobre álgebras

• Álgebra: denominação alternativa para a Matemática Discreta∗ Diretrizes Curriculares do MEC para Computação e Informática

♦ Conceito de Álgebra é introduzido adiante

• informalmente: operações definidas sobre um conjunto• Álgebra de Conjuntos: operações definidas sobre todos os conjunto

♦ Desejável para o estudo da Álgebra de Conjuntos

• Diagramas de Venn: representação diagramática∗ auxilia o entendimento dos conceitos e raciocínios

• Paradoxo de Russell: importante!

Page 6: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 6

♦ Operações sobre conjuntos

• Não-Reversíveis: mais usuais∗ União∗ Intersecção

• Reversíveis: especialmente importantes para CC∗ Complemento∗ Conjunto das Partes∗ Produto Cartesiano∗ União Disjunta

Page 7: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 7

Obs: Lógica × Álgebra dos ConjuntosRelação direta entre conetivos lógicos e operações sobre conjuntos

• facilita muito o estudo da Álgebra de Conjuntos

Conetivo Lógico Operação sobre Conjuntos

negação complementodisjunção uniãoconjunção intersecção

Relação Lógica Relação sobre Conjuntos

implicação continênciaequivalência igualdade

Page 8: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 8

♦ Propriedades sobre os conetivos são válidas na Teoriados Conjuntos• substituindo cada conetivo• pela correspondente operação sobre conjuntos• exemplo

∗ idempotência do ∧ e do ∨ (da ∩ e da ∪)∗ comutatividade do ∧ e do ∨ (da ∩ e da ∪)∗ associatividade do ∧ e do ∨ (da ∩ e da ∪)∗ distributividade do ∧ sobre o ∨ (da ∩ sobre a ∪) e vice-versa∗ dupla negação (duplo complemento)∗ DeMorgan

♦ Pode-se intuir que provas na Teoria dos Conjuntos

• são, em grande parte, baseadas em resultados da lógica

Page 9: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 9

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.5 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 10: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 10

3.2 Diagramas de Venn

♦ Linguagem diagramática

• auxilia o entendimento de definições• facilita o desenvolvimento de raciocínios• permite identificação e compreensão fácil e rápida dos

∗ componentes e relacionamentos

♦ Diagramas de Venn

• universalmente conhecidos e largamente usados• usam figuras geométricas, em geral representadas no plano

Page 11: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 11

Exp: Diagramas de Venn

• um dado conjunto A• um determinado elemento b ∈ B• o conjunto C = { 1, 2, 3 }

b123

A B C

Page 12: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 12

Exp: Diagramas de Venn

• { a, b } ⊆ { a, b, c }• A ⊆ B• para um dado conjunto universo U, um conjunto C ⊆ U

ab

c

BA C

U

Em geral• U é representado por um retângulo• demais conjuntos por círculos, elipses, etc• emC ⊆ U, o conjunto C é destacado, para auxiliar visualmente

Page 13: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 13

Exp: Aplicação dos Diagramas de VennConsidere que

BAC

pode-se intuir que a noção de subconjunto é transitiva, ou seja

A ⊆ B ∧ B ⊆ C ⇒ A ⊆ C

Teorema: Transitividade da ContinênciaSuponha A, B e C conjuntos. Se A ⊆ B e B ⊆ C, então A ⊆ C

Page 14: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 14

Prova: (direta)(X ⊆ Y sss todos os elementos de X também são de Y)

Suponha que A, B e C são conjuntos qq e que A ⊆ B e B ⊆ C

Seja a ∈ A. Então:

• a ∈ A ⇒ pela definição de subconjunto, dado que A ⊆ B• a ∈ B ⇒ pela definição de subconjunto, dado que B ⊆ C• a ∈ C

Portanto, para qq a ∈ A, a ∈ C

Logo, pela definição de subconjunto, A ⊆ C∗ como fica a demonstração se A for vazio?∗ neste caso, não existe elemento a ∈ A…

Page 15: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 15

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.6 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 16: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 16

3.3 Paradoxo de RussellConjunto

coleção de zero ou mais elementos distintos os quais nãopossuem qualquer ordem associada

Existem conjuntos de conjuntos. Então:

um conjunto pode ser elemento de si mesmo?

Def: Conjunto ordinário

• conjunto que não pertence a si mesmo

Page 17: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 17

♦ A definição

S = { A A é um conjunto ordinário }

conjunto de todos os conjuntos que não são elementos de simesmos

• determina uma contradição• Paradoxo de Russell

Teorema: Paradoxo de RussellNão é conjunto

S = { A A é um conjunto ordinário }

Page 18: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 18

Prova: (por absurdo)

Negação da tese. Suponha que S é um conjunto

Construção da contradição. S é um elemento de si mesmo?

Caso 1. Suponha que S ∈ S• S ∈ S ⇒ pela definição de conj. ordinário• S não é um conj. ordinário ⇒ pela definição de S• S ∉ S

Caso 2. Suponha que S ∉ S• S ∉ S ⇒ pela definição de conj. ordinário• S é um conj. ordinário ⇒ pela definição de S• S ∈ S

Contradição!!! Logo, é absurdo supor que S é conjunto

Portanto, S não é conjunto

Page 19: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 19

♦ Portanto, a notação por compreensão

• permite definir algo que não é um conjunto• S seria um subconjunto do conjunto de todos os conjuntos• como S não é conjunto

não existe o conjunto de todos os conjuntos

ou seja:

nem toda coleção de elementos constitui um conjunto

♦ Como evitar o paradoxo (se desejado)

• restringir que a, em { a p(a) }, assuma valores em um dado A

{ a ∈ A p(a) }

Page 20: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 20

♦ Importante conseqüência do Paradoxo de Russell

• definição de uma estrutura matemática sobre uma coleção deelementos.

♦ Estrutura Matemática Pequena × Grande

• pequena, se a coleção de elementos é conjunto• grande, se a coleção de elementos não é conjunto

♦ Álgebra de Conjuntos

• álgebra grande• operações sobre a coleção (não-conjunto) de todos os conjuntos

Page 21: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 21

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.7 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 22: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 22

3.4 Operações Não-Reversíveis

As mais comuns nos estudos da Álgebra de Conjuntos

3.4.1 União

A B

Page 23: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 23

Def: União, ReuniãoA e B conjuntos

A ∪ B

A ∪ B = { x x ∈ A ∨ x ∈ B }

Relacionando com a Lógica

• união corresponde à disjunção

• símbolo ∪ lembra símbolo ∨

Page 24: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 24

Exp: União• Dígitos = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }• Vogais = { a, e, i, o, u }• Pares = { 0, 2, 4, 6,… }

Dígitos ∪ Vogais = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, e, i, o, u }

Dígitos ∪ Pares = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16,… }

.

13579

02468

10121416...

Paresaeiou

Vogais13579

02468

Dígitos Dígitos

Page 25: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 25

Exp: União

• A = { x ∈ N x > 2 }, B = { x ∈ N x2 = x }

A ∪ B = { 0, 1, 3, 4, 5, 6,… }

• R (reais ), Q (racionais) e I (irracionais)

R ∪ Q = R R ∪ I = R Q ∪ I = R

• Conjunto universo U e A ⊆ U

∅ ∪ ∅ = ∅ U ∪ ∅ = U

U ∪ A = U U ∪ U = U

Page 26: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 26

♦ Propriedades da união

Elemento Neutro (qual o elemento neutro da disjunção?)

A ∪ ∅ = ∅ ∪ A = A (exercício)

Idempotência

A ∪ A = A (exercício)

Comutatividade

A ∪ B = B ∪ A (exercício)

Associatividade

A ∪ (B ∪ C) = (A ∪ B) ∪ C

Page 27: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 27

Associatividade

A ∪ (B ∪ C) = (A ∪ B) ∪ C

A ∪ (B ∪ C) = (A ∪ B) ∪ C

A B

C

A B

C

B ∪ C A ∪ B

A B

C

Page 28: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 28

Teorema: Associatividade da UniãoSuponha que A, B e C são conjuntos quaisquer. Então:

A ∪ (B ∪ C) = (A ∪ B) ∪ C

Prova: (direta)(X = Y ⇔ X ⊆ Y e Y ⊆ X)

Suponha que A, B e C são conjuntos quaisquer. Dois casos:

• A ∪ (B ∪ C) ⊆ (A ∪ B) ∪ C caso 1• (A ∪ B) ∪ C ⊆ A ∪ (B ∪ C) caso 2

Page 29: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 29

Caso 1. Suponha x ∈ A ∪ (B ∪ C)

• x ∈ A ∪ (B ∪ C) ⇒ pela definição união• x ∈ A ∨ x ∈ (B ∪ C) ⇒ pela definição união• x ∈ A ∨ (x ∈ B ∨ x ∈ C) ⇒ pela associatividade do conetivo ∨• (x ∈ A ∨ x ∈ B) ∨ x ∈ C ⇒ pela definição união• x ∈ (A ∪ B) ∨ x ∈ C ⇒ pela definição união• x ∈ (A ∪ B) ∪ C

• Portanto, A ∪ (B ∪ C) ⊆ (A ∪ B) ∪ C

Page 30: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 30

Caso 2. Suponha x ∈ (A ∪ B) ∪ C

• x ∈ (A ∪ B) ∪ C ⇒ pela definição união• x ∈ (A ∪ B) ∨ x ∈ C ⇒ pela definição união• (x ∈ A ∨ x ∈ B) ∨ x ∈ C ⇒ pela associatividade do conetivo ∨• x ∈ A ∨ (x ∈ B ∨ x ∈ C) ⇒ pela definição união• x ∈ A ∨ x ∈ (B ∪ C) ⇒ pela definição união• x ∈ A ∪ (B ∪ C)

• Portanto, (A ∪ B) ∪ C ⊆ A ∪ (B ∪ C)

Logo, A ∪ (B ∪ C) = (A ∪ B) ∪ C

Page 31: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 31

♦ Significado da associatividade?

• não existe precedência entre operações de união

• parênteses podem ser omitidos

• A ∪ (B ∪ C) ou (A ∪ B) ∪ C pode ser denotado

A ∪ B ∪ C

Page 32: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 32

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.8 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 33: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 33

3.4.2 Intersecção

A B

Def: IntersecçãoA e B conjuntos

A ∩ B

A ∩ B = { x x ∈ A ∧ x ∈ B }

Page 34: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 34

♦ Relacionando com a Lógica

• intersecção corresponde à conjunção

• símbolo ∩ lembra símbolo ∧

♦ Conjuntos disjuntos

• conjuntos independentes ou conjuntos mutuamente exclusivos

• conjuntos A e B sendo ambos não-vazios

A ∩ B = ∅

Page 35: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 35

Exp: Intersecção, Conjuntos DisjuntosDígitos = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }Vogais = { a, e, i, o, u }Pares = { 0, 2, 4, 6,… }

Dígitos ∩ Vogais = ∅ conjuntos disjuntos

Dígitos ∩ Pares = { 0, 2, 4, 6, 8 }

.

13579

10121416...

Paresaeiou

Vogais13579

02468

Dígitos Dígitos 02468

Page 36: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 36

Exp: Intersecção, Conjuntos Disjuntos

A = { x ∈ N x > 2 }, B = { x ∈ N x2 = x }

A ∩ B = ∅ conjuntos disjuntos

R (reais ), Q (racionais) e I (irracionais)

R ∩ Q = Q R ∩ I = I

Q ∩ I = ∅ conjuntos disjuntos

Conjunto universo U e A ⊆ U

∅ ∩ ∅ = ∅ U ∩ ∅ = ∅

U ∩ A = A U ∩ U = U

Page 37: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 37

♦ Propriedades da intersecção

Elemento Neutro (qual o elemento neutro da conjunção?)

A ∩ U = U ∩ A = A (exercício)

Idempotência

A ∩ A = A (exercício)

Comutatividade

A ∩ B = B ∩ A (exercício)

Associatividade

A ∩ (B ∩ C) = (A ∩ B) ∩ C (exercício)

Page 38: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 38

♦ Propriedades da união e da intersecção

Distributividade da intersecção sobre a união

A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)

A B

C

A B

C

A B

C

B ∪ C

A B

C

A ∩ B A ∩ CA ∩ (B ∪ C) =

(A ∩ B) ∪ (A ∩ C)

Distributividade da união sobre a intersecção

A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)

Page 39: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 39

Teorema: Distributividade da intersecção sobre a uniãoSuponha que A, B e C são conjuntos quaisquer. Então:

A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)

Prova: (direta)Suponha que A, B e C são conjuntos quaisquer. Então:

• x ∈ A ∩ (B ∪ C) ⇔ pela definição de intersecção• x ∈ A ∧ x ∈ (B ∪ C) ⇔ pela definição de união• x ∈ A ∧ (x ∈ B ∨ x ∈ C) ⇔ pela distributividade do ∧ sobre o ∨• (x ∈ A ∧ x ∈ B) ∨ (x ∈ A ∧ x ∈ C) ⇔ pela definição de intersecção• x ∈ (A ∩ B) ∨ x ∈ (A ∩ C) ⇔ pela definição de união• x ∈ (A ∩ B) ∪ (A ∩ C)

Logo, A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)

Page 40: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 40

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 41: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 41

3.5 Operações Reversíveis

♦ Operação reversível• a partir do resultado, pode-se recuperar os operando originais• Importante em muitas aplicações na Computação e Informática

Exp: Back Tracking (ilustrativo)

Operação de débito e crédito em um terminal bancário automático• composição de diversas pequenas operações componentes

Queda de sistema (luz…) entre duas operações componentes• sistema poderia ficar inconsistente• exemplo: débito realizado, mas o crédito, não• fundamental desfazer o que foi parcialmente feito• recuperação facilitada quando a operação é reversível

Page 42: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 42

Exp: Construção de Estruturas Complexas (ilustrativo)

Construção de Estruturas Complexas.

• compondo estruturas elementares já conhecidas

• em geral, é desejável que uma alteração realizada em umaestrutura elementar seja refletida na estrutura composta

• possível se conhecido os elementos originais da estrutura

• informação facilitada quando a operação é reversível

Page 43: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 43

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 44: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 44

3.5.1 Complemento

A

U

A

U

~A

Def: ComplementoComplemento de um conjunto A ⊆ U

A' ou ~A

~A = { x ∈ U x ∉ A }

Page 45: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 45

♦ Relacionando com a Lógica

• complemento corresponde à negação

• símbolo ~ é um dos usados para a negação

Exp: Complemento

Dígitos = { 0, 1, 2,…, 9 } conjunto universo e A = { 0, 1, 2 }

• ~A = { 3, 4, 5, 6, 7, 8, 9 }

012

Dígitos

3 4

5

6

78

9

012

Dígitos

3 4

5

6

78

9

Page 46: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 46

Exp: …Complemento

N conjunto universo e A = { 0, 1, 2 }

• ~A = { x ∈ N x > 2 }

Para qualquer conjunto universo U

• ~∅ = U• ~U = ∅

R conjunto universo

• ~Q = I• ~I = Q

Page 47: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 47

Exp: Complemento, União e IntersecçãoU conjunto universo. Para qualquer A ⊆ U

• A ∪ ~A = U p ∨ ¬p é tautologia• A ∩ ~A = ∅ p ∧ ¬p é contradição

♦ Propriedade Duplo Complemento• para qualquer A ⊆ U

~~A = A

• relacionamento com lógica∗ A: todos elementos x tais que x ∈ A∗ ~A: todos elementos x tais que x ∉ A ¬(x ∈ A)∗ ~~A: todos elementos x tais que ¬¬(x ∈ A) x ∈ A

• complemento é reversível: ~(~A) = A

Page 48: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 48

♦ Propriedade DeMorgan

• relacionada com o complemento

• envolve a união e a intersecção

~(A ∪ B) = ~A ∩ ~B ¬(p ∨ q) ⇔ ¬p ∧ ¬q

~(A ∩ B) = ~A ∪ ~B ¬(p ∧ q) ⇔ ¬p ∨ ¬q

A B

U

A B

U

A B

U

A B

U

~(A ∪ B) = ~A ∩ ~BA ∪ B ~A ~B

Page 49: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 49

♦ Essa propriedade permite concluir

• intersecção pode ser calculada em termos do complemento e união

A ∩ B = ~(~A ∪ ~B)

• união pode ser calculada em termos do complemento e intersecção

A ∪ B = ~(~A ∩ ~B)

Page 50: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 50

♦ Diferença: derivada da intersecção e complemento

A B

Def: DiferençaA e B conjuntos

A - B

A - B = A ∩ ~B = { x x ∈ A ∧ x ∉ B }

Page 51: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 51

Exp: DiferençaDígitos = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }Vogais = { a, e, i, o, u }Pares = { 0, 2, 4, 6,… }

• Dígitos - Vogais = Dígitos• Dígitos - Pares = { 1, 3, 5, 7,9 }

.

13579

02468

10121416...

Paresaeiou

Vogais13579

02468

Dígitos Dígitos

Page 52: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 52

Exp: …DiferençaA = { x ∈ N x > 2 } e B = { x ∈ N x2 = x }

• A - B = { 3, 4, 5, 6,… }• B - A = { 0, 1 }

R (reais ), Q (racionais) e I (irracionais)• R - Q = I• R - I = Q• Q - I = Q

Universo U e A ⊆ U• ∅ - ∅ = ∅• U - ∅ = U• U - A = ~A• U - U = ∅

Page 53: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 53

♦ Por que a operação de diferença é não-reversível?

Page 54: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 54

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 55: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 55

3.5.2 Conjunto das Partes

♦ Para um conjunto A

• A ⊆ A• ∅ ⊆ A

♦ Para qualquer elemento a ∈ A

• { a } ⊆ A

♦ Seguindo o racionínio

• definição de uma operação unária• Conjunto das Partes

∗ aplicada a um conjunto A∗ resulta no conjunto de todos os subconjuntos de A

Page 56: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 56

Def: Conjunto das Partes, Conjunto PotênciaA conjunto

P(A) ou 2A

P(A) = { X X ⊆ A }

Exp: Conjunto das PartesA = { a }, B = { a, b } e C = { a, b, c }

• P(∅) = { ∅ }• P(A) = { ∅, { a } }• P(B) = { ∅, { a }, { b }, { a, b } }• P(C) = { ∅, { a }, { b }, { c }, { a, b }, { a, c }, { b, c }, { a, b, c } }

Quantos elementos tem P(X)?

Page 57: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 57

Exp: …Conjunto das PartesD = { a, ∅, { a, b } }

• P(D) = { ∅, { a }, { ∅ }, { { a, b } }, { a, ∅ }, { a, { a, b } }, { ∅, { a,b } }, { a, ∅, { a, b } } }

Quantos elementos tem P(X)?

♦ Número de elementos de P(X)

• número de elementos de∗ X é n∗ P(X) é 2n

• justifica a notação 2X

∗ prova por indução introduzida adiante

Page 58: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 58

♦ Reversabilidade de P(X)?• uma solução: união de todos os conjuntos de P(X)• como fica o cálculo da união se o número de elementos do

conjunto das partes for infinito?∗ não será discutido

Exp: Reversabilidade do Conjunto das PartesResultante: { ∅, { a } }

• Operando: ∅ ∪ { a } = { a }

Resultante: { ∅, { a }, { b }, { a, b } }• Operando: ∅ ∪ { a } ∪ { b } ∪ { a, b } = { a, b }

Resultante: { ∅, { a }, { b }, { c }, { a, b }, { a, c }, { b, c }, { a, b, c } }• Operando: ∅ ∪ { a } ∪ { b } ∪ { c } ∪ { a, b } ∪ { a, c } ∪ { b, c } ∪

{ a, b, c } = { a, b, c }

Page 59: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 59

Obs: Álgebra de Conjuntos PequenaÁlgebra de Conjuntos é uma álgebra grande

• operações sobre a coleção (não-conjunto) de todos os conjuntos

Se for desejado uma Álgebra de Conjuntos pequena??

• definir sobre P(U)• para cada U, uma álgebra diferente• qq operando A é tal que A ∈ P(U)

União, intersecção, diferença e complemento

• fechadas sobre P(U)

Conjunto das partes

• não necessariamente é fechada sobre P(U) por quê?

Page 60: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 60

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 61: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 61

3.5.3 Produto Cartesiano

♦ Noção de seqüência finita

• necessária para definir produto cartesiano∗ em particular, seqüência de dois elementos

♦ Seqüência de n componentes: n-upla ordenada

• n objetos (não necessariamente distintos) em uma ordem fixa

♦ 2-upla ordenada ou par ordenado

〈x, y〉 ou (x, y)

♦ n-upla ordenada

〈x1, x2, x3,…,xn〉 ou (x1, x2, x3,…,xn)

Page 62: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 62

♦ Não confundir

〈x1, x2, x3,…,xn〉 com { x1, x2, x3,…,xn }

♦ A ordem é importante

〈x, y〉 ≠ 〈y, x〉

Def: Produto CartesianoA e B conjuntos

A × B

A × B = { 〈a, b〉 a ∈ A e b ∈ B }

♦ Produto cartesiano de A com ele mesmo

A × A = A2

Page 63: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 63

Exp: Produto Cartesiano

A = { a }, B = { a, b } e C = { 0, 1, 2 }A × B = { 〈a, a〉, 〈a, b〉 }B × C = { 〈a, 0〉, 〈a, 1〉, 〈a, 2〉, 〈b, 0〉, 〈b, 1〉, 〈b, 2〉 } (não-comut.)

C × B = { 〈0, a〉, 〈0, b〉, 〈1, a〉, 〈1, b〉, 〈2, a〉, 〈2, b〉 }A2 = { 〈a, a〉 }B2 = { 〈a, a〉, 〈a, b〉, 〈b, a〉, 〈b, b〉 }A × N = { 〈a, 0〉, 〈a, 1〉, 〈a, 2〉, 〈a, 3〉,… }(A × B) × C = (não-associatividade)

    { 〈〈a, a〉,0〉, 〈〈a, a〉,1〉, 〈〈a, a〉,2〉, 〈〈a, b〉,0〉, 〈〈a, b〉,1〉, 〈〈a, b〉,2〉 }A × (B × C) =    { 〈a,〈a, 0〉〉, 〈a,〈a, 1〉〉, 〈a,〈a, 2〉〉, 〈a,〈b, 0〉〉, 〈a,〈b, 1〉〉, 〈a,〈b, 2〉〉 }

Page 64: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 64

♦ Conclusões

• Não-Comutatividade∗ B × C e C × B são diferentes∗ (B × C) ∩ (C × B) = ∅ disjuntos

• Não-Associatividade∗ (A × B) × C e A × (B × C) são diferentes por quê?

Exp: Produto CartesianoA = { 0, 1, 2 }

• A × ∅ = ∅ por quê?• ∅ × A = ∅ por quê?• ∅2 = ∅

Page 65: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 65

♦ Distributividade do produto cartesiano sobre a união

A × (B ∪ C) = (A × B) ∪ (A × C) exercício

♦ Distributividade do produto cartesiano sobre aintersecção

A × (B ∩ C) = (A × B) ∩ (A × C) exercício

♦ Reversabilidade do produto cartesiano ?

• como fazer?• nem sempre é válida

∗ quando o produto cartesiano resulta no vazio por quê?

Page 66: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 66

Exp: Reversabilidade do Produto Cartesiano

{ 〈a, a〉, 〈a, b〉 }

• Operandos: { a } e { a, b }

{ 〈a, a〉, 〈a, b〉, 〈b, a〉, 〈b, b〉 }

• Operandos: { a, b } e { a, b }

{ 〈a, 0〉, 〈a, 1〉, 〈a, 2〉, 〈a, 3〉,… }

• Operandos: { a } e N

{ 〈〈a, a〉, 0〉, 〈〈a, a〉, 1〉, 〈〈a, a〉, 2〉, 〈〈a, b〉, 0〉, 〈〈a, b〉, 1〉, 〈〈a, b〉, 2〉 }

• Operandos: { 〈a, a〉, 〈a, b〉 } e { 0, 1, 2 }

Page 67: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 67

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 68: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 68

3.5.4 União Disjunta

♦ Pessoas da família Silva e Souza

• Silva = { João, Maria, José }

• Souza = { Pedro, Ana, José }

♦ Conjunto resultante da união

Silva ∪ Souza = { João, Maria, Pedro, Ana, José }

• José ocorre uma única vez

• não reflete uma “reunião familiar”∗ José Silva não é o mesmo José Souza

Page 69: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 69

♦ União disjunta

• distingue elementos com mesma identificação

• garante que não existem elementos em comum∗ associa uma identificação do conjunto origem∗ um tipo de “sobrenome”

〈elemento, identificação do conjunto origem〉

Def: União DisjuntaA + B ou A ∪ B

A + B = { 〈a, A〉a ∈ A } ∪ { 〈b, B〉b ∈ B }A + B = { 〈a, 0〉a ∈ A } ∪ { 〈b, 1〉b ∈ B }

A + B = { aAa ∈ A } ∪ { bBb ∈ B }

Page 70: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 70

♦ Diversas formas de denotar elementos de A + B

• importante é distinguir o conjunto originário

Exp: União DisjuntaSilva = { João, Maria, José } e Souza = { Pedro, Ana, José }

Silva + Souza = { 〈João, Silva〉, 〈Maria, Silva〉, 〈José, Silva〉,〈Pedro, Souza〉, 〈Ana, Souza〉, 〈José, Souza〉 }

D = { 0, 1, 2,…, 9 }, V = { a, e, i, o, u } e P = { 0, 2, 4, 6,… }

D + V = { 0D, 1D, 2D,…, 9D, aV, eV, iV, oV, uV }

D + P = { 0D, 1D, 2D,…, 9D, 0P, 2P, 4P, 6P,… }

Page 71: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 71

Exp: …União Disjunta

A = { x ∈ N x > 2 } e B = { x ∈ N x2 = x }

• A + B = { 0B, 1B, 3A, 4A, 5A, 6A,… }

A = { a, b, c }

• ∅ + ∅ = ∅

• A + ∅ = { 〈a, A〉, 〈b, A〉, 〈c, A〉 }

• A + A = { 〈a, 0〉, 〈b, 0〉, 〈c, 0〉, 〈a, 1〉, 〈b, 1〉, 〈c, 1〉 }

♦ Reversabilidade da união disjunta?

Page 72: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 72

Exp: Reversabilidade da União Disjunta{ 0D, 1D, 2D,…, 9D, aV, eV, iV, oV, uV }

• Operandos: { 0, 1, 2,…, 9 } e { a, e, i, o, u }

{ 0D, 1D, 2D,…, 9D, 0N, 1N, 2N, 3N… }• Operandos: { 0, 1, 2,…, 9 } e N

∅• Operandos: ∅ e ∅

{ 〈a, 0〉, 〈b, 0〉 }• Operandos: { a, b } e ∅

{ 〈a, 0〉, 〈b, 0〉, 〈a, 1〉, 〈b, 1〉, 〈c, 1〉 }• Operandos: { a, b } e { a, b, c }

Page 73: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 73

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 74: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 74

3.6 Relação entre Lógica e Álgebra deConjuntos

Propriedade Lógica Teoria dos Conjuntos

Idemp p ∧ p ⇔ pp ∨ p ⇔ p

A ∩ A = AA ∪ A = A

Comut p ∧ q ⇔ q ∧ pp ∨ q ⇔ q ∨ p

A ∩ B = B ∩ AA ∪ B = B ∪ A

Associat p ∧ (q ∧ r) ⇔ (p ∧ q) ∧ rp ∨ (q ∨ r) ⇔ (p ∨ q) ∨ r

A ∩ (B ∩ C) = (A ∩ B) ∩ CA ∪ (B ∪ C) = (A ∪ B) ∪ C

Page 75: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 75

Propriedade Lógica Teoria dos Conjuntos

Distrib p ∧ (q ∨ r) ⇔(p ∧ q) ∨ (p ∧ r)p ∨ (q ∧ r) ⇔

(p ∨ q) ∧ (p ∨ r)

A ∩ (B ∪ C) =(A ∩ B) ∪ (A ∩ C)

A ∪ (B ∩ C) =(A ∪ B) ∩ (A ∪ C)

Negação/

Compl

¬¬p ⇔ pp ∧ ¬p ⇔ Fp ∨ ¬p ⇔ V

~~A = AA ∩ ~A = ∅A ∪ ~A = U

DeMorgan ¬(p ∧ q) ⇔ ¬p ∨ ¬q¬(p ∨ q) ⇔ ¬p ∧ ¬q

~(A ∪ B) = ~A ∩ ~B~(A ∩ B) = ~A ∪ ~B

Page 76: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 76

Propriedade Lógica Teoria dos Conjuntos

Elemento Neutro p ∧ V ⇔ pp ∨ F ⇔ p

A ∩ U = AA ∪ ∅ = A

Elemento Absorvente p ∧ F ⇔ Fp ∨ V ⇔ V

A ∩ ∅ = ∅A ∪ U = U

Page 77: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 77

♦ Importante exercício proposto no Capítulo 2

• qq dos conetivos ¬, ∧, ∨, → e ↔∗ pode ser expresso usando somente ¬ e ∧

• importante em diversas aplicações da Computação e Informática∗ exemplo: Técnicas Digitais

• mesmo resultado vale para a Álgebra de Conjuntos∗ usando somente ~ e ∩

• exercício:∗ como → e ↔ podem ser expressos na Álgebra de Conjuntos?

Page 78: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 78

♦ Relações Lógicas × Relações sobre Conjuntos

Relação Lógica Teoria dos Conjuntos

Implicação/Continência p ⇒ p A ⊆ BEquivalência/Igualdade p ⇔ q A = B

Page 79: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 79

♦ Como visto no Capítulo 2

• p(x) é uma proposição p tq descreve alguma propriedade de x ∈ U

♦ Lógica × Teoria dos Conjuntos

• A = { x p(x) } e B = { x q(x) }∗ A ⊆ B se e somente se (∀x ∈ U) (p(x) ⇒ q(x)) continência∗ A = B se e somente se (∀x ∈ U) (p(x) ⇔ q(x)) igualdade

• exemplo

∗ A = U se e somente se (∀x ∈ U) (p(x) ⇔ V) universo∗ A = ∅ se e somente se (∀x ∈ U) (p(x) ⇔ F) vazio

• Justifica o fato de que qq continência ou igualdade∗ decorrência de alguma implicação ou igualdade

Page 80: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 80

♦ Correlação entre Lógica e Álgebra de Conjuntos

• não é casual

• ambas são um caso particular de uma álgebra abstrata∗ denominada Álgebra de Boole∗ vista adiante

Page 81: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 81

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 82: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 82

3.7 Álgebra de Conjuntos nasLinguagens de Programação

♦ Já discutido: nem toda linguagem de programação• possui boas facilidades para tratar conjuntos

♦ Pascal (lembrando)• tipos de dados baseados em conjuntos finitos• variáveis conjuntos sobre estes tipos de dados• constantes conjuntos (também finitos)

♦ Pascal: operações não-reversíveis sobre conjuntos:• união: +• intersecção: * • diferença: -

Page 83: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 83

Exp: Trechos de Programas em PascalSuponha o tipo de dados

dias_semana = set of (seg, ter, qua, qui,sex, sab, dom)

variáveis

feriado, trabalho, feriado_trabalho,úteis, parados: dias_semana

trechos de programas

feriado := [qua, sab]trabalho := [seg,…, sex]

Page 84: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 84

Os trechos de programas em Pascal

feriado_trabalho := trabalho * feriadoúteis := trabalho – feriadoparado := [sab, dom] + feriado

correspondem, na Teoria dos Conjuntos

• feriado_trabalho = trabalho ∩ feriado { qua }

• úteis = trabalho – feriado { seg, ter, qui, sex }

• parado = { sab, dom } ∪ feriado { qua, sab, dom }

Page 85: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 85

Exp: Programa Completo em PascalPrograma capaz de ler uma linha de texto e determinar o número de

• vogais

• consoantes

• outros símbolos

• total de caracteres lidos

Page 86: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 86

program numero_caracteres(input, output);type

alfabeto = set of ‘a’..’z’;var

n_vogais, n_consoantes, n_outros,total: integer;

vogais, consoantes: alfabeto;caractere: char;

beginvogais := [‘a’, ‘e’, ‘i’, ‘o’, ‘u’];consoantes := [‘a’..‘z’] – vogais;n_vogais := 0;n_consoantes := 0;n_outros := 0;read(caractere);

Page 87: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 87

while not eolndo begin

if caractere in vogaisthen n_vogais := n_vogais + 1else if caractere in consoantes

then n_consoantes := n_consoantes + 1else n_outros := n_outros + 1;

read(caractere)end;

total := n_vogais + n_consoantes + n_outros;writeln(‘vogais = ’, n_vogais);writeln(‘consoantes: ’, n_consoantes);writeln(‘outros símbolos: ’, n_outros);writeln(‘total de símbolos: ’, total)end.

Page 88: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 88

♦ Construções similares a do produto cartesiano

• reversíveis∗ arranjos (arrays)∗ registros (records)

• abordagem mais adequada∗ quando do estudo do conceito de função

Page 89: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 89

3 – Álgebra de Conjuntos3.1 Introdução3.2 Diagramas de Venn3.3 Paradoxo de Russell3.4 Operações Não-Reversíveis

3.4.1 União3.4.2 Intersecção

3.5 Operações Reversíveis3.5.1 Complemento3.5.2 Conjunto das Partes3.5.3 Produto Cartesiano3.5.4 União Disjunta

3.6 Relação entre Lógica e Álgebra de Conjuntos3.7 Álgebra de Conj. nas Linguagens de Programação3.8 Álgebra de Conj. e Teoria da Computação

Page 90: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 90

3.8 Álgebra de Conjuntos e Teoria daComputação

♦ Álgebra de Conjuntos

• fundamental no estudo da Teoria da Computação

♦ Teoria da Computação

• meios para correta aplicação e entendimento dos conceitos de∗ algoritmo∗ computabilidade∗ conseqüentemente, do que é solucionável em um computador

• conceitos mínimos que qq estudante necessita saber

Page 91: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 91

♦ Lembre-se: linguagem (formal) L sobre alfabeto ∑

L ⊆ ∑*

♦ Complemento da linguagem L

~L = { x ∈ ∑* x ∉ L }

Page 92: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 92

Exp: Complemento de LinguagensLinguagens sobre ∑ = { a, b }

• L1 = { ε }

• L2 = { a }* = { ε, a, aa, aaa,… }

• Palíndromos = { ε, a, b, aa, bb, aaa, aba, bab, bbb, aaaa,… }

Complementos das linguagens

• ~L1 = { a, b, aa, ab, ba, bb, aaa,… }

• ~L2 = { b, ab, ba, bb, aab, aba, baa, abb, bab, bba, bbb,… }

• ~Palíndromos = { x ∈ ∑* x ∉ Palíndromos }

Page 93: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 93

Obs: Reconhecimento de Linguagens × ComplementoLembre-se: compilador é um software

• traduz um programa escrito na linguagem de programação• para um código executável no sistema computador.• estruturado em análise e síntese

∗ análise é responsável pelo reconhecimento da linguagem∗ verifica se um programa p válido para a linguagem L

p ∈ L

• se p ∈ L, passa para a síntese• se p ∉ L, alertar o programador (correção do programa!)• portanto, a análise de um compilador verifica se

p ∈ L ou p ∈ ~L

Page 94: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 94

Obs: Hierarquia de Linguagens e Problema da Parada

Importante assunto da Teoria da Computação

• limites do que é possível computar em um computador

Capítulo 2 – Lógica e Técnicas de Demonstração

• Máquina de Turing: formalização do conceito de algoritmo

Limite do que é possível reconhecer

• existe uma Máquina de Turing que reconhece

Page 95: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 95

Nesse contexto: linguagens são agrupadas em classes• hierarquia (continência própria)

LinguagensRecursivas

(existe um algoritmocapaz de responder

"pertence" ou "não pertence")

Linguagens Enumeráveis Recursivamente(existe um algoritmo

capaz de responder "pertence")

Universo de Todas as Linguagens

Page 96: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 96

♦ Linguagens Recursivas

• existe um algoritmo (Máquina de Turing) que sempre pára• capaz de determinar se

p ∈ L ou p ∈ ~L

MT(L)p

Page 97: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 97

♦ Linguagens Enumeráveis Recursivamente

• existe um algoritmo (Máquina de Turing)• capaz de determinar se p ∈ L• entretanto, se p ∈ ~L, o algoritmo pode

∗ parar identificando que p ∈ ~L∗ ficar em loop infinito

MT(L)p

∉ ouLOOP

Page 98: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 98

♦ Contradiz a intuição pois estabelece que

reconhecer o complemento de uma linguagem pode serimpossível, mesmo que seja possível reconhecer a linguagem

♦ Linguagens Não-Computáveis• não existe algoritmo (Máquina de Turing) capaz de determinar se

p ∈ L ou p ∈ ~L

♦ Problema da Parada• se qq Máquina de Turing pára determinando se p ∈ L ou p ∈ ~L

∗ não tem solução computacional

• baseado nesse resultado prova-se∗ inúmeros problemas não possuem solução computacional∗ inclui muitos problemas interessantes e importantes para CC

Page 99: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 99

Teorema: Complemento de Ling. Recursiva é RecursivaSe L sobre ∑ é recursiva, então ~L também é recursiva

Prova: (direta)Suponha L linguagem recursiva sobre ∑

Então existe Máquina de Turing MT(L) que aceita L e sempre pára

MT(L)pInverte

MT'(L)

Inverte ∈

Portanto, o complemento de uma linguagem recursiva é recursiva

Page 100: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 100

Teorema: Intersecção de Ling. Recursivas é RecursivaSe L1 e L2 sobre ∑ são recursivas, então L1 ∩ L2 também é recursiva

Prova: (direta)Suponha L1 e L2 linguagens recursivas sobre ∑

Então existem Máquinas de Turing MT(L1) e MT(L2) tq aceitam L1 e L2e sempre param

MT(L1)p

MT(L1∩L2)

∈MT(L2)

Portanto, a intersecção de duas linguagens recursivas é recursiva

Page 101: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 101

♦ Outros resultados (exercícios)

• união de duas linguagens recursivas é recursiva

• complemento de uma linguagem enumerável recursivamente nãonecessariamente é enumerável recursivamente

• uma linguagem é recursiva sss a linguagem e seu complementosão enumeráveis recursivamente

Page 102: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 102

Matemática Discreta para Ciência da Computação

P. Blauth Menezes

1 Introdução e Conceitos Básicos2 Lógica e Técnicas de Demonstração3 Álgebra de Conjuntos4 Relações5 Funções Parciais e Totais6 Endorrelações, Ordenação e Equivalência7 Cardinalidade de Conjuntos8 Indução e Recursão9 Álgebras e Homomorfismos10 Reticulados e Álgebra Booleana11 Conclusões

Page 103: Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação - P. Blauth Menezes 103

Matemática Discreta paraCiência da Computação

P. Blauth Menezes

[email protected]

Departamento de Informática Teórica

Instituto de Informática / UFRGS