• Nenhum resultado encontrado

2.3 otimiza¸c˜ ao de sistemas independentes

2.3.1 Algoritmo Guloso

Nesta sec¸c˜ao vamos apresentar o algoritmo guloso. Em cada etapa este algoritmo s´o considera a melhor escolha, sem ter em conta as altera¸c˜oes que tal escolha possa originar

nas etapas seguintes. Numa fase inicial ordena os elementos do conjunto suporte por or- dem (decrescente para um problema de m´aximo ou crescente para um problema de m´ınimo) dos seus pesos, e em cada passo analisa os pesos seguintes e verifica se os elementos do conjunto suporte associados a esses pesos formam ou n˜ao ciclos com os elementos j´a esco- lhidos. Caso n˜ao forme ciclo adiciona este elemento a F.

Consideremos um conjunto suporte N , uma fun¸c˜ao peso w : N → <+ e uma fam´ılia F

de independentes de N , o algoritmo guloso para o problema IPMax pode ser assim descrito:

Algoritmo 2.1 Algoritmo Guloso para o problema de maximiza¸c˜ao IPMax: Input: M = (N, F) e w : N → <+

Output: I (conjunto independente de peso m´aximo) Passo 1 Fazer t = 1, I0 = ∅

Ordenar os elementos de N de modo que w1 ≥ w2 ≥ · · · ≥ wk

Passo 2 Se w(t) ≤ 0 PARAR. I ← It−1.

Se w(t) > 0 e It−1+ t ∈ F ent˜ao It← It−1+ t

Se w(t) > 0 e It−1+ t 6∈ F ent˜ao It← It−1

Se t = n PARAR. I ← It

Se t < n ent˜ao t ← t + 1 e voltar ao Passo 2.

Teorema 2.6 Se M = (N, F) ´e um matroide o algoritmo guloso determina um conjunto independente de peso m´aximo.

Prova: Suponhamos que M ´e um matroide e que a solu¸c˜ao obtida pelo algoritmo guloso, Ig, n˜ao ´e ´optima. Seja I0 uma solu¸ao ´optima.

Como M ´e um matroide, | Ig |=| I0 |. De facto, como o algoritmo guloso s´o selecciona

elementos com pesos positivos, se | Ig |>| I0 |, ent˜ao pelo axioma (ii) do Teorema 2.1

existir´a e ∈ Ig \ I0 tal que w(e) > 0 e I0 + e ∈ F. Portanto, I0 ao seria solu¸ao ´optima

(com um argumento an´alogo se prova que | I0 | n˜ao pode ser superior a | Ig |).

Admitamos, sem perda de generalidade, que os elementos se encontram ordenados por ordem decrescente dos seu pesos, isto ´e,

Ig = {i1, i2, · · · , ik}, I0 = {j1, j2, · · · , jk},

onde w(i1) ≥ w(i2) ≥ · · · ≥ w(ik) > 0, w(j1) ≥ w(j2) ≥ · · · ≥ w(jk) > 0.

Se Ig ao for uma solu¸ao ´optima,

X

e∈Ig

w(e) < X

e∈I0

e ent˜ao

∃ p ∈ {1, 2, · · · , k} : w(ip) < w(jp) e w(il) ≥ w(jl), se l < p.

Por outro lado, quando o algoritmo guloso selecciona o elemento ip para entrar para Ig

tinha j´a constru´ıdo o independente I = {i1, i2, · · · , ip−1}. Ora como J = (j1, j2, · · · , jp)

tamb´em ´e independente, pelo axioma (ii) do Teorema 2.1, jp ∈ J : I + jp ∈ F.

Mas isso significa que o algoritmo guloso quando tinha j´a gerado o independente I, escolheu um elemento para juntar a I, ip, com w(ip) < w(jp) o que ´e absurdo.

Assim fica provado que se M for um matroide, a solu¸c˜ao encontrada pelo algoritmo guloso ´

e ´optima, qualquer que seja a atribui¸c˜ao w : N → <. 2 Exemplo 2.8 Usemos novamente o matroide induzido pelo grafo G da Figura 2.3 e atri- buamos peso as arestas, w : E → <+. Desta forma associa-se a cada aresta um peso w(e).

Recorde-se que I ´e um independente, ou seja, I ∈ F se e s´o se I n˜ao contem ciclo.

Figura 2.6: Grafo G com peso associado.

Primeiramente vamos ordenar os elementos por ordem decrescente dos seus pesos: w(e11) ≥ w(e10) ≥ w(e1) ≥ w(e9) ≥ w(e3) ≥

w(e8) ≥ w(e2) ≥ w(e7) ≥ w(e6) ≥ w(e4) ≥ w(e5),

e fazer I0 = ∅. Aplicando o Passo 2 do algoritmo temos que I1 = I0 + e11 = {e11} isto

porque I0+ e11∈ F. De seguida ao adicionarmos e10 no conjunto I1, ainda continuamos a

ter um independente, ent˜ao fazemos I2 = I1+ e

10= {e11, e10}. De igual modo a adi¸c˜ao de

e1 ao conjunto I2 continua a pertencer a F, o que implica que I2+ e1 = I3 = {e11, e10, e1}.

Mas vamos notar que I3 + e9 6∈ F, ou seja, forma ciclo o que nos leva a n˜ao adicionar

o elemento e9 ao conjunto I3. Por outro lado, ao adicionarmos e3 ao I3 obtemos I4 pelo

facto de I3+ e

elementos por adicionar, vamos constatar que I4+ ej 6∈ F, ∀ j ∈ {2, 4, 5, 6, 7, 8}. Assim

sendo I4 = {e

11, e10, e1, e3} ´e a solu¸c˜ao ´optima (pois (E, F) ´e um matroide) com peso

w(I4) = w(e11) + w(e10) + w(e1) + w(e3) = 10 + 9 + 8 + 4 = 31.

Quando o sistema independente em estudo n˜ao define um matroide, este algoritmo nem sempre conduz a uma solu¸c˜ao ´optima, sobretudo .

Teorema 2.7 Se (N, F) ´e um sistema independente mas n˜ao ´e um matroide ent˜ao existe uma fun¸c˜ao w : N → < para a qual o algoritmo guloso n˜ao resolve o problema da deter- mina¸c˜ao do conjunto independente de peso m´aximo.

Prova: Suponha-se que (N, F) ´e um sistema independente mas que n˜ao ´e um matroide. Nestas condi¸c˜oes, vamos exibir uma atribui¸c˜ao de peso w : N → < para a qual o algoritmo n˜ao encontra a solu¸c˜ao ´optima.

Se (N, F) n˜ao for um matroide ent˜ao existe um subconjunto X de N , que contem dois inde- pendentes maximais I1 e I2 de cardinalidade diferente, |I1| < |I2|. Para ξ suficientemente

pequeno (por exemplo), 0 < ξ < |I1

1| defina-se w(e) =    1 se e ∈ I1, 1 − ξ se e ∈ I2\ I1,

0 caso contr´ario.

(2.4)

Para esta atribui¸c˜ao de peso, a solu¸c˜ao obtida pelo algoritmo tem peso total |I1| n˜ao sendo,

portanto, uma solu¸c˜ao ´optima, uma vez que qualquer independente que contenha |I2| ele-

mentos tem peso total n˜ao inferior a |I2|(1 − ξ) > |I1|. 2

Exemplo 2.9 Tomemos agora o seguinte exemplo, onde o problema consiste em: M aximizar Z = 8x1+ 2x2+ 5x3+ 4x4+ 2x5

sujeito a 8x1+ 2x2+ 5x3+ 4x4+ 2x5 ≤ 14

x1, · · · , x5 ∈ {0, 1}.

Usando o algoritmo guloso obteremos o seguinte: I0 = ∅ w(1) ≥ w(3) ≥ w(4) ≥ w(2) ≥ w(5) I0+ {1} ∈ F ⇒ I1 = I0+ {1} = {1} I1+ {3} ∈ F I2 = I1+ {3} = {1, 3} I2+ {4} 6∈ F I3 = I2 I3+ {2} 6∈ F ⇒ I4 = I3 I4+ {5} 6∈ F I5 = I4 = {1, 3}.

A solu¸c˜ao encontrada pelo algoritmo guloso ´e I = {1, 3} com peso w(I) = w(1) + w(3) = 13,

mas o independente de peso m´aximo ´e {1, 2, 4} com peso

w({1, 2, 4}) = w(1) + w(2) + w(4) = 14.

O algoritmo guloso para o problema de maximiza¸c˜ao PIMax sobre um sistema inde- pendente (N, F) corresponde ao algoritmo guloso para o problema de minimiza¸c˜ao BPMin, aplicado ao dual (N, FD).

Este algoritmo ´e semelhante ao algoritmo de Kruskal para o PASCM. No caso em que w(t) > 0, ∀ t o algoritmo determina uma base de F.

Algoritmo 2.2 Algoritmo guloso para o problema de minimiza¸c˜ao BPMin Input: (N, F) e w : N → <+

Output: B (uma base de F de peso m´ınimo) Passo 1 Fazer N = {e1, e2, · · · , ek}

Ordenar os elementos de N por ordem crescente do peso w(e1) ≤ w(e2) ≤ · · · ≤ w(ek)

Passo 2 Fazer B = N .

Para i = 1, 2, · · · , k fazer

Se sp(B − ei) = N ent˜ao B ← B − ei.

Suponhamos que pretendemos encontrar uma base B do grafo apresentado na Figura 2.6 tal que w(B) seja m´ınimo. Ent˜ao temos:

i B Arestas ordenadas por peso

1 {e1, · · · , e11} e11, e10, e1, e9, e3, e8, e2, e7, e6, e4, e5 2 {e1, · · · , e10} e10, e1, e9, e3, e8, e2, e7, e6, e4, e5 3 {e1, · · · , e9} e1, e9, e3, e8, e2, e7, e6, e4, e5 4 {e2, · · · , e9} e9, e3, e8, e2, e7, e6, e4, e5 5 {e2, · · · , e8} e3, e8, e2, e7, e6, e4, e5 6 {e2, e4, e5, e6, e7, e8} e8, e2, e7, e6, e4, e5 7 {e2, e4, e5, e6, e7, e8} e8, e2, e7, e6, e4, e5 n˜ao removemos e8 8 {e2, e4, e5, e6, e7, e8} e8, e2, e7, e6, e4, e5 n˜ao removemos e2 9 {e2, e4, e5, e6, e8} e8, e2, e6, e4, e5 10 {e2, e4, e5, e6, e8} e8, e2, e6, e4, e5 n˜ao removemos e6 11 {e2, e5, e6, e8} e8, e2, e6, e5 12 {e2, e4, e6, e8} e8, e2, e6, e5 n˜ao removemos e5

ou seja, B = {e2, e5, e6, e8} ´e solu¸c˜ao ´optima com peso

w(B) = w(e2) + w(e5) + w(6) + w(8) = 3 + 1 + 2 + 3 = 9.

Cap´ıtulo 3

Interse¸c˜ao de Matroides

3.1

Introdu¸c˜ao

Muitos problemas de otimiza¸c˜ao podem ser vistos como problemas de otimiza¸c˜ao sobre interse¸c˜ao de matroides, isto ´e, os conjuntos de solu¸c˜oes admiss´ıveis s˜ao, simultaneamente, conjuntos independentes de diferentes matroides.

Edmonds [10], mostrou que se tivermos dois matroides a determina¸c˜ao do independente de cardinalidade ou peso m´aximo comum entre eles, pode ser determinada polinomialmente. O problema da determina¸c˜ao da interse¸c˜ao de dois matroides de cardinalidade m´axima, ´

e estudado na sec¸c˜ao 3.3. Na sec¸c˜ao 3.4 ´e apresentado um algoritmo para a determina¸c˜ao da solu¸c˜ao ´optima para o problema de interse¸c˜ao de matroides de peso m´aximo.

Dados dois sistemas independentes (N, F1) e (N, F2), definimos a sua interse¸c˜ao por

(N, F) onde F = F1∩ F2. Nota-se que se (N, F1) e (N, F2) forem dois matroides quaisquer,

(N, F1∩ F2) ´e um sistema independente mas em geral n˜ao ´e um matroide.

Exemplo 3.1 Consideremos o exemplo da Figura 3.1.

Figura 3.1: Ilustra¸c˜ao do grafo bipartido G = (V1, V2, E).

Um emparelhamento em G pode ser visto como um independente que ´e simultaneamente independente dos matroides Mi = (E, Fi) i = 1, 2 onde I ∈ Fi se em I quanto muito uma

aresta incide em cada v´ertice de Vi (matroides da parti¸c˜ao), definido pelo grafo da Figura 3.1. A fam´ılia F = {∅, {e1}, {e2}, {e3}, {e4}, {e5}, {e6}, {e7}, {e1, e4}, {e1, e5}, {e1, e6}, {e1, e7}, {e2, e3}, {e2, e5}, {e2, e7}, {e3, e6}{e3, e7}, {e4, e7}, {e5, e6}, {e1, e4, e7}, {e1, e5, e6}, e2, e3, e7}} = F1∩ F2 ´

e um sistema independente mas n˜ao ´e um matroide porque, por exemplo, I1 = {e1, e4, e7}

e I2 = {e2, e5} s˜ao dois independentes maximais mas I2 n˜ao ´e m´aximo, |I1| = 3 6= |I2| = 2.

De uma forma an´aloga ´e definida a interse¸c˜ao de um n´umero finito de independentes, e ´e evidente que o resultado ´e novamente um sistema independente.

O resultado seguinte mostra que todo o sistema independente pode ser obtido a partir da interse¸c˜ao de um n´umero finito de matroides.

Proposi¸c˜ao 3.1 Qualquer sistema independente (N, F) ´e a interse¸c˜ao de um n´umero fi- nito de matroides.

Prova: Seja C a fam´ılia de ciclos de (N, F). Em primeiro lugar vamos provar que para cada ciclo C, o sistema (N, FC) com FC = {I ⊆ N : C \ I 6= ∅} define um matroide

MC = (N, FC).

(i) ´E evidente que para I = ∅, C\I 6= ∅, ou seja, ∅ ∈ FC.

(ii) Se I1 ∈ FC ent˜ao C\I1 6= ∅. Suponhamos que I2 ⊆ I1 isso implica que ∅ 6= C\I1 ⊆

C\I2, ou seja, I2 ∈ FC. Ent˜ao por (i) e (ii) o sistema (N, FC) ´e um sistema inde-

pendente.

(iii) Vamos agora provar que todos os independentes maximais de X ⊆ N tˆem a mesma cardinalidade. Seja X ⊆ N , I, I0 ⊆ X s˜ao independentes (I, I0 ∈ F ⇔ C\I 6= ∅ e C\I0 6= ∅) e maximais, ent˜ao tem-se dois casos:

a) se C ⊆ X ent˜ao | I |=| I0 |=| X | −1. b) se C 6⊆ X ent˜ao I = I0 = X pois C\X 6= ∅.

Por fim vamos verificar que a interse¸c˜ao de todos esses matroides MC, C ∈ C ´e o pr´oprio

sistema independente (N, F), ou seja, F = T

C∈CFC. Seja A =

T

C∈CFC, pretendemos

mostrar que A = F. Se I ∈ A ent˜ao I ∈ FC, ∀ C ∈ C ⇒ C\I 6= ∅, ∀ C ∈ C. Ent˜ao I n˜ao

cont´em qualquer ciclo (∀ C ∈ C, C 6⊂ I). Logo I ∈ F ⇒ A ⊆ F. Reciprocamente

I ∈ F ⇒ C\I 6= ∅, ∀ C ∈ C ⇒ I ∈ A ⇒ F ⊆ A.

Um conjunto I ⊆ N : I ∈ F1 ∩ F2 ´e uma interse¸c˜ao de cardinalidade m´axima se n˜ao

existe nenhum conjunto independente I0 ∈ F1∩ F2 com | I0 |>| I |. Mais genericamente,

fa¸camos uma atribui¸c˜ao de peso aos elementos ei ∈ N, w : N → <. Um conjunto

independente I ⊆ N : I ∈ F1 ∩ F2 ´e uma interse¸c˜ao de peso m´aximo se a soma total dos

pesos em I, w(I), for m´axima,

w(I) = max{w(I0) : I0 ∈ F1∩ F2}.

Documentos relacionados