Redu¸c˜
oes
Eduardo C. Xavier Instituto de Computa¸c˜ao/Unicamp
Programa¸c˜ao Linear (PL)
Vimos que na tentativa de resolver um problema P1 podemos
mapea-lo para um outro problema P2 que sabemos resolver.
Existem alguns problemas P2 que admitem redu¸c˜oes “simples”.
Um destes super-problemas ´e a programa¸c˜ao linear.
V´arios problemas podem ser reduzidos para programa¸c˜ao linear de maneira razoavelmente simples.
Programa¸c˜ao Linear
Diversos problemas devem maximizar ou minimizar uma fun¸c˜ao
objetivo devendo satisfazer algumas restri¸c˜oes.
PL ´e uma formula¸c˜ao geral de tais problemas, desde que a fun¸c˜ao objetivo seja linear e seja poss´ıvel descrever as restri¸c˜oes do problema com inequa¸c˜oes ou equa¸c˜oes lineares.
Programa¸c˜ao Linear
Seja x = (x1,x2, . . . ,xn) um conjunto de vari´aveis reais. Seja c = (c1,c2, . . . ,cn) um vetor de n´umeros constantes. Uma fun¸c˜ao objetivo linear deve ter a forma cx =Pni=1cixi.
Podemos maximizar ou minimizar a fun¸c˜ao objetivo satisfazendo um
Programa¸c˜ao Linear
Sejam a1,a2, . . . ,ak vetores de n´umeros constantes e de tamanho n. Sejam b1,b2, . . . ,bk n´umeros constantes.
As restri¸c˜oes de um PL tem a forma: a1· x ≤ b1 a2· x ≤ b2
. . . .
. . . .
Programa¸c˜ao Linear Podemos ter ≤ ou ≥ ou =: a1· x = b1 a2· x ≤ b2 . . . = . . . = ak · x ≥ bk
Tamb´em ´e comum impor restri¸c˜oes de sinal sobre as vari´aveis: xi ≥ 0.
Um programa linear consiste ent˜ao em maximizar ou minimizar uma
fun¸c˜ao objetivo satisfazendo o conjunto de restri¸c˜oes lineares. Existem algoritmos eficientes para PL.
Programa¸c˜ao Linear:Exemplos
Suponha que vocˆe ´e o Duda e ´e assessor de publicidade de um pol´ıtico.
H´a 3 zonas eleitorais: Z1, Z2, Z3.
Ser´a investido dinheiro em 4 tipos de propaganda: ◮ P1 - Propaganda de gera¸c˜ao de empregos. ◮ P2 - Propaganda de investimento em educa¸c˜ao. ◮ P3 - Propaganda de investimento em seguran¸ca. ◮ P4 - Propaganda de luta contra corrup¸c˜ao.
Programa¸c˜ao Linear:Exemplos
Temos o seguinte retorno em milhares de votos para cada mil reais investidos: Propaganda Z1 Z2 Z3 P1 2 3 6 P2 -1 3 2 P3 4 1 0 P4 1 2 3
Programa¸c˜ao Linear:Exemplos
O pol´ıtico quer ganhar 20 mil votos da Z1, 50 mil da Z2 e 65 mil da Z3.
Duda deve decidir quanto investir em cada tipo de propaganda. Queremos ainda minimizar o total de investimentos em propaganda, mas garantindo a quantidade de votos desejada.
Programa¸c˜ao Linear:Exemplos
Sejam x1,x2,x3,x4 vari´aveis que indicam quanto em milhares de reais deve-se investir em cada tipo de propaganda.
Temos que ter pelo menos 20 mil votos da Z1: 2x1− x2+ 4x3+ x4≥ 20
Pelo menos 50 mil votos da Z2:
3x1+ 3x2+ x3+ 2x2≥ 50
Programa¸c˜ao Linear:Exemplos
Gostariamos de minimizar o total investido (x1+ x2+ x3+ x4).
A quantidade investida ´e sempre positiva: x1≥ 0 x2≥ 0 x3≥ 0 x4≥ 0
Programa¸c˜ao Linear:Exemplos Resumidamente temos o seguinte programa linear:
min x1+ x2+ x3+ x4 2x1− x2+ 4x3+ x4 ≥ 20 3x1+ 3x2+ x3+ 2x2 ≥ 50 6x1+ 2x2+ 3x4 ≥ 65 x1 ≥ 0 x2 ≥ 0 x3 ≥ 0 x4 ≥ 0
Programa¸c˜ao Linear: Fluxo em Redes
Problema de Fluxo em Redes: Seja G = (V,E) um grafo com
capacidades cj para cada aresta j ∈ E .
Devemos estabelecer um fluxo m´aximo entre um v´ertice inicial s e final t.
O fluxo que passa em uma aresta deve estar limitado pela capacidade da aresta.
Programa¸c˜ao Linear: Fluxo em Redes
Vamos criar uma vari´avel xi para cada aresta i = 1, . . . ,m indicando quanto de fluxo passa pela aresta.
Seja S o conjunto de arestas que saem de s. A fun¸c˜ao objetivo ´e
maxX
i ∈S xi
Para todas as arestas devemos limitar o fluxo pelas capacidades destas:
xi ≤ ci para cada aresta i Suficiente?
Programa¸c˜ao Linear: Fluxo em Redes
Devemos impor uma restri¸c˜ao de que todo fluxo que sai de s chegue
at´e t.
Podemos fazer isso impondo que todo fluxo que entre em um v´ertice diferente de s e t deve ser passado adiante.
X j entra emv xj = X i sai de v xi para todo v ∈ V − {s,t}
Programa¸c˜ao Linear: Fluxo em Redes 15 15 10 4 4 12 5 4 2 20 10 1 1 12 7 8 5 s t 6 1 3 2 4 7 5 8 9 10 11
Programa¸c˜ao Linear: Fluxo em Redes max x(1,2) +x(1,3)+ x(1,4) x(1,2) ≤ 4 x(1,3) ≤ 2 . . . . x(1,2) = x(2,5)+ x(2,3)+ x(2,7) x(1,3)+ x(2,3) = x(3,5) . . . . x(2,5)+ x(3,5)+ x(6,5) = x(5,8)+ x(5,11) . . . .
Programa¸c˜ao Linear: Filantropo
Suponha que n pessoas desejam doar dinheiro para k ONGs.
Cada pessoa i vai doar no m´aximo si reais, e no m´aximo aij reais para a ONG j.
Suponha ainda que cada organiza¸c˜ao j pode receber no m´aximo tj reais.
Devemos atribuir doa¸c˜oes de forma a maximizar o total doado
Programa¸c˜ao Linear: Filantropo Vari´aveis xij que indicam quanto i doa `a organiza¸c˜ao j.
max n X i=1 k X j=1 xij k X j=1
xij ≤ si para cada pessoa i
xij ≤ aij para cada pessoa i e ONG j
n X
i=1
xij ≤ tj para cada organiza¸c˜ao j
Programa¸c˜ao Linear: Atribui¸c˜ao ´
E uma altera¸c˜ao do problema do Filantropo.
Neste caso uma pessoa pode doar dinheiro apenas para uma ONG e esta por sua vez s´o pode receber dinheiro de no m´aximo uma pessoa. ´
E um problema de matching (emparelhamento) com pesos.
Neste caso uma pessoa i doa todo o dinheiro aij para alguma
organiza¸c˜ao j.
Programa¸c˜ao Linear: Atribui¸c˜ao Vari´aveis xij que indicam se i doa `a organiza¸c˜ao j.
max n X i=1 k X j=1 aijxij k X j=1
xij ≤ 1 para cada pessoa i
n X
i=1
xij ≤ 1 para cada organiza¸c˜ao j
Programa¸c˜ao Linear: Atribui¸c˜ao Problema: A ´ultima restri¸c˜ao n˜ao ´e linear.
Programas Lineares que requerem restri¸c˜oes de integralidade, no geral, s˜ao dif´ıceis de resolver (veremos em breve).
S˜ao chamados de Programas Lineares Inteiros (PLI).
No caso espec´ıfico do problema da atribui¸c˜ao, podemos resolve-lo com programa¸c˜ao linear sem a restri¸c˜ao de integralidade.
Programa¸c˜ao Linear: Exerc´ıcio
Suponha uma rede representada por um grafo G = (V,E).
Devemos maximizar o n´umero de pacotes enviados na rede por
unidade de tempo.
Cada n´o i representa uma m´aquina e possui um buffer com limite Bi de mensagens sendo recebidas por unidade de tempo.
Cada n´o consegue gerar Gi mensagens por unidade de tempo.
Cada link e = (i,j) consegue transmitir no m´aximo ce pacotes por unidade de tempo.