Sei sulla pagina 1di 18

Exerccios PAA- Grafos

Eduardo Laber
Cap 3-Tardos
Exerccio 2
Modifique o pseudo-cdigo da busca em
profundidade da seguinte forma.
Ao visitar um vrtice v a partir de u
Se v no foi visitado faa
upai (v)
Se v j foi visitado
Se v<> pai(u)
Ciclo existe (uv+ caminho de u a v na rvore)
Cap 3-Tardos
Exerccio 3
Execute uma ordenao topolgica no Grafo. Se em algum ponto
no houver uma fonte, quer dizer que o grafo contm ciclos.

Execute uma busca em profundidade no grafo anotando, para cada


vrtice v,
o pai de v
o momento que a busca em v comea: pre(v)
o momento que a busca em v termina: pos(v)
Ao tentar visitar um vrtice v a partir de u tal que a busca em v j
comeou mais ainda no terminou podemos obter um ciclo da
seguinte forma.
Caminhe pelos pais de u at encontrar v. O ciclo formado por este
caminho + o arco (u,v)
Cap 3-Tardos
Exerccio 4
Construa um grafo em que cada aresta
corresponde a uma observao. Uma aresta
pode ter um rtulo S (same) ou D (different).
Faa uma busca no grafo rotulando os vrtices
em classes A e B
Ao visitar um vrtice v (pela primeira vez) a partir de
um vrtice u, atribua uma classe consistente com a
aresta uv
Ao visitar um vrtice w, j visitado, a partir de x,
verifique se as classes de w e x so consistentes
com a aresta wx. Caso no sejam, o algoritmo deve
indicar que no possvel a diviso em duas classes.
Cap 3-Tardos
Exerccio 7
Seja v um n do grafo. Se u no vizinho
de v ento existe um n, digamos w, que
vizinho de de u e de v. Caso contrrio o
grafo teria mais de n vrtices (n/2 vizinhos
de u, n/2 outros vizinhos de v, u e v).
Contradio
Portanto, vwu um caminho de v
para u
Cap 3-Tardos
Exerccio 8
Para um contra exemplo considere uma
clique K com n- n0.5 e um nico vrtice
desta clique ligado a um caminho de n0.5
vrtices.
Cap 3-Tardos
Exerccio 9
Considerar a rvore gerada a partir de
uma busca em largura comeando em s.
Como a altura desta rvore maior que n/2
ento existe um nvel nesta rvore ( > 1 e <
nvel t) com apenas um n.
Como toda aresta de G liga vrtices da
mesma camada ou de camadas adjacentes,
ao remover este vrtice desconectamos o
grafo.
Cap 3-Tardos
Exerccio 9
Algoritmo
Faa uma busca em largura calculando a
distncia de s a cada n e preencha um vetor
(de listas) indicando, na posio i, os vrtices
que distam i de s. Retorne o primeiro n
diferente de s que se encontra sozinho em
uma lista
Cap 3-Tardos
Exerccio 10
Utilizar uma busca em largura para decompor a
rvore em camadas. Marcar em cada n a sua
distncia a v.
Em uma segunda passada acumular em cada
n w um contador num(w) indicando o nmero
de caminhos de v a w.
Inicialmente os contadores so 0, exceto
Num(raiz)=1.
Ao tentar visitar um n, digamos y, da camada i+1, a
partir de um no x da camada i fazer
num(y) num(y)+num(x)
Cap 3-Tardos
Exerccio 11
Manter um vetor de bits indicando se um
programa foi infectado ou no
Construir um grafo no direcionado para cada
tempo t e processar os grafos em ordem
crescente de tempo
Processamento do grafo correspondente ao
tempo t
De duas passadas no grafo
A primeira para marcar as componentes que tem um
computador infectado e a segunda para marcar todos os
computadores da componente como infectados.
Cap 3-Tardos
Exerccio 12
Construa um grafo direcionados G da seguinte forma
a) Para cada pessoa P(i) crie dois vrtices: B(i) data de
nascimento e D(i), data de morte
b) Para todo i, crie uma arco de B(i) para D(i)
c) Se nos dados coletados, P(i) morre antes de P(j) nascer
crie um arco de D(i) para B(j)
d) Se nos dados coletados, a vida de P(i) tem interseo
com a vida de P(j), crie um arco de P(i) para B(j) e um
arco de B(i) para P(j)
Se G tem uma ordenao topolgica os dados so
consistentes, caso contrrio no
Papadimitriou-Cap 3
Exerccio 9
Duas passadas no grafo
A primeira calcula o grau de cada vrtice
For each v in Adj[u]
d(u) d(u)+1
Na segunda, acumulamos em twodegree[u],
para cada u, a soma dos graus dos vizinhos
de u.
For each v in Adj[u]
Twodegree[u] Twodegree[u]+d(v)
Papadimitriou-Cap 3
Exerccio 13
a) Defina um vrtice s em G e execute uma
DFS a partir de s. Seja T a rvore obtida.
Qualquer folha de T satisfaz a propriedade
desejada
b) Qualquer Ciclo
c) Se G= dois ciclos disjuntos
Papadimitriou-Cap 3
Exerccio 15
a) Seja G=(V,E) o grafo direcionado em que
V o conjunto de intersees de ruas e
E representa o conjunto das ruas
Verifique se o grafo fortemente conexo
utilizando o algoritmo ensinado em sala
com complexidade O(m+n)
Papadimitriou-Cap 3
Exerccio 15
b) Seja v o n correspondente a Town Hall. Seja
S o conjunto de n alcanveis a partir de v. S
pode ser obtido em O(m+n) atravs de uma
DFS( BFS).
Seja G o grafo reverso de G. Seja T o
conjunto de ns obtidos a partir de v em G. Se
T for um subconjunto de S ento a
propriedade verdadeira. Caso contrrio,
falsa.
Papadimitriou-Cap 3
Exerccio 18
Execute uma DFS em G a partir de r e
armazene os contadores pre e post para
cada vrtice do grafo.
u ancestral de v se e somente se
pre[u] pre[v]< post[v]<post[u]
Papadimitriou-Cap 3
Exerccio 22
Execute uma DFS em G e armazene os
contadores pre e post para cada vrtice do
grafo. Seja v o vrtice com maior post. Sabemos
que ele pertence a um source node em G~ (aula
de componentes fortemente conexos).
Execute uma DFS comeando em v. Se apenas
uma rvore for gerada ento existe o n
desejado. Caso contrrio, no.
Papadimitriou-Cap 3
Exerccio 24
Execute o algoritmo linear para ordenao
topolgica.
Se em algum ponto o conjunto S dos
vrtices com grau de entrada igual a 0
tiver mais de um elemento, ento G no
possui o caminho desejado. Caso
contrrio G possui o caminho.

Potrebbero piacerti anche