Professional Documents
Culture Documents
CEFET/RN
Problemas Algortmicos
Problema de Deciso
Problema de Localizao
Problema de Otimizao
Problemas Algortmicos
Problema de Deciso
Problema de Localizao
Problema de Otimizao
Aplicaes:
Telefonia
Trfego
Redes de comunicao
Conexidade e Distncia
Grafo Conexo
Grafo Conexo
Antecessor de um vrtice
v1
v2
v3
v4
Antecessores de v3=
{v1,v2,v4}
Conexidade e Distncia
Sucessor de um vrtice
v1
v2
v3
v4
Sucessores de v1=
{v2,v3,v4}
Conexidade e Distncia
)) ( ( ) (
...
)) ( ( ) (
) ( ) (
) ( } { ) (
) 1 (
2
1
^ ^
i
n
i
n
i i
i i
n
k
i
k
i i
v v
v v
v v
v v v
+ + +
+ + +
+ +
+ +
1
]
1
Conexidade e Distncia
1
]
1
Conexidade e Distncia
v1
v5
v2
v3
v4
Conexidade e Distncia
v1
v2
v4
Conexidade e Distncia
Mtodo para achar as componentes F-Conexas de um Grafo usando a
matriz R e Q
Matriz
Para se encontrar as componentes fortemente conexas faz-se
[ ]
ij
R
'
contrrio caso
v vrtice no partindo atingido ser pode v vrtice o se
i j
ij
, 0
, 1
t
R Q
Q R
Conexidade e Distncia
Ex.:
1
1
1
1
]
1
1 1 0 0
1 1 0 0
1 1 1 1
1 1 1 1
R
v3
v1
v2
v4
1
1
1
1
]
1
1 1 1 1
1 1 1 1
0 0 1 1
0 0 1 1
Q
1
1
1
1
]
1
1 1 0 0
1 1 0 0
0 0 1 1
0 0 1 1
Q R
Conexidade e Distncia
Grafo Reduzido
Base
Anti-Base
Raiz
Anti-Raiz
Distncia
Notao d(v,w)
Propriedades:
Distncia
d(1,8)? d(1,4)? d(1,3)?
3 1 2 4
7 5 6 8
Caminhos
Caminhos Eulerianos
Caminhos Eulerianos
No tem soluo
Problema do Carteiro Chins
A primeira referncia ao problema foi em 1962 em uma
revista chinesa, tendo a designao ficada associada ao
problema
Pode ser formulado como o problema de encontrar um ciclo
Euleriano de menor custo
Exemplo: Considere um bairro de uma cidade em que um
carteiro responsvel por distribuir correspondncias. Neste
modelo as arestas ponderadas representaram as ruas e suas
respectivas distncias e os vrtices os cruzamentos. Para que
a correspondncia seja entregue, necessrio que todas as
ruas sejam percorridas pelo menos uma vez e que ao final o
carteiro volte a estao do correio. O problema consiste em
determinar o menor caminho possvel para que o carteiro faa
seu trabalho.
Problemas similares: recolhimento do lixo, inspeo de linhas
de transmisso, inspeo de linhas telefnicas, etc.
Problema do Carteiro Chins
Algoritmo Dijkstra
+
1
0
1
) , (
k
i
i i
v v l
'
) , (
0
) , (
) , (
j i
j i
j i
j i
v v aresta exitir se custo
v v
v v aresta existir no se
v v L
Problema do Menor Caminho Entre
Dois Vrtices
Ex Dijkstra
v5 v2 v1
v4 v3
50
10 100
60
20
30
10
1
1
1
1
1
1
]
1
0
60 0 20
10 0
50 0
100 30 10 0
Iterao S W d(w) d[2] d[3] d[4] d[5]
Problema do Menor Caminho Entre
Dois Vrtices
Ex Dijkstra
v5 v2 v1
v4 v3
50
10 100
60
20
30
10
1
1
1
1
1
1
]
1
0
60 0 20
10 0
50 0
100 30 10 0
Iterao S W d(w) d[2] d[3] d[4] d[5]
Problema do Menor Caminho Entre
Dois Vrtices
Ex Dijkstra
1
1
1
1
1
1
]
1
0
60 0 20
10 0
50 0
100 30 10 0
v5 v2 v1
v4 v3
50
10 100
60
20
30
10
Iterao S W d(w) d[2] d[3] d[4] d[5]
Inicio
1
2
3
4
v1 - - 10(v1) 30(v1) 100(v1)
-
30,10+
30(v1)
100,10+
100(v1)
,10+50
60(v2)
V1,v2
v2
10
V1,v2,v4
v4
30
-
-
60,30+20
50(v4).limp
100,30+60
90(v4)
V1,v2,v4,v3
v3
50 -
- -
90,50+10
60(v3)
V1,v2,v4,v3,v5
v5
60 -
- -
-
Problema do Menor Caminho Entre
Dois Vrtices
Exerccio Dijkstra
1
3
4
2
2
7
v6
v
2
v
4
v
7
v
3
2
v5
v
1 5
3
v
8
2
2
Problema do Caixeiro Viajante
Consiste em determinar o menor caminho, passando por todos os
vrtices uma nica vez e retornando ao vrtice de origem
Mtodos:
Tentativa e erro - A soluo mais direta (simples em implementao)
consiste em tentar todas as permutaes possveis, de modo a verificar
por fora bruta qual o caminho de menor custo. Dado que a quantidade
de permutaes o nmero de cidades, tal soluo logo torna-se
impraticvel, no sendo utilizada.
Suponha um computador capaz de fazer 1 bilho de adies por
segundo. No caso de 20 cidades, o computador precisa apenas de 19
adies para dizer qual o comprimento de uma rota e ento ser capaz
de calcular 1bilho / 19 = 53 milhes de rotas por segundo. Para
acharmos o tempo de execuo total das diversas possibilidades teremos
que realizar a seguinte conta:
Tempo = 19!/53 milhes = 2.3 x 10 seg
Ou seja, 73 anos!!
Problema do Caixeiro Viajante
Mtodos:
Backtracking
Algoritmo DFS
Para cada vrtice v pertencente a V faa
v.marcar=0;//no visitado
d(v)=0; t=0;
Para cada vrtice v pertencente a V faa
se(v.marcar==0)
DFS-VISITA(v);
DFS-VISITA(v){
v.marcar=-1;// visitado
d(v)=++t;
Para cada vrtice w pertencente a ADJ[v] faa
se (w.marcar==0)
DFS-VISITA(w);
v.marcar=1; // marcado
s(v)=++t;
}
Busca ou Caminhamento em
Grafos
Exemplo DFS
v1 v2
v3 v4
v5
v6
d(v)
s(v)
Busca ou Caminhamento em
Grafos
Algoritmo BFS
Para cada vrtice v pertencente a V {S} faa
v.marcar=0;//no visitado
v.marcar=-1;// visitado
d(s)=0;
Q={}
Q.enqueue(S);
Enquanto(Q<>vazio){
v=Q.dequeue();
Para cada vrtice w adjacente a ADJ[v] faa
se(w.marcar==0){
d(w)=d(v)+1;
w.marcar=-1;
Q.enqueue(w);
}
v.marcar=1; // marcado
}
Busca ou Caminhamento em
Grafos
Exemplo BFS
v2 v1
v4 v3
v5
v6
Q={} v0=
Grafos Planares
Um grafo dito ser planar se existir alguma representao
geomtrica de G que possa ser desenhada em um plano, de tal modo
que no haja cruzamento de arestas
v4 v3
v2
v1
Grafos Planares
Face: a face de um grafo planar limitada por arestas do grafo e que
no contenha arestas nem vrtices no seu interior
a
b
c
a1 a2
a3
f1
f2
Grafos Planares