INTRODUO
Diversos problemas prticos so abordados em relao ao roteamento de arcos. Dentre eles podem ser citados: a entrega de cartas, a coleta de lixo domstico, a fiscalizao de linhas de nibus, a inspeo de redes eltricas, Nebulizao (fumac) no combate dengue, Limpeza das ruas Pintura de linhas no centro das ruas Patrulhamento da polcia A reduo de custos desses problemas faz com que sejam otimizadas.
OBJETIVO
O objetivo descrever o mtodo de cobertura de arcos atravs do Problema do Carteiro Chins (PCC), de forma a determinar uma rota de custo mnimo, para que todos os arcos do grafo sejam percorridos ao menos uma vez.
INTRODUO
Caminhos que usam todos os vrtices ou todas as arestas de um grafo so geralmente chamados de percursos; Uma grande variedade de problemas prticos podem ser vistos como um percurso num grafo Eles se dividem em duas categorias:
Problemas do tipo euleriano Problemas do tipo hamiltoniano
INTRODUO
Problemas do tipo euleriano: requerem que cada aresta seja percorrida pelo menos uma vez. Problemas do tipo hamiltoniano: requerem que cada vrtice seja percorrido pelo menos uma vez. Exemplos clssicos de otimizao: o problema do carteiro chins e o problema do caixeiro viajante
Caminho Euleriano Leonhard Euler, que foi um matemtico e fsico suo, em 1736, provou que no existia caminho que possibilitasse tais restries. Euler transformou os caminhos em retas e suas interseces em pontos criando possivelmente o primeiro grafo da histria; Ento percebeu que s seria possvel atravessar o caminho inteiro passando uma nica vez em cada ponte se houvessem no mximo dois pontos de onde saia um nmero mpar de caminhos; Em 1873, Carl Hierholzer mostrou que um grafo cujo todos os vrtices tm grau par euleriano.
Grafos Eulerianos
Um percurso euleriano um percurso que contm todos as arestas do grafo Um circuito euleriano um percurso euleriano fechado Um grafo euleriano um grafo que contm um circuito euleriano Um circuito euleriano no grafo <u,v,t,u,w,t,z,w,x,y,z,u>
u t z y
Caminho Euleriano Um grafo conexo G um Grafo Euleriano se e somente se todos os seus vrtices so grau par. Caminho Euleriano Baseado no grau dos vrtices do grafo: existe um caminho Euleriano em um grafo se: Existem 2 vrtices de grau mpar (inicia em um vrtice mpar e termina em outro vrtice mpar)
Problemas Eulerianos
As pontes de Knigsberg: possvel fazer um percurso atravessando todas as pontes, sem repetir nenhuma?
Problemas Eulerianos
Euler percebeu que s seria possvel atravessar o caminho inteiro passando uma nica vez em cada ponte se houvessem exatamente dois pontos de onde sassem um nmero mpar de caminhos.
Achar o caminho fechado mais curto que percorra todas as arestas de um grafo pelo menos uma vez. o problema do carteiro que quer entregar a correspondncia numa rede de ruas e retornar ao escritrio central o mais rpido possvel.
Definio: em um grafo com peso nas arestas, um circuito timo do carteiro um circuito do carteiro cujo peso total das arestas mnimo
6
2
c
3
f 4
5
g 10
6
h 5 i
O grafo no tem um circuito euleriano (existem vrtices de grau mpar), ento necessrio repetir arestas no circuito.
a
3
c
3
5
g
Exemplo
Encontrar o caminho fechado de custo mnimo passando em todas as arestas do grafo G pelo menos uma vez Vrtices de grau mpar: V2 e V3 Caminho: V1-V2-V4-V3-V2-V3-V1 Custo: 5+2+3+1+1+(1) = 13
v2 5 v2
2
1 v4
2 1 1
v1
v1
1
v4
3
1 v3
v3
FIM!!
Pseudo cdigo
#include <cstdlib> #include <iostream> using namespace std; struct aresta { int origem, destino, custo; }; int main(int argc, char *argv[]) { aresta E[1000]; scanf("%d%d", &nvertices, &narestas); for(int i=0; i < narestas; ++i) { scanf("%d%d%d", &oriegemDaAresta, &destinoDaAresta, &custoDaAresta); E[i].origem = origemDaAresta; E[i].destino = destinoDaAresta; E[i].custo = custoDaAresta; } for (int v = 0; v < nvertices; ++v){ grauExtra[v] = 0; }
b z
M = {a,d}, {c,b}
x c w d
Algoritmo: Circuito timo do Carteiro Ache o conjunto S de vrtices com grau mpar Para cada par de vrtices u e v em S Ache duv, o caminho mais curto entre u e v Forme um grafo completo K com os vrtices em S Para cada aresta e do grafo completo K Atribua o peso duv para a aresta e=<u,v> Ache um casamento perfeito M em K cujo peso total das arestas mnimo Duplique as arestas de G correspondentes ao casamento M Construa um circuito euleriano W no novo grafo G W corresponde a um circuito timo do carteiro em G
Grafos Hamiltonianos
Definio: um caminho hamiltoniano em um grafo G um caminho simples que contm todos os vrtices de G. Definio: um ciclo hamiltoniano um caminho hamiltoniano fechado Definio: um grafo hamiltoniano um grafo que tem um ciclo hamiltoniano
u t z y
Grafos Hamiltonianos
No existe uma regra simples (como para os grafos eulerianos) para caracterizar um grafo como hamiltoniano O problema de saber se um grafo qualquer hamiltoniano NP-completo Um algoritmo de tempo polinomial para resolver o problema no conhecido
Grafos Hamiltonianos
No existe um algoritmo que funcione para qualquer grafo, mas:
Existem condies suficientes para um grafo ser hamiltoniano que se aplicam a uma grande classe de grafos Existem algumas regras bsicas que ajudam a identificar grafos que no so hamiltonianos
Grafos No Hamiltonianos
As regras so baseadas na observao que um ciclo hamiltoniano deve conter exatamente duas arestas incidentes em cada vrtice A estratgia para aplicar as regras iniciar a construo de um ciclo hamiltoniano e mostrar que em algum ponto as regras se contradizem
Grafos No Hamiltonianos
Regras para grafos no-hamiltonianos:
Se um vrtice v tem grau 2, todas as arestas incidentes em v devem fazer parte de qualquer ciclo hamiltoniano Durante a construo, nenhum ciclo pode ser formado at todos os vrtices terem sido visitados Se durante a construo, duas arestas incidentes em um vrtice v so necessrias, todas as outras arestas incidentes podem ser apagadas
Grafos No Hamiltonianos
Exemplo:
Regra 1 Regra 2 Regra 3
a f g e d w x c b v h
Grafos No Hamiltonianos
Exemplo
Regra 1
Regra 3
v w x
Grafos Hamiltonianos
Teorema (Ore, 1960): Seja G um grafo simples de n vrtices, onde n 3, tal que deg(x) + deg(y) n para cada par de vrtices no adjacentes x e y. Ento G hamiltoniano
v u
Grafos Hamiltonianos
Corolrio (Dirac 1952): Seja G um grafo simples com n vrtices, onde n 3, tal que deg(v) n/2 para cada vrtice v. Ento G hamiltoniano
v w
Grafos Hamiltonianos
Exerccio: identifique se o grafo abaixo ou no hamiltoniano
Grafos Hamiltonianos
Exerccio: identifique se o grafo abaixo ou no hamiltoniano
t u w
z y
v s
Grafos Hamiltonianos
Exerccio: identifique se o grafo abaixo ou no hamiltoniano
t u w
z y
v s
10 u
t
7
9 z 10 9
7 11
v
Crowder e Padberg conseguiram uma soluo tima para o problema usando 318 cidades em 1980
Branch and Bound Facet-defining inequalities
Heursticas e Aproximaes
Definio: uma heurstica um procedimento que ajuda na tomada de uma deciso quando existem mltiplas alternativas Heursticas so aplicadas quando impossvel avaliar todas as possibilidades. o que faz, por exemplo, o jogador de xadrez
Heursticas e Aproximaes
Definio: um algoritmo heurstico um algoritmo cujos passos so guiados por uma heurstica. Um algoritmo heurstico abdica da garantia de achar a melhor soluo, para que uma soluo possa ser encontrada rapidamente A heurstica mais simples para o caixeiro viajante a do vizinho mais prximo
Heursticas e Aproximaes
Segundo (BARR et al., 2001), Mtodos Heursticos, tambm chamados algoritmos aproximativos, procedimentos inexatos, algoritmos incorretos, ou simplesmente heursticos so usados para identificar boas solues aproximadas para cada problema em menos tempo que os algoritmos exatos (quando este existir).
Heursticas Construtivas
Heursticas Construtivas As Heursticas de mtodos construtivos iniciam, sem nenhum resultado, a soluo de um problema e constroem passo a passo uma soluo vivel. Apresentam algoritmos gulosos, os quais, devido a enxergarem apenas o que est mais prximo do objetivo desejado, so tambm chamados de algoritmos mopes.
Heursticas Construtivas
Quando se trata de solucionar o PCV, as variaes desta classe de algoritmo, que se apresentam com maior destaque, so: o vizinho mais prximo; a insero mais prxima; a insero mais distante; a insero mais barata; a insero pelo maior ngulo; o mtodo das economias.
Algoritmo: Vizinho mais prximo Inicie em qualquer vrtice v rtulo(v) = 0 i = 0 Enquanto existirem vrtices no rotulados i = i + 1 Percorra a aresta de menor custo que une v a um vrtice no rotulado w rtulo(w) = i v = w
s
7
9 z
7
11 v
10 9 w
1000000 2
1
2 t 1 u
Aplicaes do PVC
Seqenciamento de tarefas:
Suponha n tarefas que devem ser processadas numa nica mquina O tempo necessrio para processar a tarefa j depois da tarefa i cij Como as tarefas devem ser seqenciadas de forma a minimizar o tempo de processamento? A soluo um caminho hamiltoniano de custo mnimo no grafo