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.

Seguidamente, é feita uma or<strong>de</strong>nação com base no sub-grafo gerado e é obtido um conjunto <strong>de</strong><br />

sequências <strong>de</strong> agregados a serem computadas em sequência (pipeline).<br />

Este algoritmo concilia as optimizações partilha da or<strong>de</strong>nação (share-sort), uma vez que os dados são<br />

or<strong>de</strong>nados numa <strong>de</strong>terminada or<strong>de</strong>m que permita computar todos os agregados que partilham um<br />

prefixo, e pais mais pequenos (smallest parents), uma vez que os agregados são sempre calculados a<br />

partir <strong>de</strong> outros agregados <strong>de</strong> menor dimensão já calculados. Além disso, emprega ainda as<br />

optimizações resultados em cache (cache-results) e amortização <strong>de</strong> varrimentos (amortize-scans) para<br />

reduzir o número <strong>de</strong> acessos ao disco, pois adopta uma política <strong>de</strong> cálculo em pipeline.<br />

2.4.1.2 PipeHash<br />

O algoritmo PipeSort trabalha igualmente sobre a malha <strong>de</strong> procura e começa por escolher, para cada<br />

agregado, o seu pre<strong>de</strong>cessor <strong>de</strong> menor dimensão, obtendo assim a árvore <strong>de</strong> custo mínimo. Porém, os<br />

recursos normalmente disponíveis continuam a não ser suficientes para computar todos os agregados<br />

<strong>de</strong>ssa árvore, pelo que é necessário <strong>de</strong>cidir quais serão computados em conjunto, quando reservar<br />

memória para diferentes tabelas <strong>de</strong> dispersão e que atributos serão usados para dividir os dados<br />

[Agrawal1996].<br />

O algoritmo começa por seleccionar para, cada agregado, o agregado-pai com menor dimensão total<br />

estimada. No final, obtém uma árvore <strong>de</strong> cobertura mínima (minimum spanning tree), em que cada nó<br />

representa um agregado e cada arco que une o nó A ao nó B indica que A é o menor pai <strong>de</strong> B. A figura<br />

abaixo apresenta a árvore <strong>de</strong> cobertura mínima para a malha <strong>de</strong> procura apresentada na figura 7.<br />

Figura 10 - Árvore <strong>de</strong> cobertura mínima para a malha <strong>de</strong> procura apresentada na figura 7 [Agrawal1996]<br />

Na maioria dos casos, a memória disponível não será suficiente para calcular todos os agregados da<br />

árvore, pelo que é necessário dividir a árvore assim obtida. A árvore é dividida <strong>de</strong> tal forma que cada<br />

uma das sub-árvores obtidas possa ser calculada com uma única passagem do agregado na raiz da<br />

árvore original. Este é um problema NP-completo, o que obriga a escolher uma aproximação à solução;<br />

26

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

Saved successfully!

Ooh no, something went wrong!