METODOS PARA PARA LA RESOLUCION DE COLISIONES
1
_____________________________________________________ ___________________________ ______________________________________________________ ______________________________________________ __________________
Mét odosparar es ol verCol i s i ones
Rodri goVi ver osCórdova Có d i g o :2 01 41 19 05 1 Al exanderHer nandezRamos Có d i g o :2 01 41 19 05 0
Uni v e r s i d adNa Na c i o n alJ o r g eBa s a dr eGr o hma nn,Fa c u l t a dd eI ng e ni e r í a , Es c ue l adeI nf o r má má t i c ayS i s t e ma ma s . Ta c n a-Pe r ú Jul i o 2015
Resumen
En este artículo esta una revisión de los alorit!os de resolución de colisiones "ue se utili#a en las ta$las %as% o ta$las de dis&ersión' con el &ro&ósito de solucionar las colisiones "ue se dan en una (unción %as% ) &oder asinar direcciones de la !anera !*s uni(or!e!ente uni(or!e!ente &osi$le+ Se &resentan , !-todos o !ecanis!os "ue nos &er!itir*n resolver las colisiones' cada !-todo &resenta su res&ectivo alorit!o' estos %an sido codi(icados en .orland C// &ara dar a conocer co!o se eneraran las &osiciones alternativas si %u$iera colisión+ Palabras clave: ta$las %as%' resolución de colisiones' ta$las de dis&ersión
Abstract
T%is article is a revie0 o( t%e collision resolution alorit%!s alorit%!s used in t%e %as% ta$le or %as%in' in order to resolve collisions t%at occur on a %as% (unction and to assin addresses evenl) as &ossi$le+ , Met%ods and !ec%anis!s t%at 0ill allo0 us to resolve collisions occur eac% !et%od %as its res&ective alorit%!' t%ese %ave $een codi(ied in .orland C // to &u$lici#e as alternative alternative &ositions &ositions 0ill $e enerated enerated i( t%ere t%ere collision+ Keywords: %as% ta$les' collision resolution' %as%in
METODOS PARA LA RESOLUCION DE COLISIONES
1. Introducción Una (unción de dis&ersión convierte el dato considerado ca!&o clave en un índice dentro del rano de de(inición del arrelo "ue al!acena los datos' de tal (or!a "ue sea adecuado &ara inde2ar el arrelo+ Con la venta3a de "ue el tie!&o $4s"ueda es inde&endiente del n4!ero de co!&onentes del arrelo ) sin necesidad de tener los ele!entos ordenados+
donde
%5267 8 9: L 87clave L;dirección de !e!oria
Estas (unciones de$en enerar direcciones distintas &ara dos claves distintas+ No sie!&re es asi' no sie!&re &ro&orciona direcciones distintas' en ocasiones ocurre "ue dadas dos claves di(erentes a las "ue se a&lica la (unción %as%' si se o$tienen dos direcciones iuales 21' 2 ;: %5216 ; %526+ Se le conoce co!o colisión' &or eso en el dise
Es i!&ortante iniciali#ar todas las &osiciones de la ta$la a un valor "ue indi"ue vacío+ 2.1.1 Prueba lineal Es la (or!a !*s si!&le de resolver una colisión entre claves' al a&licar una (unción de dis&ersión+ Su&ónase "ue se tiene un ele!ento de clave 2' la dirección "ue devuelve la (unción %526;& si est* ocu&ada &or otro ele!ento se %a &roducido una colisión+ La (or!a de resolver esta colisión con &rue$a lineal consiste en $uscar la &ri!era &osición dis&oni$le "ue sia a &+
La secuencia de $4s"ueda "ue se enera es lineal &'&/1 ++ !91' 1' > ) así consecutiva!ente %asta encontrar una &osición vacía+ La ta$la se %a de considerar circular' de tal (or!a "ue siendo !91 la 4lti!a &osición' la siuiente es la &osición 1+ 2.1.2 Prueba cuadrática La resolución de colisiones con la &rue$a lineal &rovoca "ue se aru&en los ele!entos de la ta$la se4n se acercando el (actor de cara a >+?+ Una alternativa &ara evitar la aru&ación es la &rue$a cuadr*tica+ Su&oniendo "ue a un ele!ento con clave 2 le corres&onde la dirección & ) "ue la &osición de la ta$la a&untada &or & est* ocu&ada' el !-todo de &rue$a cuadr*tica $usca las direcciones &' & /1' & / @' & / +++ & / iB' considerando la ta$la co!o un arrelo circular+ El no!$re de cuadr*tica se de$e al des&la#a!iento relativo i+ 2.1. Doble dirección !as! Este !-todo utili#a una seunda (unción %as%+ Se tiene una (unción %as% &rinci&al' %526' ) otra (unción secundaria %526+ El &ri!er intento de insertar o $uscar' un nuevo ele!ento ins&ecciona la &osición %526;&' si %a) una colisión' se o$tiene un seundo des&la#a!iento con otra (unción %as% %526;&+ Entonces' la secuencia de $4s"ueda &' &/&' &/&' &/,& se ins&ecciona %asta encontrar una &osición li$re+ 2.2 Arreglos anidados Consiste en "ue cada ele!ento del arrelo tena otro arrelo' en el cual se al!acenen los ele!entos "ue colisionan 5una !atri#6+ Este !-todo resulta ine(iciente &or"ue se necesitaría eleir un ta!a
METODOS PARA LA RESOLUCION DE COLISIONES
,
dirección %as%+ Todos los ele!entos "ue colisionan7 %5216 ; %526 ;52,6 ++ Fan a estar u$icados en la !is!a ta$la enla#ada+
8; ca!&o clave 586 ; direcciones *abla 2. Ta$la de direcciones con %as% !odular
. $odi%icación de m&todos 'ara la resolución de colisiones .1 (&todo de 'rueba lineal
Para la o$tención del alorit!o' se siuen los siuientes &asos7 1+ Feri(icar si la dirección D del dato ) su in(or!ación son las !is!as "ue el dato de colisión' si esto (uera verdad el dato est* en la &osición D ) es el !is!o+ + Iniciar un au2iliar D2 "ue sea iual a la su!a de la dirección D !*s la unidad+ ,+ Reali#ar un $ucle &ara encontrar el dato o una &osición D2 vacía' si D2 so$re&asa el n4!ero de ele!entos del arrelo se le da el valor 1 5&or esta ra#ón se trata co!o circular6 A continuación se e2&one le alorit!o de solución de colisiones &or !edio de &rue$a lineal7
J
?
@,
?G
,?
?@
1,
H>
1>@
586
G
@
K
G
?
@
1
?
Entonces los ele!entos en el arrelo estarían de la siuiente !anera7 *abla . Ta$la de arrelo con %as% !odular
1
586
H>
,
@
?
G
K
@,
?@
?
?G
1,
1>@
,?
H
1>
Co!o se &uede a&reciar en la ta$la' %a %a$ido colisiones+ Para resolverlas' se a&licar* el !-todo de &rue$a lineal' donde se o$tiene7 *abla +. Ta$la %as% usando Prue$a lineal
1
586
H>
,
@
?
G
K
H
1>
@,
?@
?
?G
,?
1,
1>@
.2 (&todo de 'rueba cuadrática
En la ela$oración del alorit!o es si!ilar al anterior+ La di(erencia consiste en "ue las direcciones alternativas en la &rue$a cuadr*tica se eneraran co!o D/1' D/@' D/i en ve# de D/1' D/' D/,++ D/i+ Esta variación &er!ite una !e3or distri$ución de las claves "ue colisionan+
)igura 1. Prue$a lineal codi(icación c//
En la ta$la 1 se &resenta un e3e!&lo de arrelo de 1> ele!entos *abla 1. Ta$la de datos
?
@,
?G
,?
?@
1,
H>
1>@
Usando los datos de la ta$la 1+ Usando una (unción %as% !odular se o$tiene7 as% !odular7 586 ; 85!od6n/1 n ; ele!entos del arrelo
Para la o$tención del alorit!o' se siuen los siuientes &asos7 1+ Feri(icar si la dirección D del dato ) su in(or!ación son las !is!as "ue el dato de colisión' si esto (uera verdad el dato est* en la &osición D ) es el !is!o+ + Iniciar un au2iliar entero ; 1 ) %acer D2 ; D/5i/i6' con esto se consiue la direccion alternativa cuadrada+ ,+ Reali#ar un $ucle &ara encontrar el dato o una &osición D2 vacía' si D2 so$re&asa el n4!ero de ele!entos del arrelo se le da el valor D2;1' D;1 ) i;> 5&or esta ra#ón se trata co!o circular6 A continuación se e2&one le alorit!o de solución de colisiones &or !edio de &rue$a cuadr*tica7
METODOS PARA LA RESOLUCION DE COLISIONES
@
!e3or (unción "ue se de$e utili#ar en el c*lculo de las direcciones sucesivas+ Para la o$tención del alorit!o' se siuen los siuientes &asos7 1+ Feri(icar si la dirección D del dato ) su in(or!ación son las !is!as "ue el dato de colisión' si esto (uera verdad el dato est* en la &osición D ) es el !is!o+ + Iniciar un au2iliar D2;586' 5la nueva (unción %as%6 ,+ Reali#ar un $ucle %asta encontrar el dato o una &osición D2 vacía ) D2 sea di(erente de D 5esto 4lti!o &ara no caer en un $ucle in(inito6' ) adentro %acer D2;586' &ara enerar A continuación se e2&one le alorit!o de solución de colisiones &or !edio de do$le dirección7
)igura 2. Prue$a cuadr*tica codi(icación c//
Usando los datos de la ta$la 1 de datos' ) a&licando %as% !odular o$tendre!os la ta$la %as%7 *abla . Ta$la de arrelo con %as% !odular
1
586
H>
,
@
?
G
K
@,
?@
?
?G
1,
1>@
,?
H
1>
)igura . Do$le dirección codi(icación c//
Usando los datos de la ta$la , ) una nueva (unción %as% %586;55D/16 !od 1>6/1' o$tendre!os7
Usando el alorit!o de &rue$a cuadr*tica' o$tene!os7 *abla ,. Ta$la %as% usando Prue$a cuadr*tica
1
586
H>
??
,
@
?
G
K
H
1>
@,
?@
?
?G
1,
1>@
,?
Co!o se o$serva la ta$la ? es di(erente a la ta$la @ en las &osiciones de colisiones+ . (&todo de doble dirección !as!
En la ela$oración del alorit!o se utili#a la otra (unción %as%586 no necesaria!ente tiene "ue ser una si!ilar &uede ser tanto una variante co!o cual"uier otra+ Sin e!$aro' no e2iste nin4n estudio "ue &recise cual es la
*abla -. Ta$la de valores usando !-todo do$le dirección J
?
@,
?G
,?
?@
1,
H>
1>@
586
G
@
K
G
?
@
1
?
5D6
H
G
K
5D6
H
5D6
1>
Entonces a&lica!os el !-todo de do$le dirección ) o$tene!os7 *abla . Ta$la %as% usando do$le dirección
1
586
H>
,
@
?
G
K
H
1>
@,
?@
?
?G
,?
1>@
1,
METODOS PARA LA RESOLUCION DE COLISIONES
.+ (&todo de encadenamiento Es el !-todo !*s e(iciente de$ido al 1, dina!is!o &ro&io de las listas+ Cual"uiera "ue sea el n4!ero de ,? colisiones "ue se &resenten' se &odr*n resolver sin inconvenientes+
Para la o$tención del alorit!o' se siuen los siuientes &asos7 Feri(icar si la dirección D del dato ) su in(or!ación son las !is!as "ue el dato de colisión' si esto (uera verdad el dato est* en la &osición D ) es el !is!o+ 2. Iniciar un nodo au2iliar ; 2D9:si' 5a&untador a la lista6 . Reali#ar un $ucle %asta encontrar el dato o una &osición D2 vacía ) D2 sea di(erente de D5esto 4lti!o &ara no caer en un $ucle in(inito6' ) adentro %acer saltar ";"9:si+ 1.
A continuación se e2&one le alorit!o de solución de colisiones &or !edio de encadena!iento7
?
1
586
H>
+.
,
@
?
G
K
@,
?@
?
?G
H
1>
Análisis de los m&todos de resolución de colisiones
La e(iciencia de una (unción %as%' 3unto al !-todo de resolución de colisiones' su&one anali#ar la o&eración de insertar la o&eración de $uscar 5eli!inar su&one una $4s"ueda6+ @+1 An*lisis de la &rue$a lineal La &rinci&al desventa3a de este !-todo es "ue &uede %a$er un (uerte aru&a!iento alrededor de ciertas claves' !ientras "ue otras #onas del arrelo &odrían &er!anecer vacías+ Si las concentraciones de claves son !u) (recuentes' la $4s"ueda ser* secuencial' &erdiendo así las venta3as del !-todo %as%+ Por eso cuando el (actor de ocu&ación se acerca al ?>' el aru&a!iento de ele!entos en &osiciones ad)acentes es nota$le+ El (actor cara de la ta$la ' es deter!inante a la %ora de deter!inar la e(iciencia de las o&eraciones+ @+ An*lisis de la &rue$a cuadr*tica Este !-todo de resolver colisiones reduce el aru&a!iento "ue &roduce la &rue$a lineal+ Sin e!$aro' si no se elie el ta!a' todas las &rue$as "ue se realicen con la secuencia &/i se %acen so$re &osiciones de la ta$la distintas ) sie!&re "ue se &odr* insertar+ @+, An*lisis del encadena!iento
)igura +. Encadena!iento codi(icación c//+
Usando la ta$la , con los datos ) la (unción !odular' &ro$a!os el alorit!o de encadena!iento' o$teniendo7 *abla /. Ta$la %as% usando encadena!iento
En el encadena!iento la $4s"ueda es una o&eración lineal' en el &eor de los casos recorre todos los nodos de la listaQ a &esar de ello' las listas %an de tener un n4!ero de nodos su(iciente!ente &e"ue
METODOS PARA LA RESOLUCION DE COLISIONES
G
&ro!edio de nodo visitados en una $4s"ueda con -2ito es 1 /1 El (actor de cara en estas ta$las' nor!al!ente es 1' es decir' el rano de índices del vector coincide con el n4!ero de ele!entos "ue se es&era seas insertados+ A !edida "ue au!enta el (actor de cara' la e(iciencia de la $4s"ueda de un ele!ento en la lista dis!inu)e+ Sin e!$aro no es conveniente "ue dis!inu)a !uc%o el (actor de la cara' de$ido a "ue cuando este es !enor "ue 1 au!enta la !e!oria no utili#ada+ ,. Discusión La !anera !*s natural de resolver el &ro$le!a de colisiones es reservar una casilla &or clave' es decir' a"uellas "ue se corres&ondan una a una con las &osiciones del arrelo+ Pero esta solución tiene un alto costo de !e!oria' &or tanto' es !e3or anali#ar otras alternativas+
En el !-todo de &rue$a lineal "ue se &resenta tiene el &ro$le!a de la aru&ación de ele!entos en &osiciones contiuas' "ue a(ecta neativa!ente a la e(iciencia de las o&eraciones' en nuestro tra$a3o eso se veri(ica )a tiene un alto costo de tie!&o de e3ecución+ En el !-todo de &rue$a cuadr*tica "ue se &resenta &ara aseurar la e(iciencia se de$ería eleir el ta!a
$onclusiones
En los di(erentes !-todos "ue se e2&uso en este tra$a3o el !e3or !-todo sería el de encadena!iento &or el dina!is!o de las listas' &ero se aconse3a "ue el (actor de cara en las ta$las enla#adas sea &ró2i!o a 1' )a "ue en el caso de cre#ca !uc%o &uede e!&eorar la e(iciencia de la $4s"ueda al au!entar el n4!ero de nodos de las listas+ Una de las a&licaciones de las ta$las %as% esta en los co!&iladores de lenua3es de &rora!ación+ La ta$la donde se uardan los identi(icadores del &rora!a' ta$la de sí!$olos' se i!&le!enta co!o una ta$la %as%+ La clave es el sí!$olo "ue se trans(or!a en un valor entero &ara a&licar aluna de las (unciones %as%+
Re%erencias Osvaldo Cairo' Silvia uardati 5>>G6+ Met%ods o( searc%' Estructura de datos 3 ED edition Luis o)anes Auilar' Inacio a%onero Martine# 5>>H6+ Ta$les %as%in' Estructura de datos en Java Mar8 Allen Veiss' 520006' Ta$las %as%' Estructura de datos en Java 3 edition Martíne#' R+ 5>>K6+ Biblioteca Digital: conceptos, recursos y estándares. .uenos Aires7 Al(ara!a+