Académique Documents
Professionnel Documents
Culture Documents
Livro Texto: Cormen, T., Leiserson, C., Rivest, R. and Stein, C. Algoritmos Teoria e Prtica, Elsevier, 2002.
Busca em Largura
Considere:
um grafo G = (V, E) um vrtice de origem s, Busca em largura:
explora sistematicamente as arestas de G at descobrir cada vrtice acessvel a partir de s; calcula a distncia (caminho mais curto) desde s at todos os vrtices acessveis a partir de s.
em largura
Descobre todos os vrtices distncia k a partir de s, antes de descobrir quaisquer vrtices distncia k + 1.
Busca em Largura
Controle do andamento do algoritmo
Utiliza trs tipos de marcaes para os vrtices
Vrtice branco um vrtice ainda no descoberto pelo algoritmo Vrtice cinza um vrtice que j foi descoberto pelo algoritmo mas que ainda possui vrtices adjacentes no descobertos. Vrtice preto um vrtice que j foi descoberto pelo algoritmo e que no possui nenhum vrtice adjacente que ainda no foi descoberto.
Busca em Largura
O Algoritmo:
G = (V,E) representado com o uso de listas de adjacncia. A cada vrtice v so adicionadas as seguintes informaes
cor[v] indica a cor do vrtice v [v] indica o vrtice predecessor de v, ou seja, o vrtice a partir do qual v foi descoberto d[v] indica a distncia entre s e v, onde s o vrtice de origem
O conjunto de vrtices de cor cinza mantido em uma fila Q do tipo FIFO (o primeiro a entrar o primeiro a sair)
Busca em Largura
O Algoritmo:
Busca em Largura
Exemplo
Busca em Profundidade
Tenta-se e explorar novos vrtices a partir do vrtice mais recentemente descoberto. Informaes
cor[v] indica a cor do vrtice v (branco, cinza ou preto) [v] indica o vrtice predecessor de v, ou seja, o vrtice a partir do qual v foi descoberto Dois carimbos de tempo: d[v] indica o tempo em que o vrtice v foi descoberto (pintado de cinza) f[v] indica o tempo em que o o algoritmo termina de examinar a lista de adjacncias de v (v pintado de preto) o d[v] e f[v] compartilham o mesmo contador de tempo o O contador de tempo um inteiro entre 1 e 2|V|
Busca em Profundidade
Busca em Profundidade
Busca em Profundidade
Propriedades
Produz informaes sobre a estrutura de um grafo
Floresta de rvores Estrutura de parnteses Classificao das arestas Arestas de rvore Arestas de retorno Arestas diretas Arestas cruzadas
Busca em Profundidade
Estrutura de Parnteses
Representao
A descoberta de um vrtice (u) representada por (u O trmino de um vrtice representado por u)
Busca em Profundidade
Classificao das Arestas
Aresta de rvore
Arestas na floresta.
Arestas de retorno
Arestas (u, v) que conectam u a um ancestral v em uma rvore.
Busca em Profundidade
Classificao das Arestas
Aresta diretas
Arestas (u, v) que conectam u a um descendente v em uma rvore.
Arestas cruzadas
Todas as outras arestas.
Busca em Profundidade
Classificao das Arestas
Aplicao
Ex: Descoberta de grafos orientados acclicos: UM GRAFO ORIENTADO ACCLICO SSE EM UMA BUSCA EM PROFUNDIDADE NO ENCONTRADA NENHUMA ARESTA DE RETORNO
Busca em Profundidade
Classificao das Arestas
Como classificar as arestas?
Cada aresta (u, v) pode ser classificada pela cor do vrtice v que alcanado pelo algoritmo BRANCO indica uma aresta de rvore CINZA indica uma aresta de retorno PRETO indica uma aresta direta ou cruzada
Busca em Profundidade
Classificao das Arestas
Grafos no orientados
Em uma busca em profundidade de um grafo G, toda aresta de G uma aresta de rvore ou uma aresta de retorno.
Ordenao Topolgica
Definio
A ordenao toplgica de um gao G=(VG, AG) uma ordenao linear de todos os seus vrtices tal que se G contm uma aresta (u, v), ento u aparece antes de v na ordenao. Pode ser vista como u
Aplicao
Grafos acclicos orientados (gaos)
Se o grafo no acclico, ento no possvel nenuma ordenao linear
Ordenao Topolgica
Algoritmo
Baseado no algoritmo de busca em profunidade (DFS)
1. 2. 3.
Chamar DFS(G) para calcular o tempo de trmino de f[v] para cada vrtice v medida que cada vrtice terminado, inserir o vrtice frente de uma lista ligada Devolva como redultado a lista ligada
Ordenao Topolgica
Exemplo
Ordenao topolgica de vesturio
Ordenao Topolgica
Exemplo
Ordenao topolgica de vesturio
() (8)
() (7)
() (8)
() (7)
()
(8)
()
(4)
(7)
(6)
(4)
(2) (8)
(4) (7)
(2) (8)
(4) (7)
(9)
(2) (8)
(4) (7)
(1)
(2)
(4)
(9)
(1)
(2)
(4)
Colorao Aproximada
Um Algoritmo
Q - lista dos vrtices ordenados pelos seus graus EXTRACT-MAX(Q) retira de Q o vrtice de maior grau
COLORIR(G) 1 for cada u V[G] 2 do cor[u] 0 3 cor[r] 1 4 Q V[G] r 5 while Q 0 6 do u EXTRACT-MAX(Q) 7 cor min { i | cor[Adj[u]] i} 8 cor[u] cor
Colorao Aproximada
Exemplos de aplicao
Ex 1: Estipulao de horrios para realizao de provas
Disciplinas
. D1 D2 D3 D4 D5 D6 D7
D1 D2 D3 D4 D5 D6 D7 . * * * * * * . * * * * . * * * . * * * . * * * * . * * * * .
Colorao Aproximada
Exemplos de aplicao
Ex 1: Estipulao de horrios para realizao de provas
Disciplinas
. D1 D2 D3 D4 D5 D6 D7
Colorao Aproximada
Exemplos de aplicao
Ex 2: Atribuibuio de armrios em uma creche
Crianas Horrios que esto na creche
1 * * * * * *
2 * -
3 * * * -
4 * * -
5 * *
6 * * * -
7 * * -
Colorao Aproximada
Exemplos de aplicao
Ex 2: Atribuibuio de armrios em uma creche
Crianas Horrios que esto na creche
1 * * * * * *
2 * -
3 * * * -
4 * * -
5 * *
6 * * * -
7 * * Cor = armrio
Rede eltrica
Fluxo de energia
Rede de esgoto
Fluxo de gua/dejetos
Sorvedor (Destino)
Consome material na mesma taxa da origem
Fluxo
Taxa na qual o material se move
Exemplo de Fluxo
Problema de transporte
Como determinar o nmero mximo de caixotes que podem ser enviados por dia?
Manter a conservao de fluxo
Algoritmo genrico
Redes residuais