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 de Ouro Preto 24 de julho de 2017 Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 1 / 36
Avisos Site da disciplina: http://www.decom.ufop.br/marco/ Lista de e-mails: bcc204@googlegroups.com Para solicitar acesso: http://groups.google.com/group/bcc204 Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 2 / 36
Conteúdo 1 Problemas Combinatórios 2 Grafo de Estados 3 Busca em Grafos de Estados 4 Busca Não Informada Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 3 / 36
Problemas Combinatórios Definição Um problema combinatório é um problema que possui um conjunto de elementos (ou variáveis) e para sua solução é exigida uma combinação de um subconjunto destes elementos. Diferentes combinações possuem diferentes valores, porém, o objetivo é otimizar a solução (achar a de maior valor maximização ou a de menor valor minimização) de acordo com a função de avaliação. As combinações são limitadas por restrições, que são regras que definem se uma combinação é viável ou inviável. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 4 / 36
Problemas Combinatórios Exemplo de problema combinatório. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 5 / 36
Problemas Combinatórios Mais Definições O espaço de busca de um problema combinatório é o conjunto de todas as soluções possíveis, podendo ser restrito as soluções viáveis ou não. Uma solução ótima global é uma solução viável que atinge o melhor valor possível de acordo com a função de avaliação de um problema combinatório. Podemos ter uma ou múltiplas soluções ótimas para um problema, todas com o mesmo valor da função de avaliação, porém, com configurações diferentes. Ao explorarmos o espaço de busca utilizando alguma técnica, realizamos movimentos entre soluções, ou seja, a partir de uma solução atual, a alteramos de uma determinada maneira e chegamos a uma outra solução. Duas soluções que se diferem entre si por um movimento são ditas vizinhas. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 6 / 36
função de avaliação e Ótimo Global Gráfico da função f (x, y) = -(x 2 + y 2 )+4. A solução ótima (0, 0, 4) é indicada por um ponto vermelho. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 7 / 36
Viabilidade Exemplo de região viável (em azul) de um problema com duas variáveis contínuas x 1 e x 2. As linhas indicam as restrições. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 8 / 36
Problemas Combinatórios Mais Definições Uma solução ótima local ou subótima é uma solução viável que atinge o melhor valor de função de avaliação de um problema combinatório entre as soluções vizinhas. Exemplo de ótimo local e global em um problema de minimização. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 9 / 36
Problema Combinatório Caracterização Em resumo, problema combinatório é composto dos seguintes componentes: Função de avaliação; Conjunto de elementos; Conjunto de restrições. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 10 / 36
Estados, Espaços de Estados e Transições Definições Um estado é uma configuração de um sistema, tal qual uma solução de um problema combinatório. Soluções parciais para um problema também são consideradas como estados válidos; O espaço de estados está para os estados assim como o espaço de busca está para soluções de um problema combinatório; O estado inicial é uma configuração da qual se parte em busca de uma solução, e o estado final é a configuração ideal e completa; As transições estão para os estados assim como os movimentos estão para soluções de um problema combinatório. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 11 / 36
Grafo de Estados Definição Um grafo de estados representa um espaço de estados, exibindo como estes estados se relaciona; Os vértices representam os estados, e as arestas entre os diferentes estados indicam os possíveis transições que levam de um estado a outro; Eventualmente, alguma transição pode não alterar um estado, o que pode ser representado por um laço. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 12 / 36
Exemplo O Problema de Travessia Em uma canoa de dois lugares, um homem deve atravessar para outra margem de um rio uma ovelha, um lobo e um pé de alface. Porém: Se o lobo e a ovelha permanecerem sozinhos, o lobo comerá a ovelha; Se a ovelha e a alface permanecerem sozinhos, a ovelha comerá a alface; Não há uma segunda pessoa para ajudar... Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 13 / 36
Exemplo O Problema de Travessia Em uma canoa de dois lugares, um homem deve atravessar para outra margem de um rio uma ovelha, um lobo e um pé de alface. Porém: Se o lobo e a ovelha permanecerem sozinhos, o lobo comerá a ovelha; Se a ovelha e a alface permanecerem sozinhos, a ovelha comerá a alface; Não há uma segunda pessoa para ajudar... Modelagem Um estado é a configuração da margem inicial do problema; Uma transição é a travessia de algum elemento; Considere os seguintes rótulos: (B) homem, (L) lobo, (A) alface e (O) ovelha. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 13 / 36
Exemplo Exemplo da modelagem e solução do problema. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 14 / 36
Exemplo Utilizando o Grafo de Estados Dada a modelagem proposta, é possível criar um grafo de estados que considere todas as transições válidas (ou seja, que não resultem em refeição) e que os relacione; Nos grafos a seguir: Os rótulos indicam o estado da margem original; Transições que levem ao estado inicial da margem original são reforçadas; O problema é considerado solucionado quando a margem inicial se tornar vazia; Exclusivamente para o primeiro grafo, transições que levem a estados inviáveis serão exibidas. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 15 / 36
Exemplo Grafo de estados para o problema da travessia incluindo estados inviáveis. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 16 / 36
Exemplo Grafo de estados para o problema da travessia incluindo apenas estados viáveis. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 17 / 36
Exercício Jogos dos 8 Modele o jogo dos 8 descrevendo: O objetivo; A função de avaliação; Um estado; O estado inicial; O estado final; As transições entre estados. Exemplo do jogo dos 8. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 18 / 36
Exercício Jogos dos 8 Objetivo: Ordenar as peças de maneira crescente no sentido horário, a partir do canto superior esquerdo; função de avaliação: Número de peças na posição correta ou Número de transições necessárias para atingir o estado final. Estado: Uma configuração das peças. As transições entre estados: Deslizar uma peça para esquerda, direita, para cima ou para baixo. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 19 / 36
Exercício Estados inicial e final. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 20 / 36
Exercício Grafo de estados para o jogo dos 8. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 21 / 36
Exercício Grafo de estados indicando a transição realizada, o número de peças na posição correta e o número de transições restantes para atingir o estado final. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 22 / 36
Espaço de Estados Tamanho O tamanho de um problema é usualmente expresso em termos do número de estados possíveis: Jogo-da-velha: 3 9 estados; Cubo Mágico: 10 19 estados; Xadrez: 10 120 estados; Quebra-cabeça de 8 peças: 9!/2 = 181.440 ( 2 10 5 ) estados; 8-Rainhas: 64 8 ( 3*10 14 ) possíveis estados, podendo ser reduzido para 2.057; Alguns espaços de estados podem ser infinitos. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 23 / 36
Busca em Grafos de Estados Busca Computar todas as combinações (viáveis ou não) pode ser impraticável dependendo da natureza e/ou tamanho do problema; O ideal, portanto, é não construir o grafo completamente, e sim construir caminhos que levem do estado inicial ao estado final, construindo o grafo à medida em que é necessário. Desta forma, criamos uma árvore de busca; Algum algoritmo de busca deve ser utilizado para isto. Algoritmo de Busca Algoritmos que tomam um problema (geralmente combinatório) como entrada e geram uma solução para este problema, após um determinado número de passos, são chamados de algoritmos de busca. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 24 / 36
Exemplo Jogo dos 8 O número de peças na posição correta deve ser maximizado, ao passo que o número de transições necessárias deve ser minimizado; Analisando-se estes dois critérios para cada vértice, expande-se a busca a partir do vértice com maior potencial de desenvolvimento. No caso da figura anterior, este seria o vértice 2; A figura a seguir demonstra uma árvore de busca que desenvolve os vértices de melhor potencial até que o estado final seja atingido; Também é exemplificado o caso de uma piora após uma transição (vértice 4). Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 25 / 36
Exemplo Árvore de busca para o jogo dos 8. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 26 / 36
Algoritmos de Busca Considerações O que está sendo procurado? O que é interessante: a solução ou o caminho para a solução? Completude O algoritmo de busca garante encontrar uma solução quando há uma? Busca exaustiva versus busca heurística (com poda). Complexidade Tempo e espaço. Otimalidade A estratégia encontra a solução de melhor qualidade quando há diferentes soluções? Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 27 / 36
Algoritmos de Busca e Espaço de Estados Fator de Ramificação do Problema O fator de ramificação do problema (ou branching factor) é o número médio de transições disponíveis em cada estado. Fator de Ramificação da Busca O fator de ramificação do algoritmo de busca (ou algorithm effective branching factor) é o número médio de vértices efetivamente gerados durante a busca. Estados Repetidos e Simétricos Durante a busca, podemos encontrar estados repetidos ou estados simétricos, que são equivalentes a outros estados. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 28 / 36
Evitando Estados Repetidos Sem repetições... Há três formas de tratar estados repetidos: Não retornar ao estado do qual se acabou de sair; Não criar caminhos com ciclos; Não gerar nenhum estado que foi gerado anteriormente o que requer que cada estado gerado seja guardado em memória aumentando a complexidade de espaço. = = = Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 29 / 36
Tipos de Buscas Busca Informada Uma busca informada utiliza informações específicas do problema para guiar a busca; A função de avaliação realiza uma estimativa do potencial do estado atual em relação ao estado objetivo. Exemplos: Best-First, A, IDA... Busca Não Informada Uma busca não informada realiza uma busca cega, sem informações sobre o problema. É repetida exaustivamente até que uma solução seja encontrada ou até falhar. Exemplos: Busca em Profundidade, Busca em Largura, Busca Bidirecional... Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 30 / 36
Busca Não Informada Nos três casos abaixo, a busca prossegue em uma ordem fixa, sem considerar informações específicas do problema. Busca em Profundidade Escolhe uma ramificação e prossegue avançando em níveis da árvore de busca até o encontro do estado final; caso não encontre retorna a uma outra ramificação anterior. Busca em Largura Explora todos os estados de um dado nível da árvore de busca antes de passar para o próximo. Busca Bidirecional Consiste em executar duas buscas simultâneas: uma partindo do estado inicial em direção ao final e outra partindo do estado final em direção ao inicial. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 31 / 36
Busca em Profundidade Desvantagens Um problema com a busca em profundidade é que existem espaços de estados nos quais o algoritmo se perde; Para evitar caminhos infinitos, um refinamento pode ser adicionado à busca em profundidade: limitar a profundidade de busca Se o limite for muito pequeno (menor que qualquer caminho até uma solução) então a busca falha; Se o limite for muito grande, a busca se torna muito complexa. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 32 / 36
Busca em Profundidade Desvantagens Para resolver este problema a busca em profundidade limitada pode ser executada de forma iterativa, variando o limite: comece com um limite de profundidade pequeno e aumente gradualmente o limite até que uma solução seja encontrada; Esta técnica é denominada busca em profundidade iterativa e pode ser implementada a partir de um procedimento que, em cada chamada recursiva, incrementa o limite em uma unidade. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 33 / 36
Busca em Largura Desvantagens Em contraste com a busca em profundidade, a busca em largura escolhe primeiro visitar aqueles vértices mais próximos do vértice inicial; O algoritmo não é tão simples, pois é necessário manter um conjunto de vértices candidatos alternativos e não apenas um único, como na busca em profundidade O conjunto é todo o nível inferior da árvore de busca; Além disso, só o conjunto é insuficiente se o caminho da solução também for necessário; Assim, ao invés de manter um conjunto de vértices candidatos, é necessário manter um conjunto de caminhos candidatos. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 34 / 36
Exercício Jogo da velha Modele a resolução de um cubo mágico como um problema de busca em grafos de estados, detalhando: 1 O que são os estados; 2 O estado inicial e o estado final; 3 As transições; 4 A função de avaliação; 5 O fator de ramificação do problema; 6 Se estamos interessados somente no estado final ou no caminho que leva até o caminho final. Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 35 / 36
Dúvidas? Marco Antonio M. Carvalho (UFOP) BCC204 24 de julho de 2017 36 / 36