genda nálise e Técnicas de lgoritmos Jorge Figueiredo onceitos ásicos O Problema das Rainhas Template Genérico Mochila inária acktracking and ranch-and-ound Jogo da Troca de olas Jogo da Troca de olas n bolas vermelhas e n bolas pretas Tabuleiro (uma linha) com n n + posições olas com a mesma cor em extremidades diferentes, e um espaço vazio separando o conjunto de de bolas diferentes. Movimentos possíveis: ola vermelha para a esquerda e preta para a direita Mover um espaço se se o espaço está vazio Pular sobre exatamente uma bola de de cor diferente, se se o espaço logo após a bola estiver vazio Problema do Labirinto Problema do Labirinto
Jogo do Resta Um O Que Estes Problemas Têm em omum? Tomar uma série de de decisões entre várias opções. ada decisão leva a um novo conjunto de de decisões. lguma(s) seqüência(s) de de decisões pode(m) conduzir a solução do do problema. Encontrar solução:.. Fazer uma lista com todos os os candidatos possíveis... Examinar todas as as respostas ou ou alguma delas... Retornar a solução. Problemas de de otimização omo Resolver? acktracking Estratégia para sistematicamente a lista de de possíveis soluções, eliminando (explicitamente) a verificação de de uma boa parte dos possíveis candidatos. Pode ser considerado como uma variação de de FS. Usa uma árvore implícita. andidatos Restrições Força bruta: na na prática esta abordagem não é muito eficiente porque a lista de de candidatos é grande. Lixo Idéia Geral: Usando o Espaço de Solução Soluções representadas por n-tuplas ou ou vetores de de solução: <v <v,, v,,...,..., v n > ada v i i é escolhido a partir de de um conjunto finito de de opções S i. i. Inicia com um vetor vazio. Em cada etapa o vetor é extendido com um novo valor. O novo vetor é então avaliado. Se Se não for for solução parcial, o último valor do do vetor é eliminado e outro candidato é considerado. Restrições Restrições Explícitas: correspondem às àsregras que restringem cada v i i em tomar valores de de um determinado conjunto. Está relacionado com a representação do do problema e as as escolhas possíveis. Restrições Implícitas: determinam como os osv i s i sse se relacionam entre si. si.
O Problema das Rainhas olocar rainhas em um tabuleiro de de xadrez de de modo que nenhuma rainha ataque uma outra. Solução: uma -tupla <v <v,, v,,, v > em que v i i indica a coluna da darainha i. i. Restrições Explícitas: S i i = {, {,,,,,, }, }, i i n. n. Restrições implícitas: Nenhum v i i pode ser igual ao aooutro. uas rainhas não podem estar na namesma diagonal. Tamanho do do espaço solução: Força ruta:.6.65.6 om R.E.:.. om R.I.:!.!. Soma de Subconjuntos Sejam n números positivos (W i, i, i i n) n) e um valor positivo M, M, achar todos os ossubconjuntos de de W i i cuja soma é M. M. Solução: uma k-tupla com os osíndices dos números escolhidos. Restrições Explícitas: v i i = {j {j j j é inteiro, j j n}. n}. Restrições Implícitas: v i i v j, j, i i j. j. Σ = M. M. v i i < v i+ i+,, i i < n. n. Geração da Árvore Exemplo: Problema das rainhas Para criar a árvore que representa o espaço solução fazemos:.. omeçar da da raiz e gerar outros nós... Um nó nó que foi foi gerado e que não foi foi totalmente explorado é dito nó nó vivo... Um nó nó cujos filhos estão sendo gerados é dito em expansão... Usar função de de poda para detonar a geração de de alguns filhos, se se for for o caso. 5. 5. Um nó nó morto é aquele que foi foi podado ou ou todos os os filhos já já foram gerados. lgoritmo Genérico Mochila inária acktrack(v[..k]) v é um vetor promissor de tamanho k if v é solução then escreva v for cada vetor promissor w de tamanho k+ em que w[..k] = v[..k] do acktrack(w[..k+]) onsiderar n tipos de de objetos (um número adequado de de cada objeto) ada objeto iitem: valor (v (v i ) i ) e peso (w (w i ) i ) Mochila com capacidade W Para concretizar: W = o ::(w=, v=) o ::(, (, 5) 5) o ::(, (, 6) 6) o ::(5, (5, )
Mochila inária: lgoritmo Mochila inária (Variação) ackpack(i, r) maior lucro usando objetos de tipos i até n e que não exceda r b for k i to n do if w[k] r then b max(b, v[k]+ ackpack(k, r w[k])) return b Um objeto de de cada tipo. Usar uma função extra que limita poda: Usar a estratégia gulosa para mochila fracionária para computar um limite superior de de lucro. Ordenar os os objetos por valor/peso. uas possibilidades de de backtracking: Limite de de peso. Se Se não existe possibilidade da da melhor estimativa de de lucro ser maior do do que o melhor lucro já já encontrado. Mochila inária (Variação) Mochila inária (Variação) onsidere W= 6 6 e os os seguintes objetos: ii v ii w ii v i /w i /w ii R$5 R$5 R$ 5 R$ 6 R$5 9 R$ 5 R$ 5 R$ Valor = R$5 Peso = E.L = R$ 5 Valor = R$ Peso = E.L = R$ 5 Valor = R$ Peso = E.L = R$ 79 Mochila inária (Variação) ranch-and-ound R$ 5 R$5 R$ 5 R$ R$ 5 R$5 R$ R$ 79 Variação de de backtracking. Necessidade de de função de de poda. Em alguns problemas, poda pode ser realizada mais cedo se se usarmos FS em vez de de FS. n = acktracking + Função de de poda FS + FS + PQ R$ R$5 R$ 5 R$ 5 R$ 75 max R$ R$9 R$9 R$ 9 R$5 R$ R$ R$ 555
Mochila inária (Variação) Mochila inária (n) onsidere W= 6 6 e os os seguintes objetos: R$ R$ 5 ii v ii w ii v i /w i /w ii R$5 R$5 R$ 5 R$ 6 R$5 9 R$ 5 R$ 5 R$ R$ R$ 5 R$ 5 R$5 R$ 5 max R$ R$9 R$5 R$9 R$ 9 R$5 R$ R$ R$ 555 R$ R$ 79 n nagentes para n tarefas. ada agente deve executar exatamente uma única tarefa. Se ao ao agente iié atribuída a tarefa j, j, um custo i,j i,j é identificado. Problema é atribuir tarefas aos agentes para minimizar o custo total de de executar as as n tarefas. 5 Usar n. Identificar função de de poda. Guiar FS (est-first Search) 5 9 7 9 7 [..7] 5 9 [..7] 5 9 [..7] 6 6 65 65 7 7 5
5 9 [..7] 5 9 [..7] 6 ; 6 6 ; 6 ; 59 ; 59 65 ; 6 65 ; 6 7 7 5 9 [..7] 5 9 [..6] 6 ; 6 ; ; c ; d 6 ; 6 ; ; c ; d ; 59 6 ; 59 6 65 ; 6 ; ; c ; d 65 ; 6 ; ; c ; d 65 65 7 7 Eficiência de acktracking e n Exercício: O Problema do aixeiro Viajante Fatores que afetam a eficiência: tempo para gerar o próximo v k k ;; ardinalidade de de S kk satisfazendo as as restrições; tempo de de execução da da função de de poda; ardinalidade de de S kk satisfazendo a função de de poda. Uma boa função de de poda reduz substancialmente o número de de nodos considerados. Existe um tradeoff: uma boa função de de poda versus o tempo de de avaliá-la. Para estimar o número de de nodos gerados, podemos usar nálise Monte-arlo (simulação estatística). 6
Exercício: O Problema do aixeiro Viajante 7