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