The Game-Playing Technique

Tamanho: px
Começar a partir da página:

Download "The Game-Playing Technique"

Transcrição

1 Universidade do Vale do Rio dos Sinos Teoria da Informação Prof. Ernesto Lindstaedt 14 de junho de 2007

2 1 2 O que é? 3 Como funciona? 4 Provando o lema 4 Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos 5 Depois de bad ser true, nada importa Coin fixing Lazy sampling 6 Algoritmo Teorema

3 O que é? É uma técnica baseada na utilização de jogos em pseudo-código, cuja vantagem do adversário em atacar uma construção criptográfica é calculada sobre a probabilidade que este jogo atribua uma flag chamada bad como true. A probabilidade é incrementada através de uma seqüência de modificações no pseudo-código que levam a uma cadeia de jogos, até que a flag bad seja atribuída.

4 Como funciona? Suponha a necessidade de calcular a vantagem de um adversário A em atacar uma construção criptográfica. Essa vantagem é obtida através da probabilidade (um número n R entre 0 e 1) computada através da diferença entre as probabilidades de que A retorne 1 em dois diferentes mundos. Sejam os seguintes passos:

5 Como funciona? Um pseudo-código - um jogo - é criado, obtendo os comportamentos do mundo 1. Este jogo inicializa variáveis, interage com o adversário e executa seu código.

6 Como funciona? Um pseudo-código - um jogo - é criado, obtendo os comportamentos do mundo 1. Este jogo inicializa variáveis, interage com o adversário e executa seu código. Outro pseudo-código - um segundo jogo - é escrito, capturando os comportamentos do mundo 0. Os pseudo-códigos dos jogos 1 e 0 são sintaticamente idênticos, com exceção do código que seta bad para true.

7 Como funciona? Um pseudo-código - um jogo - é criado, obtendo os comportamentos do mundo 1. Este jogo inicializa variáveis, interage com o adversário e executa seu código. Outro pseudo-código - um segundo jogo - é escrito, capturando os comportamentos do mundo 0. Os pseudo-códigos dos jogos 1 e 0 são sintaticamente idênticos, com exceção do código que seta bad para true. Aplica-se o lema fundamental dos jogos para calcular, na presente configuração dos jogos, a vantagem do adversário limitada na probabilidade de bad ser atribuída em outro jogo.

8 Como funciona? Um pseudo-código - um jogo - é criado, obtendo os comportamentos do mundo 1. Este jogo inicializa variáveis, interage com o adversário e executa seu código. Outro pseudo-código - um segundo jogo - é escrito, capturando os comportamentos do mundo 0. Os pseudo-códigos dos jogos 1 e 0 são sintaticamente idênticos, com exceção do código que seta bad para true. Aplica-se o lema fundamental dos jogos para calcular, na presente configuração dos jogos, a vantagem do adversário limitada na probabilidade de bad ser atribuída em outro jogo. Se escolhe um dos dois jogos e aplica-se pequenas transformações no código, de forma a aumentar ou manter inalterada a probabilidade de bad ser atribuída.

9 Como funciona? Um pseudo-código - um jogo - é criado, obtendo os comportamentos do mundo 1. Este jogo inicializa variáveis, interage com o adversário e executa seu código. Outro pseudo-código - um segundo jogo - é escrito, capturando os comportamentos do mundo 0. Os pseudo-códigos dos jogos 1 e 0 são sintaticamente idênticos, com exceção do código que seta bad para true. Aplica-se o lema fundamental dos jogos para calcular, na presente configuração dos jogos, a vantagem do adversário limitada na probabilidade de bad ser atribuída em outro jogo. Se escolhe um dos dois jogos e aplica-se pequenas transformações no código, de forma a aumentar ou manter inalterada a probabilidade de bad ser atribuída. Assim obtém-se uma cadeia de jogos, terminando com algum jogo terminal, onde obtém-se a probabilidade da flag bad ser atribuída.

10 Como funciona? Cada jogo G é composto por uma tupla de programas, cada um escrito numa linguagem de programação. Ambos os programas possuem um conjunto comum de variáveis globais e locais, sendo idênticos até a atribuição da variável bad.

11 Provando o lema Seja Perm(n) o conjunto de todas as permutações de {0, 1} n, e Rand(n) o conjunto de todas as funções de {0, 1} n para {0, 1} n. Para A f 1 denota-se o evento do adversário A, utilizando um oráculo f, retorna um bit de saída com valor 1. Assume-se que π seja extraído randomicamente de Perm(n) e ρ seja selecionado de Rand(n). Lema Seja n 1 um inteiro. Seja A um adversário que pergunta após q consultas ao oráculo. Então Pr[A π 1] Pr[A ρ 1] q(q 1) 2 n+1.

12 Provando o lema

13 Provando o lema Para provar o lema utilizando uma cadeia de jogos, seja o seguinte cenário: múltiplas respostas à consultas A estão rodando em um de dois jogos. Considere a interação de A com Game S1 ao invés de interar com a permutação randômica π Perm(n), e da mesma forma a interação de A com Game S1 no lugar de interar com a função randômica do oráculo ρ Rand(n). Cada jogo é sintaticamente idêntico, com exceção de Game S0, que não possui a atribuição bad = true.

14 Provando o lema Como Game S0 simula a função randômica ρ Rand(n), temos que Pr[A ρ 1] = Pr[A S0 1]. Similarmente, ao verificar Game S1, obtém-se Pr[A π 1] = Pr[A S1 1]. Logo, reescrevendo parcialmente a fórmula chega-se a Pr[A π 1] Pr[A ρ 1] = Pr[A S1 1] Pr[A S0 1].

15 Provando o lema Para calcular a probabilidade de atribuição da variável bad com as alterações realizadas, seja a seguinte fórmula: Pr[A S1 1] Pr[A S0 1] Pr[A S0 setar bad]. Essa transformação resulta no lema fundamental dos jogos. Esse lema diz que, quando dois jogos são escritos e são sinteticamente iguais até a atribuição da variável bad, a diferença das probabilidades que A retorna 1 nos dois jogos é limitada pela probabilidade que bad é atribuída no outro jogo.

16 Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Um programa P é uma seqüência finita de instruções escritas em alguma linguagem de programação L. Cada programa será identificado pelo sua árvore sintática. Estes programas possuem todas as construções de uma linguagem procedural: variáveis, atribuições, instruições if, for, etc. Seja a seguinte definição: Jogos Um jogo G = ( Inicializa, P 1, P 2,..., P n, Finaliza) é uma seqüência de programas.

17 Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos

18 Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Um adversário é um algoritmo probabiĺıstico com a habilidade de consultar algum número n 0 de oráculos, normalmente descrito como um programa. O par de um jogo G e um adversário A é chamado de jogo em execução, denotados normalmente como G A ou A G.

19 Início do jogo Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Para rodar G = (Inicializa, P 1, P 2,..., P n, Finaliza) com A e uma string de parâmetro param, inicializa-se invocando o programa Inicializa enviando o parâmetro param. Então se roda A, passando qualquer valor de retorno produzido por Inicializa para P 1.

20 Execução intermediária Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Quando o adversário A chama seu i esimo oráculo dada uma string, essa string é informada ao programa P i e este é executado. O adversário A volta a ser executado quando P i retorna a string resultante.

21 Término do jogo Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Quando P n termina sua execução, o método Finaliza é executado, recebendo como parâmetro a string resultante da execução do adversário A.

22 Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Seja Pr[G A 1] a probabilidade de que o resultado do jogo G seja 1 quando roda-se G a. Diz-se que os jogos G e H são equivalentes se, para qualquer adversário A, tem-se que Pr[G A 1] = Pr[H A 1]. Define-se Pr[A G 1] como a probabilidade do adversário A retorne 1 quando se roda G a. A vantagem de A em distingüir jogos G e H é o número real AdvG,H dist (A) = Pr[AG 1] Pr[A H 1]. Diz-se que os jogos G e H são indistinguíveis se, para qualquer adversário A, obtém-se a igualdade Pr[A G 1] = Pr[A H 1].

23 Executando um jogo Cálculo da Probabilidade Lema fundamental dos jogos Lema fundamental Sejam G e H jogos sintaticamente idênticos, e A um adversário. Então Pr[G A 1] Pr[H A 1] Pr[G A setar bad].

24 Depois de bad ser true, nada importa Coin fixing Lazy sampling Há algumas técnicas úteis na transformação de jogos, de forma a aumentar ou manter a probabilidade da flag bad ser atribuída. Destacam-se: Depois de bad ser atribuída, nada mais importa

25 Depois de bad ser true, nada importa Coin fixing Lazy sampling Há algumas técnicas úteis na transformação de jogos, de forma a aumentar ou manter a probabilidade da flag bad ser atribuída. Destacam-se: Depois de bad ser atribuída, nada mais importa Coin fixing

26 Depois de bad ser true, nada importa Coin fixing Lazy sampling Há algumas técnicas úteis na transformação de jogos, de forma a aumentar ou manter a probabilidade da flag bad ser atribuída. Destacam-se: Depois de bad ser atribuída, nada mais importa Coin fixing Lazy sampling

27 Depois de bad ser true, nada importa Coin fixing Lazy sampling Após a flag bad ser atribuída com true, pode-se remover os trechos conseguintes de código do programa ou simplesmente mantê-los; a probabilidade será inalterada. Depois de bad ser true, nada importa Sejam G e H jogos sintaticamente idênticos e A um adversário. Então Pr[G A setar bad] = Pr[H A setar bad].

28 Depois de bad ser true, nada importa Coin fixing Lazy sampling Suponha que um jogo G A possua as seguintes características: um oráculo P cujo parâmetro de entrada input informado por A esteja vazio e o resultado também seja vazio. Esse jogo conterá uma flag bad. A seguir o adversário A solicita, em seqüência, exatas q strings de consulta para P, onde o programa armazena em variáveis X 1,..., X q tais strings de entrada; o resultado dessas strings é armazenado em variáveis Y 1,..., Y q. Seja então C um conjunto de tuplas (X 1,..., X q, Y 1,..., Y q ) onde cada vetor de consultas X 1,..., X q e suas respostas Y 1,..., Y q podem ocorrer na execução de G A em C. Este conjunto é denominado conjunto de consulta/resposta para G A.

29 Depois de bad ser true, nada importa Coin fixing Lazy sampling Seja γ o conjunto de todas as variáveis Y / {X 1,..., X q, Y 1,..., Y q } em um jogo G para cada Y i. Diz-se que G A é ignorado se a variável bad não depende de qualquer variável de γ, ou seja, nenhuma variável Y i influencia na computação de bad.

30 Depois de bad ser true, nada importa Coin fixing Lazy sampling Com um jogo ignorado G A, um conjunto consulta/resposta C para G A e um ponto Q = (X 1,..., X q, Y 1,..., Y q ) C, forma-se um novo jogo H C, semelhante à G exceto pelo fato de não ter um oráculo P. Seja H = CoinFix C A (G) de HC para o primeiro item Q C que maximiza Pr[H C A setar bad]. Como H A não depende de A, pode-se omití-lo e assim ainda ter um jogo em execução.

31 Depois de bad ser true, nada importa Coin fixing Lazy sampling Técnica Coin-fixing Seja G A um jogo ignorado que possua um conjunto C do tipo consulta/resposta. Seja H = CoinFixA C (G). Então Pr[G A setar bad] Pr[H setar bad].

32 Depois de bad ser true, nada importa Coin fixing Lazy sampling Ao invés de realizar escolhas a cada transformação, pode ser conveniente reescrever o jogo prorrogando essas escolhar até o momento ideal. Considere o seguinte exemplo: seja um jogo que interage com um adversário utilizando uma permutação randômica π em n bits. Uma forma de montar esse jogo seria escolher π randomicamente de Perm(n) durante a função Inicializa e então, quando solicitada uma consulta X {0, 1} n, retorna π(x ). A alternativa tardia para implementar π seria começar com uma permutação parcial de π de n bits para n bits, todos indefinidos. Quando solicitada uma consulta X ainda não pertencente ao domínio de π, o oráculo pode escolher um valor Y randomicamente da escala de π, definindo π(x ) Y, e retornando Y.

33 Algoritmo Teorema Seja o seguinte algoritmo para o cifrador CBC: Algoritmo CBC Parse M as M 1..M m C 0 0 n for i 1 to m do C i C i 1 M i return C m

34 Algoritmo Teorema Seja Perm(n) a notação do conjunto de todas as permutações em {0, 1} n e Rand(mn, n) a notação do conjunto de todas as funções de {0, 1} mn para {0, 1} n. Para m 1 e π Perm(n) seja CBC m π a restrição de CBC n para o domínio {0, 1} mn. Tendo um algoritmo A com um oráculo de acesso para a função F : {0, 1} mn {0, 1} n, seja Adv cbc n,m(a) = Pr[π $ Perm(n): A CBC m π (.) 1] Pr[ρ $ Rand(mn, n): A ρ(.) 1] a notação da vantagem de A. Então { Adv cbc n,m(q) = max Adv cbc } n,m(a) denota o máximo que todos os adversários A solicitam até q consultas.

35 Algoritmo Teorema CBC MAC Suponha m, q 2 e n 1. Então Adv cbc n,m(q) m2 q 2 2 n

36 Algoritmo Teorema Figura do paper!

37 Algoritmo Teorema M. Bellare e P. Rogaway,. 11 de Dezembro de linds/teoinfo/bellare04gameplaying.pdf

The Game-Playing Technique

The Game-Playing Technique UNIVERSIDADE DO VALE DO RIO DOS SINOS Ciência da Computação Teoria da Informação Professor Ernesto Lindstaut The Game-Playing Technique Marcelo Correia Pinheiro 14 de junho de 2007 Sumário 1 Introdução

Leia mais

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019 Criptografia Aula 4: Autenticação de mensagens e canais seguros Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019 Integridade e autenticação de mensagens Message Authentication Codes Construções de MACs Integridade

Leia mais

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos

Leia mais

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido

Leia mais

2 Teoria da Informação

2 Teoria da Informação 2 Teoria da Informação Neste capítulo apresentamos alguns conceitos básicos sobre Teoria da Informação que utilizaremos durante este trabalho. 2.1 Alfabeto, texto, letras e caracteres Um alfabeto Σ = (σ

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo

Leia mais

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA UNIVERSIDADE DE JOÃO DEL-REI PRÓ-REITORIA DE PESQUISA CENTRO

Leia mais

Fundamentos de Lógica Matemática

Fundamentos de Lógica Matemática Webconferência 5-22/03/2012 Prova por resolução Prof. L. M. Levada http://www.dc.ufscar.br/ alexandre Departamento de Computação (DC) Universidade Federal de São Carlos (UFSCar) 2012/1 Introdução É possível

Leia mais

Variantes de Máquinas de Turing

Variantes de Máquinas de Turing Variantes de Máquinas de Turing 1 Máquinas de Turing Input-Output TM s Input/output (ou IO ou transdutoras) diferem de TM s reconhecedoras por terem um estado de parada neutro q halt, ao invés de estados

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 08 Equivalência de programas Parte 2 Prof.ª Danielle Casillo Poder computacional dos diversos tipos de programas

Leia mais

Compiladores - Gramáticas

Compiladores - Gramáticas Compiladores - Gramáticas Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa

Leia mais

Compiladores - Gramáticas

Compiladores - Gramáticas Compiladores - Gramáticas Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa

Leia mais

Algoritmos e Técnicas de Programação

Algoritmos e Técnicas de Programação Algoritmos e Técnicas de Programação Introdução filipe.raulino@ifrn.edu.br Créditos O material utilizado neste curso é composto de adaptações dos Slides do Professor Diego Silveira. Objetivos Fazer uma

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Notas sobre Sequências e Cardinalidade (1)

Notas sobre Sequências e Cardinalidade (1) 1 / 11 Notas sobre e Cardinalidade (1) Anjolina Grisi de Oliveira Centro de Informática Universidade Federal de Pernambuco CIn-UFPE 2 / 11 Uma sequência é uma estrutura discreta usada para representar

Leia mais

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma

Leia mais

Criptografia. Criptografia de Chave Pública. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Criptografia. Criptografia de Chave Pública. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019 Criptografia Criptografia de Chave Pública Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019 Parte I Criptografia de chave pública Pressupostos Computacionais Nas aulas anteriores vimos diversas primitivas

Leia mais

TEORIA DE COMPLEXIDADE

TEORIA DE COMPLEXIDADE TEORIA DE COMPLEXIDADE Fundamentos: classes P e N P Mauricio Ayala-Rincón Grupo de Teoria da Computaç~ao http://ayala.mat.unb.br/tcgroup Instituto de Ciências Exatas Universidade de Brasília, Brasília

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Os teoremas citados na aula anterior, podem dar a falsa impressão de que o poder computacional da classe dos

Leia mais

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a

Leia mais

TÉCNICO DE INFORMÁTICA - SISTEMAS

TÉCNICO DE INFORMÁTICA - SISTEMAS 782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar

Leia mais

SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA

SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA Neste trabalho você deverá construir e testar, com a ferramenta JFLAP, uma MT multifita que simula o funcionamento de um computador

Leia mais

Estruturas de Dados Tabelas de Espalhamento

Estruturas de Dados Tabelas de Espalhamento Estruturas de Dados Tabelas de Espalhamento Prof. Eduardo Alchieri (introdução) Uma estrutura como, as árvores binárias de busca, que trabalhe na ordem de log n é muito eficiente, mas em algumas situações

Leia mais

Python 3.x Estrutura de Repetição while

Python 3.x Estrutura de Repetição while Python 3.x Estrutura de Repetição while Introdução à Ciência da Computação Prof. Edison Ishikawa Sumário Atribuição Atualizando variáveis Iterações Revisitando o laço for Laço while Rastreando um programa

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando

Leia mais

O nome da variável é utilizado para identificação (para carga e posterior uso). Porém, são necessárias algumas regras para nomear essa variável:

O nome da variável é utilizado para identificação (para carga e posterior uso). Porém, são necessárias algumas regras para nomear essa variável: Variáveis e Constantes Variáveis Os computadores processam dados que ficam em sua memória. Assim, o programa precisa de uma forma para acessar esta memória e, consequentemente, os dados. Para um programa

Leia mais

Problemas Algoritmicos

Problemas Algoritmicos Problemas Algoritmicos 1 O que pode ser computado? Chegamos a um importante ponto do curso. Vamos agora estudar uma das questões mais fundamentais em Ciência da Computação: Qual seria o limite do poder

Leia mais

Intuição da sintaxe de L2 (35)

Intuição da sintaxe de L2 (35) 2.2 A Linguagem L2 2.2 A Linguagem L2 A linguagem L2 é uma extensão de L1 com funções recursivas, memória (acesso e atualização de variáveis), sequência de comandos ( ; ) e laço de repetição while. Primeiro,

Leia mais

Algoritmos de Aproximação Segundo Semestre de 2012

Algoritmos de Aproximação Segundo Semestre de 2012 Algoritmos de Aproximação Segundo Semestre de 2012 Aproximação p. 1 Problema de decisão Problema de decisão: conjunto I de instâncias e função f : I {SIM, NÃO} Aproximação p. 2 Problema de decisão Problema

Leia mais

Lema do Bombeamento. Aplicação para Linguagens Regulares e Livres de Contexto. Maria Adriana Vidigal de Lima. Abril

Lema do Bombeamento. Aplicação para Linguagens Regulares e Livres de Contexto. Maria Adriana Vidigal de Lima. Abril Aplicação para Linguagens Regulares e Livres de Contexto Abril - 2009 1 Linguagens Não-Regulares 2 Propriedades das Linguagens Regulares Todas as linguagens finitas (com um número finito de palavras) são

Leia mais

Campeonato de Gamão. 1. Regras. 2. Servidor

Campeonato de Gamão. 1. Regras. 2. Servidor Campeonato de Gamão 1. Regras O campeonato de gamão será disputado de acordo com as regras tradicionais do jogo, facilmente encontradas na Internet. As duas cores tradicionais das pedras do jogo serão

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/20 4 - INTROD. À ANÁLISE COMBINATÓRIA 4.1) Arranjos

Leia mais

Método Simplex. Marina Andretta ICMC-USP. 19 de outubro de 2016

Método Simplex. Marina Andretta ICMC-USP. 19 de outubro de 2016 Método Simplex Marina Andretta ICMC-USP 19 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211 - Otimização linear

Leia mais

Técnicas de análise de algoritmos

Técnicas de análise de algoritmos CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Exame 13 de Janeiro de 2017 09:00 11:00 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta. (a)

Leia mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013 Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void

Leia mais

Modelos Universais de Computação

Modelos Universais de Computação Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)

Leia mais

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina

Leia mais

Prof. Adriano Maranhão COMPILADORES

Prof. Adriano Maranhão COMPILADORES Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então

Leia mais

Faculdade de Computação

Faculdade de Computação UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra de Amo Solução da Lista de Exercícios n o 8 - Indecidibilidade Exercicio 1-5.5 do Livro

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1 Modularização Facilita a

Leia mais

Processos Estocásticos e Cadeias de Markov Discretas

Processos Estocásticos e Cadeias de Markov Discretas Processos Estocásticos e Cadeias de Markov Discretas Processo Estocástico(I) Definição: Um processo estocástico é uma família de variáveis aleatórias {X(t) t T}, definidas em um espaço de probabilidades,

Leia mais

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Draft-v0.1. Máquinas de Turing Máquinas de Turing 13 Máquinas de Turing A necessidade de formalizar os processos algorítmicos levou, nas décadas 20 e 30 do século XX, a diversos estudos, entre os quais os de Post, Church e Turing, com vista a estudo formal

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Análise e Projeto de Algoritmos junho - 2018 1 / 40 Este material é preparado

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 1. Linguagens Regulares Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto marcelolauretto@usp.br www.each.usp.br/lauretto

Leia mais

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais Prof. Luiz Fernando Laguardia Campos FMS lflcampos@machadosobrinho.com.br Compilação/Interpretação Um compilador ao receber como entrada

Leia mais

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34 Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais

Leia mais

Controle Ótimo - Aula 2 (Exemplos 2, 3 e 4)

Controle Ótimo - Aula 2 (Exemplos 2, 3 e 4) Controle Ótimo - Aula 2 (Exemplos 2, 3 e 4) Adriano A. G. Siqueira e Marco H. Terra Departamento de Engenharia Elétrica Universidade de São Paulo - São Carlos Sistemas dinâmicos discretos no tempo O Problema

Leia mais

Teoria da Computação. Máquinas, Computações e Funções Computadas

Teoria da Computação. Máquinas, Computações e Funções Computadas Cristiano Lehrer Introdução (1/2) O objetivo de uma máquina é suprir todas as informações necessárias para que a computação de um programa possa ser descrita. Portanto, cabe à máquina suprir o significado

Leia mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. Profa. Sheila Morais de Almeida. agosto Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa

Leia mais

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos Aula passada Listas Listas 1 Listas em compreensão Alguns idiomas úteis conjuntos ordenado de valores, cada um dos quais identificado por um índice; Operações com listas: semelhantes a operações com strings;

Leia mais

Algoritmos Distribuídos. AD Algoritmos Básicos 1

Algoritmos Distribuídos. AD Algoritmos Básicos 1 Algoritmos Distribuídos Algoritmos Básicos Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro Este material está baseado no capítulo 4 do livro An Introduction to Distributed

Leia mais

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar

Leia mais

Autômatos e Linguagens

Autômatos e Linguagens Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

Leia mais

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada. Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens

Leia mais

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins 1. (25 pontos) A listagem a seguir mostra o código de uma função que converte uma cadeia de caracteres com a representação

Leia mais

Definição. Os valores assumidos pelos estimadores denomina-se estimativas pontuais ou simplesmente estimativas.

Definição. Os valores assumidos pelos estimadores denomina-se estimativas pontuais ou simplesmente estimativas. 1. Inferência Estatística Inferência Estatística é o uso da informção (ou experiência ou história) para a redução da incerteza sobre o objeto em estudo. A informação pode ou não ser proveniente de um experimento

Leia mais

Notas sobre Definições Recursivas

Notas sobre Definições Recursivas Notas sobre Definições Recursivas Anjolina Grisi de Oliveira Centro de Informática Universidade Federal de Pernambuco CIn-UFPE Introdução A torre de Hanói Jogo antigo inventado pelo matemético francês

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Programação com sequência Prof. M.Sc.: João Paulo Q. dos Santos E-mail: joao.queiroz@ifrn.edu.br Página: http://docente.ifrn.edu.br/joaoqueiroz/ Etapas de ação de um computador

Leia mais

Algoritmos e estrutura de dados

Algoritmos e estrutura de dados Algoritmos e estrutura de dados Listas Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Listas Listas encadeadas

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções

Leia mais

Algoritmos e Programação (While Do While - Do) Prof. Me. Adelson Felipe Dias Nogueira

Algoritmos e Programação (While Do While - Do) Prof. Me. Adelson Felipe Dias Nogueira Algoritmos e Programação (While Do While - Do) Prof. Me. Adelson Felipe Dias Nogueira E-mail: adelson.nogueira@pitagoras.com.br Aplicação: 1) Como imprimir os três primeiros número ímpares? Aplicação:

Leia mais

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2) SCC-505 - Capítulo 2 e (versão 2) João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis

Leia mais

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Algoritmos em Grafos Estruturas de Dados para Conjuntos Disjuntos Programação Linear Programação Dinâmica Algoritmos Greedy

Leia mais

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26 AULA 26 MATRIZES - PARTE 2 26. Mais exemplos Nesta aula, veremos mais dois algoritmos envolvendo matrizes. O primeiro deles calcula a matriz resultante da multiplicação de duas matrizes e utiliza três

Leia mais

Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas

Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas Introdução à Ciência da Computação Prof. Dr. Rogério Vargas http://rogerio.in O que é dado? - Defino dado como uma sequência de símbolos quantificados ou quantificáveis. - Letras são símbolos quantificados.

Leia mais

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Algoritmos e Técnicas de Programação. Professora: Luciana Faria Algoritmos e Técnicas de Programação Professora: Luciana Faria Estrutura de Repetição condicional Estrutura de repetição Nas aulas anteriores verificamos que a execução sequencial dos comandos da função

Leia mais

Conteúdo Teórico: 04 Esperança

Conteúdo Teórico: 04 Esperança ACH2053 Introdução à Estatística Conteúdo Teórico: 04 Esperança Marcelo de Souza Lauretto Sistemas de Informação EACH www.each.usp.br/lauretto Referência: Morris DeGroot, Mark Schervish. Probability and

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Pseudocódigo e Estruturas Básicas de Controle Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Roteiro

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 27 Square root algorithms Combining algorithms Integer partitions Mo s algorithm Square

Leia mais

Aula 10: Decidibilidade

Aula 10: Decidibilidade Teoria da Computação Aula 10: Decidibilidade DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. Um problema de decisão P é um conjunto de questões para as quais as respostas são sim ou não. Exemplo

Leia mais

Análise Sintática Introdução

Análise Sintática Introdução Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais

Leia mais

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática Projeto e Análise de Algoritmos Introdução Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática Projeto e Análise de Algoritmos Eu penso que o projeto de algoritmos eficientes

Leia mais

Aula 5: k-means. Paulo C. Marques F. 1 de Abril de Aula ministrada no Insper. Insper Aula 5: k-means 1 de Abril de / 19

Aula 5: k-means. Paulo C. Marques F. 1 de Abril de Aula ministrada no Insper. Insper Aula 5: k-means 1 de Abril de / 19 Aula 5: k-means Paulo C. Marques F. Aula ministrada no Insper 1 de Abril de 2016 Insper Aula 5: k-means 1 de Abril de 2016 1 / 19 Aprendizagem não supervisionada Encerramos, por hora, o capítulo sobre

Leia mais

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br Introdução Um algoritmo pode ser definido como uma sequência finita de passos

Leia mais

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos Caminhos Mínimos entre Todos os Vértices 1/ 48 Caminhos Mínimos entre Todos os Vértices Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-9003: Introdução

Leia mais

Probabilidade IV. Ulisses U. dos Anjos. Departamento de Estatística Universidade Federal da Paraíba. Período

Probabilidade IV. Ulisses U. dos Anjos. Departamento de Estatística Universidade Federal da Paraíba. Período Probabilidade IV Ulisses U. dos Anjos Departamento de Estatística Universidade Federal da Paraíba Período 2014.2 Ulisses Umbelino (DE-UFPB) Probabilidade IV Período 2014.2 1 / 20 Sumário 1 Apresentação

Leia mais

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3 MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3 Athos Coimbra Ribeiro NUSP: ****** 3 de Abril de 26 Problema.46 (itens a,c, e d) Solução a) L = { n m n m, n } Usamos o lema do bombeamento para

Leia mais

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta? 23 Algoritmos com Repetição Nos exemplos e exercícios vistos até agora, sempre foi possível resolver os problemas com uma sequência de instruções que eram executadas apenas uma vez. Existem três estruturas

Leia mais

, logo, para se obter uma boa precisão seria necessário aumentar, e muito, o número de

, logo, para se obter uma boa precisão seria necessário aumentar, e muito, o número de 2. Simulação de Monte Carlo A Simulação de Monte Carlo (SMC) é um método numérico que utiliza um gerador de números aleatórios para simular possíveis valores da variável de interesse e assim obter a estimativa

Leia mais

UMA INTRODUÇÃO AOS ALGORITMOS GENETICOS

UMA INTRODUÇÃO AOS ALGORITMOS GENETICOS UMA INTRODUÇÃO AOS ALGORITMOS GENETICOS Uma visão geral dos GAs Um algoritmo genético é uma classe de algoritmo de busca. O algoritmo procura uma solução dentro de um espaço para um problema de otimização.

Leia mais

1/ 36. Computação 1 - Python Aula 1 - Teórica: Introdução

1/ 36. Computação 1 - Python Aula 1 - Teórica: Introdução 1/ 36 Computação 1 - Python Aula 1 - Teórica: Introdução Conhecendo a turma Experiência com programação e uso do computador Quantos já programaram antes? Quais linguagens? Quantos tem computador em casa

Leia mais

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Linguagem de Programação I Prof. Tiago Eugenio de Melo. Linguagem de Programação I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info 1 Sumário Introdução Conceitos preliminares Introdução Variáveis Comandos Condicionais 2 Por que aprender a

Leia mais

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Combinatória

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Combinatória Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Combinatória Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos

Leia mais

HASHING HASHING 6/10/2008

HASHING HASHING 6/10/2008 Hashing é uma técnica que busca realizar as operações de inserção, remoção e busca em tempo constante. Motivação - Acesso Direto: Suponha que existam n chaves a serem armazenadas em uma tabela T, seqüencial

Leia mais

4. Constantes. Constantes pré-definidas

4. Constantes. Constantes pré-definidas 4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.

Leia mais

Endereçamento Aberto

Endereçamento Aberto Endereçamento Aberto ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 11/2008 Material baseado em slides

Leia mais

Divisão e Conquista: Par de Pontos mais Próximo

Divisão e Conquista: Par de Pontos mais Próximo Divisão e Conquista: Par de Pontos mais Próximo Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 18 Divisão e Conquista (cont.) Problema: Dado um conjunto de pontos no plano, obter o par de pontos

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal

Leia mais

Introdução à Computação

Introdução à Computação Conteúdo de hoje... Your Logo Here Prof. Lucas Amorim lucas@ic.ufal.br Tipos de dados Dados numéricos Inteiro Real Dados literais Dados lógicos Variáveis Introdução à Computação Tipos de dados, variáveis

Leia mais

A Linguagem Lua Lua Puc-Rio

A Linguagem Lua Lua Puc-Rio A Linguagem Lua Lua foi projetada e implementada por uma equipe no Tecgraf, o Grupo de Computação Gráfica da Puc-Rio (Pontifícia Universidade Católica do Rio de Janeiro). 1 Exemplos de linguagens de scripts

Leia mais

AULA 5 - Independência, Combinatória e

AULA 5 - Independência, Combinatória e AULA 5 - Independência, Combinatória e permutações Susan Schommer Introdução à Estatística Econômica - IE/UFRJ Independência Um importante caso particular da probabilidade condicional surge quando a ocorrˆncia

Leia mais

Capítulo 10 Estruturas de controle de fluxo. Introdução ao MATLAB p.1/21

Capítulo 10 Estruturas de controle de fluxo. Introdução ao MATLAB p.1/21 Capítulo 10 Estruturas de controle de fluxo Introdução ao MATLAB p.1/21 Controle de fluxo O MATLAB, como toda linguagem de programação, possui estruturas que permitem o controle do fluxo de execução de

Leia mais