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 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. 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

Complemento IV Introdução aos Algoritmos Genéticos

Complemento IV Introdução aos Algoritmos Genéticos Complemento IV Introdução aos Algoritmos Genéticos Esse documento é parte integrante do material fornecido pela WEB para a 2ª edição do livro Data Mining: Conceitos, técnicas, algoritmos, orientações e

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

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

Algoritmos Randomizados: Introdução

Algoritmos Randomizados: Introdução Algoritmos Randomizados: Introdução Celina Figueiredo Guilherme Fonseca Manoel Lemos Vinícius Sá 26º Colóquio Brasileiro de Matemática IMPA Rio de Janeiro Brasil 2007 Resumo Definições Monte Carlo Variáveis

Leia mais

O trabalho pioneiro nesta área remonta a Ulam, que o teria inventado em 1946 ao estudar as possibilidades de ganhar no jogo de cartas Solitário.

O trabalho pioneiro nesta área remonta a Ulam, que o teria inventado em 1946 ao estudar as possibilidades de ganhar no jogo de cartas Solitário. Prof. Lorí Viali, Dr. viali@mat.ufrgs.br http://www.ufrgs.br/~viali/ Números aleatórios (NA) são elementos básicos necessários na simulação de quase todos os sistemas discretos. Eles podem ser utilizados

Leia mais

2 Máquinas de Estados em Jogos Eletrônicos

2 Máquinas de Estados em Jogos Eletrônicos 2 Máquinas de Estados em Jogos Eletrônicos Máquinas de Estados são um conceito importante em várias áreas da ciência. Em particular, a engenharia e a computação utilizam Máquinas de Estados como ferramentas

Leia mais

Avaliação de Desempenho de Sistemas Discretos

Avaliação de Desempenho de Sistemas Discretos Avaliação de Desempenho de Sistemas Discretos Parte IV: Simulação Professor: Reinaldo Gomes reinaldo@dsc.ufcg.edu.br Parte 4 Simulação P A R T E Etapas básicas em um estudo de simulação Geração de números

Leia mais

Limitações dos Computadores

Limitações dos Computadores Limitações dos Computadores Baseado em Computers Ltd. What they really can t do, David Harel. Oxford University Press, 2000. Computadores e Redes de Comunicação Mestrado em Gestão de Informação, FEUP 2004/07

Leia mais

Simulação Estocástica

Simulação Estocástica Simulação Estocástica O que é Simulação Estocástica? Simulação: ato ou efeito de simular Disfarce, fingimento,... Experiência ou ensaio realizado com o auxílio de modelos. Aleatório: dependente de circunstâncias

Leia mais

Avaliação de Desempenho

Avaliação de Desempenho Avaliação de Desempenho Aulas passadas Modelagem de sistemas via cadeias de Markov Aula de hoje Introdução à simulação Gerando números pseudo-aleatórios 1 O Ciclo de Modelagem Sistema real Criação do Modelo

Leia mais

Geração de Números Aleatórios e Simulação

Geração de Números Aleatórios e Simulação Departamento de Informática Geração de Números Aleatórios e imulação Métodos Quantitativos LEI 26/27 usana Nascimento (snt@di.fct.unl.pt) Advertência Autores João Moura Pires (jmp@di.fct.unl.pt) usana

Leia mais

3 ALGORITMOS GENÉTICOS : CONCEITOS BÁSICOS E EXTENSÕES VINCULADAS AO PROBLEMA DE MINIMIZAÇÃO DE PERDAS

3 ALGORITMOS GENÉTICOS : CONCEITOS BÁSICOS E EXTENSÕES VINCULADAS AO PROBLEMA DE MINIMIZAÇÃO DE PERDAS 3 ALGORITMOS GENÉTICOS : CONCEITOS BÁSICOS E EXTENSÕES VINCULADAS AO PROBLEMA DE MINIMIZAÇÃO DE PERDAS 3.1 - Conceitos Básicos Entendemos como algoritmo um conjunto predeterminado e bem definido de regras

Leia mais

- Computação Evolutiva -

- Computação Evolutiva - - Computação Evolutiva - Prof. Dr. Cícero Garrozi DEINFO - UFRPE PPGIA@UFRPE cicerog@gmail.com Site da disciplina: http://cicerog.blogspot.com Sumário Situando a Computação Evolucionária Metáfora principal

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

Máquinas de Turing 1

Máquinas de Turing 1 Máquinas de Turing 1 Agenda Máquinas de Turing (TM) Alan Turing Motivação Tese de Church-Turing Definições Computação Configuração de TM Reconhecedores vs. Decisores 2 Alan Turing Alan Turing é um dos

Leia mais

Pesquisa Operacional

Pesquisa Operacional GOVERNO DO ESTADO DO PARÁ UNIVERSIDADE DO ESTADO DO PARÁ CENTRO DE CIÊNCIAS NATURAIS E TECNOLOGIA DEPARTAMENTO DE ENGENHARIA Pesquisa Operacional Tópico 4 Simulação Rosana Cavalcante de Oliveira, Msc rosanacavalcante@gmail.com

Leia mais

Algoritmos Genéticos (GA s)

Algoritmos Genéticos (GA s) Algoritmos Genéticos (GA s) 1 Algoritmos Genéticos (GA s) Dado um processo ou método de codificar soluções de um problema na forma de cromossomas e dada uma função de desempenho que nos dá um valor de

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

CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO

CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO MATERIAL INSTRUCIONAL ESPECÍFICO Tomo V 1 Questão 1 Questão 1. 1 O problema P versus NP é um problema ainda não resolvido e um dos mais estudados em Computação.

Leia mais

Criptografia e Teoria da Complexidade

Criptografia e Teoria da Complexidade Denise Goya (dhgoya@ime.usp.br) Joel Uchoa (joelsu@ime.usp.br) DCC - IME - USP MAC 5722 - Complexidade Computacional Prof. José Augusto Ramos Soares Seminário - novembro/2008 Sumário Introdução 1 Introdução

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

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

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais Aula 1 - Apresentação aos Algoritmos Computacionais O que é a Disciplina? Disciplina de Projeto e Análise de Algoritmos Esta é uma disciplina de Algoritmos em nível de Pós-Graduação! Temas a serem abordados:

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

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

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos Classes de Complexidades de Problemas Prof. Osvaldo Luiz de Oliveira Estas anotações devem ser complementadas por apontamentos em aula. Tempo polinomial Um algoritmo A, com entrada

Leia mais

Introdução à Simulação

Introdução à Simulação Introdução à Simulação O que é simulação? Wikipedia: Simulação é a imitação de alguma coisa real ou processo. O ato de simular algo geralmente consiste em representar certas características e/ou comportamentos

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

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

Universidade Federal do Paraná Departamento de Informática. Reconhecimento de Padrões. Revisão de Probabilidade e Estatística

Universidade Federal do Paraná Departamento de Informática. Reconhecimento de Padrões. Revisão de Probabilidade e Estatística Universidade Federal do Paraná Departamento de Informática Reconhecimento de Padrões Revisão de Probabilidade e Estatística Luiz Eduardo S. Oliveira, Ph.D. http://lesoliveira.net Conceitos Básicos Estamos

Leia mais

1. Método Simplex. Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção. Pesquisa Operacional II Profa. Dra. Lílian Kátia de Oliveira

1. Método Simplex. Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção. Pesquisa Operacional II Profa. Dra. Lílian Kátia de Oliveira Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção. Método Simple.. Solução eata para os modelos de Programação Linear O modelo de Programação Linear (PL) reduz um sistema real a um conjunto

Leia mais

INF 1771 Inteligência Artificial

INF 1771 Inteligência Artificial Edirlei Soares de Lima INF 1771 Inteligência Artificial Aula 04 Algoritmos Genéticos Introdução Algoritmos genéticos são bons para abordar espaços de buscas muito grandes e navegálos

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

A Otimização Colônia de Formigas

A Otimização Colônia de Formigas A Otimização Colônia de Formigas Estéfane G. M. de Lacerda Departamento de Engenharia da Computação e Automação UFRN 22/04/2008 Índice A Inspiração Biológica O Ant System Aplicado ao PCV O Ant System Aplicado

Leia mais

Avaliando o que foi Aprendido

Avaliando o que foi Aprendido Avaliando o que foi Aprendido Treinamento, teste, validação Predição da performance: Limites de confiança Holdout, cross-validation, bootstrap Comparando algoritmos: o teste-t Predecindo probabilidades:função

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

2. Objetivos do Sistema

2. Objetivos do Sistema Desenvolvimento de Um Programa Interpretador e Resolvedor para Máquinas de Estado Finito Adriana Postal 1, Ana Paula Fredrich 1, Cassiano Cesar Casagrande 1, Evaristo Wychoski Benfatti 1, Josué Pereira

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

Modelamento e simulação de processos

Modelamento e simulação de processos Modelamento e simulação de processos 4. Método de Monte Carlo Prof. Dr. André Carlos Silva 1. INTRODUÇÃO O Método de Monte Carlo (MMC) é um método estatístico utilizado em simulações estocásticas com diversas

Leia mais

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA DEPARTAMENTO: Fundamentos da Computação CURSO: Bacharelado em Sistemas de Informação DISCIPLINA: Fundamentos da Computação CÓDIGO: 4610H CRÉDITOS: 04 CARGA HORÁRIA: 60 horas-aula VALIDADE: a partir de

Leia mais

Primeira Lista de Exercícios de Estatística

Primeira Lista de Exercícios de Estatística Primeira Lista de Exercícios de Estatística Professor Marcelo Fernandes Monitor: Márcio Salvato 1. Suponha que o universo seja formado pelos naturais de 1 a 10. Sejam A = {2, 3, 4}, B = {3, 4, 5}, C =

Leia mais

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA 136 ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA FILITTO, Danilo 1 Resumo: Os algoritmos Genéticos inspiram-se no processo de evolução natural e são utilizados para resolver problemas de busca e otimização

Leia mais

Cálculo numérico. ln 1 = 0. Representação numérica. Exemplo. Exemplos. Professor Walter Cunha. ln 1. I s

Cálculo numérico. ln 1 = 0. Representação numérica. Exemplo. Exemplos. Professor Walter Cunha. ln 1. I s Representação numérica Cálculo numérico Professor Walter Cunha Um conjunto de ferramentas ou métodos usados para se obter a solução de problemas matemáticos de forma aproximada. Esses métodos se aplicam

Leia mais

MODELO DE AVALIAÇÃO EM PROJETOS DE INVESTIMENTO DE CAPITAL

MODELO DE AVALIAÇÃO EM PROJETOS DE INVESTIMENTO DE CAPITAL MODELO DE AVALIAÇÃO EM PROJETOS DE INVESTIMENTO DE CAPITAL Marcelo Maciel Monteiro Universidade Federal Fluminense, Engenharia de Produção Rua Martins Torres 296, Santa Rosa, Niterói, RJ, Cep 24240-700

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

INFORMÁTICA E TEORIA DA COMPUTAÇÃO

INFORMÁTICA E TEORIA DA COMPUTAÇÃO CAPA INFORMÁTICA E TEORIA DA COMPUTAÇÃO 2014 SUMARÉ Índice Informática... 02 Etimologia... 02 Origem e Concepção... 03 Teoria da Computação... 03 Conclusão... 04 Informática A informática é um termo usado

Leia mais

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson.

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios Aula 01 Slide 1 BIBLIOGRAFIA SCHILDT H. C Completo e Total, Makron Books. SP, 1997. Curso de linguagem C da UFMG. ZIVIANI,

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

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

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

Otimização de Recuperação de Informação usando Algoritmos Genéticos

Otimização de Recuperação de Informação usando Algoritmos Genéticos Otimização de Recuperação de Informação usando Algoritmos Genéticos Neide de Oliveira Gomes, M. Sc., nog@inpi.gov.br Prof. Marco Aurélio C. Pacheco, PhD Programa de Doutorado na área de Métodos de Apoio

Leia mais

O que queremos. Processamento Estatístico da Linguagem Natural. Parsing Morfológico. Regras Simples. Adicionando palavras. Regras Derivacionais

O que queremos. Processamento Estatístico da Linguagem Natural. Parsing Morfológico. Regras Simples. Adicionando palavras. Regras Derivacionais Processamento Estatístico da Linguagem Natural Aula 5 Professora Bianca (Sala 302 Bloco E) bianca@ic.uff.br http://www.ic.uff.br/~bianca/peln/ O que queremos Algo que faça automaticamente um mapeamento

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

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

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

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

Autómatos finitos não determinísticos (AFND)

Autómatos finitos não determinísticos (AFND) Autómatos finitos não determinísticos (AFND) [HMU00](Cap 2.3) Computações não determinísticas: o estado seguinte não é univocamente determinado pelo estado actual.num autómato finito (não-determínistico):

Leia mais

Algoritmos. Cláudio Barbosa contato@claudiobarbosa.pro.br

Algoritmos. Cláudio Barbosa contato@claudiobarbosa.pro.br Algoritmos Partes básicas de um sistema computacional: Hardware, Software e Peopleware Hardware - Componentes físicos de um sistema de computação, incluindo o processador, memória, dispositivos de entrada,

Leia mais

Lista n 0 1 de Exercícios de Teoria da Computação

Lista n 0 1 de Exercícios de Teoria da Computação Lista n 0 1 de Exercícios de Teoria da Computação UFU-Curso de Bacharelado em Ciência da Computação - 7 0 período Profa. Sandra de Amo Exercícios de Revisão : Autômatos e Gramáticas 1. Mostre que a linguagem

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

Método Monte-Carlo. Alexandre Rosas. 23 de Março de 2009. Departamento de Física Universidade Federal da Paraíba

Método Monte-Carlo. Alexandre Rosas. 23 de Março de 2009. Departamento de Física Universidade Federal da Paraíba Departamento de Física Universidade Federal da Paraíba 23 de Março de 2009 O que são os métodos de Monte-Carlo? Métodos numéricos que utilizam amostragem estatística (em contraposição a métodos determinísticos)

Leia mais

Introdução. Métodos de inferência são usados para tirar conclusões sobre a população usando informações obtidas a partir de uma amostra.

Introdução. Métodos de inferência são usados para tirar conclusões sobre a população usando informações obtidas a partir de uma amostra. Métodos Monte Carlo Introdução Métodos de inferência são usados para tirar conclusões sobre a população usando informações obtidas a partir de uma amostra. Estimativas pontuais e intervalares para os parâmetros;

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

Introdução à Programação de Computadores

Introdução à Programação de Computadores 1. Objetivos Introdução à Programação de Computadores Nesta seção, vamos discutir os componentes básicos de um computador, tanto em relação a hardware como a software. Também veremos uma pequena introdução

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br Complexidade de Algoritmos Computabilidade: Um problema é computável

Leia mais

Curso: Logística e Transportes Disciplina: Estatística Profa. Eliane Cabariti. Distribuição Normal

Curso: Logística e Transportes Disciplina: Estatística Profa. Eliane Cabariti. Distribuição Normal Curso: Logística e Transportes Disciplina: Estatística Profa. Eliane Cabariti Distribuição Normal 1. Introdução O mundo é normal! Acredite se quiser! Muitos dos fenômenos aleatórios que encontramos na

Leia mais

SLAG - Resolvendo o Problema do Caixeiro Viajante Utilizando Algoritmos Genéticos

SLAG - Resolvendo o Problema do Caixeiro Viajante Utilizando Algoritmos Genéticos SLAG - Resolvendo o Problema do Caixeiro Viajante Utilizando Algoritmos Genéticos Fredson Vieira Costa 1, Fábio Silveira Vidal 1, Claudomiro Moura Gomes André 1 1 Curso de Bacharelado em Ciência da Computação

Leia mais

Aula 1: Medidas Físicas

Aula 1: Medidas Físicas Aula 1: Medidas Físicas 1 Introdução A Física é uma ciência cujo objeto de estudo é a Natureza. Assim, ocupa-se das ações fundamentais entre os constituíntes elementares da matéria, ou seja, entre os átomos

Leia mais

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Introdução a Computação Prof. Fernando Maia da Mota mota.fernandomaia@gmail.com CPCX/UFMS Fernando Maia da Mota 1 Computadores são dispositivos que só sabem fazer um tipo de

Leia mais

CAPÍTULO 1 INTRODUÇÃO 1.1 INTRODUÇÃO

CAPÍTULO 1 INTRODUÇÃO 1.1 INTRODUÇÃO CAPÍTULO 1 INTRODUÇÃO 1.1 INTRODUÇÃO Em quase todas as nossas atividades diárias precisamos enfrentar filas para atender as nossas necessidades. Aguardamos em fila na padaria, nos bancos, quando trafegamos

Leia mais

CURSO: TÉCNICO EM INFORMÁTICA NA MODALIDADE EAD

CURSO: TÉCNICO EM INFORMÁTICA NA MODALIDADE EAD LÓGIC DE PROGRMÇÃO CURSO: TÉCNICO EM INFORMÁTIC N MODLIDDE ED Disciplina: Lógica de Programação Profa. Jaqueline F. Domenciano Meu nome é Jaqueline F. Domenciano. Sou Especialista em Educação à Distância,

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 02 Um pouco da história da computação humberto@bcc.unifal-mg.edu.br Última aula... Fundamentos de Matemática; Medida do Tempo de Execução

Leia mais

Reduções da segurança de esquemas criptográficos: Sequências de Jogos

Reduções da segurança de esquemas criptográficos: Sequências de Jogos Reduções da segurança de esquemas criptográficos: Sequências de Jogos M. B. Barbosa @ di.uminho.pt mbb@di.uminho.pt Departamento de Informática Escola de Engenharia Universidade do Minho Abril de 2006

Leia mais

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP Algoritmos e Programação Ricardo Argenton Ramos Baseado nos slides do professor Jadsonlee da Silva Sá Ementa Conceito de algoritmo. Lógica de programação e programação estruturada. Linguagem de definição

Leia mais

Introdução às Redes Neurais Artificiais

Introdução às Redes Neurais Artificiais Introdução às Redes Neurais Artificiais Treinamento via Algoritmos Genéticos Prof. João Marcos Meirelles da Silva http://www.professores.uff.br/jmarcos Departamento de Engenharia de Telecomunicações Escola

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

Programação de Computadores

Programação de Computadores Programação de Computadores INTRODUÇÃO AOS ALGORITMOS E À PROGRAMAÇÃO DE COMPUTADORES PARTE 1 Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais Programas e Programação

Leia mais

Inferência Estatística. Amostragem Estatística. Características das Amostragens Estatísticas. Tipos de Amostragens Estatísticas

Inferência Estatística. Amostragem Estatística. Características das Amostragens Estatísticas. Tipos de Amostragens Estatísticas Fenômenos Estatísticos Classificam-se em: Fenômenos Coletivos ou de Massa - Não podem ser definidos por uma simples observação (natalidade, mortalidade, preço médio de veículos usados em Curitiba, etc.).

Leia mais

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Computabilidade 2012/2013 Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Capítulo 1 Computabilidade 1.1 A noção de computabilidade Um processo de computação

Leia mais

Introdução à Lógica de Programação

Introdução à Lógica de Programação Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Estruturas de dados Representação computacional das informações do problema ser resolvido Informações podem ser de

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

Introdução às Linguagens de Programação

Introdução às Linguagens de Programação Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas Departamento de Ciências

Leia mais

AULAS 13, 14 E 15 Correlação e Regressão

AULAS 13, 14 E 15 Correlação e Regressão 1 AULAS 13, 14 E 15 Correlação e Regressão Ernesto F. L. Amaral 23, 28 e 30 de setembro de 2010 Metodologia de Pesquisa (DCP 854B) Fonte: Triola, Mario F. 2008. Introdução à estatística. 10 ª ed. Rio de

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 14 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas Exponenciais - Algoritmos Exponenciais usando Tentativa e Erro - Heurísticas para

Leia mais

Lição 1 Introdução à programação de computadores

Lição 1 Introdução à programação de computadores Lição Introdução à programação de computadores Introdução à Programação I Objetivos Ao final desta lição, o estudante será capaz de: Identificar os diferentes componentes de um computador Conhecer linguagens

Leia mais

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

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

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

2. Sistemas de Numeração, Operações e Códigos. 2. Sistemas de Numeração, Operações e Códigos 1. Números Decimais. Objetivos.

2. Sistemas de Numeração, Operações e Códigos. 2. Sistemas de Numeração, Operações e Códigos 1. Números Decimais. Objetivos. Objetivos 2. Sistemas de Numeração, Operações e Códigos Revisar o sistema de numeração decimal Contar no sistema de numeração binário Converter de decimal para binário e vice-versa Aplicar operações aritméticas

Leia mais

RECUPERAÇÃO DE DOCUMENTOS TEXTO USANDO MODELOS PROBABILISTICOS ESTENDIDOS

RECUPERAÇÃO DE DOCUMENTOS TEXTO USANDO MODELOS PROBABILISTICOS ESTENDIDOS ISBN 978-85-61091-05-7 Encontro Internacional de Produção Científica Cesumar 27 a 30 de outubro de 2009 RECUPERAÇÃO DE DOCUMENTOS TEXTO USANDO MODELOS PROBABILISTICOS ESTENDIDOS Marcello Erick Bonfim 1

Leia mais

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados) 1 UNIVERSIDADE DO CONTESTADO / UnC CAMPUS CONCÓRDIA/SC CURSO DE SISTEMAS DE INFORMAÇÃO Fundamentos em Informática (Sistemas de Numeração e Representação de Dados) (Apostila da disciplina elaborada pelo

Leia mais

Teste de Hipótese para uma Amostra Única

Teste de Hipótese para uma Amostra Única Teste de Hipótese para uma Amostra Única OBJETIVOS DE APRENDIZAGEM Depois de um cuidadoso estudo deste capítulo, você deve ser capaz de: 1.Estruturar problemas de engenharia de tomada de decisão, como

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

IA Colônia de Formigas. Prof. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

IA Colônia de Formigas. Prof. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br IA Colônia de Formigas Prof. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Sumário Introdução O Experimento da Ponte Binária. Ant System Aplicado ao PCV. Elitist Ant System. Introdução Otimização colônia

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

Figura 1.1: Exemplo de links patrocinados no Google

Figura 1.1: Exemplo de links patrocinados no Google 1 Links Patrocinados 1.1 Introdução Links patrocinados são aqueles que aparecem em destaque nos resultados de uma pesquisa na Internet; em geral, no alto ou à direita da página, como na Figura 1.1. Figura

Leia mais

Programas Interativos: Valores Aleatórios

Programas Interativos: Valores Aleatórios Programação Funcional UFOP DECOM 2013 2 Aula prática Programas Interativos: Valores Aleatórios José Romildo Malaquias Resumo O objetivo desta aula é aprender a usar números aleatórios em Haskell. Para

Leia mais

Autômatos Finitos Não-Determinísticos para Diagnóstico de Falhas em Sistemas de Potência

Autômatos Finitos Não-Determinísticos para Diagnóstico de Falhas em Sistemas de Potência Autômatos Finitos Não-Determinísticos para Diagnóstico de Falhas em Sistemas de Potência Ricardo Linden1 Victor Navarro Araújo Lemos da Silva2 Resumo: Este artigo apresenta uma proposta de uma aplicação

Leia mais