algoritmos e teoria dos grafos aula 04 - ufpr · algoritmos e teoria dos grafos aula 04 prof....
TRANSCRIPT
Algoritmos e Teoria dos GrafosAula 04
Prof. Murilo V. G. da Silva
DINF/UFPR
Material da Disciplina:
Renato J. S. Carmo
Notacao Assintotica e Algoritmos Polinomiais
Notacao “big-Oh”
Escrevemos g(n) = O(f (n)) se existem c > 0 e nc ∈ N tais que,
g(n) ≤ cf (n),∀n ≥ nc .
Algoritmos Polinomiais
Um algoritmo e polinomial se seu tempo de execucao e O(nk) para algumk ∈ N, onde n e o tamanho da entrada do algoritmo.
i.e., um algoritmo e polinomial se existem c > 0, k e nc ∈ N tais que
para toda entrada de tamanho n > nc , o tempo de execucao t(n) doalgoritmo satisfaz t(n) ≤ cnk
E comum dizer que a complexidade de tempo do algoritmo e polinomial
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Notacao Assintotica e Algoritmos Polinomiais
Notacao “big-Oh”
Escrevemos g(n) = O(f (n)) se existem c > 0 e nc ∈ N tais que,
g(n) ≤ cf (n),∀n ≥ nc .
Algoritmos Polinomiais
Um algoritmo e polinomial se seu tempo de execucao e O(nk) para algumk ∈ N, onde n e o tamanho da entrada do algoritmo.
i.e., um algoritmo e polinomial se existem c > 0, k e nc ∈ N tais que
para toda entrada de tamanho n > nc , o tempo de execucao t(n) doalgoritmo satisfaz t(n) ≤ cnk
E comum dizer que a complexidade de tempo do algoritmo e polinomial
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Notacao Assintotica e Algoritmos Polinomiais
Notacao “big-Oh”
Escrevemos g(n) = O(f (n)) se existem c > 0 e nc ∈ N tais que,
g(n) ≤ cf (n),∀n ≥ nc .
Algoritmos Polinomiais
Um algoritmo e polinomial se seu tempo de execucao e O(nk) para algumk ∈ N, onde n e o tamanho da entrada do algoritmo.
i.e., um algoritmo e polinomial se existem c > 0, k e nc ∈ N tais que
para toda entrada de tamanho n > nc , o tempo de execucao t(n) doalgoritmo satisfaz t(n) ≤ cnk
E comum dizer que a complexidade de tempo do algoritmo e polinomial
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Notacao Assintotica e Algoritmos Polinomiais
Notacao “big-Oh”
Escrevemos g(n) = O(f (n)) se existem c > 0 e nc ∈ N tais que,
g(n) ≤ cf (n),∀n ≥ nc .
Algoritmos Polinomiais
Um algoritmo e polinomial se seu tempo de execucao e O(nk) para algumk ∈ N, onde n e o tamanho da entrada do algoritmo.
i.e., um algoritmo e polinomial se existem c > 0, k e nc ∈ N tais que
para toda entrada de tamanho n > nc , o tempo de execucao t(n) doalgoritmo satisfaz t(n) ≤ cnk
E comum dizer que a complexidade de tempo do algoritmo e polinomial
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Problemas Polinomiais e Problemas NP-difıceis
Problemas Polinomiais
Um problema polinomial e um problema computacional para o qual existealgoritmo polinomial que o resolva.
Problemas NP-difıceis
Um problema NP-difıcil e um problema computacional para o qual
1 nao se conhece nenhum algoritmo polinomial
2 a existencia de algoritmo polinomial implica na existencia de algoritmospolinomiais para outros problemas NP-difıceis.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Problemas Polinomiais e Problemas NP-difıceis
Problemas Polinomiais
Um problema polinomial e um problema computacional para o qual existealgoritmo polinomial que o resolva.
Problemas NP-difıceis
Um problema NP-difıcil e um problema computacional para o qual
1 nao se conhece nenhum algoritmo polinomial
2 a existencia de algoritmo polinomial implica na existencia de algoritmospolinomiais para outros problemas NP-difıceis.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Problemas Polinomiais e Problemas NP-difıceis
Problemas Polinomiais
Um problema polinomial e um problema computacional para o qual existealgoritmo polinomial que o resolva.
Problemas NP-difıceis
Um problema NP-difıcil e um problema computacional para o qual
1 nao se conhece nenhum algoritmo polinomial
2 a existencia de algoritmo polinomial implica na existencia de algoritmospolinomiais para outros problemas NP-difıceis.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Exemplos de problemas
Exemplos de Problemas Polinomiais
ordenar uma lista de numeros dada.
decidir se um valor dado ocorre ou nao em uma lista, tambem dada.
encontrar um caminho mınimo entre dois vertices em um grafo
Exemplos de Problemas NP-difıceis
o problema do caixeiro viajante
encontrar uma valoracao que satisfaz uma formula booleana
encontrar uma coloracao mınima para um grafo
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Exemplos de problemas
Exemplos de Problemas Polinomiais
ordenar uma lista de numeros dada.
decidir se um valor dado ocorre ou nao em uma lista, tambem dada.
encontrar um caminho mınimo entre dois vertices em um grafo
Exemplos de Problemas NP-difıceis
o problema do caixeiro viajante
encontrar uma valoracao que satisfaz uma formula booleana
encontrar uma coloracao mınima para um grafo
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Complexidade de espaco
Complexidade de Espaco: Quantidade de memoria necessaria para se resolverum problema em funcao do tamanho da entrada.
Ideia 1: O espaco necessario para se resolver um problema e o espaco necessariopara armazenar a instancia do problema mais o espaco extra necessario pararealizar a computacao
Ideia 2 (mais usual): Definir a complexidade de espaco de um problema levandoem consideracao apenas o espaco extra necessario.
Nesta aula: Nao nos preocuparemos com a complexidade de espaco deproblemas, mas apenas com a complexidade de espaco de armazenamento dografo de entrada.
A descricao de um grafo G consome espaco proporcional a |V (G)|+ |E(G)|.
Ou seja, um grafo (V (G),E(G)) consome O(|V (G)|+ |E(G)|) posicoes dememoria para ser armazenado no computador.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Complexidade de espaco
Complexidade de Espaco: Quantidade de memoria necessaria para se resolverum problema em funcao do tamanho da entrada.
Ideia 1: O espaco necessario para se resolver um problema e o espaco necessariopara armazenar a instancia do problema mais o espaco extra necessario pararealizar a computacao
Ideia 2 (mais usual): Definir a complexidade de espaco de um problema levandoem consideracao apenas o espaco extra necessario.
Nesta aula: Nao nos preocuparemos com a complexidade de espaco deproblemas, mas apenas com a complexidade de espaco de armazenamento dografo de entrada.
A descricao de um grafo G consome espaco proporcional a |V (G)|+ |E(G)|.
Ou seja, um grafo (V (G),E(G)) consome O(|V (G)|+ |E(G)|) posicoes dememoria para ser armazenado no computador.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Complexidade de espaco
Complexidade de Espaco: Quantidade de memoria necessaria para se resolverum problema em funcao do tamanho da entrada.
Ideia 1: O espaco necessario para se resolver um problema e o espaco necessariopara armazenar a instancia do problema mais o espaco extra necessario pararealizar a computacao
Ideia 2 (mais usual): Definir a complexidade de espaco de um problema levandoem consideracao apenas o espaco extra necessario.
Nesta aula: Nao nos preocuparemos com a complexidade de espaco deproblemas, mas apenas com a complexidade de espaco de armazenamento dografo de entrada.
A descricao de um grafo G consome espaco proporcional a |V (G)|+ |E(G)|.
Ou seja, um grafo (V (G),E(G)) consome O(|V (G)|+ |E(G)|) posicoes dememoria para ser armazenado no computador.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Complexidade de espaco
Complexidade de Espaco: Quantidade de memoria necessaria para se resolverum problema em funcao do tamanho da entrada.
Ideia 1: O espaco necessario para se resolver um problema e o espaco necessariopara armazenar a instancia do problema mais o espaco extra necessario pararealizar a computacao
Ideia 2 (mais usual): Definir a complexidade de espaco de um problema levandoem consideracao apenas o espaco extra necessario.
Nesta aula: Nao nos preocuparemos com a complexidade de espaco deproblemas, mas apenas com a complexidade de espaco de armazenamento dografo de entrada.
A descricao de um grafo G consome espaco proporcional a |V (G)|+ |E(G)|.
Ou seja, um grafo (V (G),E(G)) consome O(|V (G)|+ |E(G)|) posicoes dememoria para ser armazenado no computador.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Complexidade de espaco
Complexidade de Espaco: Quantidade de memoria necessaria para se resolverum problema em funcao do tamanho da entrada.
Ideia 1: O espaco necessario para se resolver um problema e o espaco necessariopara armazenar a instancia do problema mais o espaco extra necessario pararealizar a computacao
Ideia 2 (mais usual): Definir a complexidade de espaco de um problema levandoem consideracao apenas o espaco extra necessario.
Nesta aula: Nao nos preocuparemos com a complexidade de espaco deproblemas, mas apenas com a complexidade de espaco de armazenamento dografo de entrada.
A descricao de um grafo G consome espaco proporcional a |V (G)|+ |E(G)|.
Ou seja, um grafo (V (G),E(G)) consome O(|V (G)|+ |E(G)|) posicoes dememoria para ser armazenado no computador.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Complexidade de espaco
Complexidade de Espaco: Quantidade de memoria necessaria para se resolverum problema em funcao do tamanho da entrada.
Ideia 1: O espaco necessario para se resolver um problema e o espaco necessariopara armazenar a instancia do problema mais o espaco extra necessario pararealizar a computacao
Ideia 2 (mais usual): Definir a complexidade de espaco de um problema levandoem consideracao apenas o espaco extra necessario.
Nesta aula: Nao nos preocuparemos com a complexidade de espaco deproblemas, mas apenas com a complexidade de espaco de armazenamento dografo de entrada.
A descricao de um grafo G consome espaco proporcional a |V (G)|+ |E(G)|.
Ou seja, um grafo (V (G),E(G)) consome O(|V (G)|+ |E(G)|) posicoes dememoria para ser armazenado no computador.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeada
Para cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:
∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Listas de Adjacencia
O conjunto V (G) e representado por um vetor ou por uma lista encadeadaPara cada v ∈ V (G), o conjunto ΓG (v) e representado por uma lista LG [v ].
Vertices
Um grafo com |V (G)| vertices precisa de um vetor de |V (G)| posicoes (usando vetor)ou de |V (G)| elementos de na lista de vertices (usando lista).
Uma posicao/elemento para cada vertice.
Cada posicao do vetor (se estivermo usando um vetor) ou elemento da lista (seestivermos usando uma lista) guarda um ponteiro para uma lista de arestas
Arestas
O tamanho da lista dos vizinhos de v em G e |LG [v ]| = |ΓG (v)| = δG (v)
Observe que teremos |V (G)| listas de arestas
Total para todas as listas de arestas:∑v∈V (G)
|LG [v ]| =∑
v∈V (G)
δG (v) = 2|E(G)|,
Representacao de todo grafo G : consome espaco O(|V (G)| + |E(G)|).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Matriz de Adjacencia
Analise muito mais simples:
Matriz de adjacencia
A representacao do grafo G por matriz de adjacencia consome espacoproporcional a |V (G)|2, independente do numero de aretas (inclusise se grafonao conter arestas).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Matriz de Adjacencia
Analise muito mais simples:
Matriz de adjacencia
A representacao do grafo G por matriz de adjacencia consome espacoproporcional a |V (G)|2, independente do numero de aretas (inclusise se grafonao conter arestas).
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Grafos direcionados
Lidando com grafos direcionados e ponderados:
Matriz de adjacencia
Por definicao lidam naturalmente com grafos direcionados e ponderados
Listas de adjacencia
Para cada v ∈ V (G) podemos usar listas separadas para Γ+(v) e Γ−(v)
Alternativamente, podemos criar um campo no no da lista indicando adirecao do arco
Para grafos com peso, acrescenta-se um campo para armazenar o peso.
Note: Tanto em matrizes com listas, grafos direcionados e ponderadosconsomem (assintoticamente) o mesmo espaco que grafos simples.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Grafos direcionados
Lidando com grafos direcionados e ponderados:
Matriz de adjacencia
Por definicao lidam naturalmente com grafos direcionados e ponderados
Listas de adjacencia
Para cada v ∈ V (G) podemos usar listas separadas para Γ+(v) e Γ−(v)
Alternativamente, podemos criar um campo no no da lista indicando adirecao do arco
Para grafos com peso, acrescenta-se um campo para armazenar o peso.
Note: Tanto em matrizes com listas, grafos direcionados e ponderadosconsomem (assintoticamente) o mesmo espaco que grafos simples.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Grafos direcionados
Lidando com grafos direcionados e ponderados:
Matriz de adjacencia
Por definicao lidam naturalmente com grafos direcionados e ponderados
Listas de adjacencia
Para cada v ∈ V (G) podemos usar listas separadas para Γ+(v) e Γ−(v)
Alternativamente, podemos criar um campo no no da lista indicando adirecao do arco
Para grafos com peso, acrescenta-se um campo para armazenar o peso.
Note: Tanto em matrizes com listas, grafos direcionados e ponderadosconsomem (assintoticamente) o mesmo espaco que grafos simples.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Grafos direcionados
Lidando com grafos direcionados e ponderados:
Matriz de adjacencia
Por definicao lidam naturalmente com grafos direcionados e ponderados
Listas de adjacencia
Para cada v ∈ V (G) podemos usar listas separadas para Γ+(v) e Γ−(v)
Alternativamente, podemos criar um campo no no da lista indicando adirecao do arco
Para grafos com peso, acrescenta-se um campo para armazenar o peso.
Note: Tanto em matrizes com listas, grafos direcionados e ponderadosconsomem (assintoticamente) o mesmo espaco que grafos simples.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Grafos direcionados
Lidando com grafos direcionados e ponderados:
Matriz de adjacencia
Por definicao lidam naturalmente com grafos direcionados e ponderados
Listas de adjacencia
Para cada v ∈ V (G) podemos usar listas separadas para Γ+(v) e Γ−(v)
Alternativamente, podemos criar um campo no no da lista indicando adirecao do arco
Para grafos com peso, acrescenta-se um campo para armazenar o peso.
Note: Tanto em matrizes com listas, grafos direcionados e ponderadosconsomem (assintoticamente) o mesmo espaco que grafos simples.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Grafos direcionados
Lidando com grafos direcionados e ponderados:
Matriz de adjacencia
Por definicao lidam naturalmente com grafos direcionados e ponderados
Listas de adjacencia
Para cada v ∈ V (G) podemos usar listas separadas para Γ+(v) e Γ−(v)
Alternativamente, podemos criar um campo no no da lista indicando adirecao do arco
Para grafos com peso, acrescenta-se um campo para armazenar o peso.
Note: Tanto em matrizes com listas, grafos direcionados e ponderadosconsomem (assintoticamente) o mesmo espaco que grafos simples.
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Espaco consumido:
Com matrizes e O(|V 2|) (considera maior quantidade possıvel de arestas)
Com listas e O(|V (G)| + |E(G)|).
2 Dado v , verificar se u e seu vizinho:
Com matrizes o custo e O(1) (independente do tamanho do grafo)
Com listas o custo e δG (v).
Variacao desta analise: Dado G , determinar se dois vertices sao vizinhos:
Matrizes: O(1)
Listas O(∆(G)) (tambem e correto dizer O(|V (G)|).
3 Dado v , percorrer sua vizinhanca:
Com matrizes o custo e O(|V (G)|) (mesmo para vertices isolados)
Com listas o custo e O(δG (v))
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)
2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)
Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos
Analise Comparativa
1 Percorrer todas as arestas:
Matriz: O(|V (G)|2), mesmo num grafo sem arestas
Listas: O(|V (G)| + |E(G)|)2 Determinar o grau de um vertice v :
Matriz: O(|V (G)|)Listas: O(δG (v))
3 Acrescentar uma aresta no grafo:
Matriz: O(1)
Listas: O(1)
4 Acrescentar um vertice:
Matriz: Pode nao ser possıvel (depende da possibilidade de realocarmemoria contıgua) ou pode envolver a copia de toda a matriz para outraregiao de memoria (custo O(|V |2)).
Listas: O(1)
Prof. Murilo V. G. da Silva Algoritmos e Teoria dos Grafos