Cap 8 - Filas de Prioridade-4spp

Cap 8 - Filas de Prioridade-4spp - Filas de Prioridade...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Filas de Prioridade Estrutura de Dados 2 TAD Fila de Prioridade Uma fila de prioridade armazena uma coleção de itens . Cada item é um par (chave, elemento). Principais métodos do TAD: ! insertItem ( k , x ): insere um item com chave k e elemento x . ! Item removeMin (): remove da fila e retorna o item com menor chave. Métodos adicionais: ! Item min (): retorna uma cópia do item com menor chave sem removê-lo da fila . ! size (), isEmpty (). Aplicações: ! Fila de espera de vôos ‘lotados’. ! Listas de espera em geral (e.g. transplantes). ! Ordenação. Estrutura de Dados 3 TAD Item Um item em uma fila de prioridade é simplesmente um par chave-elemento. Filas de prioridade armazenam itens para permitir inserções e remoções eficientes baseadas em chaves. Métodos: ! Objeto key (): retorna a chave do item. ! Objeto element (): retorna o elemento associado ao item. Na forma de uma interface Java: public interface Entry { public Object key(); public Object element(); } Estrutura de Dados 4 Implementação Java public class Item implements Entry { private Object key, elem; protected Item (Object k, Object e) { key = k; elem = e; } // construtor public Object get key () { return key; } public Object get element () { return elem; } public void setKey (Object k) { key = k; } public void setElement (Object e) { elem = e; } } Estrutura de Dados 5 Chaves e Relação de Ordem Total Em uma fila de prioridade, chaves podem ser objetos arbitrários para os quais uma ordem é definida. Chaves podem ser bem mais complexos que um simples valor numérico. Dois itens distintos em uma fila de prioridade podem ter chaves iguais. Definição matemática de uma relação de ordem total ( ! ) : ! Propriedade Reflexiva: a ! a ! Propriedade Anti-simétrica: a ! b e b ! a " a = b ! Propriedade Transitiva: a ! b e b ! c " a ! c Isso evita ambiguidades e contradições ao ordenar itens Estrutura de Dados 6 TAD Comparador Um comparador encapsula a ação de comparar dois objetos de acordo com uma dada relação de ordem total. Uma fila de prioridade genérica deve receber um comparador para as chaves que irá utilizar. O comparador é acionado pela fila de prioridade e recebe desta as chaves a serem comparadas. O método primário de um TAD comparador: ! compare (a , b): retorna um inteiro i tal que i < 0 se a < b , i = 0 se a = b, e i > 0 se a > b ; um erro ou exceção ocorre se a e b não podem ser comparados. Métodos adicionais (a resposta é um valor booleano): ! isLessThan (a,b) ! isLessThanOrEqualTo (a,b) ! isEqualTo (a,b) ! isGreaterThan (a,b) ! isGreaterThanOrEqualTo (a,b) ! isComparable (a) Estrutura de Dados 7 Exemplo de Comparador Comparação Lexicográfica de pontos 2D: /** Comparator for 2D points under the standard lexicographic order. */ public class Lexicographic implements Comparator { int xa, ya, xb, yb; public int compare(Object a, Object b) throws ClassCastException { xa = ((Point2D) a).getX(); ya = ((Point2D) a).getY(); xb = ((Point2D) b).getX(); xb = ((Point2D) b)....
View Full Document

This note was uploaded on 04/02/2012 for the course DC 11 taught by Professor Milton during the Spring '12 term at Alaska Pacific University.

Page1 / 9

Cap 8 - Filas de Prioridade-4spp - Filas de Prioridade...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online