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

116
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: lemien

Post on 04-Feb-2018

258 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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 · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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 · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais

5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 4: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 Funções Parciais e Totais

◆ Função Parcial

• simplesmente relação funcional

◆ Função Total ou Função

• relação funcional total

Page 5: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Portanto:

• função parcial é relação• função é função parcial (portanto, é relação)• nem toda relação é função parcial

∗ basta considerar uma relação não-funcional• nem toda função parcial é uma função

∗ basta considerar uma função parcial não-total

Funções Totais

Funções Parciais

Relações

Page 6: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Estudo das funções

• destacado do estudo das relações

• importante para a Matemática e Computação e Informática

• maioria das abordagens matemáticas∗ centradas no conceito de função total

• em Computação e Informática∗ função parcial é tão ou mais importante que função

• computablidade∗ noção mais fundamental em CC∗ baseada em funções parciais

Page 7: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial

5.1.1 Definição e Introdução5.1.2 Função Parcial Dual5.1.3 Composição de Funções Parciais5.1.3 Restrição

5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.5 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 8: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.1 Função Parcial5.1.1 Definição e Introdução

Def: Função ParcialFunção Parcial é uma relação funcional f ⊆ A × B

◆ Portanto, função parcial é relação na qual

• cada elemento do domínio está relacionado com, no máximo, umelemento do contra-domínio

Page 9: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Notação

• função parcial f ⊆ A × Bf: A B

• ou, quando é claro que se trata de uma função parcial

f: A → B• 〈a, b〉 ∈ f

f(a) = b ou f〈a〉 = b

◆ Termos alternativos para função parcial

• operação parcial• mapeamento parcial• transformação parcial

Page 10: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Exemplos de relações funcionais

• são exemplos de funções parciais

Exp: Função ParcialA = { a }, B = { a, b } e C = { 0, 1, 2 }

• ∅: A → B ✔

• { 〈0, a〉, 〈1, b〉 }: C → B ✔

• =: A → B ✔

• x2: Z → Z onde x2 = { 〈x, y〉 ∈ Z2 y = x2 } ✔

• A × B: A → B ✘

• <: C → C ✘

◆ Grafo e matriz de uma função parcial?

Page 11: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Função parcial como matriz ou grafo (endorrelação)

• matriz: no maximo um valor verdadeiro em cada linha• grafo: no máximo uma aresta partindo de cada nodo

Exp: Função ParcialAdição nos naturais. Operação ad: N × N → N tal que

ad〈a, b〉 = a + b

• conjunto imagem?

Divisão nos reais. Operação div: R × R → R tal que:

div〈x, y〉 = x/y

• conjunto imagem?

Page 12: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial

5.1.1 Definição e Introdução5.1.2 Função Parcial Dual5.1.3 Composição de Funções Parciais5.1.3 Restrição

5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 13: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.1.2 Função Parcial Dual

◆ Relação dual de uma função parcial

• não necessariamente é uma função parcial (por quê?)

Exp: Relação Dual de Função ParcialA = { 0, 1, 2 } e endofunção parcial f: A → A tq f = { 〈0, 2〉, 〈1, 2〉 }

fop = { 〈2, 0〉, 〈2, 1〉 }

◆ Conceito dual de funcional?

Page 14: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Lembre-se: conceito dual de funcional é injetora

◆ Dual de função parcial é função parcial?

• deve ser injetora

◆ Ou seja

• relação dual de uma relação funcional e injetora• é relação injetora e funcional

◆ Conclusão

• relação dual de função parcial injetora• é função parcial injetora.

Page 15: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Relação Dual de Função ParcialA = { a }, B = { a, b } e C = { 0, 1, 2 }. Duais são funções parciais?

• ∅: A → B ✔

• =: A → B ✔

• { 〈0, a〉, 〈1, b〉 }: C → B ✔

• x2: Z → Z onde x2 = { 〈x, y〉 ∈ Z2 y = x2 } ✘

Page 16: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial

5.1.1 Definição e Introdução5.1.2 Função Parcial Dual5.1.3 Composição de Funções Parciais5.1.3 Restrição

5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 17: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.1.3 Composição de Funções Parciais

◆ Composição de relações é relação

• por definição

◆ Composição de funções parciais é função parcial?

• basta mostrar que a composição de funcionais é funcional

Teorema: Composição de Funcionais é FuncionalR: A → B e S: B → C relações funcionais

Então S o R: A → C é uma relação funcional

Page 18: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Prova: Composição de Funcionais é FuncionalSuponha R: A → B e S: B → C relações funcionais

Então S o R: A → C é relação e basta provar que

(∀a ∈ A)(∀c1 ∈ C)(∀c2 ∈ C)(a (S o R) c1 ∧ a (S o R) c2 → c1 = c2)

Suponha a ∈ A, c1 ∈ C e c2 ∈ C tais que a (S o R) c1 ∧ a (S o R) c2Então (prova direta)

• a (S o R) c1 ∧ a (S o R) c2 ⇒ definição de composição• (∃b1 ∈ B)(∃b2 ∈ B)(a R b1 ∧ a R b2 ∧ b1 S c1 ∧ b2 S c2) ⇒ R é func.• b1 = b2 ∧ b1 S c1 ∧ b2 S c2 ⇒ S é funcional• c1 = c2

Logo, S o R: A → C é relação funcional

Page 19: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Composição de Relações

• f = { 〈a, 1〉, 〈c, 4〉, 〈d, 5〉 }• g = { 〈1, x〉, 〈2, y〉, 〈4, y〉, 〈5, z〉 }• g o f = { 〈a, x〉, 〈c, z〉, 〈d, z〉 }

12345

xyz

abcd

f g

g • f

A B C

Page 20: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Obs: Dualidade e Prova de TeoremasFato extremamente importante

• todo o resultado válido• tambem é válido para o seu conceito dual• prova é praticamente a mesma, respeitando as noções duais

Não é tão evidente na Teoria dos Conjuntos

• amplamente explorado na Teoria das Categorias

a noção de dualidade divide o trabalho pela metade

• incluindo definições e provas

Page 21: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Por dualidade

• composição de relações injetoras é uma relação injetora

Teorema: Composição de Injetoras é InjetoraR: A → B e S: B → C relações injetoras

Então S o R: A → C é uma relação injetora

◆ Prova

• exercício: dualizar prova anterior

Page 22: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial

5.1.1 Definição e Introdução5.1.2 Função Parcial Dual5.1.3 Composição de Funções Parciais5.1.3 Restrição

5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 23: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.1.4 Restrição

◆ Para uma função parcial

• restrição, a partir de um subconjunto de seu domínio

◆ Operação (sobre funções)

• importante quando aplicada sobre sistemas

• uma das operações fundamentais da álgebra de processos

Page 24: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Restrição do Domínio de uma Função Parcial

f: A → B função parcial e A0 tal que A0 ⊆ A

Restrição do Domínio de f relativamente a A0

f\A0: A0 → B

é tal que

f\A0 = f ∩ (A0 × B)

Page 25: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Restrição do Domínio de uma Função ParcialA = { 1, 2, 3, 4, 5 }, B = { x, y, z } e a função parcial f: A → BPara A0 = { 3, 4, 5 }, a função parcial f\A0: A0 → B

x

y

z

fA B12345

A0

x

y

z

f\A0A0 B3

4

5

Page 26: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Restrição do Domínio de uma Função ParcialA = { a }, B = { a, b } e C = { 0, 1, 2 }

∅: A → B ∅\A = ∅: A → BR = { 〈0, a〉, 〈1, b〉 }: C → B R\{ 0 } = { 〈0, a〉 }: { 0 } → BidB = { 〈a, a〉, 〈b, b〉 }: B → B idB\A = { 〈a, a〉 }: A → Bx2 = { 〈x, y〉 ∈ Z2 y = x2 }: Z → Z

x2\N = { 〈x, y〉 ∈ N × Z y = x2 }

◆ Restrição introduzida foi sobre o domínio

• Como seria sobre o contra-domínio? Exercício

◆ Restrição de sistemas

• exemplificação em autômatos finitos

Page 27: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções5.1 Função Parcial5.2 Autômato Finito

5.2.1 Modelo e Exemplo5.2.2 Autômato Finito como Função Parcial5.2.3 Restrição de um Autômato Finito5.2.3 Leitura Complementar

5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 28: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.2 Autômato Finito

◆ Autômato Finito

• sistema de estados finitos• modelo computacional do tipo seqüencial muito comum• usado em diversos estudos

∗ Linguagens Formais, Compiladores∗ Semântica Formal, Teoria da Concorrência, …

• conceito de autômato finito introduzido (via exemplos)∗ baseado em Linguagens Formais∗ usados para verificar se (w - palavra, L - linguagem)

w ∈ L ou w ∉ L

Page 29: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções5.1 Função Parcial5.2 Autômato Finito

5.2.1 Modelo e Exemplo5.2.2 Autômato Finito como Função Parcial5.2.3 Restrição de um Autômato Finito5.2.3 Leitura Complementar

5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 30: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.2.1 Modelo e Exemplo

◆ Autômato Finito: máquina composta por

• Fita• Unidade de Controle• Programa

♦ Fita: dispositivo de entrada

• contém a informação a ser processada• finita, dividida em células: cada célula armazena um símbolo• símbolos: pertencem a um alfabeto de entrada• não é possível gravar sobre a fita

Page 31: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

♦ Unidade de Controle: reflete o estado corrente

• Estados∗ número de estados: finito e predefinido

• Unidade de Leitura∗ inicialmente: cabeça na célula mais à esquerda da fita∗ lê o símbolo de uma célula de cada vez∗ após a leitura, move a cabeça uma célula para a direita

a a b c c b a a

controle

Page 32: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

♦ Programa: função parcial

• comanda as leituras• define o estado da máquina

∗ dependendo do estado corrente e símbolo lido∗ determina o novo estado

Page 33: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Autômato: aa ou bb como subpalavra

q0

q1 q2

a b

b

a

a,b

a bqf

• nodos: estados; q0 - estado inicial; qf - estado final• arcos: transições ou computações atômicas• processamento: sucessiva aplicação de computações atômicas

Page 34: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Autômato: aa ou bb como subpalavraLinguagens Formais: o autômato pára (normalmente)

• quando processar toda a entrada• aceita a entrada se parar em um estado final

q0

q1 q2

a b

b

a

a,b

a bqf

qf

q1

q0

a b b a

q2

qf

Page 35: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

6 – Funções5.1 Função Parcial5.2 Autômato Finito

5.2.1 Modelo e Exemplo5.2.2 Autômato Finito como Função Parcial5.2.3 Restrição de um Autômato Finito5.2.3 Leitura Complementar

5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 36: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.2.2 Autômato Finito como Função Parcial

q0

q1 q2

a b

b

a

a,b

a bqf

◆ Autômato finito definido como função parcial

• no estado q0, ao ler a, assume o estado q1• no estado q0, ao ler b, assume o estado q2

• 〈〈q0, a〉, q1〉• 〈〈q0, b〉, q2〉

Page 37: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Assim, em cada par ordenado da forma 〈〈q, a〉, p〉

• componentes∗ primeira: o par 〈estado corrente, símbolo lido〉∗ segunda: novo estado

• função parcial

δ: Q × Σ → Q∗ Q - conjunto finito de estados Σ - alfabeto∗ 〈〈q, a〉, p〉 é tal que δ(〈q, a〉) = p

Page 38: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Todos os pares que definem a função programa

• Total? Injetora? Sobrejetora?

q0

q1 q2

a b

b

a

a,b

a bqf

〈〈q0, a〉, q1〉 〈〈q1, a〉, qf〉 〈〈q2, a〉, q1〉 〈〈qf, a〉, qf〉

〈〈q0, b〉, q2〉 〈〈q1, b〉, q2〉 〈〈q2, b〉, qf〉 〈〈qf, b〉, qf〉

Page 39: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Autômato Finito como Interface Homem × Máquina

• δ: Q × Σ → Q total? injetora? sobrejetora?∗ Q = { 〈q0, q1, q2, q3, q4 }∗ Σ = { moeda, tecla_doce, tecla_cigarro, tecla_refri,

libera_doce, libera_cigarro, libera_refri }

moeda

tecladoce

teclacigarro

teclarefri

q0

q1

q4q3q2

liberadoce

liberarefri

liberacigarro

Page 40: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Autômato Finito como Interface Homem × Máquina

moeda

tecladoce

teclacigarro

teclarefri

q0

q1

q4q3q2

liberadoce

liberarefri

liberacigarro

Page 41: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito

5.2.1 Modelo e Exemplo5.2.2 Autômato Finito como Função Parcial5.2.3 Restrição de um Autômato Finito5.2.3 Leitura Complementar

5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 42: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.2.3 Restrição de um Autômato Finito

◆ Cálculo de restrição de sistemas

• importante aplicação da operação de restrição de funções parciais• reuso de software: importante no estudo de

∗ Engenharia de Software∗ paradigma Orientação a Objetos

Page 43: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Restrição de Autômato Finito × Reuso de Software

moeda

tecladoce

teclacigarro

teclarefri

q0

q1

q4q3q2

liberadoce

liberarefri

liberacigarro

moeda

tecladoce

teclarefri

q0

q1

q4q3q2

liberadoce

liberarefri

Desejada uma nova máquina, sem as funções relacionadas comcigarros

δ\Q × Σ0: Q × Σ0 → Q

Σ0 = { moeda, tecla_doce, tecla_refri, libera_doce, libera_refri }

Page 44: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Obs: Manutenção de SoftwareRestrição de software pode facilmente ser implementada

• ferramenta automática de desenvolvimento/manutenção• programador não altera o software

∗ realiza uma operação sobre este∗ resultado desejado: garantido

Custo de manutenção de software

• freqüentemente é maior que o de desenvolvimento• baixa confiabilidade de um software alterado (pelo programador)

Portanto, ferramentas automáticas de manutenção/reuso de software

• fundamental importância

Page 45: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito

5.2.1 Modelo e Exemplo5.2.2 Autômato Finito como Função Parcial5.2.3 Restrição de um Autômato Finito5.2.3 Leitura Complementar

5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 46: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.2.4 Leitura Complementar

◆ Autômatos finitos: memória finita e predefinida

• limitações sérias para solucionar problemas• linguagens regulares: reconhecidas por autômatos finitos• hierarquia de linguagens: classe dos problemas mais simples

∗ Exemplo: parênteses balanceados – não existe autômato finito

Linguagens Recursivas(existe um algoritmo capaz de responder

"pertence" ou "não pertence")

Linguagens Enumeráveis Recursivamente(existe um algoritmo capaz de responder "pertence")

Universo de Todas as Linguagens

Linguagens Regulares(existe um autômato finito capaz de

responder "pertence" ou "não pertence")

Page 47: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Linguagens Recursivas(existe um algoritmo capaz de responder

"pertence" ou "não pertence")

Linguagens Enumeráveis Recursivamente(existe um algoritmo capaz de responder "pertence")

Universo de Todas as Linguagens

Linguagens Regulares(existe um autômato finito capaz de

responder "pertence" ou "não pertence")

◆ Complexidade de algoritmos

• classe de algoritmos mais eficientes (tempo de processamento)• qq autômato que solucione é igualmente eficiente• qq solução é ótima

◆ Implementação computacional de aut. finitos: trivial

Page 48: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total

5.3.1 Definição e Introdução5.3.2 Exemplos Imortantes de Funções5.3.3 Função Dual5.3.4 Composição de Funções

5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 49: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.3 Função Total5.3.1 Definição e Introdução

◆ Função (total)

• função parcial a qual é total• herda conceitos e terminologias das relações e funções parciais

Def: Função, AplicaçãoAplicação, Função Total ou simplesmente Função

• função parcial f: A → B a qual é total

◆ Portanto, uma função (total)

• função parcial definida para todos os elementos do domínio

Page 50: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: FunçãoA = { a }, B = { a, b } e C = { 0, 1, 2 }

• =: A → B ✔

• idB: B → B ✔

• x2: Z → Z onde x2 = { 〈x, y〉 ∈ Z2 y = x2 } ✔

• ad: N × N → N tal que ad(a, b) = a + b ✔

• ∅: ∅ → ∅ ✔

• ∅: A → B ✘

• { 〈0, a〉, 〈1, b〉 }: C → B ✘

• A × B: A → B ✘

• <: C → C ✘

• div: R × R → R tal que div(x, y) = x/y ✘

Por que uma relação vazia é função e a outra não?

Page 51: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Função como matriz ou grafo (endorrelação)• matriz: existe exatamente um valor verdadeiro em cada linha• grafo: existe exatamente uma aresta partindo de cada nodo

◆ No contexto das funções• injetora coincide com monomorfismo

∗ monomorfismo = injetora + total

• sobrejetora coincide com epimorfismo∗ epimorfismo = sobrejetora + funcional

• isomorfismo também é denominado de função bijetora∗ como isomorfismo = monomorfismo + epimorfismo∗ então bijetora = injetora + sobrejetora

• como fica no contexto das funções parciais?

Page 52: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função Injetora, Sobrejetora e Bijetora.A = { a }, B = { a, b }, C = { 0, 1, 2 } e X um conjunto qualquer

• =: A → B injetora, não-sobrejetora

• idX: X → B bijetora

• x2: Z → Z não-injetora, não-sobrejetora

• ad: N × N → N epimorfismo, não-monomorfismo

• ∅: ∅ → ∅ bijetora

• { 〈0, 1〉, 〈1, 2〉, 〈2, 0〉 }: C → C isomorfismo

• R = { 〈x, y〉 y = sen x } monomorfismo, não-epimorfismo

Page 53: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total

5.3.1 Definição e Introdução5.3.2 Exemplos Importantes de Funções5.3.3 Função Dual5.3.4 Composição de Funções

5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 54: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.3.2 Exemplos Importantes de Funções

◆ Importantes exemplos de funções

• Lembre: se ∑ é alfabeto, então ∑* é conj. das palavras sobre ∑• Exemplo: para ∑ = { a, b }

∑* = { ε, a, b, aa, ab, ba, bb, aaa,… }

◆ Função constante

• qq valor do domínio, resulta no mesmo valor do contra-domínio

Page 55: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Função ConstanteA e B conjuntos. Função constante em b ∈ B

constb: A → B

• para todo a ∈ A, constb(a) = b

Exp: Função ConstanteA = { a } e ∑ = { a, b } um alfabeto

• const5: R → R const5 = { 〈x, 5〉 ∈ R2 }• palavra_vazia: ∑* → ∑* palavra_vazia = { 〈w, ε〉 ∈ ∑* × ∑* }• idA: A → A (toda função identidade é uma função constante?)• ∅: ∅ → ∅

Page 56: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Função Concatenação

• especialmente importante para Computação e Informática• operação binária, definida sobre uma linguagem

∗ associa a cada par de palavras uma palavra∗ formada pela justaposição da primeira com a segunda

Page 57: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Função Concatenação∑ = { a, b } um alfabeto

conc: ∑* × ∑* → ∑*

• para todo 〈u, v〉 ∈ ∑* × ∑*, conc〈u, v〉 = u v

Exp: Concatenação∑ = { a, b }

• concatenação das palavras aba e bbb de ∑* resulta em

ababbb palavra de ∑*.

Page 58: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Importantes funções induzidas por relações ouoperações sobre conjuntos

• função inclusão:∗ reflete a continência de conjuntos∗ toda continência induz um função inclusão e vice-versa

• função projeção∗ reflete a relação entre o produto cartesiano e os conjuntos

originais

• função imersão∗ reflete a relação a união disjunta e os conjuntos originais

• projeção e imersão: caracterizam a reversabilidade das operações

Page 59: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Função InclusãoA e B conjuntos tais que A ⊆ B

incA,B: A B ou simplesmente inc: A B

• para todo a ∈ A, inc(a) = a

◆ Toda função inclusão é injetora

incA,B: A B (por quê?)

Page 60: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função Inclusão × ContinênciaVogais = { a, e, i, o, u } e Letras = { a, b, c,…,z }

• claramente Vogais ⊆ Letras

incVogais,Letras: Vogais Letras

incVogais Letrasaeiou

aeiou

bc

d fg

hj...

Page 61: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: …Função Inclusão × ContinênciaAs continências N ⊆ Z, Z ⊆ Q e Q ⊆ R induzem as funções inclusão

incN,Z: N Z incZ,Q: Z Q incQ,R: Q R

• Pode-se afirmar que existe a função de inclusão incN,R: N R?

• Generalizando: composição de funções inclusão é uma funçãoinclusão?

◆ Já foi visto: reversabilidade do produto cartesiano

• como pode ser obtida?

Page 62: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Função ProjeçãoA e B conjuntos não-vazios e A × B o produto cartesiano

π1: A × B → A e π2: A × B → B

• para todo 〈a, b〉 ∈ A × B

π1〈a, b〉 = a e π2〈a, b〉 = b

◆ Recuperação dos operandos originais

• A = { π1〈a, b〉 〈a, b〉 ∈ A × B } primeiro operando

• B = { π2〈a, b〉 〈a, b〉 ∈ A × B } segundo operando

Page 63: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função ProjeçãoA = { a, b } e B = { x, y } conjuntos e A × B o produto cartesiano

• funções projeção π1: A × B → A e π2: A × B → B

〈a,x〉 〈a,y〉 〈b,x〉 〈b,y〉

a b x yA B

A×B

π1 π2

Toda função projeção é sobrejetora (por quê?)

Page 64: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Função ImersãoA e B conjuntos e A + B a união disjunta

q1: A → A + B e q2: B → A + B

• para todo a ∈ A, tem-se que q1(a) = 〈a, 0〉• para todo b ∈ B, tem-se que q2(b) = 〈b, 1〉

Page 65: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função ImersãoA = { a, b } e B = { b, c }

• A + B união disjunta• q1: A → A + B e q2: B → A + B funções de imersão

〈a,0〉 〈b,0〉 〈b,1〉 〈c,1〉

a b b cA B

A+B

q1 q2

Toda função imersão é injetora (por quê?).

Page 66: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções5.1 Função Parcial5.2 Autômato Finito5.3 Função Total

5.3.1 Definição e Introdução5.3.2 Função Dual5.3.3 Composição de Funções

5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 67: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.3.3 Função Dual

◆ Relação dual de uma função

• não necessariamente é uma função (por quê?)

Exp: Relação Dual de Funçãof: { 0, 1, 2 } → { 0, 1 } tal que f = { 〈0, 0〉, 〈1, 1〉, 〈2, 0〉 }

fop = { 〈0, 0〉, 〈1, 1〉, 〈0, 2〉 } não-funcional

g: { 0, 1 } → { 0, 1, 2 } tal que g = { 〈0, 0〉, 〈1, 1〉 }

gop = { 〈0, 0〉, 〈1, 1〉 } não-total

• conjuntos correspondentes a g e gop são iguais• por que g é função e gop não é função?

Page 68: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Condições para que dual de função seja função?

• função = total + funcional

• lembre-se o dual de∗ total é sobrejetora∗ funcional é injetora

• conclusão: sobrejetora + injetora, ou seja, bijetora

Page 69: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Relação Dual de FunçãoA = { a }, B = { a, b } e C = { 0, 1, 2 }. Duais são funções?

• idB: B → B ✔

• ∅: ∅ → ∅ ✔

• { 〈0, 1〉, 〈1, 2〉, 〈2, 0〉 }: C → C ✔

• =: A → B ✘

• ad: N × N → N tal que ad(a, b) = a + b ✘

• x2: Z → Z onde x2 = { 〈x, y〉 ∈ Z2 y = x2 } ✘

• R = { 〈x, y〉 y = sen x } ✘

• Em que condições a dual de uma função inclusão é função?

Page 70: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total

5.3.1 Definição e Introdução5.3.2 Função Dual5.3.3 Composição de Funções

5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 71: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.3.4 Composição de Funções

◆ Composição de funções parciais é função parcial

• já foi visto

◆ Composição de funções é função?

• basta provar que a composições de relações totais é total

Teorema: Composição de Totais é TotalR: A → B e S: B → C relações totais

Então S o R: A → C é total

Page 72: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Prova: Composição de Totais é TotalSuponha R: A → B e S: B → C relações totais

Então S o R: A → C é relação

Basta provar que composição de totais é total

(∀a ∈ A)(∃c ∈ C)(a (S o R) c)

De fato, suponha a ∈ A. Então:

• a ∈ A ⇒ R é total• (∃b ∈ B)(a R b) ⇒ S é total• (∃b ∈ B)(∃c ∈ C)(a R b ∧ b S c) ⇒ definição de composição• (∃c ∈ C)(a (S o R) c)

Logo, S o R: A → C é uma relação total

Page 73: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Composição de Funçõesf: A → B, g: B → C e g o f: A → C

• f = { 〈a, 1〉, 〈b, 2〉, 〈c, 5〉, 〈d, 5〉 }• g = { 〈1, x〉, 〈2, y〉, 〈3, y〉, 〈4, y〉, 〈5, z〉 }• g o f = { 〈a, x〉, 〈b, y〉, 〈c, z〉, 〈d, z〉 }

12345

xy z

a b cd

f g

g • f

A B C

xyz

abcd

g • fA C

Page 74: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Por dualidade do Teorema da Composição de Totais

• composição de relações sobrejetoras é relação sobrejetora

• exercício: prova do corolário, “dualizando” a prova do teorema

Corolário: Composição de Sobrejetoras é SobrejetoraR: A → B e S: B → C relações sobrejetoras

Então S o R: A → C é sobrejetora

Page 75: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções

5.4.1 Relação como Função5.4.2 Multiconjunto5.4.3 Seqüência5.4.3 Conjunto Indexado

5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 76: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.4 Construções Matemáticas comoFunções

◆ Funções são freqüentemente usadas para

• definir outras construções matemáticas

• exemplos∗ seqüência∗ multiconjunto∗ conjunto indexado∗ relação

Page 77: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções

5.4.1 Relação como Função5.4.2 Multiconjunto5.4.3 Seqüência5.4.3 Conjunto Indexado

5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 78: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.4.1 Relação como Função

◆ Relação R: A → B

R ⊆ A × B

◆ Como todo subconjunto define uma função inclusão

• Qq relação pode ser vista como

incR,A×B: R A × B

• definição alternativa para relação

• na Matemática e na Computação e Informática∗ usual definições alternativas equivalentes∗ para uma mesma construção

Page 79: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções

5.4.1 Relação como Função5.4.2 Multiconjunto5.4.3 Seqüência5.4.3 Conjunto Indexado

5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 80: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.4.2 Multiconjunto

◆ Informalmente, um conjunto é

uma coleção, sem repetições e sem qualquer ordenação, deobjetos denominados elementos

◆ Formalmente

uma coleção de zero ou mais objetos distintos, chamadoselementos do conjunto os quais não possuem qualquer ordem

associada

◆ Característica fundamental

• elementos distintos, não podem ser repetidos

Page 81: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Pela definição de igualdade de conjuntos

{ 1, 2, 3 } = { 3, 3, 3, 2, 2, 1 }

◆ Multiconjuntos

• em alguns momentos é necessário tratar conjuntos com repetições• exemplo

∗ união disjunta∗ grafos

◆ Na união disjunta, foi apresentada uma solução

• garante uma identidade única de cada elemento• noção de “sobre-nome”• vantagem: reversabilidade da operação• multiconjunto: solução alternativa (não permite a reversabilidade)

Page 82: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Grafo

• toda endorrelação pode ser vista como um grafo• nem todo grafo é uma relação

∗ um motivo: grafos podem possuir arcos paralelos

A B

• quais arcos são paralelos?

Page 83: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: MulticonjuntoX conjunto.

Multiconjunto A de objetos de X é uma função

A: X → N

◆ Notação

• como um conjunto, explicitando as repetições

• destacando que trata-se de um multiconjunto

Page 84: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Multiconjunto

{ 1, 2, 3 } ≠ { 3, 3, 3, 2, 2, 1 }

123

N0123...

123

N0123...

Qual a interpretação quando o número de repetições é zero?

Page 85: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Grafo com Arcos Paralelos

A B

G = { 〈A, B〉, 〈A, B〉, 〈B, B〉, 〈B, B〉, 〈B, B〉 }É uma relação?

Qual a função que define o multiconjunto?

Page 86: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções

5.4.1 Relação como Função5.4.2 Multiconjunto5.4.3 Seqüência5.4.3 Conjunto Indexado

5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 87: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.4.3 Seqüência

◆ Seqüência

• termo sendo usado intuitivamente

◆ Quando da definição de produto cartesiano

• noção mais formal de seqüência (finita) ou de n-upla ordenada

uma seqüência de n componentes, denominada de n-uplaordenada consiste de n objetos (não necessariamente distintos)

em uma ordem fixa

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

Page 88: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Seqüência Infinita, Seqüência FinitaX conjunto

Seqüência Infinita de X é uma função

x: N - { 0 } → X

Seqüência Finita ou n-Upla Ordenada com n componentes de objetosde X é uma função

x: { 1, 2, 3,…,n } → X

Page 89: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Palavra como FunçãoΣ = { a, b, c,…,z } alfabeto

Palavra casa como função (não-injetora)

casa: { 1, 2, 3, 4 } → Σ

Σ1234

a

bc

d

...

s z

e

• casa = { 〈1, c〉, 〈2, a〉, 〈3, s〉, 〈4, a〉 }

Page 90: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções

5.4.1 Relação como Função5.4.2 Multiconjunto5.4.3 Seqüência5.4.3 Conjunto Indexado

5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 91: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.4.4 Conjunto Indexado

uma variável do tipo arranjo é uma seqüência finita de variáveis,todas do mesmo tipo

Exemplo

dados = array[1..10] of char

Correspondente função

dados: { 1, 2, 3,…,10 } → X

• X é um conjunto de variáveis do tipo char• função dados é

∗ Injetora?∗ Sobrejetora?

Page 92: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

dados: { 1, 2, 3,…,10 } → X

Injetora: Cada componente de um arranjo é distinta

dados: { 1, 2, 3,…,10 } X

• no exemplo∗ dados(1) e dados(8) são variáveis do tipo char distintas∗ correspondem às componentes dados[1] e dados[8]

Sobrejetora. Cada componente do arranjo é indexável por algum índice

dados: { 1, 2, 3,…,10 } X

Logo, a função é bijetora

dados: { 1, 2, 3,…,10 } ↔ X

Generalização do raciocínio, define conjunto indexado

Page 93: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Def: Conjunto IndexadoI e X conjuntos. Então, para uma função bijetora

f: I ↔ X

X é um Conjunto Indexado pelo conjunto I

◆ Portanto

• qualquer função bijetora define um conjunto indexado

◆ Para f: I ↔ X

• I - conjunto de índices• x ∈ X é genericamente denotado usando o seu índice i ∈ I

f(i) é denotado por xi

Page 94: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 95: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.5 Função de Hashing

◆ Armazenamento e recuperação informações

• Eficiente: espaço de armazenamento e tempo de recuperação

◆ Armazenamento e recuperação pode ser em

• tabela: variável do tipo arranjo• arquivo de acesso direto: arquivo

∗ cada entrada/registro acessável diretamente

• suponha que se trata de tabela

Page 96: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Solução simples e eficiente

• chave de identificação (exemplo, número de matrícula de alunos)∗ índice da tabela

• se os valores para chave >> número provável de entradas?∗ exemplo: cadastro de clientes de loja sendo CIC a chave∗ espaço de armazenamento excessivamente grande e esparço

◆ Para uma tabela com poucas entradas

• usando uma chave relativamente grande• como endereçar a correspondente entrada na tabela ??

f: Chaves → { 1, 2, 3,…,n }

Page 97: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Função para obter o endereço de instalação

• função de cálculo de endereço• função de aleatorização• função de randomização• função de hashing

◆ Função ideal

• Injetora (por quê?)

◆ No entanto, é difícil conseguir um monomorfismo

• funções de hashing geralmente geram colisões∗ mesmo endereço a chaves diferentes

c1 ≠ c2 ∧ f(c1) = f(c2) colisão

Page 98: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função de HashingChave: entre 0 e 1000Tabela: entradas indexadas de 1 a 23Função de hashing relativamente simples e razoavelmente eficiente

f: { 0, 1,…,1000 } → { 1, 2,…,23 }

f(c) = (c mod 23) + 1

Exemplo de cálculos e colisões:

Chave 452 623 766 564 825 387 237 360 134 285

Endereço 16 3 8 13 21 20 8 16 20 10

Page 99: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Como objetr uma função de hashing injetora?

• métodos de tratamento de colisões• política para a escolha de uma entrada disponível• estudo das Estruturas de Dados

Page 100: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

Page 101: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.6 Funções nas Linguagens deProgramação

◆ Maioria das linguagens de programação

• manipula construções similares ou baseadas nas funçõesmatemáticas

• Pascal: declaração function∗ introduzida via exemplos∗ permite implementar algumas funções matemáticas∗ algumas diferenças: proxima secção

Page 102: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função em Pascal: Hashing

f(c) = (c mod 23) + 1Declaração de dois tipos intervalos

type interv_0_1000 = 0..1000interv_1_23 = 1..23

Declaração da função hashing f: { 0,1,…,1000 } → { 1,2,…,23 }

function hash(c: interv_0_1000): interv_1_23;beginhash := (c mod 23) + 1end

Page 103: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

function hash(c: interv_0_1000): interv_1_23;

• domínio da função∗ c do tipo interv_0_1000∗ parâmetro formal

• contra-domínio da função∗ hash, do tipo interv_1_23∗ contem valor resultante do cálculo da chamada da função

if hash(766) = hash(237) then …

• exemplo de chamada da função∗ valores 766 e 237: parâmetros atuais∗ comando após a palavra then é executado?

Page 104: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

Exp: Função em Pascal: EXOROu-Exclusivo denominado de EXOR (do inglês, exclusive or)

• usual em Computação e Informática

p q p EXOR q

V V F

V F V

F V V

F F F

Page 105: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

EXOR pode ser reescrito, usando os conetivos usuais

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

Função em Pascal que implementa o conetivo EXOR

function exor(p, q: boolean): boolean;beginexor := (p and not q) or (not p and q)end

Page 106: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Um problema das funções em Pascal

• não permitem contra-domínio resultante de produto cartesiano

• exemplo: equação polinomial do segundo grau

a x2 + b x + c = 0

• fórmula de Baskara: duas raízes∗ função do tipo

baskara: R3 → R2

◆ Solução mais adequada

linguagem de programação funcional

Page 107: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

5.7.1 Haskell5.7.2 Leitura Complementar

Page 108: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.7 Linguagem de ProgramaçãoFuncional

◆ Programação funcional

• estilo de programação baseada em∗ funções∗ composição de funções (constituindo um programa)

◆ Programa: expressão funcional

• é avaliada• em vez de comandos que são executados

◆ Linguagem de programação funcional

• linguagem que suporta e encoraja este estilo programação

Page 109: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Linguagem de programação funcional “pura”

• não possui variáveis, nem atribuições.

◆ Linguagem de programação funcional é composta por

• tipos primitivos de dados

• constantes de cada tipo primitivo

• operações: funções sobre os tipos primitivos

• construtores que permitem definir novos tipos e operações

Page 110: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

5.7.1 Haskell5.7.2 Leitura Complementar

Page 111: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5.7.1 Haskell

◆ Haskell

• linguagem de programação funcional pura

• usa o conceito matemático de função∗ mesmo valores do domínio (parâmetros atuais)∗ resultam nos mesmos valores do codomínio (mesmas saídas)

• portanto∗ resultado da aplicação de uma função∗ independente de qualquer estado implícito do sistema.

Page 112: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Exemplo em Haskell

x = 1

• função constante: sempre retorna o valor 1

f x = x + 1

• função f: para o parâmetro x, retorna o valor x + 1

◆ Contra-exemplo em Pascal (x variável integer)

function contador: integer;beginx := x + 1;contador := xend

Page 113: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Exemplo em Haskell: a x2 + b x + c = 0

baskara a b c =let delta = b*b - 4*a*cin ( (-b + sqrt(delta))/(2*a),

(-b - sqrt(delta))/(2*a) )

• para a, b e c, retorna o par ordenado correspondendo as raízes

• let é usada para declarar delta∗ acessível apenas no escopo da função baskara

Page 114: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

◆ Redução (avaliação) para os valores 1, -5 e 6

baskara 1 -5 6

let delta = (-5)*(-5) - 4*1*6in ( (5 + sqrt(delta))/(2*1),

(5 - sqrt(delta))/(2*1) )

let delta = 1in ( (5 + sqrt(delta))/2,

(5 - sqrt(delta))/2 )

( (5 + 1)/2,(5 - 1)/2 )

( 3, 2 )

Page 115: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

5 – Funções Parciais e Totais5.1 Função Parcial5.2 Autômato Finito5.3 Função Total5.4 Construções Matemáticas como Funções5.5 Função de Hashing5.6 Funções nas Linguagens de Programação5.7 Linguagem de Programação Funcional

5.7.1 Haskell5.7.2 Leitura Complementar

Page 116: Matemática Discreta para Ciência da Computação · PDF fileMatemática Discreta para Ciência da Computação - P. Blauth Menezes 1 Matemática Discreta para ... ∗ Semântica

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

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

P. Blauth Menezes

[email protected]

Departamento de Informática Teórica

Instituto de Informática / UFRGS