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
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