Buscar

Funções

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 92 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 92 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 92 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aspectos Teóricos da Computação I
05 - Funções
Leonardo Jose Silvestre1
1Departamento de Computação e Eletrônica (DCEL)
Centro Universitário do Norte do Espírito Santo (CEUNES)
Universidade Federal do Espírito Santo(UFES)
Aspectos Teóricos da Computação I, 2014/2
DCEL (UFES) 05 - Funções ATCI 1 / 90
Funções Parciais e Totais
Função Parcial
Simplesmente relação funcional
Função Total ou Função
Relação funcional total
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)
DCEL (UFES) 05 - Funções ATCI 2 / 90
Funções Parciais e Totais
Função Parcial
Simplesmente relação funcional
Função Total ou Função
Relação funcional total
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)
DCEL (UFES) 05 - Funções ATCI 2 / 90
Funções Parciais e Totais
DCEL (UFES) 05 - Funções ATCI 3 / 90
Estudo das funções
Destacado do estudo das relações
Importante para a Matemática e Computação
Maioria das abordagens matemáticas é centrada no conceito de
função total
Em Computação, função parcial é tão ou mais importante que
função
Computablidade:
Noção mais fundamental em CC
Baseada em funções parciais
DCEL (UFES) 05 - Funções ATCI 4 / 90
Função Parcial
Definição
Funçã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, um elemento do
contra-domínio
Notação
Função parcial f ⊆ A× B
f : A 9 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
DCEL (UFES) 05 - Funções ATCI 5 / 90
Termos alternativos para função parcial
Operação parcial
Mapeamento parcial
Transformação parcial
DCEL (UFES) 05 - Funções ATCI 6 / 90
Relações Funcionais - Exemplos
A = {a}, B = {a,b} e C = {0,1,2}
∅ : A→ B X
{〈0,a〉, 〈1,b〉} : C → B X
=: A→ B X
x2 : Z→ Z onde x2 = {〈x , y〉 ∈ Z2|y = x2} X
A× B : A→ B ×
<: C → C ×
DCEL (UFES) 05 - Funções ATCI 7 / 90
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
Função Parcial - Exemplo
⇒ Adiçã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?
DCEL (UFES) 05 - Funções ATCI 8 / 90
Função Parcial Dual
Relação dual de uma função parcial não necessariamente é uma
função parcial (por quê?)
Relação Dual de Função Parcial - Exemplo
A = {0,1,2} e endofunção parcial f : A→ A tal que f = 〈0,2〉, 〈1,2〉
f op = 〈2,0〉, 〈2,1〉
f op é uma relação não funcional
DCEL (UFES) 05 - Funções ATCI 9 / 90
Função Parcial Dual
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.
DCEL (UFES) 05 - Funções ATCI 10 / 90
Relação Dual de Função Parcial - Exemplo
A = {a}, B = {a,b} e C = {0,1,2}. Duais são funções parciais?
∅ : A→ B X
=: A→ B X
{〈0,a〉, 〈1,b〉} : C → B X
x2 : Z→ Z onde x2 = {〈x , y〉 ∈ Z2 | y = x2} ×
DCEL (UFES) 05 - Funções ATCI 11 / 90
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 é Funcional
R : A→ B e S : B → C relações funcionais
Então S ◦ R : A→ C é uma relação funcional
DCEL (UFES) 05 - Funções ATCI 12 / 90
Composição de Funcionais é Funcional - Prova
Suponha R : A→ B e S : B → C relações funcionais.
Então S ◦ R : A→ C é relação e basta provar que
(∀a ∈ A)(∀c1 ∈ C)(∀c2 ∈ C)(a(S ◦ R)c1 ∧ a(S ◦ R)c2 → c1 = c2)
Suponha a ∈ A, c1 ∈ C e c2 ∈ C tais que a (S ◦ R)c1 ∧ a(S ◦ R)c2
a (S ◦ R) c1 ∧ a (S ◦ R) c2 ⇒ (definição de composição)
(∃b1 ∈ B)(∃b2 ∈ B)(aRb1 ∧ a R b2 ∧ b1 S c1 ∧ b2 S c2)⇒ (R é funcional)
b1 = b2 ∧ b1 S c1 ∧ b2 S c2 ⇒ (S é funcional)
c1 = c2
Então (prova direta)
Logo, S ◦ R : A→ C é relação funcional
DCEL (UFES) 05 - Funções ATCI 13 / 90
Composição de Funções Parciais - Exemplo
f = {〈a,1〉, 〈c,5〉, 〈d ,5〉}
g = {〈1, x〉, 〈2, y〉, 〈4, y〉, 〈5, z〉}
g ◦ f = {〈a, x〉, 〈c, z〉, 〈d , z〉}
DCEL (UFES) 05 - Funções ATCI 14 / 90
Dualidade e Prova de Teoremas - Observação
Fato 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
Noção de dualidade divide o trabalho pela metade, incluindo
definições e provas
DCEL (UFES) 05 - Funções ATCI 15 / 90
Dualidade
Por dualidade, composição de relações injetoras é uma relação
injetora
Composição de Injetoras é Injetora - Teorema
R : A→ B e S : B → C relações injetoras
Então S ◦ R : A→ C é uma relação injetora
Prova
Exercício: dualizar prova anterior
DCEL (UFES) 05 - Funções ATCI 16 / 90
Restrição
Para uma função parcial
Pode-se definir uma 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
DCEL (UFES) 05 - Funções ATCI 17 / 90
Restrição do Domínio de uma Função Parcial
Definição
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)
DCEL (UFES) 05 - Funções ATCI 18 / 90
Restrição do Domínio de uma Função Parcial
Exemplo
A = {1,2,3,4,5}, B = {x , y , z} e a função parcial f : A→ B
Para A0 = {3,4,5}, a função parcial f \ A0 : A0 → B
DCEL (UFES) 05 - Funções ATCI 19 / 90
Restrição do Domínio de uma Função Parcial - Exemplo
A = {a}, B = {a,b} e C = {0,1,2}
∅ : A→ B ∅ \ A = ∅ : A→ B
R = {〈0, a〉, 〈1, b〉} : C → B R \ {0} = {〈0, a〉} : {0} → B
idB = {〈a, a〉, 〈b, b〉} : B → B idB \ A = {〈a, a〉} : A→ B
x2 = {〈x , y〉 ∈ Z2 | y = x2} : Z→ Z x2 \ N = {〈x , y〉 ∈ N× Z | y = x2}: N→ Z
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
DCEL (UFES) 05 - Funções ATCI 20 / 90
Autômato Finito
Autômato Finito
Sistema de estados finitos
Modelo computacional do tipo sequencial 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
DCEL (UFES) 05 - Funções ATCI 21 / 90
Autômato Finito
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
DCEL (UFES) 05 - Funções ATCI 22 / 90
Autômato Finito
Autômato Finito: Modelo e Exemplo
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 umacélula para a direita
DCEL (UFES) 05 - Funções ATCI 23 / 90
Autômato Finito
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
DCEL (UFES) 05 - Funções ATCI 24 / 90
Autômato Finito
Autômato: aa ou bb como subpalavra
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
DCEL (UFES) 05 - Funções ATCI 25 / 90
Autômato Finito
Autômato: aa ou bb como subpalavra
Linguagens Formais: o autômato pára (normalmente):
quando processar toda a entrada
aceita a entrada se parar em um estado final
DCEL (UFES) 05 - Funções ATCI 26 / 90
Autômato Finito
Autômato Finito como Função Parcial
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〉
DCEL (UFES) 05 - Funções ATCI 27 / 90
Autômato Finito
Autômato Finito como Função Parcial
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
DCEL (UFES) 05 - Funções ATCI 28 / 90
Autômato Finito
Autômato Finito como Função Parcial
Todos os pares que definem a função programa
Total? Injetora? Sobrejetora?
〈〈q0,a〉,q1〉 〈〈q1,a〉,qf 〉 〈〈q2,a〉,q1〉 〈〈qf ,a〉,qf 〉
〈〈q0,b〉,q2〉 〈〈q1,b〉,q2〉 〈〈q2,b〉,qf 〉 〈〈qf ,b〉,qf 〉
DCEL (UFES) 05 - Funções ATCI 29 / 90
Autômato Finito
Autômato Finito como Interface Homem × Máquina - Exemplo
δ : Q × Σ→ Q
Total? Injetora? Sobrejetora?
Q = {q0,q1,q2,q3,q4}
Σ = { moeda, tecla_doce, tecla_cigarro, tecla_refri, libera_doce,
libera_cigarro, libera_refri }
DCEL (UFES) 05 - Funções ATCI 30 / 90
Autômato Finito
Autômato Finito como Interface Homem × Máquina - Exemplo
DCEL (UFES) 05 - Funções ATCI 31 / 90
Autômato Finito
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 de Orientação a Objetos
DCEL (UFES) 05 - Funções ATCI 32 / 90
Autômato Finito
Restrição de Autômato Finito × Reuso de Software - Exemplo
Desejada uma nova máquina, sem as funções relacionadas com
cigarros
δ \Q × Σ0 : Q × Σ0 → Q
Σ0 = { moeda, tecla_doce, tecla_refri, libera_doce, libera_refri }
DCEL (UFES) 05 - Funções ATCI 33 / 90
Autômato Finito
Obs.: Manutenção de Software
Restriçã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:
Frequentemente é maior que o de desenvolvimento
Baixa confiabilidade de um software alterado (pelo programador)
Portanto, ferramentas automáticas de manutenção/reuso de
software são de fundamental importância
DCEL (UFES) 05 - Funções ATCI 34 / 90
Autômato Finito
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
DCEL (UFES) 05 - Funções ATCI 35 / 90
Autômato Finito
Leitura Complementar
Complexidade de algoritmos
Classe de algoritmos mais eficientes (tempo de processamento)
Qualquer autômato que solucione é igualmente eficiente
Qualquer solução é ótima
Implementação computacional de autômatos finitos: trivial
DCEL (UFES) 05 - Funções ATCI 36 / 90
Função Total
Função Total
Função (total)
Função parcial a qual é total
Herda conceitos e terminologias das relações e funções parciais
Definição: Função, Aplicação
Aplicação, Função Total ou simplesmente Função
Função parcial f : A→ B, a qual é total
Portanto, uma função (total) é uma função parcial definida para todos
os elementos do domínio
DCEL (UFES) 05 - Funções ATCI 37 / 90
Função Total
Função - Exemplos
A = {a}, B = {a,b} e C = {0,1,2}
=: A→ B X
idB : B → B X
x2 : Z→ Z onde x2 = {〈x , y〉 ∈ Z2 | y = x2} X
ad : N× N→ N tal que ad(a,b) = a + b X
∅ : ∅→ ∅ X
∅ : 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?
DCEL (UFES) 05 - Funções ATCI 38 / 90
Função Total
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
DCEL (UFES) 05 - Funções ATCI 39 / 90
Função Total
Função Injetora, Sobrejetora e Bijetora - Exemplos
A = {a}, B = {a,b} e 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} não-monomorfismo, não-epimorfismo
DCEL (UFES) 05 - Funções ATCI 40 / 90
Função Total
Exemplos Importantes 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: qualquer valor do domínio resulta no mesmo valor
do contra-domínio
DCEL (UFES) 05 - Funções ATCI 41 / 90
Função Total
Função Constante - Definição
A e B conjuntos. Função constante em b ∈ B
constb : A→ B
para todo a ∈ A, constb(a) = b
Função Constante - Exemplos
A = {a} e Σ = {a,b} um alfabeto
const5 : R→ R const5 = {〈x ,5〉 ∈ R2}
palavra_vazia : Σ∗ → Σ∗ palavra_vazia = {〈w , ε〉 ∈ Σ∗ × Σ∗}
idA : A→ A
∅ : ∅→ ∅
DCEL (UFES) 05 - Funções ATCI 42 / 90
Função Total
Função Concatenação
Especialmente importante para Computação
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
DCEL (UFES) 05 - Funções ATCI 43 / 90
Função Total
Função Concatenação - Definição
Σ = a,b um alfabeto
conc : Σ∗ × Σ∗ → Σ∗
para todo 〈u, v〉 ∈ Σ∗ × Σ∗, conc〈u, v〉 = uv
Concatenação - Exemplo
Σ = a,b
concatenação das palavras aba e bbb de Σ∗ resulta em
ababbb
palavra de Σ∗.
DCEL (UFES) 05 - Funções ATCI 44 / 90
Função Total
Importantes funções induzidas por relações ou operaçõ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
DCEL (UFES) 05 - Funções ATCI 45 / 90
Função Total
Função Inclusão - Definição
A 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ê?)
DCEL (UFES) 05 - Funções ATCI 46 / 90
Função Total
Função Inclusão × Continência
Vogais = { a, e, i, o, u } e Letras = { a, b, c,. . .,z }
Claramente, Vogais ⊆ Letras
incVogais,Letras : Vogais ↪→ Letras
DCEL (UFES) 05 - Funções ATCI 47 / 90
Função Total
Função Inclusão× Continência
As 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ção
inclusão?
Já foi visto: reversabilidade do produto cartesiano: como pode ser
obtida?
DCEL (UFES) 05 - Funções ATCI 48 / 90
Função Total
Função Projeção - Definição
A e B conjuntos não-vazios e A× B o produto cartesiano
pi1 : A× B → A e pi2 : A× B → B
para todo 〈a,b〉 ∈ A× B
pi1〈a,b〉 = a e pi2〈a,b〉 = b
Recuperação dos operandos originais
A = {pi1〈a,b〉|〈a,b〉 ∈ A× B} primeiro operando
B = {pi2〈a,b〉|〈a,b〉 ∈ A× B} segundo operando
DCEL (UFES) 05 - Funções ATCI 49 / 90
Função Total
Função Projeção - Exemplo
A = {a,b} e B = {x , y} conjuntos e A× B o produto cartesiano
Funções projeção pi1 : A× B → A e pi2 : A× B → B
Toda função projeção é sobrejetora (por quê?)
DCEL (UFES) 05 - Funções ATCI 50 / 90
Função Total
Função Imersão - Definição
A 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〉
DCEL (UFES) 05 - Funções ATCI 51 / 90
Função Total
Função Imersão - Definição
A = {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
Toda função imersão é injetora (por quê?).
DCEL (UFES) 05 - Funções ATCI 52 / 90
Função Total
Função Dual
Relação dual de uma função
Não necessariamente é uma função (por quê?)
Relação Dual de Função - Exemplo
f : {0,1,2} → {0,1} tal que f = {〈0,0〉, 〈1,1〉, 〈2,0〉}
f op = {〈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?
DCEL (UFES) 05 - Funções ATCI 53 / 90
Função Total
Função Dual
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
DCEL (UFES) 05 - Funções ATCI 54 / 90
Função Total
Relação Dual de Função - Exemplos
A = {a}, B = {a,b} e C = {0,1,2}. Duais são funções?
idB : B → B X
∅ : ∅→ ∅ X
{〈0,1〉, 〈1,2〉, 〈2,0〉} : C → C X
=: 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} ×
DCEL (UFES) 05 - Funções ATCI 55 / 90
Função Total
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 é Total
R : A→ B e S : B → C relações totais
Então S ◦ R : A→ C é total
DCEL (UFES) 05 - Funções ATCI 56 / 90
Função Total
Composição de Totais é Total - Prova
Suponha R : A→ B e S : B → C relações totais
Então S ◦ R : A→ C é relação
Basta provar que composição de totais é total
(∀a ∈ A)(∃c ∈ C)(a(S ◦ R)c)
De fato, suponha a ∈ A. Então:
a ∈ A⇒ R é total
(∃b ∈ B)(aRb)⇒ S é total
(∃b ∈ B)(∃c ∈ C)(aRb ∧ bSc)⇒ definição de composição
(∃c ∈ C)(a(S ◦ R)c)
Logo, S ◦ R : A→ C é uma relação total
DCEL (UFES) 05 - Funções ATCI 57 / 90
Função Total
Composição de Funções- Exemplo
f : A→ B, g : B → C e g ◦ f : A→ C
f = {〈a,1〉, 〈b,2〉, 〈c,5〉, 〈d ,5〉}
g = {〈1, x〉, 〈2, y〉, 〈3, y〉, 〈4, y〉, 〈5, z〉}
g ◦ f = {〈a, x〉, 〈b, y〉, 〈c, z〉, 〈d , z〉}
DCEL (UFES) 05 - Funções ATCI 58 / 90
Função Total
Por dualidade do Teorema da Composição de Totais
Composição de relações sobrejetoras é relação sobrejetora
Exercício: provar, “dualizando” a prova do teorema
Corolário: Composição de Sobrejetoras é Sobrejetora
R : A→ B e S : B → C relações sobrejetoras
Então S ◦ R : A→ C é sobrejetora
DCEL (UFES) 05 - Funções ATCI 59 / 90
Construções Matemáticas como Funções
Construções Matemáticas como Funções
Funções são frequentemente usadas para definir outras
construções matemáticas
Exemplos
Sequência
Multiconjunto
Conjunto indexado
Relação
DCEL (UFES) 05 - Funções ATCI 60 / 90
Construções Matemáticas como Funções
Relação como Função
Relação R : A→ B
R ⊆ A× B
Como todo subconjunto define uma função inclusão, qualquer 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
Usual definições alternativas equivalentes para uma mesma
construção
DCEL (UFES) 05 - Funções ATCI 61 / 90
Construções Matemáticas como Funções
Multiconjunto
Informalmente, um conjunto é
uma coleção, sem repetições e sem qualquer ordenação, de
objetos denominados elementos
Formalmente
uma coleção de zero ou mais objetos distintos, chamados
elementos do conjunto os quais não possuem qualquer
ordem associada
Característica fundamental
elementos distintos, não podem ser repetidos
DCEL (UFES) 05 - Funções ATCI 62 / 90
Construções Matemáticas como Funções
Multiconjuntos
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)
DCEL (UFES) 05 - Funções ATCI 63 / 90
Construções Matemáticas como Funções
Grafo
Toda endorrelação pode ser vista como um grafo
Nem todo grafo é uma relação
Um motivo: grafos podem possuir arcos paralelos
Quais arcos são paralelos?
DCEL (UFES) 05 - Funções ATCI 64 / 90
Construções Matemáticas como Funções
Multiconjunto - Definição
X 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
DCEL (UFES) 05 - Funções ATCI 65 / 90
Construções Matemáticas como Funções
Multiconjunto - Exemplo
{1,2,3} 6= {3,3,3,2,2,1}
DCEL (UFES) 05 - Funções ATCI 66 / 90
Construções Matemáticas como Funções
Grafo com Arcos Paralelos - Exemplo
G = {〈A,B〉, 〈A,B〉, 〈B,B〉, 〈B,B〉, 〈B,B〉}
DCEL (UFES) 05 - Funções ATCI 67 / 90
Construções Matemáticas como Funções
Sequência
Termo sendo usado intuitivamente
Quando da definição de produto cartesiano
Noção mais formal de sequência (finita) ou de n-upla ordenada
Sequência de n componentes, denominada de n-upla
ordenada consiste de n objetos (não necessariamente
distintos) em uma ordem fixa
〈x1, x2, x3, . . . , xn〉 6= {x1, x2, x3, . . . , xn}
DCEL (UFES) 05 - Funções ATCI 68 / 90
Construções Matemáticas como Funções
Sequência Infinita, Sequência Finita - Definição
X conjunto
Sequência Infinita de X é uma função
x : N− {0} → X
Sequência Finita ou n-upla Ordenada com n componentes de objetos
de X é uma função
x : {1,2,3, . . . ,n} → X
DCEL (UFES) 05 - Funções ATCI 69 / 90
Construções Matemáticas como Funções
Palavra como Função - Exemplo
Σ = {a,b, c, . . . , z} alfabeto
Palavra casa como função (não-injetora)
casa : {1,2,3,4} → Σ
casa = {〈1, c〉, 〈2,a〉, 〈3, s〉, 〈4,a〉}
DCEL (UFES) 05 - Funções ATCI 70 / 90
Construções Matemáticas como Funções
Conjunto Indexado
uma variável do tipo arranjo é uma sequência finita de
variáveis, todas do mesmo tipo
Exemplo:
dados = array[1..10] of char
Corresponde à função:
dados : {1,2,3, . . . ,10} → X
X é um conjunto de variáveis do tipo char
Função dados é
Injetora?
Sobrejetora?
DCEL (UFES) 05 - Funções ATCI 71 / 90
Construções Matemáticas como Funções
Conjunto Indexado
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
DCEL (UFES) 05 - Funções ATCI 72 / 90
Construções Matemáticas como Funções
Conjunto Indexado - Definição
I 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
DCEL (UFES) 05 - Funções ATCI 73 / 90
Função de Hashing
Função de Hashing
Armazenamento e recuperação de 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
DCEL (UFES) 05 - Funções ATCI 74 / 90
Função de Hashing
Função de Hashing
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 CPF a chave
espaço de armazenamento excessivamente grande e esparso
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}
DCEL (UFES) 05 - Funções ATCI 75 / 90
Função de Hashing
Função de Hashing
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 6= c2 ∧ f (c1) = f (c2) colisão
DCEL (UFES) 05 - Funções ATCI 76 / 90
Função de Hashing
Função de Hashing - Exemplo
Chave: entre 0 e 1000
Tabela: entradas indexadas de 1 a 23
Funçã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:
DCEL (UFES) 05 - Funções ATCI 77 / 90
Função de Hashing
Função de Hashing
Como obter 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
DCEL (UFES) 05 - Funções ATCI 78 / 90
Funções nas Linguagens de Programação
Funções nas Linguagens de Programação
Maioria das linguagens de programação manipula construções
similares ou baseadas nas funções matemáticas
Pascal: declaração function
Introduzida via exemplos
Permite implementar algumas funções matemáticas
DCEL (UFES) 05 - Funções ATCI 79 / 90
Funções nas Linguagens de Programação
Função em Pascal: Hashing - Exemplo
f (c) = (c mod 23) + 1
Declaração de dois tipos intervalos:
1 type in terv_0_1000 = 0. .1000
2 in terv_1_23 = 1 . .23
Declaração da função hashing f : {0,1, . . . ,1000} → {1,2, . . . ,23}
1 function hash ( c : interv_0_1000 ) : in terv_1_23 ;
2 begin
3 hash := ( c mod 23) + 1
4 end
DCEL (UFES) 05 - Funções ATCI 80 / 90
Funções nas Linguagens de Programação
Função em Pascal: Hashing - Exemplo
1 function hash ( c : interv_0_1000 ) : in terv_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
Contém valor resultante do cálculo da chamada da função
1 i f 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?
DCEL (UFES) 05 - Funções ATCI 81 / 90
Funções nas Linguagens de Programação
Função em Pascal: EXOR (⊕) - Exemplo
Ou-Exclusivo denominado de EXOR (do inglês, exclusive or) - ⊕ usual
em Computação
p q p ⊕ q
V V F
V F V
F V V
F F F
DCEL (UFES) 05 - Funções ATCI 82 / 90
Funções nas Linguagens de Programação
Função em Pascal: EXOR (⊕) - Exemplo
EXOR pode ser reescrito, usando os conectivos usuais
p ⊕ q ⇔ (p ∧ ¬q) ∨ (¬p ∧ q)
Função em Pascal que implementa o conectivo ⊕
1 function exor ( p , q : boolean ) : boolean ;
2 begin
3 exor := ( p and not q ) or ( not p and q )
4 end
DCEL (UFES) 05 - Funções ATCI 83 / 90
Funções nas Linguagens de Programação
Função em Pascal: ⊕ - Exemplo
Um problema das funções em Pascal:
não permitem contra-domínio resultante de produto
cartesiano
Exemplo: equação polinomial do segundo grau
ax2 + bx + 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
DCEL (UFES) 05 - Funções ATCI 84 / 90
Funções nas Linguagens de Programação
Função em Pascal: ⊕ - Exemplo
Um problema das funções em Pascal:
não permitem contra-domínio resultante de produto
cartesiano
Exemplo: equação polinomial do segundo grau
ax2 + bx + 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
DCEL (UFES) 05 - Funções ATCI 84 / 90
Linguagem de Programação Funcional
Linguagem de Programação Funcional
Programação Funcional
Estilo de programação baseado 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
DCEL (UFES) 05 - Funções ATCI 85 / 90
Linguagem de Programação Funcional
Linguagem de Programação Funcional
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
DCEL (UFES) 05 - Funções ATCI 86 / 90
Linguagem de Programação Funcional
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
DCEL (UFES) 05 - Funções ATCI 87 / 90
Linguagem de Programação Funcional
Haskell - Exemplo
1 x = 1
Função constante: sempre retorna o valor 1
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)
1 function contador : integer ;
2 begin
3 x := x + 1;
4 contador := x
5 end
DCEL (UFES) 05 - Funções ATCI 88 / 90
Linguagem de Programação Funcional
Haskell - Exemplo
Exemplo em Haskell: ax2 + bx + c = 0
1 baskara a b c =
2 l e t de l t a = b∗b − 4∗a∗c
3 in ( (−b + s q r t ( de l t a ) ) / ( 2 ∗ a ) ,
4 (−b − s q r t ( de l t a ) ) / ( 2 ∗ a ) )
Para a, b e c, retorna o par ordenado correspondendo às raízes
let é usada para declarar delta
Acessível apenas no escopo da função baskara
DCEL (UFES) 05 - Funções ATCI 89 / 90
Linguagem de Programação Funcional
Haskell - Exemplo
Redução (avaliação) para os valores 1, -5 e 6
1 baskara 1 −5 6
2
3 l e t de l t a = (−5)∗(−5) − 4∗1∗6
4 in ( (5 + s q r t ( de l t a ) ) / ( 2 ∗ 1 ) ,
5 (5 − s q r t ( de l t a ) ) / ( 2 ∗ 1 ) )
6
7 l e t de l t a = 1
8 in ( (5 + s q r t ( de l t a ) ) / 2 ,
9 (5 − s q r t ( de l t a ) ) / 2 )
10
11 ( (5 + 1 ) / 2 ,
12 (5 − 1 ) /2 )
13
14 ( 3 , 2 )
DCEL (UFES) 05 - Funções ATCI 90 / 90
	Autômato FinitoFunção Total
	Construções Matemáticas como Funções
	Função de Hashing
	Funções nas Linguagens de Programação
	Linguagem de Programação Funcional

Outros materiais