Está en la página 1de 58

Captulos 10 y 11

TAD Tabla y Cola de Prioridad


Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
Temas

TAD Cola de Prioridad

mplementacin est"tica

#ariantes
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
Temas

TAD $et

TAD Diccionario

TAD Tabla

TAD Cola de Prioridad

#ariantes
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD $et
A B
A B
A / B A B
A
c
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD $et - Especi%icacin
PROCEDURE Vacio () : Set;
(* retorna el conjunto vaco *)
PROCEDURE Insertar (a : T; A : Set) : Set;
(* Agrega el elemento a al conjunto A *)
PROCEDURE EsVacio (A : Set) : BOOEA!
(* retorna TRUE "## A e" vaco *)
PROCEDURE Pertenece (a : T; A : Set) :BOOEA!;
(* retorna TRUE "## a e" un elemento $e A *)
PROCEDURE Union (A% B : Set) : Set;
(* retorna el conjunto A B *)
PROCEDURE Interseccion (A% B : Set) : Set;
(* retorna el conjunto A B *)
PROCEDURE Diferencia (A% B : Set) : Set;
(* retorna el conjunto A / B *)
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD $et - mplementaciones

&istas encadenadas

$in orden

'rdenadas

Arreglo de bits (o booleanos)

El tipo base debe ser un subrango de naturales (1**+)

Correspondencia entre el tipo base y un subrango +

Arreglo con tope

$i el tama,o del diccionario no supera el largo

mplementacin mediante A--

Acotado .s* no acotado

ne%iciencia en las ops* .aco / y /

0so ine%icientemente de memoria


Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Diccionario - Especi%icacin
PROCEDURE Vacio () : D#cc;
(* retorna el $#cc#onar#o vaco *)
PROCEDURE Insertar (# : T; D : D#cc) : D#cc; (* retorna
un nuevo $#cc#onar#o &ue con"#"te $e to$o" lo" elemento"
$e D#cc m'" el elemento #% "# e" &ue # no era (a un
elemento $e D *)
PROCEDURE EsVacio (D : D#cc) : BOOEA!
(* retorna TRUE "## D e" vaco *)
PROCEDURE Pertenece (# : T; D : D#cc) : BOOEA!;
(* retorna TRUE "## # e" un elemento $e D *)
PROCEDURE Borrar (# : T; D : D#cc) : D#cc;
(* Borra el elemento # $el $#cc#onar#o D) S# # no
*ertenece a D% el $#cc#onar#o retorna$o e" D *)
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Diccionario - mplementaciones

&istas encadenadas

$in orden

'rdenadas

mplementacin mediante A--

E%iciente de%inicin de las operaciones y utili1acin


del espacio de memoria

Arreglo de bits (o booleanos)

&os elementos deben pertenecer al subrango 1**+


o correspondencia

Arreglo con tope

$i el tama,o del diccionario es acotado

Arboles balanceados2 Arboles - y A#&

Tablas de 3as3 (se .er" en P3)


Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Diccionario - mplementaciones
'(1) '(1) '(1) '(n) '(n)
Vector
Booleano
'(n) '(n) '(1) '(1) '(1)
Vector con
tope
'(n)/
'(log n)
'(n)/
'(log n)
'(n)/
'(log n)
'(1) '(1)
ABB
'(n)/'(n42) '(n)/'(n42) '(n)/'(n42)
'(1) '(1)
Lista enc.
ordenada
'(n) '(n) '(1) '(1) '(1)
Lista enc.
no ord.
Pertenece Borrar Insertar EsVacio Vacio
'(1) '(1) '(1) '(n) '(n)
Vector
Booleano
'(n) '(n) '(1) '(1) '(1)
Vector con
tope
'(n)/
'(log n)
'(n)/
'(log n)
'(n)/
'(log n)
'(1) '(1)
ABB
'(n)/'(n42) '(n)/'(n42) '(n)/'(n42)
'(1) '(1)
Lista enc.
ordenada
'(n) '(n) '(1) '(1) '(1)
Lista enc.
no ord.
Pertenece Borrar Insertar EsVacio Vacio
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla (5apping/ Table)

0na tabla es una %uncin (parcial) de elementos

De un tipo/ llamado el tipo dominio

A elementos de otro tipo/ llamado el tipo recorrido

0na tabla T asocia el elemento r del recorrido al


elemento d del dominio lo denotaremos

T(d) 6 r

Algunas %unciones 7ue pueden ser %"cilmente


implementadas como un procedimiento de 5odula-2
7ue computan la e8presin

s7r(i) 6 i
2 2

'tras %unciones slo se pueden describir dando para


cada d el .alor T(d)
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - E9emplo

mplementar una %uncin 7ue asocie a cada estudiante


el con9unto de asignaturas de la carrera 7ue tiene
aprobadas
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - 'peraciones

'peraciones 7ue de%inen a este tipo abstracto

Dado un elemento d del dominio interesa


recuperar el elemento T(d) o saber si T(d) est"
de%inido (si d pertenece al dominio de T)

nteresa dar de alta elementos en el dominio de T


y almacenar sus correspondientes .alores

Alternati.amente interesa modi%icar el .alor T(d)


para un determinado d

'peracin 7ue permita construir una tabla .aca/


es decir/ la tabla cuyo dominio es .aco
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - Especi%icacin
DE+,!,T,O! -ODUE Ta.la";
+RO- Dom#n#o,n/o ,-PORT Dom;
+RO- Recorr#$o,n/o ,-PORT Rango;
T0PE Tabla;
T0PE RangoE 1 RECORD
CASE $e/ : BOOEA! O+
TRUE : r : Rango2
+ASE :
E!D
E!D;
PROCEDURE CreoTabla (): Ta.la;
(* retorna la ta.la vaca *)
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - Especi%icacin
PROCEDURE Insertar ($: Dom; r: Rango; 3AR T: Ta.la);
(* De/#ne T($) 1 r% #n$e*en$#entemente $e &ue T($)
e"tuv#era (a $e/#n#$o *)
PROCEDURE EsVacia (T: Ta.la): BOOEA!
(* retorna TRUE "## T e" vaca *)
PROCEDURE EstaDefinida (T: Ta.la; $: Dom): BOOEA!
(* retorna TRUE "## T e"t' $e/#n#$a *ara $ *)
PROCEDURE Recuperar($: Dom; T: Ta.la; 3AR re"*: RangoE);
(* retorna $e/ 1 TRUE ( r 1 T($) "# T e"t' $e/#n#$a *ara
$% "#no $e/ 1 +ASE *)
(*3ariantes del comportamiento de Recuperar???? *)
PROCEDURE Borrar($: Dom; 3AR T: Ta.la);
(* el#m#na la corre"*on$enc#a &ue v#ncula a $ en T) uego
$e .orrar% E"taDe/#n#$a(T%$) e" +ASE *)
E!D Ta.la";
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - mplementaciones

&as implementaciones de con9untos tb sir.en

Tablas de :as3

$i el tipo dominio de una tabla es un tipo elemental de


5odula-2 puede ser usado como el tipo ndice de un
arreglo

&a tabla puede ser implementada directamente


como un arreglo

Condiciones muy particulares para 7ue el


resultado pueda ser considerado adecuado
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - mplementaciones

Cual7uier tabla con dominio %inito puede ser


representada como una lista de pares (d
1
/ r
1
)/ (d
2
/
r
2
)/ ***/ (d
;
/ r
;
)

d
i
son los elementos corrientes del dominio

r
i
es el .alor 7ue la tabla asocia con d
i

i 6 1**;

$i el dominio de la tabla admite un orden total

$e puede usar A--s (o "rboles balanceados)

Cual7uier implementacin de con9untos4diccionarios es


adecuada para Tablas
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - mplementaciones
D debe poder mapearse a un
subrango de los +aturales
$in condiciones para D
D debe tener un orden asociado
D debe tener un orden asociado
$in condiciones para el dominio D
Acotada
Vectores, cada entrada
d del vector contiene el
correspondiente valor r
Acotada
Vector con tope
Acotada o
no acotada
ABB
Acotada o
no acotada
Lista encadenada
ordenada
Acotada o
no acotada
Lista encadenada no
ordenada
D debe poder mapearse a un
subrango de los +aturales
$in condiciones para D
D debe tener un orden asociado
D debe tener un orden asociado
$in condiciones para el dominio D
Acotada
Vectores, cada entrada
d del vector contiene el
correspondiente valor r
Acotada
Vector con tope
Acotada o
no acotada
ABB
Acotada o
no acotada
Lista encadenada
ordenada
Acotada o
no acotada
Lista encadenada no
ordenada
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - mplementacin Arreglo
,-PE-E!TAT,O! -ODUE Ta.la";
+RO- Dom#n#o,n/o ,-PORT Dom% m#nD%ma4D;
+RO- Recorr#$o,n/o ,-PORT Rango;
+RO- Storage ,-PORT Allocate;
T0PE
Ta.la 1 PO,!TER TO Ta.laArra(;
Ta.laArra( 1 ARRA0 Dom O+ RangoE;
PROCEDURE CreoTabla () : Ta.la;
3AR
t : Ta.la; # : Dom;
BE5,!
!e6(t);
+OR #:1 m#nD TO ma4D DO
t78#9)$e/ :1 +ASE
E!D;
RETUR! t
E!D CreoTa.la;
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Tabla - mplementacin Arreglo
PROCEDURE Insertar($ : Dom; r : Rango; T : Ta.la) : Ta.la;
BE5,!
:,T; T78$9 DO
$e/ :1 TRUE;
val :1 r
E!D
RETUR! T
E!D ,n"ertar;
PROCEDURE Recuperar($ : Dom; T : Ta.la; 3AR re"* : RangoE);
BE5,!
Re"* :1 T78$9
E!D Recu*erar;
E!D Ta.la";
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue (Cola de Prioridad)

En ambientes multiusuarios/ como los sistemas


operati.os/ se deben mane9ar prioridades sobre las
tareas a reali1ar

$e de%ine un orden de rele.ancia entre las tareas y se


reali1an primero las de mayor (o menor prioridad)
seg=n el criterio 7ue se determine

$e utili1an colas de prioridades

En las colas se insertan tareas con prioridades


asignadas

Cada .e1 7ue e8ista disponibilidad para e9ecutar


una nue.a tarea se eli9e/ dentro de la cola/ la de
mayor (o menor) prioridad (!ind5a8 o !ind5in)
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue (Cola de Prioridad)

A di%erencia del TAD <ueue

&as inserciones depender"n de un par"metro


agregado (la prioridad) y

&as ba9as dependen de la prioridad de las tareas


dentro de la cola
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue (Cola de Prioridad)

5uc3as .eces la prioridad est" dada por el tipo de


dato a insertar

Tiene 7ue e8istir una %uncin de orden dentro del


tipo de dato 7ue los pueda clasi%icar

Tomaremos la prioridad como un dato e8terno al tipo a


insertar

Asumiremos 7ue un elemento tiene m"s prioridad 7ue


otro si es ingresado con un .alor de prioridad menor

Para representar las prioridades utili1aremos el tipo


primiti.o CA>D+A&
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - Especi%icacin
DE+,!,T,O! -ODUE P<ueue;
+RO- T#*oBa"e ,-PORT T;
T0PE P&ueue;

(*************** Con"tructora" ***************)
PROCEDURE NullPQ () : P<ueue;
(* Retorna el la cola $e *r#or#$a$ vaca *)
PROCEDURE InsertPQ (t : T; *r#o : CARD,!A; P< :
P<ueue) : P<ueue;
(* Retorna una nueva cola $e *r#or#$a$ &ue con"#"te $e
to$o" lo" elemento" $e P< m'" el elemento t con "u
*r#or#$a$ *)
(**************** Pre$#ca$o ****************)
PROCEDURE IsEmpty (P< : P<ueue) : BOOEA!
(* Retorna TRUE "# P< e" vaca *)
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - Especi%icacin
(**************** Selectora ****************)
PROCEDURE ind!in(P< : P<ueue) : T;
(* Pre: !ot ,"Em*t((P<)) Retorna un elemento $e la cola
&ue *o"ee menor *r#or#$a$ *)
(*************** De"tructora" ***************)
PROCEDURE Delete!in(P< : P<ueue) : P<ueue;
(* Pre: !ot ,"Em*t((P<)) Retorna la cola P< "#n el (un)
elemento $e menor *r#or#$a$ *)
E!D P<ueue;
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - mplementacin

&ista simple para representar las colas de prioridad

nserciones son sencillas (op* cons de lista)

-=s7uedas y supresiones del elemento mnimo


son '(n)

&ista ordenada (por prioridad)

nserciones son '(n)

'peraciones selectoras y destructoras resultan


inmediatas (sobre el comien1o de la lista)

A--

nserciones/ ops* selectoras y destructoras son


'(n)

'(log n) caso promedio (??)


Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - mplementacin

-inary :eap (5ontculo binario)

Estructura 7ue permite me9orar la cantidad de


comparaciones para las operaciones de
insercin/ b=s7ueda del mnimo y borrado

'(log n) en el peor caso


Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - mplementacin

0n heap es un "rbol binario 7ue tiene dos propiedades

Propiedad de estructura2

El "rbol binario es lleno/ con e8cepcin del


=ltimo ni.el (7ue debe estar completo de
i17uierda a derec3a)

Propiedad de orden del 3eap2

Para cada nodo @/ la prioridades de sus 3i9os


son mayores o iguales a la del nodo @

Estas dos propiedades se deben conser.ar cada .e1


se aplica una operacin (Insert, DeleteMin) sobre los
montculos
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - :eap

Es un 3eap? Cumple las dos propiedades?


13
21 16
24
65 26
31
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - :eap

Es un 3eap? Cumple las dos propiedades?


13
21 16
24
6 26
31
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - :eap

Es un 3eap? Cumple las dos propiedades?


13
21 16
24
6 26
31
32
68 19
+' cumple
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - :eap

Es un 3eap? Cumple las dos propiedades?


13
21 16
24
6 26
31
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - :eap

Es un 3eap? Cumple las dos propiedades?


13
21 16
24
6 26
31
32
68 19
+' cumple
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD Priority <ueue - :eap

&a propiedad de orden garanti1a 7ue todo camino


desde la ra1 3acia las 3o9as esta ordenado de menor a
mayor

En el "rbol e8isten ordenes parciales

&a propiedad estructural nos permite representar el


"rbol binario en un arreglo
Ni"#$ Ni"#& Ni"#' Ni"#(
:eap

$e puede representar en un arreglo con tope


a
c
d
! i
e
"
# $
a c d e $ # ! i " ...
$ & ' ( ) * + , - $.

:eap

Dado un elemento i

$us 3i9os est"n en las posiciones 2 * i (3i9o


i17uierdo) y 2 * i + 1 (3i9o derec3o)

El padre del nodo en la posicin i se encuentra en


la posicin i DIV 2

Esta representacin est"tica obliga a agregar un


predicado 7ue responde si se encuentra lleno

&a operacin FindMin claramente es tri.ial

5as delicadas son las ops* de insercin y de


supresin del mnimo/ 7ue deben preser.ar las dos
propiedades de los montculos
:eap

a c d e $ # ! i " ...
$ & ' ( ) * + , - $.

Ni"#$ Ni"#& Ni"#' Ni"#(
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Ascendente

InsertPQ

$e utili1a la pr8ima casilla


libre 7ue le corresponde

&uego se BsubeB en el
camino desde Cl 3asta la
ra1 tanto como se pueda
(seg=n la propiedad de
orden)

B$ubirB signi%ica comparar


el nodo con su padre y si
este es menor entonces
intercambiar la in%ormacin
13
21 16
24
65 26
31
32
68 19
14
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Ascendente

$e ubica en la casilla
correspondiente

la pr8ima casilla libre


13
21 16
24
65 26
31
32
68 19
14
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Ascendente

$e compara con .alor del


padre y se intercambia si
corresponde
13
21 16
24
65 26
31
32
68 19
14
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Ascendente

$e compara con .alor del


padre y se intercambia si
corresponde
13
21 16
24
65 26
14
32
68 19
31
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Ascendente

$e compara con .alor del


padre y se intercambia si
corresponde
13
14 16
24
65 26
21
32
68 19
31
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Ascendente

Esta %orma de insercin


conser.a las dos
propiedades de heap
13
14 16
24
65 26
21
32
68 19
31
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Descendente

Delete!in

El elemento de menor
prioridad se encuentra en la
ra1 del heap

Para eliminar este nodo lo


sustituimos por el =ltimo
elemento del =ltimo ni.el del
"rbol

mantenemos la
propiedad estructural
13
14 16
24
65 26
21
32
68 19
31
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Descendente

Delete!in

El elemento de menor
prioridad se encuentra en la
ra1 del heap

Para eliminar este nodo lo


sustituimos por el =ltimo
elemento del =ltimo ni.el del
"rbol

mantenemos la
propiedad estructural
31
14 16
24
65 26
21
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Descendente

&uego Bba9amosB este nodo


3asta donde corresponda

5antenemos
propiedad de orden

B-a9arB es comparar el nodo


con sus dos 3i9os inmediatos
y/ si corresponde/
intercambiar con el menor
de ellos
31
14 16
21
65 26
24
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Descendente

&uego Bba9amosB este nodo


3asta donde corresponda

5antenemos
propiedad de orden

B-a9arB es comparar el nodo


con sus dos 3i9os inmediatos
y/ si corresponde/
intercambiar con el menor
de ellos
14
31 16
21
65 26
24
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Descendente

&uego Bba9amosB este nodo


3asta donde corresponda

5antenemos
propiedad de orden

B-a9arB es comparar el nodo


con sus dos 3i9os inmediatos
y/ si corresponde/
intercambiar con el menor
de ellos
14
21 16
31
65 26
24
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrado Descendente

&uego Bba9amosB este nodo


3asta donde corresponda

5antenemos
propiedad de orden

B-a9arB es comparar el nodo


con sus dos 3i9os inmediatos
y/ si corresponde/
intercambiar con el menor
de ellos
14
21 16
26
65 31
24
32
68 19
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
:eap A !iltrados

$uponiendo una
distribucin uni%orme

Cuanto puede subir?

Cuanto puede ba9ar?


14
24 16
26
65 31
21
32
68 19
TAD Priority <ueue - mplementacin
,-PE-E!TAT,O! -ODUE P<ueue;
+RO- Storage ,-PORT Allocate;
T0PE
PQueue 1 PO,!TER TO ArrTo*e;
!o$o 1 RECORD
* : CARD,!A; (* Pr#or#$a$ *)
t : T;
E!D;
ArrTo*e 1 RECORD
cel$a" : ARRA08=))!9 O+ !o$o;
to*e : >))!;
E!D;
TAD Priority <ueue - mplementacin
PROCEDURE NullPQ () : P<ueue;
3AR
*& : P<ueue;
BE5,!
!e6(*&);
*&7)to*e :1 >;
RETUR! *&
E!D !ullP<;

TAD Priority <ueue - mplementacin
PROCEDURE InsertPQ (t: T; *r#o: CARD,!A; P<: P<ueue) :
P<ueue;
/0 Pre1 No esta lleno2 Debe ser especificado en la def2 del T3D 04
3AR *o" : =))!;
BE5,!
P<7)to*e :1 P<7)to*e ? =;
P<7)cel$a"8P<7)to*e9)* :1 *r#o;
P<7)cel$a"8P<7)to*e9)t :1 t;
*o" :1 P<7)to*e;
:;,E ((*o" @ =) A!D
(P<7)cel$a"8*o"9)*r#o A
P<7)cel$a"8*o" D,3 B9)*r#o)) DO
!o$oS6a*(P<7)cel$a"8*o" D,3 B9%P<7)cel$a"8*o"9);
*o" :1 *o" D,3 B;
E!D;
RETUR! P<;
E!D ,n"ertP<;
TAD Priority <ueue - mplementacin
PROCEDURE IsEmpty (P<: P<ueue) : BOOEA!;
BE5,!
RETUR! (P<7)to*e 1 >);
E!D ,"Em*t(;
PROCEDURE Isull (P<: P<ueue) : BOOEA!;
BE5,!
RETUR! (P<7)to*e 1 !);
E!D ,"+ull;
PROCEDURE ind!in(P<: P<ueue) : T;
BE5,!
RETUR! (P<7)cel$a"8=9)t);
E!D +#n$-#n;
TAD Priority <ueue - mplementacin
PROCEDURE Delete!in(P<: P<ueue): P<ueue;
3AR *o" : =))!;
BE5,!
P<7)cel$a"8=9 :1 P<7)cel$a"8P<7)to*e9;
P<7)to*e :1 P<7)to*e C =;
*o" :1 =;
"u"t :1 TRUE;
:;,E ((*o" * B A1 P<7)to*e) A!D "u"t) DO
,+ (*o" * B ? = A1 P<7)to*e) T;E!
,+ (P<7)cel$a"8*o"*B?=9)*r#o A
P<7)cel$a"8*o"*B9)*r#o) T;E!
,+ (P<7)cel$a"8*o"*B?=9)*r#o A
P<7)cel$a"8*o"9)*r#o) T;E!
!o$oS6a*(P<7)cel$a"8*o"*B?=9%
P<7)cel$a"8*o"9);
*o" :1 *o" * B ? =;

TAD Priority <ueue - mplementacin
ESE
"u"t :1 +ASE;
E!D
ESE
,+ (P<7)cel$a"8*o"*B9)*r#o A
P<7)cel$a"8*o"9)*r#o) T;E!
!o$oS6a*(P<7)cel$a"8*o"*B9%
P<7)cel$a"8*o"9);
*o" :1 *o" * B;
ESE
"u"t :1 +ASE;
E!D
E!D

TAD Priority <ueue - mplementacin
ESE
,+ (P<7)cel$a"8*o"*B9)*r#o A
P<7)cel$a"8*o"9)*r#o) T;E!
!o$oS6a*(P<7)cel$a"8*o"*B9%
P<7)cel$a"8*o"9;
*o" :1 *o" * B;
ESE
"u"t :1 +ASE;
E!D
E!D;
E!D;
RETUR! P<;
E!D Delete-#n;
TAD Priority <ueue - mplementacin

%nsert&' (ind)in *elete)in
Lista 1 n n
Lista
+rdenada
Peor caso2 n
Promedio2 n42
Peor caso2 1
Promedio2 n42
Peor caso2 1
Promedio2 n42
ABB Peor caso2 n
Promedio2 log n
Peor caso2 n
Promedio2 log n
Peor caso2 n
Promedio2 log n
,eap &eor caso- lo# n 1 &eor caso- lo# n
Terico Programacin 2 - Edicin 2013 - nstituto de Computacin - !acultad de ngeniera
TAD $et - #ariantes

5ultiCon9untos (5ulti$et/ -ag/ -olsa)

<uC son?

Cmo se especi%ican?

Analice implementaciones para multi-con9untos

>elaciones (-inarias/ +-arias)

<uC son?

Cmo se especi%ican?

Analice implementaciones para relaciones

También podría gustarte