UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA - CEEI COPIN. Monografia

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

Download "UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA - CEEI COPIN. Monografia"

Transcrição

1 UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA - CEEI COORDENAÇÃO DE PÓS-GRADUAÇÃO EM INFORMÁTICA - COPIN Monografia COMPUTAÇÃO PROBABILÍSTICA: MÁQUINA DE TURING PROBABILÍSTICA João Arthur Brunet Monteiro jarthur@dsc.ufcg.edu.br Mestrado em Ciência da Computação - CEEI/UFCG Campina Grande, Junho de 2007.

2 Sumário 1 Introdução 2 2 Metodologia 4 3 Computação Probabilística Um Exemplo de Computação Probabilística Exemplo de Aplicação de Computação Probabilística Algoritmos Genéticos Máquina de Turing Probabilística Definição Formal Computação de uma Máquina de Turing Probabilística Exemplo de Computação em uma Máquina Probabilística Poder Computacional de uma Máquina de Turing Probabilística 12 5 Algoritmos Probabilísticos Tipos de Algoritmos Probabilísticos Algoritmos Probabilísticos Numéricos Algoritmos de Monte Carlo Algoritmos de Las Vegas Gerador de Números Pseudo-aleatórios Complexidade Considerações Finais 16 Lista de Figuras 1 Estatísticas sobre a função f(x) Relações entre classes de complexidade prob. e não-prob

3 1 Introdução Este documento tem por objetivo apresentar um conteúdo introdutório sobre computação probabilística, apresentando o modelo de máquina de Turing probabilística bem como suas implicações diante do modelo clássico. Além disso, uma visão geral sobre os algoritmos probabilísticos e suas aplicações é apresentada. A máquina de Turing foi criada por Alan Turing [10] com o intuito de tentar responder alguns dos 23 problemas-desafio propostos por Hilbert [7]. Um destes problemas (Entscheidungsproblem) baseava-se na possibilidade ou não de existir um algoritmo que julgasse verdadeira ou falsa qualquer conjectura matemática. Assim, Turing criou um modelo que ele achava ser o desencadear do raciocínio de um matemático ao tentar provar uma conjectura matemática: A máquina de Turing. Embora as máquinas de Turing sejam similares a autômatos finitos e autômatos de pilha, sabemos que autômatos não podem ser considerados modelos para os computadores, uma vez que não são capazes de computar linguagens simples como L = a n b n ; n >= 0. Por sua vez, o modelo da máquina de Turing é mais genérico que os autômatos, podendo reconhecer essa e muitas outras linguagens mais complexas. Uma máquina de Turing consiste em um controle finito, uma fita e um cabeçote que pode ser usado para ler ou escrever na fita. Embora pareça simples, tentativas de substitui-lo como modelo de computador (máquina de Turing com múltiplas fitas e de acesso aleatório) não surtiram efeito ao longo do tempo. Até o momento, a idéia de que tudo que pode ser computável é computável por uma máquina de Turing ainda não foi refutada. Uma abordagem importante a ser destacada no contexto de máquinas de Turing é a construção deste modelo contemplando o não-determinismo em sua computação. À este modelo deu-se o nome de Máquina de Turing probabilística. Uma máquina de turing não-determinística é equivalente a uma máquina de Turing probabilística, exceto pelo fato de que ela acerta a resposta a cada vez. O objeto do estudo aqui exposto são as máquinas de Turing probabilísticas e as máquinas de Turing não-determinísticas. Este documento está estruturado como se segue. Inicialmente é apresentada uma visão geral sobre computação probabilística e suas aplicações. Após este primeiro passo, é apresentado o modelo da máquina de Turing probabilística e uma análise do procedimento utilizado por ele para computar entradas. Um exemplo de computação em uma máquina não-determinística é então demonstrado para melhor entendimento em uma máquina probabilística. Mais tarde, são discutidos os algoritmos probabilísticos e, além disso, uma discussão do poder computacional do modelo em relação ao mo- 2

4 delo de máquina determinística é conduzida. Por fim, conclui-se este documento com uma Seção contendo as considerações finais em relação ao assunto abordado. 3

5 2 Metodologia Com o intuito de atingir os objetivos deste trabalho, foi preciso desempenhar uma extensa revisão bibliográfica na área de teoria da computação e modelos computacionais. Nesta Seção é apresentada a metodologia utilizada para conduzir o processo de confecção deste documento. Depois de identificar o assunto alvo do documento (máquinas de Turing probabilísticas), foi necessário pesquisar por artigos e livros relacionados ao assunto para que fosse possível angariar o embasamento teórico necessário para a construção de um documento sobre o assunto. No inicio do processo, as chaves 1 de busca foram: Computação Probabilística Máquinas de Turing Probabilísticas Não-determinismo em máquinas de Turing Complexidade das máquinas probabilísticas Esta primeira pesquisa revelou as principais referências sobre o assunto. Identificamos que o livro Elementos da Teoria da Computação [8] é extremamente importante para a área, uma vez que contempla todo o assunto de maneira simples e com exemplos auto-explicativos. Por este motivo, este livro foi utilizado como base de conhecimento para a escrita deste documento. Os seguintes motores de busca foram utilizados na revisão bibliográfica: Depois de catalogar as principais referências sobre o assunto, iniciou-se o processo de leitura e revisão dos artigos e livros. A partir daí, deu-se início a escrita deste documento. 1 Obs.: Os termos também foram traduzidos para o inglês. 4

6 3 Computação Probabilística Computação probabilística é um termo cunhado para denotar a adição de probabilidade (randomicidade) na computação efetuada pelos modelos clássicos. O grande diferencial entre computação probabilística e não probabilística é o fato da primeira poder gerar diferentes saídas para uma mesma entrada, justamente por tomar decisões baseadas em eventos probabilísticos durante a computação. A computação probabilística é útil nos casos em que há certas computações que podem gerar saídas erradas. Neste cenário, associa-se uma probabilidade que mede a confiança do resultado da computação. 3.1 Um Exemplo de Computação Probabilística Suponha que um vetor de n posições está preenchido com n/2 as e n/2 bs. Um algoritmo determinístico para encontrar um a dentro do vetor consiste em percorre-lo linearmente e procurar pelo símbolo. Este algoritmo, no pior caso, precisa de n/2 passos para retornar a resposta correta. Agora suponha para o mesmo problema descrito acima, um algoritmo probabilístico que pesquisa randomicamente por a no vetor. Este algoritmo tem uma alta probabilidade de encontrar rapidamente o valor desejado. Uma pequena probabilidade está associada ao fato dele ter que percorrer mais passos do que o algoritmo determinístico. De fato, a eficiência do algoritmo depende da entrada. Um programa probabilístico P é dito ter uma saída y para uma entrada x, se a probabilidade de P ter uma computação com saída y com entrada x é maior que 1/2. Se não existe y, então a saída de P para a entrada x é indefinida. Um programa probabilístico P computa uma função f(x) se P em cada entrada x tem probabilidade 1 ɛ(x) para uma computação aceita com saída f(x) onde, 1. ɛ(x) 1/2 sempre que f(x) for definida. 2. ɛ(x) é indefinida sempre que f(x) for indefinida. ɛ(x) é dito ser a probabilidade de erro de P. A probabilidade de erro é dita ser limitada se existe uma contante e < 1/2 tal que e(x) e para todo x ao qual e(x) é definida. Um programa P é dito ser um programa probabilístico com erro limitado se ele possui uma probabilidade de erro limitada. 5

7 3.2 Exemplo de Aplicação de Computação Probabilística Algoritmos Genéticos Um algoritmo genético consiste em uma técnica de aproximação em problemas de otimização e busca. Eles reusam conceitos como mutação, seleção natural e recombinação (ou crossing over). A evolução se inicia, geralmente, através de um conjunto criado aleatoriamente. Os algoritmos genéricos são classificados como exemplo de computação probabilística pois, ao contrário dos algoritmos clássicos, eles usam transições probabilísticas e não regras determinísticas. Além disso, os resultados são apresentados como uma população de soluções e não como uma solução única [6]. O Algoritmo 1, extraído de [1], mostra um trecho de pseudo-código descrevendo um algoritmo genético, onde a função objetivo passada como parâmetro é o objeto da otimização e o indivíduo é o portador de seu código genético. A probabilidade está inserida na função seleção, que normalmente ordena os individuos de acordo com a função objetivo e lhes atribui probabilidades descrescentes de serem escolhidos. Pseudocode 1 Exemplo (pseudo-código) de um algoritmo genético 1 funç~ao AlgoritmoGenético(populaç~ao, funç~ao-objetivo) saídas: indivíduo 2 entradas: populaç~ao -> uma lista de indivíduos 3 funç~ao-objetivo -> uma funç~ao que recebe um indivíduo e retorna um número real. 4 repetir 5 lista de pais := seleç~ao(populaç~ao, funç~ao-objetivo) 6 populaç~ao := reproduç~ao(lista de pais) 7 enquanto nenhuma condiçao de parada for atingida 8 retorna o melhor indivíduo da populaç~ao de acordo com a funç~ao-objetivo Atualmente não se conhece algoritmos eficientes para encontrar solução exata para os problemas NP [3]. De fato, muitas pessoas acreditam não existir tais algoritmos e procuram por soluções alternativas. Uma dessas soluções é o uso de algoritmos genéticos. 6

8 4 Máquina de Turing Probabilística Lewis e Papadimitriou [8] mostram que quando autômatos finitos agem não-deterministicamente, nenhum aumento resulta no poder computacional (exceto que exponencialmente menos estados podem ser necessários para a mesma tarefa), embora os automatos de pilha não-determinísticos sejam mais poderosos que os determinísticos. Neste contexto, podemos também levar em consideração máquinas de Turing que não agem deterministicamente, podendo ter, dependendo do estado, mais de uma ação possível. Na teoria da computação, uma máquina de Turing probabilística é uma máquina de Turing não-determinística que decide randomicamente (passos lançamento-de-moeda) entre transições habilitadas seguindo uma determinada distribuição de probabilidade. Ou seja, além de passar a considerar o não-determinismo na computação de uma máquina de Turing [2], passa-se a considerar probabilidade de ocorrência de eventos. É importante ressaltar que máquinas de Turing probabilísticas são especializações de máquinas de Turing não-determinísticas. Este modelo possui várias implicações em relação ao modelo clássico de máquinas de Turing. Nesta seção será abordada a definição deste modelo, bem como algumas considerações a seu respeito. 4.1 Definição Formal Formalmente, uma máquina de Turing não-determinística pode ser descrita como uma quíntupla (K, Σ,, s, H), onde K, Σ, s eh são como para as máquinas de Turing padrão e é um subconjunto de ((K H)XΣ)X(KX(Σ {, })) em vez de uma função de (K H)XΣ para KX(Σ {, })). Ainda, as configurações e relações M e M* são definidas de modo natural. No entanto, M não precisa assumir um único valor, ou seja, uma configuração pode produzir várias outras em um único passo. Uma máquina de Turing probabilística é o modelo descrito acima adicionando-se probabilidades à computação de cada ramificação da máquina não determinística. Se na computação de uma entrada ω é gerado um caminho de execução (ramificação) b e, neste, foram dados k lançamentos de moedas, então a probabilidade do caminho é 1/2 k. Já a probabilidade de aceitação de uma entrada ω é dada por P [M accept ω] = Σ P [b]], ou seja, a soma de todos os caminhos de execução que aceitam a palavra ω. Desta observação concluímos também que P [M reject ω] = 1 P [M accept ω]. A máquina M continua reconhecendo linguagens apenas quando aceita todas as palavras da mesma e rejeita caso contrário. No entanto, levando em consideração o modelo probabilístico, é permitido uma pequena probabilidade de erro: 0 ɛ 0.5. Desta maneira, diz-se que M aceita uma 7

9 linguagem L com probabilidade de erro ɛ se: ω L P [M accept ω] 1 ɛ ω L P [M reject ω] 1 ɛ Uma consequência do modelo descrito acima é que a máquina de Turing probabilística pode gerar diferentes estados finais para a computação de uma mesma entrada. Além disso, este modelo gera respostas com determinadas probabilidades de estarem certas ou erradas. Este modelo vai de encontro ao modelo clássico de Turing. Na próxima Seção há uma discussão sobre como se dá a computação de uma entrada em uma máquina de Turing probabilística e qual as implicações no tocante ao poder computacional deste modelo. 4.2 Computação de uma Máquina de Turing Probabilística Com dito anteriormente, máquinas de Turing probabilísticas podem gerar diferentes saídas para a computação de uma mesma entrada. Por esta razão, é preciso cautela ao definir o que é o resultado de uma computação neste modelo. Papadimitriou e Lewis optaram por uma maneira simples de conduzir essa análise. Os autores acreditam ser mais simples considerar uma máquina de Turing mão-determinística que semidecide uma linguagem, justamente pelo fato de várias saídas poderem ser geradas pela computação de uma mesma entrada. Primeiro é preciso considerar a computação de máquinas não-determinísticas para depois tecer uma análise referente às máquinas probabilísticas. Deste modo, considerando M = ((K, Σ,, s, H)) uma máquina de Turing não-determinística, dizemos que M aceita uma entrada ω (Σ, )* se (s, ω) M (h, uaω) para algum h H e a Σ, u, ω Σ*. É possível notar que uma máquina de Turing probabilística aceita uma entrada ω mesmo que haja muitas computações relacionadas à entrada. Assim, dizemos que M semidecide a linguagem L (Σ {, }) se para todos os ω (Σ {, }) : ω L, se, e somente se, M aceita ω. Caso a probabilidade de uma transição seja igual a outra, podemos definir o modelo como uma máquina determinística com uma função adicional write onde o valor da função é uniformemente distribuído no alfabeto da máquina. No caso do alfabeto binário, é equivalente a escrever 0 ou 1 na fita. Como podemos analisar, uma máquina de Turing probabilística pode gerar resultados estocásticos; para uma dada entrada, o modelo pode aceita-la em uma execução e rejeita-la na outra. 8

10 No entanto, há ainda a necessidade de definir o que significa uma máquina de Turing não-determinística decidir uma linguagem ou computar uma função. Suponha que M = ((K, Σ,, s, y, n)) seja a máquina de Turing não-determinística. Dizemos que M decide a linguaguem L (Σ {, }) se as duas condições seguintes aplicam-se para todos os ω (Σ {, }). 1. Há um número natural n N, dependendo de M e ω, tal que não haja uma configuração C que satisfaz (s, ω) N/MC 2. ω L, se, e somente se, (s, ω) m(y, auv) para algum u, v Σ, a Σ. Por fim, dizemos que M computa a função f : (Σ {, }) (Σ {, }) se as seguintes duas condições aplicam-se para todos os ω (Σ {, }) : (a) Há um N, dependendo de M e ω, tal que não há configuração C satisfazendo (s, ω) C (b) (s, ω) m(h, uav), se, e somente se, ua = e v = f(w) Várias observações podem ser feitas ao analisarmos as definições acima. A primeira delas está relacionada a condição (a) descrita acima. Dela, podemos interpretar que para uma máquina de Turing não-determinística decidir uma linguagem e computar uma função, exigimos que todas as suas computações parem: Esta observação é feita postulando que não há computação em andamento após N passos, onde N é um limite superior dependente da máquina e da entrada. A outra observação a ser feita está relacionado ao modelo decidir uma linguagem: Para M decidir uma linguagem, somente é exigido que pelo menos uma de suas possíveis computações finais aceite a entrada. Ou seja, mesmo que haja computações rejeitadas para a entrada em determinados momentos, basta que apenas uma computação seja aceita para que M decida a linguagem. Por isso, para criar uma máquina probabilística que decida o complemento da linguagem, não basta apenas inverter os papéis dos estados y e n (uma vez que a máquina pode ter ambas as computações, de aceitação e de rejeição, para algumas entradas). Para mostrar que a classe das linguagens decididas por uma máquina de Turing não-determinística é fechada por complemento é preciso passar por uma máquina determinística equivalente: Se uma máquina de Turing mão-determinística M semidecide uma linguagem ou decide uma linguagem ou computa uma função, então há uma máquina de Turing padrão M semidecidindo ou decidindo a mesma linguagem ou computando uma função. A prova deste teorema, inclusa no livro Elements of the Theory of Computation, é a que se segue: É preciso descrever a construção para o caso no 9

11 qual M semidecide uma linguagem L; as construções para o caso de decidir se uma linguagem computa uma função são muito similares. Assim, suponha que M = (K, Σ,, s, H) seja uma máquina de Turing não-determinística semidecidindo uma linguagem L. Dada uma entrada ω, M irá executá-la sistematicamente em todas as possíveis computações por M1 procurando por uma que pare. Quando e se ele descobre uma computação de parada, ele também irá parar. Assim M pararia se e somente se M parar, como era exigido. A simulação de uma máquina de Turing não-determinística por uma determinística não consiste em uma simulação passo-a-passo. Em vez disso, ela segue por todas as possíveis computações da máquina de Turing nãodeterminística. Como um resultado, é necessário um número de passos exponencial em n para simular uma computação de n passos em uma máquina probabilística. Por fim, para uma máquina não-determinística computar uma função, é exigido que todas as possíveis computações estejam de acordo quanto ao resultado. Se não for possível decidir qual é o valor correto da função ( no caso de decidir ou semidecidir uma linguagem, a incerteza é resolvida postulando que a resposta positiva prevalece.) As considerações feitas até aqui também são válidas quando referenciamos máquinas de Turing probabilísticas, uma vez que essas máquinas se comportam como máquinas de Turing não-determinísticas com probabilidades associadas aos caminhos de execução Exemplo de Computação em uma Máquina Probabilística Para melhor entendimento de como conduz-se o processo de computação de uma entrada em uma máquina probabilística, é introduzido nesta Seção um exemplo simples de execução de máquina não-determinísticas, baseado na computação de números compostos. Um número composto é um número não-primo diferente de 1 ou de 0. Suponha que C = {100, 110, 1000, 1010,..., } seja o conjunto de rodas as representações binárias de números compostos s. Construir um algoritmo que decida C é um problema bastante conhecido em computação pela sua complexidade e importância. Isto porque baseia-se na fatoração de um número. Um algoritmo guloso para descobrir os fatores de um número dado é percorrer exaustivamente todos os números menores que a raiz quadrada deste número. De fato, saberíamos os seus fatores. No entanto, esta solução não é eficiente. O problema é que parece não existir nenhum método mais direto e eficiente. O fato é que podemos usar o não-determinismo para projetar uma máquina 10

12 para semidecidir C de maneira relativamente simples. A computação consiste em adivinhar os fatores, caso haja: Escolhe-se não-deterministicamente dois números binários p e q maiores que um e escreve sua representação binária ao lado da entrada. Ultiliza uma máquina de multiplicação para substituir a representação binária de p e q pelo seu produto. Verifica se os dois inteiros, n e p X q, são os mesmos. Pára se os dois inteiros forem iguais; c. c., continua sem fim de algum modo. Agora vamos simular a computação desta máquina com a entreda 66 ( ). É possível perceber que o passo 1 causará muitas rejeições, visto que existem muitas escolhas de p e q que multiplicados não são iguais a 66. No entanto, como 66 é um número coposto, haverá pelo menos uma computação p e q que será igual a 66 e M acabará a sua computação aceitando a entrada. Lembre-se que uma máquina probabilística semidecide uma linguagem se uma de suas computações é aceita. De fato, haverá mais que uma configuração de p e q as quais a máquina aceita. Em uma máquina probabilística a computação é semelhante. No entanto a resposta seria dada com uma certa probabilidade de estar correta ou não, visto que os passos a serem seguidos foram escolhidos randomicamente. O fato importante em relação a este problema é que esta máquina descrita acima pode ser substituída por uma máquina determinística que decide a linguagem. É importante destacar que o número de possíveis computações de uma máquina não determinística é limitado. A exploração destes vários caminhos é feita utilizando-se o procedimento do rabo de pombo. A observação crucial é a seguinte: Apesar de haver várias configurações C dada uma configuração inicial C, o número de configurações C é limitado e dependente somente de M e não de C. Para o caso do exemplo acima, esse número é computado da seguinte maneira: Suponha que um dado inteiro n possui l bits. Suponha que N1 seja o número máximo de passos em qualquer comptação pela máquina multiplicadora em qualquer entrada de comprimento 2l + 1 ou menos; este é um número finito, o máximo de uma quantidade finita de naturais. Suponha que N2 seja o número de passos que ele leva para comparar duas strings de, no máximo, 3l de comprimento cada. Então, qualquer computação por M terminará após N1 + N2 + 3l + 6 passos, certamente um número finito dependente somente da máquina e da entrada. 11

13 4.3 Poder Computacional de uma Máquina de Turing Probabilística É preciso separar os conceitos de poder computacional e eficiência antes de prosseguirmos com a análise das máquinas de Turing probabilísticas. Poder computacional está relacionado ao aumento no número de linguagens que uma máquina pode reconhecer, enquanto que eficiência está relacionado a rapidez que uma máquina computa uma entrada. Intuitivamente pode parecer que o não-determinismo das máquinas probabilísticas faz com que esse modelo seja mais poderoso computacionalmente que o modelo clássico, visto que eles podem executar muitas possíveis computações para uma entrada, requerendo apenas que uma dessas computações leve a um estado de aceitação. No entanto: Qualquer linguagem que pode ser reconhecida por uma máquina de Turing não-determinística também pode ser reconhecida por uma máquina de Turing determinística. Uma das questões centrais na teoria de complexidade computacional é se a randomicidade inerente às máquinas de Turing não-determinística aumenta a eficiência do modelo clássico, isto é, existe um problema que pode ser resolvido em tempo polinomial por uma máquina de Turing não-determinística mas não pode ser resolvido por uma máquina de Turing determinística. Isto é equivalente a perguntar se uma máquina determinística pode simular eficientemente todas as máquinas não-determinísticas. De fato, sabemos que uma máquina determinística pode simular (como demonstrado na Seção anterior) cada transição de uma máquina probabilística, fazendo múltiplas cópias do estado simulado quando múltiplas transições forem possíveis, e simulando-as em paralelo (não confundir com execução paralela de processos). Esta simulação pode consumir tempo considerável. O fato é que este tempo não é conhecido em geral. Em outras palavras, é equivalente à definição de P = NP, tão conhecida quando o assunto complexidade computacional é referenciado. É importante lembrar que a tese de Church-Turing [4] afirma que: Se um problema não tem solução polinomial em uma máquina de Turing não-determinística então não tem solução eficiente em outro dispositivo de computação. Este fato está relacionado à eficiência e não ao poder computacional. Ainda, a classe das linguagens reconhecida por uma máquina nãodeterminística é igual a classe das linguagens reconhecida por uma máquina determinística. 12

14 5 Algoritmos Probabilísticos Existem várias instâncias de problemas que são resolvidos com algoritmos randômicos e probabilísticos de maneira eficiente e que não existem bons algoritmos determinísticos que executem a mesma tarefa com eficiência semelhante. Os algoritmos probabilísticos são aqueles que utilizam a probabilidade como parte de sua computação. Isto tem como consequência o fato de que a máquina que implementa o algoritmo deve acessar um gerador de números pseudo-aleatórios. O algoritmo utiliza-se de bits aleatórios como viés para definir o seu comportamento. Ao contrário dos algoritmos convencionais, um algoritmo probabilístico, dada uma mesma entrada, não necessariamente levará a um mesmo estado final após a computação desta entrada. Muitos algoritmos probabilísticos possuem o one-side error; ou seja, se a palavra de entrada está contida no conjunto, então o algoritmo a aceita com alta probabilidade; mas se a palavra não está contida no conjunto, então o algoritmo sempre a rejeita. 5.1 Tipos de Algoritmos Probabilísticos Algoritmos Probabilísticos Numéricos Faz parte da categoria que não garante a exatidão no resultado. Este tipo de algoritmo calcula a resposta com uma determinada precisão associada à computação. O resultado gerado é comumente apresentado em forma de intervalo de confiança, uma vez que não é possível determinar com exatidão o resultado da computação. Quanto maior o número de execuções do algoritmo, mais preciso será o resultado. Um exemplo de algoritmo deste tipo é o calculo do valor de Π Algoritmos de Monte Carlo Este algoritmo sempre produz uma mesma resposta para uma determinada entrada. No entanto, a resposta pode não ser correta. Se o algoritmo é dito p-correto, então dizemos que a resposta é correta com probabilidade p para uma determina entrada. Não há como assegurar se uma dada resposta é correta utilizando este tipo de algoritmo. Um exemplo de algoritmo deste tipo é determinar se uma dado número é primo ou não. 13

15 5.1.3 Algoritmos de Las Vegas Fazem parte da categoria de algoritmos que garantem a exatidão da resposta. A execução do algoritmo sempre retorna uma resposta correta. No entanto, o tempo de execução do mesmo é probabilístico. Isto porque escolhas probabilísticas são feitas com o intuito de escolher o menor caminha da computação. O algoritmo assume que falhou quando uma resposta incorreta é achada. Um exemplo de algoritmo deste tipo é o quicksort com escolha do pivo aleatória. 5.2 Gerador de Números Pseudo-aleatórios Uma das aplicações de algoritmos probabilísticos é a geração de números pseudo-aleatórios através de funções matemáticas pré-definidas. Um gerador de número pseudo-aleatório é um algoritmo que gera uma sequência de números, os quais são aproximadamente independentes um dos outros. É importante destacar que a saída de um algoritmo gerador de números aleatórios não é verdadeiramente aleatória; ela somente aproxima algumas das propriedades dos números aleatórios. Números verdadeiramente aleatórios só podem ser gerados usando dispositivos de hardware. No entanto, números pseudo-aleatórios cumprem um importante papel na ciência da computação. Números pseudo-aleatórios são uma parte crítica da computação moderna, da criptografia até o método de Monte Carlo passando por sistemas de simulação. Uma cuidadosa análise matemática é necessária para assegurar que a geração dos números seja suficientemente aleatória. O problema consiste em gerar sequências de números, que correspondam a valores a partir de uma distribuição uniforme tendo como limites 0 e 1, isto é, uma função densidade de probabilidade assim definida: F (x) = 0 se x < 0, x se 0 x 1, 1 se x > 1 A média, variância, bem como o aspecto da função de distribuição de probabilidade podem ser visualizados na Figura 5.2. As técnicas mais comuns para geração de números pseudoaleatórios são os métodos congruenciais: Gerador congruencial linear ou misto (Lehmer): Zi = (azi 1 + c)(modm) Gerador congruencial multiplicativo: Zi = azi 1(modm) 14

16 Figura 1: Estatísticas sobre a função f(x) Gerador Aditivo: Zi = (Zi 1 + Zi k)(modm), onde (K=2, corresponde à sequência de Fibonacci) 5.3 Complexidade A classe das linguagens que são reconhecidas por uma máquina de Turing probabilística (em tempo polinomial) com um erro no interval [0, 0.5) é denominada BPP [5, 9]. No entanto, este erro pode ser amenizado utilizando um lema, denominado lema da aplicaficação, que diz que para toda máquina probabilística (em tempo polinomial = polin(n)) M1 que opera com erro Σ, existe uma máquina equivalente M2 que opera com uma probabilidade de erro de 2 - polin(n). Isto pode ser provado dado que M2 pode simular a máquina M1, executá-la um número polinomial de vezes e fazer uma escolha majoritária entre as respostas computadas. Existe um algoritmo probabilístico para teste de primalidade pertencente a BPP. RP á a classe das linguagens que são reconhecidas por uma máquina de Turing probabilística (em tempo polinomial) no qual as entradas pertencentes a linguagem são aceitas com probabilidade de no mínimo 0.5 e entradas não pertencentes a linguagem são rejeitadas com probabilidade 1. Este tipo de erro, denominado erro de um único lado, é muito comum nos algoritmos probabilísticos. Nesta classe também é possível a redução exponencial do erro cometido. ZPP engloba os problemas que possuem algoritmos que resolvem em tempo polinomial (no caso médio) e dará sempre uma resposta correta, mesmo que possam não parar em alguns casos. A Figura 2 ilustra as relações entre as classes de complexidade probabilísticas e não probabilísticas. 15

17 Figura 2: Relações entre classes de complexidade prob. e não-prob. 6 Considerações Finais Computação probabilística foi abordada neste documento de maneira simples e direta. O modelo de máquina de Turing probabilística é mais uma tentativa de aumentar o poder computacional do modelo clássico de máquina de Turing. No entanto, vimos que todas as linguagens aceitas por uma máquina de Turing probabilística também são aceitas por uma máquina determinística. A relação entre máquinas não-determinísticas e máquinas probabilísticas foi delineada neste documento. Foi demonstrado também, através de um simples exemplo, como se dá o processo de computação em uma máquina probabilística. Outra contribuição importante deste documento é a demonstração de que para toda máquina de Turing não-determinística existe uma máquina determinística equivalente. Além disso, definições formais foram expostas afim de não gerar ambiguidades na leitura das mesmas. Outro ponto destacado neste documento foi o conceito de algoritmo probabilístico. Uma listagem dos vários tipos de algoritmos probabilísticos foi feita, apresentando exemplos de cada um desses tipos. Analisou-se também o ganho em complexidade que os algoritmos probabilísticos trazem à computação. Por fim, acredita-se que este documento possa servir de referência para aqueles que necessitam de material introdutório relacionado à máquinas de Turing probabilísticas. 16

18 Referências [1] Algoritmos genéticos, [2] M. Atallah. Algorithms and Theory of Computation Handbook. CRC Press, [3] S. Cook. The P versus NP Problem. The Millennium Prize Problems, [4] B. Copeland. The Church-Turing Thesis [5] D. Deutsch, A. Ekert, and R. Lupacchini. Machines, logic and quantum physics. Bulletin of Symbolic Logic, 6(3): , [6] D. Goldberg. Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA, [7] P. Halmos. A Hilbert Space Problem Book. Springer-Verlag, [8] H. Lewis and C. Papadimitriou. Elements of the Theory of Computation. ACM SIGACT News, 29(3):62 78, [9] M. Sipser. Introduction to the Theory of Computation. [10] A. Turing. On computable numbers, with an application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 42(2): ,

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15 Bases Matemáticas Aula 2 Métodos de Demonstração Rodrigo Hausen v. 2013-7-31 1/15 Como o Conhecimento Matemático é Organizado Definições Definição: um enunciado que descreve o significado de um termo.

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Seção 5.1 Problemas indecidíveis. Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Seção 5.1 Problemas indecidíveis. Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO Seção 5.1 Problemas indecidíveis Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima 1 Na aula passada... A MT é indecidível (usando diagonalização)

Leia mais

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para

Leia mais

Aritmética Binária e. Bernardo Nunes Gonçalves

Aritmética Binária e. Bernardo Nunes Gonçalves Aritmética Binária e Complemento a Base Bernardo Nunes Gonçalves Sumário Soma e multiplicação binária Subtração e divisão binária Representação com sinal Sinal e magnitude Complemento a base. Adição binária

Leia mais

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Capítulo 6. Autômatos com Pilha 6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Nos exemplos da seção anterior, vimos que os autômatos com pilha existem para

Leia mais

Só Matemática O seu portal matemático http://www.somatematica.com.br FUNÇÕES

Só Matemática O seu portal matemático http://www.somatematica.com.br FUNÇÕES FUNÇÕES O conceito de função é um dos mais importantes em toda a matemática. O conceito básico de função é o seguinte: toda vez que temos dois conjuntos e algum tipo de associação entre eles, que faça

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos 1. INTRODUÇÃO A ALGORITMOS O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular

Leia mais

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas? Recorrências Muitas vezes não é possível resolver problemas de contagem diretamente combinando os princípios aditivo e multiplicativo. Para resolver esses problemas recorremos a outros recursos: as recursões

Leia mais

2. Método de Monte Carlo

2. Método de Monte Carlo 2. Método de Monte Carlo O método de Monte Carlo é uma denominação genérica tendo em comum o uso de variáveis aleatórias para resolver, via simulação numérica, uma variada gama de problemas matemáticos.

Leia mais

Autómatos Finitos Determinísticos

Autómatos Finitos Determinísticos Ficha 2 Autómatos Finitos Determinísticos 2.1 Introdução Se olharmos, de forma simplificada, para um computador encontramos três componentes principais: a) A unidade de processamento central b) As unidades

Leia mais

Resíduos Quadráticos e Fatoração: uma aplicação à criptoanálise do RSA

Resíduos Quadráticos e Fatoração: uma aplicação à criptoanálise do RSA Resíduos Quadráticos e Fatoração: uma aplicação à criptoanálise do RSA Charles F. de Barros 20 de novembro de 2008 Resumo Faremos uma breve introdução ao conceito de resíduos quadráticos, descrevendo em

Leia mais

Capítulo 7 Medidas de dispersão

Capítulo 7 Medidas de dispersão Capítulo 7 Medidas de dispersão Introdução Para a compreensão deste capítulo, é necessário que você tenha entendido os conceitos apresentados nos capítulos 4 (ponto médio, classes e frequência) e 6 (média).

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão

Leia mais

Aplicações de Combinatória e Geometria na Teoria dos Números

Aplicações de Combinatória e Geometria na Teoria dos Números Aplicações de Combinatória e Geometria na Teoria dos Números Nesse artigo vamos discutir algumas abordagens diferentes na Teoria dos Números, no sentido de envolverem também outras grandes áreas, como

Leia mais

Capítulo 1. x > y ou x < y ou x = y

Capítulo 1. x > y ou x < y ou x = y Capítulo Funções, Plano Cartesiano e Gráfico de Função Ao iniciar o estudo de qualquer tipo de matemática não podemos provar tudo. Cada vez que introduzimos um novo conceito precisamos defini-lo em termos

Leia mais

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto Material Teórico - Módulo de Divisibilidade MDC e MMC - Parte 1 Sexto Ano Prof. Angelo Papa Neto 1 Máximo divisor comum Nesta aula, definiremos e estudaremos métodos para calcular o máximo divisor comum

Leia mais

Portas Lógicas Básicas Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

Portas Lógicas Básicas Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h Portas Lógicas Básicas Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h Colegiado de Engenharia da Computação CECOMP Introdução à Algebra de Boole Em lógica tradicional, uma decisão é tomada

Leia mais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos

Leia mais

5 Equacionando os problemas

5 Equacionando os problemas A UA UL LA Equacionando os problemas Introdução Nossa aula começará com um quebra- cabeça de mesa de bar - para você tentar resolver agora. Observe esta figura feita com palitos de fósforo. Mova de lugar

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística Aula 4 Conceitos Básicos de Estatística Aula 4 Conceitos básicos de estatística A Estatística é a ciência de aprendizagem a partir de dados. Trata-se de uma disciplina estratégica, que coleta, analisa

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 6 - Problemas Indecidiveis Exercicio 7-5.5 do

Leia mais

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Uma visão de Intratabilidade, Classes P e NP - redução polinomial - NP-completos e NP-difíceis Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com

Leia mais

6 Construção de Cenários

6 Construção de Cenários 6 Construção de Cenários Neste capítulo será mostrada a metodologia utilizada para mensuração dos parâmetros estocásticos (ou incertos) e construção dos cenários com respectivas probabilidades de ocorrência.

Leia mais

Empresa de Pesquisa Energética (EPE) 2014. Analista de Projetos da Geração de Energia

Empresa de Pesquisa Energética (EPE) 2014. Analista de Projetos da Geração de Energia Empresa de Pesquisa Energética (EPE) 2014 Analista de Projetos da Geração de Energia Oi, pessoal! Vou resolver as quatro questões de Estatística (53 a 56) da prova elaborada pela banca Cesgranrio para

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Cálculo das Probabilidades e Estatística I

Cálculo das Probabilidades e Estatística I Cálculo das Probabilidades e Estatística I Prof a. Juliana Freitas Pires Departamento de Estatística Universidade Federal da Paraíba - UFPB juliana@de.ufpb.br Introdução a Probabilidade Existem dois tipos

Leia mais

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental a e 6 a séries (6º e 7º anos) do Ensino Fundamental 1. (alternativa C) Os números 0,01 e 0,119 são menores que 0,12. Por outro lado, 0,1 e 0,7 são maiores que 0,. Finalmente, 0,29 é maior que 0,12 e menor

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Outras Máquinas de Turing

Outras Máquinas de Turing Capítulo 10 Outras Máquinas de Turing 10.1. Pequenas variações da TM padrão 10.2. MT s com dispositivos de armazenamento mais complexos 10.3. MT s não-determinísticas 10.4. A Máquina de Turing Universal

Leia mais

3 Classificação. 3.1. Resumo do algoritmo proposto

3 Classificação. 3.1. Resumo do algoritmo proposto 3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.

Leia mais

Notas de aula número 1: Otimização *

Notas de aula número 1: Otimização * UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL UFRGS DEPARTAMENTO DE ECONOMIA CURSO DE CIÊNCIAS ECONÔMICAS DISCIPLINA: TEORIA MICROECONÔMICA II Primeiro Semestre/2001 Professor: Sabino da Silva Porto Júnior

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA. 09/abril de 2014

PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA. 09/abril de 2014 PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA 09/abril de 2014 Considerações Estatísticas para Planejamento e Publicação 1 Circularidade do Método

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática

Leia mais

ECO039 Linguagens Formais

ECO039 Linguagens Formais Prof a.dra.thatyana de Faria Piola Seraphim Universidade Federal de Itajubá thatyana@unifei.edu.br Introdução ˆ As três principais áreas da teoria da computação (Autômatos, Computabilidade e Complexidade)

Leia mais

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II O seguinte exercício contempla um processo com três estágios. Baseia-se no Inquérito de Satisfação Fase II, sendo, por isso, essencial compreender primeiro o problema antes de começar o tutorial. 1 1.

Leia mais

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis. 3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Roteiro Inspeção Defeitos dos Software Classificação dos Erros Técnica de Leitura Ad-hoc Checklist Exercício Inspeção Inspeção de Software Definição É um método de análise estática

Leia mais

O método de Monte Carlo: algumas aplicações na Escola Básica

O método de Monte Carlo: algumas aplicações na Escola Básica 1 Universidade de São Paulo/Faculdade de Educação Seminários de Ensino de Matemática (SEMA-FEUSP) Coordenador: Nílson José Machado novembro/2009 O método de Monte Carlo: algumas aplicações na Escola Básica

Leia mais

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48 Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração

Leia mais

Resolução de problemas e desenvolvimento de algoritmos

Resolução de problemas e desenvolvimento de algoritmos SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... 0) O que veremos na aula de hoje? Um fato interessante Produtos notáveis Equação do 2º grau Como fazer a questão 5 da 3ª

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de

Leia mais

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades BC 0005 Bases Computacionais da Ciência Representação Gráfica de Funções Prof a Maria das Graças Bruno Marietto graca.marietto@ufabc.edu.br

Leia mais

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia e não têm a intenção de substituir o livro-texto, nem qualquer outra bibliografia. Introdução O Cálculo Numérico

Leia mais

Este material traz a teoria necessária à resolução das questões propostas.

Este material traz a teoria necessária à resolução das questões propostas. Inclui Teoria e Questões Inteiramente Resolvidas dos assuntos: Contagem: princípio aditivo e multiplicativo. Arranjo. Permutação. Combinação simples e com repetição. Lógica sentencial, de primeira ordem

Leia mais

Ajuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental

Ajuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental Ajuda ao SciEn-Produção 1 Este texto de ajuda contém três partes: a parte 1 indica em linhas gerais o que deve ser esclarecido em cada uma das seções da estrutura de um artigo cientifico relatando uma

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

¹CPTL/UFMS, Três Lagoas, MS,Brasil, oliveiralimarafael@hotmail.com. ²CPTL/UFMS, Três Lagoas, MS, Brasil.

¹CPTL/UFMS, Três Lagoas, MS,Brasil, oliveiralimarafael@hotmail.com. ²CPTL/UFMS, Três Lagoas, MS, Brasil. Encontro de Ensino, Pesquisa e Extensão, Presidente Prudente, 22 a 25 de outubro, 2012 36 INTRODUÇÃO A CRIPTOGRAFIA RSA Rafael Lima Oliveira¹, Prof. Dr. Fernando Pereira de Souza². ¹CPTL/UFMS, Três Lagoas,

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

Renata de Freitas e Petrucio Viana. IME, UFF 12 de março de 2015

Renata de Freitas e Petrucio Viana. IME, UFF 12 de março de 2015 Definições por indução e por recursão Renata de Freitas e Petrucio Viana IME, UFF 12 de março de 2015 Sumário Lógica formal e principais sistemas lógicos Definições indutivas Definições recursivas Exercícios

Leia mais

A integral também é conhecida como antiderivada. Uma definição também conhecida para integral indefinida é:

A integral também é conhecida como antiderivada. Uma definição também conhecida para integral indefinida é: Integral Origem: Wikipédia, a enciclopédia livre. No cálculo, a integral de uma função foi criada para originalmente determinar a área sob uma curva no plano cartesiano e também surge naturalmente em dezenas

Leia mais

Cláudio Tadeu Cristino 1. Julho, 2014

Cláudio Tadeu Cristino 1. Julho, 2014 Inferência Estatística Estimação Cláudio Tadeu Cristino 1 1 Universidade Federal de Pernambuco, Recife, Brasil Mestrado em Nutrição, Atividade Física e Plasticidade Fenotípica Julho, 2014 C.T.Cristino

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução Prof. Humberto Brandão humberto@dcc.ufmg.br aula disponível no site: http://www.bcc.unifal-mg.edu.br/~humberto/ Universidade Federal de

Leia mais

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia

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 Aparecida de Amo Lista de Exercícios n o 2 Exercícios sobre Modelos de Máquinas de Turing

Leia mais

CAPÍTULO 9 Exercícios Resolvidos

CAPÍTULO 9 Exercícios Resolvidos CAPÍTULO 9 Exercícios Resolvidos R9.1) Diâmetro de esferas de rolamento Os dados a seguir correspondem ao diâmetro, em mm, de 30 esferas de rolamento produzidas por uma máquina. 137 154 159 155 167 159

Leia mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

ANALISE COMBINATORIA Um pouco de probabilidade

ANALISE COMBINATORIA Um pouco de probabilidade ANALISE COMBINATORIA Um pouco de probabilidade Programa Pró-Ciência Fapesp/IME-USP-setembro de 1999 Antônio L. Pereira -IME USP (s. 234A) tel 818 6214 email:alpereir@ime.usp.br 1 Um carro e dois bodes

Leia mais

Figura 1 Busca Linear

Figura 1 Busca Linear ----- Evidentemente, possuir os dados não ajuda o programador ou o usuário se eles não souberem onde os dados estão. Imagine, por exemplo, uma festa de casamento com cem convidados na qual não se sabe

Leia mais

Análise e Resolução da prova de Auditor Fiscal da Fazenda Estadual do Piauí Disciplina: Matemática Financeira Professor: Custódio Nascimento

Análise e Resolução da prova de Auditor Fiscal da Fazenda Estadual do Piauí Disciplina: Matemática Financeira Professor: Custódio Nascimento Análise e Resolução da prova de Auditor Fiscal da Fazenda Estadual do Piauí Disciplina: Professor: Custódio Nascimento 1- Análise da prova Neste artigo, faremos a análise das questões de cobradas na prova

Leia mais

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 2. ALGORITMOS Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 2 - Algoritmo 2.1: Introdução Antes de se utilizar uma linguagem de computador,

Leia mais

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3

Leia mais

Simulação Transiente

Simulação Transiente Tópicos Avançados em Avaliação de Desempenho de Sistemas Professores: Paulo Maciel Ricardo Massa Alunos: Jackson Nunes Marco Eugênio Araújo Dezembro de 2014 1 Sumário O que é Simulação? Áreas de Aplicação

Leia mais

1. Sistemas de numeração

1. Sistemas de numeração 1. Sistemas de numeração Quando mencionamos sistemas de numeração estamos nos referindo à utilização de um sistema para representar uma numeração, ou seja, uma quantidade. Sistematizar algo seria organizar,

Leia mais

MD Sequências e Indução Matemática 1

MD Sequências e Indução Matemática 1 Sequências Indução Matemática Renato Martins Assunção assuncao@dcc.ufmg.br Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br MD Sequências e Indução Matemática 1 Introdução Uma das tarefas mais importantes

Leia mais

Máquinas de Turing. Juliana Kaizer Vizzotto. Disciplina de Teoria da Computação. Universidade Federal de Santa Maria

Máquinas de Turing. Juliana Kaizer Vizzotto. Disciplina de Teoria da Computação. Universidade Federal de Santa Maria Universidade Federal de Santa Maria Disciplina de Teoria da Computação Roteiro Definição Formal de Máquina de Turing Mais exemplos Definição Formal de Máquina de Turing Uma máquina de Turing é uma 7-upla,

Leia mais

CI165 Introdução. André Vignatti. 31 de julho de 2014

CI165 Introdução. André Vignatti. 31 de julho de 2014 Introdução 31 de julho de 2014 Antes de mais nada... Os slides de 6 aulas (introdução, insertion sort, mergesort, quicksort, recorrências e limitantes de ordenação) foram originalmente feitos pelos Profs.

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

MODELAGEM COM EQUAÇÕES DIFERENCIAIS DE PRIMEIRA ORDEM E APLICAÇÕES À ECONOMIA

MODELAGEM COM EQUAÇÕES DIFERENCIAIS DE PRIMEIRA ORDEM E APLICAÇÕES À ECONOMIA MODELAGEM COM EQUAÇÕES DIFERENCIAIS DE PRIMEIRA ORDEM E APLICAÇÕES À ECONOMIA PAULO, João Pedro Antunes de Universidade Estadual de Goiás UnU de Iporá jpadepaula@hotmail.com RESUMO Esta pesquisa foi feita

Leia mais

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

3 Método de Monte Carlo

3 Método de Monte Carlo 25 3 Método de Monte Carlo 3.1 Definição Em 1946 o matemático Stanislaw Ulam durante um jogo de paciência tentou calcular as probabilidades de sucesso de uma determinada jogada utilizando a tradicional

Leia mais

Logo, para estar entre os 1% mais caros, o preço do carro deve ser IGUAL OU SUPERIOR A:

Logo, para estar entre os 1% mais caros, o preço do carro deve ser IGUAL OU SUPERIOR A: MQI 00 ESTATÍSTICA PARA METROLOGIA - SEMESTRE 008.0 Teste 6/05/008 GABARITO PROBLEMA O preço de um certo carro usado é uma variável Normal com média R$ 5 mil e desvio padrão R$ 400,00. a) Você está interessado

Leia mais

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR 6LPXODomR GH6LVWHPDV )HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR #5,6. Simulador voltado para análise de risco financeiro 3RQWRV IRUWHV Fácil de usar. Funciona integrado a ferramentas já bastante conhecidas,

Leia mais

Calculando probabilidades

Calculando probabilidades A UA UL LA Calculando probabilidades Introdução evento E é: P(E) = Você já aprendeu que a probabilidade de um nº deresultadosfavoráveis nº total de resultados possíveis Nesta aula você aprenderá a calcular

Leia mais

Aula 4 Estatística Conceitos básicos

Aula 4 Estatística Conceitos básicos Aula 4 Estatística Conceitos básicos Plano de Aula Amostra e universo Média Variância / desvio-padrão / erro-padrão Intervalo de confiança Teste de hipótese Amostra e Universo A estatística nos ajuda a

Leia mais

Matemática - UEL - 2010 - Compilada em 18 de Março de 2010. Prof. Ulysses Sodré Matemática Essencial: http://www.mat.uel.

Matemática - UEL - 2010 - Compilada em 18 de Março de 2010. Prof. Ulysses Sodré Matemática Essencial: http://www.mat.uel. Matemática Essencial Equações do Segundo grau Conteúdo Matemática - UEL - 2010 - Compilada em 18 de Março de 2010. Prof. Ulysses Sodré Matemática Essencial: http://www.mat.uel.br/matessencial/ 1 Introdução

Leia mais

O conceito de probabilidade

O conceito de probabilidade A UA UL LA O conceito de probabilidade Introdução Nesta aula daremos início ao estudo da probabilidades. Quando usamos probabilidades? Ouvimos falar desse assunto em situações como: a probabilidade de

Leia mais

Os limites da computação algorítmica

Os limites da computação algorítmica Capítulo 12 Os limites da computação algorítmica 12.1. Problemas que não podem ser resolvidos pelas MT. 12.2. Problemas indecidíveis para LRE 12.3. Problema da correspondência de Post 12.4. Problemas indecidíveis

Leia mais

GUIA DE REDAÇÃO PARA TRABALHO DE EM974

GUIA DE REDAÇÃO PARA TRABALHO DE EM974 GUIA DE REDAÇÃO PARA TRABALHO DE EM974 CONSIDERAÇÕES GERAIS O objetivo deste documento é informar a estrutura e a informação esperadas num texto de Trabalho de Graduação. O conteúdo do texto deverá ser

Leia mais

Inteligência Artificial. Metodologias de Busca

Inteligência Artificial. Metodologias de Busca Inteligência Artificial Metodologias de Busca 1 Solução de problemas como Busca Um problema pode ser considerado como um objetivo Um conjunto de ações podem ser praticadas para alcançar esse objetivo Ao

Leia mais

AV1 - MA 12-2012. (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, 02 1 1 0, 788 1 0, 980

AV1 - MA 12-2012. (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, 02 1 1 0, 788 1 0, 980 Questão 1. Uma venda imobiliária envolve o pagamento de 12 prestações mensais iguais a R$ 10.000,00, a primeira no ato da venda, acrescidas de uma parcela final de R$ 100.000,00, 12 meses após a venda.

Leia mais

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 UNIVERSIDADE FEDERAL DE VIÇOSA Departamento de Matemática - CCE Cálculo Numérico - MAT 271 Prof.: Valéria Mattos da Rosa As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia

Leia mais

ALP Algoritmos e Programação. . Linguagens para Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos

Leia mais

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da FUNÇÃO COMO CONJUNTO Definição 4.4 Seja f uma relação de A em B, dizemos que f é uma função de A em B se as duas condições a seguir forem satisfeitas: i) D(f) = A, ou seja, o domínio de f é o conjunto

Leia mais

APLICAÇÕES DA DERIVADA

APLICAÇÕES DA DERIVADA Notas de Aula: Aplicações das Derivadas APLICAÇÕES DA DERIVADA Vimos, na seção anterior, que a derivada de uma função pode ser interpretada como o coeficiente angular da reta tangente ao seu gráfico. Nesta,

Leia mais

O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO

O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO João Cesar Guirado Universidade Estadual de Maringá E-mail: jcguirado@gmail.com Márcio Roberto da Rocha Universidade Estadual de Maringá E-mail:

Leia mais