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.

Por exemplo, no nível 2 da malha todos os agregados contêm exactamente dois atributos. A única<br />

excepção a esta regra é o nível 0, que apenas contém um agregado vazio e é representado pelo termo<br />

ALL. Cada arco da malha está etiquetado com dois custos: o custo S(eij) correspon<strong>de</strong> ao custo <strong>de</strong><br />

computar j a partir <strong>de</strong> i quando i ainda não está or<strong>de</strong>nado, enquanto o custo A(eij) correspon<strong>de</strong> ao custo<br />

<strong>de</strong> computar j a partir <strong>de</strong> i quando i já está or<strong>de</strong>nado [Agrawal1996].<br />

2.4.1.1 PipeSort<br />

O algoritmo PipeSort parte da malha <strong>de</strong> procura com os respectivos custos associados e assume que se<br />

conhece uma estimativa do número <strong>de</strong> valores distintos associados a cada agregado. A malha é<br />

percorrida <strong>de</strong>s<strong>de</strong> o nível k = 0 até ao nível k = N - 1, sendo N o número total <strong>de</strong> atributos, com o objectivo<br />

<strong>de</strong> <strong>de</strong>terminar a melhor forma <strong>de</strong> computar o nível k a partir do nível k + 1. Para isso, é acrescentado ao<br />

nível k + 1 k cópias <strong>de</strong> cada agregado nesse nível e cada nó replicado é ligado ao mesmo conjunto <strong>de</strong><br />

nós a que está ligado o vértice original na malha [Agrawal1996]. A figura 8 mostra este procedimento,<br />

consi<strong>de</strong>rando que se trabalha sobre o nível 1 da malha apresentada na figura 7. As setas em traço cheio<br />

representam os arcos A( ), enquanto as setas a tracejado representam os arcos S( ), sendo o custo <strong>de</strong><br />

todos os arcos que saem <strong>de</strong> um nó indicados sob eles.<br />

Figura 8 - Parte da malha <strong>de</strong> procura transformada [Agrawal1996]<br />

Sabendo que o custo eij <strong>de</strong>s<strong>de</strong> o nó original i até ao nó j <strong>de</strong> nível k é A(eij) e que todos os nós replicados<br />

<strong>de</strong> i têm um custo <strong>de</strong> S(eij), é possível encontrar, para cada nó h no nível k, um vértice g no nível k + 1 a<br />

partir do qual h po<strong>de</strong> ser calculado. Como se po<strong>de</strong> ver na figura 20, o nó A fica ligado ao nó AB por um<br />

arco S( ) e o nó B está ligado a AB por um arco A( ). No nível k = 2, o agregado AB será computado pela<br />

or<strong>de</strong>m BA para que B possa ser obtido a partir <strong>de</strong>le sem necessida<strong>de</strong> <strong>de</strong> reor<strong>de</strong>nação e A seja obtido<br />

reor<strong>de</strong>nando BA. Da mesma forma, como o nó C está ligado ao nó AC por um arco A( ), o nó AC será<br />

computado pela or<strong>de</strong>m CA. Quanto ao nó BC, como não está ligado a nenhum agregado <strong>de</strong> nível 1, é<br />

indiferente a or<strong>de</strong>m pela qual é calculado.<br />

Figura 9 - Resultado obtido pelo algoritmo PipeSort para k = 1 [Agrawal1996]<br />

25

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

Saved successfully!

Ooh no, something went wrong!