15.07.2013 Views

ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa

ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa

ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

acarreta forçosamente uma carga a nível <strong>de</strong> operações <strong>de</strong> entrada/saída que tem impacto na velocida<strong>de</strong> <strong>de</strong><br />

<strong>de</strong>sempenho do algoritmo, mas que é compensada pelo facto <strong>de</strong> se conseguir realizar cálculos que doutra<br />

forma não seriam fazíveis. O uso do MDC assegura que é criado o maior bloco possível e garante assim que é<br />

realizado o número mínimo possível <strong>de</strong> operações <strong>de</strong> leitura e escrita. Nos casos em que esta estratégia não<br />

permite ainda que o cálculo seja efectuado por falta <strong>de</strong> memória, é criado um novo sub-chunk cuja dimensão<br />

resulta do quociente entre o máximo divisor comum (MDC) e o mínimo divisor comum (mDC). No pior dos<br />

casos, cada um dos novos sub-chunks correspon<strong>de</strong>rá a 1 bloco <strong>de</strong> memória, mais uma vez assegurando que<br />

o cálculo po<strong>de</strong> ser efectuado em <strong>de</strong>trimento do <strong>de</strong>sempenho.<br />

Convém sublinhar que todo este processo não altera em nada a lógica <strong>de</strong> funcionamento do algoritmo tal<br />

como foi proposto, uma vez que a necessida<strong>de</strong> <strong>de</strong> mudança <strong>de</strong> um sub-chunk para outro é gerida pelo próprio<br />

nó da MMST: cada nó conhece a dimensão do seu sub-chunk e a base actual e sempre que <strong>de</strong>tecta que o<br />

elemento a tratar está fora do âmbito do sub-chunk em memória or<strong>de</strong>na o carregamento do sub-chunk<br />

a<strong>de</strong>quado.<br />

dim {D 1,D 2,...,D n}<br />

maxDC MDC(dim)<br />

mDC mDC(dim)<br />

chunk maxDC<br />

tam D 1 x D 2 x ... x D n-1<br />

MAX número máximo <strong>de</strong> blocos <strong>de</strong> memória possível<br />

base {b 1,b 2,...,b n}<br />

loc {l 1,l 2,...,l n}<br />

enquanto(tam > MAX)<br />

chunk maxDC/mDC<br />

tam chunk n-1<br />

para cada D i em loc<br />

se(l i > b i l i < b i)<br />

guardaSubChunk(loc)<br />

lêSubChunk(loc)<br />

actualiza(loc,val)<br />

Figura 27 - Pseudocódigo que ilustra o mecanismo <strong>de</strong> sub-chunking<br />

51

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

Saved successfully!

Ooh no, something went wrong!