Sunteți pe pagina 1din 35

Captulo 10

TAD Set, Diccionario, Tabla y Variantes

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

Temas
TAD

Set TAD Diccionario TAD Tabla Variantes

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set
%a nocin !e con&unto es usa!a como base para la 'ormulacin !e TADs importantes (n con&unto es una coleccin !e elementos )o miembros* +ue pue!en ser lementos primiti,os Con&untos %os elementos !e un con&unto son !istintos (n con&unto no pue!e contener !os copias !el mismo elemento -otacin usual .1, /0 los elementos son los naturales 1 y /
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set
%os con&untos no son listas, el or!en en +ue los elementos !e un con&unto son lista!os no es rele,ante ./, 10, .1,/0 y .1,/,10 !enotan al mismo con&unto %a relacin 'un!amental en teora !e con&untos es la !e pertenencia a A signi'ica +ue a es un elemento !el con&unto A a pue!e ser un elemento atmico u otro con&unto, pero A tiene +ue ser un con&unto (n con&unto particular es el con&unto ,aco, 12.0 %as operaciones b3sicas sobre con&untos son unin , interseccin y !i'erencia / Di'erencia sim4trica 5 y complemento !e un con&unto Ac
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set
A B A B A B

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set
A

Ac

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - speci'icacin


DEFINITION MODULE Sets; FROM TipoBase IMPORT T; TYPE Set; (*************** Constructoras *************** PROCEDURE Vacio ( ! Set; (* retorna e" con#unto $ac%o * PROCEDURE Insertar (a ! T; & ! Set ! Set; (* retorna un nue$o con#unto 'ue consiste (e to(os "os e"e)entos (e & )*s e" e"e)ento a+ si es 'ue a no era ,a un e"e)ento (e & *

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - speci'icacin


(**************** Pre(ica(os **************** PROCEDURE EsVacio (& ! Set ! BOOLE&N (* retorna TRUE sii & es $ac%o * PROCEDURE Pertenece (a ! T; & ! Set !BOOLE&N; (* retorna TRUE sii a es un e"e)ento (e & *

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - speci'icacin


(************ &u-i"iares.Se"ectoras ************ PROCEDURE Union (&+ B ! Set ! Set; (* retorna e" con#unto (e "os e"e)entos 'ue pertenecen a &+ o B o a a)/os * PROCEDURE Interseccion (&+ B ! Set ! Set; (* retorna e" con#unto (e "os e"e)entos 'ue pertenecen a & , a B * PROCEDURE Diferencia (&+ B ! Set ! Set; (* retorna e" con#unto (e "os e"e)entos 'ue pertenecen a & , no pertenecen a B *

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - #mplementacin


6o!ula-2 )y Pascal* pro,ee una implementacin l constructor !e tipos S T 7$ 8 tipo-base 9 permite !e'inir el tipo !e to!os los posibles con&untos !e elementos !e tipo 8 tipo-base 9
TYPE TipoBase 0 1 23342 5; Pot42 0 SET OF TipoBase; 6&R set7 ! Pot42; BE8IN set7 !0 Pot42 97+ :33;+ 7<=;

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - #mplementacin


set7 !0 Pot42 97+ :33;+ 7<=;

sta :ltima sentencia se pue!e e;presar en 'uncin !e las operaciones !el TAD
set7 !0 Insertar(7+ Insertar(:+ Insertar(>+ Insertar(;+ Insertar(7<+ 6acio( ;

8 tipo-base 9 !ebe ser un or!inal< l pre!ica!o #- correspon!e a la operacin Pertenece %os opera!ores =, > y - implementan (nion, #nterSec y Di'

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - #mplementaciones


%istas enca!ena!as Sin or!en 7r!ena!as Arreglo !e bits )o booleanos* l tipo base !ebe ser un subrango !e naturales )1<<-* Correspon!encia entre el tipo base y un subrango Arreglo con tope Si el tama?o !el set@!iccionario no supera el largo #mplementacin me!iante AAA Acota!o ,s< no acota!o #ne'iciencia en las ops< ,aco , y / (so ine'icientemente !e memoria
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario
Cuan!o se usa un con&unto en el !ise?o !e un algoritmo po!ra no ser necesario contar con operaciones !e union o interseccin A menu!o lo +ue se necesita es simplemente manipular un con&unto !e ob&etos al +ue peri!icamente se le agregan o +uitan elementos Tambi4n es usual +ue uno !esee ,eri'icar si un !etermina!o elemento 'orma parte o no !el con&unto

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - &emplo


%a Socie!a! Protectora !el Calamar )SPC* mantiene una base !e !atos en la +ue registra los ,otos m3s recientes !e los legisla!ores en temas relaciona!as con el calamar %a base !e !atos consiste b3sicamente !e !os con&untos !e nombres !e legisla!ores Auenos6ucBacBos )A6* y 6alos6ucBacBos )66*

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - &emplo


%a socie!a! per!ona errores !el pasa!o y tien!e a ol,i!arse !e sus amigos '3cilmente Si se ,ota una ley para limitar la pesca !el calamar en aguas territoriales To!os los legisla!ores +ue ,otan a 'a,or ser3n inserta!os en A6 y borra!os !e 66 %o contrario le ocurrir3 a a+uellos +ue ,oten en contra !e la ley %os legisla!ores +ue se abstienen permanecen en el con&unto en +ue se encontraban pre,io a la ,otacin
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - &emplo


l programa +ue permite el mane&o !e la base !e !atos acepta tres coman!os $ )un legisla!or +ue ,ota 'a,orablemente* D )un legisla!or +ue ,ota !es'a,orablemente* C )!etermina el status !el legisla!or* Ca!a coman!o es representa!o por un caracter, segui!o !e un string !e 10 caracteres +ue representa el nombre !el legisla!or Tambi4n se cuenta con un coman!o para terminar el proceso
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - &emplo


MODULE Ca"a)ar; FROM InOut IMPORT Rea(Ln+ Rea(Str+ ?riteStr; FROM Diccionario IMPORT Dicc+ 6acio+Insertar+ Borrar+ Pertenece; 6&R co)an(o! C@&R; "eA(or! &RR&Y 1233725 OF C@&R; BM+ MM! Dicc; BE8IN BM !0 6acio( ; MM !0 6acio( ; Rea(Ln(co)an(o ; ?@ILE co)an(o BC DED DO Rea(Str("eA(or ; IF co)an(o 0 DFD T@EN Insertar("eA(or+BM ; Borrar("eA(or+MM
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - &emplo


ELSIF co)an(o 0 DDD T@EN Insertar("eA(or+MM ; Borrar("eA(or+BM ELSIF co)an(o 0 DED T@EN IF Pertenece("eA(or+BM T@EN ?riteStr(DOFD ELSE ?riteStr(DTo(oMa"D END ELSE ?riteStr(DCo)an(o erroneoD END Rea(Ln(co)an(o END; END Ca"a)ar3
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - speci'icacin


DEFINITION MODULE Diccionario; FROM TipoBase IMPORT T; TYPE Dicc; PROCEDURE Vacio ( ! Dicc; (* retorna e" (iccionario $ac%o * PROCEDURE Insertar (i ! T; D ! Dicc ! Dicc; (* retorna un nue$o (iccionario 'ue consiste (e to(os "os e"e)entos (e Dicc )*s e" e"e)ento i+ si es 'ue i no era ,a un e"e)ento (e D * PROCEDURE EsVacio (D ! Dicc ! BOOLE&N (* retorna TRUE sii D es $ac%o * PROCEDURE Pertenece (i ! T; D ! Dicc ! BOOLE&N; (* retorna TRUE sii i es un e"e)ento (e D * PROCEDURE Borrar (i ! T; D ! Dicc ! Dicc; (* Borra e" e"e)ento i (e" (iccionario D3 Si i no pertenece a D+ e" (iccionario retorna(o es D * END Diccionario;
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - #mplementaciones


%istas enca!ena!as Sin or!en 7r!ena!as #mplementacin me!iante AAA 'iciente !e'inicin !e las operaciones )en caso prome!io* y utiliDacin !el espacio !e memoria

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - #mplementaciones


Arreglo !e bits )o booleanos* %os elementos !el tipo base !eben pertenecer al subrango 1<<-, para alg:n natural -, o Correspon!encia uno a uno entre el tipo base y un subrango !e naturales Arreglo con tope Si el tama?o !el !iccionario no supera el largo Des,enta&as l !iccionario no pue!e crecer arbitrariamente %a operacin !e borra!o es !i'icultosa (so ine'icientemente !e memoria
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - #mplementaciones


Vacio
Lista enc. no ord. Lista enc. ordenada ABB Vector con tope Vector Booleano 7)1* 7)1* 7)1*

EsVacio
7)1* 7)1* 7)1*

Insertar
7)1*

Borrar
7)n*

Pertenece
7)n* 7)n*/7)n@2* 7)n*/ 7)log n* 7)n* 7)1*

7)n*/7)n@2* 7)n*/7)n@2* 7)n*/ 7)log n* 7)1* 7)1* 7)n*/ 7)log n* 7)n* 7)1*

7)1* 7)n*

7)1* 7)n*

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Diccionario - #mplementaciones


Arboles balancea!os Arboles A AV% Tablas !e BasB )se ,er3 en P"* 7)1* para los accesos en caso prome!io EeneraliDacin !e ,ectores para rangos gran!es $uncin !e BasB +ue FmapeaG un rango a un subrango mas pe+ue?o !e los naturales

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla )6apping, Table*


(na tabla es una 'uncin )parcial* !e elementos De un tipo, llama!o el tipo !ominio A elementos !e otro tipo, llama!o el tipo recorri!o (na tabla T asocia el elemento r !el recorri!o al elemento ! !el !ominio lo !enotaremos T)!* 2 r Algunas 'unciones pue!en ser '3cilmente implementa!as como un proce!imiento !e 6o!ula-2 +ue computa la 'uncin s+r)i* 2 i2 7tras 'unciones slo se pue!en !escribir !an!o para ca!a ! el ,alor T)!*
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - &emplos


C# y nombre $uncin +ue asocia a ca!a estu!iante el con&unto !e asignaturas !e la carrera +ue tiene aproba!as

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - 7peraciones


7peraciones +ue !e'inen a este tipo abstracto Da!o un elemento ! !el !ominio interesa recuperar el elemento T)!* o saber si T)!* est3 !e'ini!o )si ! pertenece al !ominio !e T* #nteresa !ar !e alta elementos en el !ominio !e T y almacenar sus correspon!ientes ,alores Alternati,amente interesa mo!i'icar el ,alor T)!* para un !etermina!o ! 7peracin +ue permita construir una tabla ,aca, es !ecir, la tabla cuyo !ominio es ,aco
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - speci'icacin


DEFINITION MODULE Ta/"as; FROM Do)inioInGo IMPORT Do); FROM Recorri(oInGo IMPORT RanAo; TYPE Tabla; TYPE RangoE 0 RECORD C&SE (eG ! BOOLE&N OF TRUE ! r ! RanAoH F&LSE ! END END; PROCEDURE CreoTabla ( ! Ta/"a; (* retorna "a ta/"a $ac%a *

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - speci'icacin


PROCEDURE Insertar ((! Do); r! RanAo; 6&R T! Ta/"a ; (* DeGine T(( 0 r+ in(epen(iente)ente (e 'ue T(( estu$iera ,a (eGini(o * PROCEDURE EsVacia (T! Ta/"a ! BOOLE&N (* retorna TRUE sii T es $ac%a * PROCEDURE EstaDefinida (T! Ta/"a; (! Do) ! BOOLE&N (* retorna TRUE sii T est* (eGini(a para ( * PROCEDURE Recuperar((! Do); T! Ta/"a; 6&R resp! RanAoE ; (* retorna (eG 0 TRUE , r 0 T(( si T est* (eGini(a para (+ sino (eG 0 F&LSE * (*6ariantes del comportamiento de Recuperar???? * PROCEDURE Borrar((! Do); 6&R T! Ta/"a ; (* e"i)ina "a correspon(encia 'ue $incu"a a ( en T3 LueAo (e /orrar+ EstaDeGini(a(T+( es F&LSE * END Ta/"as;
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - #mplementaciones


%as implementaciones !e con&untos tb sir,en Tablas !e HasB Si el tipo !ominio !e una tabla es un tipo elemental !e 6o!ula-2 pue!e ser usa!o como el tipo n!ice !e un arreglo %a tabla pue!e ser implementa!a !irectamente como un arreglo Con!iciones muy particulares para +ue el resulta!o pue!a ser consi!era!o a!ecua!o

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - #mplementaciones


Cual+uier tabla con !ominio 'inito pue!e ser representa!a como una lista !e pares )! 1, r1*, )!2, r2*, <<<, )!I, rI* !i son los elementos corrientes !el !ominio ri es el ,alor +ue la tabla asocia con !i i 2 1<<I Si el !ominio !e la tabla a!mite un or!en total Se pue!e usar AAAs )o 3rboles balancea!os* Cual+uier implementacin !e con&untos@!iccionarios es a!ecua!a para Tablas
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - #mplementaciones


Lista encadenada no ordenada Lista encadenada ordenada ABB Vector con tope Sin con!iciones para D Vectores, cada entrada d del vector contiene el correspondiente valor r D !ebe po!er mapearse a un subrango !e los -aturales Acota!a Sin con!iciones para el !ominio D D !ebe tener un or!en asocia!o D !ebe tener un or!en asocia!o Acota!a o no acota!a Acota!a o no acota!a Acota!a o no acota!a

Acota!a

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - #mplementacin Arreglo


IMPLEMENT&TION MODULE Ta/"as; FROM Do)inioInGo IMPORT Do)+ )inD+)a-D; FROM Recorri(oInGo IMPORT RanAo; FROM StoraAe IMPORT &""ocate; TYPE Ta/"a 0 POINTER TO Ta/"a&rra,; Ta/"a&rra, 0 &RR&Y Do) OF RanAoE; PROCEDURE CreoTabla ( ! Ta/"a; 6&R t ! Ta/"a; i ! Do); BE8IN NeI(t ; FOR i!0 )inD TO )a-D DO tJ1i53(eG !0 F&LSE END; RETURN t END CreoTa/"a;
Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Tabla - #mplementacin Arreglo


PROCEDURE Insertar(( ! Do); r ! RanAo; T ! Ta/"a BE8IN ?IT@ TJ1(5 DO (eG !0 TRUE; $a" !0 r END RETURN T END Insertar; ! Ta/"a;

PROCEDURE Recuperar(( ! Do); T ! Ta/"a; 6&R resp ! RanAoE ; BE8IN Resp !0 TJ1(5 END Recuperar; END Ta/"as;

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - Variantes


6ultiCon&untos )6ultiSet, Aag, Aolsa* Ju4 sonC Cmo se especi'icanC Analice implementaciones para multi-con&untos Kelaciones )Ainarias, --arias* Ju4 sonC Cmo se especi'icanC Analice implementaciones para relaciones

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

TAD Set - Variantes


6ultiCon&untos )6ultiSet, Aag, Aolsa* Ju4 sonC Cmo se especi'icanC Analice implementaciones para multi-con&untos Kelaciones )Ainarias, --arias* Ju4 sonC Cmo se especi'icanC Analice implementaciones para relaciones

Terico Programacin 2 - !icin 201" - #nstituto !e Computacin - $aculta! !e #ngeniera

S-ar putea să vă placă și