13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

• Programação dinâmica<br />

• <strong>Algoritmos</strong> seqüenciais (“online”), p.ex. para particionamento.<br />

Exemplo 8.1<br />

Sequenciamento em processores paralelos<br />

8.1. Introdução<br />

Entrada m processadores, n tarefas com tempo <strong>de</strong> execução li, 1 ≤ i ≤ n.<br />

Solução Um sequenciamento S : [n] → [m], i.e., uma alocação das tarefas<br />

às máquinas.<br />

Objetivo Minimizar<br />

<br />

o makespan (tempo terminal)<br />

maxj∈[m] i∈n|S(i)=j li.<br />

O problema é NP-completo. Seja W = <br />

i∈n li o tempo total (workload).<br />

Sabemos que S ∗ ≥ W/m e também que S ∗ ≥ li, 1 ≤ i ≤ n.<br />

Uma classe <strong>de</strong> algoritmos gulosos para este problema são os algoritmos <strong>de</strong><br />

sequenciamento em lista (inglês: list scheduling). Eles processam as tarefas<br />

em alguma or<strong>de</strong>m, e alocam a tarefa atual sempre à máquina com menor<br />

tempo final.<br />

Proposição 8.3<br />

Sequenciamento em lista com or<strong>de</strong>m arbitrária é uma 2 − 1/m-aproximação.<br />

Prova. Seja h ∈ [m] a máquina que <strong>de</strong>fine o makespan da solução gulosa, e<br />

k ∈ [n] a última tarefa alocada à essa máquina. No momento em que essa<br />

tarefa foi alocada, todas as outras máquinas estavam com tempo ao menos<br />

<br />

i:S(i)=h li − lk, portanto<br />

⎛<br />

m ⎝ <br />

i:S(i)=h<br />

li − lk<br />

⎞<br />

⎠ + lk ≤ W<br />

<br />

i:S(i)=h<br />

li ≤ (W + (p − 1)lk)/p<br />

≤ OPT + p/(p − 1)OPT = (2 − 1/p)OPT<br />

<br />

♦<br />

183

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!