algoritmos e teoria dos grafos aula 04 - ufpr · algoritmos e teoria dos grafos aula 04 prof....

Post on 11-Aug-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related