Algoritmos Randomizados Eduardo Laber Dois tipos de algoritmos randomizados Algoritmos Las Vegas – Sempre produzem a resposta correta – Tempo de execução é uma variável aleatória Exemplo: RandQs – Sempre produz seqüência ordenada – Tempo de término varia de execução para execução em uma dada instância Dois tipos de algoritmos randomizados Algoritmos Monte-Carlo – Podem produzir respostas incorretas – A probabilidade de erro pode ser cotada – Executando o algoritmo diversas vezes podemos tornar a probabilidade de erro tão pequena quanto se queira Exemplo: Min-Cut Problemas de decisão Problema de Primalidade – – Entrada: n inteiro Saída: sim, se n é primo não, se n é composto Problema de Coloração – – Entrada: Grafo G, inteiro k Saída: sim, se existe k-coloração para G não, caso contrário Algoritmos Monte-Carlo One-sided error – Probabilidade nula de erro quando responde sim (não). Probabilidade não-nula quando responde não (sim). Two-sided error – Probabilidade não-nula de erro quando responde sim e quando responde não. Game Tree Evaluation Definição: Uma árvore de jogo Td,k é uma árvore em que todo nó interno tem d filhos e toda folha está a uma distância 2k da raiz. Cada nó interno está associado a um operador OR ou AND. Além disso, os filhos de um nó associado a um operador OR (AND) estão associados a um operador AND (OR). Game Tree Evaluation Resultado = 1 AND T2,1 OR 0 Resultado = 0 OR OR 1 0 1 AND 1 T2,1 AND 0 0 0 A cada folha está associado um valor binário Game Tree Evaluation Objetivo: – Descobrir o resultado da árvore processando o número mínimo de folhas possíveis. Algoritmo determinístico: – Para todo algoritmo determinístico A, existe uma instância IA em que todas as folhas devem ser testadas. Note que a instância depende do algoritmo Game Tree Evaluation Seja a seguinte árvore de jogo: AND OR OR S1 S2 S3 S4 Game Tree Evaluation 0, se S1 S 2 é avaliada antes de S2 S1 S1 S 2 1, caso contrário 0, se S3 S 4 é avaliada antes de S4 S3 S3 S 4 1, caso contrário Algoritmo determinístico sempre precisa testar todas as folhas no pior caso. Terminologia T: árvore de jogo T0: árvore à esquerda de T T1: árvore à direita de T Op(T): operador associado a raiz de T Algoritmo Rand-Eval (T) Sorteie uma moeda ‘justa’ H {0,1} B = Rand-Eval (TH) Caso: – B=1 e Op(T)=OR, retorne 1 – B=1 e Op(T)=AND, retorne Rand-Eval(T1-H) – B=0 e Op(T)=OR, retorne Rand-Eval(T1-H) – B=0 e Op(T)=AND, retorne 0 Comentários Se resultado do AND=1, então Rand-Eval precisa avaliar ambos os filhos Se resultado do AND=0, Rand-Eval avalia na média não mais que 3/2 filhos Se resultado do OR=0, Rand-Eval avalia os dois filhos Se resultado do OR=1, Rand-Eval avalia na média não mais que 3/2 filhos OBS.: Se o AND é 1 os dois filhos OR assumem valor 1 (caso bom para o OR) Análise Hipótese de indução – Na média 3k folhas são avaliadas por Rand-Eval Base: k=1 AND OR OR S1 S2 S3 S4 Análise Caso 1) Resultado=1 – – Os dois OR são iguais a 1 Para avaliar um 0R, necessitamos de 3/2 testes na média 3 3 3 2 2 Análise Caso 2) Resultado=0 – – No pior caso somente um dos OR é 0 Com probabilidade ½ testa-se os dois OR e com probabilidade ½ testa-se um OR 1 1 3 11 2 2 3 2 2 2 4 Análise Assuma que a hipótese de indução vale para k. Provaremos para k+1. AND T2,k OR OR Análise Caso 1) Resultado=1 (AND=1) 3 cT2,k 1 2 cT2,k 3 3k 3k 1 2 Caso 2) Resultado=0 (AND=0) => pelo menos um dos OR é falso. 1 1 3 11 cT2,k 1 2 cT2,k cT2,k 2 cT2,k cT2,k 3k 1 2 2 2 4 Análise Sabendo que o total de folhas é n=4k, o resultado garante que o algoritmo avalia na média: n log4 3 n 0.793 Melhor que qualquer algoritmo determinístico ! Esse algoritmo é um do tipo Las Vegas. Teoria dos Jogos Rodrigo e Pedro jogam o seguinte jogo com os dedos: Pedro 1 dedo 2 dedos 1 dedo -10 10 2 dedos 20 -10 Rodrigo Teoria dos Jogos Se Pedro e Rodrigo escolhem o mesmo número de dedos => Pedro ganha. Se Pedro e Rodrigo escolhem números diferentes => Rodrigo ganha. Teoria dos Jogos Jogo de Soma 0 – A quantidade que um jogador ganha é igual a quantidade que o adversário perde. Zero Information Game – Um jogador não conhece a estratégia do adversário. Teoria dos Jogos Jogos de soma 0 podem ser representados por uma matriz de payoff. Mik Mik : quantidade que R ganha (C perde). Teoria dos Jogos Objetivo dos jogadores: Maximizar o lucro considerando a pior possibilidade – Rodrigo escolhe a configuração i (linha i) que maximiza Mink { Mik } – Pedro escolhe a coluna k que minimiza Maxi { Mik } Teoria dos Jogos Pedro Exemplo 1 dedo Rodrigo 2 dedos 1 dedo -10 20 2 dedos 20 -10 3 dedos 60 80 Rodrigo escolhe linha 3 e Pedro escolhe coluna 1 Teorema Para toda matriz de Payoff: max min M ik min max M ik i k k No exemplo, max min M ik 60 e i k min max M ik 80 k i i Teorema - Prova Sejam: i1, k1 arg max min M ik i k i 2, k 2 arg min max M ik k i i1 k1 i2 k2 M i1,k1 M i1,k 2 M i 2,k 2 Jogos com solução 0 -1 1 2 0 1 Solução: Linha=1 Coluna=1 -2 -1 0 Um jogo tem solução se max min M ik min max M ik i k k i Jogos com solução Solução: (i*, k*) Estratégia ótima para Rodrigo Estratégia ótima para Pedro Jogo com solução (Equilíbrio) Na solução, nenhum movimento de Rodrigo nem de Pedro pode melhorar suas situações. Jogos sem solução Em qualquer ponto um dos jogadores desejará se movimentar (não existe ótimo local). Estratégia de jogo aleatorizada Estratégias determinísticas: forma de jogar é única. Estratégias aleatorizadas: – Rodrigo joga de acordo com uma distribuição de probabilidade p=(p1, ..., pn) – Pedro joga de acordo com uma distribuição de probabilidade q=(q1, ..., qm) Estratégia de jogo randomizada Temos que: n m E payoff pT Mq pi M ik qk i 1 k 1 Estratégia ótima de Rodrigo é uma distribuição p que maximiza min pT Mq q Estratégia ótima de Pedro é uma distribuição q que minimiza max pT Mq p Teorema de Von Neumman’s Para qualquer jogo de soma 0 max min pT Mq min max pT Mq p q q p (p^, q^) é a solução do jogo Obs.: Se p é fixo, pTMq é uma função linear de q que é minimizada fazendo com que o qi com menor coeficiente seja igual a 1 => se Pedro conhece a distribuição utilizada por Rodrigo, a estratégia ótima de Pedro é determinística (e vice-versa). Exemplo 10 10 M 20 10 Se a estratégia de Rodrigo é pT = [1/2, 1/2] então q1 10 10 q1 Epayoff 1 2 ,1 2 5,0 20 10 q2 q2 Logo, o melhor que Pedro pode fazer é escolher q1=0 e q2=1. Teorema de Loomis Para todo jogo de soma 0 especificado por M, temos: max min p Mek min max e Mq T p k q i T i onde ek é um vetor em que a k-ésima coordenada é 1 e as demais são iguais a 0. Técnica de Yao Única técnica geral conhecida para provar limites inferiores para algoritmos aleatorizados Ideia: – Enxergar o projetista de algoritmos como o jogador das colunas e o adversário, aquele que escolhe entradas difíceis como o jogador das linhas Matriz de payoff Matriz M: medida de complexidade do algoritmo – Tempo de execução – Qualidade da solução obtida – Etc. Objetivos – Projetista: minimizar o tempo de execução – Adversário: maximizar o tempo de execução Matriz de payoff Estratégia pura ótima para projetista: – Algoritmo determinístico ótimo: minimiza o pior caso – Algoritmo aleatorizado ótimo: minimiza Jogador 2 Matriz de payoff max iI E[C (i, Aq )] Jogada 1 Jogada 2 Jogada 3 jogada 1 0 1 2 jogada 2 -1 0 1 jogada 3 -2 -1 0 Aq – Algoritmo aleatorizado que segue a distribuição q Ip – Entrada que segue a distribuição p Teorema de Loonis max min E[C ( I p , a)] min max E[C (i, Aq ] p aA q A - conjunto dos possíveis algoritmos colunas I – conjunto das possíveis entradas Significado: iI O tempo esperado do melhor algoritmo determinístico para a pior distribuição possível de entradas é igual ao tempo esperado do melhor algoritmo aleatorizado Princípio de Yao Para todas distribuições p sobre I: min E[C( I p , a)] min max E[C(i, Aq ] aA Implicação: – q iI Para determinar um limite inferior para o tempo de execução de um algoritmo randomizado, basta determinar um limite inferior para o valor esperado do melhor algoritmo determinístico para uma dada distribuição das entradas Vantagem – A distribuição pode ser escolhida Limite inferior para árvore de jogos Arvore T2,k é equivalente a uma árvore de NOR’s – – Nor(a,b) = 1 , se a = 0 e b = 0 Nor(a,b) = 0 , caso contrário Limite inferior para árvore de jogos Cada folha recebe 1 com probabilidade p 3 5 p 2 Lema : a probabilidade de um nó de T2,k ter saida 1 é p – – Nor=1 seus dois filhos são 0 Assumindo por indução que a probabilidade de seus filhos serem 1 é p Pr [nor 1] (1 p) p 2 Limite inferior para árvore de jogos Teoriema – Existe um algoritmo ótimo para a distribuição apresentada que percorre a árvore em profundidade, testando somente os nós necessários Limite inferior para árvore de jogos Análise – W(h) – valor esperado do número de folhas testadas para determinar o resultado de um nó a uma distância h das folhas w(h) w(h 1) (1 p ) w(h 1) w(1) 2 p – Fazendo h = log2(n) , temos w(log 2 n) n 0,694 – Este limite pode ser melhorado para n0,793 considerando uma distribuição mais adequada