GRAFOS E ALGORITMOS ALGORITMOS E APLICAÇÕES 1a. PARTE Prof. Ronaldo R. Goldschmidt rribeiro@univercidade.br ronaldo_goldschmidt@yahoo.com.br
ROTEIRO 1. EXEMPLOS DE APLICAÇÕES DE GRAFOS 2. IMPLEMENTAÇÕES DE GRAFOS 3. PERCURSOS EM GRAFOS
ROTEIRO 1. EXEMPLOS DE APLICAÇÕES DE GRAFOS 2. IMPLEMENTAÇÕES DE GRAFOS 3. PERCURSOS EM GRAFOS
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex1: Considere o jogo da velha e que cada jogada resulte em um estado do jogo. Que tipo de grafo você poderia utilizar para representar os possíveis estados deste jogo? 1 1... 1 1 1 1 1 2 1 2 2... 2 Uma árvore, por exemplo (seqüência de jogadas identificada).
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex2: Considere o jogo da velha do exemplo anterior. Que estratégia de busca poderia ser utilizada na estrutura indicada caso o objetivo fosse vencer o jogo com o menor número de jogadas possível? 2 3 4 1 2 3 2 3 2 3 2 3 2 3 4 1 4 1 4 1 4 1 5 4 1 5 5 5 5 Busca/Percurso em Largura.
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex3: Considere um conjunto de cidades e seus acessos indicados por um grafo. Pergunta-se: é possível passar por todas as cidades sem repetição, a menos da última cidade, que deve corresponder à cidade de partida? Obs: a cidade de partida pode ser qq uma. Em outras palavras: o grafo é hamiltoniano?
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex4: Considere uma rede de computadores cuja topologia é representada por um grafo. De forma a minimizar o tempo de comunicação entre o servidor e as demais máquinas, deseja-se saber qual ou quais computadores seriam candidatos a servidores desta rede. Considere que a comunicação entre máquinas adjacentes corresponda a uma unidade de tempo. a b c d Em outras palavras: qual é o centro do grafo?
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex5: Considere o problema anterior (uma rede de computadores cuja topologia é representada por um grafo e que a comunicação entre máquinas adjacentes corresponda a uma unidade de tempo). Qual o maior tempo de comunicação entre duas máquinas quaisquer desta rede? a b c d Em outras palavras: qual é o diâmetro do grafo?
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex6: Considere uma rede de computadores cuja topologia é representada por um grafo. É possível fazer um único teste a partir de uma determinada máquina que verifique o funcionamento de todas as conexões, sem analisar a mesma conexão mais de uma vez? a b c d Em outras palavras: o grafo é euleriano?
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex7: Considere dois tipos de elementos A e B. Para montar uma placa de circuito, deseja-se conectar cada elemento do tipo A a cada elemento do tipo B, sem o cruzamento de conexões de forma a evitar possíveis interferências de comunicação que possam ocorrer. Analise o problema e emita seu parecer a respeito. Em outras palavras: o grafo bipartido completo é planar?
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex8: Considere a modelagem de casos de uso de um sistema. Pergunta-se: como fazer para evitar cruzamento de associações entre atores e casos de uso? Considere o modelo como um grafo e procure identificar os centros. Estes deverão ficar na parte central do diagrama... UC 1 Ator 1 Ator 2 UC 2 Ator 4 UC 3 Ator 3
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex9: Em Banco de Dados, um grafo de espera indica as dependências entre transações. Como verificar, a partir de um grafo deste tipo, sehá ocorrência de deadlocks entre as transações? Verificar a existência de ciclos no digrafo.
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex10: A topologia de um modelo de Rede Neural chamada Back- Propagation pode ser representada como a união de grafos bipartidos completos entre camadas sucessivas de neurônios. K n,p K p,m... K r,s. Represente graficamente uma rede neural deste tipo com topologia n-m-z. Dados Externos Processamento Interno Estimativa 1 2... n n+1... n+m n+m+1... n+m+z Camada de Entrada Camada Escondida Camada de Saída
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex11: Suponha que você foi contratado para elaborar um jogo de computador. Uma de suas preocupações deve ser o arranjo de cores para que não haja objetos de mesma cor que se interceptem (pois prejudicaria a compreensão dos cenários). Qual seria o número mínimo de cores a ser utilizado de forma a evitar este problema? Ex: fundo árvore Resp: 4 cores casa avatar
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex12: Considere um composto químico representado pelo diagrama de sua estrutura atômica (em outras palavras, um grafo simples). Suponha que exista uma base de dados com diversos compostos químicos. Deseja-se recuperar os compostos que contenham o composto apresentado para busca. Problema de busca de subestruturas. Verificação da existência de isomorfismo entre o composto e os subgrafos dos compostos armazenados. Pode ser estendido para o problema de busca de imagens contidas em outras imagens.
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex13: Considere uma base de textos onde cada texto seja representado por uma rede semântica. Deseja-se recuperar textos similares ao informado. fruta ISA manga maçã camisa PART manga gola Ex: Manga é uma expressão polissêmica. Depende do contexto para sua caracterização. As relações entre as expressões pode eliminar ambiguidades.
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex14: Considere uma relação que associa a cada transação, os produtos vendidos na transação. Deseja-se descobrir quais os produtos vendidos simultaneamente de forma frequente. Nº Transação Item Café 1 1 1 2 2 2 2 Café Pão Manteiga Leite Cerveja Pão Manteiga Pão Manteiga Leite Cerveja Ou seja: quais os subgrafos bipartidos mais frequentes?
1. EXEMPLOS DE APLICAÇÕES DE GRAFOS Ex14: A hierarquia entre conceitos pode ser representada por grafos, na definição de taxonomias e busca por conceitos relacionados. peça vestuário roupa calçado Ex: camisa sapato roupa sapato camisa calçado roupa calçado calça camisa sapato tênis Descoberta de associações envolvendo níveis de abstração.
ROTEIRO 1. EXEMPLOS DE APLICAÇÕES DE GRAFOS 2. IMPLEMENTAÇÕES DE GRAFOS 3. PERCURSOS EM GRAFOS
2. IMPLEMENTAÇÕES DE GRAFOS Obs: É muito comum a utilização de listas de adjacências para representar grafos esparsos ( E(G) = O( V(G) ).
2. IMPLEMENTAÇÕES DE GRAFOS Obs: É muito comum a utilização de listas de adjacências para representar grafos esparsos ( E(G) = O( V(G) ).
2. IMPLEMENTAÇÕES DE GRAFOS Obs: A representação de grafos esparsos por listas de adjacências é mais econômica (espaço) do que por matrizes de adjacências. Justificativa: Na representação por lista de adjacência: E(G) = O( V(G) ) Na representação por matriz de adjacência: E(G) = O( V(G) 2 ) O( V(G) ) O( V(G) 2 ) Listas de Adjacência utilizam menos espaço que as Matrizes de Adjacência quando: E(G) < ( V(G) 2 2 V(G) )/2 Ex: Seja G com 10 vértices. A representação por lista de adjacência utiliza menos espaço quando existirem menos de 40 arestas.
2. IMPLEMENTAÇÕES DE GRAFOS Obs: Comparação entre as representações de grafos por listas de adjacências e por matrizes de adjacências.
ROTEIRO 1. EXEMPLOS DE APLICAÇÕES DE GRAFOS 2. IMPLEMENTAÇÕES DE GRAFOS 3. PERCURSOS EM GRAFOS
3. PERCURSOS EM GRAFOS Observações: São muitas as aplicações distintas de grafos. Existem muitos algoritmos para manipulação de grafos. Muitos destes algoritmos envolvem a visita sistemática de todos os vértices do grafos. Este processo de caminhar pelos vértices do grafo é chamado de percurso no grafo. Alguns métodos de percurso possuem nomes específicos: Ex: Percurso em Profundidade e Percurso em Largura
3. PERCURSOS EM GRAFOS Percurso em Profundidade - Características: Deve-se escolher o vértice de partida (raiz no caso de árvore). Consiste em visitar um vértice v e depois visitar recursivamente todos os vértices adjacentes a v. Problema: O grafo pode conter ciclos (quando não for árvore). O percurso deve visitar cada vértice uma única vez. O método deve manter um registro dos vértices já visitados, para que o percurso não entre em recorrência infinita. Assim, um percurso em profundidade segue somente arestas que levam a vértices não visitados.
3. PERCURSOS EM GRAFOS Percurso em Profundidade - Exemplo: Vértice de partida: c
3. PERCURSOS EM GRAFOS Percurso em Largura - Características: Deve-se escolher o vértice de partida (raiz no caso de árvore). Mantém uma fila com os vértices seguintes a serem visitados. Esta fila recebe inicialmente o vértice de partida. O vértice no início da fila é retirado e visitado. Os vértices adjacentes a ele são colocados na fila. O método deve manter um controle dos vértices já visitados e dos vértices que já se encontram na fila. Assim, o processo se repete até que não restem vértices na fila.
3. PERCURSOS EM GRAFOS Percurso em Largura - Exemplo: Vértice de partida: a
EXERCÍCIOS ALGORITMOS E APLICAÇÕES 1a. PARTE 1) Identifique, especifique e exemplifique cinco aplicações de Teoria de Grafos na área da Computação. A especificação deverá seguir o modelo utilizado em sala. Não poderão ser utilizados os mesmos exemplos apresentados em sala.
EXERCÍCIOS ALGORITMOS E APLICAÇÕES 1a. PARTE 2) Selecione dois dos conceitos indicados abaixo e faça uma pesquisa sobre algoritmos que identifiquem estes conceitos em grafos. O trabalho deverá conter a especificação e a exemplificação do funcionamento de cada algoritmo. A linguagem de especificação é livre. a) Árvore geradora b) Ciclo c) Ponte d) Planaridade e) Isomorfismo entre dois grafos f) Passeio euleriano