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.
neste caso, o critério consiste em escolher para efectuar a partição o atributo que permita obter a maior<br />
sub-árvore possível a partir da árvore <strong>de</strong> custo mínimo.<br />
Tomando a árvore <strong>de</strong> cobertura mínima da figura 10 e assumindo que não há espaço em memória para<br />
calcular todos os agregados nela representados, há que efectuar a partição da árvore. Quando A é<br />
escolhido como atributo pelo qual se vai efectuar a partição, obtém-se a sub-árvore à esquerda na figura<br />
22. Para computar esta árvore, calcula-se primeiro o agregado ABCD e a partir <strong>de</strong>ste ABC, ABD e ACD;<br />
ABCD e ABD são guardados em disco, calcula-se AD a partir <strong>de</strong> ACD e ACD e AD são guardados em<br />
disco; ABC é lido para a partir <strong>de</strong>le se calcular AB e AC, sendo ABC e AC guardados em disco; por fim,<br />
AB é lido para calcular A e AB e A são guardados em disco. Depois <strong>de</strong>sta sub-árvore ter sido calculada,<br />
é removida da árvore original e são calculadas cada uma das sub-árvores restantes, à direita na figura<br />
11.<br />
Figura 11 - Sub-árvores obtidas por partição da árvore da figura 10 segundo o atributo A [Agrawal1996]<br />
Este algoritmo emprega as optimizações resultados em cache (cache-results) e amortização <strong>de</strong><br />
varrimentos (amortize-scans), pois mantém em memória todos os agregados <strong>de</strong> uma sub-árvore até que<br />
os seus filhos tenham sido calculados, assim como a optimização partilha <strong>de</strong> partições (share-partition)<br />
ao conseguir calcular a partir da mesma partição todos os agregados que contêm o atributo pelo qual se<br />
fez a partição.<br />
2.4.2 Algoritmos baseados em partição<br />
Os dados provenientes do mundo real são frequentemente <strong>de</strong> natureza esparsa, o que justifica o estudo<br />
e <strong>de</strong>senvolvimento <strong>de</strong> técnicas orientadas para esse tipo <strong>de</strong> dados. Nestas condições, a representação<br />
por meio <strong>de</strong> arrays não é uma hipótese viável visto que não é comportável em termos <strong>de</strong> memória. Os<br />
algoritmos baseados na partição dos dados usam dois princípios a que se recorre frequentemente para<br />
realizar operações complexas sobre relações amplas: efectuar a partição das relações em fragmentos<br />
que possam ser armazenados em memória e efectuar a operação sobre cada um <strong>de</strong>sses fragmentos<br />
in<strong>de</strong>pen<strong>de</strong>ntemente. Existem dois algoritmos para computação <strong>de</strong> cubos a partir <strong>de</strong> dados esparsos:<br />
27