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



Documentos relacionados
Métodos Formais. Agenda. Relações Binárias Relações e Banco de Dados Operações nas Relações Resumo Relações Funções. Relações e Funções

Relações. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Relações 1

Matemática tica Discreta Módulo Extra (2)

Seqüências. George Darmiton da Cunha Cavalcanti CIn - UFPE

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

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

Lista de Exercícios 5: Soluções Teoria dos Conjuntos

é um grupo abeliano.

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

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

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

4. Álgebra Booleana e Simplificação Lógica. 4. Álgebra Booleana e Simplificação Lógica 1. Operações e Expressões Booleanas. Objetivos.

Metodologias de Programação

Conjuntos Finitos e Infinitos

INE 5323 Banco de Dados I

Bases Matemáticas. Daniel Miranda de maio de sala Bloco B página: daniel.miranda

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

Matemática - Módulo 1

Linguagens Formais e Autômatos P. Blauth Menezes

Montadores e Compiladores

Álge g bra b B ooleana n Bernardo Gonçalves

Matemática Discreta Parte 11

Matrizes e Sistemas Lineares. Professor: Juliano de Bem Francisco. Departamento de Matemática Universidade Federal de Santa Catarina.

Bases de Dados BDDAD. Álgebra Relacional. Nelson Freire (ISEP LEI-BDDAD 2015/16) 1/33

Linguagens de Programação:

Inversão de Matrizes

Linguagens Formais e Autômatos

21- EXERCÍCIOS FUNÇÕES DO SEGUNDO GRAU

ÁLGEBRA BOOLEANA- LÓGICA DIGITAL

sumário 1 introdução e conceitos básicos 1 2 noções de lógica e técnicas de demonstração introdução à matemática discreta...

Introdução à Algoritmos. Aula 11

Matemática Discreta para Computação e Informática

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

A Derivada. 1.0 Conceitos. 2.0 Técnicas de Diferenciação. 2.1 Técnicas Básicas. Derivada de f em relação a x:

Operações relacionais e Álgebra relacional

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

3º Ano do Ensino Médio. Aula nº09 Prof. Paulo Henrique

Álgebra Relacional. Linguagens de consultas relacionais

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

Apostila de Matemática 16 Polinômios

Notas de aula de Lógica para Ciência da Computação. Aula 11, 2012/2

1. Estrutura de Dados

Determinantes. Matemática Prof. Mauricio José

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Introdução a Funções

FUNÇÕES. 1.Definição e Conceitos Básicos

Algoritmos APRENDENDO A PROGRAMAR COM C#

ÁLGEBRA. Aula 1 _ Função Polinomial do 2º Grau Professor Luciano Nóbrega. Maria Auxiliadora

2. Tipos Abstratos de Dados

Roteiro da aula. MA091 Matemática básica. Conjuntos. Subconjunto. Aula 12 Conjuntos. Intervalos. Inequações. Francisco A. M. Gomes.

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Plano de Ensino. Identificação. Câmpus de Bauru. Curso Licenciatura em Matemática. Ênfase

PLANO DE ENSINO DE MATEMÁTICA 1ª SÉRIE DO ENSINO MÉDIO 1º BIMESTRE DIRETORIA DE ENSINO REGIÃO CAIEIRAS

1 Teoria de conjuntos e lógica

Programação de Computadores I. Linguagem C Função

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO

Plano de Ensino. Identificação. Câmpus de Bauru. Curso Licenciatura em Matemática. Ênfase

CÁLCULO 1 Teoria 0: Revisão Gráfico de Funções elementares Núcleo de Engenharias e Ciência da Computação. Professora: Walnice Brandão Machado

Sumário 1. PROBLEMAS DE RACIOCÍNIO INTUITIVO ESPACIAL, NUMÉRICO E VERBAL PROBLEMAS DE ARGUMENTAÇÃO LÓGICA INTUITIVA...55

Números Inteiros AULA. 3.1 Introdução

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Projecto Delfos: Escola de Matemática Para Jovens 1 TEORIA DOS NÚMEROS

Requisitos de Software

Linguagens Formais e Autômatos P. Blauth Menezes

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Exercícios de Teoria da Computação Autómatos, gramáticas e expressões regulares

Análise de Sistemas de Controle no Espaço de Estados

Exercícios de Aprofundamento Mat Polinômios e Matrizes

Exercícios de Álgebra Linear

Engenharia Econômica

Álgebra Relacional. Banco de Dados. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Resolução Numérica de Equações Parte I

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

Árvores de Derivação para GLC Ambigüidade nas GLC Precedência, Prioridade e Associatividade de operadores

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

PLANO DE ENSINO DA DISCIPLINA

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

AF Não-determinísticos Equivalência entre AFND e AFD

1.1. Definição do Problema

OBSERVAÇÕES: EXERCÍCIOS

Programação Linear - Parte 4

Linguagens e Paradigmas de Programação

Álgebra Linear AL. Luiza Amalia Pinto Cantão. Depto. de Engenharia Ambiental Universidade Estadual Paulista UNESP

Departamento de Matemática da Universidade de Coimbra Álgebra Linear e Geometria Analítica Engenharia Civil Ano lectivo 2005/2006 Folha 1.

Prova Escrita de MATEMÁTICA A - 12o Ano a Fase

Módulo IV Programação Visual Basic. Programação

ÁLGEBRA LINEAR. Transformações Lineares. Prof. Susie C. Keller

Matemática Discreta - 08

Cálculo proposicional

Francisco Magalhães Gomes IMECC UNICAMP. Matemática básica. Volume 1 Operações, equações, funções e sequências

COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:

Gramáticas Livres de Contexto

Linguagens Regulares. Prof. Daniel Oliveira

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Linguagens Formais e Autômatos P. Blauth Menezes

Grupo de Classes de Ideais em Reticulados Quadráticos

Aula 4 Função do 2º Grau

Transcrição:

Matemática Discreta para Ciência da Computação P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS 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 1 Introdução e Conceitos Básicos 2 Lógica e Técnicas de Demonstração 3 Álgebra de Conjuntos 4 Relações 5 Funções Parciais e Totais 6 Endorrelações, Ordenação e Equivalência 7 Cardinalidade de Conjuntos 8 Indução e Recursão 9 Álgebras e Homomorfismos 10 Reticulados e Álgebra Booleana 11 Conclusões Matemática Discreta para Ciência da Computação - P. Blauth Menezes 2

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 3

5 Funções Parciais e Totais Função Parcial simplesmente relação funcional Função Total ou Função relação funcional total Matemática Discreta para Ciência da Computação - P. Blauth Menezes 4

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 Relações Funções Parciais Funções Totais Matemática Discreta para Ciência da Computação - P. Blauth Menezes 5

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 6

5 Funções Parciais e Totais 5.1 Função Parcial 5.1.1 Definição e Introdução 5.1.2 Função Parcial Dual 5.1.3 Composição de Funções Parciais 5.1.3 Restrição 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.5 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 7

5.1 Função Parcial 5.1.1 Definição e Introdução Def: Função Parcial 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 8

Notação função parcial f A B f: A B ou, quando é claro que se trata de uma função parcial a, b f f: A B f(a) = b ou f a = b Termos alternativos para função parcial operação parcial mapeamento parcial transformação parcial Matemática Discreta para Ciência da Computação - P. Blauth Menezes 9

Exemplos de relações funcionais são exemplos de funções parciais Exp: Função Parcial A = { a }, B = { a, b } e C = { 0, 1, 2 } : A B { 0, a, 1, b }: C B =: A B x 2 : Z Z onde x 2 = { x, y Z 2 y = x 2 } A B: A B <: C C Grafo e matriz de uma função parcial? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 10

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 Parcial Adição nos naturais. Operação ad: N N N tal que conjunto imagem? ad a, b = a + b Divisão nos reais. Operação div: R R R tal que: conjunto imagem? div x, y = x/y Matemática Discreta para Ciência da Computação - P. Blauth Menezes 11

5 Funções Parciais e Totais 5.1 Função Parcial 5.1.1 Definição e Introdução 5.1.2 Função Parcial Dual 5.1.3 Composição de Funções Parciais 5.1.3 Restrição 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 12

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 Parcial A = { 0, 1, 2 } e endofunção parcial f: A A tq f = { 0, 2, 1, 2 } f op = { 2, 0, 2, 1 } Conceito dual de funcional? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 13

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. Matemática Discreta para Ciência da Computação - P. Blauth Menezes 14

Exp: Relação Dual de Função Parcial A = { 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 x 2 : Z Z onde x 2 = { x, y Z 2 y = x 2 } Matemática Discreta para Ciência da Computação - P. Blauth Menezes 15

5 Funções Parciais e Totais 5.1 Função Parcial 5.1.1 Definição e Introdução 5.1.2 Função Parcial Dual 5.1.3 Composição de Funções Parciais 5.1.3 Restrição 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 16

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 é Funcional R: A B e S: B C relações funcionais Então S o R: A C é uma relação funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 17

Prova: Composição de Funcionais é Funcional Suponha 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)( c 1 C)( c 2 C)(a (S o R) c 1 a (S o R) c 2 c 1 = c 2 ) Suponha a A, c 1 C e c 2 C tais que a (S o R) c 1 a (S o R) c 2 Então (prova direta) a (S o R) c 1 a (S o R) c 2 definição de composição ( b 1 B)( b 2 B)(a R b 1 a R b 2 b 1 S c 1 b 2 S c 2 ) R é func. b 1 = b 2 b 1 S c 1 b 2 S c 2 S é funcional c 1 = c 2 Logo, S o R: A C é relação funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 18

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 } g f A f B g C 1 a 2 x b 3 y c 4 z d 5 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 19

Obs: Dualidade e Prova de Teoremas 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 a noção de dualidade divide o trabalho pela metade incluindo definições e provas Matemática Discreta para Ciência da Computação - P. Blauth Menezes 20

Por dualidade composição de relações injetoras é uma relação injetora Teorema: Composição de Injetoras é Injetora R: 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 21

5 Funções Parciais e Totais 5.1 Função Parcial 5.1.1 Definição e Introdução 5.1.2 Função Parcial Dual 5.1.3 Composição de Funções Parciais 5.1.3 Restrição 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 22

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 23

Def: Restrição do Domínio de uma Função Parcial f: A B função parcial e A 0 tal que A 0 A Restrição do Domínio de f relativamente a A 0 f\a 0 : A 0 B é tal que f\a 0 = f (A 0 B) Matemática Discreta para Ciência da Computação - P. Blauth Menezes 24

Exp: Restrição do Domínio de uma Função Parcial A = { 1, 2, 3, 4, 5 }, B = { x, y, z } e a função parcial f: A B Para A 0 = { 3, 4, 5 }, a função parcial f\a 0 : A 0 B A 1 2 A 0 3 4 5 f x y z B A 0 3 4 5 f\a 0 x y z B Matemática Discreta para Ciência da Computação - P. Blauth Menezes 25

Exp: Restrição do Domínio de uma Função Parcial 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 id B = { a, a, b, b }: B B id B \A = { a, a }: A B x 2 = { x, y Z 2 y = x 2 }: Z Z x 2 \N = { x, y N Z y = x 2 } 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 26

5 Funções 5.1 Função Parcial 5.2 Autômato Finito 5.2.1 Modelo e Exemplo 5.2.2 Autômato Finito como Função Parcial 5.2.3 Restrição de um Autômato Finito 5.2.3 Leitura Complementar 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 27

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 28

5 Funções 5.1 Função Parcial 5.2 Autômato Finito 5.2.1 Modelo e Exemplo 5.2.2 Autômato Finito como Função Parcial 5.2.3 Restrição de um Autômato Finito 5.2.3 Leitura Complementar 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 29

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 30

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 31

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 32

Exp: Autômato: aa ou bb como subpalavra a q 0 b b q 1 q 2 a q f a b a,b nodos: estados; q 0 - estado inicial; q f - estado final arcos: transições ou computações atômicas processamento: sucessiva aplicação de computações atômicas Matemática Discreta para Ciência da Computação - P. Blauth Menezes 33

Exp: 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 a b b a a q 0 b q 0 b q 1 q 2 q 1 a a b q 2 q f q f a,b q f Matemática Discreta para Ciência da Computação - P. Blauth Menezes 34

6 Funções 5.1 Função Parcial 5.2 Autômato Finito 5.2.1 Modelo e Exemplo 5.2.2 Autômato Finito como Função Parcial 5.2.3 Restrição de um Autômato Finito 5.2.3 Leitura Complementar 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 35

5.2.2 Autômato Finito como Função Parcial a q 0 b b q 1 q 2 a a b q f a,b Autômato finito definido como função parcial no estado q 0, ao ler a, assume o estado q 1 no estado q 0, ao ler b, assume o estado q 2 q 0, a, q 1 q 0, b, q 2 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 36

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 37

Todos os pares que definem a função programa Total? Injetora? Sobrejetora? a q 0 b b q 1 q 2 a q f a b a,b q 0, a, q 1 q 1, a, q f q 2, a, q 1 q f, a, q f q 0, b, q 2 q 1, b, q 2 q 2, b, q f q f, b, q f Matemática Discreta para Ciência da Computação - P. Blauth Menezes 38

Exp: Autômato Finito como Interface Homem Máquina δ: Q Σ Q total? injetora? sobrejetora? Q = { q 0, q 1, q 2, q 3, q 4 } Σ = { moeda, tecla_doce, tecla_cigarro, tecla_refri, libera_doce, libera_cigarro, libera_refri } q 0 moeda libera doce q 1 libera refri tecla doce tecla cigarro tecla refri q 2 q 3 q 4 libera cigarro Matemática Discreta para Ciência da Computação - P. Blauth Menezes 39

Exp: Autômato Finito como Interface Homem Máquina q 0 moeda libera doce q 1 libera refri tecla doce tecla cigarro tecla refri q 2 q 3 q 4 libera cigarro Matemática Discreta para Ciência da Computação - P. Blauth Menezes 40

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.2.1 Modelo e Exemplo 5.2.2 Autômato Finito como Função Parcial 5.2.3 Restrição de um Autômato Finito 5.2.3 Leitura Complementar 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 41

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 42

Exp: Restrição de Autômato Finito Reuso de Software q 0 q 0 moeda moeda libera doce q 1 libera refri libera doce q 1 libera refri tecla doce tecla cigarro tecla refri tecla doce tecla refri q 2 q 3 q 4 q 2 q 3 q 4 libera cigarro 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 } Matemática Discreta para Ciência da Computação - P. Blauth Menezes 43

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 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 44

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.2.1 Modelo e Exemplo 5.2.2 Autômato Finito como Função Parcial 5.2.3 Restrição de um Autômato Finito 5.2.3 Leitura Complementar 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 45

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 Universo de Todas as Linguagens Linguagens Enumeráveis Recursivamente (existe um algoritmo capaz de responder "pertence") Linguagens Recursivas (existe um algoritmo capaz de responder "pertence" ou "não pertence") Linguagens Regulares (existe um autômato finito capaz de responder "pertence" ou "não pertence") Matemática Discreta para Ciência da Computação - P. Blauth Menezes 46

Universo de Todas as Linguagens Linguagens Enumeráveis Recursivamente (existe um algoritmo capaz de responder "pertence") Linguagens Recursivas (existe um algoritmo capaz de responder "pertence" ou "não pertence") 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 47

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.3.1 Definição e Introdução 5.3.2 Exemplos Imortantes de Funções 5.3.3 Função Dual 5.3.4 Composição de Funções 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 48

5.3 Função Total 5.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ção Aplicaçã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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 49

Exp: Função A = { a }, B = { a, b } e C = { 0, 1, 2 } =: A B id B : B B x 2 : Z Z onde x 2 = { x, y Z 2 y = x 2 } 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? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 50

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? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 51

Exp: Função Injetora, Sobrejetora e Bijetora. A = { a }, B = { a, b }, C = { 0, 1, 2 } e X um conjunto qualquer =: A B id X : X B x 2 : Z Z ad: N N N : { 0, 1, 1, 2, 2, 0 }: C C R = { x, y y = sen x } injetora, não-sobrejetora bijetora não-injetora, não-sobrejetora epimorfismo, não-monomorfismo bijetora isomorfismo monomorfismo, não-epimorfismo Matemática Discreta para Ciência da Computação - P. Blauth Menezes 52

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.3.1 Definição e Introdução 5.3.2 Exemplos Importantes de Funções 5.3.3 Função Dual 5.3.4 Composição de Funções 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 53

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 } Função constante * = { ε, a, b, aa, ab, ba, bb, aaa, } qq valor do domínio, resulta no mesmo valor do contra-domínio Matemática Discreta para Ciência da Computação - P. Blauth Menezes 54

Def: Função Constante A e B conjuntos. Função constante em b B const b : A B para todo a A, const b (a) = b Exp: Função Constante A = { a } e = { a, b } um alfabeto const 5 : R R const 5 = { x, 5 R 2 } palavra_vazia: * * palavra_vazia = { w, ε * * } id A : A A (toda função identidade é uma função constante?) : Matemática Discreta para Ciência da Computação - P. Blauth Menezes 55

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 56

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 *. Matemática Discreta para Ciência da Computação - P. Blauth Menezes 57

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 58

Def: Função Inclusão A e B conjuntos tais que A B inc A,B : A B ou simplesmente inc: A B para todo a A, inc(a) = a Toda função inclusão é injetora inc A,B : A B (por quê?) Matemática Discreta para Ciência da Computação - P. Blauth Menezes 59

Exp: Função Inclusão Continência Vogais = { a, e, i, o, u } e Letras = { a, b, c,,z } claramente Vogais Letras inc Vogais,Letras : Vogais Letras Vogais a e i o u inc a e i o u b d h... Letras c f g j Matemática Discreta para Ciência da Computação - P. Blauth Menezes 60

Exp: Função Inclusão Continência As continências N Z, Z Q e Q R induzem as funções inclusão inc N,Z: N Z inc Z,Q: Z Q inc Q,R: Q R Pode-se afirmar que existe a função de inclusão inc N,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? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 61

Def: Função Projeção A 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 } B = { π 2 a, b a, b A B } primeiro operando segundo operando Matemática Discreta para Ciência da Computação - P. Blauth Menezes 62

Exp: Função Projeção A = { 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 B a b x y π 1 π 2 A B a,x a,y b,x b,y Toda função projeção é sobrejetora (por quê?) Matemática Discreta para Ciência da Computação - P. Blauth Menezes 63

Def: Função Imersão A e B conjuntos e A + B a união disjunta q 1 : A A + B e q 2 : B A + B para todo a A, tem-se que q 1 (a) = a, 0 para todo b B, tem-se que q 2 (b) = b, 1 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 64

Exp: Função Imersão A = { a, b } e B = { b, c } A + B q 1 : A A + B e q 2 : B A + B união disjunta funções de imersão A B a b b c q 1 q 2 A+B a,0 b,0 b,1 c,1 Toda função imersão é injetora (por quê?). Matemática Discreta para Ciência da Computação - P. Blauth Menezes 65

5 Funções 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.3.1 Definição e Introdução 5.3.2 Função Dual 5.3.3 Composição de Funções 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 66

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ção 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 } g op = { 0, 0, 1, 1 } não-total conjuntos correspondentes a g e g op são iguais por que g é função e g op não é função? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 67

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 68

Exp: Relação Dual de Função A = { a }, B = { a, b } e C = { 0, 1, 2 }. Duais são funções? id B : B B : { 0, 1, 1, 2, 2, 0 }: C C =: A B ad: N N N tal que ad(a, b) = a + b x 2 : Z Z onde x 2 = { x, y Z 2 y = x 2 } R = { x, y y = sen x } Em que condições a dual de uma função inclusão é função? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 69

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.3.1 Definição e Introdução 5.3.2 Função Dual 5.3.3 Composição de Funções 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 70

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 é Total R: A B e S: B C relações totais Então S o R: A C é total Matemática Discreta para Ciência da Computação - P. Blauth Menezes 71

Prova: Composição de Totais é Total Suponha 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 ( b B)(a R b) ( b B)( c C)(a R b b S c) ( c C)(a (S o R) c) R é total S é total definição de composição Logo, S o R: A C é uma relação total Matemática Discreta para Ciência da Computação - P. Blauth Menezes 72

Exp: Composição de Funções f: 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 } g f A f B g C 1 a 2 x b 3 y c 4 z d 5 A a b c d g f x y z C Matemática Discreta para Ciência da Computação - P. Blauth Menezes 73

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 é Sobrejetora R: A B e S: B C relações sobrejetoras Então S o R: A C é sobrejetora Matemática Discreta para Ciência da Computação - P. Blauth Menezes 74

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.4.1 Relação como Função 5.4.2 Multiconjunto 5.4.3 Seqüência 5.4.3 Conjunto Indexado 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 75

5.4 Construções Matemáticas como Funções Funções são freqüentemente usadas para definir outras construções matemáticas exemplos seqüência multiconjunto conjunto indexado relação Matemática Discreta para Ciência da Computação - P. Blauth Menezes 76

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.4.1 Relação como Função 5.4.2 Multiconjunto 5.4.3 Seqüência 5.4.3 Conjunto Indexado 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 77

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 inc R,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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 78

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.4.1 Relação como Função 5.4.2 Multiconjunto 5.4.3 Seqüência 5.4.3 Conjunto Indexado 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 79

5.4.2 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 80

Pela definição de igualdade de conjuntos Multiconjuntos { 1, 2, 3 } = { 3, 3, 3, 2, 2, 1 } 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) Matemática Discreta para Ciência da Computação - P. Blauth Menezes 81

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? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 82

Def: Multiconjunto 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 83

Exp: Multiconjunto { 1, 2, 3 } { 3, 3, 3, 2, 2, 1 } N 0 N 0 1 1 1 1 2 2 2 2 3 3 3 3...... Qual a interpretação quando o número de repetições é zero? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 84

Exp: Grafo com Arcos Paralelos A B É uma relação? G = { A, B, A, B, B, B, B, B, B, B } Qual a função que define o multiconjunto? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 85

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.4.1 Relação como Função 5.4.2 Multiconjunto 5.4.3 Seqüência 5.4.3 Conjunto Indexado 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 86

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-upla ordenada consiste de n objetos (não necessariamente distintos) em uma ordem fixa x 1, x 2, x 3,,x n { x 1, x 2, x 3,,x n } Matemática Discreta para Ciência da Computação - P. Blauth Menezes 87

Def: Seqüência Infinita, Seqüência Finita X conjunto Seqüência Infinita de X é uma função x: N - { 0 } X Seqüência Finita ou n-upla Ordenada com n componentes de objetos de X é uma função x: { 1, 2, 3,,n } X Matemática Discreta para Ciência da Computação - P. Blauth Menezes 88

Exp: Palavra como Função Σ = { a, b, c,,z } alfabeto Palavra casa como função (não-injetora) casa: { 1, 2, 3, 4 } Σ 1 2 3 4 a c e s Σ d b... z casa = { 1, c, 2, a, 3, s, 4, a } Matemática Discreta para Ciência da Computação - P. Blauth Menezes 89

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.4.1 Relação como Função 5.4.2 Multiconjunto 5.4.3 Seqüência 5.4.3 Conjunto Indexado 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 90

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? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 91

dados: { 1, 2, 3,,10 } X Injetora: Cada componente de um arranjo é distinta no exemplo dados: { 1, 2, 3,,10 } 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 Logo, a função é bijetora dados: { 1, 2, 3,,10 } dados: { 1, 2, 3,,10 } X Generalização do raciocínio, define conjunto indexado X X Matemática Discreta para Ciência da Computação - P. Blauth Menezes 92

Def: Conjunto Indexado 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 x i Matemática Discreta para Ciência da Computação - P. Blauth Menezes 93

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 94

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 95

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 } Matemática Discreta para Ciência da Computação - P. Blauth Menezes 96

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 c 1 c 2 f(c 1 ) = f(c 2 ) colisão Matemática Discreta para Ciência da Computação - P. Blauth Menezes 97

Exp: Função de Hashing 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: Chave 452 623 766 564 825 387 237 360 134 285 Endereço 16 3 8 13 21 20 8 16 20 10 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 98

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 99

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 100

5.6 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 algumas diferenças: proxima secção Matemática Discreta para Ciência da Computação - P. Blauth Menezes 101

Exp: Função em Pascal: Hashing Declaração de dois tipos intervalos f(c) = (c mod 23) + 1 type interv_0_1000 = 0..1000 interv_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; begin hash := (c mod 23) + 1 end Matemática Discreta para Ciência da Computação - P. Blauth Menezes 102

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? Matemática Discreta para Ciência da Computação - P. Blauth Menezes 103

Exp: Função em Pascal: EXOR Ou-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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 104

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; begin exor := (p and not q) or (not p and q) end Matemática Discreta para Ciência da Computação - P. Blauth Menezes 105

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 x 2 + b x + c = 0 fórmula de Baskara: duas raízes função do tipo Solução mais adequada baskara: R 3 R 2 linguagem de programação funcional Matemática Discreta para Ciência da Computação - P. Blauth Menezes 106

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional 5.7.1 Haskell 5.7.2 Leitura Complementar Matemática Discreta para Ciência da Computação - P. Blauth Menezes 107

5.7 Linguagem de Programação Funcional 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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 108

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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 109

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional 5.7.1 Haskell 5.7.2 Leitura Complementar Matemática Discreta para Ciência da Computação - P. Blauth Menezes 110

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. Matemática Discreta para Ciência da Computação - P. Blauth Menezes 111

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; begin x := x + 1; contador := x end Matemática Discreta para Ciência da Computação - P. Blauth Menezes 112

Exemplo em Haskell: a x 2 + b x + c = 0 baskara a b c = let delta = b*b - 4*a*c in ( (-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 Matemática Discreta para Ciência da Computação - P. Blauth Menezes 113

Redução (avaliação) para os valores 1, -5 e 6 baskara 1-5 6 let delta = (-5)*(-5) - 4*1*6 in ( (5 + sqrt(delta))/(2*1), (5 - sqrt(delta))/(2*1) ) let delta = 1 in ( (5 + sqrt(delta))/2, (5 - sqrt(delta))/2 ) ( (5 + 1)/2, (5-1)/2 ) ( 3, 2 ) Matemática Discreta para Ciência da Computação - P. Blauth Menezes 114

5 Funções Parciais e Totais 5.1 Função Parcial 5.2 Autômato Finito 5.3 Função Total 5.4 Construções Matemáticas como Funções 5.5 Função de Hashing 5.6 Funções nas Linguagens de Programação 5.7 Linguagem de Programação Funcional 5.7.1 Haskell 5.7.2 Leitura Complementar Matemática Discreta para Ciência da Computação - P. Blauth Menezes 115

Matemática Discreta para Ciência da Computação P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação - P. Blauth Menezes 116