análise de algoritmos - conceitos de grafos
TRANSCRIPT
Grafos
Conceitos Basicos
– p. 1/12
Grafos
Um grafo G consiste de um conjunto finito deelementos chamado vertices (denotado por V (G)) eum conjunto de pares não ordenado de vérticeschamado arestas (denotado por E(G)).
– p. 2/12
Grafos
Um grafo G consiste de um conjunto finito deelementos chamado vertices (denotado por V (G)) eum conjunto de pares não ordenado de vérticeschamado arestas (denotado por E(G)).
Se e é uma aresta e u e v são seus vértices,dizemos que e liga u a v, e denotamos por e = (u, v)
ou e = uv. Os vértices u e v são os extremos de e.
– p. 2/12
Grafos - conceitos básicos
os extremos de uma aresta são incidentes àaresta, e vice-versa.
– p. 3/12
Grafos - conceitos básicos
os extremos de uma aresta são incidentes àaresta, e vice-versa.
dois vértices incidentes a uma mesma arestasão adjacentes. O mesmo nome é dado a duasarestas incidentes a um mesmo vértice.
– p. 3/12
Grafos - conceitos básicos
os extremos de uma aresta são incidentes àaresta, e vice-versa.
dois vértices incidentes a uma mesma arestasão adjacentes. O mesmo nome é dado a duasarestas incidentes a um mesmo vértice.
laco: aresta com extremos no mesmo vértice.
– p. 3/12
Grafos - conceitos básicos
os extremos de uma aresta são incidentes àaresta, e vice-versa.
dois vértices incidentes a uma mesma arestasão adjacentes. O mesmo nome é dado a duasarestas incidentes a um mesmo vértice.
laco: aresta com extremos no mesmo vértice.
arestas paralelas: ligam os mesmos pares devértices.
– p. 3/12
Grafos - conceitos básicos
grafo simples: não possui laço nem arestaparalela.
– p. 4/12
Grafos - conceitos básicos
grafo simples: não possui laço nem arestaparalela.
ordem de um grafo: número de vértices que elepossui.
– p. 4/12
Grafos - conceitos básicos
grafo simples: não possui laço nem arestaparalela.
ordem de um grafo: número de vértices que elepossui.
v(G) e a(G): denotam, respectivamente, onúmero de vértices e arestas de um grafo G.Quando o grafo estiver subentendido usaremosapenas v e a.
– p. 4/12
Grafos - conceitos básicos
um grafo é vazio, se não possui vértices.
– p. 5/12
Grafos - conceitos básicos
um grafo é vazio, se não possui vértices.
um grafo é completo se cada par de vérticesdistintos é ligado por uma aresta. Um grafocompleto com n vértices é denotado por Kn.
– p. 5/12
Grafos - conceitos básicos
um grafo é vazio, se não possui vértices.
um grafo é completo se cada par de vérticesdistintos é ligado por uma aresta. Um grafocompleto com n vértices é denotado por Kn.
um grafo é conexo se possui uma únicacomponente.
– p. 5/12
Grafos - conceitos básicos
um grafo é bipartido se o seu conjunto devértices pode ser particionado em doissubconjuntos X e Y , tais que cada arestapossui um extremo em X e outro em Y ; apartição (X,Y ) é chamada de biparticao dografo. Um grafo é bipartido completo se ele ébipartido com bipartição (X,Y ) e todo vérticede X é ligado a todo vértice de Y . Se |X| = m
e |Y | = n, tal grafo é denotado por Km,n.
– p. 6/12
Algoritmos em Grafos
– p. 7/12
Algoritmos em Grafos
Como representar computacionalmente um grafo?
– p. 8/12
Algoritmos em Grafos
Como representar computacionalmente um grafo?
e1
e2e3
e4
e5 e6 e7
v1 v2
v3v4
– p. 8/12
Algoritmos em Grafos
Como representar computacionalmente um grafo?
e1
e2e3
e4
e5 e6 e7
v1 v2
v3v4
e1 e2 e3 e4 e5 e6 e7
v1 1 1 0 0 1 0 1
v2 1 1 1 0 0 0 0
v3 0 0 1 1 0 0 1
v4 0 0 0 1 1 2 0
Matriz de incidência
– p. 8/12
Algoritmos em Grafos
Como representar computacionalmente um grafo?
– p. 9/12
Algoritmos em Grafos
Como representar computacionalmente um grafo?
e1
e2e3
e4
e5 e6 e7
v1 v2
v3v4
– p. 9/12
Algoritmos em Grafos
Como representar computacionalmente um grafo?
e1
e2e3
e4
e5 e6 e7
v1 v2
v3v4
v1 v2 v3 v4
v1 0 2 1 1
v2 2 0 1 0
v3 1 1 0 1
v4 1 0 1 1
Matriz de adjacência
– p. 9/12
Algoritmos de busca em Grafos
Muitas problemas algorítmicos consiste naexploração de um grafo. Logo, é importante obterum processo sistemático de como caminhar pelasarestas e vértices de um grafo.
Vamos descrever dois algoritmos de busca emgrafos:
busca em largura
busca em profundidade
– p. 10/12
Busca em largura
O algoritmo de busca em largura para um grafo G
pode ser descrito da seguinte forma:
– p. 11/12
Busca em largura
O algoritmo de busca em largura para um grafo G
pode ser descrito da seguinte forma:
põe na fila um vértice qualquer u de G emarque-o como alcançado
enquanto fila != " façav # elemento da frente da fila (retire v da fila)para toda aresta (v, w), tal que w ainda nãofoi alcançado, marque w como alcançado epõe w na fila
– p. 11/12
Busca em profundidade
O algoritmo de busca em profundidade para umgrafo G pode ser descrito da seguinte forma:
– p. 12/12
Busca em profundidade
O algoritmo de busca em profundidade para umgrafo G pode ser descrito da seguinte forma:
empilhe um vértice qualquer u de G e marque-ocomo alcançado
enquanto pilha != " façav # elemento do topo-da-pilhase existe aresta (v, w), tal que w ainda nãofoi alcançado, então marque w comoalcançado e empilhe w; senão desempilha v
– p. 12/12