Você está na página 1de 23

Otimizao em Redes

rvore Geradora Mnima


Geraldo Robson Mateus
DCC - UFMG
rvore Geradora Mnima

Deseja-se construir uma rede de


comunicao entre vrias cidades a custo
mnimo. Sabe-se que o custo de qualquer
ligao dado por c ij .

rvore Geradora Mnima


rvore Geradora Mnima
min cij yij (1)
(i , j ) A

xij xki N 1, i r ( 2)
j S (i ) k E (i )

xij xki 1, i N r (3)


j S (i ) k E (i )

0 xij | N | yij , (i, j ) A ( 4)

yij {0,1}, (i, j ) A (5)


rvore Geradora Mnima
Dado um grafo G =
(N,A) onde cada arco min (i , j ) Acij xij
possui um custo cij
+ encontrar uma xij S 1, S N ,2 S n
rvore T A que cubra (i , j ) A( S )
cada vrtice em V de xij N 1
forma a minimizar a (i , j ) A

soma dos custos dos x {0,1}, (i, j ) A


ij
arcos em T.
AGM

Uma condio necessria e suficiente para


que G=(N,A) seja uma rvore geradora
mnima que para todo arco a u (A A' ) ,o
ciclo A" , A" A' {au } , verifica:
c(a ) c(a ) , a A (a
u v v v ua )
Primeiro Algoritmo Guloso

Boruvka, 1926.

Se a um grafo conexo finito associamos um


nmero real positivo, um peso, a cada arco e se
estes nmeros so todos distintos, ento existe
uma nica rvore geradora cuja soma dos pesos
em seus arcos mnima dentre todas as rvores
geradora possveis.
Algoritmo de Kruskal (1) -1956
Ordene os arcos em A em ordem crescente de custos:
c( a 1 ) c(a 2 ) ....c(a m );
S* {a1}; k 1;
Repita
k k 1;
se ak No forma ciclo com os arcos de S*
*
ento faa S S* {a k };
at k m;
Fim Algoritmo.
Algoritmo de Kruskal (2)
S* {a1}; k 1;
Repita
k k 1;
S* S* {a k };
se S* Contm um ciclo A
ento seleciona arco a v A' de custo mximo;
faa S* S* {a v };
at k m;
Fim Algoritmo.
Algoritmo de Kruskal (3)
Ordene os arcos em A em ordem decrescente de custos:
c( a 1 ) c(a 2 ) ... c(a m );
S* A; k 0;
Repita
k k 1;
*
se G' ( N, S {a k }) conexo

ento faa S* S* {a k };

at k m;
Fim Algoritmo.
Observaes

G=(N,S*) rvore Geradora Mnima.


(Unio de pequenas rvores)

Kruskal - 1956
Otimalidade
Teoria de Matrides
Matrides
Seja M = (E, F) um sistema independente.
Dizemos que M define um matride se o
algoritmo guloso resolve corretamente
qualquer instncia do Problema de
Otimizao Combinatria associado a M (ou
a F, equivalentemente).

Um conjunto ou elemento (independente)


maximal de F um subconjunto I E tal
que I F e no existe e (E \ I ) : (e U I )
F.
Matrides
Teorema
Seja M = (E, F) um sistema independente. Ento, as
seguintes afirmativas so equivalentes:
M um matride;
Se Ip , Ip+1 e |Ip | = p, |Ip+1| = p + 1, ento existe um
elemento e Ip+1 \ Ip tal que (e U Ip) F;
Se A um subconjunto de E e se I e I so
elementos independentes maximais de A, ento |I|
= |I |.
Matrides

Matride Matricial
Matride Grfico
Matride Uniforme
Unio de Matrides
Interseco de Matrides
Algoritmo de Prim 1/2

Seja o n inicial i=1. Seja L(j) o vetor contendo para cada


j P a extremidade em P do arco minimal de j, ou seja,
XXXX
i P e (i,j) o arco minimal.
L(j)=i, onde YYYY
Seja n =|N|.
para j 2,..,n faa
L( j ) 1;
cij se existe o arco (1, j ) A;
cj
, caso contrrio;
fimpara;
Algoritmo de Prim 2/2
P {1}; P {2,...,n}; S * o;
repita
selecione k P tal que ck min{c j };
j P

faa P P {k}; P P {k}; S * S* {L(k ), k};


se P o ento para todo j P faa
se ckj c j ento faa
cj ckj ;
L( j ) k;
fimse;
fimpara;
fimse;
at P o;
fim algoritmo ;
Complexidade

Kruskal Ordenao arestas +


verificao de ciclos O(mlogn) +
O(n)
Prim ordenao + escolha do n
O(mlogn usando heap)
Boruvka unies de rvores
O(nlogn)
Yao (1975) - (O(mlog(log(n))))
Complexidade
Algoritmo Estruturas de dados especias e Complexidade
subproblemas utilizados
Boruvka Algoritmo de unio de conjuntos O(mlogn)
disjuntos
Kruskal Unio de conjuntos disjuntos O(m(m,n))*
(arestas j (compresso de caminhos e
ordenadas) unio com rank)
Kruskal (no Unio de conjuntos disjuntos e O(mlogn)
ordenado) heapsort
Prim - O(n2)

*(m,n): Inverso da funo de Ackerman, pode ser assumido como uma


constante no maior que 4, para fins prticos. Funo de Ackerman:
A(1, j)=2j, j 1, A(i, 1)=A(i-1, 2), i 2, A(i, j) = A(i-1,A(i, j-1)), j 2
Complexidade
Prim Binary Heap O(mlogn)

Prim d-Heap O(ndlogdn+


mlogdn)
Kruskal F-heap O(nlogn + m)
(ordenado)

Yao Heaps de tamanho k, um O(mloglogn)


algoritmo de seleo

Cheriton e Fila duplamente encadeada, O(mloglogn)


Tarjan leftist heap com deleo e unio
atrasadas, unio de conjuntos
disjuntos
Complexidade
Fredman e F-heap, fila duplamente O(m(m,n))**
Tarjan encadeada
Gabow et al. F-heaps com packets, unio de O(mlog(m,n))
conjuntos disjuntos
Karger Aleatorizao O(nlogn+m)
Karger Aleatorizao, recurso, O(m)***
algoritmo de verificao com
tempo linear
Chazelle Soft heap, computao de O(m (m,n))
conjuntos independentes sub-
timos
** (m,n): min{i | log(i)n m/n} e log(0)n = n
***Tempo de execuo esperado
Complexidade
Fredman e F-heap, fila duplamente O(m(m,n))**
Tarjan encadeada
Gabow et al. F-heaps com packets, unio de O(mlog(m,n))
conjuntos disjuntos
Karger Aleatorizao O(nlogn+m)
Karger Aleatorizao, recurso, O(m)***
algoritmo de verificao com
tempo linear
Chazelle Soft heap, computao de O(m (m,n))
conjuntos independentes sub-
timos
** (m,n): min{i | log(i)n m/n} e log(0)n = n
***Tempo de execuo esperado
rvore de Custo Mnimo
Dado grafo G = (N,A)
Selecionar ACM com |N| -1 arcos AGM
polinomial
Uma vez que o nmero de arestas em uma
rvore geradora qualquer sempre n 1, a
verso de minimizao e maximizao do
problema so equivalentes
Selecionar rvore de custo mnimo com 2
arcos ACM com k = 2 arcos polinomial
Problemas em grafos Cormen et al. 2001
ACM com k arcos

Dado um grafo G = (N,A) onde cada


arco possui um custo cij +

encontrar uma rvore T A com k


arcos que minimize a soma dos custos
dos arcos em T.
ACM com k arcos
min cij xij
(i , j ) A

xij yi , j S, S N ,2 S n
( i , j ) A( S ) i (S j)

xij k, k N 1
(i , j ) A

yi k 1, k N
i N

xij {0,1}, (i, j ) A


yi {0,1}, i N