• Nenhum resultado encontrado

Aula-10

N/A
N/A
Protected

Academic year: 2021

Share "Aula-10"

Copied!
39
0
0

Texto

(1)

Algoritmos de Grafos e

Patrulha Multiagente

Prof. Pablo Azevedo Sampaio Tópicos Avançados em Inteligência Artificial Universidade Federal Rural de Pernambuco

(2)

Objetivos

• Apresentar diversos problemas de grafos e seus algoritmos

• Foco naqueles que são (ou podem ser)

usados em soluções da Patrulha Temporal (MATP)

• Apresento algumas soluções da MATP da literatura

(3)
(4)

Técnicas Básicas

• Veremos dois algoritmos para percorrer o grafo

– Pesquisa em profundidade – para percorrer em uma ordem qualquer, com mínimo backtracking

– Pesquisa em extensão – para percorrer um “nível” por vez, partindo de um nó s

(5)

Pesquisa em Profundidade

• Cada vértice pode estar em um desses estados

– Branco: não-visitado

– Cinza: pesquisa iniciada – Preto: pesquisa terminada

• Vamos usar as seguintes variáveis

– cor[u] –explicado acima

(6)

Pesquisa em Profundidade

• Pseudo-código:

DFS-VISIT(grafo G, vértice u)

cor[u] = CINZA;

para cada v de Adj[u] if cor[v] = BRANCO ante[v] = u;

DFS-VISIT(G,v); cor[u] = PRETO;

(7)

Pesquisa em Profundidade

• Se o grafo for desconectado ou se não for

fortemente conectado, é necessário iniciar

várias vezes

DFS-START(grafo G, vértice s)

para todo vértice v cor[v] = BRANCO ante[v] = -1

(8)

Pesquisa em Profundidade

• Ao final, o array ante[ ] define uma floresta

– Pode variar, conforme a ordem de análise dos vizinhos

(9)

Pesquisa em Extensão

• Iniciada em um vértice s (start) qualquer

• Visita todos os vértices de distância k, depois todos os de distância k+1

• Visita todos vizinhos de s

– Depois todos os vizinhos desses vizinhos

(10)

Pesquisa em Extensão

(continuação..)

while ( !Empty(Q) ) u = Dequeue(Q);

para cada v na lista Adj[u] if (cor[v] == BRANCO) cor[v] = CINZA; ante[v] = u; d[v]=d[u]+1; Enqueue(v, Q); cor[u] = PRETO;

(11)

Pesquisa em Extensão

• O array ante[ ] define a árvore de caminhos mais

curtos (em quantidade de arestas) partindo de s

– O array d[u] guarda a menor distância de s até cada nó u

• Exemplo com s=1: 1 4 2 5 6 3 1 2 4 5 6 3

(12)

Principais Problemas e

Algoritmos

(13)

Motivação

• Google Maps

– Como achar o menor caminho entre dois endereços? – Tratando como um grafo

• Nós: início, fim e cruzamentos • Arestas: trechos de ruas

• Peso da aresta: distância

(14)

Caminhos Mais Curtos (ou

Menos Custosos)

• Problema análogo ao que é resolvido pela

Pesquisa em Extensão

• Porém, considera os custos/pesos das arestas

• Veremos dois algoritmos

– Dijkstra: caminhos de s a todos os outros nós – Floyd-Warshall: todos os menores caminhos

(15)

Algoritmo de Dijkstra

• É uma generalização da Pesquisa em

Extensão

• Porém, Q é uma fila de prioridade, onde as chaves são as distância de s até cada nó

– Array c[x]: custo do caminho de s a x

(16)

Algoritmo de Dijkstra

• Pseudo-código (loop principal)

– RELAX(x,vi,p) tenta reduzir o caminho (de s) para vi

• Testa se s...x + xvi é melhor que o caminho atual

(...)

while ( !Empty(Q) )

x = Remove-Min(Q);

para cada vizinho vi ligado com peso p

RELAX(x,vi,p)

(17)

Algoritmo de Floyd-Warshall

• Baseado em programação dinâmica • Laço principal:

para cada nó k //para cada intermediário

para cada nó i //para cada origem

para cada nó j //para cada destino

if ((c[i,k] + c[k,j]) < c[i,j]) c[i,j] = c[i,k] + c[k,j];

(18)

Motivação

• Projeto de Circuitos Eletrônicos

– Um conjunto de pinos podem ser ligados de diferentes maneiras

– As ligações têm custos distintos

– Como interligar os pinos com custo mínimo?

(19)

Árvores Espalhadas

• Definição: subgrafo conectado acíclico que interliga todos os vértices do grafo

• Em inglês: Spanning Tree

– Outras traduções: Árvores Geradoras, Árvores de Amplitude

• A árvore espalhada mínima de um grafo é a menos custosa das suas árvores espalhadas

(20)

Algoritmo de Prim

• Tem um vértice de início s

– Pouco interfere no resultado

• Muito parecido com o Dijkstra, mas, ao tomar um nó x e atualizar os custos dos

vizinhos vi, ele usa só o custo da aresta x-vi

– Não soma com o caminho anterior!

(21)

Árvore Espalhada Mínima

(22)

Motivação

• Cidade de Königsberg em 1736:

– É possível fazer um caminho que passe por cada ponte da cidade uma única vez?

(23)

Ciclo Euleriano

• Ciclo que atravessa exatamente uma vez cada aresta do grafo

• Condições necessárias e suficientes para um grafo não-direcionado G ser Euleriano:

– G é um grafo conectado – Todo nó tem grau par

• Existem algoritmos lineares para achar este ciclo!

(24)

Motivação

• Situação: um almoço em que nem todos os convidados se conhecem

– Modelar como um “grafo de amizades”

• É possível dispor todos ao redor de uma mesa de modo que cada pessoa fique

sentada ao lado de dois conhecidos (um em cada lado)?

(25)

Ciclo Hamiltoniano

• Ciclo que passa exatamente uma vez por cada vértice do grafo

• Problema NP-Completo!

• Vamos falar de um problema mais geral a seguir...

(26)

Motivação

• Há um conjunto de cidades, todas acessíveis entre si por rodovias

• Como um vendedor pode passar por todas elas uma única vez e voltar para a cidade inicial?

(27)

Caixeiro-Viajante (TSP)

• Problema de achar o ciclo hamiltoniano de custo mínimo em um grafo completo

• Também é NP-Completo!

• Vários algoritmos aproximados e heurísticos

(28)

Algoritmo Aproximado Baseado em

MST

• Descrição de alto nível:

– Constrói a árvore espalhada mínima (MST) – Faz uma DFS nela

– Cria atalhos para “saltar” nós já visitados

(29)

Algoritmo de Christofides

• Melhoria do anterior:

– Constrói a MST

– Adiciona arestas nos nós de grau ímpar (com o mínimo custo) – Constrói um ciclo euleriano

• No pior caso, a solução é 50% maior que a ótima

(30)

Outros

• Problema do Caixeiro-Viajante com Múltiplas

Visitas (TSPM)

– Permite passar mais de uma vez por nó – Podem ser aplicadas soluções do TSP

• Aplicar o Floyd-Warshal e usar os caminhos como se fossem arestas (vira um grafo completo)

• Problema do Carteiro Chinês

– Generalização do problema de achar um ciclo euleriano para grafos com pesos

– Permite atravessar mais de uma vez cada aresta, porém deseja-se minimizar o custo dessas repetições

(31)
(32)

Soluções da MATP

• Vamos falar de soluções (estratégias) da MATP que são fortemente dependentes de conceitos e algoritmos de grafos

(33)

Algoritmos Já Apresentados Revistos

• Abordagens swarm

– BaloonDFS

• Implementa uma pesquisa em profundidade (DFS) em tempo real – PVAW1, EVAW, EVAW+

• Convergem para um ciclo hamiltoniano (com repetição de nó, em alguns casos)

• Soluções baseadas em construir caminhos

– Almeida et. al – HPCC

(34)

Chevaleyre et al. (2003)

• Para 1 agente, provou que:

– O ciclo de solução do TSP é a solução ótima da MATP na métrica de intervalo máximo (Imax)

• Para n agentes, provou que:

– Dentre as soluções baseadas em partições disjuntas (pré-fixadas),

– A solução ótima (na métrica Imax) consiste em usar os

(35)

Chevaleyre et al. (2003)

• Para n agentes: solução Single Cycle (SC)

– Obtém uma solução para o TSP • Algoritmo de Christofides

– Distribui os agentes de forma eqüidistante no ciclo – Eles percorrem o ciclo em uma mesma direção

(36)

Elmaliach, Shiloni, Kaminka (2007)

• Basicamente, propôs algoritmos polinomiais baseados na mesma idéia da SC

• Porém, aplicam-se apenas a certo tipo simples de grafo

– Grids de dimensões pares, com pesos

• Algoritmos propostos

– Para calcular o ciclo (resolver o TSP) – Para distribuir os agentes rapidamente

(37)

Elmaliach, Shiloni, Kaminka (2007)

• Algoritmo para calcular o ciclo

– Calcula dois grids amplos

• Um com arestas no sentido horário e outro no sentido anti-horário

• Cada célula representa um quadrado 2x2 • Pesos definidos por uma conta esquisita – Depois, acha o MST do grid amplo

– Cria um ciclo no grid original meramente “contornando” a árvore espalhada

(38)

Portugal e Rocha (2011)

• Solução GMSP

– Calcula partições balanceadas do grafo

– Dentro da partição, cada agente segue um caminho

principal, que pode ser:

• Um ciclo ou caminho euleriano • Um ciclo ou caminho hamiltoniano

• Ciclo com mais da metade dos nós (alg. próprio) • Caminhos mais longo (alg. próprio)

Referências

Documentos relacionados

2. Add two Sulfite No.1 tablets, stopper the container and shake until the tablets have disintegrated. Add one Sulfite No.2 HR tablet and swirl the container gently until the

Os profissionais que não estão atuando na área puderam se desligar do CRF/MG até o dia 31 de março sem pagar a anuidade de 2018.. Conforme um parecer jurídico da Advocacia-Geral

Assista ao vídeo em nosso canal e descubra por que faz muito mais sentido você trazer os seus recursos para uma Entidade com mais de 50 anos de experiência no assunto.. Você

O presente trabalho tem como objetivo fazer a prospecção de patentes de produtos desenvolvidos com Morinda Citrifolia, através do sistema Orbit e A61K36/746 (IPC), que

Faial, que parecia mesmo um lobo, abriu e fechou a boca várias vezes, mas não uivou (19).. No entanto, era evidente (20) que os cães também se

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)