Estructuras de datos

Page 1



%3425#452!3 $% $!4/3



%3425#452!3 $% $!4/3 4ERCERA EDICIØN

$2 /36!,$/ #!)2¼ 0ROFESOR )NVESTIGADOR DEL )NSTITUTO 4ECNOLØGICO !UTØNOMO DE -ÏXICO )4!- -IEMBRO DEL 3ISTEMA .ACIONAL DE )NVESTIGADORES 3.) .IVEL

- # 3),6)! '5!2$!4) 0ROFESOR .UMERARIO DEL )NSTITUTO 4ECNOLØGICO !UTØNOMO DE -ÏXICO )4!-

-²8)#/ s !5#+,!.$ s "/'/4« s "5%./3 !)2%3 s #!2!#!3 s '5!4%-!,! ,)3"/! s ,/.$2%3 s -!$2)$ s -),«. s -/.42%!, s .5%6! $%,() s .5%6! 9/2+ 3!. &2!.#)3#/ s 3!. *5!. s 3!. ,5)3 s 3!.4)!'/ 3°/ 0!5,/ s 3)$.%9 s 3).'!052 s 4/2/.4/


$IRECTOR (IGHER %DUCATION -IGUEL «NGEL 4OLEDO #ASTELLANOS $IRECTOR EDITORIAL 2ICARDO ! DEL "OSQUE !LAYØN %DITOR SPONSOR 0ABLO % 2OIG 6ÈZQUEZ %DITORA DE DESARROLLO $IANA +AREN -ONTA×O 'ONZÈLEZ 3UPERVISOR DE PRODUCCIØN :EFERINO 'ARCÓA 'ARCÓA %3425#452!3 $% $!4/3 4ERCERA EDICIØN

0ROHIBIDA LA REPRODUCCIØN TOTAL O PARCIAL DE ESTA OBRA

POR CUALQUIER MEDIO SIN LA AUTORIZACIØN ESCRITA DEL EDITOR

$%2%#(/3 2%3%26!$/3 © RESPECTO A LA TERCERA EDICIØN POR -C'2!7 (),, ).4%2!-%2)#!.! %$)4/2%3 3 ! $% # 6 ! 3UBSIDIARY OF 4HE -C'RAW (ILL #OMPANIES )NC 0ROLONGACIØN 0ASEO DE LA 2EFORMA 4ORRE !

0ISO #OLONIA $ESARROLLO 3ANTA &E

$ELEGACIØN «LVARO /BREGØN # 0 -ÏXICO $ & -IEMBRO DE LA #ÈMARA .ACIONAL DE LA )NDUSTRIA %DITORIAL -EXICANA 2EG .ÞM )3". )3". SEGUNDA EDICIØN )3". 8 PRIMERA EDICIØN

)MPRESO EN -ÏXICO

0RINTED IN -EXICO


! NUESTRO HIJO &ACUNDO



#/.4%.)$/ 02%3%.4!#)». XIII

#!0¶45,/ %STRUCTURAS FUNDAMENTALES DE DATOS )NTRODUCCIØN !RREGLOS $ECLARACIØN DE ARREGLOS UNIDIMENSIONALES /PERACIONES CON ARREGLOS UNIDIMENSIONALES !RREGLOS BIDIMENSIONALES $ECLARACIØN DE ARREGLOS BIDIMENSIONALES /PERACIONES CON ARREGLOS BIDIMENSIONALES !RREGLOS DE MÈS DE DOS DIMENSIONES ,A CLASE !RREGLO 2EGISTROS $ECLARACIØN DE REGISTROS !CCESO A LOS CAMPOS DE UN REGISTRO $IFERENCIAS ENTRE REGISTROS Y ARREGLOS #OMBINACIONES ENTRE ARREGLOS Y REGISTROS !RREGLOS PARALELOS 2EGISTROS Y CLASES %JERCICIOS

#!0¶45,/ !RREGLOS MULTIDIMENSIONALES REPRESENTADOS EN ARREGLOS UNIDIMENSIONALES )NTRODUCCIØN !RREGLOS BIDIMENSIONALES !RREGLOS DE MÈS DE DOS DIMENSIONES -ATRICES POCO DENSAS -ATRICES CUADRADAS POCO DENSAS -ATRIZ TRIANGULAR INFERIOR -ATRIZ TRIANGULAR SUPERIOR


viii

Ìi ` -ATRIZ TRIDIAGONAL -ATRICES SIMÏTRICAS Y ANTISIMÏTRICAS %JERCICIOS

#!0¶45,/ 0ILAS Y COLAS )NTRODUCCIØN 0ILAS 2EPRESENTACIØN DE PILAS /PERACIONES CON PILAS !PLICACIONES DE PILAS ,A CLASE 0ILA #OLAS 2EPRESENTACIØN DE COLAS /PERACIONES CON COLAS #OLAS CIRCULARES $OBLE COLA !PLICACIONES DE COLAS ,A CLASE #OLA %JERCICIOS

#!0¶45,/ 2ECURSIØN )NTRODUCCIØN %L PROBLEMA DE LAS 4ORRES DE (ANOI 2ECURSIVIDAD EN ÈRBOLES 2ECURSIVIDAD EN ORDENACIØN Y BÞSQUEDA %JERCICIOS

#!0¶45,/ ,ISTAS )NTRODUCCIØN ,ISTAS SIMPLEMENTE LIGADAS /PERACIONES CON LISTAS SIMPLEMENTE LIGADAS 2ECORRIDO DE UNA LISTA SIMPLEMENTE LIGADA )NSERCIØN EN LISTAS SIMPLEMENTE LIGADAS %LIMINACIØN EN LISTAS SIMPLEMENTE LIGADAS "ÞSQUEDA EN LISTAS SIMPLEMENTE LIGADAS ,ISTAS CIRCULARES ,ISTAS DOBLEMENTE LIGADAS /PERACIONES CON LISTAS DOBLEMENTE LIGADAS 2ECORRIDO DE UNA LISTA DOBLEMENTE LIGADA )NSERCIØN EN LISTAS DOBLEMENTE LIGADAS %LIMINACIØN EN LISTAS DOBLEMENTE LIGADAS ,ISTAS DOBLEMENTE LIGADAS CIRCULARES !PLICACIONES DE LISTAS


$0/5&/*%0 2EPRESENTACIØN DE POLINOMIOS 3OLUCIØN DE COLISIONES HASH ,A CLASE ,ISTA %JERCICIOS

#!0¶45,/ «RBOLES )NTRODUCCIØN «RBOLES EN GENERAL #ARACTERÓSTICAS Y PROPIEDADES DE LOS ÈRBOLES ,ONGITUD DE CAMINO INTERNO Y EXTERNO «RBOLES BINARIOS «RBOLES BINARIOS DISTINTOS SIMILARES Y EQUIVALENTES «RBOLES BINARIOS COMPLETOS 2EPRESENTACIØN DE ÈRBOLES GENERALES COMO BINARIOS 2EPRESENTACIØN DE UN BOSQUE COMO ÈRBOL BINARIO 2EPRESENTACIØN DE ÈRBOLES BINARIOS EN MEMORIA /PERACIONES EN ÈRBOLES BINARIOS «RBOLES BINARIOS DE BÞSQUEDA «RBOLES BALANCEADOS )NSERCIØN EN ÈRBOLES BALANCEADOS 2EESTRUCTURACIØN DEL ÈRBOL BALANCEADO «RBOLES MULTICAMINOS «RBOLES " «RBOLES " «RBOLES ,A CLASE «RBOL %JERCICIOS

#!0¶45,/ 'RÈlCAS )NTRODUCCIØN $ElNICIØN DE GRÈlCAS #ONCEPTOS BÈSICOS DE GRÈlCAS 'RÈlCAS DIRIGIDAS 2EPRESENTACIØN DE GRÈlCAS DIRIGIDAS /BTENCIØN DE CAMINOS DENTRO DE UNA DIGRÈlCA !LGORITMO DE $IJKSTRA !LGORITMO DE &LOYD !LGORITMO DE -ARSHALL 'RÈlCAS NO DIRIGIDAS 2EPRESENTACIØN DE GRÈlCAS NO DIRIGIDAS #ONSTRUCCIØN DEL ÈRBOL ABARCADOR DE COSTO MÓNIMO !LGORITMO DE 0RIM !LGORITMO DE +RUSKAL 2ESOLUCIØN DE PROBLEMAS

ix


x

Ìi ` %SPACIO ESTADO -ÏTODOS DE BÞSQUEDA EN ESPACIO ESTADO -ÏTODOS DE BÞSQUEDA BREADTH lRST -ÏTODO DE BÞSQUEDA DEPTH lRST ,A CLASE GRÈlCA %JERCICIOS

#!0¶45,/ -ÏTODOS DE ORDENACIØN )NTRODUCCIØN /RDENACIØN INTERNA /RDENACIØN POR INTERCAMBIO DIRECTO BURBUJA /RDENACIØN POR EL MÏTODO DE INTERCAMBIO DIRECTO CON SE×AL /RDENACIØN POR EL MÏTODO DE LA SACUDIDA SHAKER SORT /RDENACIØN POR INSERCIØN DIRECTA /RDENACIØN POR EL MÏTODO DE INSERCIØN BINARIA /RDENACIØN POR SELECCIØN DIRECTA !NÈLISIS DE ElCIENCIA DE LOS MÏTODOS DIRECTOS /RDENACIØN POR EL MÏTODO DE 3HELL /RDENACIØN POR EL MÏTODO QUICKSORT /RDENACIØN POR EL MÏTODO HEAPSORT MONTÓCULO /RDENACIØN EXTERNA )NTERCALACIØN DE ARCHIVOS /RDENACIØN DE ARCHIVOS /RDENACIØN POR MEZCLA DIRECTA /RDENACIØN POR EL MÏTODO DE MEZCLA EQUILIBRADA %JERCICIOS

#!0¶45,/ -ÏTODOS DE BÞSQUEDA )NTRODUCCIØN "ÞSQUEDA INTERNA "ÞSQUEDA SECUENCIAL "ÞSQUEDA BINARIA "ÞSQUEDA POR TRANSFORMACIØN DE CLAVES &UNCIØN HASH POR MØDULO DIVISIØN &UNCIØN HASH CUADRADO &UNCIØN HASH POR PLEGAMIENTO &UNCIØN HASH POR TRUNCAMIENTO 3OLUCIØN DE COLISIONES 2EASIGNACIØN !RREGLOS ANIDADOS %NCADENAMIENTO «RBOLES DE BÞSQUEDA "ÞSQUEDA EXTERNA "ÞSQUEDA EN ARCHIVOS SECUENCIALES


$0/5&/*%0 "ÞSQUEDA SECUENCIAL "ÞSQUEDA SECUENCIAL MEDIANTE BLOQUES "ÞSQUEDA SECUENCIAL CON ÓNDICES "ÞSQUEDA BINARIA "ÞSQUEDA POR TRANSFORMACIØN DE CLAVES HASH 3OLUCIØN DE COLISIONES (ASHING DINÈMICO BÞSQUEDA DINÈMICA POR TRANSFORMACIØN DE CLAVES -ÏTODO DE LAS EXPANSIONES TOTALES -ÏTODO DE LAS EXPANSIONES PARCIALES ,ISTAS INVERTIDAS -ULTILISTAS %JERCICIOS

")",)/'2!&¶! ',/3!2)/ ¶.$)#% !.!,¶4)#/

xi



02%3%.4!#)¼. /"*%4)6/ %STE LIBRO TIENE COMO OBJETIVO PRESENTAR LAS ESTRUCTURAS DE DATOS ASÓ COMO LOS ALGO RITMOS NECESARIOS PARA TRATARLAS %L LENGUAJE UTILIZADO ES ALGORÓTMICO ESCRITO EN SEUDO CØDIGO INDEPENDIENTE DE CUALQUIER LENGUAJE COMERCIAL DE PROGRAMACIØN %STA CARACTE RÓSTICA ES MUY IMPORTANTE YA QUE PERMITE AL LECTOR COMPRENDER LAS ESTRUCTURAS DE DA TOS Y LOS ALGORITMOS ASOCIADOS A ELLAS SIN RELACIONARLOS CON LENGUAJES DE PROGRAMACIØN PARTICULARES 3E CONSIDERA QUE UNA VEZ QUE EL LECTOR DOMINE ESTOS CONCEPTOS LOS PODRÈ IMPLEMENTAR FÈCILMENTE EN CUALQUIER LENGUAJE 3I BIEN CADA UNO DE LOS TEMAS SON DESARROLLADOS DESDE NIVELES BÈSICOS A NIVELES COMPLEJOS SE SUPONE QUE EL LECTOR YA CONOCE CIERTOS CONCEPTOS POR EJEMPLO EL DE DATOS SIMPLES ENTEROS REALES BOOLEANOS CARÈCTER EL DE INSTRUCCIØN DECLARATIVA ASIG NACIØN ENTRADA SALIDA Y EL DE OPERADORES ARITMÏTICOS RELACIONALES Y LØGICOS !SIMISMO SE UTILIZA PERO NO SE EXPLICA EL CONCEPTO DE VARIABLES Y CONSTANTES %N LOS ALGORITMOS SE ESCRIBEN LOS NOMBRES DE VARIABLES CON MAYÞSCULAS 35-! . ETC LO MISMO PARA LAS CONSTANTES BOOLEANAS 6%2$!$%2/ Y &!,3/ #ABE ACLARAR QUE EN ESTE LIBRO NO SE ABORDAN LOS TIPOS ABSTRACTOS DE DATOS DE MANERA EXPLÓCITA 3IN EMBARGO SE TRATAN ALGUNOS DE ELLOS SIN PRESENTARLOS COMO TALES POR EJEM PLO LAS PILAS Y COLAS EN EL CAPÓTULO TRES #ADA CAPÓTULO CUENTA CON UN NÞMERO IMPORTANTE DE EJERCICIOS #ON ÏSTOS SE SIGUE EL MISMO CRITERIO APLICADO EN EL DESARROLLO DE LOS DISTINTOS TEMAS ES DECIR SE PROPONEN EJERCICIOS EN LOS QUE SE AUMENTA GRADUALMENTE EL NIVEL DE COMPLEJIDAD

,%.'5!*% 54),):!$/ %L LENGUAJE UTILIZADO PARA DESCRIBIR LOS ALGORITMOS ES ESTRUCTURADO ,AS ESTRUCTURAS AL GORÓTMICAS SELECTIVAS Y REPETITIVAS SE ENUMERAN Y LAS INSTRUCCIONES QUE FORMAN PARTE DE ELLAS SE ESCRIBEN DEJANDO SANGRÓAS PARA PROPORCIONAR MAYOR CLARIDAD !DEMÈS CON EL OBJETO DE AYUDAR AL ENTENDIMIENTO DE LOS MISMOS SE ESCRIBEN COMENTARIOS ENCERRADOS ENTRE [] ! CONTINUACIØN SE PRESENTAN LAS ESTRUCTURAS ALGORÓTMICAS EMPLEADAS EN LOS AL GORITMOS


xiv

*ÀiÃi Ì>V 3ELECTIVA SIMPLE PI 3I CONDICIØN ENTONCES ACCIØN P I [&IN DEL CONDICIONAL DEL PASO PI] $ONDE CONDICIØN ES CUALQUIER EXPRESIØN RELACIONAL Y O LØGICA Y ACCIØN ES CUALQUIER OPERACIØN O CONJUNTO DE OPERACIONES LECTURA ESCRITURA ASIGNACIØN U OTRAS %STA ESTRUCTURA PERMITE SELECCIONAR UNA ALTERNATIVA DEPENDIENDO DE QUE LA CONDICIØN SEA VERDADERA %S DECIR AL SER EVALUADA LA CONDICIØN SI ÏSTA RESULTA CON UN VALOR IGUAL A 6%2$!$%2/ ENTONCES SE EJECUTARÈ LA ACCIØN INDICADA %N CASO CONTRARIO SE SIGUE CON EL mUJO ESTABLECIDO

3ELECTIVA DOBLE PI 3I CONDICIØN ENTONCES ACCIØN SINO ACCIØN P I [&IN DEL CONDICIONAL DEL PASO PI]

$ONDE CONDICIØN ES UNA EXPRESIØN RELACIONAL Y O LØGICA Y ACCIØN Y ACCIØN SON CUAL QUIER OPERACIØN O CONJUNTO DE OPERACIONES LECTURA ESCRITURA ASIGNACIØN U OTRAS %STA ESTRUCTURA PERMITE SELECCIONAR UNA DE DOS ALTERNATIVAS SEGÞN LA CONDICIØN SEA VERDADERA O FALSA 3I LA CONDICIØN ES VERDADERA SE EJECUTARÈ LA ACCIØN EN CASO CONTRARIO SE EJECUTARÈ LA ACCIØN 3ELECTIVA MÞLTIPLE PI 3I VARIABLE VALOR ACCIØN VALOR ACCIØN VALORN ACCIØNN P I [&IN DEL CONDICIONAL DEL PASO PI] $ONDE VALORJ ≤ J ≤ N SON LOS POSIBLES VALORES QUE PUEDE TOMAR LA VARIABLE AC CIØNJ ≤ J ≤ N ES CUALQUIER OPERACIØN O CONJUNTO DE OPERACIONES LECTURA ESCRITURA ASIGNACIØN U OTRAS %STE TIPO DE ESTRUCTURA SE UTILIZA PARA UNA SELECCIØN SOBRE MÞLTIPLES ALTERNATIVAS 3EGÞN EL VALOR DE LA VARIABLE SE EJECUTARÈ LA ACCIØN CORRESPONDIENTE $E ESTA MANERA SI VARIABLE ES IGUAL A VALOR SE EJECUTARÈ LA ACCIØN SI VARIABLE ES IGUAL A VALOR SE EJECUTARÈ LA ACCIØN Y ASÓ EN LOS DEMÈS CASOS


13&4&/5"$*Î/

xv

2EPETITIVA CONDICIONADA PI -IENTRAS CONDICIØN 2EPETIR ACCIØN P I [&IN DEL CICLO DEL PASO PI] $ONDE CONDICIØN ES CUALQUIER EXPRESIØN RELACIONAL Y O LØGICA Y ACCIØN ES CUALQUIER OPERACIØN O CONJUNTO DE OPERACIONES LECTURA ESCRITURA ASIGNACIØN U OTRAS %STA ESTRUCTURA PERMITE REPETIR UNA O MÈS OPERACIONES MIENTRAS LA CONDICIØN SEA VERDADERA 2EPETITIVA PREDElNIDA PI 2EPETIR CON VARIABLE DESDE 6) HASTA 6& ACCIØN P I [&IN DEL CICLO DEL PASO PI] $ONDE VARIABLE ES CUALQUIER VARIABLE 6) ES UN VALOR INICIAL QUE SE LE ASIGNA A VA RIABLE 6& ES EL VALOR lNAL QUE VA A TOMAR VARIABLE Y ACCIØN ES CUALQUIER OPERACIØN O CONJUNTO DE OPERACIONES LECTURA ESCRITURA ASIGNACIØN U OTRAS 3E ASUME QUE EL VALOR DE LA VARIABLE SE INCREMENTA DE UNO EN UNO %STA ESTRUCTURA PERMITE REPETIR UNA O MÈS OPERACIONES UN NÞMERO lJO DE VECES %L NÞMERO DE REPETICIONES QUEDA DETERMINADO POR LA DIFERENCIA ENTRE 6& Y 6) MÈS UNO

/2'!.):!#)¼. %L LIBRO ESTÈ ORGANIZADO EN NUEVE CAPÓTULOS CADA UNO DE ELLOS CUENTA CON NUMEROSOS EJEMPLOS Y EJERCICIOS QUE ILUSTRAN Y AYUDAN A ENTENDER LOS CONCEPTOS VERTIDOS EN ELLOS 3E UTILIZAN TABLAS CON SEGUIMIENTOS DE LOS ALGORITMOS PARA PRESENTAR CØMO FUNCIONAN Y DE QUÏ MANERA AFECTAN A LAS ESTRUCTURAS DE DATOS INVOLUCRADAS !LGUNOS LECTORES QUIZÈ SEPAN QUE ESTA OBRA TIENE DOS EDICIONES ANTERIORES PUBLICADA POR PRIMERA VEZ POR LA MISMA CASA EDITORIAL EN CON MÞLTIPLES REIMPRESIONES 4RECE A×OS ES UN TIEMPO EXTENSO EN COMPUTACIØN UN ÈREA DONDE LOS CAMBIOS SE PRESENTAN VE LOZMENTE %STA EDICIØN OFRECE UNA CUIDADOSA REVISIØN DE LOS TEMAS TRATADOS ALGORITMOS MEJORADOS Y EJERCICIOS ADICIONALES EN lN MUCHOS CAMBIOS PARA ALCANZAR EL OBJETIVO PROPUESTO DE ESTA NUEVA EDICIØN !DEMÈS EN LOS CAPÓTULOS Y SE INCLUYØ UNA BREVE INTRODUCCIØN A LA PROGRAMACIØN ORIENTADA A OBJETOS PRESENTANDO A LAS ESTRUCTURAS DE DATOS OBJETOS DE ESTUDIO EN DICHOS CAPÓTULOS CON ESTE ENFOQUE %L LENGUAJE UTILIZADO EN LOS PROGRAMAS ES PSEUDOCØDIGO ES DECIR INDEPENDIENTE DE CUALQUIER OTRO LENGUAJE DE PROGRAMACIØN COMERCIAL %STA CARACTERÓSTICA PERMITE AL ESTU DIANTE CONCENTRARSE EN LAS ESTRUCTURAS DE DATOS Y EN LOS ALGORITMOS ASOCIADOS A ELLAS SIN TENER QUE ATENDER LOS DETALLES DE IMPLEMENTACIØN 5NA VEZ QUE DOMINE LOS CONCEPTOS LOS PODRÈ LLEVAR A LA PRÈCTICA CON LA AYUDA DE CUALQUIER LENGUAJE DE PROGRAMACIØN COMER CIAL ,A GENERALIDAD CON LA QUE SE EXPLICAN LOS CONCEPTOS Y POSIBLES APLICACIONES DE LOS MISMOS FACILITAN INCLUSO LA IMPLEMENTACIØN EN LENGUAJES ESTRUCTURADOS O EN LENGUAJES ORIENTADOS A OBJETOS


xvi

*ÀiÃi Ì>V

#APÓTULO %STRUCTURAS FUNDAMENTALES %N ESTE CAPÓTULO SE PRESENTAN LAS ESTRUCTURAS FUNDAMENTALES DE DATOS 3E ESTUDIAN LOS ARREGLOS UNIDIMENSIONALES BIDIMENSIONALES Y MULTIDIMENSIONALES !DEMÈS SE EXPLICAN LOS REGISTROS 0OR ÞLTIMO SE INCLUYE UNA BREVE INTRODUCCIØN A LA PROGRAMACIØN ORIENTADA A OBJETOS CON EL lN DE QUE SIRVA COMO BASE PARA ENTENDER LAS PRINCIPALES ESTRUCTURAS DE DATOS DESDE ESTE ENFOQUE 4AMBIÏN SE DESCRIBE LA CLASE ARREGLO

#APÓTULO !RREGLOS MULTIDIMENSIONALES REPRESENTADOS EN ARREGLOS UNIDIMENSIONALES ,A MAYORÓA DE LOS LENGUAJES DE PROGRAMACIØN DE ALTO NIVEL PROPORCIONAN MEDIOS ElCA CES PARA ALMACENAR Y RECUPERAR ELEMENTOS DE ARREGLOS BIDIMENSIONALES Y MULTIDIMENSIO NALES 0OR ELLO EL USUARIO NO SE PREOCUPA POR LOS DETALLES DEL ALMACENAMIENTO Y EL TRA TAMIENTO FÓSICO DEL DATO SINO POR EL TRATAMIENTO LØGICO DEL MISMO %STO REPRESENTA UNA VENTAJA 3IN EMBARGO SI LAS ESTRUCTURAS SON MUY GRANDES Y NO TODOS LOS CAMPOS ESTÈN LLENOS SE PRESENTA ENTONCES UNA DESVENTAJA GRAN DESPERDICIO DE ESPACIO 0UEDE OCURRIR TAMBIÏN QUE EL USUARIO NECESITE REPRESENTAR DICHAS ESTRUCTURAS DE FORMA LINEAL 0OR ESTA RAZØN EN ESTE CAPÓTULO SE ESTUDIARÈ LA REPRESENTACIØN LINEAL DE ARREGLOS BIDIMENSIONALES Y MULTIDIMENSIONALES 3E ANALIZARÈN ADEMÈS LAS MATRICES POCO DENSAS LAS TRIANGULARES Y TRIDIAGONALES LAS SIMÏTRICAS Y ANTISIMÏTRICAS

#APÓTULO 0ILAS Y COLAS %STE CAPÓTULO SE DEDICARÈ A LAS PILAS Y COLAS LAS CUALES SON ESTRUCTURAS DE DATOS LINEALES ESTÈTICAS O DINÈMICAS ⎯DEPENDIENDO DE SI ÏSTAS SE IMPLEMENTAN CON ARREGLOS O LISTAS⎯ 4ALES ESTRUCTURAS DE DATOS TIENEN LA PARTICULARIDAD DE QUE LA INSERCIØN Y ELIMINACIØN DE LOS ELEMENTOS SE HACE SOLAMENTE POR ALGUNO DE LOS EXTREMOS SEGÞN SU ESTRUCTURA 4AM BIÏN SE PRESENTAN ESTAS ESTRUCTURAS CON UN ENFOQUE ORIENTADO A OBJETOS

#APÓTULO 2ECURSIØN ,A RECURSIØN PERMITE DElNIR UN OBJETO EN TÏRMINOS DE SÓ MISMO !PARECE EN NUMEROSAS ACTIVIDADES DE LA VIDA DIARIA POR EJEMPLO EN LA FOTOGRAFÓA DE UNA FOTOGRAFÓA #ASOS TÓPI COS DE ESTRUCTURAS DE DATOS DElNIDAS DE MANERA RECURSIVA SON LAS LISTAS Y LOS ÈRBOLES QUE SE ESTUDIARÈN EN LOS DOS SIGUIENTES CAPÓTULOS ,A RECURSIVIDAD ES UNA PROPIEDAD ESENCIAL EN EL DESARROLLO DE SOFTWARE POR ESTA RAZØN SE ANALIZAN AQUÓ LA DESCRIPCIØN DE LA RECUR SIVIDAD ASÓ COMO EL USO DE ALGORITMOS RECURSIVOS CLÈSICOS Y COMPLEJOS


13&4&/5"$*Î/

xvii

#APÓTULO ,ISTAS ,AS LISTAS SON ESTRUCTURAS LINEALES Y DINÈMICAS DE DATOS ,A PRINCIPAL VENTAJA DEL DINA MISMO LO REPRESENTA EL HECHO DE QUE SE ADQUIEREN POSICIONES DE MEMORIA A MEDIDA QUE SE NECESITAN Y SE LIBERAN CUANDO YA NO SE REQUIEREN %S DECIR SE LLEGAN A EXPANDIR O CONTRAER DEPENDIENDO DE LA APLICACIØN %L DINAMISMO DE ESTAS ESTRUCTURAS SOLUCIONA EL PROBLEMA DE DECIDIR CUÈNTO ESPACIO SE NECESITA A PRIORI POR EJEMPLO EN UNA ESTRUC TURA DE DATOS ESTÈTICA COMO EL ARREGLO %N ESTE CAPÓTULO ESTUDIAREMOS LAS LISTAS LINEALES CIRCULARES Y DOBLEMENTE LIGADAS 4AMBIÏN SE PRESENTAN ESTAS ESTRUCTURAS CON UN ENFOQUE ORIENTADO A OBJETOS

#APÓTULO ­RBOLES ,OS ÈRBOLES REPRESENTAN LAS ESTRUCTURAS DE DATOS NO LINEALES Y LAS DINÈMICAS MÈS RELEVAN TES EN COMPUTACIØN .O LINEALES PUESTO QUE A CADA ELEMENTO DEL ÈRBOL PUEDEN SEGUIRLE VARIOS ELEMENTOS $INÈMICAS DADO QUE LA ESTRUCTURA DEL ÈRBOL SUELE CAMBIAR DURAN TE LA EJECUCIØN DEL PROGRAMA ,OS ÈRBOLES BALANCEADOS SON LA ESTRUCTURA DE DATOS MÈS IMPORTANTE PARA TRABAJAR EN LA MEMORIA INTERNA DE LA COMPUTADORA 0OR OTRA PARTE LOS ÈRBOLES " CONSTITUYEN LA ESTRUCTURA DE DATOS MÈS ÞTIL PARA TRABAJAR CON ALMACENAMIENTO SECUNDARIO 4AMBIÏN SE PRESENTA ESTA ESTRUCTURA CON UN ENFOQUE ORIENTADO A OBJETOS

#APÓTULO 'RÉlCAS %STE CAPÓTULO SE DEDICA A LAS ESTRUCTURAS DE DATOS QUE PERMITEN REPRESENTAR DIFERENTES TI POS DE RELACIONES ENTRE LOS OBJETOS LAS GRÈlCAS %STUDIAREMOS LAS GRÈlCAS DIRIGIDAS Y NO DIRIGIDAS LOS CONCEPTOS MÈS IMPORTANTES Y LOS ALGORITMOS MÈS DESTACADOS PARA TRABAJAR CON ELLAS TALES COMO $IJKSTRA &LOYD 7ARSHALL 0RIM Y +RUSKAL !DEMÈS SE INCLUYE UNA INTRODUCCIØN A LA SOLUCIØN DE PROBLEMAS TEMA MUY RELACIONADO CON LAS GRÈlCAS Y SE ESTUDIAN LOS ALGORITMOS "READTH &IRST Y $EPTH &IRST 4AMBIÏN SE PRESENTA ESTA ESTRUCTURA CON UN ENFOQUE ORIENTADO A OBJETOS

#APÓTULO -ÏTODOS DE ORDENACIØN /RDENAR SIGNIlCA COLOCAR O REORGANIZAR UN CONJUNTO DE DATOS U OBJETOS EN UNA SECUENCIA ESPECÓlCA ,OS PROCESOS TANTO DE ORDENACIØN COMO DE BÞSQUEDA SON FRECUENTES EN NUESTRA VIDA %N ESTE CAPÓTULO ESTUDIAREMOS LOS MÏTODOS DE ORDENACIØN INTERNA Y EXTERNA MÈS IMPORTANTES DE LA ACTUALIDAD 3E PRESENTA ADEMÈS EL ANÈLISIS DE ElCIENCIA DE CADA UNO DE LOS MÏTODOS

#APÓTULO -ÏTODOS DE BÞSQUEDA %STE CAPÓTULO SE DEDICØ A UNA DE LAS OPERACIONES MÈS IMPORTANTES EN EL PROCESAMIENTO DE LA INFORMACIØN LA BÞSQUEDA 4AL OPERACIØN PERMITE RECUPERAR DATOS ALMACENADOS ,A


xviii

*ÀiÃi Ì>V BÞSQUEDA PUEDE SER INTERNA CUANDO TODOS LOS ELEMENTOS SE ENCUENTRAN EN LA MEMORIA PRINCIPAL O EXTERNA CUANDO ESTÈN EN LA MEMORIA SECUNDARIA 3E ESTUDIAN LOS MÏTODOS DE BÞSQUEDA MÈS IMPORTANTES QUE EXISTEN 3E PRESENTA TAMBIÏN EL ANÈLISIS DE ElCIENCIA DE CADA UNO DE ESTOS MÏTODOS

!'2!$%#)-)%.4/3 %STA OBRA ES FRUTO DE LA COLABORACIØN DE AMIGOS ESTUDIANTES Y COLEGAS QUE DE ALGUNA U OTRA FORMA PARTICIPARON PARA QUE ESTE PROYECTO SEA UNA REALIDAD %SPECIALMENTE QUERE MOS AGRADECER AL DOCTOR !RTURO &ERNÈNDEZ 0ÏREZ RECTOR DEL )4!- Y A LOS FUNCIONARIOS DE LA $IVISIØN !CADÏMICA DE )NGENIERÓA DEL )4!- QUIENES NOS APOYARON PARA LA REALI ZACIØN DE ESTE LIBRO /36!,$/ #!)2» 3),6)! '5!2$!4)


#APÓTULO

£

%3425#452!3 &5.$!-%.4!,%3 $% $!4/3 ).42/$5##)¼. ,A IMPORTANCIA DE LAS COMPUTADORAS RADICA FUNDAMENTALMENTE EN SU CAPACIDAD PARA PROCESAR INFORMACIØN %STA CARACTERÓSTICA LES PERMITE REALIZAR ACTIVIDADES QUE ANTES SØLO LAS REALIZABAN LOS HUMANOS #ON EL PROPØSITO DE QUE LA INFORMACIØN SEA PROCESADA SE REQUIERE QUE ÏSTA SE AL MACENE EN LA MEMORIA DE LA COMPUTADORA $E ACUERDO CON LA FORMA EN QUE LOS DATOS SE ORGANIZAN SE CLASIlCAN EN ◗ ◗

4IPOS DE DATOS SIMPLES 4IPOS DE DATOS ESTRUCTURADOS

,A PRINCIPAL CARACTERÓSTICA DE LOS TIPOS DE DATOS SIMPLES CONSISTE EN QUE OCUPAN SØLO UNA CASILLA DE MEMORIA lG A POR TANTO UNA VARIABLE SIMPLE HACE REFERENCIA A UN ÞNICO VALOR A LA VEZ %N ESTE GRUPO DE DATOS SE ENCUENTRAN NÞMEROS ENTEROS Y REALES CARACTERES BOOLEANOS ENUMERADOS Y SUBRANGOS #ABE SE×ALAR QUE LOS DOS ÞLTIMOS NO EXISTEN EN ALGUNOS LENGUAJES DE PROGRAMACIØN 0OR OTRA PARTE LOS TIPOS DE DATOS ESTRUCTURADOS SE CARACTERIZAN POR EL HECHO DE QUE CON UN NOMBRE IDENTIlCADOR DE VARIABLE ESTRUCTURADA SE HACE REFERENCIA A UN GRUPO DE CASILLAS DE MEMORIA lG B %S DECIR UN TIPO DE DATO ESTRUCTURADO TIENE VARIOS COMPONENTES #ADA UNO DE ÏSTOS PUEDE SER UN TIPO DE DATO SIMPLE O ESTRUCTURADO 3IN EMBARGO LOS COMPONENTES BÈSICOS LOS DEL NIVEL MÈS BAJO DE CUALQUIER TIPO DE DATOS ESTRUCTURADO SON SIEMPRE TIPOS DE DATOS SIMPLES %L ESTUDIO DE LAS ESTRUCTURAS DE DATOS CONSTITUYE UNA DE LAS PRINCIPALES ACTIVIDADES PARA LLEGAR AL DESARROLLO DE GRANDES SISTEMAS DE SOFTWARE %N ESTE CAPÓTULO SE TRATARÈN LAS ESTRUCTURAS DE DATOS BÈSICOS QUE SON ÞTILES PARA LA MAYORÓA DE LOS LENGUAJES DE PROGRA MACIØN ²STAS SON ARREGLOS Y REGISTROS


2

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! Ê 4IPOS DE DATOS SIMPLES Y ESTRUCTURADOS B $ATO SIMPLE C $ATO ESTRUCTURADO

!22%',/3 #ON FRECUENCIA SE PRESENTAN EN LA PRÈCTICA PROBLEMAS CUYA SOLUCIØN NO RESULTA FÈCIL A VECES ES IMPOSIBLE SI SE UTILIZAN TIPOS DE DATOS SIMPLES #ON EL PROPØSITO DE ILUSTRAR ESTA DIlCULTAD A CONTINUACIØN SE PRESENTARÈN UN PRO BLEMA Y DOS DE SUS POSIBLES SOLUCIONES MEDIANTE TIPOS SIMPLES DE DATOS %L OBJETIVO DE ESTE EJEMPLO ES DEMOSTRAR LO COMPLEJO QUE RESULTA UN ALGORITMO DE SOLUCIØN PARA CIERTOS PROBLEMAS SI NO SE UTILIZAN TIPOS DE DATOS ESTRUCTURADOS &INALMENTE Y LUEGO DE PRE SENTAR LOS ARREGLOS SE OFRECERÈ UNA SOLUCIØN AL PROBLEMA MENCIONADO EN PRIMER TÏRMINO USANDO ARREGLOS

%JEMPLO

#ONSIDEREMOS QUE EN UNA UNIVERSIDAD SE CONOCEN LAS CALIlCACIONES DE UN GRUPO DE ALUMNOS 3E NECESITA SABER CUÈNTOS DE ÏSTOS TIENEN CALIlCACIØN SUPERIOR AL PROMEDIO DEL GRUPO z#ØMO RESOLVER ESTE PROBLEMA 0RIMERA SOLUCIØN !LGORITMO $OBLE?LECTURA $OBLE?LECTURA [%STE ALGORITMO RESUELVE EL PROBLEMA PLANTEADO EN EL EJEMPLO REALIZANDO DOS VECES LA LECTURA DE LOS DATOS] [) Y #/.4 SON VARIABLES DE TIPO ENTERO !# 02/- Y # SON VARIABLES DE TIPO REAL] (ACER !# ← E ) ← -IENTRAS ) ≤ 2EPETIR %SCRIBIR h)NGRESE LA CALIlCACIØNv ) ,EER # (ACER !# ← !# # E ) ← ) [&IN DEL CICLO DEL PASO ] (ACER 02/- ← !# [#OMO SE NECESITA INDICAR CUÈNTOS ALUMNOS OBTUVIERON CALIlCACIØN SUPERIOR AL PROMEDIO SE RELEERÈN LAS CALIlCACIONES PARA COMPARAR CADA UNA DE ELLAS CON EL PROMEDIO CALCULADO EN EL PASO ]


"33&(-04

3

(ACER #/.4 ← E ) ← -IENTRAS ) ≤ 2EPETIR %SCRIBIR h)NGRESE LA CALIlCACIØNv ) ,EER # 3I # > 02/- ENTONCES (ACER #/.4 ← #/.4 [&IN DEL CONDICIONAL DEL PASO ] (ACER ) ← ) [&IN DEL CICLO DEL PASO ] %SCRIBIR #/.4

3EGUNDA SOLUCIØN !LGORITMO -UCHAS?VARIABLES -UCHAS?VARIABLES [%STE ALGORITMO RESUELVE EL PROBLEMA PLANTEADO EN EL EJEMPLO PERO AHORA MEDIANTE MUCHAS VARIABLES] [#/.4 ES UNA VARIABLE DE TIPO ENTERO 02/- !# Y #I SON VARIABLES DE TIPO REAL] ,EER # # # # [,AS CALIlCACIONES CORRESPONDEN A LOS ALUMNOS] (ACER !# ← # # # #

02/- ← !# Y #/.4 ← 3I # 02/- ENTONCES (ACER #/.4 ← #/.4 Ê [&IN DEL CONDICIONAL DEL PASO ] 3I # 02/- ENTONCES (ACER #/.4 ← #/.4 [&IN DEL CONDICIONAL DEL PASO ] 3I # 02/- ENTONCES (ACER #/.4 ← #/.4 [&IN DEL CONDICIONAL DEL PASO ] %SCRIBIR #/.4

%STAS DOS SOLUCIONES SON MUY REPRESENTATIVAS DE LOS INCONVENIENTES A LOS QUE UNO SE PUEDE ENFRENTAR AL PLANTEAR UNA SOLUCIØN ALGORÓTMICA A UN PROBLEMA AL USAR SØLO TIPOS DE DATOS SIMPLES


4

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 %N LA SOLUCIØN PLANTEADA EN EL ALGORITMO EL USUARIO DEBE INGRESAR DOS VECES EL CONJUNTO DE DATOS %STO ÞLTIMO TIENE VARIAS DESVENTAJAS ES TOTALMENTE MOLESTO CON SIDERE QUE EL NÞMERO DE DATOS PUEDE SER MAYOR A INElCIENTE LA OPERACIØN DE LECTURA YA SEA DE MANERA INTERACTIVA CON EL USUARIO O DESDE UN ARCHIVO SE DEBE REPETIR LO QUE OCASIONA PÏRDIDA DE TIEMPO Y CAUSA DE ERRORES EN LOS CASOS DONDE LA ENTRADA DE DATOS SE HAGA DE FORMA MANUAL 0OR OTRA PARTE EN LA SOLUCIØN PLANTEADA EN EL ALGORITMO SE MANEJAN VARIABLES EN MEMORIA %STA SOLUCIØN PRESENTA EL INCONVENIENTE DE QUE EL MANEJO DE LAS VARIABLES SE PUEDE TORNAR INCONTROLABLE SOBRE TODO SI SU NÞMERO CRECE EN FORMA CONSIDERABLE !DEMÈS ALGUNOS PASOS ESPECIlCADOS EN EL ALGORITMO QUE POSTERIORMENTE SERÈN INSTRUCCIONES DE ALGÞN LENGUAJE DE PROGRAMACIØN SE REPITEN YA QUE NO SE PUEDEN GENERALIZAR %STA CARACTE RÓSTICA NO SØLO PROVOCA MÈS TRABAJO SINO TAMBIÏN POSIBLES ERRORES %S SABIDO QUE EJECUTAR UNA TAREA EN FORMA REPETIDA EN ESTE CASO ESCRIBIR UN MISMO PASO VARIAS VECES RESTA INTERÏS EN LA ACCIØN QUE SE ESTÈ LLEVANDO A CABO Y PUEDE PROPICIAR MÈS ERRORES 3E OBSERVA ENTONCES QUE NINGUNA DE LAS DOS SOLUCIONES RESULTA PRÈCTICA NI ElCIEN TE %S NECESARIO UN TIPO DE DATO QUE PERMITA MANEJAR MUCHA INFORMACIØN GENERALIZAN DO SUS OPERACIONES ,OS TIPOS DE DATOS ESTRUCTURADOS QUE AYUDAN A RESOLVER PROBLEMAS COMO ÏSTE SON LOS ARREGLOS 5N ARREGLO UNIDIMENSIONAL SE DElNE COMO UNA COLECCIØN lNITA HOMOGÏNEA Y ORDENADA DE ELEMENTOS ◗ ◗ ◗

&INITA TODO ARREGLO TIENE UN LÓMITE ES DECIR SE DEBE DETERMINAR CUÈL SERÈ EL NÞMERO MÈXIMO DE ELEMENTOS QUE FORMARÈN PARTE DEL ARREGLO (OMOGÏNEA TODOS LOS ELEMENTOS DE UN ARREGLO SON DEL MISMO TIPO %S DECIR TODOS ENTEROS TODOS BOOLEANOS ETCÏTERA PERO NUNCA UNA COMBINACIØN DE DISTINTOS TIPOS /RDENADA SE PUEDE DETERMINAR CUÈLES SON EL PRIMERO EL SEGUNDO EL TERCERO Y EL ENÏSIMO ELEMENTOS

5N ARREGLO UNIDIMENSIONAL SE PUEDE REPRESENTAR GRÈlCAMENTE COMO SE MUESTRA EN LA lGURA 3I UN ARREGLO TIENE LA CARACTERÓSTICA DE QUE PUEDE ALMACENAR A . ELEMENTOS DEL MISMO TIPO ENTONCES DEBERÈ PERMITIR LA RECUPERACIØN DE CADA UNO DE ELLOS #OMO CON SECUENCIA SE DISTINGUEN DOS PARTES FUNDAMENTALES EN LOS ARREGLOS ◗ ◗

,OS COMPONENTES ,OS ÓNDICES

,OS PRIMEROS HACEN REFERENCIA A LOS ELEMENTOS QUE FORMAN EL ARREGLO ES DECIR A LOS VALORES QUE SE ALMACENAN EN CADA UNA DE SUS CASILLAS lG #ONSIDERANDO EL &)'52! 2EPRESENTACIØN DE ARREGLOS


"33&(-04

5

&)'52! ·NDICES Y COMPONENTES DE UN ARREGLO

EJEMPLO ANTERIOR CADA UNA DE LAS CALIlCACIONES SERÈ UN COMPONENTE DE UN ARREGLO hCALIlCACIONESv %N ESTE CONTEXTO LOS ÓNDICES ESPECIlCAN CUÈNTOS ELEMENTOS TENDRÈ EL ARREGLO Y ADEMÈS DE QUÏ MODO PODRÈN RECUPERARSE ESOS COMPONENTES ,OS ÓNDICES TAM BIÏN PERMITEN HACER REFERENCIA A LOS COMPONENTES DEL ARREGLO EN FORMA INDIVIDUAL ES DECIR DISTINGUIRÈN ENTRE SUS ELEMENTOS 0OR TANTO PARA HACER REFERENCIA A UN ELEMENTO DE UN ARREGLO SE DEBE UTILIZAR ◗ ◗

%L NOMBRE DEL ARREGLO %L ÓNDICE DEL ELEMENTO

%N LA lGURA SE REPRESENTA UN ARREGLO UNIDIMENSIONAL Y SE INDICAN TANTO SUS COM PONENTES COMO SUS ÓNDICES

$ECLARACIØN DE ARREGLOS UNIDIMENSIONALES .O ES EL PROPØSITO DE ESTE LIBRO SEGUIR LA SINTAXIS DE ALGÞN LENGUAJE DE PROGRAMACIØN EN PARTICULAR UN ARREGLO UNIDIMENSIONAL SE DElNE DE LA SIGUIENTE MANERA IDENT?ARREGLO !22%',/ ;LÓMINF LÓMSUP= $% TIPO #ON LOS VALORES LÓMINF Y LÓMSUP SE DECLARA EL TIPO DE LOS ÓNDICES ASÓ COMO EL NÞ MERO DE ELEMENTOS QUE TENDRÈ EL ARREGLO %L NÞMERO TOTAL DE COMPONENTES .4# QUE TENDRÈ EL ARREGLO UNIDIMENSIONAL SE CALCULA CON

.4# LÓMSUP LÓMINF

▼ &ØRMULA

#ON TIPO SE DECLARA EL TIPO DE DATOS PARA TODOS LOS COMPONENTES DEL ARREGLO UNIDI MENSIONAL %L TIPO DE LOS COMPONENTES NO TIENE QUE SER EL MISMO QUE EL DE LOS ÓNDICES %N GENERAL LOS LENGUAJES DE PROGRAMACIØN ESTABLECEN RESTRICCIONES AL RESPECTO /BSERVACIONES A %L TIPO DEL ÓNDICE PUEDE SER CUALQUIER TIPO ORDINAL CARÈCTER ENTERO ENUMERADO %N LA MAYORÓA DE LOS LENGUAJES USADOS ACTUALMENTE SE PERMITE SØLO NÞMEROS ENTEROS


6

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 B %L TIPO DE LOS COMPONENTES PUEDE SER CUALQUIER TIPO DE DATOS ENTERO REAL CADENA DE CARACTERES REGISTRO ARREGLO ETCÏTERA C 3E UTILIZAN LOS CORCHETES h;=v PARA INDICAR EL ÓNDICE DE UN ARREGLO %NTRE ;= SE DEBE ESCRIBIR UN VALOR ORDINAL PUEDE SER UNA VARIABLE UNA CONSTANTE O UNA EXPRESIØN TAN COMPLEJA COMO SE QUIERA PERO QUE DÏ COMO RESULTADO UN VALOR ORDINAL %NSEGUIDA SE VERÈN ALGUNOS EJEMPLOS DE ARREGLOS UNIDIMENSIONALES

%JEMPLO

3EA 6 UN ARREGLO UNIDIMENSIONAL DE ELEMENTOS ENTEROS CON ÓNDICES ENTEROS 3U REPRE SENTACIØN SE INDICA EN LA lGURA 6 !22%',/; = $% ENTEROS ◗ ◗

.4# n #ADA COMPONENTE DEL ARREGLO UNIDIMENSIONAL 6 SERÈ UN NÞMERO ENTERO AL CUAL SE TENDRÈ ACCESO POR MEDIO DE UN ÓNDICE QUE SERÈ UN VALOR COMPRENDIDO ENTRE Y 0OR EJEMPLO 6;L= HACE REFERENCIA AL ELEMENTO DE LA POSICIØN 6; = HACE REFERENCIA AL ELEMENTO DE LA POSICIØN 6; = HACE REFERENCIA AL ELEMENTO DE LA POSICIØN

,OS ÓNDICES DE TIPO ENTERO NO NECESARIAMENTE DEBEN TENER UN LÓMITE INFERIOR IGUAL A CERO O A UNO 0ODRÓAN USARSE VALORES NEGATIVOS ; = O VALORES MAYORES A UNO ; =

%JEMPLO

3EA ! UN ARREGLO DE ELEMENTOS BOOLEANOS CON ÓNDICES DE TIPO CARÈCTER 3U REPRESENTA CIØN SE MUESTRA EN LA lGURA ! !22%',/ ;@A @Z = $% BOOLEANOS ◗ ◗

.4# ORD @Z ORD @A #ADA COMPONENTE DEL ARREGLO UNIDIMENSIONAL ! SERÈ UNO DE LOS DOS POSIBLES VALORES LØGICOS 6%2$!$%2/ O &!,3/ AL CUAL SE TENDRÈ ACCESO POR MEDIO DE UN ÓNDICE QUE SERÈ UN VALOR COMPRENDIDO ENTRE LOS CARACTERES @A Y @Z 0OR EJEMPLO !;@A = HACE REFERENCIA AL ELEMENTO DE LA POSICIØN @A ERA !;@B = HACE REFERENCIA AL ELEMENTO DE LA POSICIØN @B DA

&)'52!


"33&(-04

7

&)'52!

!;@Z = HACE REFERENCIA AL ELEMENTO DE LA POSICIØN @Z

%JEMPLO

3EA #)#,/ UN ARREGLO DE ELEMENTOS REALES CON ÓNDICES DE TIPO ESCALAR O ENUMERADOS 3U REPRESENTACIØN SE MUESTRA EN LA lGURA MESES ENE FEB MAR ABR MAY JUN JUL AGO SEPT OCT NOV DIC #)#,/ !22%',/ ;MESES= $% REALES ◗ ◗

.4# ORD DIC ORD ENE L n #ADA COMPONENTE DEL ARREGLO UNIDIMENSIONAL #)#,/ SERÈ UN NÞMERO REAL AL CUAL SE TENDRÈ ACCESO POR MEDIO DE UN ÓNDICE QUE SERÈ UN VALOR COMPRENDIDO ENTRE ENE Y DIC 0OR EJEMPLO #)#,/;ENE= HACE REFERENCIA AL ELEMENTO DE LA POSICIØN ENE ERA #)#,/;FEB= HACE REFERENCIA AL ELEMENTO DE LA POSICIØN FEB DA #)#,/;DIC= HACE REFERENCIA AL ELEMENTO DE LA POSICIØN DIC AVA

/PERACIONES CON ARREGLOS UNIDIMENSIONALES #OMO YA SE MENCIONØ LOS ARREGLOS SE UTILIZAN PARA ALMACENAR DATOS 0OR TANTO RESULTA NECESARIO LEER ESCRIBIR ASIGNAR O SIMPLEMENTE MODIlCAR DATOS EN UN ARREGLO !SIMISMO AL CONSIDERAR QUE ES UNA ESTRUCTURA A UNA COLECCIØN DE ELEMENTOS SE DEBEN INCORPORAR NUEVOS ELEMENTOS ASÓ COMO ELIMINAR ALGUNOS DE LOS YA ALMACENADOS ,AS OPERACIONES VÈLIDAS EN ARREGLOS SON LAS SIGUIENTES ◗ ◗ &)'52!

,ECTURA %SCRITURA !SIGNACIØN


8

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 ◗ ◗ ◗

!CTUALIZACIØN )NSERCIØN %LIMINACIØN -ODIlCACIØN /RDENACIØN "ÞSQUEDA

#OMO LOS ARREGLOS SON TIPOS DE DATOS ESTRUCTURADOS MUCHAS DE ESTAS OPERACIONES NO SE PUEDEN LLEVAR A CABO DE MANERA GLOBAL ES DECIR TRATANDO AL ARREGLO COMO UN TODO SINO QUE SE DEBE TRABAJAR SOBRE CADA COMPONENTE ! CONTINUACIØN SE ANALIZARÈ CADA UNA DE ESTAS OPERACIONES #ABE DESTACAR QUE LAS DOS ÞLTIMAS ORDENACIØN Y BÞSQUEDA SERÈN TEMA DE ESTUDIO EN PRØXIMOS CAPÓTULOS 0ARA ILUSTRARLAS SE UTILIZARÈN LOS EJEMPLOS PRESENTADOS ANTERIORMENTE

,ECTURA %L PROCESO DE LECTURA DE UN ARREGLO CONSISTE EN LEER Y ASIGNAR UN VALOR A CADA UNO DE SUS COMPONENTES 3UPONGA QUE SE DESEA LEER TODOS LOS ELEMENTOS DEL ARREGLO UNIDIMENSIO NAL 6 EN FORMA CONSECUTIVA 3E PODRÓA HACER DE LA SIGUIENTE MANERA ,EER 6; =

,EER 6; =

,EER 6; = 0ERO ES IMPORTANTE QUE EL LECTOR OBSERVE QUE DE ESTA FORMA NO RESULTA PRÈCTICO 0OR TANTO SE USARÈ UN CICLO PARA LEER TODOS LOS ELEMENTOS DEL ARREGLO UNIDIMENSIONAL 2EPETIR CON ) DESDE HASTA ,EER 6;)= !L VARIAR EL VALOR DE ) CADA ELEMENTO LEÓDO SE ASIGNA AL CORRESPONDIENTE COMPONEN TE DEL ARREGLO SEGÞN LA POSICIØN INDICADA POR ) 0ARA ) SE LEE 6; = ) SE LEE 6; = ) . SE LEE 6;.= !L lNALIZAR EL CICLO DE LECTURA SE TENDRÈ ASIGNADO UN VALOR A CADA UNO DE LOS COMPO NENTES DEL ARREGLO UNIDIMENSIONAL 6 %L ARREGLO SE MUESTRA EN LA lGURA

&)'52! ,ECTURA DE ARREGLOS


"33&(-04

9

&)'52! ,ECTURA DE ARREGLOS

0UEDE SUCEDER QUE NO SE NECESITEN LEER TODOS LOS COMPONENTES DEL ARREGLO SINO SOLAMENTE ALGUNO DE ELLOS 3UPONGAMOS QUE SE DEBEN LEER LOS ELEMENTOS CON ÓNDICES COMPRENDIDOS ENTRE EL Y EL ! CONTINUACIØN SE MUESTRA EL CICLO QUE SE NECESITA PARA REALIZAR ESTA OPERACIØN 2EPETIR CON ) DESDE HASTA ,EER 6;)= %L ARREGLO SE MUESTRA EN LA lGURA

%SCRITURA %L CASO DE LA OPERACIØN DE ESCRITURA ES SIMILAR AL DE LECTURA 3E DEBE ESCRIBIR EL VALOR DE CADA UNO DE LOS COMPONENTES 3UPONGAMOS QUE SE DESEA ESCRIBIR LOS PRIMEROS . COMPO NENTES DEL ARREGLO UNIDIMENSIONAL 6 EN FORMA CONSECUTIVA ,OS PASOS A SEGUIR SON 2EPETIR CON ) DESDE HASTA . %SCRIBIR 6;)= !L VARIAR EL VALOR DE ) SE ESCRIBE EL ELEMENTO DEL ARREGLO UNIDIMENSIONAL 6 CORRES PONDIENTE A LA POSICIØN INDICADA POR ) 0ARA ) SE ESCRIBE EL VALOR DE 6; = ) SE ESCRIBE EL VALOR DE 6; = ) . SE ESCRIBE EL VALOR DE 6;.=

!SIGNACIØN %N GENERAL NO ES POSIBLE ASIGNAR DIRECTAMENTE UN VALOR A TODO EL ARREGLO SINO QUE SE DEBE ASIGNAR EL VALOR DESEADO A CADA COMPONENTE %NSEGUIDA SE ANALIZAN ALGUNOS EJEM PLOS DE ASIGNACIØN /BSERVE QUE EN LOS DOS PRIMEROS CASOS SE ASIGNA UN VALOR A UNA DETERMINADA CASILLA DEL ARREGLO EN EL PRIMERO A LA SE×ALADA POR EL ÓNDICE ENE Y EN EL SEGUNDO A LA INDICADA POR EL ÓNDICE MAR #)#,/;ENE= ← #)#,/;MAR= ← #)#,/;ENE= %N EL TERCER CASO SE ASIGNA EL A TODAS LAS CASILLAS DEL ARREGLO CON LO QUE ÏSTE QUEDA COMO SE MUESTRA EN LA lGURA


10

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! !SIGNACIØN DE ARREGLOS

2EPETIR CON -%3 DESDE ENE HASTA DIC (ACER #)#,/;-%3= ← #ABE DESTACAR QUE EN ALGUNOS LENGUAJES DE PROGRAMACIØN ES POSIBLE ASIGNAR UNA VARIABLE TIPO ARREGLO A OTRA DEL MISMO TIPO 6 ← 6 ,A EXPRESIØN ANTERIOR ES EQUIVALENTE A REALIZAR LO SIGUIENTE 2EPETIR CON ) DESDE HASTA (ACER 6 ;)= ← 6;)=

!CTUALIZACIØN ,A ACTUALIZACIØN ES UNA OPERACIØN QUE SE REALIZA EN FORMA FRECUENTE EN LOS ARREGLOS ,A CANTIDAD DE ACTUALIZACIONES ESTÈ RELACIONADA CON EL TIPO DE PROBLEMA QUE SE INTENTE RE SOLVER ! DIFERENCIA DE LAS OTRAS OPERACIONES ESTUDIADAS LA ACTUALIZACIØN LLEVA IMPLÓCITA OTROS TIPOS DE OPERACIONES COMO INSERCIØN Y ELIMINACIØN DE ELEMENTOS #ON EL PROPØSITO DE REALIZAR UNA ACTUALIZACIØN DE MANERA ElCIENTE ES IMPORTANTE CONOCER SI EL ARREGLO ESTÈ O NO ORDENADO ES DECIR SI SUS COMPONENTES RESPETAN ALGÞN ORDEN YA SEA CRECIENTE O DECRECIENTE #ABE DESTACAR QUE LAS OPERACIONES DE INSERCIØN ELIMINACIØN Y MODIlCACIØN SERÈN TRATADAS EN FORMA SEPARADA PARA ARREGLOS ORDENADOS Y DESORDENADOS &INALMENTE ES IMPORTANTE SE×ALAR QUE LA OPERACIØN DE BÞSQUEDA SE UTILIZA COMO AUXILIAR EN LAS OPERACIONES DE INSERCIØN ELIMINACIØN Y MODIlCACIØN %STA ES LA PRINCI PAL RAZØN POR LA CUAL A CONTINUACIØN SE PRESENTA EL ALGORITMO DE BÞSQUEDA SECUENCIAL EN ARREGLOS DESORDENADOS %N EL CAPÓTULO CORRESPONDIENTE A MÏTODOS DE BÞSQUEDA SE TRATARÈ CON MAYOR DETALLE ESTE TEMA !LGORITMO "USCA?SECUENCIAL?DESORDENADO "USCA?SECUENCIAL?DESORDENADO [%L ALGORITMO BUSCA EN FORMA SECUENCIAL UN ELEMENTO EN UN ARREGLO UNIDIMENSIONAL QUE SE ENCUENTRA DESORDENADO 6 ES UN ARREGLO DE ELEMENTOS . EL NÞMERO ACTUAL DE ELEMENTOS Y 8 EL VALOR A BUSCAR] [) ES UNA VARIABLE AUXILIAR DE TIPO ENTERO] (ACER ) ←


"33&(-04

11

-IENTRAS ) ≤ . Y 8 ≠ 6;)= 2EPETIR

(ACER ) ← )

[&IN DEL CICLO DEL PASO ] 3I ) . [.O SE ENCONTRØ EL VALOR BUSCADO]

ENTONCES %SCRIBIR h%L VALOR 8 NO ESTÈ EN EL ARREGLOv SI NO %SCRIBIR h%L VALOR 8 ESTÈ EN LA POSICIØN )v

[&IN DEL CONDICIONAL DEL PASO ]

%STE MÏTODO DE BÞSQUEDA ES SENCILLO AUNQUE NO MUY ElCIENTE #ONSISTE EN RECORRER EL ARREGLO COMPARANDO CADA ELEMENTO DEL MISMO CON EL VALOR A BUSCAR %L PROCESO SE REPITE HASTA QUE EL VALOR SE ENCUENTRE ÏXITO O HASTA QUE SE HAYA SUPERADO EL TAMA×O DEL ARREGLO FRACASO

>®Ê ÀÀi} ÃÊ`ià À`i >` ÃÊ #ONSIDERE UN ARREGLO UNIDIMENSIONAL 6 DE ELE MENTOS COMO EL QUE SE PRESENTA EN LA lGURA /BSERVE QUE LOS PRIMEROS . COMPO NENTES TIENEN ASIGNADO UN VALOR A

)NSERCIØN 0ARA INSERTAR UN ELEMENTO 9 EN UN ARREGLO UNIDIMENSIONAL 6 DESORDE NADO SE DEBE VERIlCAR QUE EXISTA ESPACIO 3I SE CUMPLE ESTA CONDICIØN ENTONCES SE ASIGNARÈ EN LA POSICIØN . EL NUEVO ELEMENTO Y SE INCREMENTARÈ EN . EL TOTAL DE ELEMENTOS DEL ARREGLO ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE INSERCIØN EN ARREGLOS UNIDIMEN SIONALES DESORDENADOS

!LGORITMO )NSERTA?DESORDENADO )NSERTA?DESORDENADO 6 . 9 [%L ALGORITMO INSERTA UN ELEMENTO EN UN ARREGLO UNIDIMENSIONAL DESORDENADO 6 ES UN ARREGLO DE MÈXIMO ELEMENTOS . ES EL NÞMERO ACTUAL DE ELEMENTOS 9 REPRESENTA EL VALOR A INSERTAR] 3I . ENTONCES (ACER . ← . Y 6;.= ← 9 SI NO [.O HAY ESPACIO EN EL ARREGLO] %SCRIBIR h%L VALOR 9 NO SE PUEDE INSERTAR .O HAY ESPACIOv [&IN DEL CONDICIONAL DEL PASO ]

,UEGO DE LA INSERCIØN EL ARREGLO UNIDIMENSIONAL 6 QUEDA COMO SE MUESTRA EN LA lGURA A


12

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! !CTUALIZACIØN DE ARREGLOS DESORDENADOS

A

%LIMINACIØN 0ARA ELIMINAR UN ELEMENTO 8 DE UN ARREGLO UNIDIMENSIONAL 6 DES ORDENADO SE DEBE VERIlCAR QUE 8 SE ENCUENTRE EN EL ARREGLO 3I SE CUMPLE ESTA CONDICIØN ENTONCES SE PROCEDERÈ A RECORRER TODOS LOS ELEMENTOS QUE ESTÈN A SU DERECHA UNA POSICIØN A LA IZQUIERDA DISMINUYENDO EN UNO EL NÞMERO DE COMPO NENTES DEL ARREGLO ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE ELIMINACIØN EN ARREGLOS DESORDE NADOS #ABE DESTACAR QUE LA OPERACIØN DE BÞSQUEDA PRESENTADA EN EL ALGORITMO SE USA PARA DETERMINAR SI EL ELEMENTO 8 SE ENCUENTRA EN EL ARREGLO 0ARA EL CASO DE QUE LA RESPUESTA SEA POSITIVA SE OBTIENE TAMBIÏN LA POSICIØN EN QUE SE ENCUENTRA #ON EL PROPØSITO DE OFRECER MAYOR CLARIDAD EN LA SOLUCIØN DE ESTE PRO BLEMA SE INCLUYE DENTRO DEL ALGORITMO DE ELIMINACIØN EL ALGORITMO DE BÞSQUEDA SECUENCIAL EN ARREGLOS DESORDENADOS

!LGORITMO %LIMINA?DESORDENADO %LIMINA?DESORDENADO 6 . 8 [%L ALGORITMO ELIMINA UN ELEMENTO EN UN ARREGLO UNIDIMENSIONAL DESORDENADO 6 ES UN ARREGLO DE ELEMENTOS . ES EL NÞMERO ACTUAL DE ELEMENTOS 8 ES EL VALOR A ELIMINAR] [) Y + SON VARIABLES DE TIPO ENTERO] (ACER ) ← -IENTRAS ) ≤ . Y 8 ≠ 6;)= 2EPETIR (ACER ) ← ) [&IN DEL CICLO DEL PASO ] 3I ) . [.O SE ENCONTRØ EL VALOR BUSCADO] ENTONCES %SCRIBIR h%L VALOR 8 NO SE ENCUENTRA EN EL ARREGLOv SI NO 2EPETIR CON + DESDE ) HASTA . (ACER 6;+= ← 6;+ = [&IN DEL CICLO DEL PASO ] (ACER . ← . [&IN DEL CONDICIONAL DEL PASO ]

,UEGO DE LA ELIMINACIØN EL ARREGLO UNIDIMENSIONAL 6 QUEDA COMO SE MUESTRA EN LA lGURA B


"33&(-04

13

&)'52! A )NSERCIØN EN ARREGLOS DESORDENADOS

A

-ODIlCACIØN 0ARA MODIlCAR UN ELEMENTO 8 DE UN ARREGLO UNIDIMENSIONAL 6 DESORDENADO SE DEBE VERIlCAR QUE 8 SE ENCUENTRE EN EL ARREGLO 3I SE CUMPLE ESTA CONDICIØN ENTONCES SE PROCEDERÈ A SU ACTUALIZACIØN ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE MODIlCACIØN EN ARREGLOS DESOR DENADOS EN EL CUAL SE INCLUYE LA BÞSQUEDA SECUENCIAL

!LGORITMO -ODIlCA?DESORDENADO -ODIlCA?DESORDENADO 6 . 8 9 [%L ALGORITMO MODIlCA UN ELEMENTO DE UN ARREGLO UNIDIMENSIONAL DESORDENADO 6 ES UN ARREGLO DE MÈXIMO ELEMENTOS . ES EL NÞMERO ACTUAL DE ELEMENTOS 8 ES EL ELEMENTO A MODIlCAR POR EL ELEMENTO 9] [) ES UNA VARIABLE DE TIPO ENTERO] (ACER ) ← -IENTRAS ) ≤ . Y 8 ≠ 6;)= 2EPETIR (ACER ) ← ) [&IN DEL CICLO DEL PASO ] 3I ) . [.O SE ENCONTRØ EL VALOR BUSCADO] ENTONCES %SCRIBIR h%L VALOR 8 NO SE ENCUENTRA EN EL ARREGLOv SI NO (ACER 6;)= ← 9 [&IN DEL CONDICIONAL DEL PASO ]

,UEGO DE LA MODIlCACIØN EL ARREGLO UNIDIMENSIONAL 6 QUEDA COMO SE MUESTRA EN LA lGURA C &)'52! B %LIMINACIØN EN ARREGLOS DESORDENADOS


14

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! C -ODIlCACIØN EN ARREGLOS DESORDENADOS

L®Ê ÀÀi} ÃÊ À`i >` à #ONSIDERE EL ARREGLO UNIDIMENSIONAL ORDENADO 6 DE ELEMENTOS DE LA lGURA ,OS PRIMEROS . COMPONENTES DEL MISMO TIENEN ASIGNADO UN VALOR %N ESTE CASO SE TRABAJARÈ CON UN ARREGLO ORDENADO DE MANERA CRECIENTE ES DECIR 6; = ≤ 6; = ≤ 6; = ≤ ≤ 6;.= #UANDO SE TRABAJA CON ARREGLOS ORDENADOS SE DEBE EVITAR ALTERAR EL ORDEN AL INSERTAR NUEVOS ELEMENTOS O AL MODIlCAR LOS EXISTENTES B

)NSERCIØN 0ARA INSERTAR UN ELEMENTO 8 EN UN ARREGLO UNIDIMENSIONAL 6 ORDENADO PRIMERO SE DEBE VERIlCAR QUE EXISTA ESPACIO ,UEGO SE ENCONTRARÈ LA POSICIØN EN LA QUE DEBERÓA ESTAR EL NUEVO VALOR PARA NO ALTERAR EL ORDEN DEL ARREGLO #UANDO SE DETECTE LA POSICIØN SE PROCEDERÈ A RECORRER TODOS LOS ELEMENTOS DESDE AHÓ HASTA LA . ÏSIMA POSICIØN UN LUGAR A LA DERECHA &INALMENTE SE ASIGNARÈ EL VALOR DE 8 EN LA POSICIØN ENCONTRADA #ABE DESTACAR QUE EL DESPLAZAMIENTO NO SE LLEVA A CABO CUANDO EL VALOR A INSERTAR ES MAYOR QUE EL ÞLTIMO ELEMENTO DEL ARREGLO 'ENERALMENTE CUANDO SE QUIERE HACER UNA INSERCIØN SE DEBE VERIlCAR QUE EL ELEMENTO NO SE ENCUENTRE EN EL ARREGLO %N LA MAYORÓA DE LOS CASOS PRÈCTICOS NO INTERESA TENER INFORMACIØN DUPLICADA POR TANTO SI EL VALOR QUE SE DESEA INSERTAR YA ESTUVIERA EN EL ARREGLO LA OPERACIØN NO SE LLEVARÈ A CABO

!NTES DE PRESENTAR EL ALGORITMO DE INSERCIØN SE DElNIRÈ UNA FUNCIØN DE BÞSQUEDA AUXILIAR PARA ARREGLOS ORDENADOS QUE SE UTILIZARÈ TANTO EN EL PROCESO DE INSERCIØN COMO EN EL DE ELIMINACIØN %STA FUNCIØN ES UNA VARIANTE DE LA PRESENTADA EN EL ALGORITMO Y DA COMO RESULTADO LA POSICIØN EN LA QUE ENCONTRØ AL ELEMENTO 8 O EL NEGATIVO DE LA POSICIØN EN LA QUE DEBERÓA ESTAR 0ARA MAYOR INFORMACIØN SOBRE ALGORITMOS DE BÞSQUEDA CONSULTE EL CAPÓTULO !LGORITMO "USCA?SECUENCIAL?ORDENADO "USCA?SECUENCIAL?ORDENADO 6 . 8 0/3 [%L ALGORITMO BUSCA UN ELEMENTO 8 EN UN ARREGLO UNIDIMENSIONAL 6 DE . ELEMENTOS QUE SE ENCUENTRA ORDENADO CRECIENTEMENTE 0/3 INDICA LA POSICIØN DE 8 EN 6 O LA POSICIØN EN LA QUE ESTARÓA 8] [) ES UNA VARIABLE DE TIPO ENTERO] (ACER ) ← -IENTRAS ) ≤ . Y 6;)= 8 2EPETIR (ACER ) ← )


"33&(-04

15

&)'52! !CTUALIZACIØN DE ARREGLOS ORDENADOS

[&IN DEL CICLO DEL PASO ] 3I ) . O 6;)= 8 ENTONCES (ACER 0/3 ← ) SI NO (ACER 0/3 ← ) [&IN DEL CONDICIONAL DEL PASO ]

! CONTINUACIØN SE PRESENTA EL ALGORITMO DE INSERCIØN EN UN ARREGLO UNIDIMENSIONAL QUE SE ENCUENTRA ORDENADO EN FORMA CRECIENTE !LGORITMO )NSERTA?ORDENADO )NSERTA?ORDENADO 6 . 9 [%STE ALGORITMO INSERTA UN ELEMENTO 9 EN UN ARREGLO UNIDIMENSIONAL QUE SE ENCUENTRA ORDENADO DE FORMA CRECIENTE ,A CAPACIDAD MÈXIMA DEL ARREGLO ES DE ELEMENTOS . INDICA EL NÞMERO ACTUAL DE ELEMENTOS DE 6] [0/3 E ) SON VARIABLES DE TIPO ENTERO] 3I . ENTONCES ,LAMAR AL ALGORITMO "USCA?SECUENCIAL?ORDENADO CON 6 . 9 Y 0/3 3I 0/3 [%L ELEMENTO FUE ENCONTRADO EN EL ARREGLO] ENTONCES %SCRIBIR h%L ELEMENTO YA EXISTEv SI NO (ACER . ← . Y 0/3 ← 0/3 2EPETIR CON ) DESDE . HASTA 0/3 (ACER 6;)= ← 6;) = [&IN DEL CICLO DEL PASO ] (ACER 6;0/3= ← 9 [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h.O HAY ESPACIO EN EL ARREGLOv [&IN DEL CONDICIONAL DEL PASO ]


16

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! A )NSERCIØN EN ARREGLOS ORDENADOS

,UEGO DE LA INSERCIØN EL ARREGLO QUEDA COMO SE MUESTRA EN LA lGURA A B

%LIMINACIØN 0ARA ELIMINAR UN ELEMENTO 8 DE UN ARREGLO UNIDIMENSIONAL ORDE NADO 6 SE DEBE BUSCAR LA POSICIØN DEL ELEMENTO A ELIMINAR 3I EL RESULTADO DE LA FUNCIØN ES UN VALOR POSITIVO SIGNIlCA QUE EL ELEMENTO SE ENCUENTRA EN EL ARREGLO Y POR TANTO SE PUEDE ELIMINAR EN CASO CONTRARIO NO SE PUEDE REALIZAR LA OPERA CIØN DE ELIMINACIØN ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE ELIMINACIØN EN ARREGLOS ORDE NADOS

!LGORITMO %LIMINA?ORDENADO %LIMINA?ORDENADO 6 . 8 [%L ALGORITMO ELIMINA UN ELEMENTO 8 DE UN ARREGLO UNIDIMENSIONAL 6 DE . ELEMENTOS QUE SE ENCUENTRA ORDENADO EN FORMA CRECIENTE] [0/3 E ) SON VARIABLES DE TIPO ENTERO] 3I . ENTONCES ,LAMAR AL ALGORITMO "USCA?SECUENCIAL?ORDENADO CON 6 . 8 Y 0/3 3I 0/3 [.O SE PUEDE ELIMINAR PORQUE 8 NO EXISTE] ENTONCES %SCRIBIR h%L ELEMENTO NO EXISTEv SI NO (ACER . ← . n 2EPETIR CON ) DESDE 0/3 HASTA . (ACER 6;)= ← 6;) = [&IN DEL CICLO DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h%L ARREGLO ESTÈ VACÓOv [&IN DEL CONDICIONAL DEL PASO ]

,UEGO DE LA ELIMINACIØN EL ARREGLO QUEDA COMO SE MUESTRA EN LA lGURA B B

-ODIlCACIØN %STA OPERACIØN CONSISTE EN REEMPLAZAR UN COMPONENTE DEL ARREGLO CON OTRO VALOR 0ARA ELLO PRIMERO SE BUSCARÈ EL ELEMENTO EN EL ARREGLO 3I SE ENCUENTRA ANTES DE REALIZAR EL CAMBIO SE DEBE VERIlCAR QUE EL ORDEN DEL ARREGLO NO SE ALTERE 3I ESTO LLEGARA A SUCEDER ENTONCES ES NECESARIO REALIZAR DOS OPERA


"33&(-04

17

&)'52! B %LIMINACIØN EN ARREGLOS ORDENADOS

CIONES PRIMERO SE DEBE ELIMINAR EL ELEMENTO QUE SE QUIERE MODIlCAR Y LUEGO INSERTAR EN LA POSICIØN CORRESPONDIENTE EL NUEVO VALOR #OMO CONSECUENCIA DE QUE LAS OPERACIONES QUE SE NECESITAN PARA REALIZAR UNA MODIlCACIØN YA HAN SIDO PRESENTADAS SE DEJA COMO TAREA LA CONSTRUCCIØN DEL ALGORITMO DE MODIlCACIØN EN ARREGLOS ORDENADOS (ASTA EL MOMENTO SE HA ANALIZADO CØMO DECLARAR ARREGLOS Y CØMO USARLOS !HORA SE PUEDE DAR SOLUCIØN AL PROBLEMA DEL EJEMPLO MEDIANTE ESTE TIPO DE ESTRUCTURA DE DATOS !LGORITMO #ON?ARREGLOS

#ON?ARREGLOS #!, [%STE ALGORITMO RESUELVE EL PROBLEMA DEL EJEMPLO AL APLICAR ARREGLOS UNIDIMENSIONALES #!, ES UN ARREGLO DE ELEMENTOS DE NÞMEROS REALES] [!# ) Y #/.4 SON VARIABLES DE TIPO ENTERO 02/- ES UNA VARIABLE DE TIPO REAL] (ACER !# ← 2EPETIR CON ) DESDE HASTA ,EER #!,;)= (ACER !# ← !# #!,;)= E ) ← ) [&IN DEL CICLO DEL PASO ] (ACER 02/- ← !# Y #/.4 ← 2EPETIR CON ) DESDE HASTA 3I #!,;)= 02/- ENTONCES (ACER #/.4 ← #/.4 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] %SCRIBIR #/.4

²STA ES UNA SOLUCIØN MÈS ElCIENTE QUE LAS QUE SE PRESENTARON EN LOS ALGORITMOS Y 3E REALIZA UNA LECTURA DE LOS DATOS Y ADEMÈS SE DElNE UNA VARIABLE PARA ALMACENAR LAS CALIlCACIONES !L UTILIZAR UN ARREGLO PUEDE DISPONERSE DE LOS DATOS TANTAS VECES COMO SEA NECESARIO SIN QUE SE DEBA VOLVER A LEERLOS YA QUE ÏSTOS PERMANECEN EN MEMORIA !DEMÈS SE FACI LITA EL PROCESAMIENTO DE LOS DATOS AL GENERALIZAR CIERTAS OPERACIONES ,OS ARREGLOS PRESENTADOS HASTA EL MOMENTO SE DENOMINAN ARREGLOS UNIDIMENSIO NALES O LINEALES DEBIDO A QUE CUALQUIER ELEMENTO SE REFERENCIA SOLAMENTE CON UN ÓNDICE


18

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 3IN EMBARGO ES IMPORTANTE DESTACAR QUE PARA LA MAYORÓA DE LOS LENGUAJES DE PROGRAMA CIØN SE PUEDEN DElNIR ARREGLOS MULTIDIMENSIONALES ES DECIR ARREGLOS CON MÞLTIPLES ÓN DICES %L NÞMERO DE DIMENSIONES ÓNDICES DEPENDE TANTO DEL PROBLEMA QUE SE QUIERA RESOLVER COMO DEL LENGUAJE UTILIZADO 3E ANALIZARÈN PRIMERO LOS ARREGLOS BIDIMENSIONALES QUE REPRESENTAN UN CASO ESPE CIAL DE LOS MULTIDIMENSIONALES POR SER LOS MÈS AMPLIAMENTE UTILIZADOS

!22%',/3 ")$)-%.3)/.!,%3 0ARA QUE EL LECTOR ENTIENDA MEJOR LA ESTRUCTURA DE LOS ARREGLOS BIDIMENSIONALES SE PRE SENTA EL SIGUIENTE EJEMPLO

%JEMPLO

,A TABLA CONTIENE LOS COSTOS DE PRODUCCIØN DE CADA DEPARTAMENTO DE UNA FÈBRICA CORRESPONDIENTES A LOS MESES DEL A×O ANTERIOR ,A TABLA SE INTERPRETA DE LA SIGUIENTE MANERA DADO UN MES SE CONOCEN LOS COSTOS DE PRODUCCIØN DE CADA UNO DE LOS DEPARTAMENTOS DE LA FÈBRICA Y DADO UN DEPARTAMENTO SE CONOCEN LOS COSTOS DE PRODUCCIØN MENSUALES 3I SE QUISIERA ALMACENAR ESTA INFORMACIØN UTILIZANDO LOS ARREGLOS UNIDIMENSIONALES SE TENDRÓAN DOS ALTERNATIVAS $ElNIR ARREGLOS DE TRES ELEMENTOS CADA UNO %N ESTE CASO CADA ARREGLO ALMACE NARÈ LA INFORMACIØN RELATIVA A UN MES

4!",!

-ESES $EPTOS

#OSTOS MENSUALES POR DEPARTAMENTOS

&)'52! !LMACENAMIENTO DE LA INFORMACIØN POR MES

$ULCES

#ONSERVAS

"EBIDAS

%NERO

&EBRERO

-ARZO

!BRIL

-AYO

*UNIO

*ULIO

!GOSTO

3EPTIEMBRE

/CTUBRE

.OVIEMBRE

$ICIEMBRE


"33&(-04 #*%*.&/4*0/"-&4

19

&)'52! !LMACENAMIENTO DE LA INFORMACIØN POR DEPARTAMENTO

$ElNIR TRES ARREGLOS DE ELEMENTOS CADA UNO $E ESTA FORMA CADA ARREGLO ALMA CENARÈ LA INFORMACIØN RELATIVA A UN DEPARTAMENTO A LO LARGO DEL A×O 3IN EMBARGO NO RESULTA MUY PRÈCTICO ADOPTAR ALGUNA DE LAS DOS ALTERNATIVAS 3E NE CESITA UNA ESTRUCTURA QUE PERMITA MANEJAR LOS DATOS CONSIDERANDO LOS MESES RENGLONES DE LA TABLA Y LOS DEPARTAMENTOS COLUMNAS DE LA TABLA ES DECIR UNA ESTRUCTURA QUE TRATE A LA INFORMACIØN COMO UN TODO ,A ESTRUCTURA QUE TIENE ESTA CARACTERÓSTICA SE DENOMINA ARREGLO BIDIMENSIONAL 5N ARREGLO BIDIMENSIONAL ES UNA COLECCIØN HOMOGÏNEA lNITA Y ORDENADA DE DA TOS EN LA QUE SE HACE REFERENCIA A CADA COMPONENTE DEL ARREGLO POR MEDIO DE DOS ÓNDI CES %L PRIMERO SE UTILIZA PARA INDICAR EL RENGLØN Y EL SEGUNDO PARA SE×ALAR LA COLUMNA 5N ARREGLO BIDIMENSIONAL TAMBIÏN SE PUEDE DElNIR COMO UN ARREGLO DE ARREGLOS %N LA lGURA SE PRESENTA UN ARREGLO DE TIPO BIDIMENSIONAL %L ARREGLO ! - . TIENE - RENGLONES Y . COLUMNAS 5N ELEMENTO !;) *= SE LO CALIZA EN EL RENGLØN ) Y EN LA COLUMNA * )NTERNAMENTE EN MEMORIA SE RESERVAN - . POSICIONES CONSECUTIVAS PARA ALMACENAR TODOS LOS ELEMENTOS DEL ARREGLO

$ECLARACIØN DE ARREGLOS BIDIMENSIONALES ,OS ARREGLOS BIDIMENSIONALES SE DECLARAN CUANDO SE ESPECIlCAN EL NÞMERO DE RENGLONES Y EL NÞMERO DE COLUMNAS JUNTO CON EL TIPO DE DATO DE LOS COMPONENTES ID?ARREGLO !22%',/ ;LÓMINFR LÓMSUPR LÓMINFC LÓMSUPC= $% TIPO #ON LÓMINFR Y LÓMSUPR SE DECLARA EL TIPO DE DATO DEL ÓNDICE DE LOS RENGLONES Y CUÈNTOS RENGLONES TENDRÈ EL ARREGLO !SIMISMO CON LÓMINFC Y LÓMSUPC SE DECLARA EL TIPO


20

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! 2EPRESENTACIØN DE UN ARREGLO BIDIMENSIONAL

DE DATO DEL ÓNDICE DE LAS COLUMNAS Y CUÈNTAS COLUMNAS TENDRÈ EL ARREGLO #ON TIPO SE DECLARA EL TIPO DE DATOS DE TODOS LOS COMPONENTES DEL ARREGLO %L NÞMERO TOTAL DE COMPONENTES .4# DE UN ARREGLO BIDIMENSIONAL ESTÈ DETERMI NADO POR LA EXPRESIØN

.4# LÓMSUPR LÓMINFR LÓMSUPC LÓMINFC

▼ &ØRMULA

!L IGUAL QUE EN EL CASO DE LOS ARREGLOS UNIDIMENSIONALES LOS ÓNDICES PUEDEN SER CUALQUIER TIPO DE DATO ORDINAL ESCALAR ENTERO CARÈCTER MIENTRAS QUE LOS COMPONENTES PUEDEN SER DE CUALQUIER TIPO REALES ENTEROS CADENAS DE CARACTERES ETC ! CONTINUA CIØN SE ANALIZAN ALGUNOS EJEMPLOS DE ARREGLOS BIDIMENSIONALES

%JEMPLO

&)'52!

3EA -!42): UN ARREGLO BIDIMENSIONAL DE NÞMEROS REALES CON ÓNDICES ENTEROS 3U REPRE SENTACIØN SE MUESTRA EN LA lGURA


"33&(-04 #*%*.&/4*0/"-&4

21

-!42): !22%',/; = $% REALES ◗ ◗

.4# #ADA COMPONENTE DE -!42): SERÈ UN NÞMERO REAL 0ARA HACER REFERENCIA A CADA UNO DE ELLOS SE USARÈN DOS ÓNDICES Y EL NOMBRE DE LA VARIABLE TIPO ARREGLO -!42):;I J= $ONDE ≤ I ≤ ≤ J ≤

%JEMPLO

3EA #/34/3 UN ARREGLO BIDIMENSIONAL DE NÞMEROS REALES CON ÓNDICES DE TIPO ESCALAR 3U REPRESENTACIØN SE MUESTRA EN LA lGURA MESES ENE FEB MAR ABR MAY JUN JUL AGO SET OCT NOV DIC DEPARTAMENTOS DULCES CONSERVAS BEBIDAS #/34/3 !22%',/;MESES DEPARTAMENTOS= $% REALES ◗

.4# ORD DIC ORD ENE ORD BEBIDAS ORD DULCES

#ADA COMPONENTE DE #/34/3 SERÈ UN REAL 0ARA HACER REFERENCIA A CADA UNO DE ELLOS USAREMOS DOS ÓNDICES Y EL NOMBRE DE LA VARIABLE TIPO ARREGLO #/34/3;I J= $ONDE ENE ≤ I ≤ DIC DULCES ≤ J ≤ BEBIDAS

%JEMPLO

3EA -!4 UN ARREGLO BIDIMENSIONAL DE CADENAS DE CARACTERES CON ÓNDICES PARA LOS REN GLONES DE TIPO CARÈCTER Y PARA LAS COLUMNAS DE TIPO ENTERO 3U REPRESENTACIØN SE MUESTRA EN LA lGURA -!4 !22%',/;@A @Z = $% CADENA DE CARACTERES

&)'52!


22

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52!

.4# ORD @Z ORD @A

#ADA COMPONENTE DE -!4 SERÈ UN VALOR DE TIPO CADENA DE CARACTERES 0ARA HACER REFERENCIA A CADA UNO DE ELLOS SE USARÈN DOS ÓNDICES Y EL NOMBRE DE LA VARIABLE TIPO ARREGLO -!4;I J= $ONDE @A ≤ I ≤ @Z ≤ J ≤

%JEMPLO

3EA ,%42!3 UN ARREGLO BIDIMENSIONAL DE CARACTERES CON ÓNDICES ENTEROS 3U REPRESEN TACIØN SE MUESTRA EN LA lGURA ,%42!3 !22%',/ ; = $% CARACTERES ◗ ◗

.4# n n #ADA COMPONENTE DE ,%42!3 SERÈ UN VALOR TIPO CARÈCTER 0ARA HACER REFERENCIA A CADA UNO DE ELLOS SE USARÈN DOS ÓNDICES Y EL NOMBRE DE LA VARIABLE TIPO ARREGLO ,%42!3;I J= $ONDE ≤ I ≤ ≤ J ≤

&)'52!


"33&(-04 #*%*.&/4*0/"-&4

23

/PERACIONES CON ARREGLOS BIDIMENSIONALES ,AS OPERACIONES QUE SE PUEDEN REALIZAR CON ARREGLOS BIDIMENSIONALES SON ◗ ◗ ◗ ◗ ◗

,ECTURA %SCRITURA !SIGNACIØN !CTUALIZACIØN )NSERCIØN %LIMINACIØN -ODIlCACIØN /RDENACIØN "ÞSQUEDA

,OS ARREGLOS BIDIMENSIONALES SE CONSIDERAN UNA GENERALIZACIØN DE LOS UNIDIMEN SIONALES POR LO QUE SE PRESENTARÈ UNA REVISIØN RÈPIDA DE ALGUNAS DE LAS OPERACIONES MENCIONADAS 0ARA ILUSTRARLAS SE UTILIZARÈN LOS EJEMPLOS ANTERIORES

,ECTURA #UANDO SE PRESENTØ LA OPERACIØN DE LECTURA EN ARREGLOS UNIDIMENSIONALES SE MENCIONØ QUE CON LA AYUDA DE UN CICLO SE IBAN LEYENDO Y ASIGNANDO VALORES A CADA UNO DE LOS COM PONENTES ,O MISMO SUCEDE CON LOS ARREGLOS BIDIMENSIONALES 3IN EMBARGO COMO SUS ELEMENTOS DEBEN INDICARSE POR MEDIO DE DOS ÓNDICES NORMALMENTE SE USAN DOS CICLOS PARA LOGRAR LA LECTURA DE ELEMENTOS CONSECUTIVOS 3UPONGAMOS POR EJEMPLO QUE SE DESEA LEER TODOS LOS ELEMENTOS DEL ARREGLO BIDI MENSIONAL -!42): ,OS PASOS A SEGUIR SON 2EPETIR CON ) DESDE HASTA 2EPETIR CON * DESDE HASTA ,EER -!42):;) *= !L VARIAR LOS ÓNDICES DE ) Y * CADA ELEMENTO DE -!42): QUE SE LEE SE ASIGNA AL LUGAR QUE LE CORRESPONDE EN EL ARREGLO SEGÞN LA POSICIØN DE LOS ÓNDICES ) Y * 0ARA ) Y * SE LEE EL ELEMENTO DEL RENGLØN Y COLUMNA ) Y * SE LEE EL ELEMENTO DEL RENGLØN Y COLUMNA ) Y * SE LEE EL ELEMENTO DEL RENGLØN Y COLUMNA

%SCRITURA ,A ESCRITURA DE UN ARREGLO BIDIMENSIONAL TAMBIÏN SE LLEVA A CABO ELEMENTO TRAS ELEMEN TO 3UPONGAMOS QUE SE QUIERA ESCRIBIR TODOS LOS COMPONENTES DEL ARREGLO -!42): ,OS PASOS A SEGUIR SON 2EPETIR CON ) DESDE HASTA 2EPETIR CON * DESDE HASTA %SCRIBIR -!42):;) *= !L VARIAR LOS VALORES DE ) Y * SE ESCRIBE EL ELEMENTO DE -!42): CORRESPONDIENTE A LA POSICIØN INDICADA JUSTAMENTE POR LOS ÓNDICES ) Y *


24

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 0ARA ) Y * SE ESCRIBE EL ELEMENTO DEL RENGLØN Y COLUMNA ) Y * SE ESCRIBE EL ELEMENTO DEL RENGLØN Y COLUMNA ) Y * SE ESCRIBE EL ELEMENTO DEL RENGLØN Y COLUMNA

!SIGNACIØN ,A ASIGNACIØN DE VALORES A UN ARREGLO BIDIMENSIONAL SE REALIZA DE DIFERENTES FORMAS ,A FORMA DEPENDE DEL NÞMERO DE COMPONENTES INVOLUCRADOS /BSERVEMOS A CONTINUACIØN DOS ALTERNATIVAS DIFERENTES 3E ASIGNAN VALORES A TODOS LOS ELEMENTOS DEL ARREGLO EN ESTE CASO SE NECESITARÈN DOS CICLOS PARA RECORRER TODO EL ARREGLO 2EPETIR CON ) DESDE HASTA 2EPETIR CON * DESDE HASTA -!42):;) *= ← !L VARIAR LOS VALORES DE ) Y * SE ASIGNA EL AL ELEMENTO DE -!42): CORRESPONDIENTE A LA POSICIØN INDICADA POR LOS ÓNDICES ) Y * 0ARA ) Y * SE ASIGNA EL VALOR AL ELEMENTO DEL RENGLØN Y COLUMNA ) Y * SE ASIGNA EL VALOR AL ELEMENTO DEL RENGLØN Y COLUMNA ) Y * SE ASIGNA EL VALOR AL ELEMENTO DEL RENGLØN Y COLUMNA %N LA lGURA SE PRESENTA CØMO QUEDA EL ARREGLO BIDIMENSIONAL CUANDO SE ASIGNA EL VALOR A CADA UNA DE LAS CASILLAS 3E ASIGNA UN VALOR A UN ELEMENTO EN PARTICULAR DEL ARREGLO EN ESTE CASO LA ASIGNA CIØN ES DIRECTA Y SE DEBE INDICAR EL RENGLØN Y LA COLUMNA DEL COMPONENTE INVOLUCRA DO 0OR EJEMPLO PARA ASIGNAR EL VALOR AL ELEMENTO DEL RENGLØN Y COLUMNA SE PROCEDE DE LA SIGUIENTE MANERA

&)'52! !SIGNACIØN DE ARREGLOS


"33&(-04 %& .ร 4 %& %04 %*.&/4*0/&4

25

&)'52! !SIGNACIร N DE ARREGLOS

-!42):; = โ %L ARREGLO SE MUESTRA EN LA lGURA %S IMPORTANTE ACLARAR QUE LAS OPERACIONES DE LECTURA ESCRITURA Y ASIGNACIร N A TODOS LOS ELEMENTOS DE UN ARREGLO BIDIMENSIONAL SE PUEDEN HACER TANTO POR RENGLONES COMO POR COLUMNAS

!22%',/3 $% -ยญ3 $% $/3 $)-%.3)/.%3 5N ARREGLO MULTIDIMENSIONAL ย . DIMENSIONESย SE DElNE COMO UNA COLECCIร N lNITA HOMOGร NEA Y ORDENADA DE + ยง + ยง ยง +. ELEMENTOS 0ARA HACER REFERENCIA A CADA COMPONENTE DE UN ARREGLO DE . DIMENSIONES SE USARร N . ร NDICES UNO PARA CADA DIMEN SIร N %L ARREGLO ! DE . DIMENSIONES SE DECLARA DE LA SIGUIENTE MANERA ! !22%',/;,) ,3 ,) ,3 ,). ,3.= $% TIPO %L TOTAL DE COMPONENTES DE ! SERร

.4# ,3 n ,) ,3 ,) ,3. ,).

โ ผ &ร RMULA

0OR EJEMPLO EL ARREGLO TRIDIMENSIONAL !;L = TENDRร ELEMENTOS 'Rร lCAMENTE EL ARREGLO ! SE PUEDE REPRESENTAR COMO SE MUESTRA EN LAS lGURAS Y ! CONTINUACIร N SE PRESENTA UN EJEMPLO DE UN ARREGLO TRIDIMENSIONAL


26

>ยซย ร ร ย ย ร ยฃร ร ร &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52! 2EPRESENTACIร N DE ARREGLOS DE Mร S DE DOS DIMENSIONES

%JEMPLO

5NA EMPRESA LLEVA UN REGISTRO DEL TOTAL PRODUCIDO MENSUALMENTE POR CADA DEPARTAMEN TO ,A EMPRESA CONSTA DE CINCO DEPARTAMENTOS Y LA INFORMACIร N SE HA REGISTRADO A LO LAR GO DE LOS ร LTIMOS CUATRO Aร OS 0ARA ALMACENAR LOS DATOS DE LA PRODUCCIร N DE LA EMPRESA SE REQUIERE ENTONCES DE UN ARREGLO DE TRES DIMENSIONES ยง ยง ELEMENTOS COMO EL DE LA lGURA ! !22%',/ ; = $% REALES 3UPONGAMOS QUE LA EMPRESA NECESITA OBTENER LA SIGUIENTE INFORMACIร N A %L TOTAL MENSUAL DE CADA DEPARTAMENTO DURANTE EL SEGUNDO Aร O 0ARA OBTENER LA INFORMACIร N SOLICITADA SE DEBEN REALIZAR LOS SIGUIENTES PASOS 2EPETIR CON ) DESDE HASTA 2EPETIR CON * DESDE HASTA %SCRIBIR !;) * = /BSERVE QUE PARA ESTE CASO SE ASIGNA LA CONSTANTE AL TERCER ร NDICE ย EL DE LOS Aร OSย Y SE HACE VARIAR A LOS OTROS DOS ร NDICES $E ESTA MANERA SE ESCRIBIRร N LAS PRODUC CIONES MENSUALES B %L TOTAL DE LA PRODUCCIร N DURANTE EL PRIMER Aร O 0ARA OBTENER LA INFORMACIร N SOLICI TADA SE DEBEN REALIZAR LOS SIGUIENTES PASOS

&)'52! 2EPRESENTACIร N DE ARREGLOS DE Mร S DE DOS DIMENSIONES


-" $-"4& ,, "

27

&)'52!

(ACER 35-! ← 2EPETIR CON ) DESDE HASTA 2EPETIR CON * DESDE HASTA (ACER 35-! ← 35-! !;) * = %SCRIBIR 35-! /BSERVE QUE ESTE CASO ES SIMILAR AL ANTERIOR ,A DIFERENCIA RADICA EN QUE LAS CANTIDA DES MENSUALES NO SE ESCRIBIRÈN SINO QUE SE ACUMULARÈN OBTENIENDO EL TOTAL ANUAL C %L TOTAL DE LA PRODUCCIØN DEL DEPARTAMENTO A LO LARGO DEL ÞLTIMO A×O 0ARA OBTENER LA INFORMACIØN SOLICITADA SERÈ NECESARIO EJECUTAR LOS SIGUIENTES PASOS (ACER 35-! ← 2EPETIR CON * DESDE HASTA (ACER 35-! ← 35-! !; * = %SCRIBIR 35-! .OTE QUE EN ESTE CASO SE TIENEN DOS ÓNDICES CONSTANTES EL DE DEPARTAMENTOS Y EL DE A×OS Y SE HACE VARIAR SOLAMENTE EL ÓNDICE DE MESES #ONCLUIDO EL CICLO SE ESCRIBIRÈ EL TOTAL PRODUCIDO POR EL DEPARTAMENTO DURANTE EL CUARTO A×O

,! #,!3% !22%',/ 0ARA ENTENDER LA CLASE ARREGLO SE REQUIERE PRIMERO CONOCER ALGUNOS CONCEPTOS BÈSICOS RELACIONADOS CON EL PARADIGMA DE LA PROGRAMACIØN ORIENTADA A OBJETOS 0// 5NA CLASE DElNE A UN OBJETO POR MEDIO DE LA DESCRIPCIØN DE SUS DATOS CONOCIDOS COMO ATRIBUTOS Y DE SU COMPORTAMIENTO REPRESENTADO POR MÏTODOS 3E DICE QUE LOS ATRIBUTOS Y LOS MÏTODOS SON MIEMBROS DE LA CLASE 5NA CLASE PUEDE REPRESENTAR A LOS ALUMNOS DE UNA ESCUELA %N ESTE CASO LOS DATOS SON LOS ATRIBUTOS QUE CARACTERIZAN A UN ALUMNO POR EJEMPLO NOMBRE FECHA DE NACI MIENTO DIRECCIØN TELÏFONO ETCÏTERA MIENTRAS QUE EL COMPORTAMIENTO HACE REFERENCIA A LAS OPERACIONES QUE PUEDEN REALIZARSE SOBRE ESOS DATOS POR EJEMPLO CAMBIAR DIRECCIØN O TELÏFONO DEL ALUMNO ,A PROGRAMACIØN ORIENTADA A OBJETOS TIENE CUATRO PROPIEDADES !BSTRACCIØN %NCAPSULAMIENTO U OCULTAMIENTO DE LA INFORMACIØN


28

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 (ERENCIA 0OLIMORlSMO ,A ABSTRACCIØN PERMITE CONCENTRARSE EN LOS DATOS Y OPERACIONES QUE DElNEN A UN CONJUNTO DE OBJETOS IGNORANDO LOS ELEMENTOS QUE NO SON RELEVANTES ,A SEGUNDA PRO PIEDAD ENCAPSULAMIENTO IMPLICA QUE TANTO LOS ATRIBUTOS COMO LOS MÏTODOS FORMAN UN TODO LA CLASE Y PUEDEN OCULTARSE DE LOS CLIENTES DE LA CLASE AL CONTROLAR DE ESTA MANERA EL ACCESO QUE SE TENGA A SUS INTEGRANTES 0OR SU PARTE LA HERENCIA REPRESENTA LA PROPIEDAD QUE PERMITE COMPARTIR ATRIBUTOS Y MÏTODOS ENTRE CLASES 0OR ÞLTIMO EL POLI MORlSMO OFRECE LA FACILIDAD DE QUE CIERTOS MÏTODOS PUEDAN ADOPTAR DISTINTAS FORMAS ,A CLASE !RREGLO TENDRÈ ATRIBUTOS Y MÏTODOS ,OS ATRIBUTOS CONSTITUIRÈN LA COLECCIØN DE ELEMENTOS Y EL TAMA×O ,OS MÏTODOS SERÈN TODAS LAS OPERACIONES ANALIZADAS EN LAS SECCIONES PREVIAS LECTURA INSERCIØN ELIMINACIØN ETCÏTERA 'RÈlCAMENTE LA CLASE !RRE GLO PUEDE VERSE COMO SE MUESTRA EN LA lGURA 5N OBJETO ES UNA INSTANCIA DE UNA CLASE %S DECIR ESTA ÞLTIMA REPRESENTA A UN CON JUNTO DE OBJETOS A UN CONCEPTO GENERAL POR EJEMPLO LOS ALUMNOS DE UNA ESCUELA O LOS ARREGLOS MIENTRAS QUE LOS PRIMEROS SON OCURRENCIAS DE LA CLASE #ONSIDERANDO LA CLASE !RREGLO UN EJEMPLO DE OBJETO SERÈ EL ARREGLO DE CALIlCACIONES DE UN GRUPO DE ALUMNOS %N LOS LENGUAJES DE PROGRAMACIØN ORIENTADA A OBJETOS MÈS CONOCIDOS SE USA LA NO TACIØN DE PUNTOS PARA TENER ACCESO A LOS MIEMBROS NO PRIVADOS DE UN OBJETO OBJETO MIEMBRO $ENTRO DE UN MÏTODO DE UNA CLASE LA REFERENCIA A CUALQUIERA DE SUS OTROS MIEMBROS NO REQUIERE EL USO DE ESTA NOTACIØN !SUMIENDO QUE LA VARIABLE #!,)& ES UN OBJETO DE LA CLASE !RREGLO SE PUEDEN TENER LAS SIGUIENTES INSTRUCCIONES #!,)& 4AMA×O #!,)& 4AMA×O #!,)& $ATOS; = 0ARA EL CASO DE QUE LAS INSTRUCCIONES FUERAN PARTE DE UN MÏTODO SE PUEDE OMITIR EL NOMBRE DEL OBJETO Y EL PUNTO Y USAR DIRECTAMENTE EL ATRIBUTO $ATOS; =

&)'52! #LASE !RREGLO


3&(*45304

29

2%')342/3 $E ACUERDO CON LO ESTUDIADO EN LAS SECCIONES PREVIAS LOS ARREGLOS SON ESTRUCTURAS DE DATOS MUY ÞTILES PARA ALMACENAR UNA COLECCIØN DE DATOS TODOS DEL MISMO TIPO 3IN EM BARGO EN LA PRÈCTICA A VECES SE NECESITAN ESTRUCTURAS QUE PERMITAN ALMACENAR DATOS DE DISTINTOS TIPOS QUE SEAN MANIPULADOS COMO UN ÞNICO DATO 0ARA ILUSTRAR ESTE PROBLEMA SE INCLUYE EL SIGUIENTE EJEMPLO

%JEMPLO

5NA COMPA×ÓA TIENE POR CADA EMPLEADO LA SIGUIENTE INFORMACIØN ◗ ◗ ◗ ◗ ◗

.OMBRE $IRECCIØN %DAD 3EXO !NTIGàEDAD

CADENA DE CARACTERES CADENA DE CARACTERES ENTERO CARÈCTER ENTERO

3I SE QUISIERA ALMACENAR ESTOS DATOS NO SERÓA POSIBLE USAR UN ARREGLO YA QUE SUS COMPONENTES DEBEN SER TODOS DEL MISMO TIPO ,A ESTRUCTURA QUE PUEDE GUARDAR ESTA INFORMACIØN DE MANERA EFECTIVA SE CONOCE COMO REGISTRO O ESTRUCTURA 5N REGISTRO SE DElNE COMO UNA COLECCIØN lNITA Y HETEROGÏNEA DE ELEMENTOS 4AM BIÏN REPRESENTA UN TIPO DE DATO ESTRUCTURADO EN EL QUE CADA UNO DE SUS COMPONENTES SE DENOMINA CAMPO ,OS CAMPOS DE UN REGISTRO PUEDEN SER TODOS DE DIFERENTES TIPOS DE DATOS 0OR TANTO TAMBIÏN PODRÈN SER REGISTROS O ARREGLOS #ADA CAMPO SE IDENTIlCA CON UN NOMBRE ÞNICO EL IDENTIlCADOR DE CAMPO /TRA DIFERENCIA IMPORTANTE CON LOS ARREGLOS ES QUE NO ES NECESARIO ESTABLECER UN ORDEN ENTRE LOS CAMPOS

$ECLARACIØN DE REGISTROS #OMO NO ES LA INTENCIØN DE LOS AUTORES SEGUIR LA SINTAXIS DE ALGÞN LENGUAJE DE PROGRAMA CIØN EN PARTICULAR UN REGISTRO SE DECLARA DE LA SIGUIENTE FORMA IDENT?REGISTRO 2%')342/ ID?CAMPOL TIPOL ID?CAMPO TIPO ID?CAMPON TIPON [&IN DE LA DECLARACIØN DEL REGISTRO ] $ONDE IDENT?REGISTRO ES EL NOMBRE DEL DATO TIPO REGISTRO ID?CAMPOI ES EL NOMBRE DEL CAMPO I ID?CAMPOI ≠ ID?CAMPOJ ∀I J N EI≠J TIPOI ES EL TIPO DEL CAMPO I ,OS QUE SIGUEN SON EJEMPLOS DE DECLARACIONES DE REGISTROS CON SU CORRESPONDIENTE REPRESENTACIØN GRÈlCA


30

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

%JEMPLO

3EA &%#(! UN REGISTRO FORMADO POR TRES CAMPOS NUMÏRICOS 3U REPRESENTACIØN SE MUESTRA EN LA lGURA &%#(! 2%')342/ DÓA MES A×O [&IN DE LA DECLARACIØN DEL REGISTRO &%#(!]

%JEMPLO

3EA $/-)#),)/ UN REGISTRO FORMADO POR CUATRO CAMPOS UNO DE ELLOS ES NUMÏRICO Y LOS TRES RESTANTES DEL TIPO CADENA DE CARACTERES 3U REPRESENTACIØN SE MUESTRA EN LA lGURA $/-)#),)/ 2%')342/ CALLE CADENA?DE?CARACTERES NÞMERO ENTERO CIUDAD CADENA?DE?CARACTERES PAÓS CADENA?DE?CARACTERES [&IN DE LA DECLARACIØN DEL REGISTRO $/-)#),)/]

%JEMPLO

3EA #,)%.4% UN REGISTRO FORMADO POR CUATRO CAMPOS DOS DEL TIPO CADENA DE CARAC TERES UNO DEL TIPO REAL Y EL OTRO DEL TIPO BOOLEANO 3U REPRESENTACIØN SE MUESTRA EN LA lGURA #,)%.4% 2%')342/ NOMBRE CADENA?DE?CARACTERES TELÏFONO CADENA?DE?CARACTERES SALDO REAL MOROSO BOOLEANO [&IN DE LA DECLARACIØN DEL REGISTRO #,)%.4%]

!CCESO A LOS CAMPOS DE UN REGISTRO #OMO UN REGISTRO ES UN TIPO DE DATO ESTRUCTURADO NO SE PUEDE TENER ACCESO A ÏL DIREC TAMENTE COMO UN ÞNICO DATO SINO QUE SE DEBE ESPECIlCAR EL ELEMENTO CAMPO DEL

&)'52!


3&(*45304

31

&)'52!

REGISTRO QUE NOS INTERESA 0ARA ELLO EN LA MAYORÓA DE LOS LENGUAJES SE SIGUE LA SIGUIENTE SINTAXIS VARIABLE?REGISTRO ID?CAMPO $ONDE VARIABLE?REGISTRO ES UNA VARIABLE DE TIPO REGISTRO ID?CAMPO ES EL IDENTIlCADOR DEL CAMPO DESEADO %S DECIR SE USARÈN DOS IDENTIlCADORES PARA HACER REFERENCIA A UN ELEMENTO EL NOM BRE DE LA VARIABLE TIPO REGISTRO Y EL NOMBRE DEL CAMPO SEPARADOS ENTRE SÓ POR UN PUNTO $E ACUERDO CON LOS EJEMPLOS DE REGISTROS Y SE PRESENTAN A CONTINUA CIØN DIFERENTES CASOS QUE ILUSTRAN EL ACCESO A LOS CAMPOS DE UN REGISTRO A 0ARA LEER LOS TRES CAMPOS DE UNA VARIABLE & DE TIPO &%#(! ,EER & DÓA & MES & A×O B 0ARA ESCRIBIR LOS CUATRO CAMPOS DE UNA VARIABLE $ DE TIPO $/-)#),)/ %SCRIBIR $ CALLE $ NÞMERO $ CIUDAD $ PAÓS C 0ARA ASIGNAR VALORES A ALGUNOS DE LOS CAMPOS DE UNA VARIABLE # DE TIPO #,)%.4% # SALDO ← # SALDO CANT # MOROSO ← 6%2$!$%2/ # NOMBRE ← h*UAN 0ÏREZv

&)'52!


32

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 %N GENERAL COMO SE MENCIONØ ANTERIORMENTE EL ORDEN EN EL QUE SE MANEJAN LOS CAMPOS NO ES IMPORTANTE %S DECIR SE PODRÓAN HABER LEÓDO LOS CAMPOS DE LA VARIABLE & DE LA SIGUIENTE MANERA ,EER & A×O & DÓA & MES 3ØLO SE DEBE TENER EN CUENTA QUE LOS DATOS PROPORCIONADOS POR EL USUARIO O ASIGNA DOS EN UN ALGORITMO SE CORRESPONDAN EN TIPO CON LOS CAMPOS

$IFERENCIAS ENTRE REGISTROS Y ARREGLOS ,AS DOS DIFERENCIAS SUSTANCIALES EXISTENTES ENTRE REGISTROS Y ARREGLOS SON 5N ARREGLO PUEDE ALMACENAR . ELEMENTOS DEL MISMO TIPO ESTRUCTURA DE DATOS HOMOGÏNEA MIENTRAS QUE UN REGISTRO PUEDE ALMACENAR . ELEMENTOS DE DIFERENTES TIPOS DE DATOS ESTRUCTURA DE DATOS HETEROGÏNEA ! LOS COMPONENTES DE UN ARREGLO SE TIENE ACCESO POR MEDIO DE ÓNDICES QUE INDICAN LA POSICIØN DEL ELEMENTO CORRESPONDIENTE EN EL ARREGLO MIENTRAS QUE A LOS COMPO NENTES DE UN REGISTRO LOS CAMPOS SE TIENE ACCESO POR MEDIO DE SU NOMBRE QUE ES ÞNICO

#OMBINACIONES ENTRE ARREGLOS Y REGISTROS ,OS REGISTROS TIENEN VARIOS CAMPOS #ADA UNO DE ELLOS PUEDE SER DE CUALQUIER TIPO DE DATOS SIMPLES O ESTRUCTURADOS 3IN EMBARGO LOS COMPONENTES DEL NIVEL MÈS BAJO DE UN TIPO ESTRUCTURADO SIEMPRE DEBEN SER TIPOS SIMPLES DE DATOS $E ACUERDO CON ESTA CONDICIØN SE INlERE QUE UN CAMPO DE UN REGISTRO PUEDE SER OTRO REGISTRO O BIEN UN ARREGLO 0OR OTRA PARTE LOS COMPONENTES DE UN ARREGLO TAMBIÏN PUEDEN SER REGISTROS %STOS CASOS ENUNCIADOS ADEMÈS SE PUEDEN PRESENTAR EN FORMA ANIDADA


3&(*45304

33

!RREGLOS DE REGISTROS %N ESTE CASO CADA ELEMENTO DEL ARREGLO ES UN REGISTRO 4ODOS LOS COMPONENTES DEL ARRE GLO TIENEN QUE SER DEL MISMO TIPO DE REGISTRO YA QUE ES UNA ESTRUCTURA DE DATOS HOMO GÏNEA ! CONTINUACIØN PRESENTAMOS UN EJEMPLO

%JEMPLO

5NA EMPRESA REGISTRA PARA CADA UNO DE SUS CLIENTES LOS SIGUIENTES DATOS ◗ ◗ ◗ ◗

.OMBRE 4ELÏFONO 3ALDO -OROSO

CADENA DE CARACTERES CADENA DE CARACTERES REAL BOOLEANO

3I LA EMPRESA TIENE . CLIENTES NECESITARÈ UN ARREGLO DE . ELEMENTOS EN EL CUAL CADA UNO DE SUS COMPONENTES ES UN REGISTRO COMO EL DESCRITO EN EL EJEMPLO ,A lGURA MUESTRA LA ESTRUCTURA DE DATOS CORRECTA PARA RESOLVER ESTE PROBLEMA ! !22%',/ ; = $% #,)%.4% #ADA ELEMENTO DE ! SERÈ UN DATO TIPO #,)%.4% 0OR TANTO SI SE QUIERE POR EJEM PLO LEER EL ARREGLO ! DEBE LEERSE POR CADA COMPONENTE CADA UNO DE LOS CAMPOS QUE FORMAN AL REGISTRO 2EPETIR CON ) DESDE HASTA . ,EER !;)= NOMBRE ,EER !;)= TELÏFONO ,EER !;)= SALDO ,EER !;)= MOROSO #ON !;)= SE HACE REFERENCIA AL ELEMENTO ) DEL ARREGLO ! QUE ES UN REGISTRO CON ID?CAMPO SE ESPECIlCA CUÈL DE LOS CAMPOS DEL REGISTRO SE LEERÈ $E FORMA SIMILAR SE PROCEDE PARA ESCRITURA ASIGNACIØN ETCÏTERA

&)'52! !RREGLO DE REGISTROS


34

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

2EGISTROS ANIDADOS %N LOS REGISTROS ANIDADOS AL MENOS UN CAMPO DEL REGISTRO ES DEL TIPO REGISTRO /BSERVE MOS A CONTINUACIØN EL SIGUIENTE EJEMPLO

%JEMPLO

5NA EMPRESA REGISTRA PARA CADA UNO DE SUS ACREEDORES LOS SIGUIENTES DATOS ◗ ◗

.OMBRE CADENA DE CARACTERES $IRECCIØN s #ALLE CADENA DE CARACTERES s .ÞMERO ENTERO s #IUDAD CADENA DE CARACTERES s 0AÓS CADENA DE CARACTERES

3ALDO REAL

0ARA DElNIR EL TIPO DE DATO DEL CAMPO DIRECCIØN ES NECESARIO DECLARAR PREVIAMENTE UN REGISTRO FORMADO POR LOS CUATRO COMPONENTES CALLE NÞMERO CIUDAD Y PAÓS QUE SE ESPECIlCAN 3E USARÈ EL REGISTRO DEL EJEMPLO PRESENTADO ANTERIORMENTE PARA RESOL VER ESTE CASO !#2%%$/2 2%')342/ NOMBRE CADENA?DE?CARACTERES DIRECCIØN $/-)#),)/ SALDO REAL [&IN DE LA DECLARACIØN DEL REGISTRO !#2%%$/2] ,A lGURA MUESTRA LA ESTRUCTURA DE DATOS REQUERIDA %N ESTE CASO EL REGISTRO TIENE UN CAMPO DIRECCIØN QUE ES DEL TIPO DE DATOS $/ -)#),)/ EL CUAL ES UN REGISTRO DE CUATRO CAMPOS 0ARA TENER ACCESO A LOS CAMPOS QUE A SU VEZ SON REGISTROS EN LA MAYORÓA DE LOS LENGUAJES SE SIGUE LA SIGUIENTE SINTAXIS VARIABLE?REGISTRO ID?CAMPO ID?CAMPON

&)'52! 2EGISTROS ANIDADOS

$ONDE VARIABLE?REGISTRO ES UNA VARIABLE DE TIPO REGISTRO ID?CAMPO ES EL IDENTIlCADOR DE UN CAMPO DEL REGISTRO EL CAMPO ES DE TIPO REGISTRO ID?CAMPON REPRESENTA EL IDENTIlCADOR DE UN CAMPO


3&(*45304

35

0ARA TENER ACCESO A LOS CAMPOS DE LA VARIABLE !# DE TIPO !#2%%$/2 LA SECUENCIA A SEGUIR ES LA SIGUIENTE !# NOMBRE !# DIRECCIØN CALLE !# DIRECCIØN NÞMERO !# DIRECCIØN CIUDAD !# DIRECCIØN PAÓS !# SALDO

2EGISTROS CON ARREGLOS ,OS REGISTROS CON ARREGLOS TIENEN POR LO MENOS UN CAMPO QUE ES DE TIPO ARREGLO !NALI CE CUIDADOSAMENTE EL SIGUIENTE EJEMPLO

%JEMPLO

5NA EMPRESA REGISTRA PARA CADA UNO DE SUS CLIENTES LOS SIGUIENTES DATOS ◗ ◗ ◗ ◗

.OMBRE 4ELÏFONO 3ALDO MENSUAL DEL ÞLTIMO A×O -OROSO

CADENA DE CARACTERES CADENA DE CARACTERES ARREGLO DE REALES BOOLEANO

,A DElNICIØN DEL REGISTRO CORRESPONDIENTE ES #,)%.4% 2%')342/ NOMBRE CADENA?DE?CARACTERES TELÏFONO CADENA?DE?CARACTERES SALDOS !22%',/ ; = $% REALES MOROSO BOOLEANO [&IN DE LA DECLARACIØN DEL REGISTRO #,)%.4%] ,A lGURA MUESTRA LA ESTRUCTURA REQUERIDA 0ARA ESTE CASO EL REGISTRO TIENE UN CAMPO SALDOS QUE ES UN ARREGLO UNIDIMENSIONAL DE ELEMENTOS REALES #ON EL PROPØSITO DE HACER REFERENCIA A ESE CAMPO SE PROCEDE DE LA SIGUIENTE MANERA &)'52! 2EGISTROS CON ARREGLOS


36

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 VARIABLE?REGISTRO ID?CAMPO;ÓNDICE= 0ARA TENER ACCESO A LOS CAMPOS DE LA VARIABLE #,) DE TIPO #,)%.4% SE DEBE SEGUIR LA SECUENCIA #,) NOMBRE #,) TELÏFONO 2EPETIR CON ) DESDE HASTA #,) SALDOS;)= #,) MOROSO ,AS TRES POSIBLES COMBINACIONES ANALIZADAS AQUÓ ARREGLOS DE REGISTROS REGISTROS ANIDADOS Y REGISTROS CON ARREGLOS PUEDEN PRESENTARSE DE MANERA SIMULTÈNEA Y EN DIFE RENTES NIVELES EN UNA MISMA ESTRUCTURA DE DATOS %N ESTOS CASOS SE RECOMIENDA QUE LA ESTRUCTURA RESULTANTE SEA COMPRENSIBLE Y QUE NO SE COMPLIQUE DEMASIADO EL ACCESO A LOS DATOS INDIVIDUALES

!RREGLOS PARALELOS 0OR ARREGLOS PARALELOS SE ENTIENDE DOS O MÈS ARREGLOS CUYOS ELEMENTOS SE CORRESPON DEN %S DECIR LOS COMPONENTES QUE OCUPAN UNA MISMA POSICIØN EN DIFERENTES ARREGLOS TIENEN UNA ESTRECHA RELACIØN SEMÈNTICA 0ARA ILUSTRAR ESTA IDEA A CONTINUACIØN SE PRESEN TARÈ UN CASO PRÈCTICO Y SU SOLUCIØN MEDIANTE ARREGLOS PARALELOS 3UPONGAMOS QUE SE CONOCE EL NOMBRE DEL ALUMNO Y LA CALIlCACIØN OBTENIDA POR ÏSTE EN UN EXAMEN QUE FUE APLICADO A UN GRUPO DE ALUMNOS 3I SE QUISIERA USAR ESTOS DATOS PARA GENERAR INFORMACIØN POR EJEMPLO PROMEDIO DEL GRUPO CALIlCACIØN MÈS ALTA NOMBRE DE LOS ALUMNOS CON CALIlCACIØN INFERIOR AL PROMEDIO ETC SE TENDRÓAN DOS ALTER NATIVAS PRINCIPALES EN EL DISE×O DE LA SOLUCIØN

5SO DE ARREGLOS PARALELOS 3I SE UTILIZAN ARREGLOS PARALELOS PARA RESOLVER ESTE PROBLEMA SE REQUIERE DE DOS ARREGLOS UNIDIMENSIONALES EN UNO SE ALMACENARÈ EL NOMBRE DE LOS ALUMNOS Y EN OTRO LA CALIlCA CIØN OBTENIDA POR ÏSTE EN EL EXAMEN %S DECIR A CADA ELEMENTO DEL ARREGLO ./-"2%3 LE CORRESPONDERÈ ENTONCES UNO DEL ARREGLO #!,)&)#!#)». !SÓ SI SE QUIERE HACER REFERENCIA A LA CALIlCACIØN DE ./-"2%3;)= SE UTILIZARÈ #!,)&)#!#)».;)= /BSERVE LA lGURA ,ØPEZ -ARTÓNEZ 4ORRES 6IASA

OBTUVO UNA CALIlCACIØN DE OBTUVO UNA CALIlCACIØN DE OBTUVO UNA CALIlCACIØN DE OBTUVO UNA CALIlCACIØN DE

! CONTINUACIØN SE INCLUYE UN ALGORITMO QUE CALCULA EL PROMEDIO DEL GRUPO E IMPRI ME EL NOMBRE DE LOS ALUMNOS QUE TENGAN CALIlCACIØN MENOR AL PROMEDIO


3&(*45304

37

&)'52! !RREGLOS PARALELOS

!LGORITMO !RREGLOS?PARALELOS !RREGLOS?PARALELOS [%STE ALGORITMO CALCULA EL PROMEDIO DEL GRUPO E IMPRIME EL NOMBRE DE LOS ALUMNOS CON CALIlCACIØN MENOR AL PROMEDIO] [./-"2% Y #!,)&)#!#)». SON VARIABLES DE TIPO ARREGLO ) ES UNA VARIABLE DE TIPO ENTERO 02/- Y !# SON VARIABLES DE TIPO REAL] (ACER !# ← 2EPETIR CON ) DESDE HASTA ,EER ./-"2%;)= Y #!,)&)#!#)».;)= (ACER !# ← !# #!,)&)#!#)».;)= [&IN DEL CICLO DEL PASO ] [3E CALCULA EL PROMEDIO DEL GRUPO] (ACER 02/- ← !# %SCRIBIR h%L PROMEDIO DEL GRUPO ESv 02/["ÞSQUEDA E IMPRESIØN DE LOS NOMBRES DE LOS ALUMNOS CON CALIlCACIØN INFERIOR AL PROMEDIO] 2EPETIR CON ) DESDE HASTA 3I #!,)&)#!#)».;)= 02/- ENTONCES %SCRIBIR ./-"2%;)= [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]

5SO DE ARREGLOS DE REGISTROS /TRA SOLUCIØN AL PROBLEMA SERÓA UTILIZAR UN ARREGLO DE REGISTROS %N ESTE CASO CADA COM PONENTE DEL ARREGLO !,5-./ ES UN REGISTRO QUE TIENE DOS CAMPOS ./-"2% Y #! ,)& /BSERVE LA lGURA


38

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

&)'52!

!SÓ

!,5-./3;)= ./-"2% HARÈ REFERENCIA AL NOMBRE DEL ALUMNO ) !,5-./3;)= #!,)& HARÈ REFERENCIA A LA CALIlCACIØN OBTENIDA POR EL ALUMNO )

%L SIGUIENTE ALGORITMO PRESENTA LA SOLUCIØN AL PROBLEMA ANTERIOR MEDIANTE UN ARRE GLO DE REGISTROS !LGORITMO !RREGLO?DE?REGISTROS ARREGLO?DE?REGISTROS [%STE ALGORITMO CALCULA EL PROMEDIO DEL GRUPO E IMPRIME EL NOMBRE DE LOS ALUMNOS CON CALIlCACIØN MENOR AL PROMEDIO] [!,5-./3 ES UN ARREGLO DE REGISTROS ) ES UNA VARIABLE DE TIPO ENTERO !# Y 02/- SON VARIABLES DE TIPO REAL] (ACER !# ← 2EPETIR CON ) DESDE HASTA ,EER !,5-./3;)= ./-"2% Y !,5-./3;)= #!,)& (ACER !# ← !# !,5-./3;)= #!,)& [&IN DEL CICLO DEL PASO ] (ACER 02/- ← !# %SCRIBIR h%L PROMEDIO DEL GRUPO ESv 02/["ÞSQUEDA E IMPRESIØN DE LOS ALUMNOS CON CALIlCACIØN INFERIOR AL PROMEDIO] 2EPETIR CON ) DESDE HASTA 3I !,5-./3;)= #!,)& 02/- ENTONCES %SCRIBIR !,5-./3;)= ./-"2% [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]


3&(*45304 : $-"4&4

39

2%')342/3 9 #,!3%3 ,OS REGISTROS SON LAS ESTRUCTURAS DE DATOS QUE MÈS SE PARECEN AL CONCEPTO DE CLASE PRE SENTADO %N LA SECCIØN ANTERIOR SE DIJO QUE UN REGISTRO ALMACENA LAS PRINCIPALES CARACTE RÓSTICAS DE UN CONJUNTO DE OBJETOS #ADA UNA DE ESAS CARACTERÓSTICAS CONSTITUYE UN CAMPO DEL REGISTRO !L ESTABLECER LA RELACIØN CON LAS CLASES LOS CAMPOS REPRESENTAN LOS ATRIBU TOS 0OR TANTO SØLO SE AGREGAN LOS MÏTODOS OPERACIONES QUE PUEDEN APLICARSE SOBRE LOS CAMPOS PARA COMPLETAR LA DElNICIØN DE UNA CLASE ,A CLASE 2EGISTRO COMO TAL NO SE DECLARA PORQUE LO QUE SE REQUIERE ES UNA CLASE POR CADA REGISTRO %S DECIR SI SE DESEA REPRESENTAR A LOS CLIENTES DE UNA EMPRESA SEGÞN EL EJEMPLO VISTO EN LA SECCIØN ANTERIOR DESDE EL PUNTO DE VISTA DE LA PROGRAMACIØN ORIEN TADA A OBJETOS SE DEBERÈ DElNIR UNA CLASE QUE CONTENDRÈ TANTO LOS ATRIBUTOS LO QUE EN REGISTROS SE LLAMAN CAMPOS COMO TODAS LAS OPERACIONES VÈLIDAS PARA UN CLIENTE POR EJEMPLO ACTUALIZAR EL SALDO CAMBIAR EL NÞMERO TELEFØNICO ETCÏTERA 'RÈlCAMENTE LA CLASE #LIENTE PUEDE VERSE COMO SE MUESTRA EN LA lGURA 5N OBJETO DE LA CLASE #LIENTE ES UNA INSTANCIA DE LA MISMA %S DECIR ESTÈ REPRESEN TANDO A UN CLIENTE CON UN NOMBRE UN NÞMERO TELEFØNICO Y UN SALDO ESPECÓlCO ,A NOTACIØN DE PUNTOS UTILIZADA EN LOS REGISTROS VARIABLE?REGISTRO CAMPO ES SIMILAR A LA USADA EN LOS LENGUAJES ORIENTADOS A OBJETOS PARA TENER ACCESO A LOS MIEM BROS NO PRIVADOS DE UN OBJETO OBJETO MIEMBRO !L ASUMIR QUE LA VARIABLE #,) ES UN OBJETO DE LA CLASE #LIENTE PREVIAMENTE DElNIDA SE PUEDE TENER ACCESO A LOS MIEMBROS NO PRIVADOS DE DICHO OBJETO POR MEDIO DE LAS INSTRUCCIONES A #,) !CTUALIZAR3ALDO .UEVO3ALDO %N ESTE EJEMPLO SE ESTÈ INVOCANDO AL MÏTODO QUE ACTUALIZA EL SALDO DEL CLIENTE %L MÏTODO TIENE UN ARGUMENTO QUE INDICA EL NUEVO VALOR QUE SE ASIGNARÈ AL ATRIBUTO 3ALDO B #,) #AMBIA4ELÏFONO .UEVO4EL %N ESTE EJEMPLO SE ESTÈ INVOCANDO AL MÏTODO QUE ACTUALIZA EL NÞMERO TELEFØNICO DEL CLIENTE %L MÏTODO TIENE UN ARGUMENTO QUE INDICA EL NUEVO VALOR QUE SE ASIGNARÈ AL ATRIBUTO 4ELÏFONO

&)'52! #LASE #LIENTE

#LIENTE .OMBRE CADENA DE CARACTERES 4ELÏFONO CADENA DE CARACTERES 3ALDO REAL !CTUALIZAR3ALDO ARGUMENTOS #AMBIA4ELÏFONO ARGUMENTOS x


40

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504

▼ %*%2#)#)/3 !RREGLOS DE UNA DIMENSIØN Y ARREGLOS PARALELOS Ê £° %N UN ARREGLO UNIDIMENSIONAL SE HA ALMACENADO EL NÞMERO TOTAL DE TONELADAS DE CEREALES COSECHADAS DURANTE CADA MES DEL A×O ANTERIOR %SCRIBA UN PROGRAMA QUE OBTENGA E IMPRIMA LA SIGUIENTE INFORMACIØN A %L PROMEDIO ANUAL DE TONELADAS COSECHADAS B z#UÈNTOS MESES TUVIERON COSECHA SUPERIOR AL PROMEDIO ANUAL C z#UÈNTOS MESES TUVIERON COSECHA INFERIOR AL PROMEDIO ANUAL Ê Ó° %N UN ARREGLO UNIDIMENSIONAL SE ALMACENAN LAS CALIlCACIONES lNALES DE . ALUMNOS DE UN CURSO UNIVERSITARIO %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA A B C D

%L PROMEDIO GENERAL DEL GRUPO .ÞMERO DE ALUMNOS APROBADOS Y REPROBADOS 0ORCENTAJE DE ALUMNOS APROBADOS Y REPROBADOS .ÞMERO DE ALUMNOS CUYA CALIlCACIØN FUE MAYOR O IGUAL A

Ê Î° $ADA UNA CADENA DE CARACTERES COMO DATO SE DESEA SABER EL NÞMERO DE VECES QUE APARECEN LAS LETRAS @A @B @Z Y @! @" @: EN DICHA CADENA %SCRIBA UN PRO GRAMA QUE RESUELVA EL PROBLEMA A 3I USØ ARREGLOS zCUÈNTOS NECESITØ z0OR QUÏ B z%XISTE OTRA FORMA DE RESOLVERLO Ê {° $ADO UN ARREGLO UNIDIMENSIONAL DE NÞMEROS ENTEROS ORDENADOS CRECIENTEMENTE ES CRIBA UN PROGRAMA QUE ELIMINE TODOS LOS ELEMENTOS REPETIDOS #ONSIDERE QUE DE HA BER VALORES REPETIDOS ÏSTOS SE ENCONTRARÈN EN POSICIONES CONSECUTIVAS DEL ARREGLO Ê x° 5NA COMPA×ÓA ALMACENA LA INFORMACIØN RELACIONADA CON SUS PROVEEDORES EN LOS SIGUIENTES ARREGLOS *,"6 ",

P

P

P

PN

#ADA P ES EL NOMBRE DEL PROVEEDOR I %STE ARREGLO ESTÈ ORDENADO ALFABÏTICAMENTE

1

C

C

C

CN

#ADA C REPRESENTA EL NOMBRE DE LA CIUDAD EN LA QUE RESIDE EL PROVEEDOR I


&+&3$*$*04

41

2 ,"Ê Ê ,/ 1 "A

A

A

AN

#ADA AI ES EL NÞMERO DE ARTÓCULOS DIFERENTES QUE PROVEE EL PROVEEDOR I %SCRIBA UN PROGRAMA QUE PUEDA LLEVAR A CABO LAS SIGUIENTES TRANSACCIONES A $ADO EL NOMBRE DE UN PROVEEDOR INFORMAR EL NOMBRE DE LA CIUDAD EN LA QUE RESIDE Y EL NÞMERO DE ARTÓCULOS QUE PROVEE B !CTUALIZAR EL NOMBRE DE LA CIUDAD EN CASO DE QUE UN PROVEEDOR CAMBIE DE DOMICI LIO ,OS DATOS SERÈN EL NOMBRE DEL PROVEEDOR Y EL NOMBRE DE LA CIUDAD A LA CUAL SE MUDØ C !CTUALIZAR EL NÞMERO DE ARTÓCULOS MANEJADOS POR UN PROVEEDOR PARA EL CASO DE QUE ÏSTE AUMENTE O DISMINUYA ,OS DATOS SERÈN EL NOMBRE DEL PROVEEDOR Y LA CANTIDAD EN LA QUE AUMENTA O DISMINUYE EL TOTAL DE ARTÓCULOS QUE PROVEE D ,A COMPA×ÓA INCORPORA A UN NUEVO PROVEEDOR !CTUALIZAR LOS ARREGLOS SIN ALTERAR EL ORDEN DE 02/6%%$/2%3 ,OS DATOS SERÈN EL NOMBRE DEL PROVEEDOR EL NOMBRE DE LA CIUDAD Y EL TOTAL DE ARTÓCULOS QUE PROVEE E ,A COMPA×ÓA DA DE BAJA A UN PROVEEDOR !CTUALIZAR LOS ARREGLOS %L DATO SERÈ EL NOMBRE DEL PROVEEDOR Ê È° 5NA INMOBILIARIA TIENE INFORMACIØN SOBRE DEPARTAMENTOS EN RENTA ALMACENADA EN DOS ARREGLOS 8/ - $ E

E

E

EN

%L ARREGLO %84%.3)». ALMACENA LA SUPERlCIE EN METROS CUADRADOS DE CADA UNO DE LOS . DEPARTAMENTOS *, " 0

0

0

0.

%L ARREGLO 02%#)/ ALMACENA LOS PRECIOS DE ALQUILER DE LOS . DEPARTAMENTOS %STE ARREGLO ESTÈ ORDENADO DE MANERA CRECIENTE #ONSIDERE QUE NO EXISTEN DEPARTAMENTOS CON IGUAL SUPERlCIE Y DISTINTOS PRECIOS %SCRIBA UN PROGRAMA QUE PUEDA LLEVAR A CABO LAS SIGUIENTES OPERACIONES A ,LEGA UN CLIENTE A LA INMOBILIARIA Y SOLICITA RENTAR UN DEPARTAMENTO 3I EXISTE ALGUNO CON SUPERlCIE MAYOR O IGUAL A LA BUSCADA Y PRECIO MENOR O IGUAL AL BUSCADO SE DARÈ DE BAJA AL DEPARTAMENTO SELECCIONADO B 3E VENCE UN CONTRATO Y EL CLIENTE NO DESEA RENOVARLO 3E DEBEN ACTUALIZAR LOS ARRE GLOS


42

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 Ê Ç° 3E TIENE LA SIGUIENTE INFORMACIØN

#4 A

A

A

AN

%N EL ARREGLO #4 SE ALMACENAN LOS NOMBRES DE . CENTROS TURÓSTICOS DEL PAÓS

( B

B

B

BN

%N EL ARREGLO ( SE ALMACENA EL NÞMERO DE HABITACIONES DE CADA TIPO SENCILLA O DOBLE DE CADA CENTRO TURÓSTICO 0OR EJEMPLO (; = GUARDA EL NÞMERO DE HABITACIONES SENCILLAS DEL CENTRO (; = GUARDA EL NÞMERO DE HABITACIONES DOBLES DEL CENTRO (; = GUARDA EL NÞMERO DE HABITACIONES SENCILLAS DEL CENTRO (; = GUARDA EL NÞMERO DE HABITACIONES DOBLES DEL CENTRO ETCÏTERA

42 C

C

C

CN

%N EL ARREGLO 42 SE ALMACENA EL NÞMERO TOTAL DE RESTAURANTES POR CENTRO TURÓSTICO $EBERÈ DESARROLLAR UN PROGRAMA QUE PROPORCIONE LA SIGUIENTE INFORMACIØN A %L NOMBRE DEL CENTRO TURÓSTICO QUE CUENTA CON MÈS RESTAURANTES B %L NOMBRE DEL CENTRO TURÓSTICO QUE CUENTA CON MÈS HABITACIONES TENIENDO EN CUENTA LAS SENCILLAS Y LAS DOBLES C $ADO EL NOMBRE DE UN CENTRO TURÓSTICO COMO DATO INFORMAR CUÈNTAS HABITACIONES TIENE SENCILLAS DOBLES Y EL TOTAL D %L NOMBRE DEL CENTRO TURÓSTICO QUE MÈS RESTAURANTES TIENE EN RELACIØN CON EL NÞMERO DE HABITACIONES Ê n° 3E TIENEN TRES ARREGLOS 352 #%.42/ Y ./24% QUE ALMACENAN LOS NOMBRES DE LOS PAÓSES DE 3UR #ENTRO Y .ORTEAMÏRICA RESPECTIVAMENTE ,OS TRES ARREGLOS ESTÈN ORDENADOS ALFABÏTICAMENTE %SCRIBA UN PROGRAMA QUE MEZCLE LOS TRES ARREGLOS ANTERIORES FORMANDO UN CUARTO ARREGLO !-²2)#! EN EL CUAL APAREZCAN LOS NOMBRES DE TODOS LOS PAÓSES DEL CONTINENTE ORDENADOS ALFABÏTICAMENTE Ê ° 3E TIENEN DOS ARREGLOS #).%3 Y 4%!42/3 %L PRIMERO ALMACENA LOS NOMBRES DE TODOS LOS CINES DE LA CIUDAD %STÈ ORDENADO ALFABÏTICAMENTE DE MANERA AS CENDENTE


&+&3$*$*04

43

#).%3; = ≤ #).%3; = ≤ ≤ #).%3;.= %L SEGUNDO ARREGLO GUARDA LOS NOMBRES DE TODOS LOS TEATROS DE LA CIUDAD %STÈ ORDE NADO ALFABÏTICAMENTE DE MANERA DESCENDENTE 4%!42/3; = ≥ 4%!42/3; = ≥ ≥ 4%!42/3;+= %SCRIBA UN PROGRAMA QUE MEZCLE ESTOS ARREGLOS FORMANDO UN TERCERO %.42%4% .)-)%.4/3 QUE QUEDE ORDENADO ALFABÏTICAMENTE DE MANERA ASCENDENTE £ä° 3E TIENEN REGISTRADAS LAS CALIlCACIONES OBTENIDAS EN UN EXAMEN A ALUMNOS ,OS DATOS SON CAL CAL CAL DONDE CALI ES UN NÞMERO ENTERO COMPRENDIDO ENTRE LOS VALORES Y ≤ CALI ≤ %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA LA FRECUENCIA DE CADA UNO DE LOS POSIBLES VALORES ,A SALIDA DEL PROGRAMA SE MUESTRA A CONTINUACIØN #ALIlCACIØN

&RECUENCIA

!,5-./

!,5-./3

!,5-./3

!,5-./3

££° %SCRIBA SUS PROPIOS ALGORITMOS PARA INSERTAR ELIMINAR O MODIlCAR UN ELEMENTO DE UN ARREGLO A 3I EL ARREGLO ESTÈ DESORDENADO B 3I EL ARREGLO ESTÈ ORDENADO £Ó° $ADO UN ARREGLO UNIDIMENSIONAL DE TIPO ENTERO QUE CONTIENE CALIlCACIONES DE EXÈ MENES DE ALUMNOS CONSTRUYA UN PROGRAMA QUE CALCULE LO SIGUIENTE A -EDIA ARITMÏTICA 3E CALCULA COMO LA SUMA DE LOS ELEMENTOS ENTRE EL NÞMERO DE ELEMENTOS B 6ARIANZA 3E CALCULA COMO LA SUMA DE LOS CUADRADOS DE LAS DESVIACIONES DE LA ME DIA ENTRE EL NÞMERO DE ELEMENTOS C $ESVIACIØN ESTÈNDAR 3E CALCULA COMO LA RAÓZ CUADRADA DE LA VARIANZA D -ODA 3E CALCULA AL OBTENER EL NÞMERO CON MAYOR FRECUENCIA £Î° %SCRIBA UN PROGRAMA QUE ALMACENE EN UN ARREGLO UNIDIMENSIONAL LOS PRIMEROS NÞ MEROS PERFECTOS 5N NÞMERO SE CONSIDERA PERFECTO SI LA SUMA DE LOS DIVISORES EXCEP TO EL MISMO ES IGUAL AL PROPIO NÞMERO %L POR EJEMPLO ES UN NÞMERO PERFECTO


44

>ยซย ร ร ย ย ร ยฃร ร ร &4536$563"4 '6/%".&/5"-&4 %& %"504

!RREGLOS MULTIDIMENSIONALES ยฃ{ยฐ 3EAN LOS ARREGLOS BIDIMENSIONALES ! - ยง . Y " - ยง . $ONDE โ ค - โ ค

โ ค . โ ค

AI J Y BI J SON REALES %SCRIBA UN PROGRAMA QUE CALCULE # - ยง . ! - ยง . " - ยง . ยฃxยฐ 3EAN LOS ARREGLOS BIDIMENSIONALES ! - ยง . Y " . ยง 0 $ONDE โ ค - โ ค

โ ค . โ ค

โ ค 0 โ ค

AI J Y BI J SON REALES %SCRIBA UN PROGRAMA QUE CALCULE # - ยง 0 ! - ยง . " . ยง 0 ยฃร ยฐ %SCRIBA UN PROGRAMA QUE LLENE DE CEROS UNA MATRIZ ! . ยง . EXCEPTO EN LA DIAGONAL PRINCIPAL DONDE DEBE ASIGNAR 3I . LA MATRIZ DEBE QUEDAR

ยฃร ยฐ %SCRIBA UN PROGRAMA QUE INTERCAMBIE POR RENGLร N LOS ELEMENTOS DE UN ARREGLO BIDI MENSIONAL ,OS ELEMENTOS DEL RENGLร N DEBEN INTERCAMBIARSE CON LOS DEL RENGLร N . LOS DEL RENGLร N CON LOS DEL . n Y ASร SUCESIVAMENTE 0OR EJEMPLO SI ! ES

%L RESULTADO DE LA OPERACIร N DEBE SER


&+&3$*$*04

45

£n° $ADO COMO DATO EL ARREGLO BIDIMENSIONAL ! - § . QUE ALMACENA NÞMEROS REA LES

$ONDE ≤ - ≤

≤ . ≤

%SCRIBA UN PROGRAMA QUE ENCUENTRE E IMPRIMA EL VALOR MÈS GRANDE ALMACENADO EN CADA UNA DE LAS COLUMNAS Y EN CADA UNO DE LOS RENGLONES DEL ARREGLO 3U PRO GRAMA DEBE IMPRIMIR JUNTO AL VALOR ENCONTRADO LA COLUMNA O RENGLØN EN LA CUAL SE ENCONTRØ

£ ° 3E TIENEN LOS COSTOS DE PRODUCCIØN DE TRES DEPARTAMENTOS DULCES BEBIDAS Y CONSER VAS CORRESPONDIENTES A LOS MESES DEL A×O ANTERIOR

%SCRIBA UN PROGRAMA QUE PUEDA PROPORCIONAR LA SIGUIENTE INFORMACIØN A z%N QUÏ MES SE REGISTRØ EL MAYOR COSTO DE PRODUCCIØN DE DULCES B 0ROMEDIO ANUAL DE LOS COSTOS DE PRODUCCIØN DE BEBIDAS C z%N QUÏ MES SE REGISTRØ EL MAYOR COSTO DE PRODUCCIØN EN BEBIDAS Y EN QUÏ MES EL MENOR COSTO D z#UÈL FUE EL RUBRO QUE TUVO EL MENOR COSTO DE PRODUCCIØN EN DICIEMBRE Óä° 3E TIENE UNA TABLA CON LAS CALIlCACIONES OBTENIDAS POR ALUMNOS EN SEIS EXÈMENES DIFERENTES

%SCRIBA UN PROGRAMA QUE CALCULE


46

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 A %L PROMEDIO GENERAL DE CALIlCACIONES DE LOS ALUMNOS CONSIDERANDO LOS SEIS EXÈMENES B %L ALUMNO QUE OBTUVO LA MAYOR CALIlCACIØN EN EL TERCER EXAMEN C %L ALUMNO SI LO HUBIERA QUE OBTUVO LA MAYOR CALIlCACIØN EN EL PRIMERO Y EN EL SEXTO EXÈMENES D $ADO EL NÞMERO QUE IDENTIlCA A UN ALUMNO INFORMAR EN QUÏ EXAMEN LOGRØ LA MENOR CALIlCACIØN E z%N CUÈL EXAMEN FUE MÈS ALTO EL PROMEDIO DE LOS ALUMNOS Ó£° %SCRIBA UN PROGRAMA QUE GENERE E IMPRIMA UN CUADRADO MÈGICO DE DIMENSIØN . /BSERVE QUE . ES ENTERO POSITIVO E IMPAR 5N CUADRADO MÈGICO ES UNA MATRIZ CUA DRADA DE ORDEN . QUE CONTIENE A LOS NÞMEROS NATURALES DEL AL . . Y DONDE LA SUMA DE CUALQUIERA DE LOS RENGLONES COLUMNAS O DIAGONALES PRINCIPALES ES SIEMPRE LA MISMA 0UEDE UTILIZAR LOS SIGUIENTES PASOS PARA GENERAR UN CUADRADO MÈGICO A %L NÞMERO SE COLOCA EN LA CASILLA CENTRAL DEL PRIMER RENGLØN B %L SIGUIENTE NÞMERO SE COLOCA EN LA CASILLA CORRESPONDIENTE AL RENGLØN ANTERIOR Y COLUMNA POSTERIOR C %L RENGLØN ANTERIOR AL PRIMERO ES EL ÞLTIMO Y LA COLUMNA POSTERIOR A LA ÞLTIMA ES LA PRIMERA D 3I EL NÞMERO ES UN SUCESOR DE UN MÞLTIPLO DE . NO SE APLICA LA REGLA SINO QUE SE COLOCA EN LA CASILLA DEL RENGLØN POSTERIOR Y EN LA MISMA COLUMNA 3I . EL CUADRADO GENERADO DEBE QUEDAR

ÓÓ° 3EAN ! - § . Y " . ARREGLOS DE DOS Y UNA DIMENSIØN RESPECTIVAMENTE %SCRIBA UN PROGRAMA QUE ASIGNE VALORES A " A PARTIR DE ! TENIENDO EN CUENTA LOS SIGUIENTES CRITERIOS N

A BI ¤ AI J

3I I ES IMPAR

J N

B BI ¤ AI J AI J AI J

3I I ES PAR

J

Óΰ 3EAN ! B § . Y " . DOS ARREGLOS DE DOS Y UNA DIMENSIØN RESPECTIVAMENTE


&+&3$*$*04

47

%SCRIBA UN PROGRAMA QUE ASIGNE VALORES A ! A PARTIR DE " TENIENDO EN CUENTA LOS SIGUIENTES CRITERIOS A AIJ BI B AIJ

3I I ≤ J 3I I J

#OMBINACIONES ENTRE ARREGLOS Y REGISTROS Ó{° %L DEPARTAMENTO DE PERSONAL DE UNA ESCUELA TIENE REGISTROS DEL NOMBRE SEXO Y EDAD DE CADA UNO DE LOS PROFESORES ADSCRITOS AHÓ

%SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA LOS SIGUIENTES DATOS

A B C D E

%DAD PROMEDIO DEL GRUPO DE PROFESORES .OMBRE DEL PROFESOR MÈS JOVEN DEL GRUPO .OMBRE DEL PROFESOR DE MÈS EDAD .ÞMERO DE PROFESORAS CON EDAD MAYOR AL PROMEDIO .ÞMERO DE PROFESORES CON EDAD MENOR AL PROMEDIO

Óx° 2ESUELVA EL PROBLEMA ANTERIOR CON TRES ARREGLOS PARALELOS #OMPARE SUS SOLUCIO NES

ÓÈ° %N UNA ESCUELA POR CADA ALUMNO SE TIENEN LOS SIGUIENTES DATOS ◗ ◗ ◗ ◗

.OMBRE -ATRÓCULA .ÞMERO DE SEMESTRES CURSADOS #ALIlCACIØN PROMEDIO POR SEMESTRE

%SCRIBA UN PROGRAMA QUE DADA LA INFORMACIØN DE . ALUMNOS PUEDA REALIZAR LAS SIGUIENTES OPERACIONES


48

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 A ,ISTAR NOMBRE Y MATRÓCULA DE ESTUDIANTES CON PROMEDIOS GENERALES MAYORES O IGUA LES A B !CTUALIZAR LOS CAMPOS QUE CORRESPONDAN CUANDO UN ESTUDIANTE HA CONCLUIDO UN SEMESTRE C ,ISTAR NOMBRE Y MATRÓCULA DE ESTUDIANTES QUE HAYAN OBTENIDO O MÈS DE CALIlCA CIØN EN TODOS LOS SEMESTRES CURSADOS HASTA EL MOMENTO ÓÇ° 5NA COMPA×ÓA DISTRIBUYE . PRODUCTOS A DISTINTOS COMERCIOS DE LA CIUDAD 0ARA ELLO ALMACENA EN UN ARREGLO TODA LA INFORMACIØN RELACIONADA CON SU MERCANCÓA ◗ ◗ ◗ ◗ ◗

#LAVE $ESCRIPCIØN %XISTENCIA -ÓNIMO A MANTENER DE EXISTENCIA 0RECIO UNITARIO

%SCRIBA UN PROGRAMA QUE EFECTÞE LAS SIGUIENTES OPERACIONES

A 6ENTA DE UN PRODUCTO SE DEBEN ACTUALIZAR LOS CAMPOS QUE CORRESPONDAN Y VERIlCAR QUE LA NUEVA EXISTENCIA NO ESTÏ POR DEBAJO DEL MÓNIMO $ATOS CLAVE CANTIDAD VEN DIDA B 2EABASTECIMIENTO DE UN PRODUCTO SE DEBEN ACTUALIZAR LOS CAMPOS QUE CORRESPON DAN $ATOS CLAVE CANTIDAD COMPRADA C !CTUALIZAR EL PRECIO DE UN PRODUCTO $ATOS CLAVE PORCENTAJE DE AUMENTO D )NFORMAR SOBRE UN PRODUCTO SE DEBEN PROPORCIONAR TODOS LOS DATOS RELACIONADOS CON UN PRODUCTO $ATO CLAVE Ón° !L MOMENTO DE SU INGRESO AL HOSPITAL A UN PACIENTE SE LE SOLICITAN LOS SIGUIENTES DATOS ◗ ◗ ◗ ◗ ◗ ◗

.OMBRE %DAD 3EXO $OMICILIO s #ALLE s .ÞMERO s #IUDAD 4ELÏFONO 3EGURO ESTE CAMPO TENDRÈ EL VALOR 6%2$!$%2/ SI EL PACIENTE TIENE SEGURO MÏDI CO Y &!,3/ EN OTRO CASO

%SCRIBA UN PROGRAMA QUE PUEDA LLEVAR A CABO LAS SIGUIENTES OPERACIONES

A ,ISTAR LOS NOMBRES DE TODOS LOS PACIENTES HOSPITALIZADOS B /BTENER EL PORCENTAJE DE PACIENTES HOSPITALIZADOS EN LAS SIGUIENTES CATEGORÓAS DA DAS POR LA EDAD


&+&3$*$*04

49

.I×OS HASTA A×OS *ØVENES MAYORES DE A×OS Y MENORES DE !DULTOS MAYORES DE A×OS

C /BTENER EL PORCENTAJE DE HOMBRES Y DE MUJERES HOSPITALIZADOS D $ADO EL NOMBRE DE UN PACIENTE LISTAR TODOS LOS DATOS RELACIONADOS CON DICHO PA CIENTE E #ALCULAR EL PORCENTAJE DE PACIENTES QUE POSEEN SEGURO MÏDICO Ó ° 5NA INMOBILIARIA TIENE INFORMACIØN SOBRE DEPARTAMENTOS EN RENTA $E CADA DEPARTA MENTO SE CONOCE ◗ ◗ ◗ ◗ ◗

#LAVE ES UN ENTERO QUE IDENTIlCA AL INMUEBLE %XTENSIØN SUPERlCIE DEL DEPARTAMENTO EN METROS CUADRADOS 5BICACIØN EXCELENTE BUENA REGULAR MALA 0RECIO ES UN REAL $ISPONIBLE 6%2$!$%2/ SI ESTÈ DISPONIBLE PARA LA RENTA Y &!,3/ SI YA ESTÈ REN TADO

$IARIAMENTE ACUDEN MUCHOS CLIENTES A LA INMOBILIARIA SOLICITANDO INFORMACIØN %SCRIBA UN PROGRAMA CAPAZ DE REALIZAR LAS SIGUIENTES OPERACIONES SOBRE LA IN FORMACIØN DISPONIBLE

A ,ISTE LOS DATOS DE TODOS LOS DEPARTAMENTOS DISPONIBLES QUE TENGAN UN PRECIO INFERIOR O IGUAL A CIERTO VALOR 0 B ,ISTE LOS DATOS DE LOS DEPARTAMENTOS DISPONIBLES QUE TENGAN UNA SUPERlCIE MAYOR O IGUAL A UN CIERTO VALOR DADO % Y UNA UBICACIØN EXCELENTE C ,ISTE EL MONTO DE LA RENTA DE TODOS LOS DEPARTAMENTOS ALQUILADOS D ,LEGA UN CLIENTE SOLICITANDO RENTAR UN DEPARTAMENTO 3I EXISTE ALGUNO CON UNA SU PERlCIE MAYOR O IGUAL A LA DESEADA CON PRECIO Y UBICACIØN QUE SE AJUSTAN A LAS NECESIDADES DEL CLIENTE EL DEPARTAMENTO SE RENTARÈ !CTUALIZAR LOS DATOS QUE CORRES PONDAN E 3E VENCE UN CONTRATO SI NO SE RENUEVA ACTUALIZAR LOS DATOS QUE CORRESPONDAN F 3E HA DECIDIDO AUMENTAR LAS RENTAS EN UN 8 !CTUALIZAR LOS PRECIOS DE LAS RENTAS DE LOS DEPARTAMENTOS NO ALQUILADOS

0ROBLEMAS INTERESANTES $ECIDA EL LECTOR QUÏ ESTRUCTURA DE DATOS DEBE UTILIZAR PARA RESOLVERLOS Îä° %SCRIBA UN PROGRAMA QUE LEA UN NÞMERO ROMANO E IMPRIMA SU EQUIVALENTE EN ARÈ BIGO 2ECUERDE QUE ) 6


50

>« ÌÕ Ê£Ê Ê Ê &4536$563"4 '6/%".&/5"-&4 %& %"504 8 , # $ - Σ° %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA LOS NÞMEROS PERFECTOS COMPRENDIDOS ENTRE DOS NÞMEROS ! Y " 5N NÞMERO ES PERFECTO SI LA SUMA DE SUS DIVISORES EXCEP TO ÏL MISMO ES IGUAL AL PROPIO NÞMERO ÎÓ° %SCRIBA UN SUBPROGRAMA QUE RECIBA COMO DATOS EL NOMBRE DE UN DÓA DE LA SEMANA Y UN NÞMERO ENTERO . POSITIVO O NEGATIVO E IMPRIMA EL DÓA DE LA SEMANA CORRESPON DIENTE A . DÓAS DESPUÏS POSITIVO O . DÓAS ANTES NEGATIVO DEL DÓA DADO Îΰ ,O MISMO QUE EN EL PROBLEMA PERO AHORA CON RESPECTO A UN MES Î{° %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA LOS NÞMEROS PRIMOS MENORES QUE CIERTO NÞMERO DADO . Îx° %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA LOS NÞMEROS PRIMOS GEMELOS MENORES QUE CIERTO NÞMERO DADO . $OS NÞMEROS SON PRIMOS GEMELOS SI SON NÞMEROS PRI MOS CON UNA DIFERENCIA ENTRE ELLOS DE EXACTAMENTE 0OR EJEMPLO Y SON PRIMOS GEMELOS


#APร TULO

!22%',/3 -5,4)$)-%.3)/.!,%3 2%02%3%.4!$/3 %. !22%',/3 5.)$)-%.3)/.!,%3 ).42/$5##)ยผ. !CTUALMENTE LA MAYORร A DE LOS LENGUAJES DE PROGRAMACIร N DE ALTO NIVEL PROPORCIONAN AL USUARIO MEDIOS ElCACES PARA ALMACENAR Y RECUPERAR ELEMENTOS DE ARREGLOS BIDIMENSIO NALES TRIDIMENSIONALES E INCLUSO DE Mร S DE TRES DIMENSIONES %L USUARIO DEL LENGUAJE NO DEBE PREOCUPARSE POR DETALLES ESPECร lCOS DEL ALMACENAMIENTO NI POR EL MANEJO Fร SICO DEL DATO 3U ATENCIร N SE DEBE CONCENTRAR SOLAMENTE EN EL TRATAMIENTO Lร GICO DE ESTE ร LTIMO ES DECIR EN ENCONTRAR UNA ESTRUCTURA DE DATOS QUE PERMITA RESOLVER CIERTOS PRO BLEMAS DE MANERA ร PTIMA 0OR OTRA PARTE LAS COMPUTADORAS NO PUEDEN ALMACENAR DIRECTAMENTE UN ARREGLO MUL TIDIMENSIONAL 3U REPRESENTACIร N EN MEMORIA DEBE SER LINEAL ย A CADA ELEMENTO LE SIGUE UN ร NICO ELEMENTOย MEDIANTE UN BLOQUE DE POSICIONES SUCESIVAS %N ESTE CAPร TULO SE ESTUDIARร N ALGUNAS Tร CNICAS UTILIZADAS PARA EL ALMACENAMIENTO LINEAL DE ARREGLOS MULTIDIMENSIONALES

!22%',/3 ")$)-%.3)/.!,%3 ,OS LENGUAJES DE PROGRAMACIร N PUEDEN REPRESENTAR UN ARREGLO BIDIMENSIONAL ! DE M ยง N ELEMENTOS MEDIANTE UN BLOQUE DE M ยง N POSICIONES SUCESIVAS ,A DISTRIBUCIร N DE LOS ELEMENTOS SE PUEDE REALIZAR DE DOS FORMAS DIFERENTES RENGLร N A RENGLร N LLAMADA TAM


52

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4 BIÏN ORDENACIØN POR RENGLONES QUE UTILIZAN LA MAYORÓA DE LOS LENGUAJES DE PROGRAMA CIØN POR EJEMPLO "!3)# #/"/, 0!3#!, # ETCÏTERA O BIEN COLUMNA A COLUMNA LLAMADA TAMBIÏN ORDENACIØN POR COLUMNAS QUE UTILIZA &/242!. 3EA EL ARREGLO BIDIMENSIONAL ! DE § ELEMENTOS lG A 3U REPRESENTACIØN EN UN ARREGLO UNIDIMENSIONAL ORDENADO POR RENGLONES SE OBSERVA EN LA lGURA B MIENTRAS QUE EL QUE CORRESPONDE A UN ARREGLO UNIDIMENSIONAL ORDENADO POR COLUMNAS SE OBSERVA EN LA lGURA C 5NA VEZ ALMACENADOS LOS VALORES DE MANERA LINEAL SE REQUIERE UNA FØRMULA QUE PRO PORCIONE LA POSICIØN EN EL ARREGLO UNIDIMENSIONAL QUE LE CORRESPONDE A CADA ELEMENTO DEL ARREGLO BIDIMENSIONAL ORIGINAL 3EAN ENTONCES M EL NÞMERO DE RENGLONES Y N EL NÞMERO DE COLUMNAS DE UN ARREGLO BIDIMENSIONAL 0OR OTRA PARTE I Y J INDICAN EL RENGLØN Y COLUMNA RESPECTIVAMENTE DE LA POSICIØN DEL ELEMENTO QUE SE QUIERE UBICAR ,A FØRMULA PARA LOCALIZAR UN ELEMENTO DETERMINADO EN UN ARREGLO UNIDIMENSIONAL ORDENADO POR RENGLONES ES LA SIGUIENTE

,/# !;I J= 0/3).) N I n J n

▼ &ØRMULA

$ONDE 0/3).) PRIMER TÏRMINO DE LA FØRMULA REPRESENTA LA POSICIØN DEL ARRE GLO UNIDIMENSIONAL A PARTIR DE LA CUAL SE ENCUENTRA ALMACENADO EL ARREGLO BIDIMENSIO NAL %N GENERAL PARA LLEGAR A CUALQUIER RENGLØN I SE DEBEN CONTABILIZAR LOS ELEMENTOS CORRESPONDIENTES A I RENGLONES COMPLETOS %STE RESULTADO SE OBTIENE MEDIANTE LA OPERACIØN N I SEGUNDO TÏRMINO DE LA FØRMULA #UANDO SE LLEGA AL RENGLØN CORRESPONDIENTE SE DEBEN CONTABILIZAR LOS J ELEMENTOS NECESARIOS PARA LLEGAR A LA COLUMNA J TERCER TÏRMINO DE LA FØRMULA ,A SUMA DE LOS TRES TÏRMINOS PROPORCIONA LA LOCALIZACIØN DEL ELEMENTO I J CORRESPONDIENTE EN UN ARREGLO UNIDIMENSIONAL ORDENADO POR RENGLONES !SÓ POR EJEMPLO SI DESEAMOS LOCALIZAR EL ELEMENTO !; = DEL ARREGLO DE LA lGURA A HACEMOS ,/# !; = &)'52! 2EPRESENTACIØN LINEAL DE ARREGLOS BIDIMENSIONALES > !RREGLO BIDIMENSIONAL L /RDENACIØN POR RENGLONES EN UN ARREGLO UNIDIMENSIONAL D /RDENACIØN POR COLUMNAS EN UN ARREGLO UNIDIMENSIONAL


"33&(-04 #*%*.&/4*0/"-&4

53

!HORA BIEN SI EL ARREGLO SE ENCUENTRA ALMACENADO POR COLUMNAS LA FØRMULA PARA LOCALIZAR UN ELEMENTO DETERMINADO ES

,/# !;I J= 0/3).) M J n I n

▼ &ØRMULA

%N ESTE CASO 0/3).) PRIMER TÏRMINO DE LA FØRMULA REPRESENTA COMO EN EL CASO ANTERIOR LA POSICIØN DEL ARREGLO UNIDIMENSIONAL A PARTIR DE LA CUAL SE ENCUENTRA ALMACENADO EL ARREGLO BIDIMENSIONAL %N GENERAL PARA LLEGAR A CUALQUIER COLUMNA J PRIMERO SE DEBEN CONTABILIZAR LOS ELEMENTOS CORRESPONDIENTES A J COLUMNAS COM PLETAS %STE RESULTADO SE OBTIENE CON LA OPERACIØN M J SEGUNDO TÏRMINO DE LA FØRMULA ,UEGO QUE SE LLEGA A LA COLUMNA DESEADA SE DEBEN CONSIDERAR LOS I ELEMENTOS NECESARIOS PARA LLEGAR AL RENGLØN I TERCER TÏRMINO DE LA FØRMULA ,A SUMA DE LOS TRES TÏRMINOS DElNE LA LOCALIZACIØN DEL ELEMENTO I J CORRESPONDIENTE EN UN ARRE GLO UNIDIMENSIONAL ORDENADO POR COLUMNAS !SÓ POR EJEMPLO SI SE DESEA LOCALIZAR EL ELEMENTO !; = DEL ARREGLO PRESENTADO EN LA lGURA A SE HACE ,/# !; =

%JEMPLO

#ONSIDERE EL ARREGLO BIDIMENSIONAL #/34/3 DE RENGLONES Y TRES COLUMNAS CORRES PONDIENTE A LOS COSTOS MENSUALES DE PRODUCCIØN DE TRES DEPARTAMENTOS DULCES CON SERVAS Y BEBIDAS DE UNA FÈBRICA #ONSIDERE TAMBIÏN QUE AQUÏL SE ENCUENTRA ORDENADO POR RENGLONES A PARTIR DE LA POSICIØN EN UN ARREGLO UNIDIMENSIONAL LLAMADO #/3 !NALICE LOS SIGUIENTES CASOS A 3E NECESITA CONOCER EL COSTO DE PRODUCCIØN DEL DEPARTAMENTO DE CONSERVAS DURANTE AGOSTO 3E PROCEDE DE ESTA FORMA (ACER ) ← * ← %SCRIBIR #/3; ) * = [%L RESULTADO DEL CÈLCULO ES ] B 3E NECESITA EL COSTO DE PRODUCCIØN ANUAL DEL DEPARTAMENTO DE BEBIDAS ,OS PASOS A SEGUIR SON (ACER 35- ← 2EPETIR CON ) DESDE HASTA (ACER 35- ← 35- #/3; ) = C 3E NECESITA EL COSTO TOTAL DE PRODUCCIØN DE LOS TRES DEPARTAMENTOS DURANTE SEPTIEMBRE ,OS PASOS A SEGUIR SON (ACER 35- ← 2EPETIR CON * DESDE HASTA (ACER 35- ← 35- #/3; n * =


54

>ยซย ร ร ย ย ร ร ร ร ร "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4

%JEMPLO

3UPONGAMOS QUE SE TIENE ALMACENADO EL ARREGLO BIDIMENSIONAL !; = EN DOS ARRE GLOS UNIDIMENSIONALES DIFERENTES %L PRIMERO ORDENADO POR RENGLONES A PARTIR DE LA PO SICIร N Y EL SEGUNDO ORDENADO POR COLUMNAS A PARTIR DE LA POSICIร N #ONSIDERE LOS SIGUIENTES CASOS A 3E NECESITA OBTENER LA POSICIร N DEL ELEMENTO !; = EN EL ARREGLO UNIDIMENSIONAL ORDENADO POR RENGLONES 3E PROCEDE DE ESTA FORMA ,/# ! ; =

0/3).)

N I J

B 3E NECESITA OBTENER LA POSICIร N DEL ELEMENTO !; = EN EL ARREGLO UNIDIMENSIONAL ORDENADO POR COLUMNAS ,/# ! ; = 0/3).) M J I

!22%',/3 $% -ยญ3 $% $/3 $)-%.3)/.%3 ,OS LENGUAJES DE PROGRAMACIร N DE ALTO NIVEL ALMACENAN UN ARREGLO ! DE . DIMENSIO NES SIENDO . Y POR TANTO DE M ยง M ยง ยง MN ELEMENTOS MEDIANTE UN BLOQUE DE M ยง M ยง ยง MN POSICIONES SUCESIVAS %STA REPRESENTACIร N AL IGUAL QUE EN EL CASO DE ARREGLOS BIDIMENSIONALES SE PUEDE REALIZAR DE DOS FORMAS DIFERENTES RENGLร N A RENGLร N LLAMADA TAMBIร N ORDENACIร N POR RENGLONES Y COLUMNA A COLUMNA LLAMADA TAMBIร N ORDENACIร N POR COLUMNAS 3EA ! UN ARREGLO TRIDIMENSIONAL DE ยง ยง ELEMENTOS lG A 3U REPRESEN TACIร N EN UN ARREGLO UNIDIMENSIONAL ORDENADO POR RENGLONES PUEDE OBSERVARSE EN LA lGURA B MIENTRAS QUE LA QUE CORRESPONDE A UN ARREGLO UNIDIMENSIONAL ORDENADO POR COLUMNAS SE OBSERVA EN LA lGURA C 5NA VEZ ALMACENADOS LOS VALORES DE MANERA LINEAL SE REQUIERE CALCULAR LA POSICIร N DE CUALESQUIERA DE LOS ELEMENTOS GUARDADOS EN EL ARREGLO UNIDIMENSIONAL 0ARA ELLO SE NECESITA PRIMERO OBTENER LOS ร NDICES +I LOS TAMAร OS DE LAS DIMENSIONES 4I Y LOS ร NDI CES EFECTIVOS )%I CORRESPONDIENTES #ABE ACLARAR QUE UN ร NDICE EFECTIVO )%I SE CALCULA COMO LA DIFERENCIA DEL ร NDICE +I CORRESPONDIENTE Y EL Lร MITE INFERIOR DE LA DIMENSIร N I DONDE I VARร A DESDE HASTA . SIENDO . EL Nร MERO DE DIMENSIONES DEL ARREGLO MULTIDI MENSIONAL ,A FORMA DE LOCALIZAR UN ELEMENTO DETERMINADO EN UN ARREGLO ORDENADO POR RENGLO NES ES ยฅ ยจ N ยทยด ,/# ยฆ ! ยฉ KI ยธยต 0/3).) ยง ยช I ยนยถ

)% 4 )% 4 x )%

N

4N )%N

โ ผ &ร RMULA


"33&(-04 %& .Ç4 %& %04 %*.&/4*0/&4

55

&)'52! 2EPRESENTACIØN LINEAL DE ARREGLOS DE MÉS DE DOS DIMENSIONES B !RREGLO TRI DIMENSIONAL C /RDENACIØN POR RENGLONES EN UN ARREGLO UNIDIMENSIONAL D /RDE NACIØN POR COLUMNAS EN UN ARREGLO UNIDIMENSIONAL

3UPONGAMOS QUE SE DESEA LOCALIZAR EL ELEMENTO !; = DEL ARREGLO PRESENTADO EN LA lGURA A %N PRIMER LUGAR SE REALIZAN LOS SIGUIENTES CÈLCULOS PARA OBTENER LOS 4I Y LOS )%I 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n ,UEGO SE APLICA LA FØRMULA PARA OBTENER LA POSICIØN CORRESPONDIENTE DEL ELEMEN TO EN UN ARREGLO UNIDIMENSIONAL ORDENADO POR RENGLONES 3E PROCEDE ASÓ ,/# !; = 0ARA CALCULAR LA POSICIØN DEL ELEMENTO !; = SE REALIZAN LAS SIGUIENTES OPERACIO NES PARA OBTENER LOS 4I ˆSE USAN LOS GENERADOS EN EL CASO ANTERIORˆ Y LOS )%I


56

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4 4 )% + n LÓMINF n 4 )% + n LÓMINF n 4 )% + n LÓMINF n Y LUEGO SE APLICA LA FØRMULA PARA OBTENER LA POSICIØN REQUERIDA ,/# !; = !HORA BIEN SI EL ARREGLO SE ENCUENTRA ALMACENADO POR COLUMNAS LA FORMA DE LOCA LIZAR UN ELEMENTO ES ¥ ¨ N ·´ ,/# ¦ ! © KI ¸µ 0/3).) § ª I ¹¶

)%

▼ &ØRMULA

4 )%

4 )%

4 x )%

4 )% N N N N

3UPONGAMOS QUE SE DESEA ENCONTRAR EL ELEMENTO !; = DEL ARREGLO PRESENTADO EN LA lGURA A 3E TIENEN QUE CALCULAR PRIMERO LOS 4I SE USAN LOS GENERADOS ANTERIOR MENTE Y LOS )%I CORRESPONDIENTES 4 )% + n LÓMINF n 4 )% + n LÓMINF n 4 )% + n LÓMINF n Y POSTERIORMENTE SE APLICA LA FØRMULA PARA OBTENER LA POSICIØN DEL ELEMENTO !; = EN UN ARREGLO UNIDIMENSIONAL ORDENADO POR COLUMNAS ,/# !; = 3I SE QUIERE CALCULAR LA POSICIØN DEL ELEMENTO !; = SE REALIZAN LAS SIGUIENTES OPERACIONES PARA OBTENER LOS 4I SE USAN LOS GENERADOS ANTERIORMENTE Y LOS )%I 4 )% + n LÓMINF n 4 )% + n LÓMINF n 4 )% + n LÓMINF n Y LUEGO SE APLICA LA FØRMULA PARA OBTENER LA POSICIØN REQUERIDA ,/# !; =

%JEMPLO

#ONSIDERE EL ARREGLO TRIDIMENSIONAL #/34/3 DE § § CORRESPONDIENTE A LOS COS TOS DE PRODUCCIØN MENSUALES EN TRES DEPARTAMENTOS DULCES CONSERVAS Y BEBIDAS DE UNA FÈBRICA EN LOS ÞLTIMOS CINCO A×OS DESDE HASTA #ONSIDERE TAMBIÏN QUE AQUÏL SE ENCUENTRA ORDENADO POR RENGLONES A PARTIR DE LA PRIMERA POSICIØN EN UN ARREGLO UNIDIMENSIONAL LLAMADO #/3 !NALICE LOS SIGUIENTES CASOS A 3E NECESITA LA POSICIØN EN EL ARREGLO #/3 DONDE SE ENCUENTRA EL COSTO DE PRODUCCIØN DEL DEPARTAMENTO DE BEBIDAS DURANTE AGOSTO Y DURANTE EL A×O DE


"33&(-04 %& .Ç4 %& %04 %*.&/4*0/&4

57

3E OBTIENEN LOS 4I Y LOS )%I CORRESPONDIENTES 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n Y LUEGO SE PROCEDE DE LA SIGUIENTE FORMA ,/# #/34/3; = B 3E NECESITA EL COSTO DE PRODUCCIØN DEL DEPARTAMENTO DE CONSERVAS DURANTE 3E OBTIENEN LOS 4I SE USAN LOS GENERADOS EN EL INCISO A Y LOS )%I CORRES PONDIENTES 4 )% DESDE HASTA 4 )% + n LIMINF n 4 )% + n LIMINF n Y LUEGO SE REALIZAN LOS SIGUIENTES PASOS (ACER 35- ← 2EPETIR CON ) DESDE HASTA (ACER 35- ← 35- #/3; ) = C 3E NECESITA EL COSTO TOTAL DE PRODUCCIØN DE LOS TRES DEPARTAMENTOS DURANTE SEPTIEM BRE DE 3E OBTIENEN LOS 4I SE USAN LOS GENERADOS EN EL INCISO A Y LOS )%I CORRES PONDIENTES 4 )% + n LÓMINF n 4 )% ) DESDE HASTA 4 )% + n LÓMINF n Y LUEGO SE APLICAN LOS SIGUIENTES PASOS (ACER 35- ← 2EPETIR CON ) DESDE HASTA (ACER 35- ← 35- #/3; ) = D 3E NECESITA EL COSTO TOTAL DE PRODUCCIØN DE LOS TRES DEPARTAMENTOS DURANTE TODO 3E OBTIENEN LOS 4I SE USAN LOS GENERADOS EN EL INCISO A Y LOS )%I CORRES PONDIENTES


58

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4 4 )% ) DESDE HASTA 4 )% * DESDE HASTA 4 )% + n LÓMINF n Y LUEGO SE APLICAN LOS SIGUIENTES PASOS (ACER 35- ← 2EPETIR CON ) DESDE HASTA 2EPETIR CON * DESDE HASTA (ACER 35- ← 35- #/3; ) *= =

%JEMPLO

3UPONGAMOS QUE SE TIENE ALMACENADO EL ARREGLO DE CUATRO DIMENSIONES !; L = EN DOS ARREGLOS UNIDIMENSIONALES DIFERENTES %L PRIMERO ORDENADO POR REN GLONES A PARTIR DE LA POSICIØN Y EL SEGUNDO POR COLUMNAS A PARTIR DE LA POSICIØN #ONSIDERE LOS SIGUIENTES CASOS A 3E NECESITA LA POSICIØN DEL ELEMENTO !; = EN EL ARREGLO UNIDIMENSIONAL OR DENADO POR RENGLONES 0RIMERO SE OBTIENEN LOS 4I Y LOS )%I CORRESPONDIENTES 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n 4 LÓMSUP n LÓMINF n

)% + n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n Y LUEGO SE PROCEDE DE ESTA MANERA ,/# !; = B 3E NECESITA LA POSICIØN DEL ELEMENTO !; = EN EL ARREGLO UNIDIMENSIONAL ORDENADO POR COLUMNAS 0RIMERO SE OBTIENEN LOS 4I SE USAN LOS GENERADOS EN EL INCISO A Y LOS )%I CORRESPONDIENTES 4 4 4 4

)% + n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n )% + n LÓMINF n

Y LUEGO SE PROCEDE ASÓ ,/# !; n =


."53*$&4 10$0 %&/4"4

59

-!42)#%3 0/#/ $%.3!3 -ATRIZ REPRESENTA UN Tร RMINO MATEMร TICO QUE SE UTILIZA PARA INDICAR UN CONJUNTO DE ELE MENTOS ORGANIZADOS POR MEDIO DE RENGLONES Y COLUMNAS %S EQUIVALENTE AL Tร RMINO ARRE GLO BIDIMENSIONAL UTILIZADO EN COMPUTACIร N %STE Tร RMINO SE EMPLEA EN ESTA SECCIร N FUNDAMENTALMENTE PORQUE A LOS ARREGLOS BIDIMENSIONALES POCO DENSOS SE LES CONOCE MUCHO Mร S COMO MATRICES POCO DENSAS 0OCO DENSO ร NDICA PROPORCIร N MUY ALTA DE CEROS ENTRE LOS ELEMENTOS DE LA MATRIZ /BSERVE LA MATRIZ ! DE ยง ELEMENTOS DE LA lGURA %S Fร CIL DARSE CUENTA DE QUE ESTA MATRIZ TIENE GRAN CANTIDAD DE CEROS 3IENDO PRECI SOS DE SUS ELEMENTOS SON CEROS 0IENSE EL LECTOR QUร OCURRIRร A SI EN LUGAR DE TENER UNA MATRIZ DE ยง SE TUVIERA UNA MATRIZ DE ยง Y LA MAYORร A DE SUS ELEMENTOS FUERAN IGUALES A CERO #ON EL PORCENTAJE ANTERIOR Y PARA ESTE CASO EN PARTICULAR SE TEN DRร AN ELEMENTOS IGUALES A CERO 5NA SITUACIร N COMO ร STA EXIGE QUE SE HAGA UN USO Mร S ElCIENTE DEL ESPACIO DE MEMORIA #ON ESE PROPร SITO EXISTEN DIVERSOS Mร TODOS PARA ALMACENAR Sร LO LOS VALORES DIFERENTES DE CERO DE UNA MATRIZ POCO DENSA ! CONTINUACIร N PRESENTAMOS DOS DE LOS Mร S USADOS

!RREGLO DE REGISTROS 3E UTILIZA UN ARREGLO UNIDIMENSIONAL DONDE CADA ELEMENTO REPRESENTA UN REGISTRO FOR MADO POR TRES CAMPOS UNO PARA GUARDAR EL RENGLร N DONDE SE ENCONTRร EL VALOR DIFERENTE DE CERO OTRO PARA GUARDAR LA COLUMNA Y EL TERCERO PARA GUARDAR EL VALOR DEL ELEMENTO DISTINTO DE CERO DE LA MATRIZ %N LA TABLA SE MUESTRA LA FORMA DE ALMACENAR LOS ELEMENTOS DE LA MATRIZ POCO DENSA QUE SE OBSERVA EN LA lGURA 4!",!

&)'52! -ATRIZ DE ย

2ENGLร N

#OLUMNA

6ALOR


60

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4 %S PERTINENTE ACLARAR QUE PUEDE RESULTAR MUY CONVENIENTE ALMACENAR EL TOTAL DE RENGLONES Y DE COLUMNAS DE LA MATRIZ ORIGINAL ! CONTINUACIØN SE PRESENTA UN ALGORITMO MUY SIMPLE QUE ALMACENA EN UN ARREGLO UNIDIMENSIONAL LOS ELEMENTOS DISTINTOS DE CERO DE UNA MATRIZ POCO DENSA !LGORITMO !LMACENA?MATRIZ?POCO?DENSA

!LMACENA?MATRIZ?POCO?DENSA -!4 [%L ALGORITMO ALMACENA LOS ELEMENTOS DISTINTOS DE CERO DE UNA MATRIZ POCO DENSA EN UN ARREGLO UNIDIMENSIONAL -!4 CONSTITUYE UN ARREGLO UNIDIMENSIONAL DE REGISTROS ,OS CAMPOS DEL REGISTRO SON 2%.',». #/,5-.! Y 6!,/2] [&) #/ ) * Y + SON VARIABLES DE TIPO ENTERO 6!, ES UNA VARIABLE DE TIPO REAL] ,EER EL NÞMERO DE RENGLONES Y DE COLUMNAS DE LA MATRIZ &) Y #/ (ACER -!4; = 2%.',». ← &)

-!4; = #/,5-.! ← #/ Y + ← 2EPETIR CON ) DESDE HASTA &) 2EPETIR CON * DESDE HASTA #/ ,EER INFORMACIØN 6!, 3I 6!, ≠ ENTONCES (ACER -!4;+= 2%.',». ← )

-!4;+= #/,5-.! ← *

-!4;+= 6!,/2 ← 6!, ← Y + ← + [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ] (ACER -!4; = 6!,/2 ← + n [%N -!4; = 2%.',». Y -!4; = #/,5-.! QUEDAN ALMACENADOS EL NÞMERO DE RENGLONES Y DE COLUMNAS RESPECTIVAMENTE DE LA MATRIZ %N -!4; = 6!,/2 QUEDA ALMACENADO EL TOTAL DE ELEMENTOS DIFERENTES DE CERO DE LA MATRIZ]

!RREGLO DE LISTAS 3E SUGIERE QUE ANTES DE ESTUDIAR ESTE MÏTODO USADO PARA EL ALMACENAMIENTO DE MATRICES POCO DENSAS CONSULTE EL CAPÓTULO ,A REPRESENTACIØN DE LA MATRIZ POCO DENSA SE REALIZA POR MEDIO DE UN ARREGLO DE LISTAS %S DECIR EN EL ELEMENTO I DE UN ARREGLO UNIDIMENSIONAL SE TIENE UN REGISTRO QUE ALMACENA EN UNO DE SUS CAMPOS EL TOTAL DE ELEMENTOS DIFERENTES DE CERO ENCONTRADOS EN EL RENGLØN I DE LA MATRIZ Y EN OTRO CAMPO LA DIRECCIØN AL PRIMER NODO DE UNA LISTA #ADA NODO DE LA LISTA ALMACENARÈ LA COLUMNA DE LA MATRIZ EN LA QUE SE ENCUENTRA EL VALOR DIFE RENTE DE CERO EL PROPIO VALOR Y LA DIRECCIØN AL SIGUIENTE NODO DE LA LISTA


."53*$&4 10$0 %&/4"4

61

&)'52! !RREGLO DE LISTAS

%N LA lGURA SE PRESENTA UN ESQUEMA DE ESTA ESTRUCTURA DE DATOS QUE SE APLICA A LA MATRIZ POCO DENSA DE LA lGURA

-ATRICES CUADRADAS POCO DENSAS ,AS MATRICES CUADRADAS SON AQUELLAS QUE TIENEN IGUAL NÞMERO DE RENGLONES Y DE CO LUMNAS 3I ADEMÈS ESTAS MATRICES TIENEN UNA PROPORCIØN MUY ALTA DE CEROS SE DENOMI NAN POCO DENSAS 0OR OTRA PARTE LAS MATRICES CUADRADAS EN LAS QUE LOS ELEMENTOS QUE SE ENCUENTRAN ARRIBA O DEBAJO DE LA DIAGONAL PRINCIPAL SON IGUALES A CERO SE LLAMAN MATRICES TRIANGU LARES ²STAS SEGÞN LA UBICACIØN DE LOS CEROS SE CLASIlCAN EN MATRIZ TRIANGULAR INFERIOR SI LOS ELEMENTOS IGUALES A CERO SE ENCUENTRAN SOBRE LA DIAGONAL PRINCIPAL lG A Y EN MATRIZ TRIANGULAR SUPERIOR SI LOS ELEMENTOS IGUALES A CERO SE ENCUENTRAN DEBAJO DE LA DIAGONAL PRINCIPAL lG B

-ATRIZ TRIANGULAR INFERIOR 3UPONGAMOS QUE SE DESEA ALMACENAR EN UN ARREGLO UNIDIMENSIONAL " lG LA MATRIZ TRIANGULAR INFERIOR DE LA lGURA A %S FÈCIL OBSERVAR QUE EL ARREGLO " TENDRÈ N &)'52! -ATRICES CUADRADAS POCO DENSAS A -ATRIZ TRIANGULAR INFERIOR B -ATRIZ TRIANGULAR SUPERIOR


62

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4

&)'52! !LMACENAMIENTO DE UNA MATRIZ TRIANGULAR INFERIOR EN UN ARREGLO UNIDIMENSIONAL

ELEMENTOS QUE ES IGUAL A N N POR EL PRINCIPIO DE INDUCCIØN MATEMÈTICA #ABE SE×ALAR QUE EN LO QUE RESTA DE ESTE CAPÓ TULO ASÓ COMO EN LOS SIGUIENTES SE HARÈ USO DE ESTE PRINCIPIO !SUMIENDO QUE LOS ELEMENTOS DE LA MATRIZ TRIANGULAR INFERIOR FUERON ALMACENADOS EN UN ARREGLO UNIDIMENSIONAL SE REQUIERE ENCONTRAR UNA FØRMULA QUE PERMITA LOCALIZAR A CADA UNO DE ELLOS %N PRIMER LUGAR SE DEBE CONSIDERAR A 0/3).) QUE INDICA LA POSICIØN A PARTIR DE LA CUAL SE ENCUENTRA ALMACENADO EL ARREGLO PRIMER TÏRMINO DE LA FØRMULA %N GENERAL PARA LLEGAR A CUALQUIER RENGLØN I SE DEBEN CONTABILIZAR LOS ELEMENTOS CORRES PONDIENTES A I n RENGLONES 3E DEBE TENER EN CUENTA ENTONCES I n ELEMENTOS LO QUE ES IGUAL A

I I

SEGUNDO TÏRMINO DE LA FØRMULA

5NA VEZ EN EL RENGLØN I DESEADO SE DEBEN CONTABILIZAR LOS J n ELEMENTOS NECE SARIOS PARA LLEGAR A LA COLUMNA J TERCER TÏRMINO DE LA FØRMULA ,A SUMA DE LOS TRES TÏRMINOS DETERMINA LA LOCALIZACIØN DEL ELEMENTO I J DE LA MATRIZ TRIANGULAR INFERIOR EN UN ARREGLO UNIDIMENSIONAL ,A FØRMULA ES ,/# ! ; I J = 0/3).)

I I

J

▼ &ØRMULA

!SÓ POR EJEMPLO SI SE DESEA LOCALIZAR LA POSICIØN DEL ELEMENTO !; = DEL ARREGLO PRESENTADO EN LA lGURA A ALMACENADO EN UN ARREGLO UNIDIMENSIONAL APLICANDO LA FØRMULA SE TIENE ,/# ! ; = 3I EN CAMBIO SE DESEA LOCALIZAR LA POSICIØN DEL ELEMENTO !; = DEL ARREGLO PRE SENTADO EN LA lGURA A AL APLICAR LA FØRMULA SE TIENE ,/# ! ; =


."53*$&4 10$0 %&/4"4

63

-ATRIZ TRIANGULAR SUPERIOR 0ARA EL CASO DE LA MATRIZ TRIANGULAR SUPERIOR DE LA lGURA B SI SE ALMACENA EN UN ARRE GLO UNIDIMENSIONAL " lG ÏSTE TENDRÈ N ELEMENTOS QUE ES IGUAL A N N 3E REQUIERE ENTONCES DE UNA FØRMULA PARA LOCALIZAR LA POSICIØN DE UN ELEMENTO DE UNA MATRIZ TRIANGULAR SUPERIOR EN UN ARREGLO UNIDIMENSIONAL ! DIFERENCIA DEL CASO ANTERIOR MATRIZ TRIANGULAR INFERIOR EL PROCESO ES MÈS COMPLICADO %N PRIMER LUGAR SE DEBE CONSIDERAR A 0/3).) QUE REPRESENTA LA POSICIØN A PARTIR DE LA CUAL SE ENCUENTRA ALMACENADO EL ARREGLO PRIMER TÏRMINO DE LA FØRMULA %N SEGUNDO LUGAR SE DEBEN CONTABILIZAR LOS ELEMENTOS NECESARIOS PARA LLEGAR A UN RENGLØN I CUALQUIERA ESTO ES LOS ELEMENTOS CORRESPONDIENTES A LOS I n RENGLONES ANTERIORES A I %STE CÈLCULO SE PUEDE REALIZAR EN DOS PARTES 0RIMERO SE CONTABILIZAN LOS ELEMENTOS CORRESPONDIENTES A I n RENGLONES COMPLETOS N I n Y LUEGO SE RESTAN A ESTE RESULTADO LOS QUE SON CEROS EN LOS I n RENGLONES ANTERIORES A I 3I I → TENEMOS CEROS EN LOS RENGLONES ANTERIORES I → TENEMOS CEROS EN LOS RENGLONES ANTERIORES I → TENEMOS CERO EN LOS RENGLONES ANTERIORES I → TENEMOS CEROS EN LOS RENGLONES ANTERIORES %N GENERAL PODEMOS AlRMAR QUE PARA I n RENGLONES SE TIENEN I n CEROS QUE ES IGUAL A

I I ,A EXPRESIØN OBTENIDA EN LA PRIMERA PARTE MENOS LA FØRMULA OBTENIDA EN LA SEGUNDA DA COMO RESULTADO EL SEGUNDO TÏRMINO DE LA FØRMULA

&)'52! !LMACENAMIENTO DE UNA MATRIZ TRIANGULAR SUPERIOR EN UN ARREGLO UNIDIMEN SIONAL


64

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4

N I

I I

0OR ÞLTIMO Y UNA VEZ EN EL RENGLØN I DESEADO SE DEBEN CONTABILIZAR LOS J n I ELEMENTOS NECESARIOS PARA LLEGAR A LA COLUMNA J TERCER TÏRMINO DE LA FØRMULA ,A SUMA DE LOS TRES TÏRMINOS INDICA LA LOCALIZACIØN DEL ELEMENTO I J DE LA MATRIZ TRIANGULAR SUPERIOR EN UN ARREGLO UNIDIMENSIONAL ,A FØRMULA ES LA SIGUIENTE ¥ I I ´ ,/# ! ; I J = 0/3).) ¦ N I µ¶ J I §

▼ &ØRMULA

!SÓ POR EJEMPLO SI SE DESEA LOCALIZAR LA POSICIØN DEL ELEMENTO !; = DEL ARREGLO PRESENTADO EN LA lGURA B EN UN ARREGLO UNIDIMENSIONAL SE REALIZA LO SIGUIENTE ¥ ´ ,/# ; = ¦ µ¶ § 3I EN CAMBIO SE DESEA LOCALIZAR LA POSICIØN DEL ELEMENTO !; = DEL ARREGLO PRE SENTADO EN LA lGURA B ¥ ´ ,/# ! ; = ¦ µ¶ §

%JEMPLO

3UPONGAMOS QUE SE TIENE UNA MATRIZ TRIANGULAR INFERIOR ! CON LA SIGUIENTE DIMENSIØN !; = ALMACENADA EN UN ARREGLO UNIDIMENSIONAL " A PARTIR DE LA POSICIØN !NALICE LOS SIGUIENTES CASOS A 3E NECESITA LA POSICIØN DONDE SE ENCUENTRA ALMACENADO EL ELEMENTO !; = 3E PROCEDE DE ESTA FORMA ,/# ! ; =

B 3E NECESITA LA POSICIØN DEL ELEMENTO !; = 3E PROCEDE ASÓ ,/# ! ; =

%JEMPLO

3UPONGAMOS QUE SE TIENE UNA MATRIZ TRIANGULAR SUPERIOR ! CON LA SIGUIENTE DIMENSIØN !; = ALMACENADA EN UN ARREGLO UNIDIMENSIONAL " A PARTIR DE LA POSICIØN !NALICE LOS SIGUIENTES CASOS


."53*$&4 10$0 %&/4"4

65

A 3E NECESITA LA POSICIØN DEL ELEMENTO !; = 3E PROCEDE DE ESTA FORMA

´ ¥ ,/# ! ; = ¦ µ¶ § B 3E NECESITA LA POSICIØN DONDE SE ENCUENTRA ALMACENADO EL ELEMENTO !; = 3E PROCEDE ASÓ ¥ ´ ,/# ! ; = ¦ µ¶ §

-ATRIZ TRIDIAGONAL 3E DICE QUE UNA MATRIZ ES TRIDIAGONAL SI LOS ELEMENTOS DISTINTOS DE CERO SE ENCUENTRAN LOCALIZADOS EN LA DIAGONAL PRINCIPAL Y EN LAS DIAGONALES POR ENCIMA Y POR DEBAJO DE ÏSTA 0OR TANTO EL VALOR ABSOLUTO DEL ÓNDICE I MENOS EL ÓNDICE J SERÈ MENOR O IGUAL QUE %N LA lGURA EL LECTOR PUEDE OBSERVAR UNA MATRIZ TRIDIAGONAL 3UPONGAMOS QUE SE DESEA ALMACENAR EN UN ARREGLO UNIDIMENSIONAL " lGURA LA MATRIZ TRIDIAGONAL PRESENTADA ANTERIORMENTE %S FÈCIL OBSERVAR QUE EL ARREGLO ! TIENE N ELEMENTOS EN LA DIAGONAL PRINCIPAL Y N n ELEMENTOS EN LAS DIAGONALES POR ENCIMA Y DEBAJO DE ÏSTA 0OR TANTO EL NÞMERO DE ELEMENTOS DE UNA MATRIZ TRIDIAGONAL SE CALCULA COMO N N n !L HACER LAS OPERACIONES QUEDA N n #ON EL PROPØSITO DE LOCALIZAR LA POSICIØN DE UN ELEMENTO DE LA MATRIZ TRIDIAGONAL ALMACENADA EN UN ARREGLO UNIDIMENSIONAL SE REQUIERE DE UNA FØRMULA %N PRIMER LUGAR SE DEBE CONSIDERAR A 0/3).) QUE INDICA LA POSICIØN INICIAL A PARTIR DE LA CUAL SE EN CUENTRA ALMACENADO EL ARREGLO PRIMER TÏRMINO DE LA FØRMULA %N SEGUNDO LUGAR SE DEBEN CONTABILIZAR LOS ELEMENTOS NECESARIOS PARA LLEGAR A UN RENGLØN I CUALQUIERA ESTO ES LOS ELEMENTOS CORRESPONDIENTES A LOS I n RENGLONES ANTERIORES 3E CALCULA COMO LA SUMA DE LOS ELEMENTOS DE LA PRIMERA lLA MÈS TRES ELEMENTOS POR I n RENGLONES 0OR TANTO EL SEGUNDO TÏRMINO DE LA FØRMULA ES I n

&)'52! -ATRIZ TRIDIAGONAL


66

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4

&)'52! !LMACENAMIENTO DE UNA MATRIZ TRIDIAGONAL EN UN ARREGLO UNIDIMENSIONAL

0OR ÞLTIMO Y UNA VEZ EN EL RENGLØN I DESEADO SE DEBEN CONTABILIZAR LOS ELEMENTOS CORRESPONDIENTES A LAS COLUMNAS #ON ESTE lN SE SIGUE EL SIGUIENTE CRITERIO I J → NO SE TIENE QUE CONTABILIZAR NINGÞN ELEMENTO I J → SE DEBE CONTABILIZAR UN ELEMENTO I J → SE TIENEN QUE CONTABILIZAR DOS ELEMENTOS #ON LO CUAL SE OBTIENE LA SIGUIENTE EXPRESIØN J n I TERCER TÏRMINO DE LA FØRMULA /BSERVE QUE ESTA EXPRESIØN CONTEMPLA LOS TRES CASOS ENUNCIADOS 3I I J A LO SUMO LO SERÈ EN UNA UNIDAD POR TANTO LA EXPRESIØN DA CERO ELEMENTOS I J LOS MISMOS SE ANULAN QUEDANDO UN ELEMENTO I J A LO SUMO LO SERÈ EN UNA UNIDAD POR TANTO LA EXPRESIØN DA DOS ELEMENTOS .UEVAMENTE LA SUMA DE LOS TRES TÏRMINOS DA LA LOCALIZACIØN DEL ELEMENTO I J DE LA MATRIZ TRIDIAGONAL EN UN ARREGLO UNIDIMENSIONAL 0OR TANTO ,/# !;I J= 0/3).) I n J n I OPERANDO QUEDA

,/# !;I J= 0/3).) I J n

▼ &ØRMULA

!SÓ POR EJEMPLO SI SE DESEA LOCALIZAR LA POSICIØN DEL ELEMENTO !; = DEL ARREGLO PRESENTADO EN LA lGURA EN UN ARREGLO UNIDIMENSIONAL SE HACE ,/# !; = n 3I EN CAMBIO SE DESEA LOCALIZAR LA POSICIØN DEL ELEMENTO !; = DEL ARREGLO PRE SENTADO EN LA MISMA lGURA SE HACE ,/# !; = n 3E DEBE TENER EN CUENTA ADEMÈS QUE SI EL RENGLØN QUE SE EVALÞA ES IGUAL A SE PUEDE APLICAR LA SIGUIENTE FØRMULA


."53*$&4 10$0 %&/4"4

¥ ´ ,/# ¦ ! ¨©I J ·¸µ J § ª I ¹¶

67

▼ &ØRMULA

%S IMPORTANTE ACLARAR QUE LA FØRMULA ANTERIOR AUNQUE UN POCO MÈS LARGA TAMBIÏN FUNCIONA PARA ESTE CASO

%JEMPLO

3UPONGAMOS QUE SE TIENE UNA MATRIZ TRIDIAGONAL ! CON LA DIMENSIØN !; = AL MACENADA EN UN ARREGLO UNIDIMENSIONAL " A PARTIR DE LA POSICIØN !NALICEMOS LOS SIGUIENTES CASOS A 3E NECESITA LA POSICIØN DONDE SE ENCUENTRA EL ELEMENTO !; = 3E PROCEDE ASÓ ,/# ; = n B 3I SE NECESITA LA POSICIØN DONDE SE ENCUENTRA EL ELEMENTO !; = SE PROCEDE DE ESTA FORMA ,/# ; = n

-ATRICES SIMÏTRICAS Y ANTISIMÏTRICAS 5NA MATRIZ ! DE N § N ELEMENTOS ES SIMÏTRICA SI !;I J= ES IGUAL A !;J I= Y ESTO ÞLTIMO SE CUMPLE PARA TODO I Y PARA TODO J %N LA lGURA SE PRESENTAN DOS EJEMPLOS DE MATRICES SIMÏTRICAS 0OR OTRA PARTE UNA MATRIZ ! DE N § N ELEMENTOS ES ANTISIMÏTRICA SI !;I J= ES IGUAL A n!;J I= Y LO ANTERIOR SE CUMPLE PARA TODO I Y PARA TODO J CONSIDERANDO A I ≠ J %N LA lGURA SE OBSERVAN DOS EJEMPLOS DE MATRICES ANTISIMÏTRICAS 3UPONGAMOS AHORA QUE SE DESEA ALMACENAR EN UN ARREGLO UNIDIMENSIONAL " LA MA TRIZ SIMÏTRICA DE LA lGURA A %STO ÞLTIMO SE PUEDE HACER AL ALMACENAR ÞNICAMENTE LOS ELEMENTOS DE LA MATRIZ TRIANGULAR INFERIOR O SUPERIOR %N LA lGURA SE PRESENTA UN ARREGLO UNIDIMENSIONAL " QUE ALMACENA LA MATRIZ TRIANGULAR INFERIOR DE LA MATRIZ SIMÏ TRICA MOSTRADA EN LA lGURA A 0ARA LOCALIZAR CUALQUIER ELEMENTO DE LA MATRIZ SIMÏTRICA SE DEBE APLICAR LA FØRMULA PRESENTADA ANTERIORMENTE PARA MATRIZ TRIANGULAR INFERIOR #ABE ACLARAR QUE SI EN UN &)'52! -ATRICES SIMÏTRICAS B -ATRIZ SIMÏTRICA DE C -ATRIZ SIMÏTRICA DE


68

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4

&)'52! -ATRICES ANTISIMÏTRICAS B -ATRIZ ANTISIMÏTRICA DE C -ATRIZ ANTISIMÏTRICA DE

DETERMINADO MOMENTO SE NECESITARA LOCALIZAR UN ELEMENTO DE LA MATRIZ SIMÏTRICA TAL QUE EL ÓNDICE J SEA MAYOR QUE EL ÓNDICE I SE NECESITARÓAN INVERTIR LOS MISMOS Y APLICAR POSTE RIORMENTE LA MISMA FØRMULA 0OR EJEMPLO SI SE DESEA LOCALIZAR EL ELEMENTO !; = SE TENDRÈ QUE BUSCAR EL ELEMENTO !; = 3I AHORA SE DESEA ALMACENAR EN UN ARREGLO UNIDIMENSIONAL " LOS ELEMENTOS DE LA MATRIZ ANTISIMÏTRICA DE LA lGURA A SE PROCEDE DE MANERA SIMILAR QUE EN EL CASO AN TERIOR 3E ALMACENAN EN UN ARREGLO UNIDIMENSIONAL SOLAMENTE LOS ELEMENTOS DE LA MATRIZ TRIANGULAR INFERIOR O SUPERIOR %N LA lGURA SE PRESENTA UN ARREGLO UNIDIMENSIONAL " QUE ALMACENA LA MATRIZ TRIANGULAR SUPERIOR DE LA MATRIZ ANTISIMÏTRICA DE LA lGURA A 0ARA LOCALIZAR EN ESTE CASO UN ELEMENTO DE LA MATRIZ ANTISIMÏTRICA SE DEBE APLICAR LA FØRMULA PARA MATRIZ TRIANGULAR SUPERIOR %S IMPORTANTE SE×ALAR QUE SI SE TUVIERA QUE LOCALIZAR UN ELEMENTO DE LA MATRIZ ANTISIMÏTRICA TAL QUE EL ÓNDICE I SEA MAYOR QUE EL ÓNDICE J SE NECESITARÓA INVERTIR LOS MISMOS Y APLICAR LA MISMA FØRMULA 0OSTERIORMENTE EL CONTENIDO DE LA CELDA I J SE DEBE MULTIPLICAR POR n 0OR EJEMPLO SI NOS INTERESA LOCA LIZAR EL ELEMENTO !; = SE BUSCARÈ LA POSICIØN DEL ELEMENTO !; = Y EL CONTENIDO DE DICHA POSICIØN SE MULTIPLICARÈ POR n

&)'52! !LMACENAMIENTO DE UNA MATRIZ SIMÏTRICA EN UN ARREGLO UNIDIMENSIONAL

&)'52! !LMACENAMIENTO DE UNA MATRIZ ANTISIMÏTRICA EN UN ARREGLO UNIDIMENSIONAL


&+&3$*$*04

69

โ ผ %*%2#)#)/3 !RREGLOS MULTIDIMENSIONALES ร ยฃยฐ #ONSIDERE QUE EL ARREGLO BIDIMENSIONAL !; = SE ENCUENTRA ALMACENADO REN GLร N POR RENGLร N EN EL ARREGLO UNIDIMENSIONAL 6%# A PARTIR DE LA POSICIร N #ON SIDERE ADEMร S QUE EL ARREGLO BIDIMENSIONAL "; = TAMBIร N SE ENCUENTRA ALMACENADO EN EL ARREGLO 6%# COLUMNA A COLUMNA A PARTIR DE LA POSICIร N #ALCULE LO SIGUIENTE A B C D

,A POSICIร N DEL ELEMENTO !; = EN EL ARREGLO 6%# ,A POSICIร N DEL ELEMENTO !; = EN EL ARREGLO 6%# ,A POSICIร N DEL ELEMENTO "; = EN EL ARREGLO 6%# ,A POSICIร N DEL ELEMENTO "; = EN EL ARREGLO 6%#

ร ร ยฐ #ONSIDERE LOS ARREGLOS MULTIDIMENSIONALES !- Y "- DECLARADOS DE LA SIGUIENTE FORMA !-; = Y "-; = !- ESTร ALMACENADO RENGLร N POR RENGLร N EN EL ARREGLO UNIDIMENSIONAL 6%!- A PARTIR DE LA PRIMERA POSICIร N "- ESTร ALMACENADO COLUMNA A COLUMNA EN EL ARRE GLO UNIDIMENSIONAL 6%"- A PARTIR DE LA POSICIร N #ALCULE LO SIGUIENTE A B C D

,A POSICIร N DEL ELEMENTO !-; = EN EL ARREGLO 6%!- ,A POSICIร N DEL ELEMENTO !-; = EN EL ARREGLO 6%!- ,A POSICIร N DEL ELEMENTO "-; = EN EL ARREGLO 6%"- ,A POSICIร N DEL ELEMENTO "-; = EN EL ARREGLO 6%"-

ร ร ยฐ #ONSIDEREMOS QUE LOS ARREGLOS BIDIMENSIONALES ! Y " DE M ยง N ELEMENTOS SE EN CUENTRAN ALMACENADOS EN UN ARREGLO UNIDIMENSIONAL 6%# DE ยง M ยง N ELEMENTOS ! ESTร ALMACENADO RENGLร N POR RENGLร N A PARTIR DE LA PRIMERA POSICIร N " ESTร ALMA CENADO COLUMNA A COLUMNA A PARTIR DE LA POSICIร N M N %SCRIBA UN PROGRAMA QUE REALICE LO SIGUIENTE A /BTENGA LA SUMA DE LOS ARREGLOS BIDIMENSIONALES ALMACENADOS EN 6%# Y ALMACร NE LA EN EL ARREGLO UNIDIMENSIONAL 35- ORDENADO POR RENGLONES A PARTIR DE LA PRIMERA POSICIร N B )MPRIMA EL RESULTADO DE LA SUMA ALMACENADO EN 35- EN FORMA DE MATRIZ ร {ยฐ 3EAN LOS ARREGLOS BIDIMENSIONALES ! Y " DE M ยง N Y N ยง P ELEMENTOS RESPECTIVA MENTE AMBOS ALMACENADOS EN UN ARREGLO UNIDIMENSIONAL 6%# ! ESTร ALMACENADO RENGLร N POR RENGLร N A PARTIR DE LA POSICIร N Y " TAMBIร N SE ENCUENTRA ORDENADO POR RENGLONES A PARTIR DE LA POSICIร N M N %SCRIBA UN PROCEDIMIENTO QUE REALICE LO SIGUIENTE


70

>ยซย ร ร ย ย ร ร ร ร ร "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4 A /BTENGA EL PRODUCTO DE LOS ARREGLOS BIDIMENSIONALES ! Y " ALMACENADOS EN 6%# Y GUARDE EL RESULTADO EN EL MISMO ARREGLO COLUMNA A COLUMNA A PARTIR DE LA POSICIร N M N N P B )MPRIMA EL RESULTADO DEL PRODUCTO ALMACENADO EN 6%# EN FORMA DE MATRIZ ร xยฐ 3EA #!, UN ARREGLO BIDIMENSIONAL DE ยง CORRESPONDIENTE A LAS CALIlCACIONES DE ALUMNOS EN SEIS EXร MENES DIFERENTES #!, SE ENCUENTRA ALMACENADO RENGLร N POR RENGLร N A PARTIR DE LA POSICIร N EN EL ARREGLO UNIDIMENSIONAL 5.) %SCRIBA UN PROCEDIMIENTO QUE OBTENGA LO SIGUIENTE A %L PROMEDIO DE CALIlCACIONES DE LOS ALUMNOS EN LOS SEIS EXร MENES B %L ALUMNO QUE OBTUVO LA MAYOR CALIlCACIร N EN EL TERCER EXAMEN /BSERVE QUE PUE DE HABER Mร S DE UN ALUMNO CON LA Mร S ALTA CALIlCACIร N C %L EXAMEN EN EL QUE EL PROMEDIO DE LOS ALUMNOS FUE EL Mร S ALTO ร ร ยฐ #ONSIDERE EL ARREGLO TRIDIMENSIONAL !42) DE M ยง N ยง P ELEMENTOS ALMACENADOS COLUMNA A COLUMNA EN EL ARREGLO UNIDIMENSIONAL !5.) A PARTIR DE LA PRIMERA POSI CIร N %SCRIBA UN PROCEDIMIENTO QUE IMPRIMA LO SIGUIENTE A %L RENGLร N Y LA COLUMNA DONDE SE ENCUENTRAN ELEMENTOS NULOS USTED DEBE TRABAJAR CON EL ARREGLO !5.) B %L TOTAL DE ELEMENTOS NULOS C %L PORCENTAJE DE ELEMENTOS NULOS CON RESPECTO AL Nร MERO TOTAL DE ELEMENTOS DEL ARREGLO TRIDIMENSIONAL ร ร ยฐ ,OS ELEMENTOS DE UN ARREGLO BIDIMENSIONAL DE ยง ELEMENTOS SE ALMACENARON REN GLร N POR RENGLร N EN UN ARREGLO UNIDIMENSIONAL ! %SCRIBA UN SUBPROGRAMA QUE A )NTERCAMBIE LOS ELEMENTOS DEL RENGLร N CON LOS DEL RENGLร N . Y LOS DEL RENGLร N CON LOS DEL RENGLร N . n Y ASร SUCESIVAMENTE B )MPRIMA EL ARREGLO RESULTANTE EN FORMA DE MATRIZ

-ATRICES POCO DENSAS ร nยฐ 3EA 6%# UN ARREGLO UNIDIMENSIONAL QUE ALMACENA LOS ELEMENTOS DISTINTOS DE CERO DE UNA MATRIZ POCO DENSA ! DE CUATRO RENGLONES Y SEIS COLUMNAS #ADA ELEMENTO DEL ARREGLO 6%# ES UN REGISTRO QUE CONTIENE EL RENGLร N LA COLUMNA Y EL VALOR DISTINTO DE CERO DE LA MATRIZ %SCRIBA SUBPROGRAMAS QUE REALICEN LO SIGUIENTE A $ETERMINE EL VALOR DEL ELEMENTO I J DE LA MATRIZ 4OME EN CUENTA QUE LA Bร SQUEDA A REALIZAR EN EL ARREGLO 6%# DEBE SER ร PTIMA B )MPRIMA LA MATRIZ POCO DENSA ! A PARTIR DEL ARREGLO 6%#


&+&3$*$*04

71

Ê ° 3UPONGAMOS QUE EXISTEN DOS MATRICES POCO DENSAS ! Y " DE § ELEMENTOS QUE TIENEN ALMACENADOS SUS VALORES DISTINTOS DE CERO EN LOS ARREGLOS UNIDIMENSIONALES 6%# Y 6%# RESPECTIVAMENTE %JEMPLO

%SCRIBA UN SUBPROGRAMA QUE OBTENGA LA SUMA DE DICHAS MATRICES POCO DENSAS UTI LIZANDO SOLAMENTE LOS ARREGLOS 6%# Y 6%# Y ALMACENE EL RESULTADO CONSIDERE SOLAMENTE LOS ELEMENTOS DISTINTOS DE CERO EN EL ARREGLO UNIDIMENSIONAL 6%# £ä° #ONSIDERE LAS MATRICES POCO DENSAS ! Y " DECLARADAS DE LA SIGUIENTE FORMA !; = Y "; = ! SE ENCUENTRA ALMACENADA EN EL ARREGLO UNIDIMENSIONAL 6%# Y " EN EL ARREGLO UNIDIMENSIONAL 6%# %SCRIBA UN SUBPROGRAMA QUE OBTENGA EL PRODUCTO DE ! Y " UTILIZANDO SOLAMENTE LOS ARREGLOS 6%# Y 6%# Y ALMACENE EL RESULTADO COLUMNA A COLUMNA EN EL ARREGLO UNIDIMENSIONAL 6%#


72

>« ÌÕ ÊÓÊ Ê Ê "33&(-04 .6-5*%*.&/4*0/"-&4 3&13&4&/5"%04 &/ "33&(-04 6/*%*.&/4*0/"-&4 ££° 3E TIENEN LOS DATOS DE LA PRODUCCIØN AGRÓCOLA POR TIPO DE CULTIVO EN TOTAL DE LAS ENTIDADES DEL PAÓS .O TODOS LOS ESTADOS TIENEN TODOS LOS CULTIVOS %N AQUELLOS CASOS EN LOS CUALES UN ESTADO NO CULTIVA CIERTOS PRODUCTOS HABRÈ CEROS EN LAS POSI CIONES CORRESPONDIENTES %SCRIBA UN PROGRAMA QUE A !LMACENE LOS DATOS DIFERENTES DE CERO EN UN ARREGLO UNIDIMENSIONAL B %NCUENTRE EL ESTADO QUE OBTUVO MAYOR PRODUCCIØN AGRÓCOLA CONSIDERANDO TODOS LOS CULTIVOS C %NCUENTRE EL PRODUCTO SI EXISTIERA QUE SE CULTIVA EN TODOS LOS ESTADOS D %NCUENTRE EL ESTADO SI EXISTIERA QUE CULTIVA TODOS LOS PRODUCTOS E %NCUENTRE EL ESTADO SI EXISTIERA QUE CULTIVA SØLO LOS CULTIVOS DE TIPOS Y £Ó° ,AS MATRICES CUADRADAS POCO DENSAS ! Y " DE ORDEN FUERON ALMACENADAS EN EL ARREGLO UNIDIMENSIONAL 5.) A PARTIR DE LA PRIMERA Y DECIMOPRIMERA POSICIØN EN FORMA RESPECTIVA $E LA MATRIZ ! SOLAMENTE SE ALMACENARON LOS ELEMENTOS CORRES PONDIENTES A LA MATRIZ TRIANGULAR INFERIOR $E LA MATRIZ " EN CAMBIO SE ALMACENA RON SØLO LOS ELEMENTOS DE LA MATRIZ TRIANGULAR SUPERIOR %SCRIBA UN SUBPROGRAMA QUE SUME DICHAS MATRICES Y ALMACENE EL RESULTADO COLUMNA A COLUMNA EN EL ARREGLO UNIDIMENSIONAL 35-! A PARTIR DE LA PRIMERA POSICIØN

-ATRICES SIMÏTRICAS Y ANTISIMÏTRICAS £Î° ,AS MATRICES SIMÏTRICAS ! Y " DE DIMENSIØN FUERON ALMACENADAS EN UN ARREGLO UNIDIMENSIONAL 6%# A PARTIR DE LAS POSICIONES Y RESPECTIVAMENTE 3ØLO SE ALMACENARON LOS ELEMENTOS PERTENECIENTES A LA MATRIZ TRIANGULAR INFERIOR %SCRIBA UN SUBPROGRAMA QUE SUME DICHAS MATRICES Y ALMACENE EL RESULTADO RENGLØN POR RENGLØN EN EL ARREGLO 35-3)- A PARTIR DE LA POSICIØN £{° ,A MATRIZ SIMÏTRICA ! DE DIMENSIØN Y LA MATRIZ ANTISIMÏTRICA " DE LA MISMA DIMENSIØN FUERON ALMACENADAS EN EL ARREGLO UNIDIMENSIONAL 6%# A PARTIR DE LAS POSICIONES Y RESPECTIVAMENTE $E LA MATRIZ ! SOLAMENTE SE ALMACENARON LOS ELEMENTOS CORRESPONDIENTES A LA MATRIZ TRIANGULAR INFERIOR $E LA MATRIZ " SØLO SE ALMACENARON LOS ELEMENTOS DE LA MATRIZ TRIANGULAR SUPERIOR %SCRIBA UN SUBPROGRA MA QUE OBTENGA LA SUMA DE DICHAS MATRICES Y ALMACENE EL RESULTADO RENGLØN POR RENGLØN EN EL ARREGLO UNIDIMENSIONAL 35-! A PARTIR DE LA PRIMERA POSICIØN £x° 5NA PERSONA TIENE QUE VIAJAR DE UNA CIUDAD A OTRA VÓA TERRESTRE EN LA 2EPÞBLICA MEXICANA Y DESEA REALIZAR EL RECORRIDO EN EL MENOR TIEMPO POSIBLE ,OS DATOS REFE RENTES A LOS TIEMPOS ENTRE CIUDADES SE ENCUENTRAN DADOS DE LA SIGUIENTE FORMA


&+&3$*$*04

73

0UEDE SUCEDER QUE ENTRE DOS CIUDADES NO EXISTA UNA CARRETERA DIRECTA Y POR TAN TO EL TIEMPO ENTRE AMBAS SEA REPRESENTADO COMO 3IN EMBARGO ES POSIBLE LLEGAR A UNA CIUDAD INTERMEDIA Y DESDE AHÓ TRASLADARSE HASTA LA CIUDAD DESTINO 0OR EJEMPLO SI DE LA CIUDAD A LA NO HAY CARRETERA DIRECTA SE PODRÓA IR PRIMERO A LA CIUDAD SI EXISTE CARRETERA ENTRE LA Y LA Y LUEGO DE LA CIUDAD A LA SI ENTRE ELLAS EXISTEN CARRETERAS %SCRIBA UN PROGRAMA QUE REALICE LO SIGUIENTE A ,EA LOS TIEMPOS ENTRE LAS DISTINTAS CIUDADES Y LAS ALMACENE EN UN ARREGLO UNIDIMEN SIONAL B ,EA LA CIUDAD ORIGEN Y LA CIUDAD DESTINO C $ETERMINE EL MENOR TIEMPO DE TRASLADO ENTRE DICHAS CIUDADES D 0RESENTE LA RUTA A SEGUIR £È° 3E TIENE INFORMACIØN SOBRE COSTOS DE BOLETOS AÏREOS ENTRE . CIUDADES DEL PAÓS %L COSTO DEL BOLETO PARA IR DE LA CIUDAD I A LA CIUDAD J ES IGUAL AL COSTO DEL BOLETO PARA IR DE LA CIUDAD J A LA I 0OR TANTO SE PUEDE AHORRAR ESPACIO DE MEMORIA RECUERDE LO VISTO SOBRE MATRICES SIMÏTRICAS UTILIZANDO UN ARREGLO UNIDIMENSIONAL PARA AL MACENAR TODOS LOS COSTOS %SCRIBA UN PROGRAMA QUE A ,EA EL NÞMERO DE CIUDADES B ,EA LOS COSTOS Y LOS ALMACENE USANDO UN ARREGLO UNIDIMENSIONAL C $ADO EL NÞMERO DE UNA CIUDAD ORIGEN Y DE UNA CIUDAD DESTINO IMPRIMA EL COSTO DEL BOLETO CORRESPONDIENTE D $ADO EL NÞMERO DE UNA CIUDAD IMPRIMA LOS NÞMEROS DE TODAS LAS CIUDADES A LAS QUE HAY VUELO PARTIENDO DE LA CIUDAD ESPECÓlCA



#APÓTULO

Î

0),!3 9 #/,!3 ).42/$5##)¼. #UANDO SE PRESENTARON LOS ARREGLOS EN EL CAPÓTULO SE MENCIONØ QUE ERAN ESTRUCTURAS LINEALES %S DECIR CADA COMPONENTE TIENE UN ÞNICO SUCESOR Y UN ÞNICO PREDECESOR CON EXCEPCIØN DEL PRIMERO Y DEL ÞLTIMO RESPECTIVAMENTE 0OR OTRA PARTE AL ANALIZAR LAS OPE RACIONES DE INSERCIØN Y ELIMINACIØN SE OBSERVØ QUE LOS ELEMENTOS SE PODÓAN INSERTAR O ELIMINAR EN CUALQUIER POSICIØN DEL ARREGLO #ABE SE×ALAR SIN EMBARGO QUE EXISTEN PRO BLEMAS QUE POR SU NATURALEZA REQUIEREN QUE LOS ELEMENTOS SE AGREGUEN O SE QUITEN SØLO POR UN EXTREMO %STE CAPÓTULO SE DEDICA AL ESTUDIO DE PILAS Y COLAS QUE SON ESTRUCTURAS DE DATOS LINEALES CON RESTRICCIONES EN CUANTO A LA POSICIØN EN LA CUAL SE PUEDEN LLEVAR A CABO LAS OPERACIONES DE INSERCIØN Y ELIMINACIØN DE COMPONENTES

0),!3 5NA PILA REPRESENTA UNA ESTRUCTURA LINEAL DE DATOS EN LA QUE SE PUEDE AGREGAR O QUITAR ELEMENTOS ÞNICAMENTE POR UNO DE LOS DOS EXTREMOS %N CONSECUENCIA LOS ELEMENTOS DE UNA PILA SE ELIMINAN EN ORDEN INVERSO AL QUE SE INSERTARON ES DECIR EL ÞLTIMO ELEMENTO QUE SE METE EN LA PILA ES EL PRIMERO QUE SE SACA $EBIDO A ESTA CARACTERÓSTICA SE LE CO NOCE COMO ESTRUCTURA ,)&/ ,AST )NPUT &IRST /UTPUT EL ÞLTIMO EN ENTRAR ES EL PRIMERO EN SALIR %XISTEN NUMEROSOS CASOS PRÈCTICOS EN LOS QUE SE UTILIZA EL CONCEPTO DE PILA POR EJEMPLO UNA PILA DE PLATOS UNA PILA DE LATAS EN UN SUPERMERCADO UNA PILA DE LIBROS QUE SE EXHIBEN EN UNA LIBRERÓA ETCÏTERA %N LA lGURA SE OBSERVA UNA PILA DE PLATOS %S DE SUPONER QUE SI EL COCINERO NECESITA UN PLATO LIMPIO TOMARÈ EL QUE ESTÈ ENCIMA DE TODOS QUE ES EL ÞLTIMO QUE SE COLOCØ EN LA PILA ,AS PILAS SON ESTRUCTURAS DE DATOS LINEALES COMO LOS ARREGLOS YA QUE LOS COMPO NENTES OCUPAN LUGARES SUCESIVOS EN LA ESTRUCTURA Y CADA UNO DE ELLOS TIENE UN ÞNICO SUCE SOR Y UN ÞNICO PREDECESOR CON EXCEPCIØN DEL ÞLTIMO Y DEL PRIMERO RESPECTIVAMENTE 5NA PILA SE DElNE FORMALMENTE COMO UNA COLECCIØN DE DATOS A LOS CUALES SE PUEDE ACCEDER MEDIANTE UN EXTREMO QUE SE CONOCE GENERALMENTE COMO TOPE


76

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

&)'52! %JEMPLOS PRÉCTICOS DE PILAS

2EPRESENTACIØN DE PILAS ,AS PILAS NO SON ESTRUCTURAS FUNDAMENTALES DE DATOS ES DECIR NO ESTÈN DElNIDAS COMO TALES EN LOS LENGUAJES DE PROGRAMACIØN 0ARA SU REPRESENTACIØN REQUIEREN EL USO DE OTRAS ESTRUCTURAS DE DATOS COMO ◗ ◗

!RREGLOS ,ISTAS

%N ESTE LIBRO SE UTILIZARÈN ARREGLOS %N CONSECUENCIA ES IMPORTANTE DElNIR EL TAMA ×O MÈXIMO DE LA PILA ASÓ COMO UNA VARIABLE AUXILIAR A LA QUE SE DENOMINA 4/0% %STA VARIABLE SE UTILIZA PARA INDICAR EL ÞLTIMO ELEMENTO QUE SE INSERTØ EN LA PILA %N LA lGURA SE PRESENTAN DOS ALTERNATIVAS DE REPRESENTACIØN DE UNA PILA UTILIZANDO ARREGLOS

&)'52! 2EPRESENTACIØN DE PILAS


1*-"4

77

&)'52! 2EPRESENTACIØN DE PILAS A 0ILA LLENA B 0ILA CON ALGUNOS ELEMENTOS C 0ILA VACÓA

%N LA lGURA SE PRESENTAN EJEMPLOS DE A PILA LLENA B PILA CON ALGUNOS ELEMEN TOS Y C PILA VACÓA !L UTILIZAR ARREGLOS PARA IMPLEMENTAR PILAS SE TIENE LA LIMITACIØN DE QUE SE DEBE RESERVAR ESPACIO DE MEMORIA CON ANTICIPACIØN CARACTERÓSTICA PROPIA DE LOS ARREGLOS 5NA VEZ DADO UN MÈXIMO DE CAPACIDAD A LA PILA NO ES POSIBLE INSERTAR UN NÞMERO DE ELEMEN TOS MAYOR AL MÈXIMO ESTABLECIDO 3I LA PILA ESTUVIERA LLENA Y SE INTENTARA INSERTAR UN NUEVO ELEMENTO SE PRODUCIRÈ UN ERROR CONOCIDO COMO DESBORDAMIENTO OVERmOW 0OR EJEMPLO SI EN LA PILA QUE SE PRESENTA EN LA lGURA A DONDE 4/0% -!8 SE QUISIERA INSERTAR UN NUEVO ELEMENTO SE PRODUCIRÈ UN ERROR DE ESTE TIPO ,A PILA ESTÈ LLENA Y EL ESPACIO DE MEMORIA RESERVADO ES lJO NO SE PUEDE EXPANDIR NI CONTRAER 5NA POSIBLE SOLUCIØN A ESTE TIPO DE INCONVENIENTES CONSISTE EN DElNIR PILAS DE GRAN TAMA×O PERO ESTO ÞLTIMO RESULTARÓA INElCIENTE Y COSTOSO SI SØLO SE UTILIZARAN ALGUNOS ELEMENTOS .O SIEMPRE ES VIABLE SABER CON EXACTITUD CUÈL ES EL NÞMERO DE ELEMENTOS A TRATAR POR TANTO SIEMPRE EXISTE LA POSIBILIDAD DE COMETER UN ERROR DE DESBORDAMIENTO SI SE RESERVA MENOS ESPACIO DEL QUE EFECTIVAMENTE SE USARÈ O BIEN DE HACER USO INE lCIENTE DE LA MEMORIA SI SE RESERVA MÈS ESPACIO DEL QUE REALMENTE SE NECESITA %XISTE OTRA ALTERNATIVA DE SOLUCIØN A ESTE PROBLEMA #ONSISTE EN USAR ESPACIOS COM PARTIDOS DE MEMORIA PARA LA IMPLEMENTACIØN DE PILAS 3UPONGAMOS QUE SE NECESITAN DOS PILAS CADA UNA DE ELLAS CON UN TAMA×O MÈXIMO DE . ELEMENTOS 3E DElNIRÈ ENTON CES UN SOLO ARREGLO UNIDIMENSIONAL DE . ELEMENTOS EN LUGAR DE DOS ARREGLOS DE . ELEMENTOS CADA UNO #OMO SE ILUSTRA EN LA lGURA LA 0),! OCUPARÈ DESDE LA POSICIØN EN ADELANTE MIENTRAS QUE LA 0),! OCUPARÈ DESDE LA POSICIØN . HACIA ATRÈS . n . n 3I EN ALGÞN PUNTO DEL PROCESO LA 0),! NECESITARA MÈS ESPACIO DEL QUE REALMENTE TIENE . Y EN ESE MOMENTO LA 0),! NO TUVIERA OCUPADOS SUS . LUGARES ENTONCES SERÓA POSIBLE AGREGAR ELEMENTOS A LA 0),! SIN CAER EN UN ERROR DE DESBORDA MIENTO lGURA !LGO SIMILAR PODRÓA SUCEDER PARA LA 0),! SI ÏSTA NECESITARA MÈS DE . ESPACIOS Y LA 0),! TUVIERA LUGARES DISPONIBLES lGURA B


78

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

&)'52! 2EPRESENTACIØN DE PILAS EN ESPACIOS COMPARTIDOS

/TRO ERROR QUE SE PUEDE PRESENTAR AL TRABAJAR CON PILAS ES TRATAR DE ELIMINAR UN ELE MENTO DE UNA PILA VACÓA %STE TIPO DE ERROR SE CONOCE CØMO SUBDESBORDAMIENTO UN DERmOW 0OR EJEMPLO SI EN LA PILA QUE SE PRESENTA EN LA lGURA C DONDE 4/0% SE DESEARA ELIMINAR UN ELEMENTO SE PRESENTARÓA UN ERROR DE ESTE TIPO

/PERACIONES CON PILAS ,A DElNICIØN DE UNA ESTRUCTURA DE DATOS QUEDA COMPLETA AL INCLUIR LAS OPERACIONES QUE SE PUEDEN REALIZAR EN ELLA 0ARA EL CASO DE LAS PILAS LAS OPERACIONES BÈSICAS QUE SE PUEDEN LLEVAR A CABO SON ◗ ◗

&)'52! 2EPRESENTACIØN DE PILAS EN ESPACIOS COMPARTIDOS A 0),! TIENE MÉS DE . ELEMENTOS Y 0),! TIENE MENOS DE . ELEMENTOS B 0),! TIENE MÉS DE . ELEMENTOS Y 0),! TIENE MENOS DE . ELEMENTOS

)NSERTAR UN ELEMENTO 0USH EN LA PILA %LIMINAR UN ELEMENTO 0OP DE LA PILA


1*-"4

79

9 LAS OPERACIONES AUXILIARES ◗ ◗

0ILA?VACÓA 0ILA?LLENA

#ONSIDERANDO QUE SE TIENE UNA PILA CON CAPACIDAD PARA ALMACENAR UN NÞMERO MÈXI MO DE ELEMENTOS -!8 Y QUE EL ÞLTIMO DE ELLOS SE INDICA CON 4/0% A CONTINUA CIØN SE PRESENTAN LOS ALGORITMOS CORRESPONDIENTES A LAS OPERACIONES MENCIONADAS 3I LA PILA ESTÈ VACÓA ENTONCES 4/0% ES IGUAL A !LGORITMO 0ILA?VACÓA

0ILA?VACÓA 0),! 4/0% "!.$ [%STE ALGORITMO VERIlCA SI UNA ESTRUCTURA TIPO PILA 0),! ESTÈ VACÓA ASIGNANDO A "!.$ EL VALOR DE VERDAD CORRESPONDIENTE ,A PILA SE IMPLEMENTA EN UN ARREGLO UNIDIMENSIONAL 4/0% ES UN PARÈMETRO DE TIPO ENTERO "!.$ ES UN PARÈMETRO DE TIPO BOOLEANO] 3I 4/0% [6ERIlCA SI NO HAY ELEMENTOS ALMACENADOS EN LA PILA] ENTONCES (ACER "!.$ ← 6%2$!$%2/ [,A PILA ESTÈ VACÓA] SI NO (ACER "!.$ ← &!,3/ [,A PILA NO ESTÈ VACÓA] [&IN DEL CONDICIONAL DEL PASO ]

!LGORITMO 0ILA?LLENA

0ILA?LLENA 0),! 4/0% -!8 "!.$ [%STE ALGORITMO VERIlCA SI UNA ESTRUCTURA TIPO PILA 0),! ESTÈ LLENA ASIGNANDO A "!.$ EL VALOR DE VERDAD CORRESPONDIENTE ,A PILA SE IMPLEMENTA EN UN ARREGLO UNIDIMENSIONAL DE -!8 ELEMENTOS 4/0% ES UN PARÈMETRO DE TIPO ENTERO "!.$ ES UN PARÈMETRO DE TIPO BOOLEANO] 3I 4/0% -!8 ENTONCES (ACER "!.$ ← 6%2$!$%2/ [,A PILA ESTÈ LLENA] SI NO (ACER "!.$ ← &!,3/ [,A PILA NO ESTÈ LLENA] [&IN DEL CONDICIONAL DEL PASO ]


80

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 !LGORITMO 0ONE

0ONE 0),! 4/0% -!8 $!4/ [%STE ALGORITMO AGREGA EL ELEMENTO $!4/ EN UNA ESTRUCTURA TIPO PILA 0),! SI LA MISMA NO ESTÈ LLENA !CTUALIZA EL VALOR DE 4/0% -!8 REPRESENTA EL NÞMERO MÈXIMO DE ELEMENTOS QUE PUEDE ALMACENAR 0),! 4/0% ES UN PARÈMETRO DE TIPO ENTERO] ,LAMAR A 0ILA?LLENA CON 0),! 4/0% -!8 Y "!.$ 3I "!.$ 6%2$!$%2/ ENTONCES %SCRIBIR h$ESBORDAMIENTO n 0ILA LLENAv SI NO (ACER 4/0% ← 4/0% Y 0),!;4/0%= ← $!4/ [!CTUALIZA 4/0% E INSERTA EL NUEVO ELEMENTO EN EL 4/0% DE 0),!] [&IN DEL CONDICIONAL DEL PASO ]

!LGORITMO 1UITA 1UITA 0),! 4/0% $!4/ [%STE ALGORITMO SACA UN ELEMENTO $!4/ DE UNA ESTRUCTURA TIPO PILA 0),! SI ÏSTA NO SE ENCUENTRA VACÓA %L ELEMENTO QUE SE ELIMINA ES EL QUE SE ENCUENTRA EN LA POSICIØN INDICADA POR 4/0%] ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ 3I "!.$ 6%2$!$%2/ ENTONCES %SCRIBIR h3UBDESBORDAMIENTO n 0ILA VACÓAv SI NO (ACER $!4/ ← 0),! ;4/0%= Y 4/0% ← 4/0% n [!CTUALIZA 4/0%] [&IN DEL CONDICIONAL DEL PASO ]

! CONTINUACIØN SE PRESENTA UN EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DE LAS OPE RACIONES DE INSERCIØN Y ELIMINACIØN EN PILAS

%JEMPLO

3I SE INSERTARAN LOS ELEMENTOS LUNES MARTES MIÏRCOLES JUEVES Y VIERNES EN 0),! LA ESTRUCTURA QUEDARÓA TAL Y COMO SE MUESTRA EN LA lGURA A !HORA BIEN SI SE ELIMINARA EL ELEMENTO VIERNES EL 4/0% APUNTARÓA AHORA A JUEVES lG B 3I EN ALGÞN MOMENTO SE QUISIERA ELIMINAR AL ELEMENTO MARTES ESTO NO SERÓA POSIBLE YA QUE SØLO SE PUEDE TENER ACCESO AL ELEMENTO QUE SE ENCUENTRA EN LA CIMA DE LA PILA


1*-"4

81

&)'52! )NSERCIØN Y ELIMINACIØN EN PILAS

5NA FORMA DE RESOLVER ESTE PROBLEMA ES ELIMINAR PRIMERAMENTE LOS ELEMENTOS JUEVES Y MIÏRCOLES DE ESTA MANERA MARTES QUEDARÓA UBICADO EN LA CIMA DE 0),! Y AHORA SERÓA POSIBLE EXTRAERLO lGURAS A B Y C

!PLICACIONES DE PILAS ,AS PILAS SON UNA ESTRUCTURA DE DATOS MUY USADA EN LA SOLUCIØN DE DIVERSOS TIPOS DE PROBLEMAS EN EL ÈREA DE LA COMPUTACIØN !HORA SE ANALIZARÈN ALGUNOS DE LOS CASOS MÈS REPRESENTATIVOS DE APLICACIØN DE LAS MISMAS &)'52! )NSERCIØN Y ELIMINACIØN A ,UEGO DE SACAR JUEVES B ,UEGO DE SACAR MIÏR COLES C ,UEGO DE SACAR MARTES


82

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 ◗ ◗ ◗ ◗

,LAMADAS A SUBPROGRAMAS 2ECURSIVIDAD 4RATAMIENTO DE EXPRESIONES ARITMÏTICAS /RDENACIØN

,LAMADAS A SUBPROGRAMAS #UANDO SE TIENE UN PROGRAMA QUE LLAMA A UN SUBPROGRAMA TAMBIÏN CONOCIDO COMO MØDULO O FUNCIØN INTERNAMENTE SE USAN PILAS PARA GUARDAR EL ESTADO DE LAS VARIABLES DEL PROGRAMA ASÓ COMO LAS INSTRUCCIONES PENDIENTES DE EJECUCIØN EN EL MOMENTO QUE SE HACE LA LLAMADA #UANDO TERMINA LA EJECUCIØN DEL SUBPROGRAMA LOS VALORES ALMACENADOS EN LA PILA SE RECUPERAN PARA CONTINUAR CON LA EJECUCIØN DEL PROGRAMA EN EL PUNTO EN EL CUAL FUE INTERRUMPIDO !DEMÈS DE LAS VARIABLES SE RECUPERA LA DIRECCIØN DEL PROGRAMA EN LA QUE SE HIZO LA LLAMADA PORQUE A ESA POSICIØN SE REGRESA EL CONTROL DEL PROCESO 3UPONGAMOS POR EJEMPLO QUE SE TIENE UN PROGRAMA PRINCIPAL 00 QUE LLAMA A LOS SUBPROGRAMAS 5./ Y $/3 ! SU VEZ EL SUBPROGRAMA $/3 LLAMA AL 42%3 #ADA VEZ QUE LA EJECUCIØN DE UNO DE LOS SUBPROGRAMAS CONCLUYE SE REGRESA EL CONTROL AL NIVEL INMEDIATO SUPERIOR lG #UANDO EL PROGRAMA 00 LLAMA A 5./ SE GUARDA EN UNA PILA LA POSICIØN EN LA QUE SE HIZO LA LLAMADA lG A !L TERMINAR 5./ EL CONTROL SE REGRESA A 00 RECUPERANDO PREVIAMENTE LA DIRECCIØN DE LA PILA lG B !L LLAMAR A $/3 NUEVAMENTE SE GUARDA LA DIRECCIØN DE 00 EN LA PILA lG C #UANDO $/3 LLAMA A 42%3 SE PONE EN LA PILA LA DIRECCIØN DE $/3 lG D $ESPUÏS DE PROCESAR 42%3 SE RECUPERA LA POSICIØN DE $/3 PARA CONTINUAR CON SU EJECUCIØN lG E !L TERMINAR $/3 SE REGRESA EL CONTROL A 00 OBTENIENDO PREVIAMENTE LA DIRECCIØN GUARDADA EN LA PILA lG F &INALMENTE PODEMOS CONCLUIR QUE LAS PILAS SON NECESARIAS EN ESTE TIPO DE APLICACIO NES POR LO SIGUIENTE

&)'52! ,LAMADA A SUBPROGRAMAS


1*-"4

83

&)'52! !PLICACIØN DE PILAS LLAMA DAS A SUBPROGRAMAS

◗ ◗

0ERMITEN GUARDAR LA DIRECCIØN DEL PROGRAMA O SUBPROGRAMA DESDE DONDE SE HIZO LA LLAMADA A OTROS SUBPROGRAMAS PARA REGRESAR POSTERIORMENTE Y SEGUIR EJECUTÈNDOLO A PARTIR DE LA INSTRUCCIØN INMEDIATA A LA LLAMADA 0ERMITEN GUARDAR EL ESTADO DE LAS VARIABLES EN EL MOMENTO EN QUE SE HACE LA LLAMA DA PARA SEGUIR OCUPÈNDOLAS AL REGRESAR DEL SUBPROGRAMA

2ECURSIVIDAD %L CAPÓTULO ESTÈ DEDICADO AL ESTUDIO DE LA RECURSIVIDAD 3E DEJARÈ PARA ENTONCES LA APLI CACIØN DE PILAS EN PROCESOS RECURSIVOS

4RATAMIENTO DE EXPRESIONES ARITMÏTICAS 5N PROBLEMA INTERESANTE EN COMPUTACIØN CONSISTE EN CONVERTIR EXPRESIONES EN NOTACIØN INlJA A SU EQUIVALENTE EN NOTACIØN PRElJA O POSlJA O PRElJA 3E PRESENTA PRIMERO UNA BREVE INTRODUCCIØN A ESTOS CONCEPTOS ◗

$ADA LA EXPRESIØN ! " SE DICE QUE ÏSTA SE ENCUENTRA EN NOTACIØN INlJA PORQUE EL OPERADOR SE ENCUENTRA ENTRE LOS OPERANDOS ! Y "


84

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 ◗ ◗

$ADA LA EXPRESIØN !" SE DICE QUE ÏSTA SE ENCUENTRA EN NOTACIØN POSTlJA PORQUE EL OPERADOR SE ENCUENTRA DESPUÏS DE LOS OPERANDOS ! Y " $ADA LA EXPRESIØN !" SE DICE QUE ÏSTA SE ENCUENTRA EN NOTACIØN PRElJA PORQUE EL OPERADOR ESTÈ PRECEDIENDO A LOS OPERANDOS ! Y "

,A VENTAJA DE USAR EXPRESIONES EN NOTACIØN POSTlJA O PRElJA RADICA EN QUE NO SON NECESARIOS LOS PARÏNTESIS PARA INDICAR ORDEN DE OPERACIØN YA QUE ÏSTE QUEDA ESTABLECIDA POR LA UBICACIØN DE LOS OPERADORES CON RESPECTO A LOS OPERANDOS 0ARA CONVERTIR UNA EXPRESIØN DADA EN NOTACIØN INlJA A UNA EN NOTACIØN POSTlJA O PRElJA SE ESTABLECEN PRIMERO CIERTAS CONDICIONES ◗

3OLAMENTE SE MANEJARÈN LOS SIGUIENTES OPERADORES SE PRESENTAN DE MAYOR A ME NOR SEGÞN SEA SU PRIORIDAD DE EJECUCIØN /PERADOR >

◗ ◗ ◗

.OMBRE DE LA OPERACIØN 0OTENCIA

-ULTIPLICACIØN Y DIVISIØN

n

3UMA Y RESTA

,OS OPERADORES DE MÈS ALTA PRIORIDAD SE EJECUTAN PRIMERO 3I HUBIERA EN UNA EXPRESIØN DOS O MÈS OPERADORES DE IGUAL PRIORIDAD ENTONCES SE PROCESARÈN DE IZQUIERDA A DERECHA ,AS SUBEXPRESIONES QUE SE ENCUENTRAN ENTRE PARÏNTESIS TENDRÈN MÈS PRIORIDAD QUE CUALQUIER OPERADOR

3E PRESENTAN A CONTINUACIØN PASO A PASO ALGUNOS EJEMPLOS DE CONVERSIØN DE EXPRE SIONES INlJAS A NOTACIØN POSlJA

%JEMPLO

%N ESTE EJEMPLO SE EXPONEN DOS CASOS DE TRADUCCIØN DE NOTACIØN INlJA A POSlJA %L PRI MERO DE ELLOS ES UNA EXPRESIØN SIMPLE MIENTRAS QUE EL SEGUNDO PRESENTA MAYOR GRADO DE COMPLEJIDAD %N LA TABLA SE MUESTRAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DE LA PRIMERA EXPRESIØN Y EN LA TABLA LOS CORRESPONDIENTES A LA SEGUNDA EXPRESIØN A %XPRESIØN INlJA 8 : 7 %XPRESIØN POSlJA 8:7 %L PRIMER OPERADOR QUE SE PROCESA DURANTE LA TRADUCCIØN DE LA EXPRESIØN ES LA MUL TIPLICACIØN PASO DEBIDO A QUE ES EL DE MÈS ALTA PRIORIDAD 3E COLOCA EL OPERADOR DE

4!",! 4RADUCCIØN DE INlJA A POSlJA

EVhd

:megZh^ c

8 : 7

8 :7

8:7


1*-"4

85

TAL MANERA QUE LOS OPERANDOS AFECTADOS POR ÏL LO PRECEDAN 0ARA EL OPERADOR DE SUMA SE SIGUE EL MISMO CRITERIO LOS DOS OPERANDOS LO PRECEDEN %N ESTE CASO EL PRIMER OPERANDO ES 8 Y EL SEGUNDO ES :7 B %XPRESIØN INlJA 8 : 7 4 > 9 n 6 %XPRESIØN POSTlJA 8: 7 49> 6n 4!",! 4RADUCCIØN DE EXPRESIØN INlJA A POSlJA

0ASO

%XPRESIØN

8 : 7 4 > 9 n 6

8: 7 4 > 9 n 6

8: 7 49 > n 6

8: 7 49 > n 6

8: 7 49 > n 6

8: 7 49 > 6 n

%N EL PASO SE CONVIERTE LA SUBEXPRESIØN QUE SE ENCUENTRA ENTRE PARÏNTESIS POR SER LA DE MÈS ALTA PRIORIDAD ,UEGO SE SIGUE CON EL OPERADOR DE POTENCIA PASO Y ASÓ CON LOS DEMÈS SEGÞN SU JERARQUÓA #OMO CONSECUENCIA DE QUE LA MULTIPLICACIØN Y LA DIVI SIØN TIENEN IGUAL PRIORIDAD SE PROCESA PRIMERO LA MULTIPLICACIØN POR ENCONTRARSE MÈS A LA IZQUIERDA EN LA EXPRESIØN PASO %L OPERADOR DE LA RESTA ES EL ÞLTIMO QUE SE MUEVE PASO ! CONTINUACIØN SE PRESENTA EL ALGORITMO QUE TRADUCE UNA EXPRESIØN INlJA A OTRA POSlJA !LGORITMO #ONV?POSTlJA #ONV?POSTlJA %) %0/3 [%STE ALGORITMO TRADUCE UNA EXPRESIØN INlJA %) A POSTlJA %0/3 HACIENDO USO DE UNA PILA 0),! -!8 ES EL NÞMERO MÈXIMO DE ELEMENTOS QUE PUEDE ALMACENAR LA PILA] (ACER 4/0% ← -IENTRAS %) SEA DIFERENTE DE LA CADENA VACÓA 2EPETIR 4OMAR EL SÓMBOLO MÈS A LA IZQUIERDA DE %) 2ECORTAR LUEGO LA EXPRESIØN 3I EL SÓMBOLO ES PARÏNTESIS IZQUIERDO ENTONCES [0ONER SÓMBOLO EN 0),! 3E ASUME QUE HAY ESPACIO EN 0),!] ,LAMAR A 0ONE CON 0),! 4/0% -!8 Y SÓMBOLO SI NO 3I EL SÓMBOLO ES PARÏNTESIS DERECHO ENTONCES -IENTRAS 0),!;4/0%= ≠ PARÏNTESIS IZQUIERDO 2EPETIR ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ (ACER %0/3 ← %0/3 $!4/


86

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

[&IN DEL CICLO DEL PASO ] ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ [3E QUITA EL PARÏNTESIS IZQUIERDO DE 0),! Y NO SE AGREGA A %0/3] SI NO 3I EL SÓMBOLO ES UN OPERANDO ENTONCES !GREGAR SÓMBOLO A %0/3 SI NO [%S UN OPERADOR] ,LAMAR 0ILA?VACÓA CON 0),! 4/0% Y "!.$ ! -IENTRAS "!.$ &!,3/ Y LA PRIORIDAD DEL OPERADOR SEA MENOR O IGUAL QUE LA PRIORIDAD DEL OPERADOR QUE ESTÈ EN LA CIMA DE 0),! 2EPETIR ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ (ACER %0/3 ← %0/3 $!4/ ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ " [&IN DEL CICLO DEL PASO !] ,LAMAR A 0ONE CON 0),! 4/0% -!8 Y SÓMBOLO [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ -IENTRAS "!.$ &!,3/ 2EPETIR ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ (ACER %0/3 ← %0/3 $!4/ ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ [&IN DEL CICLO DEL PASO ] %SCRIBIR %0/3

#ABE SE×ALAR QUE PARA ESTE ALGORITMO SE MANEJA LA ESCALA DE PRIORIDADES PRESENTADA AL INICIO DE ESTA SECCIØN

%JEMPLO

%N ESTE EJEMPLO SE RETOMAN LOS CASOS DEL EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DEL ALGORITMO #ONV?POSlJA A %XPRESIØN INlJA 8 : 7 %XPRESIØN POSlJA 8:7 %N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DESEADA SIGUIENDO EL ALGORITMO %N LOS PASOS Y EL SÓMBOLO ANALIZADO UN OPERANDO SE AGREGA DIRECTAMENTE A %0/3 !L ANALIZAR EL OPERADOR PASO SE VERIlCA SI EN 0),! HAY OPERADORES CON MAYOR O IGUAL PRIORIDAD %N ESTE CASO 0),! ESTÈ VACÓA POR TANTO SE PONE EL SÓMBOLO EN EL TOPE DE ELLA #ON EL OPERADOR

PASO SUCEDE ALGO SIMILAR %N 0),! NO EXISTEN


1*-"4 4!",! 4RADUCCIØN DE EXPRESIØN INlJA A POSlJA

3ÓMBOLO ANALIZADO

0ASO

%)

8 : 7

: 7

8

: 7

7

7

0ILA

%0/3 8

8

:

8:

8:

7

8:7

87

8:7

8:7

OPERADORES DE MAYOR O IGUAL PRIORIDAD LA SUMA TIENE MENOR PRIORIDAD QUE LA MULTIPLI CACIØN POR LO QUE SE AGREGA EL OPERADOR A 0),! %N LOS DOS ÞLTIMOS PASOS Y SE EXTRAEN DE 0),! SUS ELEMENTOS AGREGÈNDOLOS A %0/3 B %XPRESIØN INlJA 8 : 7 4 > 9 n 6 %XPRESIØN POSTlJA 8: 7 49> 6n %N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DESEADA SIGUIENDO EL ALGORITMO ,OS PASOS QUE SE CONSIDERAN MÈS RELEVANTES SON EN EL PASO AL ANALIZAR EL PA RÏNTESIS DERECHO SE EXTRAEN REPETIDAMENTE TODOS LOS ELEMENTOS DE 0),! EN ESTE CASO SØLO EL OPERADOR AGREGÈNDOLOS A %0/3 HASTA ENCONTRAR UN PARÏNTESIS IZQUIERDO %L PARÏNTESIS IZQUIERDO SE QUITA DE 0),! PERO NO SE INCLUYE EN %0/3 RECUERDE QUE LAS EXPRESIONES EN NOTACIØN POLACA NO NECESITAN DE PARÏNTESIS PARA INDICAR PRIORIDADES #UANDO SE TRATA EL OPERADOR DE DIVISIØN PASO SE QUITA DE 0),! EL OPERADOR Y SE AGREGA A %0/3 YA QUE LA MULTIPLICACIØN TIENE IGUAL PRIORIDAD QUE LA DIVISIØN !L ANALI ZAR EL OPERADOR DE RESTA PASO SE EXTRAEN DE 0),! Y SE INCORPORAN A %0/3 TODOS LOS OPERADORES DE MAYOR O IGUAL PRIORIDAD EN ESTE CASO SON TODOS LOS QUE ESTÈN EN ELLA LA POTENCIA Y LA DIVISIØN AGREGANDO lNALMENTE EL SÓMBOLO EN 0),! ,UEGO DE AGREGAR A %0/3 EL ÞLTIMO OPERANDO Y HABIENDO REVISADO TODA LA EXPRESIØN INICIAL SE VACÓA 0),! Y SE INCORPORAN LOS OPERADORES EN ESTE CASO EL OPERADOR n A LA EXPRESIØN POSTlJA ! CONTINUACIØN SE PRESENTA EL ALGORITMO PARA CONVERTIR EXPRESIONES INlJAS A EXPRE SIONES ESCRITAS EN NOTACIØN PRElJA

%JEMPLO

%N ESTE EJEMPLO SE EXPONEN DOS CASOS DE TRADUCCIØN DE NOTACIØN INlJA A PRElJA %L PRI MERO DE ELLOS ES UNA EXPRESIØN SIMPLE MIENTRAS QUE EL SEGUNDO PRESENTA MAYOR GRADO DE COMPLEJIDAD A %XPRESIØN INlJA 8 : 7 %XPRESIØN PRElJA 8 :7


88

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

4!",! 4RADUCCIØN DE EXPRESIØN INlJA A POSTlJA

0ASO

%)

8 : 7 4 > 9 n 6

3ÓMBOLO ANALIZADO

0ILA

%0/3

8 : 7 4 > 9 n 6

: 7 4 > 9 n 6

8

8

: 7 4 > 9 n 6

8

7 4 > 9 n 6

:

8:

7 4 > 9 n 6

8:

8:

7 4 > 9 n 6

8:

4 > 9 n 6

7

8: 7

4 > 9 n 6

8: 7

8: 7

> 9 n 6

4

8: 7 4

9 n 6

>

>

8: 7 4

n 6

9

>

8: 7 49

n

8: 7 49 >

n

6

8: 7 49 >

n

n

8: 7 49 >

6

n

8: 7 49 > 6

8: 7 49 > 6 n

%N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DESEADA #OMO EN EL CASO DE LA NOTACIØN POSTlJA EJEMPLO AQUÓ TAMBIÏN EL OPERADOR DE MULTIPLICACIØN SE PROCESA PRIMERO $E LA TRADUCCIØN DE LA EXPRESIØN PASO RESULTA EL OPERADOR PRECEDIENDO A LOS OPERANDOS ,O MISMO PARA EL OPERADOR DE SUMA PASO B %XPRESIØN INlJA 8 : 7 4 > 9 n 6 %XPRESIØN PRElJA n 8:7>496 %N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DESEADA ,O PRIMERO QUE SE PROCESA EN ESTE CASO ES LA SUBEXPRESIØN QUE SE ENCUENTRA ENTRE PARÏNTESIS PASO %L ORDEN EN QUE SE PROCESAN LOS OPERADORES ES EL MISMO QUE SE SIGUIØ

4!",! 4RADUCCIØN DE EXPRESIØN INlJA A PRElJA

0ASO

%XPRESIØN

8 : 7

8 :7

8 :7


1*-"4 4!",! 4RADUCCIØN DE EXPRESIØN INlJA A PRElJA

0ASO

%XPRESIØN

8 : 7 4 > 9 n 6

8: 7 4 > 9 n 6

8: 7 > 49 n 6

8:7 > 49 n 6

8:7 > 49 n 6

n 8:7 > 496

89

PARA LA CONVERSIØN DE INlJA A POSlJA 0OR TANTO SERÓA REITERATIVO VOLVER A EXPLICAR PASO A PASO EL CONTENIDO DE LA TABLA 3IN EMBARGO ES DE DESTACAR LA POSICIØN QUE OCUPAN LOS OPERADORES CON RESPECTO A LOS OPERANDOS LOS PRIMEROS PRECEDEN A LOS SEGUNDOS ! CONTINUACIØN SE INCLUYE EL ALGORITMO DE CONVERSIØN DE NOTACIØN INlJA A PRElJA %STE ALGORITMO SE DIFERENCIA DEL ANTERIOR BÈSICAMENTE EN EL HECHO DE QUE LOS ELEMENTOS DE LA EXPRESIØN EN NOTACIØN INlJA SE RECORRERÈN DE DERECHA A IZQUIERDA !LGORITMO #ONV?PRElJA

#ONV?PRElJA %) %02% [%STE ALGORITMO TRADUCE UNA EXPRESIØN EN NOTACIØN INlJA %) A PRElJA %02% HACIENDO USO DE UNA PILA 0),! ] [4/0% ES UNA VARIABLE DE TIPO ENTERO Y -!8 REPRESENTA EL MÈXIMO NÞMERO DE ELEMENTOS QUE PUEDE ALMACENAR LA PILA] (ACER 4/0% ← -IENTRAS %) SEA DIFERENTE DE LA CADENA VACÓA 2EPETIR 4OMAR EL SÓMBOLO MÈS A LA DERECHA DE %) RECORTANDO LUEGO LA EXPRESIØN 3I EL SÓMBOLO ES PARÏNTESIS DERECHO ENTONCES [0ONER SÓMBOLO EN PILA] ,LAMAR A 0ONE CON 0),! 4/0% -!8 Y SÓMBOLO SI NO 3I SÓMBOLO ES PARÏNTESIS IZQUIERDO ENTONCES -IENTRAS 0),!;4/0%= ≠ PARÏNTESIS DERECHO 2EPETIR ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ (ACER %02% ← %02% $!4/ [&IN DEL CICLO DEL PASO ] [3ACAMOS EL PARÏNTESIS DERECHO DE 0),! Y NO SE AGREGA A %02%] ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ SI NO 3I SÓMBOLO ES UN OPERANDO ENTONCES !GREGAR SÓMBOLO A %02%


90

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

SI NO [%S UN OPERADOR] ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ ! -IENTRAS "!.$ &!,3/ Y LA PRIORIDAD DEL OPERADOR SEA MENOR QUE LA PRIORIDAD DEL OPERADOR QUE ESTÈ EN LA CIMA DE 0),! 2EPETIR ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ (ACER %02% ← %02% $!4/ ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ " [&IN DEL CICLO DEL PASO !] ,LAMAR A 0ONE CON 0),! 4/0% -!8 Y SÓMBOLO [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ -IENTRAS "!.$ &!,3/ 2EPETIR ,LAMAR A 1UITA CON 0),! 4/0% Y $!4/ (ACER %02% ← %02% $!4/ ,LAMAR A 0ILA?VACÓA CON 0),! 4/0% Y "!.$ [&IN DEL CICLO DEL PASO ] %SCRIBIR %02% EN FORMA INVERTIDA

%JEMPLO

3E ANALIZAN NUEVAMENTE LOS CASOS DEL EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DEL ALGORITMO A %XPRESIØN INlJA 8 : 7 %XPRESIØN PRElJA 8 :7 %N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DESEADA SIGUIENDO EL ALGORITMO

4!",! 4RADUCCIØN DE EXPRESIØN INlJA A PRElJA

0ASO

%)

8 : 7

8 :

3ÓMBOLO ANALIZADO

0ILA

7

%02%

7

8 :

7

8

:

7:

8

7:

8

7: 8

7:

7: 8 )NVERTIR %02%

8 :7


1*-"4

91

%L OPERADOR DE MULTIPLICACIØN SE PONE EN 0),! AL SER EXAMINADO PASO !L ESTAR VACÓA 0),! NO HAY OTROS OPERADORES QUE SE PUDIERAN QUITAR SEGÞN SU PRIORIDAD ANTES DE PONER EL OPERADOR %N CAMBIO AL ANALIZAR EL OPERADOR DE SUMA PASO SE COMPARA SU PRIORIDAD CON LA DEL OPERADOR DEL TOPE DE 0),! %N ESTE CASO ES MENOR POR TANTO SE EXTRAE EL ELEMENTO DEL TOPE DE 0),! Y SE AGREGA A LA EXPRESIØN PRElJA PONIENDO l NALMENTE EL OPERADOR EN 0),! #UANDO LA EXPRESIØN DE ENTRADA QUEDA VACÓA ES DECIR QUE YA SE HAN ANALIZADO TODOS SUS SÓMBOLOS SE EXTRAE REPETIDAMENTE CADA ELEMENTO DE 0),! Y SE AGREGA A LA EXPRESIØN PRElJA HASTA QUE 0),! QUEDE VACÓA B %XPRESIØN INlJA 8 : 7 4 > 9 n 6 %XPRESIØN PRElJA n 8:7>496 %N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA LOGRAR LA TRADUCCIØN DESEADA SIGUIENDO EL ALGORITMO #OMO LA EXPRESIØN SE RECORRE DE DERECHA A IZQUIERDA EL PRIMER OPERADOR QUE SE PROCESA ES LA RESTA PASO 0ERO ÏSTE ES EL OPERADOR DE LA EXPRESIØN DE MÈS BAJA PRIORI

4!",! 4RADUCCIØN DE EXPRESIØN INlJA A PRElJA

0ASO

%)

3ÓMBOLO ANALIZADO

8 : 7 4 > 9 n 6

8 : 7 4 > 9 n

6

8 : 7 4 > 9

n

0ILA

%02%

6 n

6

8 : 7 4 >

9

n

69

8 : 7 4

>

n >

69

8 : 7

4

n >

694

8 : 7

n n

694> 694>

8 :

7

n

694>7

8 :

n

694>7

8 :

n

694>7

8

:

n

694>7:

8

n

694>7:

8

n

694>7:8

n

694>7:8

n

694>7:8

n

694>7:8

n

694>7:8

694>7:8 n )NVERTIR %02%

n 8:7>496


92

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 DAD POR TANTO PERMANECERÈ EN 0),! HASTA EL lNAL DEL PROCESO DE CONVERSIØN PASO #UANDO SE ENCUENTRA UN PARÏNTESIS DERECHO PASO SE AGREGA DIRECTAMENTE A 0),! MIENTRAS QUE CUANDO EL SÓMBOLO ANALIZADO ES UN PARÏNTESIS IZQUIERDO PASO SE EXTRAE REPETIDAMENTE CADA ELEMENTO DE 0),! AGREGÈNDOLO A %02% HASTA QUE SE ENCUENTRA UN PARÏNTESIS DERECHO ²STE SE RETIRA DE 0),! Y NO SE AGREGA A %02% #UANDO YA SE ANA LIZARON TODOS LOS SÓMBOLOS DE LA EXPRESIØN SE PROCEDE A QUITAR DE 0),! SUS ELEMENTOS A×ADIÏNDOLOS A %02% &INALMENTE SE INVIERTE %02% PARA OBTENER LA EXPRESIØN EN NOTA CIØN PRElJA PASO 0ARA EVITAR EL ÞLTIMO PASO DEL ALGORITMO INVERTIR LA EXPRESIØN SE PODRÓAN IR CONCATENANDO LOS SÓMBOLOS EN %02% EN ORDEN INVERSO

/RDENACIØN /TRA APLICACIØN DE LAS PILAS SE PUEDE VER EN EL MÏTODO DE ORDENACIØN RÈPIDA #OMO EL TEMA DE ORDENACIØN ES AMPLIAMENTE TRATADO EN EL CAPÓTULO SE SUGIERE REMITIRSE A ÏL

,A CLASE 0ILA ,A CLASE 0ILA TIENE ATRIBUTOS Y MÏTODOS ,OS ATRIBUTOS SON LA COLECCIØN DE ELEMENTOS Y EL 4/0% ,OS MÏTODOS POR OTRA PARTE SON TODAS AQUELLAS OPERACIONES ANALIZADAS EN LA SECCIØN ANTERIOR 0ILA?VACÓA 0ILA?LLENA 0ONE Y 1UITA %N LA lGURA SE PUEDE OBSERVAR GRÈlCAMENTE LA CLASE 0ILA 3E TIENE ACCESO A LOS MIEMBROS DE UN OBJETO DE LA CLASE 0ILA POR MEDIO DE LA NOTA CIØN DE PUNTOS !L ASUMIR QUE LA VARIABLE 0)/"* REPRESENTA UN OBJETO DE LA CLASE 0ILA PREVIAMENTE CREADO SE PUEDE HACER 0)/"* 0ILA?LLENA PARA INVOCAR EL MÏTODO QUE DETERMINA SI LA PILA ESTÈ LLENA O NO %N ESTE MÏTODO NO HAY ARGUMENTOS YA QUE TODOS LOS VALORES REQUERIDOS SON MIEMBROS DE LA CLASE 0)/"* 0ONE ARGUMENTO PARA INSERTAR UN NUEVO ELEMENTO EN LA PILA %N ESTE MÏTODO SØLO HAY UN ARGUMENTO QUE INDICA EL VALOR A GUARDAR EN LA PILA LOS DEMÈS VALORES REQUE RIDOS SON MIEMBROS DE LA CLASE

&)'52! #LASE 1JMB


$0-"4

93

#/,!3 5NA COLA CONSTITUYE UNA ESTRUCTURA LINEAL DE DATOS EN LA QUE LOS NUEVOS ELEMENTOS SE INTRODUCEN POR UN EXTREMO Y LOS YA EXISTENTES SE ELIMINAN POR EL OTRO %S IMPORTANTE SE×ALAR QUE LOS COMPONENTES DE LA COLA SE ELIMINAN EN EL MISMO ORDEN EN EL CUAL SE INSERTARON %S DECIR EL PRIMER ELEMENTO QUE SE INTRODUCE EN LA ESTRUCTURA SERÈ EL QUE SE ELIMINARÈ EN PRIMER ORDEN $EBIDO A ESTA CARACTERÓSTICA LAS COLAS TAMBIÏN RECIBEN EL NOMBRE DE ESTRUCTURAS &)&/ &IRST )N &IRST /UT EL PRIMERO EN ENTRAR ES EL PRIMERO EN SALIR

&)'52! %JEMPLOS PRÉCTICOS DE COLAS


94

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 %XISTEN NUMEROSOS CASOS DE LA VIDA REAL EN LOS CUALES SE USA ESTE CONCEPTO 0OR EJEMPLO LA COLA DE LOS BANCOS EN LAS QUE LOS CLIENTES ESPERAN PARA SER ATENDIDOS LA PRIMERA PERSONA DE LA COLA SERÈ LA PRIMERA EN RECIBIR EL SERVICIO LA COLA DE LOS NI×OS QUE ESPERAN A VECES PACIENTEMENTE PARA SUBIR A UN JUEGO MECÈNICO LAS COLAS DE LOS VEHÓCULOS ESPERANDO LA LUZ VERDE DEL SEMÈFORO LAS COLAS PARA ENTRAR A UN CINE TEATRO O ESTADIO DE FÞTBOL ETCÏTERA

2EPRESENTACIØN DE COLAS ,AS COLAS AL IGUAL QUE LAS PILAS NO EXISTEN COMO ESTRUCTURAS DE DATOS ESTÈNDAR EN LOS LENGUAJES DE PROGRAMACIØN %STE TIPO DE ESTRUCTURA DE DATOS SE PUEDE REPRESENTAR ME DIANTE EL USO DE ◗ ◗

!RREGLOS ,ISTAS

!L IGUAL QUE EN EL CASO DE LAS PILAS EN ESTE LIBRO SE UTILIZARÈN ARREGLOS PARA MOS TRAR SU FUNCIONAMIENTO 3IN EMBARGO LA IMPLEMENTACIØN MEDIANTE LISTAS ES INCLUSO MÈS SENCILLA %L LECTOR PUEDE IMPLEMENTAR LOS ALGORITMOS NECESARIOS PARA COLAS DESPUÏS DE ESTUDIAR EL CAPÓTULO QUE SE DEDICA A LA ESTRUCTURA LINEAL DE DATOS #UANDO SE IMPLEMENTAN CON ARREGLOS UNIDIMENSIONALES ES IMPORTANTE DElNIR UN TAMA×O MÈXIMO PARA LA COLA Y DOS VARIABLES AUXILIARES 5NA DE ELLAS PARA QUE ALMA CENE LA POSICIØN DEL PRIMER ELEMENTO DE LA COLA &2%.4% Y OTRA PARA QUE GUARDE LA POSICIØN DEL ÞLTIMO ELEMENTO DE LA COLA &).!, %N LA lGURA SE MUESTRA LA REPRESENTACIØN DE UNA COLA EN LA CUAL SE HAN INSERTADO TRES ELEMENTOS Y EN ESE ORDEN %L ELEMENTO ESTÈ EN EL &2%.4% YA QUE FUE EL PRIMERO QUE SE INSERTØ MIENTRAS QUE EL ELEMENTO QUE FUE EL ÞLTIMO EN ENTRAR ESTÈ EN EL &).!, DE LA COLA

&)'52! 2EPRESENTACIØN DE COLAS


$0-"4

95

&)'52! 2EPRESENTACIØN DE COLAS A #OLA LLENA B #OLA CON ALGUNOS ELEMENTOS C #OLA VACÓA

%N LA lGURA POR OTRA PARTE SE PRESENTAN EJEMPLOS DE A COLA LLENA B COLA CON ALGUNOS ELEMENTOS Y C COLA VACÓA

/PERACIONES CON COLAS ,A DElNICIØN DE LA ESTRUCTURA DE DATOS TIPO COLA QUEDA COMPLETA AL INCLUIR LAS OPERACIO NES QUE SE PUEDEN REALIZAR EN ELLA ,AS OPERACIONES BÈSICAS QUE PUEDEN EFECTUARSE SON ◗ ◗

)NSERTAR UN ELEMENTO EN LA COLA %LIMINAR UN ELEMENTO DE LA COLA

,AS INSERCIONES SE LLEVARÈN A CABO POR EL &).!, DE LA COLA MIENTRAS QUE LAS ELIMI NACIONES SE HARÈN POR EL &2%.4% RECUERDE QUE EL PRIMERO EN ENTRAR ES EL PRIMERO EN SALIR #ONSIDERANDO QUE UNA COLA PUEDE ALMACENAR UN MÈXIMO NÞMERO DE ELEMENTOS Y QUE ADEMÈS &2%.4% INDICA LA POSICIØN DEL PRIMER ELEMENTO Y &).!, LA POSICIØN DEL ÞLTIMO SE PRESENTAN A CONTINUACIØN LOS ALGORITMOS CORRESPONDIENTES A LAS OPERACIONES MENCIONADAS !LGORITMO )NSERTA?COLA

)NSERTA?COLA #/,! -!8 &2%.4% &).!, $!4/ [%STE ALGORITMO INSERTA EL ELEMENTO $!4/ AL lNAL DE UNA ESTRUCTURA TIPO COLA &2%.4% Y &).!, SON LOS PUNTEROS QUE INDICAN RESPECTIVAMENTE EL INICIO Y lN DE #/,! ,A PRIMERA VEZ &2%.4% Y &).!, TIENEN EL VALOR YA QUE LA COLA ESTÈ VACÓA -!8 ES EL MÈXIMO NÞMERO DE ELEMENTOS QUE PUEDE ALMACENAR LA COLA]


96

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

3I &).!, -!8 [6ERIlCA QUE HAY ESPACIO LIBRE] ENTONCES (ACER &).!, ← &).!, [!CTUALIZA &).!,] Y #/,!;&).!,= ← $!4/ 3I &).!, ENTONCES [3E INSERTØ EL PRIMER ELEMENTO DE #/,!] (ACER &2%.4% ← [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h$ESBORDAMIENTO n #OLA LLENAv [&IN DEL CONDICIONAL DEL PASO ]

!LGORITMO %LIMINA?COLA %LIMINA?COLA #/,! &2%.4% &).!, $!4/ [%STE ALGORITMO ELIMINA EL PRIMER ELEMENTO DE UNA ESTRUCTURA TIPO COLA Y LO ALMACENA EN $!4/ &2%.4% Y &).!, SON LOS PUNTEROS QUE INDICAN RESPECTIVAMENTE EL INICIO Y lN DE LA COLA] 3I &2%.4% ≠ [6ERIlCA QUE LA COLA NO ESTÏ VACÓA] ENTONCES (ACER $!4/ ← #/,! ;&2%.4%= 3I &2%.4% &).!, [3I HAY UN SOLO ELEMENTO] ENTONCES (ACER &2%.4% ← Y &).!, ← [)NDICA #/,! VACÓA] SI NO (ACER &2%.4% ← &2%.4% [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h3UBDESBORDAMIENTO n #OLA VACÓAv [&IN DEL CONDICIONAL DEL PASO ]

%S POSIBLE DElNIR ALGORITMOS AUXILIARES PARA DETERMINAR SI UNA COLA ESTÈ LLENA O VA CÓA ! PARTIR DE ESTOS ALGORITMOS SE PODRÓAN REESCRIBIR LOS ALGORITMOS Y ! CONTINUACIØN SE PRESENTAN LOS ALGORITMOS QUE PERMITEN VERIlCAR EL ESTADO DE UNA COLA QUEDANDO COMO TAREA SUGERIDA LA REESCRITURA DE LOS DOS ALGORITMOS ANTERIORES !LGORITMO #OLA?VACÓA #OLA?VACÓA #/,! &2%.4% "!.$ [%STE ALGORITMO DETERMINA SI UNA ESTRUCTURA DE DATOS TIPO COLA ESTÈ VACÓA ASIGNANDO A "!.$ EL VALOR DE VERDAD CORRESPONDIENTE] 3I &2%.4%


$0-"4

97

ENTONCES (ACER "!.$ ← 6%2$!$%2/ SI NO (ACER "!.$ ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ]

!LGORITMO #OLA?LLENA #OLA?LLENA #/,! &).!, -!8 "!.$ [%STE ALGORITMO DETERMINA SI UNA ESTRUCTURA DE DATOS TIPO COLA ESTÈ LLENA ASIGNANDO A "!.$ EL VALOR DE VERDAD CORRESPONDIENTE -!8 ES EL NÞMERO MÈXIMO DE ELEMENTOS QUE PUEDE ALMACENAR #/,!] 3I &).!, -!8 ENTONCES (ACER "!.$ ← 6%2$!$%2/ SI NO (ACER "!.$ ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ]

!QUÓ SE INCLUYE UN EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DE LAS OPERACIONES DE INSERCIØN Y ELIMINACIØN EN COLAS

%JEMPLO

&)'52! )NSERCIØN Y ELIMINACIØN EN COLAS

2ETOME EL EJEMPLO DE LA SECCIØN 3E INSERTAN EN #/,! LOS ELEMENTOS LUNES MARTES MIÏRCOLES JUEVES Y VIERNES EN ESE ORDEN DE MODO QUE LA ESTRUCTURA QUEDA COMO SE MUESTRA EN LA lGURA 0ARA ESTE EJEMPLO -!8


98

>« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4

&)'52! )NSERCIØN Y ELIMINACIØN EN COLAS A ,UEGO DE ELIMINAR LUNES B ,UEGO DE INSERTAR SÉBADO

%L ELEMENTO LUNES ES EL PRIMERO QUE SE PUEDE ELIMINAR POR SER EL PRIMERO QUE SE INSERTØ EN LA COLA ,UEGO DE LA ELIMINACIØN &2%.4% GUARDA LA POSICIØN DEL SIGUIENTE ELEMENTO lG A 3I AHORA SE INSERTARA SÈBADO ÏSTE OCUPARÓA AHORA LA POSICIØN SI GUIENTE AL ELEMENTO VIERNES lG B !NALICE LO QUE OCURRE EN LA COLA SI SE LLEVAN A CABO LAS SIGUIENTES OPERACIONES 3E ELIMINAN MARTES MIÏRCOLES JUEVES Y VIERNES lG A 3E INSERTA DOMINGO lG B 3E ELIMINA SÈBADO lG C &)'52! )NSERCIØN Y ELIMINACIØN EN COLAS A ,UEGO DE ELIMINAR MARTES MIÏRCOLES JUEVES Y VIERNES B ,UEGO DE INSERTAR DOMINGO C ,UEGO DE ELIMINAR SÉBADO


$0-"4

99

$ESPUÏS DE INSERTAR AL ELEMENTO DOMINGO YA NO SE PUEDEN INSERTAR NUEVOS ELEMEN TOS A LA COLA PORQUE &).!, ES IGUAL QUE -!8 &).!, -!8 3IN EMBARGO COMO LO REmEJA LA lGURA C EXISTE ESPACIO DISPONIBLE DESPERDICIADO /BSERVE QUE LUEGO DE INSERTAR DOMINGO SE LLEGØ A UNA SITUACIØN CONmICTIVA PORQUE A PESAR DE QUE HAY ESPACIO DISPONIBLE NO SE PUEDEN INSERTAR OTROS ELEMENTOS %STE INCON VENIENTE SE PUEDE SUPERAR PERFECTAMENTE SI MANEJAMOS LAS COLAS EN FORMA CIRCULAR

#OLAS CIRCULARES 5NA COLA CIRCULAR CONSTITUYE UNA ESTRUCTURA DE DATOS LINEAL EN LA CUAL EL SIGUIENTE ELE MENTO DEL ÞLTIMO EN REALIDAD ES EL PRIMERO $E ESTA FORMA SE UTILIZA DE MANERA MÈS ElCIENTE LA MEMORIA DE LA COMPUTADORA %N LA lGURA SE MUESTRA LA REPRESENTACIØN GRÈlCA DE UNA COLA CIRCULAR %N LA lGURA SE ILUSTRA CØMO SE ACTUALIZAN LOS PUNTEROS &2%.4% Y &).!, EN UNA COLA CIRCULAR A MEDIDA QUE SE INSERTAN O ELIMINAN ELEMENTOS %N LA lGURA A LA COLA TIENE ALGUNOS ELEMENTOS &2%.4% Y &).!, %N LA lGURA B SE HAN ELI

&)'52! 2EPRESENTACIØN DE COLAS CIRCULARES A &RENTE &INAL B &RENTE &INAL C &RENTE &INAL


100 >« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 MINADO DE LA COLA DOS ELEMENTOS PRIMERO SE QUITØ 88 Y LUEGO 99 QUEDANDO &2%. 4% 0OR ÞLTIMO EN LA lGURA C SE HA INSERTADO UN NUEVO ELEMENTO 00 EN LA COLA #OMO &).!, -!8 SE LLEVØ EL APUNTADOR A LA PRIMERA POSICIØN QUE ESTABA VACÓA &).!, $E ESTA MANERA SE LOGRA MEJOR APROVECHAMIENTO DEL ESPACIO DE MEMORIA YA QUE AL ELIMINAR UN ELEMENTO LA CASILLA CORRESPONDIENTE DE LA COLA QUEDA DISPONIBLE PARA FUTURAS INSERCIONES ! CONTINUACIØN SE PRESENTAN LOS ALGORITMOS DE INSERCIØN Y ELIMINACIØN EN COLAS CIRCULARES !LGORITMO )NSERTA?CIRCULAR )NSERTA?CIRCULAR #/,!#)2 -!8 &2%.4% &).!, $!4/ [%STE ALGORITMO INSERTA EL ELEMENTO $!4/ AL lNAL DE UNA ESTRUCTURA TIPO COLA CIRCULAR #/ ,!#)2 &2%.4% Y &).!, SON LOS PUNTEROS QUE INDICAN RESPECTIVAMENTE EL INICIO Y EL lN DE LA COLA CIRCULAR -!8 ES EL NÞMERO MÈXIMO DE ELEMENTOS QUE PUEDE ALMACENAR #/,!#)2] 3I &).!, -!8 Y &2%.4% O &).!, &2%.4% ENTONCES %SCRIBIR h$ESBORDAMIENTO n #OLA LLENAv SI NO 3I &).!, -!8 ENTONCES (ACER &).!, ← SI NO (ACER &).!, ← &).!, [&IN DEL CONDICIONAL DEL PASO ] (ACER #/,!#)2;&).!,= ← $!4/ 3I &2%.4% ENTONCES (ACER &2%.4% ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

!LGORITMO %LIMINA?CIRCULAR %LIMINA?CIRCULAR #/,!#)2 -!8 &2%.4% &).!, $!4/ [%STE ALGORITMO ELIMINA EL PRIMER ELEMENTO DE UNA ESTRUCTURA TIPO COLA CIRCULAR #/,!#)2 Y LO ALMACENA EN $!4/ &2%.4% Y &).!, SON LOS PUNTEROS QUE INDICAN RESPECTIVAMENTE EL INICIO Y lN DE LA ESTRUCTURA -!8 ES EL TAMA×O DE #/,!#)2] 3I &2%.4% [6ERIlCA SI LA COLA ESTÈ VACÓA] ENTONCES %SCRIBIR h3UBDESBORDAMIENTO n #OLA VACÓAv


$0-"4

101

SI NO (ACER $!4/ ← #/,!#)2;&2%.4%= 3I &2%.4% &).!, [3I HAY SØLO UN ELEMENTO] ENTONCES (ACER &2%.4% ← Y &).!, ← SI NO 3I &2%.4% -!8 ENTONCES (ACER &2%.4% ← SI NO (ACER &2%.4% ← &2%.4% [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

! CONTINUACIØN SE PRESENTA UN EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DE LAS OPE RACIONES DE INSERCIØN Y ELIMINACIØN EN COLAS CIRCULARES

%JEMPLO

%N LA lGURA A SE PRESENTA UNA ESTRUCTURA TIPO COLA CIRCULAR DE MÈXIMO ELEMENTOS -!8 EN LA CUAL YA SE HAN ALMACENADO ALGUNOS VALORES %N LA lGURA B SE MUESTRA EL ESTADO DE LA COLA LUEGO DE INSERTAR EL ELEMENTO .. 3I SE QUISIERA INSERTAR OTRO ELEMENTO SE PRESENTARÓA UN ERROR DE DESBORDAMIENTO YA QUE &).!, &2%.4% ! CONTINUACIØN SE ELIMINAN LOS VALORES 88 99 :: ++ 44 Y 66 EN ESE ORDEN ,A COLA QUEDA COMO SE MUESTRA EN LA lGURA

&)'52! )NSERCIØN Y ELIMINACIØN EN COLAS CIRCULARES A %STADO INICIAL DE LA COLA CIRCULAR B ,UEGO DE INSERTAR ..


102 >« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 &)'52! )NSERCIØN Y ELIMINACIØN EN COLAS CIRCULARES

!HORA SE ELIMINA EL SIGUIENTE ELEMENTO 22 !L SER &2%.4% -!8 SE LE DA EL VALOR DE lGURA &)'52! )NSERCIØN Y ELIMINACIØN EN COLAS CIRCULARES

!L ELIMINAR .. COMO &2%.4% &).!, ES DECIR SØLO QUEDABA UN ELEMENTO EN LA COLA ACTUALIZAMOS LOS DOS PUNTEROS EN CERO ,A COLA QUEDA VACÓA lGURA &)'52! )NSERCIØN Y ELIMINACIØN EN COLAS CIRCULARES

$OBLE COLA 5NA DOBLE COLA O BICOLA ES UNA GENERALIZACIØN DE UNA ESTRUCTURA DE DATOS TIPO COLA %N UNA DOBLE COLA LOS ELEMENTOS SE PUEDEN INSERTAR O ELIMINAR POR CUALQUIERA DE LOS DOS EXTREMOS %S DECIR SE PUEDEN INSERTAR Y ELIMINAR VALORES TANTO POR EL &2%.4% COMO POR EL &).!, DE LA COLA 5NA DOBLE COLA SE REPRESENTA COMO SE MUESTRA EN LA lGURA /B SERVE QUE LAS DOS mECHAS EN CADA EXTREMO INDICAN QUE AMBAS OPERACIONES SON POSIBLES


$0-"4

103

&)'52! 2EPRESENTACIØN DE DOBLE COLA

%XISTEN DOS VARIANTES DE LAS DOBLES COLAS ◗ ◗

$OBLE COLA CON ENTRADA RESTRINGIDA $OBLE COLA CON SALIDA RESTRINGIDA

,A PRIMERA DE ELLAS PERMITE QUE LAS ELIMINACIONES SE REALICEN POR CUALESQUIERA DE LOS DOS EXTREMOS MIENTRAS QUE LAS INSERCIONES SØLO POR EL &).!, DE LA COLA lG ,A SEGUNDA VARIANTE PERMITE QUE LAS INSERCIONES SE REALICEN POR CUALQUIERA DE LOS DOS EXTREMOS MIENTRAS QUE LAS ELIMINACIONES SØLO POR EL &2%.4% DE LA COLA lG

&)'52! $OBLE COLA CON ENTRADA RESTRINGIDA

&)'52! $OBLE COLA CON SALIDA RESTRINGIDA

!PLICACIONES DE COLAS %L CONCEPTO DE COLA ESTÈ LIGADO A COMPUTACIØN 5NA APLICACIØN COMÞN DE LAS COLAS SE PRESENTA CUANDO SE ENVÓA A IMPRIMIR ALGÞN DOCUMENTO O PROGRAMA EN LAS COLAS DE IMPRE SIØN #UANDO HAY UNA SOLA IMPRESORA PARA ATENDER A VARIOS USUARIOS SUELE SUCEDER QUE ALGUNOS DE ELLOS SOLICITEN LOS SERVICIOS DE IMPRESIØN AL MISMO TIEMPO O MIENTRAS EL DIS POSITIVO ESTÈ OCUPADO %N ESTOS CASOS SE FORMA UNA COLA CON LOS TRABAJOS QUE ESPERAN PARA SER IMPRESOS ÏSTOS SE PROCESARÈN EN EL ORDEN EN EL CUAL FUERON INTRODUCIDOS EN LA COLA


104 >« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 /TRO CASO DE APLICACIONES DE COLAS EN COMPUTACIØN ES EL QUE SE PRESENTA EN LOS SIS TEMAS DE TIEMPO COMPARTIDO 6ARIOS USUARIOS COMPARTEN CIERTOS RECURSOS COMO #05 Y MEMORIA DE LA COMPUTADORA ,OS RECURSOS SE ASIGNAN A LOS PROCESOS QUE ESTÈN EN COLA DE ESPERA SUPONIENDO QUE TODOS TIENEN UNA MISMA PRIORIDAD EN EL ORDEN EN EL CUAL FUERON INTRODUCIDOS EN LA COLA

,A CLASE #OLA ,A CLASE #OLA TIENE ATRIBUTOS Y MÏTODOS COMO CUALQUIER CLASE ,OS ATRIBUTOS SON LA COLECCIØN DE ELEMENTOS Y LOS PUNTEROS &2%.4% Y &).!, ,OS MÏTODOS POR OTRA PARTE SON TODAS LAS OPERACIONES ANALIZADAS EN LAS SECCIONES ANTERIORES #OLA?VACÓA #OLA?LLE NA )NSERTA?COLA Y %LIMINA?COLA %N LA lGURA SE PUEDE OBSERVAR GRÈlCAMENTE A LA CLASE #OLA 3E TIENE ACCESO A LOS MIEMBROS DE UN OBJETO DE LA CLASE #OLA POR MEDIO DE LA NOTACIØN DE PUNTOS #UANDO SE ASUME QUE LA VARIABLE #//"* ES UN OBJETO DE LA CLASE #OLA PREVIAMENTE CREADO SE PUEDE HACER #//"* #OLA?LLENA PARA INVOCAR EL MÏTODO QUE DETERMINA SI LA COLA ESTÈ O NO LLENA %N ESTE MÏTODO NO HAY ARGUMENTOS YA QUE TODOS LOS VALORES REQUERIDOS SON MIEMBROS DE LA CLASE #//"* )NSERTA?COLA ARGUMENTO PARA INSERTAR UN NUEVO ELEMENTO EN LA COLA %N ESTE MÏTODO HAY UN ÞNICO ARGUMENTO QUE ES EL DATO A INSERTAR TODOS LOS OTROS VALORES REQUERIDOS SON MIEMBROS DE LA CLASE

&)'52! #LASE #OLA°


&+&3$*$*04

105

▼ %*%2#)#)/3 0ILAS Ê £° 4RADUZCA LAS SIGUIENTES EXPRESIONES A NOTACIØN POSlJA MEDIANTE EL ALGORITMO A B C D E F

8 : 7 4 n 6 : n 7 9 8 > + 8 > : n 4 7 8 n 9 4 n : : 8 9 4 > 7 7 : + n 4

Ê Ó° 4RADUZCA LAS SIGUIENTES EXPRESIONES A NOTACIØN PRElJA CON EL ALGORITMO A B C D E F

8 n 4 > : : + n 7 8 > 9 n 4 8 4 7 + : 8 n 7 > + : n 8 > : : n 9 > + 7 8 n : 4 n 9 > +

Ê Î° %SCRIBA UN PROGRAMA QUE LEA UNA EXPRESIØN EN NOTACIØN INlJA Y LA TRADUZCA A NOTA CIØN POSlJA Ê {° %SCRIBA UN PROGRAMA QUE LEA UNA EXPRESIØN EN NOTACIØN POSlJA Y LA TRADUZCA A NOTACIØN PRElJA Ê x° %SCRIBA UN PROGRAMA QUE EVALÞE CON LA AYUDA DE UNA PILA UNA EXPRESIØN ARITMÏTICA DADA EN NOTACIØN PRElJA Ê È° %SCRIBA UN PROGRAMA QUE EVALÞE CON LA AYUDA DE UNA PILA UNA EXPRESIØN ARITMÏTICA DADA EN NOTACIØN POSlJA Ê Ç° %SCRIBA UN SUBPROGRAMA QUE INSERTE UN ELEMENTO EN UNA PILA #ONSIDERE TODOS LOS CASOS QUE SE PUEDAN PRESENTAR Ê n° %SCRIBA UN SUBPROGRAMA QUE ELIMINE UN ELEMENTO EN UNA PILA #ONSIDERE TODOS LOS CASOS QUE SE PUEDAN PRESENTAR Ê ° $IBUJE LOS DISTINTOS ESTADOS DE UNA ESTRUCTURA TIPO PILA SI SE LLEVAN A CABO LAS SI GUIENTES OPERACIONES -UESTRE CØMO VAN QUEDANDO LA PILA Y EL PUNTERO AL TOPE DE LA MISMA #ONSIDERE QUE LA PILA ESTÈ INICIALMENTE VACÓA 4/0% Y TIENE UNA CAPACIDAD MÈXIMA PARA ELEMENTOS


106 >« ÌÕ ÊÎÊ Ê Ê 1*-"4 : $0-"4 A B C D E F G H I

)NSERTAR 0),! 8 )NSERTAR 0),! 9 %LIMINAR 0),! : %LIMINAR 0),! 4 %LIMINAR 0),! 5 )NSERTAR 0),! 6 )NSERTAR 0),! 7 %LIMINAR 0),! 0 )NSERTAR 0),! 2 ◗ ◗

z#ON CUÈNTOS ELEMENTOS QUEDØ LA PILA z(UBO ALGÞN CASO DE ERROR DESBORDAMIENTO O SUBDESBORDAMIENTO 3I OCURRIØ ALGÞN ERROR EXPLÓQUELO

£ä° %SCRIBA UN SUBPROGRAMA QUE ELIMINE LOS ELEMENTOS REPETIDOS DE UNA PILA ,OS ELE MENTOS REPETIDOS OCUPAN POSICIONES SUCESIVAS ££° %SCRIBA UN SUBPROGRAMA QUE INVIERTA LOS ELEMENTOS DE UNA PILA £Ó° $ElNA LA CLASE 0ILA USANDO ALGÞN LENGUAJE ORIENTADO A OBJETOS CON BASE EN LOS AL GORITMOS PRESENTADOS PARA PROGRAMAR LOS MÏTODOS PARA INSERTAR ELIMINAR Y VERIlCAR EL ESTADO DE LA PILA

#OLAS £Î° 3EA # UNA COLA CIRCULAR DE ELEMENTOS )NICIALMENTE LA COLA ESTÈ VACÓA &2%.4% &).!, $IBUJE EL ESTADO DE # LUEGO DE REALIZAR CADA UNA DE LAS SIGUIENTES OPERACIONES A )NSERTAR LOS ELEMENTOS !! "" Y ## B %LIMINAR EL ELEMENTO !! C )NSERTAR LOS ELEMENTOS $$ %% Y && D )NSERTAR EL ELEMENTO '' E )NSERTAR EL ELEMENTO (( F %LIMINAR LOS ELEMENTOS "" Y ## ◗ ◗

z#ON CUÈNTOS ELEMENTOS QUEDØ # z(UBO ALGÞN CASO DE ERROR DESBORDAMIENTO O SUBDESBORDAMIENTO 3I OCU RRIØ ALGÞN ERROR EXPLÓQUELO

£{° %SCRIBA UN SUBPROGRAMA QUE INSERTE UN ELEMENTO EN UNA COLA CIRCULAR #ONSIDERE TODOS LOS CASOS QUE SE PUEDAN PRESENTAR £x° %SCRIBA UN SUBPROGRAMA QUE ELIMINE UN ELEMENTO DE UNA COLA CIRCULAR #ONSIDERE TODOS LOS CASOS QUE SE PUEDAN PRESENTAR


&+&3$*$*04

107

£È° 5TILICE UNA ESTRUCTURA DE COLA PARA SIMULAR EL MOVIMIENTO DE CLIENTES EN UNA COLA DE ESPERA DE UN BANCO SE PUEDE AUXILIAR CON LOS SUBPROGRAMAS ESCRITOS EN LOS EJERCICIOS Y £Ç° %SCRIBA UN SUBPROGRAMA QUE INVIERTA LOS ELEMENTOS DE UNA COLA £n°Ê$ElNA UN ALGORITMO PARA INSERTAR UN ELEMENTO EN UNA DOBLE COLA £ ° $ElNA UN ALGORITMO PARA ELIMINAR UN ELEMENTO DE UNA DOBLE COLA Óä°Ê3EA # UNA DOBLE COLA CIRCULAR DE ELEMENTOS )NICIALMENTE LA DOBLE COLA ESTÈ VACÓA &2%.4% &).!, $IBUJE EL ESTADO DE LA COLA DESPUÏS DE REALIZAR CADA UNA DE LAS SIGUIENTES OPERACIONES A B C D

)NSERTAR POR EL EXTREMO DERECHO TRES ELEMENTOS ! " Y # %LIMINAR POR EL EXTREMO IZQUIERDO UN ELEMENTO )NSERTAR POR EL EXTREMO IZQUIERDO DOS ELEMENTOS $ Y % %LIMINAR POR LA DERECHA UN ELEMENTO

Ó£° $ElNA LA CLASE #OLA MEDIANTE ALGÞN LENGUAJE DE PROGRAMACIØN ORIENTADO A OBJETOS TOMANDO COMO BASE PARA PROGRAMAR LOS MÏTODOS LOS ALGORITMOS ESTUDIADOS PARA INSERTAR ELIMINAR Y VERIlCAR EL ESTADO DE LA COLA ÓÓ° 3E TIENE UNA COLA DE IMPRESIØN DONDE SE ALMACENAN LAS CLAVES DE LOS DOCUMENTOS QUE SE DEBEN IMPRIMIR %N LA MEDIDA EN QUE LLEGA UN NUEVO TRABAJO ÏSTE SE ENCOLA #UANDO LA IMPRESORA SE LIBERA SE TOMA UN TRABAJO DE LA COLA Y SE IMPRIME 5TILICE LA CLASE PREVIAMENTE DElNIDA PARA DECLARAR EL OBJETO #OLA)MPRESIØN Y EMPLÏELO EN EL DESARROLLO DE LA APLICACIØN DESCRITA



#APÓTULO

{

2%#523)¼. ).42/$5##)¼. ,A RECURSIØN O RECURSIVIDAD ES UN CONCEPTO AMPLIO CON MUCHAS VARIANTES Y DIFÓCIL DE PRECISAR CON POCAS PALABRAS !PARECE EN NUMEROSAS ACTIVIDADES DE LA VIDA DIARIA POR EJEMPLO EN UNA FOTOGRAFÓA DONDE SE OBSERVA OTRA FOTOGRAFÓA /TRO CASO ILUSTRATIVO ES EL QUE SE PRESENTA EN LOS PROGRAMAS DE TELEVISIØN EN LOS CUALES UN PERIODISTA TRANSlERE EL CONTROL DE LA NOTICIA A OTRO PERIODISTA QUE SE ENCUENTRA EN OTRA CIUDAD Y ÏSTE A SU VEZ HACE LO MISMO CON UN TERCERO #UANDO ESTE ÞLTIMO TERMINA SU PARTICIPACIØN REGRESA EL CONTROL AL SEGUNDO Y CUANDO ÏSTE TAMBIÏN lNALIZA SU INTERVENCIØN REGRESA EL CONTROL AL PRIMERO %N ESTE CAPÓTULO NOS LIMITAREMOS A TRATAR LA RECURSIØN COMO HERRAMIENTA DE PROGRAMACIØN ,A RECURSIØN ES UN RECURSO MUY PODEROSO QUE PERMITE EXPRESAR SOLUCIONES SIMPLES Y NATURALES A CIERTOS TIPOS DE PROBLEMAS %S IMPORTANTE CONSIDERAR QUE NO TODOS LOS PRO BLEMAS SON NATURALMENTE RECURSIVOS ALGUNOS SÓ LO SON Y OTROS NO 5N OBJETO RECURSIVO ES AQUEL QUE APARECE EN LA DElNICIØN DE SÓ MISMO ASÓ COMO EL QUE SE LLAMA A SÓ MISMO ,OS ÈRBOLES POR EJEMPLO QUE SE ESTUDIARÈN EN EL CAPÓTULO REPRESENTAN LAS ESTRUCTURAS DE DATOS NO LINEALES Y DINÈMICAS MÈS ElCIENTES QUE EXISTEN ACTUALMENTE EN COMPUTACIØN ,A CARACTERÓSTICA DE LOS ÈRBOLES ES QUE SON ESTRUCTURAS IN HERENTEMENTE RECURSIVAS %S DECIR EN CUALQUIER ACTIVIDAD DE PROGRAMACIØN QUE SE REALICE CON ÈRBOLES SE UTILIZA LA RECURSIVIDAD ,A RECURSIØN SE PUEDE PRESENTAR DE DOS MANERAS DIFERENTES A $IRECTA EL PROGRAMA O SUBPROGRAMA SE LLAMA DIRECTAMENTE A SÓ MISMO 0OR EJEM PLO OBSERVE QUE EN LA lGURA 0 REPRESENTA UN PROGRAMA Y EN ALGUNA PARTE DE ÏL APARECE UNA LLAMADA A SÓ MISMO B )NDIRECTA EL SUBPROGRAMA LLAMA A OTRO SUBPROGRAMA Y ÏSTE EN ALGÞN MOMENTO LLAMA NUEVAMENTE AL PRIMERO 0OR EJEMPLO EN LA lGURA EL SUBPROGRAMA 0 LLAMA AL SUBPROGRAMA 1 Y ÏSTE A SU VEZ INVOCA AL PRIMERO ES DECIR EL CONTROL REGRESA A 0 %N TODA DElNICIØN RECURSIVA DE UN PROBLEMA SIEMPRE SE DEBEN ESTABLECER DOS PASOS DIFERENTES Y MUY IMPORTANTES EL PASO BÈSICO Y EL PASO RECURSIVO %L PRIMERO UNO O VARIOS DEPENDIENDO DEL PROBLEMA SE UTILIZA COMO CONDICIØN DE PARADA O lN DE LA RECUR SIVIDAD ! ÏSTE LLEGAMOS CUANDO ENCONTRAMOS LA SOLUCIØN DEL PROBLEMA O CUANDO DECI DIMOS QUE YA NO VAMOS A SEGUIR PORQUE NO ESTÈN DADAS LAS CONDICIONES PARA HACERLO %L


110 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ &)'52! 2ECURSIØN DIRECTA

PASO SEGUNDO POR OTRA PARTE PROPICIA LA RECURSIVIDAD 3E PUEDEN PRESENTAR UNO O VARIOS NUEVAMENTE DEPENDIENDO DEL PROBLEMA A RESOLVER #UANDO SE ANALIZA LA SOLUCIØN RECURSIVA DE UN PROBLEMA ES IMPORTANTE DETERMINAR CON PRECISIØN CUÈLES SERÈN LOS PASOS BÈSICO Y RECURSIVO %N CADA VUELTA DEL CICLO ES IM PORTANTE QUE NOS ACERQUEMOS CADA VEZ MÈS A LA SOLUCIØN DEL PROBLEMA O SEA AL PASO BÈSICO 3I ESTO NO OCURRE ENTONCES PODEMOS ESTAR ANTE UN CICLO EXTRA×O %S DECIR EL PRO BLEMA ESTARÓA MAL DElNIDO Y EN TAL CASO LA MÈQUINA SE QUEDARÓA EJECUTANDO POR TIEMPO INDElNIDO EL PROGRAMA EN QUE ESTUVIERA Y SØLO TERMINARÓA AL AGOTARSE LA MEMORIA ! CONTINUACIØN SE PRESENTAN ALGUNOS EJEMPLOS QUE NOS PUEDEN AYUDAR A COMPREN DER MÈS RÈPIDAMENTE EL CONCEPTO RECURSIØN

%JEMPLO

&ACTORIAL DE UN NÞMERO %L FACTORIAL DE UN NÞMERO ENTERO POSITIVO N SE DElNE COMO EL PRODUCTO DE LOS NÞMEROS COMPRENDIDOS ENTRE Y N 4AMBIÏN COMO N POR EL FACTORIAL DE N n ASÓ APARECE EL CONCEPTO DE RECURSIØN ,A EXPRESIØN N SIMBOLIZA EL FACTORIAL DE N ! CONTINUACIØN SE ILUSTRA ESTE CASO 0OR DElNICIØN

&)'52! 2ECURSIØN INDIRECTA

→ 0ASO BÈSICO → 0ASO BÈSICO


*/530%6$$*Î/

111

N N N n c N n x → 0ASO RECURSIVO !L CALCULAR POR EJEMPLO EL FACTORIAL DE DECIMOS QUE ES IGUAL A !L FACTO RIAL DE LO CALCULAMOS COMO !L FACTORIAL DE COMO Y ASÓ SUCESIVAMENTE HASTA LLEGAR A UN PASO BÈSICO QUE DETIENE LA RECURSIVIDAD ,LEGAMOS A DElNIR ENTONCES EL FACTORIAL DE UN NÞMERO N EN TÏRMINOS DEL FACTORIAL DEL NÞMERO N n ▼ &ØRMULA

3I N O N

0ASO BÈSICO

N N n

3I N

0ASO RECURSIVO

N

! CONTINUACIØN SE PRESENTA EL ALGORITMO RECURSIVO DEL CÈLCULO DEL FACTORIAL !LGORITMO &ACTORIAL?REC &ACTORIAL?REC . [%STE ALGORITMO CALCULA EL FACTORIAL DE UN NÞMERO . EN FORMA RECURSIVA DONDE . ES UN VALOR NUMÏRICO ENTERO POSITIVO O NULO] 3I . ENTONCES (ACER &ACTORIAL?REC ← [0ASO BÈSICO] SI NO (ACER &ACTORIAL?REC ← . &ACTORIAL?REC . n [,LAMADA PASO RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ]

#UANDO SE REALIZA UNA LLAMADA RECURSIVA SE UTILIZA EN FORMA IMPLÓCITA UNA ES TRUCTURA TIPO PILA PARA ALMACENAR LAS INSTRUCCIONES PENDIENTES DE EJECUTAR CON TODOS LOS VALORES QUE TIENEN LAS VARIABLES O CONSTANTES EN ESE MOMENTO #UANDO SE TERMINA LA EJECUCIØN SE LLEGA AL ESTADO BÈSICO SE TOMA LA INSTRUCCIØN QUE SE ENCUENTRA EN EL TOPE DE LA PILA Y SE CONTINÞA OPERANDO %STA ACCIØN SE REPITE HASTA QUE LA PILA QUEDE VACÓA


112 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ %N LA lGURA SE PUEDE OBSERVAR EN FORMA GRÈlCA EL SEGUIMIENTO DEL ALGORITMO PARA . /BSERVE QUE EN LA PILA EL NÞMERO QUE SE ENCUENTRA ENTRE CORCHETES EN LA PRIMERA CO LUMNA DE LA IZQUIERDA HACE REFERENCIA A LA LLAMADA RECURSIVA QUE SE REALIZA %STE SÓMBOLO PERMITE OBSERVAR EL ORDEN EN QUE SE REALIZAN LAS LLAMADAS RECURSIVAS 0OR EJEMPLO ; = EXPRESA QUE ESA ES LA PRIMERA LLAMADA RECURSIVA ; = REPRESENTA LA SEGUNDA LLAMADA Y ASÓ SUCESIVAMENTE 0OR OTRA PARTE EL MISMO NÞMERO ENTRE CORCHETES A LA IZQUIERDA RELACIONA LA LLAMADA RECURSIVA CON EL VALOR QUE INGRESA AL ALGORITMO EN CADA LLAMADA ! CONTINUACIØN SE PRESENTA LA VARIANTE ITERATIVA DEL CÈLCULO DEL FACTORIAL .UNCA HAY QUE DESCARTAR LAS VARIANTES ITERATIVAS DE LA SOLUCIØN DE UN PROBLEMA PORQUE AUN CUANDO ÏSTE SE PUEDE RESOLVER NATURALMENTE DE FORMA RECURSIVA ES IMPORTANTE TENER SIEMPRE EN CUENTA QUE LA RECURSIØN NECESITA DE UNA PILA PARA SU FUNCIONAMIENTO Y QUE ÏSTA CONSUME ESPACIO DE MEMORIA %N ALGUNOS LENGUAJES DE PROGRAMACIØN EL ESPACIO DEDICADO A LA PILA ES MUY PEQUE×O POR LO QUE SI EL PROBLEMA QUE SE INTENTA RESOLVER REQUIERE DE UNA CANTIDAD DE ESPACIO MAYOR PILA QUE LA QUE OFRECE EL LENGUAJE EL PROBLEMA NO SE PODRÈ RESOLVER POR FALTA DE MEMORIA %N TAL CASO UNA FORMA PARA REMEDIAR ESTE INCONVE NIENTE ES UTILIZANDO ITERATIVIDAD EN LUGAR DE RECURSIVIDAD !LGORITMO &ACTORIAL?ITE &ACTORIAL?ITE . [%STE ALGORITMO CALCULA EL FACTORIAL DE UN NÞMERO . EN FORMA ITERATIVA DONDE . ES UN VALOR NUMÏRICO ENTERO POSITIVO O NULO] [&!#4 ES UNA VARIABLE DE TIPO ENTERO] (ACER &!#4 ← -IENTRAS . 2EPETIR [#ICLO PARA CALCULAR . ] (ACER &!#4 ← . &!#4 Y . ← . n [&IN DEL CICLO DEL PASO ] %SCRIBIR &!#4

&)'52! &UNCIONAMIENTO INTERNO DE LA RECUR SIØN FACTORIAL


*/530%6$$*Î/

113

,A SIGUIENTE TABLA PRESENTA LOS VALORES QUE VAN ADQUIRIENDO LAS VARIABLES DURANTE EL CÈLCULO DE 4!",!

.

&!#4

#ÉLCULO DEL FACTORIAL EN FORMA ITERATIVA

%JEMPLO

3UCESIØN DE &IBONACCI /TRO PROBLEMA CLÈSICO DE RECURSIVIDAD ES EL DEL CÈLCULO DE LA SUCESIØN DE ,EONARDO DE 0ISA CONOCIDO COMO &IBONACCI ETCÏTERA !LGUNAS PROPIEDADES DE ESTA SUCESIØN SEGÞN 7IKIPEDIA LA ENCICLOPEDIA LIBRE SON ◗

◗ ◗ ◗ ◗

%L COCIENTE ENTRE UN TÏRMINO Y EL INMEDIATAMENTE ANTERIOR VARÓA CONTINUAMENTE PERO SE ESTABILIZA EN UN NÞMERO IRRACIONAL CONOCIDO COMO RAZØN ÈUREA O NÞMERO ÈUREO QUE ES LA SOLUCIØN POSITIVA DE LA ECUACIØN X£ n X n Y SE PUEDE APROXIMAR POR #UALQUIER NÞMERO NATURAL SE PUEDE ESCRIBIR MEDIANTE LA SUMA DE UN NÞMERO LIMITA DO DE TÏRMINOS DE LA SUCESIØN DE &IBONACCI CADA UNO DE ELLOS DISTINTO A LOS DEMÈS 0OR EJEMPLO 4AN SØLO UN TÏRMINO DE CADA TRES ES PAR UNO DE CADA CUATRO ES MÞLTIPLO DE UNO DE CADA CINCO ES MÞLTIPLO DE ETC %STO SE PUEDE GENERALIZAR DE FORMA QUE LA SUCESIØN DE &IBONACCI ES PERIØDICA EN LAS CONGRUENCIAS MØDULO M PARA CUALQUIER M 3I &IBONACCI DE P & P ES UN NÞMERO PRIMO P TAMBIÏN LO ES CON UNA ÞNICA EXCEP CIØN & ES PRIMO PERO NO LO ES ,A SUMA INlNITA DE LOS TÏRMINOS DE LA SUCESIØN & N N ES EXACTAMENTE

%L &IBONACCI DE UN NÞMERO SE OBTIENE DE LA SUMA DE LOS DOS NÞMEROS &IBONACCI ANTERIORES 0OR DElNICIØN &IBONACCI → 0ASO BÈSICO &IBONACCI → 0ASO BÈSICO &IBONACCI &IBONACCI &IBONACCI &IBONACCI &IBONACCI &IBONACCI &IBONACCI &IBONACCI &IBONACCI &IBONACCI N &IBONACCI N n &IBONACCI N n → 0ASO RECURSIVO


114 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ ,A FØRMULA PRESENTA UNA DElNICIØN RECURSIVA DE LA SERIE DE &IBONACCI ▼ &ØRMULA

N

SI

N O N

&IBONACCI N

&IBONACCI N n &IBONACCI N n SI

N

%N ESTE EJEMPLO EL PASO BÈSICO SE PRESENTA CUANDO N O N %N EL PASO RECUR SIVO DE LA FØRMULA SE UTILIZA EL CONCEPTO DE &IBONACCI APLICADO A N n Y N n 0OR SER N UN NÞMERO ENTERO POSITIVO SERÈN N n Y N n VALORES MÈS CERCANOS AL ESTADO BÈSICO %L ALGORITMO PRESENTA UNA SOLUCIØN RECURSIVA DEL CÈLCULO DE UN NÞMERO &IBO NACCI N !LGORITMO &IBONACCI?REC &IBONACCI?REC . [%STE ALGORITMO CALCULA EL NÞMERO &IBONACCI CORRESPONDIENTE A . EN FORMA RECURSIVA DONDE . ES UN VALOR NUMÏRICO ENTERO POSITIVO O NULO] 3I . O . ENTONCES (ACER &IBONACCI?REC ← . [0ASO BÈSICO] SI NO (ACER &IBONACCI?REC ← &IBONACCI?REC . n &IBONACCI?REC . n [,LAMADAS RECURSIVAS] [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE PUEDE OBSERVAR EL SEGUIMIENTO DEL ALGORITMO PARA . /BSERVE QUE EN LA PILA EL NÞMERO QUE SE ENCUENTRA ENTRE CORCHETES HACE REFERENCIA A LA LLAMADA RECURSIVA QUE SE REALIZA 0OR EJEMPLO ; = EXPRESA QUE ÏSA ES LA PRIMERA LLAMADA RECURSIVA ; = LA SEGUNDA LLAMADA Y ASÓ SUCESIVAMENTE 0OR OTRA PARTE EL MISMO NÞMERO ENTRE CORCHETES A LA IZQUIERDA &IBONACCI?REC . RELACIONA LA LLAMADA RECURSIVA CON EL VALOR QUE INGRESA AL ALGORITMO EN CADA LLAMADA &IBONACCI REPRESENTA EL CASO DE UN ALGORITMO QUE SE PUEDE RESOLVER NATURALMENTE DE MANERA RECURSIVA PERO QUE RESULTA INElCIENTE HACERLO DE ESTA FORMA TANTO EN CUANTO A TIEMPO COMO A ESPACIO QUE SE UTILIZA EN LA PILA PARA ALMACENAR LAS LLAMADAS PENDIENTES DE EJECUTAR !DEMÈS OBSERVE QUE EN MUCHAS OCASIONES SE TIENE QUE RESOLVER EL MISMO


*/530%6$$*Î/

115

&)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN NÞMEROS &IBONACCI

PROBLEMA AUN CUANDO YA TENGAMOS UNA SOLUCIØN PARA ESE CASO Y ESTO RESULTA COMPLETA MENTE IMPRÈCTICO ADEMÈS DE INElCIENTE %N EL EJEMPLO QUE SE MUESTRA EN LA lGURA &IBONACCI?REC SE TUVO QUE RESOLVER EN CINCO OCASIONES LLAMADAS RECURSIVAS Y ! CONTINUACIØN SE PRESENTA UNA VARIANTE ITERATIVA PARA RESOLVER EL PROBLEMA DE LOS NÞMEROS DE &IBONACCI !LGORITMO &IBONACCI?ITE &IBONACCI?ITE . [%STE ALGORITMO CALCULA EL NÞMERO &IBONACCI CORRESPONDIENTE A . EN FORMA ITERATIVA . ES UN VALOR NUMÏRICO ENTERO POSITIVO O NULO] [&)"/ &)"! &)"" E ) SON VARIABLES DE TIPO ENTERO]


116 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ 3I . O . ENTONCES (ACER &)"/ ← . SI NO (ACER &)"! ← &)"" ← E ) ← [&IN DEL CONDICIONAL DEL PASO ] -IENTRAS ) ≤ . 2EPETIR (ACER &)"/ ← &)"" &)"! &)"! ← &)"" &)"" ← &)"/ E ) ← ) [&IN DEL CICLO DEL PASO ] %SCRIBIR &)"/

%N LA TABLA SE PRESENTAN LOS VALORES QUE VAN ADQUIRIENDO LAS VARIABLES DURANTE EL CÈLCULO DEL NÞMERO &IBONACCI . 4!",!

.

#ÉLCULO DE LOS NÞMEROS &IBONACCI EN FORMA ITERATIVA

%JEMPLO

&)"/

&)"!

&)""

)

)MPRESIØN DE UN ARREGLO $ADO COMO DATO UN ARREGLO UNIDIMENSIONAL DE TIPO ENTERO ESCRIBA EL CONTENIDO DE LAS CASILLAS DEL MISMO DE IZQUIERDA A DERECHA ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE !LGORITMO !RREGLO?IMP !RREGLO?IMP ! . [%L ALGORITMO ESCRIBE DE IZQUIERDA A DERECHA LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL ! DE TIPO ENTERO . REPRESENTA EL TAMA×O DEL ARREGLO] 3I . ≠ ENTONCES !RREGLO?IMP ! . n %SCRIBIR !;.= [&IN DEL CONDICIONAL DEL PASO ]


*/530%6$$*Î/

117

&)'52! &UNCIONAMIENTO IN TERNO DE LA RECURSIØN IMPRESIØN DE ARREGLOS

%N LA lGURA SE PUEDE OBSERVAR EL SEGUIMIENTO DEL ALGORITMO PARA UN ARREGLO UNIDIMENSIONAL DE TIPO ENTERO DE SIETE ELEMENTOS /BSERVE QUE %;.= EN LA PILA SE UTILIZA PARA MOSTRAR EL ORDEN EN QUE SE REALIZAN LAS LLAMADAS RECURSIVAS 0OR OTRA PARTE EN )MPRESIØN DE RESULTADOS EL MISMO SÓMBOLO SE UTILIZA PARA RELACIONAR LA LLAMADA RECURSIVA CON EL VALOR QUE SE IMPRIME

%JEMPLO

)MPRESIØN DE UN ARREGLO $ADO COMO DATO UN ARREGLO UNIDIMENSIONAL DE TIPO ENTERO ESCRIBA EL CONTENIDO DE LAS CASILLAS DEL MISMO DE DERECHA A IZQUIERDA ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE !LGORITMO !RREGLO?IMP !RREGLO?IMP ! . [%L ALGORITMO ESCRIBE DE DERECHA A IZQUIERDA LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL ! DE TIPO ENTERO . REPRESENTA EL TAMA×O DEL ARREGLO] 3I . ≠ ENTONCES %SCRIBIR !;.= !RREGLO?IMP ! . n [&IN DEL CONDICIONAL DEL PASO ]

%S IMPORTANTE SE×ALAR QUE EN ESTE CASO A DIFERENCIA DEL ALGORITMO NO SE UTILIZA LA PILA INTERNAMENTE PARA IR GUARDANDO INSTRUCCIONES PENDIENTES DE EJECUCIØN ,UE GO DE EVALUARSE LA CONDICIØN SI ÏSTA RESULTA VERDADERA SE ESCRIBE EL VALOR DE LA POSICIØN .


118 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ DEL ARREGLO Y SE LLAMA NUEVAMENTE A LA FUNCIØN AHORA CON . n 5NA VEZ QUE SE ALCANZA EL ESTADO BÈSICO EL ALGORITMO TERMINA

%JEMPLO

3UMA DE UN ARREGLO $ADO COMO DATO UN ARREGLO UNIDIMENSIONAL DE TIPO ENTERO OBTENGA LA SUMA DEL MISMO ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE !LGORITMO !RREGLO?SUM !RREGLO?SUM ! . [%L ALGORITMO OBTIENE LA SUMA DE LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL ! DE TIPO ENTERO . REPRESENTA EL TAMA×O DEL ARREGLO] 3I . ENTONCES (ACER !RREGLO?SUM ← SI NO (ACER !RREGLO?SUM ← !;.= !RREGLO?SUM 6 . n [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE OBSERVA EL SEGUIMIENTO DEL ALGORITMO PARA UN ARREGLO UNIDIMEN SIONAL DE TIPO ENTERO DE SIETE ELEMENTOS

&)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN SUMA DE ARREGLOS


*/530%6$$*Î/

119

/BSERVE NUEVAMENTE QUE EL NÞMERO ENTRE CORCHETES EN LA 0ILA SE UTILIZA PARA MOS TRAR EL ORDEN CON QUE SE REALIZAN LAS LLAMADAS RECURSIVAS %L NÞMERO ENTRE CORCHETES QUE SE ENCUENTRA EN !RREGLO?SUM ! . RELACIONA LA LLAMADA RECURSIVA CON LOS VALORES QUE RECIBE LA FUNCIØN

%JEMPLO

%UCLIDES %L ALGORITMO DE %UCLIDES REPRESENTA UN MÏTODO EFECTIVO PARA ENCONTRAR EL MÈXIMO CO MÞN DIVISOR MCD ENTRE DOS NÞMEROS ENTEROS POSITIVOS %L ALGORITMO CONSISTE EN VARIAS DIVISIONES EUCLIDIANAS SUCESIVAS %N LA PRIMERA DIVISIØN SE TOMA COMO DIVIDENDO EL MA YOR DE LOS NÞMEROS Y COMO DIVISOR EL OTRO AHORRANDO ASÓ UN PASO ,UEGO EL DIVISOR Y EL RESTO SIRVEN RESPECTIVAMENTE DE DIVIDENDO Y DIVISOR DE LA SIGUIENTE DIVISIØN %L PROCESO SE DETIENE CUANDO SE OBTIENE UN RESTO NULO ,A FØRMULA PRESENTA LA DElNICIØN RECURSIVA DEL ALGORITMO DE %UCLIDES %S IM PORTANTE MENCIONAR QUE DEBE CUMPLIRSE QUE - ≥ . ! CONTINUACIØN SE PRESENTA EL ALGO RITMO CORRESPONDIENTE ▼ &ØRMULA

- 3I .

%UCLIDES - .

%UCLIDES . - -/$ .

%N CUALQUIER OTRO CASO

!LGORITMO %UCLIDES %UCLIDES - . [%STE ALGORITMO CALCULA EL MÈXIMO COMÞN DIVISOR DE DOS NÞMEROS ENTEROS POSITIVOS - Y . SON VALORES NUMÏRICOS ENTEROS POSITIVOS] 3I . ENTONCES (ACER %UCLIDES ← SI NO (ACER %UCLIDES ← %UCLIDES . - -/$ . [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE OBSERVA EL SEGUIMIENTO DEL ALGORITMO PARA DOS CORRIDAS DIFEREN TES %N LA PRIMERA - Y . %N LA SEGUNDA - Y . %S IMPORTANTE SE×ALAR QUE EN ESTE CASO NO SE UTILIZA LA PILA INTERNAMENTE PARA IR GUARDANDO INSTRUCCIONES PENDIENTES DE EJECUCIØN 5NA VEZ QUE SE ALCANZA EL ESTADO BÈ SICO EL ALGORITMO TERMINA DANDO EL RESULTADO lNAL


120 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ &)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN ALGORITMO DE %UCLIDES

%JEMPLO

!CKERMANN ,A FUNCIØN DE !CKERMANN UTILIZADA EN LA TEORÓA DE LA COMPUTACIØN ES UNA FUNCIØN RECURSIVA QUE TOMA DOS NÞMEROS NATURALES COMO ARGUMENTOS Y DEVUELVE UN NÞMERO NA TURAL ,A FØRMULA PRESENTA LA DElNICIØN RECURSIVA DE LA FUNCIØN DE !CKERMANN

«N

® ! M N ¬ ! M

® ­ ! M ! M N

▼ &ØRMULA

SI M SI M Y N SI M Y N

3EGÞN 7IKIPEDIA LA FUNCIØN CRECE RÈPIDAMENTE 0ARA DARSE UNA IDEA DE LA MAGNI TUD DE LOS VALORES QUE APARECEN DE LA lLA EN ADELANTE CUANDO M ES IGUAL A SE PUEDE DESTACAR QUE POR EJEMPLO ! ES MAYOR QUE EL NÞMERO DE PARTÓCULAS QUE FORMAN EL UNIVERSO ELEVADO A LA POTENCIA Y EL RESULTADO DE ! NO SE PUEDE ESCRIBIR DADO QUE NO CABRÓA EN EL UNIVERSO FÓSICO %N GENERAL POR ENCIMA DE LA lLA YA NO ES POSIBLE ESCRIBIR TODOS LOS DÓGITOS DEL RESULTADO DE LA FUNCIØN %N LA TABLA SE PRESENTA CON EL OBJETO DE QUE EL LECTOR PUEDA OBSERVAR LA COM PLEJIDAD DE LA FUNCIØN CUANDO LOS VALORES SE INCREMENTAN EL RESULTADO DE LA FUNCIØN DE !CKERMANN Y EL NIVEL DE PROFUNDIDAD QUE SE ALCANZA CUANDO - Y . TOMAN CIERTOS VALORES

4!",!

-

.

!CKERMANN

0ROFUNDIDAD

!CKERMANN Y VALORES DE - Y .

CONTINÞA


*/530%6$$*Î/ 4!",! CONTINÞACIØN

-

.

!CKERMANN

121

0ROFUNDIDAD

! CONTINUACIØN SE PRESENTA EL ALGORITMO QUE RESUELVE EL PROBLEMA DE !CKERMANN !LGORITMO !CKERMANN !CKERMANN - . [%STE ALGORITMO CALCULA LA FUNCIØN DE !CKERMANN - Y . SON VALORES NUMÏRICOS ENTEROS POSITIVOS O NULOS] 3I - ENTONCES (ACER !CKERMANN ← . [%STADO BÈSICO] SI NO 3I . ENTONCES (ACER !CKERMANN ← !CKERMANN - n SI NO (ACER !CKERMANN ← !CKERMANN - n !CKERMANN - . n [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE PUEDE OBSERVAR EL SEGUIMIENTO DEL ALGORITMO DE !CKERMANN PARA VALORES DE - Y . #ONSIDERE NUEVAMENTE QUE EL NÞMERO ENTRE CORCHETES TANTO EN LA PILA COMO EN !CKERMANN . SE UTILIZA PARA OBSERVAR EL ORDEN CON QUE SE REALIZAN LAS LLAMADAS RECUR SIVAS

%JEMPLO

!LGORITMO DE PARTICIØN %STE ALGORITMO RECIENTEMENTE DESCUBIERTO PERMITE CONOCER TODAS LAS FORMAS EN LAS CUA LES UN NÞMERO ENTERO POSITIVO PUEDE SER DESCOMPUESTO COMO LA SUMA DE VARIOS SUMAN


122 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/

&)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN FUNCIØN DE !CKERMANN

DOS ,A SOLUCIØN ENCONTRADA A ESTE PROBLEMA PUEDE SERVIR TANTO A LA FÓSICA DE PARTÓCULAS COMO A LA SEGURIDAD INFORMÈTICA 3EGÞN EL .EW 3CIENTIST +ARL -AHLBURG ESTUDIANTE DE LA 5NIVERSIDAD DE 7ISCONSIN HA DEDICADO UN A×O PARA SOLUCIONAR EL PROBLEMA QUE IMPLICA TRABAJAR CON PATRONES DE NÞ MEROS h(E LLENADO DE CÈLCULOS Y ECUACIONES CUADERNO TRAS CUADERNOv DICE -AHLBURG ,OS PATRONES FUERON DESCUBIERTOS POR PRIMERA VEZ POR 2AMANUJAN UN HINDÞ QUE FUE EXPULSADO DE LA UNIVERSIDAD POR DESCUIDAR LOS ESTUDIOS DE TODO LO QUE NO FUERAN MATEMÈTICAS 3U PASIØN POR LAS MATEMÈTICAS LE LLEVØ A SEGUIR INVESTIGANDO Y A ES CRIBIR A MATEMÈTICOS INGLESES EXPONIENDO SUS TEORÓAS !UTODIDACTO EMPEZØ A TRABAJAR EN EL -ADRAS 0ORT 4RUST Y LUEGO EN FUE ADMITIDO EN LA 5NIVERSIDAD DE #AMBRIDGE 0OSTERIORMENTE FUE ELEGIDO MIEMBRO DE LA 2OYAL 3OCIETY Y DEL 4RINITY #OLLEGE 0OCOS A×OS DESPUÏS REGRESØ A LA )NDIA DONDE FALLECIØ TRAS UNA MISTERIOSA ENFERMEDAD ! CONTINUACIØN SE PRESENTA LA FØRMULA CORRESPONDIENTE


*/530%6$$*Î/

123

▼ &ØRMULA

3I -

3I .

0ARTICIØN - .

0ARTICIØN - -

3I - .

0ARTICIØN - n -

3I - .

0ARTICIØN - . n 0ARTICIØN - n . . 3I - . ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE

!LGORITMO 0ARTICIØN 0ARTICIØN - . [%STE ALGORITMO CALCULA DE CUANTAS FORMAS DIFERENTES SE PUEDE DESCOMPONER UN NÞMERO ENTERO POSITIVO - Y . SON VALORES NUMÏRICOS ENTEROS POSITIVOS !L INICIAR EL ALGORITMO - .] 3I - O . ENTONCES (ACER 0ARTICIØN ← [%STADO BÈSICO] SI NO 3I - . ENTONCES (ACER 0ARTICIØN - - SI NO 3I - . ENTONCES (ACER 0ARTICIØN ← 0ARTICIØN - - n SI NO (ACER 0ARTICIØN ← 0ARTICIØN - . n 0ARTICIØN - n . . [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE PRESENTA EL SEGUIMIENTO DEL ALGORITMO PARA OBTENER EL NÞMERO DE FORMAS EN QUE SE PUEDE DESCOMPONER EL NÞMERO - . /BSERVE NUEVAMENTE QUE EL NÞMERO ENTRE CORCHETES TANTO EN LA PILA COMO EN 0ARTICIØN - . SE UTILIZA PARA OBSERVAR EL ORDEN CON QUE SE REALIZAN LAS LLAMADAS RE CURSIVAS


124 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/

&)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN ALGORITMO DE PARTICIØN

%JEMPLO

,OS NÞMEROS DE #ATALAN %STOS NÞMEROS SE UTILIZAN EN UNA GRAN VARIEDAD DE PROBLEMAS DE COMBINATORIA 4IENEN VARIAS APLICACIONES POR EJEMPLO DADOS COMO DATOS N MATRICES PERMITEN ENCONTRAR EL NÞMERO DE FORMAS EN QUE SE PODRÓAN MULTIPLICAR /TRA APLICACIØN CONSISTE EN DETERMINAR EL NÞMERO DE FORMAS EN QUE UN POLÓGONO CON N LADOS SE PUEDE DESCOMPONER EN N TRIÈNGULOS %N COMBINATORIA LOS NÞMEROS DE #ATALAN FORMAN UNA SECUENCIA DE NÞMEROS NA TURALES QUE APARECE EN VARIOS PROBLEMAS DE CONTEO QUE HABITUALMENTE SON RECURSIVOS /BTIENEN SU NOMBRE DEL MATEMÈTICO BELGA %UGÒNE #HARLES #ATALAN %L ENÏSIMO NÞMERO DE #ATALAN SE OBTIENE SEGÞN LA SIGUIENTE FØRMULA

#N

¥ N´ N ¦§ N µ¶

▼ &ØRMULA CON N r

5NA MANERA RECURSIVA DE EXPRESAR LOS NÞMEROS DE #ATALAN SE OBSERVA EN LA SIGUIENTE FØRMULA


*/530%6$$*Î/

125

▼ &ØRMULA

3I .

#ATALAN . .

¤

#ATALAN ) #ATALAN . n ) %N CUALQUIER OTRO CASO

)

,OS PRIMEROS NÞMEROS DE #ATALAN SIGUIENDO LA FØRMULA RECURSIVA SON %L PROBLEMA SIN EMBARGO LO REPRESENTA LA GRAN CANTIDAD DE LLAMADAS RECURSIVAS QUE SE NECESITAN REALIZAR PARA ALCANZAR ESTOS RESULTADOS 0OR EJEMPLO SI . QUE ARROJARÓA COMO VALOR EL NÞMERO SE NECESITARÓA CASI UNA CENTENA DE LLAMADAS RECURSIVAS ! CONTINUACIØN SE PRESENTA EL ALGORITMO QUE RESUELVE ESTE PROBLEMA !LGORITMO #ATALAN #ATALAN . [%STE ALGORITMO OBTIENE EL RESULTADO DE LOS NÞMEROS DE #ATALAN . ES UN VALOR NUMÏRICO ENTERO POSITIVO ] [) Y 3 SON VARIABLES DE TIPO ENTERO] 3I . ENTONCES (ACER #ATALAN ← [%STADO BÈSICO] SI NO (ACER 3 ← 2EPETIR CON ) DESDE HASTA . (ACER #ATALAN ← 3 #ATALAN ) #ATALAN . n ) [&IN DEL CICLO DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

,A lGURA MUESTRA EL SEGUIMIENTO DEL ALGORITMO DE #ATALAN PARA .

%JEMPLO

#OElCIENTES BINOMIALES %L TRIÈNGULO DE 0ASCAL ES UN TRIÈNGULO DE NÞMEROS ENTEROS INlNITO Y SIMÏTRICO CUYAS DIEZ PRIMERAS LÓNEAS SE PUEDEN OBSERVAR EN LA lGURA


126 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/

&)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN LOS NÞMEROS DE #ATALAN

%L TRIÈNGULO SE CONSTRUYE DE LA SIGUIENTE MANERA PRIMERO SE ESCRIBE EL DEL PRIMER RENGLØN LA CIMA DEL TRIÈNGULO ! PARTIR DE LA SIGUIENTE LÓNEA ENTRE CADA NÞMERO SE DEJA UN NÞMERO DETERMINADO DE ESPACIOS EN BLANCO TRES EN ESTE CASO PARA DAR CLARIDAD #ADA NÞMERO QUE SE ESCRIBE EN UN RENGLØN ES LA SUMA DE LOS DOS QUE SE ENCUENTRAN EN EL RENGLØN DE ARRIBA 0OR EJEMPLO EL QUE SE ENCUENTRA EN MEDIO DEL SEGUNDO RENGLØN REPRESENTA LA SUMA DE LOS DOS NÞMEROS QUE SE ENCUENTRAN ARRIBA DE ÏL %L DEL QUINTO RENGLØN SE DERIVA DE LA SUMA DE LOS DOS NÞMEROS DE ARRIBA Y %L PRIMER DEL SEXTO RENGLØN SE DERIVA DE LA SUMA DE LOS DOS NÞMEROS QUE SE ENCUENTRAN ARRIBA Y Y ASÓ SUCESIVAMENTE 3E PUEDE OBSERVAR ADEMÈS QUE LOS LADOS EXTERIORES DEL TRIÈNGULO ESTÈN FORMADOS POR 3I LE QUITAMOS EL LADO DEL COSTADO IZQUIERDO ENTONCES NOS QUEDAN LOS NÞMEROS NATURALES EN ORDEN CRECIENTE DEL AL 0ODEMOS HACER LO MISMO CON EL OTRO COSTADO YA QUE EXISTE UN EJE DE SIMETRÓA VERTICAL QUE PASA POR EL VÏRTICE DEL TRIÈNGULO


*/530%6$$*Î/

127

&)'52! 4RIÉNGULO DE 0ASCAL

,A FØRMULA QUE DA EL DESARROLLO DE A B SEGÞN LAS POTENCIAS CRECIENTES DE A Y DECRECIENTES DE B SE LLAMA BINOMIO DE .EWTON %N ESTA EXPRESIØN LO ÞNICO QUE SE DESCONOCE SON LOS COElCIENTES DE LOS MONOMIOS AK BN n K ,A DElNICIØN HABITUAL DE LOS COElCIENTES BINOMIALES SE EXPRESA EN TÏRMINOS DE FACTORIALES COMO SE PUEDE OBSERVAR EN LA FØRMULA

K N # b K b N N K N K

▼ &ØRMULA

3IN EMBARGO TAMBIÏN ES POSIBLE PRESENTAR UNA DElNICIØN RECURSIVA COMO SE MUES TRA EN LA SIGUIENTE FØRMULA ▼ &ØRMULA

3I #" . O # . .

#" . +

87 . n + #" . n + n 3I . +

%L ALGORITMO DESCRIBE LA SOLUCIØN DEL PROBLEMA DE LOS COElCIENTES BINOMIA LES


128 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ !LGORITMO #" #" . + [%STE ALGORITMO OBTIENE EL RESULTADO DE LOS COElCIENTES BINOMIALES . Y + SON VALORES NUMÏRICOS ENTEROS POSITIVOS O NULOS] 3I + O . + ENTONCES (ACER #" ← [%STADO BÈSICO] SI NO (ACER #" ← #" . n + n #" . n + [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE PUEDE OBSERVAR EL SEGUIMIENTO DEL ALGORITMO PARA . Y + .O OLVIDE QUE LOS NÞMEROS QUE APARECEN ENTRE CORCHETES SON PARA ILUSTRAR EL ORDEN EN QUE SE REALIZAN LAS LLAMADAS RECURSIVAS

&)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN COElCIENTES BINOMIALES


&- 130#-&." %& -"4 5033&4 %& )"/0*

129

%, 02/",%-! $% ,!3 4/22%3 $% (!./) %L PROBLEMA DE LAS 4ORRES DE (ANOI ES UN PROBLEMA CLÈSICO DE RECURSIØN YA QUE PERTE NECE A LA CLASE DE PROBLEMAS CUYA SOLUCIØN SE SIMPLIlCA NOTABLEMENTE AL UTILIZAR ESTE CONCEPTO 3E TIENEN TRES TORRES Y UN CONJUNTO DE . DISCOS DE DIFERENTES TAMA×OS #ADA UNO DE ELLOS TIENE UNA PERFORACIØN EN EL CENTRO QUE LE PERMITE DESLIZARSE POR CUALQUIERA DE LAS TORRES )NICIALMENTE LOS . DISCOS ESTÈN ORDENADOS DE MAYOR A MENOR EN UNA DE LAS TORRES %L OBJETIVO DEL PROBLEMA CONSISTE EN PASAR LOS . DISCOS DE LA TORRE DE ORIGEN A UNA TORRE DESTINO UTILIZANDO LA OTRA TORRE DISPONIBLE COMO AUXILIAR ! CONTINUACIØN SE PRE SENTAN LAS REGLAS QUE SE DEBEN RESPETAR EN CADA MOVIMIENTO %N CADA MOVIMIENTO SØLO PUEDE INTERVENIR UN DISCO POR LO TANTO SIEMPRE SERÈ EL DISCO SUPERIOR EL QUE PUEDA MOVERSE .O PUEDE QUEDAR UN DISCO SOBRE OTRO DE MENOR TAMA×O 3UPONGAMOS QUE LAS TORRES SE IDENTIlCAN CON LOS NOMBRES ! " Y # ,OS DISCOS INICIALMENTE SE ENCUENTRAN EN LA TORRE ! ORIGEN %L OBJETIVO COMO SE×ALAMOS ANTE RIORMENTE CONSISTE EN TRANSFERIR TODOS LOS DISCOS A LA TORRE " DESTINO UTILIZANDO LA TORRE # COMO AUXILIAR %N LAS lGURAS A Y B SE PRESENTAN EL ESTADO INICIAL Y EL ESTADO lNAL RESPECTIVAMENTE DEL PROBLEMA DE LAS 4ORRES DE (ANOI PARA CINCO DISCOS %S IMPORTANTE OBSERVAR SI SE ANALIZA DETENIDAMENTE EL PROBLEMA QUE ÏSTE SE PUEDE DESCOMPONER EN TRES SUBPROBLEMAS UNO DE LOS CUALES EL SEGUNDO SE CONSIDERA TRI VIALIDAD PORQUE IMPLICA ÞNICAMENTE UN MOVIMIENTO 3E MUESTRAN A CONTINUACIØN LOS DIFERENTES SUBPROBLEMAS 4RANSFERIR . n DISCOS DE LA TORRE ! ORIGEN A LA TORRE # AUXILIAR -OVER UN DISCO DE LA TORRE ! ORIGEN A LA TORRE " DESTINO 4RANSFERIR . n DISCOS DE LA TORRE # AUXILIAR A LA TORRE " DESTINO %N LA lGURA SE PRESENTA LA SOLUCIØN AL PROBLEMA DE LAS 4ORRES DE (ANOI PARA DOS DISCOS . /BSERVE QUE SE REALIZAN TRES MOVIMIENTOS -OVER DE ! A # -OVER DE ! A " -OVER DE # A " %N LA lGURA POR OTRA PARTE SE ILUSTRA LA SOLUCIØN DEL PROBLEMA DE LAS 4ORRES DE (ANOI PARA TRES DISCOS . 0RIMERO SE TRANSlEREN DOS . n DISCOS DE LA TORRE ! A LA TORRE AUXILIAR # lGURAS B C Y D 0OSTERIORMENTE SE REALIZA EL MOVIMIENTO DEL DISCO DE LA TORRE ! A LA TORRE DESTINO " lGURA E &INALMENTE SE RESUELVE EL TERCER SUBPROBLEMA SE TRANSlEREN . n DISCOS DE LA TORRE # AUXILIAR A LA TORRE ! lGURAS F G H


130 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ &)'52! 4ORRES DE (ANOI A %STADO INICIAL B Ê%STADO lNAL

,OS MOVIMIENTOS QUE SE REALIZAN PARA RESOLVER ESTE PROBLEMA SON MOVER DE ! A # -OVER DE ! A " -OVER DE " A # -OVER DE ! A " -OVER DE # A ! -OVER DE # A " -OVER DE ! A " ,UEGO DE REALIZAR NUMEROSAS PRUEBAS PARA DISTINTOS VALORES DE . SE PUEDE CONCLUIR QUE PARA CUALQUIER . EL NÞMERO DE MOVIMIENTOS .- ESTÈ DADO POR LA SIGUIENTE FØR MULA

.- N n

▼ &ØRMULA

!SÓ POR EJEMPLO PARA CINCO DISCOS SE EFECTUARÈN MOVIMIENTOS PARA DIEZ DISCOS MOVIMIENTOS Y PARA DISCOS MOVIMIENTOS ! CONTINUACIØN SE PRESENTA EL ALGORITMO RECURSIVO QUE PERMITE RESOLVER ESTE PRO BLEMA


&- 130#-&." %& -"4 5033&4 %& )"/0* &)'52! 4ORRES DE (ANOI . A %STADO INICIAL B ,UEGO DE MOVER UN DISCO DE ! A # C ,UEGO DE MOVER UN DISCO DE ! A " D %STADO lNAL

131


132 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ &)'52! 4ORRES DE (ANOI . A %STADO INICIAL B ,UEGO DE MOVER UN DISCO DE ! A " C ,UEGO DE MOVER UN DISCO DE ! A # D ,UEGO DE MOVER UN DISCO DE " A #


&- 130#-&." %& -"4 5033&4 %& )"/0* &)'52! CONTINUACIØN E ,UEGO DE MOVER UN DISCO DE ! A " F ,UEGO DE MOVER UN DISCO DE # A ! G ,UEGO DE MOVER UN DISCO DE # A " H %STADO lNAL

133


134 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ !LGORITMO (ANOI (ANOI . /2)'%. $%34)./ !58),)!2 [%STE ALGORITMO OBTIENE Y ESCRIBE LOS MOVIMIENTOS QUE SE DEBEN REALIZAR PARA TRANSFERIR LOS . DISCOS DE LA TORRE /2)'%. A LA TORRE $%34)./ CON AYUDA DE LA TORRE !58),)!2] 3I . ENTONCES %SCRIBIR h-OVER UN DISCO DE /2)'%. A $%34)./v [%STADO BÈSICO] SI NO [-OVER . n DISCOS DE LA TORRE /2)'%. A LA TORRE !58),)!2] (ANOI . n /2)'%. !58),)!2 $%34)./ %SCRIBIR h-OVER UN DISCO DE /2)'%. A $%34)./v [-OVER . n DISCOS DE LA TORRE !58),)!2 A LA TORRE $%34)./] (ANOI . n !58),)!2 $%34)./ /2)'%. [&IN DEL CONDICIONAL DEL PASO ]

%N LA lGURA SE MUESTRA EL SEGUIMIENTO DEL ALGORITMO PARA CUATRO DISCOS &)'52! &UNCIONAMIENTO INTERNO DE LA RECURSIØN TORRES DE (ANOI


&- 130#-&." %& -"4 5033&4 %& )"/0*

135

%L ALGORITMO RECURSIVO ANTERIOR OFRECE UNA SOLUCIØN CLARA Y COMPACTA AL PROBLEMA DE LAS 4ORRES DE (ANOI 3IN EMBARGO ES POSIBLE TAMBIÏN PRESENTAR UNA SOLUCIØN ITERATIVA A ESTE PROBLEMA PERO ES CONVENIENTE MENCIONAR QUE EN ESTE CASO ES MÈS COMPLICADA Y EXTENSA 5N SUBPROGRAMA GENERALMENTE TRABAJA CON VARIABLES LOCALES Y PARÈMETROS #UANDO SE HACE UNA LLAMADA RECURSIVA AL SUBPROGRAMA LOS VALORES ACTUALES DE VARIABLES Y PARÈ METROS SE DEBEN CONSERVAR !DEMÈS SE DEBE ALMACENAR LA DIRECCIØN A LA CUAL SE TENDRÈ QUE REGRESAR EL CONTROL UNA VEZ QUE SE TERMINA DE EJECUTAR %L ALGORITMO ANTERIOR TRABAJA CON CUATRO PARÈMETROS . /2)'%. $%34)./ Y !58),)!2 0ARA CONSTRUIR EL ALGORITMO ITERATIVO SI SE QUIEREN CONSERVAR LOS VALORES DE LOS PARÈMETROS EN CADA LLAMADA RECURSIVA SE DEBERÈ DElNIR UNA PILA PARA CADA UNO DE ELLOS /TRA ALTERNATIVA SERÓA DElNIR UNA ÞNICA PILA EN LA QUE CADA ELEMENTO FUERA CAPAZ DE ALMACENAR LOS CUATRO PARÈMETROS %N EL ALGORITMO QUE SE VA A PRESENTAR SE TRABAJA CON CUATRO PILAS 0),!. PARA ALMACENAR IMÈGENES DE . 0),!/ PARA ALMACENAR IMÈGENES DE /2)'%. 0),!$ PARA ALMACENAR IMÈGENES DE $%34)./ 0),!8 PARA ALMACENAR IMÈGENES DE !58),)!2 4AMBIÏN SERÈ NECESARIO MANEJAR UN 4/0% PARA LAS PILAS %L SIGUIENTE ALGORITMO PRESENTA UNA SOLUCIØN ITERATIVA AL PROBLEMA DE LAS 4ORRES DE (ANOI !LGORITMO (ANOI?ITE

(ANOI?ITE . /2)'%. $%34)./ !58),)!2 [%STE ALGORITMO RESUELVE EL PROBLEMA DE LAS 4ORRES DE (ANOI DE MANERA NO RECURSIVA /2)'%. $%34)./ Y !58),)!2 SON PARÈMETROS QUE REPRESENTAN LAS TRES TORRES . SIMBOLIZA EL NÞMERO DE DISCOS] [0),!. 0),!/ 0),!$ Y 0),!8 SON ESTRUCTURAS DE DATOS TIPO PILA 4/0% ES UNA VARIABLE DE TIPO ENTERO 6!2!58 ES UNA VARIABLE DE TIPO CARÈCTER "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] (ACER 4/0% ← Y "!.$ ← &!,3/ -IENTRAS . Y "!.$ &!,3/ 2EPETIR -IENTRAS . 2EPETIR (ACER 4/0% ← 4/0% 0),!.;4/0%= ← . 0),!/;4/0%= ← /2)'%.

0),!$;4/0%= ← $%34)./ 0),!8;4/0%= ← !58),)!2 [3IMULA LLAMADA A (ANOI CON . n /2)'%. !58),)!2 Y $%34)./] (ACER . ← . n 6!2!58 ← $%34)./ $%34)./ ← !58),)!2 Y !58),)!2 ← 6!2!58 [&IN DEL CICLO DEL PASO ] %SCRIBIR h-OVER UN DISCO DE /2)'%. A $%34)./v (ACER "!.$ ← 6%2$!$%2/ 3I 4/0% [,AS PILAS NO ESTÈN VACÓAS]


136 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ ENTONCES [3E EXTRAEN LOS ELEMENTOS DEL 4/0% DE LA PILAS] (ACER . ← 0),!.;4/0%= /2)'%. ← 0),!/;4/0%= $%34)./ ← 0),!$;4/0%= !58),)!2 ← 0),!!;4/0%= Y 4/0% ← 4/0% n %SCRIBIR h-OVER UN DISCO DE /2)'%. A $%34)./v [3IMULA LLAMADA A (ANOI CON . n !58),)!2 $%34)./ Y /2)'%.] (ACER . ← . n 6!2!58 ← /2)'%. /2)'%. ← !58),)!2 !58),)!2 ← 6!2!58 Y "!.$ ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]

%N LA lGURA SE MUESTRA EL SEGUIMIENTO DEL ALGORITMO PARA TRES DISCOS

&)'52! 3EGUIMIENTO DEL ALGORITMO ITERATIVO 4ORRES DE (ANOI


3&$634*7*%"% &/ 03%&/"$*Î/ : #Ò426&%"

137

2%#523)6)$!$ %. ­2"/,%3 ,OS ÈRBOLES REPRESENTAN LAS ESTRUCTURAS DE DATOS DINÈMICAS Y NO LINEALES MÈS INTERESAN TES DE COMPUTACIØN ,A ESTRUCTURA DE ÈRBOLES BALANCEADOS O !6, ES LA ESTRUCTURA DE DATOS MÈS ElCIENTE PARA TRABAJAR EN LA MEMORIA RÈPIDA DE LA COMPUTADORA 0OR OTRA PARTE LA ESTRUCTURA DE DATOS «RBOLES " REPRESENTA LA ESTRUCTURA DE DATOS MÈS ElCIENTE PARA TRABAJAR EN MEMORIA SECUNDARIA DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO ,OS ÈRBOLES SON UNA ESTRUCTURA INHERENTEMENTE RECURSIVA Y TODAS LAS OPERACIONES QUE SE REALIZAN EN ÈRBOLES SE DEBEN PROGRAMAR EN FORMA RECURSIVA ! DIFERENCIA DE OTRAS ESTRUCTURAS DE DATOS EN LAS CUALES LAS OPERACIONES SE PUEDEN IMPLEMENTAR TANTO EN FORMA RECURSIVA COMO ITERATIVA INDEPENDIENTEMENTE DE LAS DIFERENCIAS QUE SE PUEDEN OBSERVAR CON RESPECTO A LA ElCIENCIA EN LOS ÈRBOLES SØLO SE PUEDE TRABAJAR DE MANERA RECURSIVA %N EL CAPÓTULO CORRESPONDIENTE A ÈRBOLES EL LECTOR PODRÈ PRACTICAR EN FORMA INTENSA LA RECURSIVIDAD

2%#523)6)$!$ %. /2$%.!#)¼. 9 "Â315%$! %N LOS CAPÓTULOS Y EL LECTOR PODRÈ APLICAR NUEVAMENTE EL CONCEPTO DE RECURSIVIDAD %N EL CAPÓTULO SE PRESENTA EL MÏTODO MÈS ElCIENTE DE ORDENACIØN 1UICKSORT QUE FUNCIONA DE MANERA RECURSIVA %N EL CAPÓTULO CORRESPONDIENTE A BÞSQUEDA EL LECTOR PODRÈ ESTUDIAR NUEVAMENTE GRAN CANTIDAD DE ALGORITMOS RECURSIVOS


138 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/

▼ %*%2#)#)/3 Ê £° )NVERSIØN DE CAPITAL 3E HA DEPOSITADO EN UNA INSTITUCIØN BANCARIA UN MONTO DE CAPITAL M POR EL CUAL SE RECIBE UN 8 DE INTERÏS ANUAL %L PROBLEMA CONSISTE EN DE TERMINAR EL CAPITAL QUE SE TENDRÈ AL CABO DE N A×OS %SCRIBA UN SUBPROGRAMA RECUR SIVO QUE RESUELVA ESTE PROBLEMA 2ECUERDE QUE DEBE ESTABLECER LOS ESTADOS BÈSICO Y RECURSIVO DEL PROBLEMA Ê Ó° 2ETOME EL PROBLEMA ANTERIOR Y RESUÏLVALO DE MANERA ITERATIVA #OMPARE SUS SOLU CIONES TENIENDO EN CUENTA LA ElCIENCIA EN EL MANEJO DE MEMORIA Y LA LEGIBILIDAD DEL CØDIGO GENERADO Ê Î° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE INVIERTA EL ORDEN DE LOS ELEMENTOS DE UN ARREGLO DE . NÞMEROS ENTEROS %S DECIR QUE EL ELEMENTO QUE ESTÈ EN LA POSICIØN SE INTERCAMBIE CON EL QUE ESTÈ EN LA POSICIØN . EL DE LA POSICIØN CON EL DE LA . n Y ASÓ SUCESIVAMENTE Ê {° 2ETOME EL PROBLEMA ANTERIOR Y RESUÏLVALO DE MANERA ITERATIVA #OMPARE SUS SOLU CIONES TENIENDO EN CUENTA LA ElCIENCIA EN EL MANEJO DE MEMORIA Y LA LEGIBILIDAD DEL CØDIGO GENERADO Ê x° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE INVIERTA EL ORDEN DE UNA CADENA DE CARACTE RES 0OR EJEMPLO SI LA CADENA DE ENTRADA ES 2/-! EL RESULTADO QUE DEBE ARROJAR EL PROGRAMA ES !-/2

Ê È° 3E TIENEN TRES ARREGLOS 352 #%.42/ Y ./24% QUE ALMACENAN LOS NOMBRES DE LOS PAÓSES DE 3UR #ENTRO Y .ORTEAMÏRICA RESPECTIVAMENTE ,OS TRES ARREGLOS ESTÈN ORDENADOS EN FORMA ALFABÏTICA %SCRIBA UN SUBPROGRAMA RECURSIVO QUE MEZCLE LOS TRES ARREGLOS ANTERIORES FORMANDO UN CUARTO ARREGLO !-²2)#! EN EL CUAL APA REZCAN LOS NOMBRES DE TODOS LOS PAÓSES DEL CONTINENTE ORDENADOS ALFABÏTICAMENTE #OMPARE ESTA SOLUCIØN CON LA DESARROLLADA PARA EL PROBLEMA DEL CAPÓTULO Ê Ç° $ADO COMO DATO EL SIGUIENTE PROGRAMA SÓGALO Y DIGA QUÏ IMPRIME PARA LOS SIGUIEN TES VALORES DE 8 8 8 8 0 8 [8 ES UN PARÈMETRO DE TIPO ENTERO POSITIVO] 3I 8 ENTONCES 0 ← 8 n SI NO (ACER 0 ← 0 0 8 [&IN DEL CONDICIONAL DEL PASO ]


&+&3$*$*04

139

Ê n° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE LE PERMITA CALCULAR EL DETERMINANTE DE UNA MATRIZ CUADRADA DE DIMENSIØN N Ê ° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE BUSQUE UN VALOR 8 EN UN ARREGLO UNIDIMEN SIONAL DE ENTEROS ORDENADO EN FORMA DECRECIENTE £ä° %SCRIBA UN SUBPROGRAMA RECURSIVO TAL QUE DADO COMO DATO UN ARREGLO UNIDIMENSIO NAL DE ENTEROS POSITIVOS DE DIMENSIØN . DETERMINE SI LAS SUMAS DE LAS DOS MITADES DEL ELEMENTO AL . Y DEL ELEMENTO . AL . SON IGUALES ££° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE QUITE TODOS LOS ESPACIOS EN BLANCO DE UNA CADENA DE CARACTERES £Ó° $ADOS COMO DATOS DOS NÞMEROS ENTEROS POSITIVOS ! Y " EL SEGUNDO PUEDE SER TAMBIÏN NULO ESCRIBA UN SUBPROGRAMA RECURSIVO QUE CALCULE !" £Î° %SCRIBA UN SUBPROGRAMA QUE RESUELVA LA FUNCIØN DE !CKERMANN EN FORMA ITERATIVA #OMPARE SU SOLUCIØN CON LA ANALIZADA EN ESTE LIBRO £{° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE DADO COMO DATO UN NÞMERO ENTERO POSITIVO REGRESE SI TODOS LOS DÓGITOS DE DICHO NÞMERO SON PARES Y EN OTRO CASO £x° 2ETOME EL PROBLEMA ANTERIOR Y RESUÏLVALO DE MANERA ITERATIVA #OMPARE SUS SOLU CIONES TENIENDO EN CUENTA LA ElCIENCIA EN EL MANEJO DE MEMORIA Y LA LEGIBILIDAD DEL CØDIGO GENERADO £È° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE DADO COMO DATO UN NÞMERO ENTERO POSITIVO REGRESE SI EL NÞMERO ES DIVISIBLE POR Y EN OTRO CASO %L CRITERIO QUE DEBERÈ USARSE PARA DETERMINAR SI ES DIVISIBLE ES QUE LA DIFERENCIA ENTRE LA SUMA DE LOS DÓ GITOS QUE OCUPAN POSICIONES PARES Y LA SUMA DE LOS DÓGITOS QUE OCUPAN POSICIONES IMPARES SEA UN MÞLTIPLO DE 0OR EJEMPLO SI EL NÞMERO ES SE TIENE QUE n Y ES MÞLTIPLO DE £Ç° 2ETOME EL PROBLEMA ANTERIOR Y RESUÏLVALO DE MANERA ITERATIVA #OMPARE SUS SOLU CIONES TENIENDO EN CUENTA LA ElCIENCIA EN EL MANEJO DE MEMORIA Y LA LEGIBILIDAD DEL CØDIGO GENERADO £n° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE DADO COMO DATO UN NÞMERO ENTERO POSITIVO REGRESE COMO RESULTADO LA SUMA DE SUS DIVISORES £ ° 2ETOME EL ALGORITMO #ONV?POSTlJA O EL #ONV?PRElJA DEL CAPÓTULO Y DESARROLLE UNA VERSIØN RECURSIVA DEL MISMO #OMPARE SU SOLUCIØN CON LA ANALI ZADA EN ESTE LIBRO )DENTIlQUE VENTAJAS Y DESVENTAJAS DE CADA UNA DE ELLAS Óä° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE INVIERTA EL ORDEN DE LOS ELEMENTOS DE UNA PILA 0UEDE UTILIZAR CUALQUIER ESTRUCTURA DE DATOS COMO AUXILIAR SI LO REQUIERE


140 >« ÌÕ Ê{Ê Ê Ê 3&$634*Î/ Ó£° %SCRIBA UN MÏTODO RECURSIVO PARA LA CLASE #OLA QUE IMPRIMA TODOS LOS ELEMENTOS DE UNA COLA CIRCULAR ÓÓ° 2ETOME EL PROBLEMA ANTERIOR Y RESUÏLVALO DE MANERA ITERATIVA #OMPARE SUS SOLU CIONES TENIENDO EN CUENTA LA ElCIENCIA EN EL MANEJO DE MEMORIA Y LA LEGIBILIDAD DEL CØDIGO GENERADO Óΰ %SCRIBA UN MÏTODO RECURSIVO PARA LA CLASE #OLA QUE INVIERTA EL ORDEN DE LOS ELE MENTOS DE UNA COLA 0UEDE UTILIZAR CUALQUIER ESTRUCTURA DE DATOS COMO AUXILIAR SI LO REQUIERE


#APÓTULO

x

,)34!3 ).42/$5##)¼. ,AS ESTRUCTURAS DE DATOS PRESENTADAS HASTA EL MOMENTO ARREGLOS Y REGISTROS SE DENOMI NAN ESTÈTICAS 2ECIBEN ESTE NOMBRE DEBIDO A QUE DURANTE LA COMPILACIØN SE LES ASIGNA UN ESPACIO DE MEMORIA Y ÏSTE PERMANECE INALTERABLE DURANTE LA EJECUCIØN DEL PROGRAMA %N ESTE CAPÓTULO SE PRESENTA LA ESTRUCTURA DE DATOS LISTA %STE ES UN TIPO DE ESTRUCTURA LINEAL Y DINÈMICA DE DATOS ,INEAL PORQUE A CADA ELEMENTO LE PUEDE SEGUIR SØLO OTRO ELE MENTO DINÈMICA PORQUE SE PUEDE MANEJAR LA MEMORIA DE MANERA mEXIBLE SIN NECESIDAD DE RESERVAR ESPACIO CON ANTELACIØN ,A PRINCIPAL VENTAJA DE MANEJAR UN TIPO DINÈMICO DE DATOS ES QUE SE PUEDEN ADQUI RIR POSICIONES DE MEMORIA A MEDIDA QUE SE NECESITAN ÏSTAS SE LIBERAN CUANDO YA NO SE REQUIEREN !SÓ ES POSIBLE CREAR ESTRUCTURAS DINÈMICAS QUE SE EXPANDAN O CONTRAIGAN SE GÞN SE LES AGREGUE O ELIMINE ELEMENTOS %L DINAMISMO DE ESTAS ESTRUCTURAS SOLUCIONA EL PROBLEMA DE DECIDIR CUÈL ES LA CANTIDAD ØPTIMA DE MEMORIA QUE SE DEBE RESERVAR PARA UN PROBLEMA ESPECÓlCO 3IN EMBARGO ES IMPORTANTE DESTACAR QUE LAS ESTRUCTURAS DINÈMICAS NO PUEDEN REEMPLAZAR A LOS ARREGLOS EN TODAS SUS APLICACIONES %XISTEN NUMEROSOS CASOS QUE PODRÓAN FÈCILMENTE SER SOLUCIONADOS APLICANDO ARREGLOS MIENTRAS QUE SI SE UTILIZARAN ESTRUCTURAS DINÈMICAS COMO LAS LISTAS LA SOLUCIØN DE ESTOS PROBLEMAS SE COMPLICARÓA ,AS LISTAS LIGADAS SON COLECCIONES DE ELEMENTOS LLAMADOS NODOS EL ORDEN ENTRE ÏSTOS SE ESTABLECE POR MEDIO DE UN TIPO DE DATOS DENOMINADO PUNTEROS APUNTADORES DIRECCIONES O REFERENCIAS A OTROS NODOS 0OR TANTO SIEMPRE ES IMPORTANTE DISTINGUIR EN TRE UN DATO DE TIPO APUNTADOR Y EL DATO CONTENIDO EN LA CELDA AL CUAL ÏSTE APUNTA 3E USARÈ LA NOTACIØN 0 ← >$ PARA INDICAR QUE 0 ES UN APUNTADOR AL NODO $ #REAR 0 PARA SE×ALAR EL PROCESO DE ASIGNACIØN DE MEMORIA AL NODO 0 Y 1UITAR 0 PARA INDICAR EL PROCESO INVERSO ES DECIR CUANDO SE LIBERA UNA POSICIØN DE MEMORIA APUNTADA POR 0 ,AS OPERACIONES MÈS IMPORTANTES QUE SE REALIZAN EN LAS ESTRUCTURAS DE DATOS SON LAS DE BÞSQUEDA INSERCIØN Y ELIMINACIØN 3E UTILIZAN TAMBIÏN PARA COMPARAR LA ElCIENCIA DE LAS ESTRUCTURAS DE DATOS Y DE ESTA FORMA OBSERVAR CUÈL ES LA ESTRUCTURA QUE MEJOR SE ADAPTA AL TIPO DE PROBLEMA QUE SE QUIERA RESOLVER ,A BÞSQUEDA POR EJEMPLO ES UNA OPERACIØN QUE NO SE PUEDE REALIZAR EN FORMA ElCIENTE EN LAS LISTAS 0OR OTRA PARTE LAS OPERACIONES DE INSERCIØN Y ELIMINACIØN SE EFECTÞAN DE MANERA ElCIENTE EN ESTE TIPO DE ESTRUCTURAS DE DATOS %STE CAPÓTULO SE DEDICARÈ A LAS ESTRUCTURAS DINÈMICAS LINEALES LLAMADAS LISTAS EN TRE ELLAS SE DISTINGUEN TRES TIPOS LISTAS SIMPLEMENTE LIGADAS LISTAS DOBLEMENTE LIGADAS


142 >« ÌÕ ÊxÊ Ê Ê -*45"4 Y LISTAS CIRCULARES %N EL SIGUIENTE CAPÓTULO SE PRESENTARÈN LAS ESTRUCTURAS DINÈMICAS NO LINEALES DENOMINADAS ÈRBOLES

,)34!3 3)-0,%-%.4% ,)'!$!3 5NA LISTA SIMPLEMENTE LIGADA CONSTITUYE UNA COLECCIØN DE ELEMENTOS LLAMADOS NODOS %L ORDEN ENTRE ÏSTOS SE ESTABLECE POR MEDIO DE PUNTEROS ES DECIR DIRECCIONES O REFE RENCIAS A OTROS NODOS 5N TIPO ESPECIAL DE LISTA SIMPLEMENTE LIGADA ES LA LISTA VACÓA ,A lGURA PRESENTA LA ESTRUCTURA DE UN NODO DE UNA LISTA SIMPLEMENTE LIGADA %N GENERAL UN NODO CONSTA DE DOS PARTES ◗ ◗

5N CAMPO ).&/2-!#)». QUE SERÈ DEL TIPO DE LOS DATOS QUE SE QUIERA ALMACENAR EN LA LISTA 5N CAMPO ,)'! DE TIPO PUNTERO QUE SE UTILIZA PARA ESTABLECER LA LIGA O EL ENLACE CON OTRO NODO DE LA LISTA 3I EL NODO FUERA EL ÞLTIMO DE LA LISTA ESTE CAMPO TENDRÈ COMO VALOR .), VACÓO !L EMPLEARSE EL CAMPO LIGA PARA RELACIONAR DOS NODOS NO SERÈ NECESARIO ALMACENAR FÓSICAMENTE A LOS NODOS EN ESPACIOS CONTIGUOS

%N LA lGURA SE PRESENTA UN EJEMPLO DE UNA LISTA SIMPLEMENTE LIGADA QUE ALMACE NA APELLIDOS %L PRIMER NODO DE LA LISTA ES APUNTADO POR UNA VARIABLE 0 DE TIPO APUNTADOR 0 ALMACENA LA DIRECCIØN DEL PRIMER NODO %L CAMPO LIGA DEL ÞLTIMO NODO DE LA LISTA TIENE UN VALOR .), QUE INDICA QUE DICHO NODO NO APUNTA A NINGÞN OTRO %L APUNTADOR AL INICIO DE LA LISTA ES IMPORTANTE PORQUE PERMITE POSICIONARNOS EN EL PRIMER NODO DE LA MISMA Y TENER ACCESO AL RESTO DE LOS ELEMENTOS 3I POR ALGUNA RAZØN ESTE APUNTADOR SE EXTRAVIARA ENTONCES PERDERÓAMOS TODA LA INFORMACIØN ALMACENADA EN LA LISTA 0OR OTRA PARTE SI LA LISTA SIMPLEMENTE LIGADA ESTUVIERA VACÓA ENTONCES EL APUNTADOR AL INICIO TENDRÈ EL VALOR .),

/PERACIONES CON LISTAS SIMPLEMENTE LIGADAS ,AS OPERACIONES QUE PUEDEN EFECTUARSE EN UNA LISTA SIMPLEMENTE LIGADA SON ◗ ◗ ◗ ◗

&)'52! %STRUCTURA DE UN NODO

2ECORRIDO DE LA LISTA )NSERCIØN DE UN ELEMENTO "ORRADO DE UN ELEMENTO "ÞSQUEDA DE UN ELEMENTO


-*45"4 4*.1-&.&/5& -*("%"4

143

&)'52! %JEMPLO DE LISTA

!NTES DE ANALIZAR CADA UNA DE ESTAS OPERACIONES SE PRESENTARÈ UN ALGORITMO QUE PERMITE CREAR UNA LISTA SIMPLEMENTE LIGADA AL INCORPORAR CADA NUEVO NODO AL INICIO !LGORITMO #REA?INICIO #REA?INICIO [%STE ALGORITMO PERMITE CREAR UNA LISTA SIMPLEMENTE LIGADA AGREGANDO CADA NUEVO NODO AL INICIO DE LA MISMA] [0 Y 1 SON VARIABLES DE TIPO PUNTERO ,OS CAMPOS DEL NODO SON ).&/ QUE SERÈ DEL TIPO DE DATOS QUE SE QUIERA ALMACENAR EN LA LISTA Y ,)'! DE TIPO APUNTADOR 0 APUNTA AL INICIO DE LA LISTA 2%3 ES UNA VARIABLE DE TIPO ENTERO] #REAR 0 [3E CREA EL PRIMER NODO DE LA LISTA SIMPLEMENTE LIGADA] ,EER 0> ).&/ (ACER 0> ,)'! ← .), %SCRIBIR hz$ESEA INGRESAR MÈS NODOS A LA LISTA 3Ó .O v ,EER 2%3 -IENTRAS 2%3 2EPETIR #REAR 1 ,EER 1> ).&/ (ACER 1> ,)'! ← 0 Y 0 ← 1 %SCRIBIR hz$ESEA INGRESAR MÈS NODOS A LA LISTA 3Ó .O v ,EER 2%3 [&IN DEL CICLO DEL PASO ]

6EAMOS UN EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DE ESTE ALGORITMO

%JEMPLO

$ADOS LOS SIGUIENTES DATOS 'ARCÓA 0ÏREZ ,ØPEZ Y 3ANTOS GENERE UNA LISTA SIMPLEMENTE LIGADA MEDIANTE EL ALGORITMO %N LA SIGUIENTE lGURA SE PUEDE OBSERVAR PASO A PASO CØMO SE VA CONSTRUYENDO LA LISTA #OMO SE APRECIA EN LA lGURA D LA LISTA QUEDØ EN ORDEN INVERSO CON RESPECTO AL ORDEN EN EL QUE FUERON DADOS LOS DATOS 0ARA LOGRAR QUE LOS DATOS QUEDEN EN EL ORDEN EN EL QUE FUERON DADOS SE DEBE AGREGAR CADA NODO AL lNAL DE LA LISTA ! CONTINUACIØN SE PRESENTA UN ALGORITMO QUE PERMITE CREAR UNA LISTA SIMPLEMENTE LIGADA AL INCORPORAR CADA NUEVO NODO AL lNAL


144 >« ÌÕ ÊxÊ Ê Ê -*45"4 &)'52! #REACIØN DE LISTAS A ,UEGO DE CREAR EL PRIMER NODO B ,UEGO DE INSERTAR A h0Ï REZv C ,UEGO DE INSERTAR A h,ØPEZv D ,UEGO DE INSERTAR A h3ANTOSv .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS AL INSERTAR UN NUEVO ELEMENTO AL INICIO DE LA LISTA

!LGORITMO #REA?lNAL #REA?lNAL [%STE ALGORITMO PERMITE CREAR UNA LISTA SIMPLEMENTE LIGADA AGREGANDO CADA NUEVO NODO AL lNAL DE LA MISMA] [0 1 Y 4 SON VARIABLES DE TIPO APUNTADOR ,OS CAMPOS DEL NODO SON ).&/ QUE SERÈ DEL TIPO DE DATOS QUE SE QUIERA ALMACENAR EN LA LISTA Y ,)'! DE TIPO APUNTADOR 0 APUNTA AL INICIO DE LA LISTA 2%3 ES UNA VARIABLE DE TIPO ENTERO] #REAR 0 [3E CREA EL PRIMER NODO DE LA LISTA] ,EER 0> ).&/ (ACER 0> ,)'! ← .), Y 4 ← 0 %SCRIBIR hz$ESEA INGRESAR MÈS NODOS A LA LISTA 3Ó .O v ,EER 2%3 -IENTRAS 2%3 2EPETIR #REAR 1 ,EER 1> ).&/ (ACER 1> ,)'! ← .), 4> ,)'! ← 1 Y 4 ← 1 [4 APUNTA AL ÞLTIMO NODO] %SCRIBIR hz$ESEA INGRESAR MÈS NODOS A LA LISTA 3Ó .O v ,EER 2%3 [&IN DEL CICLO DEL PASO ]


-*45"4 4*.1-&.&/5& -*("%"4

145

6EAMOS UN EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DE ESTE ALGORITMO

%JEMPLO

3E UTILIZAN LOS DATOS DEL EJEMPLO ANTERIOR PARA CREAR UNA LISTA APLICANDO EL ALGORITMO %S IMPORTANTE OBSERVAR QUE EN ESTE ALGORITMO SE UTILIZA OTRA VARIABLE DE TIPO APUNTADOR PARA MANTENER LA DIRECCIØN DEL ÞLTIMO NODO DE LA LISTA DE TAL MANERA QUE SE PUEDA ES TABLECER EL ENLACE ENTRE ÏSTE Y EL NUEVO NODO %N LA lGURA SE PUEDE OBSERVAR PASO A PASO CØMO SE VA CONSTRUYENDO ESA LISTA

&)'52! #REACIØN DE LISTAS A ,UEGO DE CREAR EL PRIMER NODO B ,UEGO DE INSERTAR A h0Ï REZv C ,UEGO DE INSERTAR A h,ØPEZv D ,UEGO DE INSERTAR A h3ANTOSv .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS AL INSERTAR UN NUEVO ELEMENTO AL lNAL DE LA LISTA

2ECORRIDO DE UNA LISTA SIMPLEMENTE LIGADA ,A OPERACIØN DE RECORRIDO EN UNA LISTA SIMPLEMENTE LIGADA CONSISTE EN VISITAR CADA UNO DE LOS NODOS QUE FORMAN LA LISTA ,A VISITA PUEDE IMPLICAR UNA OPERACIØN SIMPLE POR EJEMPLO IMPRIMIR LA INFORMACIØN DEL NODO O UNA COMPLEJA DEPENDIENDO DEL PROBLEMA QUE SE INTENTE RESOLVER 0ARA RECORRER TODOS LOS NODOS DE UNA LISTA SIMPLEMENTE LIGADA SE COMIENZA CON EL PRIMERO 3E TOMA EL VALOR DEL CAMPO ,)'! DE ÏSTE Y SE AVANZA AL SEGUNDO Y ASÓ SUCESIVAMENTE HASTA LLEGAR AL ÞLTIMO NODO CUYO CAMPO ,)'! TIENE EL VALOR .), %N GENERAL LA DIRECCIØN DE UN NODO EXCEPTO EL PRIMERO ESTÈ DADA POR EL CAMPO ,)'! DE SU PREDECESOR %L ALGORITMO PRESENTA LOS PASOS NECESARIOS PARA RECORRER UNA LISTA EN FORMA ITERATIVA


146 >« ÌÕ ÊxÊ Ê Ê -*45"4 !LGORITMO 2ECORRE?ITERATIVO 2ECORRE?ITERATIVO 0 [%STE ALGORITMO RECORRE UNA LISTA CUYO PRIMER NODO ESTÈ APUNTADO POR 0] [1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE CADA NODO DE LA LISTA] (ACER 1 ← 0 -IENTRAS 1 ≠ .), 2EPETIR %SCRIBIR 1> ).&/ (ACER 1 ← 1> ,)'! [!PUNTA AL SIGUIENTE NODO DE LA LISTA] [&IN DEL CICLO DEL PASO ]

,AS LISTAS SE PUEDEN MANEJAR FÈCILMENTE CON PROCESOS RECURSIVOS %L ALGORITMO CONSTITUYE UNA VERSIØN RECURSIVA PARA RECORRER UNA LISTA SIMPLEMENTE LIGADA !LGORITMO 2ECORRE?RECURSIVO 2ECORRE?RECURSIVO 0 [%STE ALGORITMO RECORRE UNA LISTA SIMPLEMENTE LIGADA EN FORMA RECURSIVA 0 ES UN APUNTADOR AL NODO QUE SE VA A VISITAR ,A PRIMERA VEZ TRAE LA DIRECCIØN DEL PRIMER NODO DE LA LISTA] [).&/ Y ,)'! SON LOS CAMPOS DE CADA NODO DE LA LISTA] 3I 0 ≠ .), ENTONCES %SCRIBIR 0> ).&/ ,LAMAR A 2ECORRE?RECURSIVO CON 0> ,)'! [,LAMADA RECURSIVA CON EL APUNTADOR AL SIGUIENTE NODO DE LA LISTA] [&IN DEL CONDICIONAL DEL PASO ]

6EAMOS AHORA LA OPERACIØN DE INSERCIØN EN LISTAS SIMPLEMENTE LIGADAS

)NSERCIØN EN LISTAS SIMPLEMENTE LIGADAS ,A OPERACIØN DE INSERCIØN EN LISTAS SIMPLEMENTE LIGADAS CONSISTE EN AGREGAR UN NUEVO NODO A LA LISTA 3IN EMBARGO DEPENDIENDO DE LA POSICIØN EN LA QUE SE DEBA INSERTAR EL NODO SE PUEDEN PRESENTAR DIFERENTES CASOS COMO LOS QUE SE SE×ALAN A CONTINUACIØN ◗ ◗ ◗ ◗

)NSERTAR UN NODO AL INICIO DE LA LISTA )NSERTAR UN NODO AL lNAL DE LA LISTA )NSERTAR UN NODO ANTES QUE OTRO CUYA INFORMACIØN ES 8 )NSERTAR UN NODO DESPUÏS QUE OTRO CUYA INFORMACIØN ES 8


-*45"4 4*.1-&.&/5& -*("%"4

147

.O SE CONSIDERARÈ EN ESTOS ALGORITMOS EL CASO DE QUE LA LISTA ESTÏ VACÓA ESTA CON DICIØN SE PUEDE INCLUIR YA SEA AL INICIO DEL ALGORITMO O EN EL PROGRAMA PRINCIPAL 3E CONSIDERARÈ ENTONCES QUE LA LISTA EN LA CUAL SE VA A INSERTAR EL NUEVO NODO YA EXISTE POR LO MENOS TIENE UN NODO

>®Ê ÃiÀV Ê> Ê V Ê`iÊÕ >Ê ÃÌ>ÊÊ Ê Ã « i i ÌiÊ }>`> %N ESTE CASO EL NUEVO NODO SE COLOCA AL PRINCIPIO DE LA LISTA SIMPLEMENTE LIGADA CON VIRTIÏNDOSE EN EL PRIMERO DE ELLA %L PROCESO ES RELATIVAMENTE SIMPLE COMO SE PUEDE OBSERVAR EN EL SIGUIENTE ALGORITMO !LGORITMO )NSERTA?INICIO )NSERTA?INICIO 0 $!4/ [%STE ALGORITMO INSERTA UN NODO AL INICIO DE UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA MISMA Y $!4/ ES LA INFORMACIØN QUE SE ALMACENARÈ EN EL NUEVO NODO] [1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE CADA NODO DE LA LISTA] #REAR 1 (ACER 1> ).&/ ← $!4/ 1> ,)'! ← 0 Y 0 ← 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN AL INICIO DE LA LISTA

L )NSERCIØN AL lNAL DE UNA LISTA SIMPLEMENTE LIGADA %N ESTE CASO EL NUEVO NODO SE COLOCA AL lNAL DE LA LISTA SIMPLEMENTE LIGADA CONVIRTIÏN DOSE EN EL ÞLTIMO %L ALGORITMO DESCRIBE ESTE PROCESO

&)'52! )NSERCIØN AL INICIO DE LA LISTA .OTA ,A mECHA DISCONTINUA INDICA LOS CAMBIOS ORIGINADOS POR LA INSERCIØN DE UN NUEVO NODO AL INICIO DE LA LISTA


148 >« ÌÕ ÊxÊ Ê Ê -*45"4 !LGORITMO )NSERTA?lNAL )NSERTA?lNAL 0 $!4/ [%STE ALGORITMO INSERTA UN NODO AL lNAL DE UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA Y $!4/ ES LA INFORMACIØN QUE SE ALMACENARÈ EN EL NUEVO NODO] [1 Y 4 SON VARIABLES DE TIPO PUNTERO ).&/ Y ,)'! SON LOS CAMPOS DE CADA NODO DE LA LISTA] (ACER 4 ← 0 -IENTRAS 4> ,)'! ≠ .), 2EPETIR [2ECORRE LA LISTA HASTA LLEGAR AL ÞLTIMO ELEMENTO] (ACER 4 ← 4> ,)'! [&IN DEL CICLO DEL PASO ] #REAR 1 (ACER 1> ).&/ ← $!4/ 1> ,)'! ← .), Y 4> ,)'! ← 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN AL lNAL DE LA LISTA 3I EN CADA LISTA SIMPLEMENTE LIGADA SE UTILIZARAN DOS APUNTADORES UNO AL PRIMER NODO Y OTRO AL ÞLTIMO lG A ENTONCES EL PROCESO DE INSERCIØN AL lNAL SE SIMPLIl CARÓA YA QUE NO SERÓA NECESARIO RECORRERLA TODA PARA LLEGAR AL lNAL %L NUEVO NODO SE PODRÓA INCORPORAR DIRECTAMENTE VER lG B COMO EN EL CASO DE INSERCIØN AL INICIO DE LA LISTA

C®Ê )NSERCIØN DE UN NODO ANTES QUE OTRO EN UNA LISTA SIMPLEMENTE LIGADA %N ESTE TIPO DE INSERCIØN EN LISTAS SIMPLEMENTE LIGADAS EL NUEVO NODO SE DEBE COLOCAR ANTES DE OTRO NODO DADO COMO REFERENCIA 3E PUEDEN PRESENTAR DIFERENTES CASOS POR EJEMPLO QUE EL NODO DADO COMO REFERENCIA NO SE ENCUENTRE EN LA LISTA O QUE EL NUEVO NODO A INSERTAR SE CONVIERTA EN EL PRIMERO 3E ASUME COMO SE HA SE×ALADO ANTERIORMEN TE QUE LA LISTA NO ESTÈ VACÓA

&)'52! )NSERCIØN AL lNAL DE LA LISTA .OTA ,A mECHA DISCONTINUA INDICAN LOS CAMBIOS ORIGINADOS POR LA INSERCIØN DE UN NUEVO NODO AL lNAL DE LA LISTA


-*45"4 4*.1-&.&/5& -*("%"4

149

&)'52! )NSERCIØN EN UNA LISTA CON PUNTEROS AL INICIO Y AL lNAL DE LA MISMA A ,ISTA CON PUNTERO AL INICIO 0 Y AL lNAL 4 B ,ISTA LUEGO DE LA INSERCIØN DE UN NUEVO ELEMENTO AL lNAL DE LA MISMA .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS POR LA INSERCIØN DE UN NUEVO NODO AL lNAL DE LA LISTA

!LGORITMO )NSERTA?ANTES?8 )NSERTA?ANTES?8 0 $!4/ 8 [%STE ALGORITMO INSERTA UN NODO ANTES DE UN NODO DADO COMO REFERENCIA EN UNA LISTA SIMPLE MENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA $!4/ INDICA LA INFORMACIØN QUE SE ALMACENARÈ EN EL NUEVO NODO Y 8 REPRESENTA EL CONTENIDO INFORMACIØN DEL NODO DADO COMO REFERENCIA] [1 8 Y 4 SON VARIABLES DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA "!.$ ES UNA VARIABLE DE TIPO ENTERO] (ACER 1 ← 0 Y "!.$ ← -IENTRAS 1> ).&/ ≠ 8 Y "!.$ 2EPETIR 3I 1> ,)'! ≠ .), ENTONCES (ACER 4 ← 1 Y 1 ← 1> ,)'! SI NO (ACER "!.$ ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!.$ ENTONCES #REAR 8 (ACER 8> ).&/ ← $!4/ 3I 0 1 [%L NODO DADO COMO REFERENCIA ES EL PRIMERO] ENTONCES (ACER 8> ,)'! ← 0 Y 0 ← 8 SI NO


150 >« ÌÕ ÊxÊ Ê Ê -*45"4

(ACER 4> ,)'! ← 8 Y 8> ,)'! ← 1 [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h%L NODO DADO COMO REFERENCIA NO SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN DE UN NODO ANTES QUE OTRO DADO COMO REFERENCIA EN UNA LISTA SIMPLEMENTE LIGADA APLICANDO EL ALGORITMO ANTERIOR

D Ê )NSERCIØN DE UN NODO DESPUÏS DE OTRO EN UNA LISTA SIMPLEMENTE LIGADA %N ESTE TIPO DE INSERCIØN EN LISTAS SIMPLEMENTE LIGADAS EL NUEVO NODO SE DEBE COLO CAR DESPUÏS DE OTRO DADO COMO REFERENCIA 3E PUEDEN PRESENTAR DIFERENTES CASOS POR EJEMPLO QUE EL NODO DADO COMO REFERENCIA NO SE ENCUENTRE EN LA LISTA O QUE EL NUEVO SE CONVIERTA EN EL ÞLTIMO DE LA LISTA 3E ASUME COMO SE HA SE×ALADO QUE LA LISTA NO ESTÈ VACÓA ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE !LGORITMO )NSERTA?DESPUÏS?8 )NSERTA?DESPUÏS?8 0 $!4/ 8 [%STE ALGORITMO INSERTA UN NODO DESPUÏS DE OTRO DADO COMO REFERENCIA EN UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA $!4/ INDICA LA INFORMACIØN QUE SE

&)'52! )NSERCIØN DE NODOS .OTA ,AS mECHAS DISCON TINUAS INDICAN LOS CAMBIOS ORIGINADOS POR LA INSERCIØN DE UN NUEVO NODO PRECE DIENDO A OTRO DADO COMO REFERENCIA


-*45"4 4*.1-&.&/5& -*("%"4

151

ALMACENARÈ EN EL NUEVO NODO Y 8 REPRESENTA EL CONTENIDO INFORMACIØN DEL NODO DADO COMO REFERENCIA] [1 Y 4 SON VARIABLES DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA "!.$ ES UNA VARIABLE DE TIPO ENTERO] (ACER 1 ← 0 Y "!.$ ← -IENTRAS F> ).&/ ≠ 8 Y "!.$ 2EPETIR 3I 1> ,)'! ≠ .), ENTONCES (ACER 1 ← 1> ,)'! SI NO (ACER "!.$ ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!.$ ENTONCES #REAR 4 (ACER 4> ).&/ ← $!4/ 4> ,)'! ← 1> ,)'! Y 1> ,)'! ← 4 SI NO %SCRIBIR h%L NODO DADO COMO REFERENCIA NO SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

&)'52! )NSERCIØN DE NODOS .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS POR LA INSERCIØN DE UN NUEVO NODO SUCEDIENDO A OTRO DADO COMO REFERENCIA

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN DE UN NODO DESPUÏS DE OTRO DADO COMO REFERENCIA EN LISTAS SIMPLEMENTE LIGADAS APLICANDO EL ALGORITMO ANTERIOR #ABE SE×ALAR QUE EN LAS OPERACIONES DE LISTAS TRATADAS HASTA EL MOMENTO NO SE HA CONSIDERADO EL ORDEN ENTRE LOS ELEMENTOS 3I SE SUPONE QUE LA LISTA ESTÈ ORDENADA EN EL MOMENTO DE INSERTAR UN NUEVO NODO HABRÈ QUE MANTENER EL ORDEN PREVIAMENTE ESTABLE CIDO


152 >« ÌÕ ÊxÊ Ê Ê -*45"4

%LIMINACIØN EN LISTAS SIMPLEMENTE LIGADAS ,A OPERACIØN DE ELIMINACIØN EN LISTAS SIMPLEMENTE LIGADAS CONSISTE EN ELIMINAR UN NODO DE LA LISTA Y LIBERAR EL ESPACIO DE MEMORIA CORRESPONDIENTE $EPENDIENDO DE LA POSICIØN EN LA QUE ÏSTE SE ENCUENTRE SE PUEDEN PRESENTAR DIFERENTES CASOS COMO LOS QUE SE SE×A LAN A CONTINUACIØN ◗ ◗ ◗ ◗ ◗

%LIMINAR EL PRIMER NODO %LIMINAR EL ÞLTIMO NODO %LIMINAR UN NODO CON INFORMACIØN 8 %LIMINAR EL NODO ANTERIOR AL NODO CON INFORMACIØN 8 %LIMINAR EL NODO POSTERIOR AL NODO CON INFORMACIØN 8

#ABE DESTACAR QUE EN LOS ALGORITMOS QUE SE PRESENTAN A CONTINUACIØN NO SE CON SIDERA QUE LA LISTA ESTÏ VACÓA %STA CONDICIØN SE PUEDE EVALUAR FÈCILMENTE AL INICIO DEL ALGORITMO O BIEN EN EL PROGRAMA PRINCIPAL

A Ê %LIMINAR EL PRIMER NODO DE UNA LISTA SIMPLEMENTE LIGADA %STA OPERACIØN ES MUY SENCILLA YA QUE SØLO ES NECESARIO REDElNIR EL APUNTADOR AL INICIO DE LA LISTA 3I ÏSTA QUEDARA VACÓA ES DECIR SI LA LISTA TENÓA SØLO UN ELEMENTO ENTONCES APUNTARÓA A .), %N EL SIGUIENTE ALGORITMO SE DESCRIBE ESTE CASO !LGORITMO %LIMINA?INICIO %LIMINA?INICIO 0 [%STE ALGORITMO PERMITE ELIMINAR EL PRIMER ELEMENTO DE UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA] (ACER 1 ← 0 [3I LA LISTA TUVIERA SØLO UN ELEMENTO ENTONCES A 0 SE LE ASIGNARÓA .), QUE ES EL VALOR DE 1> ,)'! %N CASO CONTRARIO QUEDA CON LA DIRECCIØN DEL SIGUIENTE NODO] (ACER 0 ← 1> ,)'! [2EDElNE EL PUNTERO AL INICIO DE LA LISTA] 1UITAR 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DEL PRIMER NODO DE UNA LISTA SIMPLEMENTE LIGADA APLICANDO EL ALGORITMO ANTERIOR


-*45"4 4*.1-&.&/5& -*("%"4

153

&)'52! %LIMINACIØN DEL PRIMER NODO DE UNA LISTA

B Ê %LIMINAR EL ÞLTIMO NODO DE UNA LISTA SIMPLEMENTE LIGADA %N ESTE CASO SE DEBE ELIMINAR EL ÞLTIMO NODO DE UNA LISTA SIMPLEMENTE LIGADA %S IMPOR TANTE OBSERVAR QUE PARA ALCANZAR EL ÞLTIMO NODO SE DEBE RECORRER TODA LA LISTA EXCEPTO SI SE USARA UN APUNTADOR QUE INDIQUE SU lNAL ! CONTINUACIØN SE PRESENTA UN ALGORITMO DE SOLUCIØN CONSIDERANDO QUE SOLAMENTE SE TIENE UN APUNTADOR AL INICIO DE LA LISTA !LGORITMO %LIMINA?ÞLTIMO %LIMINA?ÞLTIMO 0 [%STE ALGORITMO PERMITE ELIMINAR EL ÞLTIMO NODO DE UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 Y 4 SON VARIABLES DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA] (ACER 1 ← 0 3I 0> ,)'! .), [3E VERIlCA SI LA LISTA TIENE SØLO UN NODO] ENTONCES (ACER 0 ← .), SI NO -IENTRAS 1> ,)'! ≠ .), 2EPETIR (ACER 4 ← 1 Y 1 ← 1> ,)'! [&IN DEL CICLO DEL PASO ] (ACER 4> ,)'! ← .), [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DEL ÞLTIMO NODO DE UNA LISTA SIMPLEMENTE LIGADA


154 >« ÌÕ ÊxÊ Ê Ê -*45"4 &)'52! %LIMINACIØN DEL ÞLTIMO NODO DE UNA LISTA .OTA ,A mECHA DISCONTINUA INDICA LOS CAMBIOS ORIGINADOS POR LA ELIMINACIØN DEL ÞLTIMO NODO DE LA LISTA

C Ê %LIMINAR UN NODO CON INFORMACIØN 8ÊÊ Ê DE UNA LISTA SIMPLEMENTE LIGADA ,A ELIMINACIØN DE UN NODO CON INFORMACIØN 8 ES UNO DE LOS CASOS COMPLICADOS DE ESTA OPERACIØN PORQUE SE PUEDEN PRESENTAR DIFERENTES VARIANTES 0OR EJEMPLO EL NODO PUEDE SER EL PRIMERO EL ÞLTIMO EL ÞNICO O NO ENCONTRARSE EN LA LISTA %L ALGORITMO DESCRIBE ESTE PROCESO !LGORITMO %LIMINA?8 %LIMINA?8 0 8 [%STE ALGORITMO ELIMINA UN NODO CON INFORMACIØN 8 DE UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 Y 4 SON VARIABLES DE TIPO APUNTADOR "!.$ ES UNA VARIABLE DE TIPO ENTERO ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA] (ACER 1 ← 0 Y "!.$ ← -IENTRAS 1> ).&/ ≠ 8 Y "!.$ 2EPETIR 3I 1> ,)'! ≠ .), ENTONCES (ACER 4 ← 1 Y 1 ← 1> ,)'! SI NO (ACER "!.$ ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!.$ ENTONCES %SCRIBIR h%L ELEMENTO CON INFORMACIØN 8 NO SE ENCUENTRA EN LA LISTAv SI NO 3I 0 1 [3E VERIlCA SI EL ELEMENTO A ELIMINAR ES EL PRIMERO] ENTONCES (ACER 0 ← 1> ,)'! SI NO (ACER 4> ,)'! ← 1> ,)'! [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 1 [&IN DEL CONDICIONAL DEL PASO ]


-*45"4 4*.1-&.&/5& -*("%"4

155

&)'52! %LIMINACIØN DE UN NODO CON INFORMACIØN 8 .OTA ,A mECHA DISCONTINUA INDICA LOS CAMBIOS ORIGINADOS POR LA ELIMINACIØN DEL NODO

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DE UN NODO CON INFORMACIØN 8 EN UNA LISTA SIMPLEMENTE LIGADA

D Ê %LIMINAR EL NODO ANTERIOR AL NODO CON INFORMACIØN 8 EN UNA LISTA SIMPLEMENTE LIGADA %STE ES EL CASO DE ELIMINACIØN MÈS COMPLICADO EN LISTAS SIMPLEMENTE LIGADAS PORQUE TIENE MUCHAS VARIANTES 0OR EJEMPLO EL NODO CON INFORMACIØN 8 PUEDE SER EL PRIMERO ENTONCES NO HAY NADA QUE ELIMINAR EL SEGUNDO ENTONCES HAY QUE ELIMINAR EL PRI MERO DE LA LISTA ESTAR EN CUALQUIER OTRA POSICIØN O BIEN NO ENCONTRARSE EN LA LISTA !LGORITMO %LIMINA?ANTES?8 %LIMINA?ANTES?8 0 8 [%STE ALGORITMO PERMITE ELIMINAR EL NODO ANTERIOR AL NODO QUE CONTIENE LA INFORMACIØN 8 EN UNA LISTA SIMPLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 4 Y 2 SON VARIABLES DE TIPO APUNTADOR "!.$ ES UNA VARIABLE DE TIPO ENTERO ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA] 3I 0> ).&/ 8 ENTONCES %SCRIBIR h.O EXISTE UN NODO QUE PRECEDA AL QUE CONTIENE A 8v SI NO (ACER 1 ← 0 4 ← 0 Y "!.$ ← -IENTRAS 1> ).&/ ≠ 8 Y "!.$ 2EPETIR 3I 1> ,)'! ≠ .), ENTONCES (ACER 2 ← 4 4 ← 1 Y 1 ← 1> ,)'! SI NO (ACER "!.$ ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!.$


156 >« ÌÕ ÊxÊ Ê Ê -*45"4 ENTONCES %SCRIBIR h%L ELEMENTO NO SE ENCUENTRA EN LA LISTAv SI NO 3I 0> ,)'! 1 [%L ELEMENTO A ELIMINAR ES EL PRIMERO] ENTONCES (ACER 0 ← 1 SI NO (ACER 2> ,)'! ← 1 [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 4 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DEL NODO ANTERIOR A OTRO DADO COMO REFERENCIA MEDIANTE EL ALGORITMO 3E DEJA AL LECTOR LA CONSTRUCCIØN DEL ALGORITMO PARA ELIMINAR UN NODO DESPUÏS DE OTRO DADO COMO REFERENCIA %STE ALGORITMO ES DE MENOR COMPLEJIDAD QUE EL PRESENTADO ANTES

"ÞSQUEDA EN LISTAS SIMPLEMENTE LIGADAS ,A OPERACIØN DE BÞSQUEDA DE UN ELEMENTO EN UNA LISTA SIMPLEMENTE LIGADA ES MUY FÈCIL DE REALIZAR AUNQUE INElCIENTE YA QUE SE LLEVA A CABO DE FORMA SECUENCIAL 3E DEBE IR RECORRIENDO LOS NODOS HASTA ENCONTRAR EL QUE ESTAMOS BUSCANDO O HASTA QUE SE LLEGA AL lNAL DE LA LISTA %L ALGORITMO ES SIMILAR A LOS QUE SE DESARROLLARON PARA RECORRER UNA LISTA EN FORMA ITERATIVA O RECURSIVA !L IGUAL QUE EN EL CASO DE LAS OPERACIONES VISTAS ANTERIORMENTE EXISTE DIFERENCIA EN LOS ALGORITMOS SI LAS LISTAS SE ENCUENTRAN ORDENADAS O DESORDENADAS 3E COMENZARÈ EN PRIMER TÏRMINO CON EL ALGORITMO DE BÞSQUEDA PARA LISTAS SIMPLEMENTE LIGADAS QUE SE ENCUENTRAN DESORDENADAS &)'52! %LIMINACIØN DE NODOS .OTA ,A mECHA DISCONTINUA INDICA LOS CAMBIOS ORIGINADOS POR LA ELIMINACIØN DEL NODO ANTERIOR A UN NODO DADO COMO REFERENCIA


-*45"4 4*.1-&.&/5& -*("%"4

157

!LGORITMO "ÞSQUEDA?DESORDENADA "ÞSQUEDA?DESORDENADA 0 8 [%STE ALGORITMO PERMITE BUSCAR EL ELEMENTO CON INFORMACIØN 8 EN UNA LISTA SIMPLEMENTE LIGADA QUE SE ENCUENTRA DESORDENADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/ Y ,)'! SON CAMPOS DE LOS NODOS DE LA LISTA] (ACER 1 ← 0 -IENTRAS 1 ≠ .), Y 1> ).&/ ≠ 8 (ACER 1 ← 1> ,)'! [&IN DEL CICLO DEL PASO ] 3I 1 .), ENTONCES %SCRIBIR h%L ELEMENTO NO SE ENCUENTRA EN LA LISTAv SI NO %SCRIBIR h%L ELEMENTO SÓ SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

%S IMPORTANTE DESTACAR QUE CON UNA SIMPLE MODIlCACIØN EN LA CONDICIØN DEL CICLO DEL PASO SE ADAPTE ESTE ALGORITMO PARA LA BÞSQUEDA DE ELEMENTOS EN LISTAS SIMPLEMENTE LIGADAS QUE SE ENCUENTRAN ORDENADAS ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE BÞS QUEDA EN LISTAS SIMPLEMENTE LIGADAS QUE SE ENCUENTRAN ORDENADAS EN FORMA ASCENDENTE !LGORITMO "ÞSQUEDA?ORDENADA

"ÞSQUEDA?ORDENADA 0 8 [%STE ALGORITMO PERMITE BUSCAR EL ELEMENTO CON INFORMACIØN 8 EN UNA LISTA SIMPLEMENTE LIGADA QUE SE ENCUENTRA ORDENADA EN FORMA ASCENDENTE 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/ Y ,)'! SON LOS CAMPOS DE LOS NODOS DE LA LISTA] (ACER 1 ← 0 -IENTRAS 1 ≠ .), Y 1> ).&/ 8 (ACER 1 ← 1> ,)'! [&IN DEL CICLO DEL PASO ] 3I 1 .), O 1> ).&/ 8 ENTONCES %SCRIBIR h%L ELEMENTO NO SE ENCUENTRA EN LA LISTAv SI NO %SCRIBIR h%L ELEMENTO SÓ SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]


158 >« ÌÕ ÊxÊ Ê Ê -*45"4 4ODOS LOS ALGORITMOS PRESENTADOS TANTO PARA LA BÞSQUEDA INSERCIØN Y ELIMINACIØN SE PUEDEN IMPLEMENTAR DE FORMA RECURSIVA ! CONTINUACIØN SE MUESTRA UNA VERSIØN RE CURSIVA DEL ALGORITMO !LGORITMO "ÞSQUEDA?RECURSIVO "ÞSQUEDA?RECURSIVO 0 8 [%STE ALGORITMO PERMITE BUSCAR RECURSIVAMENTE A UN ELEMENTO CON INFORMACIØN 8 EN UNA LISTA SIMPLEMENTE LIGADA QUE SE ENCUENTRA DESORDENADA 0 ES EL APUNTADOR AL PRIMER ELEMENTO DE LA LISTA] 3I 0 ≠ .), ENTONCES 3I 0> ).&/ 8 ENTONCES %SCRIBIR h%L ELEMENTO SE ENCUENTRA EN LA LISTAv SI NO ,LAMAR A "ÞSQUEDA?RECURSIVO CON 0> ,)'! Y 8 [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h%L ELEMENTO NO SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

,)34!3 #)2#5,!2%3 ,AS LISTAS CIRCULARES SON SIMILARES A LAS LISTAS SIMPLEMENTE LIGADAS 3IN EMBARGO TIENEN LA CARACTERÓSTICA DE QUE EL ÞLTIMO ELEMENTO DE LA LISTA APUNTA AL PRIMERO EN LUGAR DE APUNTAR AL VACÓO O .), 3E DElNE UNA LISTA SIMPLEMENTE LIGADA CIRCULAR COMO UNA COLECCIØN DE ELEMENTOS LLAMADOS NODOS EN LA CUAL EL ÞLTIMO NODO APUNTA AL PRIMERO %N LA lGURA SE PRE SENTA UNA GRÈlCA DE UNA LISTA CIRCULAR ,AS OPERACIONES EN LISTAS CIRCULARES SON SIMILARES A LAS OPERACIONES EN LISTAS LINEA LES POR TANTO NO SE TRATARÈN NUEVAMENTE EN ESTA SECCIØN 3IN EMBARGO ES IMPORTANTE

&)'52! ,ISTA CIRCULAR


-*45"4 %0#-&.&/5& -*("%"4

159

&)'52! ,ISTA CIRCULAR CON NODO DE CABECERA

SE×ALAR QUE PARA EL CASO DE LA OPERACIØN DE RECORRIDO DE LISTAS CIRCULARES SE NECESITA CONSIDERAR ALGÞN CRITERIO PARA DETECTAR CUÈNDO SE HAN VISITADO TODOS LOS NODOS DE LA LISTA %STO ÞLTIMO CON EL PROPØSITO DE EVITAR CAER EN CICLOS INlNITOS 5NA POSIBLE SOLUCIØN AL PROBLEMA PLANTEADO CONSISTE EN USAR UN NODO EXTRA LLAMADO NODO DE CABECERA PARA INDICAR EL INICIO DE LA LISTA %STE NODO CONTENDRÈ INFORMACIØN ESPECIAL DE TAL MANERA QUE SE DISTINGA DE LOS DEMÈS Y ASÓ PODRÈ HACER REFERENCIA AL PRINCIPIO DE LA LISTA ,A lGURA PRESENTA UNA GRÈlCA DE UNA LISTA CIRCULAR CON NODO DE CABECERA %N LOS ALGORITMOS PRESENTADOS PARA OPERAR CON LISTAS SIMPLEMENTE LIGADAS SE PUEDE APRECIAR QUE SØLO SE TIENE ACCESO A UN NODO Y AL SUCESOR DE ÏSTE 3I SE NECESITARA SU PREDECESOR POR EJEMPLO SE TENDRÓAN QUE USAR VARIABLES AUXILIARES VÏASE EL ALGORITMO 5NA MANERA DE EVITAR ESTA SITUACIØN ES TENIENDO ACCESO A LOS NODOS EN CUALQUIER ORDEN ANTECESOR O SUCESOR Y ADEMÈS RECORRER LA LISTA DEL INICIO AL lN O VICEVERSA ,AS LISTAS QUE CUENTAN CON ESTA FACILIDAD SON LAS DOBLEMENTE LIGADAS ! CONTINUACIØN SE PRESENTA ESTE TIPO DE ESTRUCTURAS

,)34!3 $/",%-%.4% ,)'!$!3 5NA LISTA DOBLEMENTE LIGADA ES UNA COLECCIØN DE NODOS EN LA CUAL CADA UNO DE ELLOS TIENE DOS APUNTADORES lG A UNO APUNTANDO A SU PREDECESOR ,)'!):1 Y OTRO A SU SUCESOR ,)'!$%2 0OR MEDIO DE ESTOS PUNTEROS SE PODRÈ ENTONCES AVANZAR O RE TROCEDER A TRAVÏS DE LA LISTA SEGÞN SE TOMEN LAS DIRECCIONES DE UNO U OTRO APUNTADOR ,A lGURA B REPRESENTA UNA LISTA DOBLEMENTE LIGADA QUE ALMACENA APELLIDOS 0ARA TENER UN FÈCIL ACCESO A LA INFORMACIØN DE LA LISTA ES RECOMENDABLE USAR DOS APUNTADORES 0 Y & QUE APUNTEN AL PRINCIPIO Y AL lNAL DE ÏSTA RESPECTIVAMENTE

/PERACIONES CON LISTAS DOBLEMENTE LIGADAS ,AS OPERACIONES QUE SE PUEDEN LLEVAR A CABO CON ESTE TIPO DE ESTRUCTURAS SON LAS MISMAS QUE CON LISTAS SIMPLEMENTE LIGADAS %N ESTA SECCIØN SE PRESENTARÈN LAS OPERACIONES DE ◗ ◗ ◗

2ECORRIDO DE LA LISTA )NSERCIØN DE UN ELEMENTO "ORRADO DE UN ELEMENTO


160 >« ÌÕ ÊxÊ Ê Ê -*45"4 &)'52! %JEMPLO DE LISTA DOBLEMEN TE LIGADA A %STRUCTURA DE UN NODO B %JEMPLO DE LISTA DOBLEMENTE LIGADA

2ECORRIDO DE UNA LISTA DOBLEMENTE LIGADA !L TENER CADA NODO UNA DOBLE LIGA LA LISTA SE PUEDE RECORRER TANTO DEL INICIO AL lNAL ME DIANTE LAS LIGAS DERECHAS COMO EN SENTIDO INVERSO ES DECIR DEL lNAL AL PRINCIPIO CON LAS LIGAS IZQUIERDAS #UALQUIERA QUE SEA LA DIRECCIØN DEL RECORRIDO EL ALGORITMO ES SIMILAR AL QUE SE PRESENTA PARA LISTAS SIMPLEMENTE LIGADAS 3E DEJA AL LECTOR SU DISE×O

)NSERCIØN EN LISTAS DOBLEMENTE LIGADAS ,A INSERCIØN DE UN ELEMENTO CONSISTE EN AGREGAR UN NUEVO NODO A LA LISTA Y ESTABLECER LOS APUNTADORES CORRESPONDIENTES .O SE CONSIDERARÈ EL CASO DE LISTA VACÓA ,A INSERCIØN SE PUEDE LLEVAR A CABO ◗ ◗ ◗

!L INICIO DE LA LISTA DOBLEMENTE LIGADA !L lNAL DE LA LISTA DOBLEMENTE LIGADA !NTES DESPUÏS DE UN NODO CON INFORMACIØN 8

A Ê )NSERCIØN AL INICIO DE LA LISTA DOBLEMENTE LIGADA %N ESTE CASO EL NUEVO NODO SE COLOCA AL PRINCIPIO DE LA LISTA Y SE ESTABLECEN LAS LIGAS CORRESPONDIENTES %L NUEVO NODO INSERTADO SE CONVIERTE ENTONCES EN EL PRIMERO DE LA LISTA DOBLEMENTE LIGADA %L ALGORITMO DESCRIBE ESTE PROCESO !LGORITMO )NSERTA?PRINCIPIO )NSERTA?PRINCIPIO 0 $!4/ [%STE ALGORITMO INSERTA UN NODO AL INICIO DE UNA LISTA DOBLEMENTE LIGADA 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA Y $!4/ ES LA INFORMACIØN QUE SE ALMACENARÈ EN EL NUEVO NODO]


-*45"4 %0#-&.&/5& -*("%"4

161

[1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/2 ,)'!$%2 Y ,)'!):1 SON LOS CAMPOS DE CADA NODO DE LA LISTA] #REAR 1 (ACER 1> ).&/2 ← $!4/ 1> ,)'!$%2 ← 0 0> ,)'!):1 ← 1 1> ,)'!):1 ← .), Y 0 ← 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN AL INICIO DE UNA LISTA DOBLEMENTE LIGADA

B Ê )NSERCIØN AL lNAL DE UNA LISTA DOBLEMENTE LIGADA %N ESTE CASO EL NUEVO NODO SE COLOCA AL lNAL DE LA LISTA DOBLEMENTE LIGADA CONVIRTIÏNDO SE EN EL ÞLTIMO %L ALGORITMO DESCRIBE ESTE PROCESO !LGORITMO )NSERTA?lNAL )NSERTA?lNAL & $!4/ [%STE ALGORITMO INSERTA UN NODO AL lNAL DE UNA LISTA DOBLEMENTE LIGADA & ES EL APUNTADOR AL ÞLTIMO NODO DE LA LISTA Y $!4/ ES LA INFORMACIØN QUE SE ALMACENARÈ EN EL NUEVO NODO] [1 ES UNA VARIABLE DE TIPO PUNTERO ).&/2 ,)'!):1 Y ,)'!$%2 SON LOS CAMPOS DE CADA NODO DE LA LISTA] #REAR 1 (ACER 1> ).&/2 ← $!4/ &> ,)'!$%2 ← 1 1> ,)'!):1 ← & 1> ,)'!$%2 ← .), Y & ← 1

%JEMPLO

&)'52! )NSERCIØN AL INICIO DE LA LISTA .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA INSERCIØN DE UN NUEVO NODO AL INICIO DE LA MISMA

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN AL lNAL DE UNA LISTA DOBLEMENTE LIGADA


162 >« ÌÕ ÊxÊ Ê Ê -*45"4 &)'52! )NSERCIØN AL lNAL DE LA LISTA .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA INSERCIØN DE UN NUEVO NODO

!L TRABAJAR CON UN APUNTADOR AL ÞLTIMO ELEMENTO DE LA LISTA & LA OPERACIØN DE INSER CIØN SE SIMPLIlCA NOTABLEMENTE YA QUE SE EVITA RECORRER TODA LA LISTA

C Ê )NSERCIØN DE UN NODO ANTES QUE OTRO EN UNA LISTA DOBLEMENTE LIGADA %N ESTE CASO EL NUEVO NODO SE COLOCA PRECEDIENDO A OTRO DADO COMO REFERENCIA #ABE SE×ALAR QUE SØLO SE PRESENTARÈ LA OPERACIØN DE INSERCIØN DE UN NODO ANTES DE OTRO DADO COMO REFERENCIA YA QUE LAS OPERACIONES !NTES?QUE?OTRO? Y $ESPUÏS?QUE?OTRO SON SI MÏTRICAS !LGORITMO )NSERTA?ANTES?8 )NSERTA?ANTES?8 0 $!4/ 8 [%STE ALGORITMO INSERTA UN NODO ANTES DE OTRO DADO COMO REFERENCIA CON INFORMACIØN 8 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA Y $!4/ ES LA INFORMACIØN QUE SE ALMACENARÈ EN EL NUEVO NODO] [1 4 Y 2 SON VARIABLES DE TIPO APUNTADOR ).&/2 ,)'!$%2 Y ,)'!):1 SON LOS CAMPOS DE CADA NODO DE LA LISTA] (ACER 1 ← 0 -IENTRAS 1> ,)'!$%2 ≠ .), Y 1> ).&/2 ≠ 8 2EPETIR (ACER 1 ← 1> ,)'!$%2 [&IN DEL CICLO DEL PASO ] 3I 1> ).&/2 8 ENTONCES #REAR 4 [3E CREA EL NUEVO NODO] (ACER 4> ).&/2 ← $!4/ 4> ,)'!$%2 ← 1 2 ← 1> ,)'!):1 Y 1> ,)'!):1 ← 4 3I 0 1 ENTONCES (ACER 0 ← 4 Y 4> ,)'!):1 ← .), SI NO (ACER 2> ,)'!$%2 ← 4 Y 4> ,)'!):1 ← 2


-*45"4 %0#-&.&/5& -*("%"4

163

[&IN DEL CONDICIONAL DEL PASO ] SI NO ESCRIBIR h%L ELEMENTO NO SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE INSERCIØN APLICANDO EL ALGORITMO

%LIMINACIØN EN LISTAS DOBLEMENTE LIGADAS ,A OPERACIØN DE ELIMINACIØN DE UN NODO EN UNA LISTA DOBLEMENTE LIGADA AL IGUAL QUE EN EL CASO DE LAS LISTAS SIMPLEMENTE LIGADAS CONSISTE EN ELIMINAR UN ELEMENTO DE LA LISTA REDElNIENDO LOS APUNTADORES CORRESPONDIENTES Y LIBERANDO EL ESPACIO DE MEMORIA OCUPADO POR EL NODO %N LA ELIMINACIØN SE PUEDEN PRESENTAR DIFERENTES CASOS AUNQUE ALGUNOS DE ELLOS SON SIMÏTRICOS YA QUE CADA NODO TIENE APUNTADORES HACIA DELANTE DE RECHA Y ATRÈS IZQUIERDA ◗ ◗ ◗ ◗

%LIMINAR EL PRIMER NODO %LIMINAR EL ÞLTIMO NODO %LIMINAR EL NODO CON INFORMACIØN 8 %LIMINAR EL NODO ANTERIOR POSTERIOR AL NODO CON INFORMACIØN 8

%N LOS ALGORITMOS QUE PRESENTAN LA SOLUCIØN A LOS DIFERENTES CASOS DE BORRADO DE UN ELEMENTO DE UNA LISTA NO SE CONSIDERA QUE ÏSTA SE ENCUENTRE VACÓA %STE CASO COMO YA SE HA REPETIDO EN VARIAS OCASIONES SE PUEDE CONTROLAR EN EL PROGRAMA PRINCIPAL O BIEN CON UNA CONDICIØN SIMPLE AL INICIO DE CADA ALGORITMO

&)'52! )NSERCIØN DE NODOS .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA INSERCIØN DE UN NUEVO NODO


164 >« ÌÕ ÊxÊ Ê Ê -*45"4

A Ê %LIMINAR EL PRIMER NODO DE UNA LISTA DOBLEMENTE LIGADA #ONSISTE EN QUITAR EL PRIMER NODO DE LA LISTA CUALQUIERA QUE SEA SU INFORMACIØN REDEl NIENDO EL PUNTERO AL INICIO DE LA MISMA %L ALGORITMO DESCRIBE ESTE PROCESO !LGORITMO %LIMINA?INICIO %LIMINA?INICIO 0 & [%STE ALGORITMO ELIMINA EL PRIMER ELEMENTO DE UNA LISTA DOBLEMENTE LIGADA 0 Y & SON LOS APUNTADORES AL PRIMER Y ÞLTIMO NODOS DE LA LISTA RESPECTIVAMENTE] [1 ES UNA VARIABLE DE TIPO APUNTADOR ).&/2 ,)'!$%2 Y ,)'!):1 SON LOS CAMPOS DE CADA NODO DE LA LISTA] (ACER 1 ← 0 3I 1> ,)'!$%2 ≠ .), [6ERIlCA SI LA LISTA TIENE SØLO UN NODO] ENTONCES (ACER 0 ← 1> ,)'!$%2 Y 0> ,)'!):1 ← .), SI NO (ACER 0 ← .), Y & ← .), [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DEL PRIMER NODO DE UNA LISTA DOBLEMENTE LIGADA MEDIANTE EL ALGORITMO

B Ê %LIMINAR EL ÞLTIMO NODO DE UNA LISTA DOBLEMENTE LIGADA %STE CASO ES SIMÏTRICO AL ANTERIOR CONSISTE EN ELIMINAR EL ÞLTIMO NODO DE UNA LISTA DOBLE MENTE LIGADA Y REDElNIR EL APUNTADOR AL lNAL DE ELLA &)'52! %LIMINACIØN DEL PRIMER NODO DE UNA LISTA .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA ELIMINACIØN DEL PRIMER NODO


-*45"4 %0#-&.&/5& -*("%"4

165

!LGORITMO %LIMINA?ÞLTIMO %LIMINA?ÞLTIMO 0 & [%STE ALGORITMO ELIMINA EL ÞLTIMO ELEMENTO DE UNA LISTA DOBLEMENTE LIGADA 0 Y & SON LOS APUNTADORES AL PRIMERO Y ÞLTIMO NODOS DE LA LISTA RESPECTIVAMENTE] [1 ES UNA VARIABLE DE TIPO PUNTERO ).&/2 ,)'!$%2 Y ,)'!):1 SON LOS CAMPOS DE CADA NODO DE LA LISTA] (ACER 1 ← & 3I 1> ,)'!):1 ≠ .), [6ERIlCA SI LA LISTA TIENE UN SOLO NODO] ENTONCES (ACER & ← 1> ,)'!):1 Y &> ,)'!$%2 ← .), SI NO (ACER & ← .), Y 0 ← .), [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 1

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DEL ÞLTIMO NODO DE UNA LISTA DOBLEMENTE LIGADA APLICANDO EL ALGORITMO ANTERIOR

C Ê %LIMINAR UN NODO CON INFORMACIØN 8 %STE CASO CONSISTE EN ELIMINAR EL NODO QUE CONTENGA LA INFORMACIØN 8 Y ESTABLECER LOS APUNTADORES CORRESPONDIENTES ENTRE SU ANTECESOR Y SU SUCESOR RESPECTIVAMENTE %STE CASO TIENE ALGUNAS VARIANTES %L NODO QUE SE QUIERE ELIMINAR PUEDE QUE NO SE ENCUENTRE EN LA LISTA O BIEN QUE SE HALLE Y SEA EL PRIMERO EL ÞLTIMO EL ÞNICO O QUE ESTÏ EN CUAL QUIER POSICIØN INTERMEDIA DE LA ESTRUCTURA

&)'52! %LIMINACIØN DEL ÞLTIMO NODO DE UNA LISTA .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA ELIMINACIØN DEL ÞLTIMO NODO


166 >« ÌÕ ÊxÊ Ê Ê -*45"4 !LGORITMO %LIMINA?8 %LIMINA?8 0 & 8 [%STE ALGORITMO ELIMINA EL NODO CON INFORMACIØN 8 DE UNA LISTA DOBLEMENTE LIGADA 0 Y & SON LOS APUNTADORES AL PRIMERO Y ÞLTIMO NODOS DE LA LISTA RESPECTIVAMENTE] [1 4 Y 2 SON VARIABLES DE TIPO APUNTADOR ).&/2 ,)'!$%2 Y ,)'!):1 SON LOS CAMPOS DE CADA NODO DE LA LISTA] (ACER 1 ← 0 -IENTRAS 1> ,)'!$%2 ≠ .), Y 1> ).&/2 ≠ 8 2EPETIR (ACER 1 ← 1> ,)'!$%2 [&IN DEL CICLO DEL PASO ] 3I 1> ).&/2 8 ENTONCES 3I 1 0 Y 1 & [,A LISTA TIENE UN SOLO NODO] ENTONCES (ACER 0 ← .), Y & ← .), SI NO 3I 1 0 [%S EL PRIMERO] ENTONCES (ACER 0 ← 1> ,)'!$%2 Y 0> ,)'!):1 ← .), SI NO 3I 1 & [%S EL ÞLTIMO] ENTONCES (ACER & ← 1> ,)'!):1 Y &> ,)'!$%2 ← .), SI NO [%S UN NODO INTERMEDIO] (ACER 4 ← 1> ,)'!):1 2 ← 1> ,)'!$%2 4> ,)'!$%2 ← 2 Y 2> ,)'!):1 ← 4 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 1 SI NO %SCRIBIR h%L ELEMENTO CON INFORMACIØN 8 NO SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

%N LA lGURA SE PRESENTA UN EJEMPLO DE ELIMINACIØN DE UN NODO CON INFORMACIØN 8 EN UNA LISTA DOBLEMENTE LIGADA

D Ê %LIMINAR EL NODO ANTERIOR AL NODO CON INFORMACIØN 8 %N ESTE CASO SE TRATA DE ELIMINAR EL NODO ANTERIOR A UNO DADO COMO REFERENCIA QUE CON TENGA LA INFORMACIØN 8 %L CASO TAMBIÏN TIENE ALGUNAS VARIANTES 0UEDE SER QUE EL NODO CON INFORMACIØN 8 NO SE ENCUENTRE EN LA LISTA O BIEN SE ENCUENTRE Y SEA EL PRIMERO EN


-*45"4 %0#-&.&/5& -*("%"4

167

&)'52! %LIMINACIØN DE UN NODO CON INFORMACIØN 8 A %L NODO ES EL PRIMERO B %L NODO ES EL ÞLTIMO C %L NODO ES INTERMEDIO .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA ELIMINACIØN DE UN NODO

ESE CASO NO HAY NADA QUE ELIMINAR EL SEGUNDO SE ELIMINA EL PRIMERO DE LA LISTA O SE ENCUENTRE EN CUALQUIER OTRA POSICIØN %L ALGORITMO DESCRIBE LOS PASOS NECESARIOS PARA LLEVAR A CABO ESTA OPERACIØN !LGORITMO %LIMINA?ANTES?8

%LIMINA?ANTES?8 0 8 [%STE ALGORITMO ELIMINA SI SE PUEDE EL NODO ANTERIOR A AQUEL QUE CONTIENE LA INFORMACIØN 8 0 ES EL APUNTADOR AL PRIMER NODO DE LA LISTA] [1 4 Y 2 SON VARIABLES DE TIPO APUNTADOR ).&/2 ,)'!$%2 Y ,)'!):1 SON LOS CAMPOS DE CADA NODO DE LA LISTA]


168 >« ÌÕ ÊxÊ Ê Ê -*45"4 (ACER 1 ← 0 -IENTRAS 1> ,)'!$%2 ≠ .), Y 1> ).&/2 ≠ 8 2EPETIR (ACER 1 ← 1> ,)'!$%2 [&IN DEL CICLO DEL PASO ] 3I 1> ).&/2 8 ENTONCES 3I 0 1 ENTONCES %SCRIBIR h.O EXISTE NODO ANTERIOR AL PRIMEROv SI NO (ACER 4 ← 1> ,)'!):1 3I 0 4 [%S EL PRIMER NODO DE LA LISTA] ENTONCES (ACER 0 ← 1 Y 0> ,)'!):1 ← .), SI NO (ACER 2 ← 4> ,)'!):1 1> ,)'!):1 ← 2 Y 2> ,)'!$%2 ← 1 [&IN DEL CONDICIONAL DEL PASO ] 1UITAR 4 [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h%L ELEMENTO CON INFORMACIØN 8 NO SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

,A lGURA CONTIENE UN EJEMPLO DE ELIMINACIØN MEDIANTE EL ALGORITMO ANTERIOR

&)'52! %LIMINACIØN DE NODOS .OTA ,AS mECHAS DISCONTINUAS INDICAN LOS CAMBIOS ORIGINADOS EN LA LISTA DOBLEMENTE LIGADA POR LA ELIMINACIØN DE UN NODO


-*45"4 %0#-&.&/5& -*("%"4 $*3$6-"3&4

169

&)'52! ,ISTA DOBLEMENTE LIGADA CIRCULAR

,)34!3 $/",%-%.4% ,)'!$!3 #)2#5,!2%3 %N LAS LISTAS DOBLEMENTE LIGADAS CIRCULARES EL CAMPO LIGA IZQUIERDA DEL PRIMER NODO DE LA LISTA APUNTA AL ÞLTIMO Y EL CAMPO LIGA DERECHA DE ÏSTE APUNTA AL PRIMERO ,A lGURA REPRESENTA UNA ESTRUCTURA DE ESTE TIPO ,A PRINCIPAL VENTAJA DE LAS LISTAS CIRCULARES ES QUE PERMITEN LA NAVEGACIØN EN CUAL QUIER SENTIDO A TRAVÏS DE LA MISMA Y ADEMÈS SE PUEDE RECORRER TODA LA LISTA PARTIENDO DE CUALQUIER NODO SIEMPRE QUE TENGAMOS UN APUNTADOR A ÏSTE 3IN EMBARGO DEBEMOS DESTACAR QUE ES NECESARIO ESTABLECER CONDICIONES ADECUADAS PARA DETENER EL RECORRIDO DE UNA LISTA Y EVITAR CAER EN CICLOS INlNITOS !L IGUAL QUE EN EL CASO DE LISTAS SIMPLEMENTE LIGADAS CIRCULARES SE SUELE UTILIZAR UN NODO DE CABECERA lG %STE NODO TENDRÈ LAS CARACTERÓSTICAS DESCRITAS ANTERIORMENTE Y SERVIRÈ COMO REFEREN CIA PARA DETECTAR CUÈNDO SE HA RECORRIDO TOTALMENTE LA LISTA (ASTA ESTE MOMENTO SE HAN ESTUDIADO LAS PRINCIPALES CARACTERÓSTICAS DE LA ESTRUCTURA TIPO LISTA CONSIDERANDO TODAS SUS VARIANTES lG

&)'52! ,ISTA DOBLEMENTE LIGADA CIRCULAR CON NODO DE CABECERA

&)'52!

SIMPLEMENTE LIGADAS CIRCULARES ,ISTAS

SIMPLEMENTE LIGADAS

DOBLEMENTE LIGADAS

DOBLEMENTE LIGADAS CIRCULARES


170 >« ÌÕ ÊxÊ Ê Ê -*45"4 !DEMÈS SE HAN PRESENTADO LOS ALGORITMOS UTILIZADOS PARA REALIZAR LAS OPERACIONES MÈS IMPORTANTES DE LISTAS ,AS SIGUIENTES SON ALGUNAS APLICACIONES DE LISTAS

!0,)#!#)/.%3 $% ,)34!3 $OS DE LAS APLICACIONES MÈS CONOCIDAS DE LISTAS SON LAS SIGUIENTES ◗ ◗

2EPRESENTACIØN DE POLINOMIOS 2ESOLUCIØN DE COLISIONES HASH

%N GENERAL SE PUEDE SE×ALAR QUE LAS LISTAS SON MUY ÞTILES PARA AQUELLAS APLICACIONES EN LAS QUE SE NECESITE DINAMISMO EN EL CRECIMIENTO Y REDUCCIØN DE LA ESTRUCTURA DE DATOS USADA PARA EL ALMACENAMIENTO DE LA INFORMACIØN

2EPRESENTACIØN DE POLINOMIOS ,AS LISTAS SE PUEDEN EMPLEAR PARA ALMACENAR LOS COElCIENTES DIFERENTES DE CERO DEL PO LINOMIO JUNTO AL EXPONENTE !SÓ POR EJEMPLO DADO EL POLINOMIO 0 X 8 8 8 n SU REPRESENTACIØN MEDIANTE LISTAS QUEDA COMO SE MUESTRA EN LA lGURA %L CAMPO INFORMACIØN DE CADA NODO DE LA LISTA CONTENDRÈ DOS CAMPOS EL CAMPO #/%&)#)%.4% Y EL CAMPO %80/.%.4% #ABE DESTACAR QUE EN EL EJEMPLO ANTERIOR SE UTILIZØ UNA LISTA SIMPLEMENTE LIGADA PERO SE PUDO HABER USADO UNA CIRCULAR O TAMBIÏN UNA LISTA DOBLEMENTE LIGADA

3OLUCIØN DE COLISIONESÊ HASH %N EL CAPÓTULO AL TRATAR EL MÏTODO DE BÞSQUEDA POR TRANSFORMACIØN DE CLAVES SE UTI LIZARON LISTAS PARA RESOLVER COLISIONES MÏTODO DE ENCADENAMIENTO #ON EL OBJETO SE EVITAR LA REITERACIØN Y LA REDUNDANCIA DE INFORMACIØN SE SUGIERE REMITIRSE A DICHO CAPÓTULO &)'52! 2EPRESENTACIØN DE POLINO MIOS USANDO LISTAS


-" $-"4& -/

171

,! #,!3% ,)34! ,A CLASE ,ISTA TIENE ATRIBUTOS Y MÏTODOS AMBOS DEPENDEN DEL TIPO DE LISTA QUE SE ESTÏ DElNIENDO %N ESTA SECCIØN SE DECLARA LA CLASE CORRESPONDIENTE A UNA LISTA SIMPLEMENTE LIGADA #ONSECUENTEMENTE LOS ATRIBUTOS SON LOS APUNTADORES AL PRIMERO Y ÞLTIMO NODOS DE LA LISTA MIENTRAS QUE LOS MÏTODOS REPRESENTAN TODAS LAS OPERACIONES ANALIZADAS AN TERIORMENTE #REA?INICIO )NSERTA?INICIO )NSERTA?lNAL x 2ECORRE?ITERATIVO x %LIMI NA?INICIO %LIMINA?lNAL x ,A CLASE ,ISTA UTILIZA LA CLASE .ODO PARA DECLARAR EL TIPO DE SUS ATRIBUTOS LA CUAL REPRESENTA A LOS NODOS DE LA LISTA %S DECIR CADA NODO TIENE DOS ATRIBUTOS UNO PARA ALMACENAR LA INFORMACIØN Y EL OTRO PARA GUARDAR LA DIRECCIØN DEL SIGUIENTE NODO ,OS MÏTODOS DE ESTA CLASE SON LAS OPERACIONES VÈLIDAS SOBRE SUS MIEMBROS %N LAS lGURAS Y SE PUEDE OBSERVAR LA REPRESENTACIØN GRÈlCA DE LAS CLASES .ODO Y ,ISTA RES PECTIVAMENTE 3E TIENE ACCESO A LOS MIEMBROS DE UN OBJETO DE LA CLASE ,ISTA POR MEDIO DE LA NO TACIØN DE PUNTOS #UANDO SE ASUME QUE LA VARIABLE ,)34!/"* ES UN OBJETO DE LA CLASE ,ISTA PREVIAMENTE CREADO SE PUEDE HACER &)'52! #LASE .ODO

&)'52! #LASE ,ISTA


172 >« ÌÕ ÊxÊ Ê Ê -*45"4 ,)34!/"* )NSERTA?INICIO ARGUMENTO PARA INVOCAR EL MÏTODO QUE INSERTA UN NUEVO ELEMENTO AL INICIO DE LA LISTA %N ESTE MÏTODO HAY UN SOLO ARGUMENTO QUE REPRESENTA EL VALOR A GUARDAR EN EL NUEVO NODO 4ODOS LOS OTROS VALORES REQUERIDOS SON MIEMBROS DE LA CLASE ,)34!/"* %LIMINA?INICIO ARGUMENTO PARA INVOCAR EL MÏTODO QUE ELIMINA EL PRI MER NODO DE LA LISTA %N ESTE MÏTODO HAY UN ÞNICO ARGUMENTO QUE ES PARA REGRESAR EL VALOR ELIMINADO TODOS LOS OTROS VALORES REQUERIDOS SON MIEMBROS DE LA CLASE


&+&3$*$*04

173

▼ %*%2#)#)/3 Ê £° $ElNA UN ALGORITMO PARA INSERTAR SI ES POSIBLE UN ELEMENTO ANTES DE OTRO NODO DADO COMO REFERENCIA EN UNA LISTA ORDENADA Ê Ó° $ElNA UN ALGORITMO PARA INSERTAR SI ES POSIBLE UN ELEMENTO SIGUIENDO A OTRO DADO COMO REFERENCIA EN UNA LISTA ORDENADA Ê Î° $ElNA UN ALGORITMO PARA INSERTAR UN ELEMENTO EN UNA LISTA ORDENADA DE TAL MANERA QUE NO SE ALTERE EL ORDEN DE LA MISMA Ê {° $ElNA UN ALGORITMO PARA ELIMINAR UN NODO DE UNA LISTA ORDENADA Ê x° %SCRIBA UN SUBPROGRAMA QUE LEA DOS LISTAS QUE SE ENCUENTRAN ORDENADAS Y FORME UNA TERCERA QUE RESULTE DE LA MEZCLA DE LOS ELEMENTOS DE AMBAS LISTAS Ê È° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE DADAS DOS LISTAS ORDENADAS ASCENDENTEMEN TE LAS MEZCLE Y GENERE UNA NUEVA LISTA ORDENADA EN FORMA DESCENDENTE Ê Ç° %SCRIBA UN SUBPROGRAMA QUE DADA UNA LISTA QUE CONTIENE NÞMEROS LA DIVIDA EN DOS LISTAS INDEPENDIENTES UNA FORMADA POR LOS NÞMEROS POSITIVOS Y OTRA POR LOS NÞMEROS NEGATIVOS Ê n° %SCRIBA UN SUBPROGRAMA RECURSIVO PARA IMPRIMIR TODA LA INFORMACIØN DE UNA LISTA Ê ° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE BUSQUE UN ELEMENTO 8 EN UNA LISTA DOBLE MENTE LIGADA £ä° %SCRIBA UN SUBPROGRAMA QUE ELIMINE UN ELEMENTO 8 DE UNA LISTA CIRCULAR ££° $ElNA UN ALGORITMO PARA INSERTAR ELEMENTOS EN UNA LISTA CIRCULAR £Ó° %SCRIBA LOS SUBPROGRAMAS h-ETE?0ILAv Y h3ACA?0ILAv PARA INSERTAR Y ELIMINAR RES PECTIVAMENTE UN ELEMENTO DE UNA PILA IMPLEMENTADA POR MEDIO DE UNA LISTA £Î° %SCRIBA UN SUBPROGRAMA RECURSIVO QUE PERMITA RECORRER UNA LISTA DOBLEMENTE LIGADA EN AMBOS SENTIDOS £{° $ElNA UN ALGORITMO RECURSIVO PARA INSERTAR UN ELEMENTO SIGUIENDO A OTRO NODO DADO COMO REFERENCIA EN UNA LISTA DOBLEMENTE LIGADA £x° %SCRIBA UN SUBPROGRAMA RECURSIVO PARA EVALUAR UN POLINOMIO REPRESENTADO POR ME DIO DE UNA LISTA LINEAL


174 >« ÌÕ ÊxÊ Ê Ê -*45"4 £È° $ElNA LOS ALGORITMOS NECESARIOS PARA IMPLEMENTAR UNA ESTRUCTURA TIPO COLA MEDIAN TE LISTAS £Ç° 3E HA DElNIDO LA SIGUIENTE ESTRUCTURA DE DATOS

%N EL ARREGLO h0/342%3v SE ALMACENAN NOMBRES DE POSTRES ORDENADOS ALFA BÏTICAMENTE ! SU VEZ CADA ELEMENTO DEL ARREGLO TIENE UNA LISTA DE TODOS LOS INGRE DIENTES QUE REQUIERE DICHO POSTRE %SCRIBA UN PROGRAMA QUE A $ADO EL NOMBRE DE UN POSTRE IMPRIMA LA LISTA DE TODOS SUS INGREDIENTES B $ADO EL NOMBRE DE UN POSTRE INSERTE NUEVOS INGREDIENTES A SU CORRESPONDIENTE LISTA C $ADO EL NOMBRE DE UN POSTRE ELIMINE ALGUNO DE SUS INGREDIENTES D $Ï DE ALTA UN POSTRE CON TODOS SUS INGREDIENTES E $Ï DE BAJA UN POSTRE CON TODOS SUS INGREDIENTES .OTA %N CADA UNO DE LOS PUNTOS ANTERIORES VERIlQUE TODOS LOS CASOS QUE PUDIERAN PRESENTARSE £n° %SCRIBA UN SUBPROGRAMA QUE ELIMINE LOS ELEMENTOS REPETIDOS DE UNA ESTRUCTURA TIPO COLA IMPLEMENTADA POR MEDIO DE LISTAS £ ° 2ETOME LA CLASE DElNIDA PREVIAMENTE PARA LISTAS SIMPLEMENTE LIGADAS Y PROGRÈMELA EN ALGÞN LENGUAJE ORIENTADO A OBJETOS Óä° 2ETOME LA CLASE DEL PROBLEMA ANTERIOR Y ADÈPTELA PARA LISTAS SIMPLEMENTE LIGADAS CIRCULARES CON NODO DE CABECERA


&+&3$*$*04

175

Ó£° $ElNA UNA CLASE PARA LISTAS DOBLEMENTE LIGADAS )NCLUYA LOS ATRIBUTOS Y TODOS LOS MÏTODOS QUE CONSIDERE CONVENIENTE 0ROGRÈMELA EN ALGÞN LENGUAJE DE PROGRAMA CIØN ORIENTADO A OBJETOS ÓÓ° 2ETOME LA CLASE DElNIDA DEL PROBLEMA ANTERIOR Y ADÈPTELA PARA LISTAS DOBLEMENTE LIGADAS CIRCULARES CON NODO DE CABECERA Óΰ #ONSIDERE QUE SE TIENE UNA LISTA DE NÞMEROS ENTEROS ORDENADOS CRECIENTEMENTE COMO LA QUE SE MUESTRA A CONTINUACIØN /BSERVE QUE FALTAN ALGUNOS NÞMEROS PARA TENER TODOS LOS VALORES COMPRENDIDOS ENTRE EL PRIMERO Y EL ÞLTIMO %SCRIBA UN PROGRAMA QUE hCOMPLETEv LA LISTA DE TAL MANERA QUE LA MISMA UNA VEZ MODIlCA DA ALMACENE TODOS LOS VALORES A PARTIR DEL NÞMERO DEL PRIMER NODO HASTA EL NÞMERO DEL ÞLTIMO 0ARA EL EJEMPLO LA LISTA GUARDARÈ LOS NÞMEROS Y 5TILICE LA CLASE DE LISTAS SIMPLEMENTE LIGADAS PREVIAMENTE DElNIDA



#APÓTULO

È

­2"/,%3 ).42/$5##)¼. (ASTA EL MOMENTO SØLO SE HAN ESTUDIADO ESTRUCTURAS DE DATOS LINEALES TANTO ESTÈTICAS COMO DINÈMICAS A CADA ELEMENTO SIEMPRE LE SUCEDE O LE PRECEDE COMO MÈXIMO OTRO ELEMENTO !L ESTUDIAR LA ESTRUCTURA DE DATOS ÈRBOLES SE INTRODUCE EL CONCEPTO DE RAMIl CACIØN ENTRE COMPONENTES O NODOS %S DECIR A UN ELEMENTO LE PUEDEN PRECEDER O SUCEDER VARIOS ELEMENTOS ,OS ÈRBOLES SON LAS ESTRUCTURAS DE DATOS NO LINEALES Y DINÈMICAS DE DATOS MÈS IM PORTANTES DEL ÈREA DE COMPUTACIØN $INÈMICAS PUESTO QUE LAS MISMAS PUEDEN CAMBIAR TANTO DE FORMA COMO DE TAMA×O DURANTE LA EJECUCIØN DEL PROGRAMA .O LINEALES PUESTO QUE CADA ELEMENTO DEL ÈRBOL PUEDE TENER MÈS DE UN SUCESOR ,OS ÈRBOLES BALANCEADOS O !6, SON LA ESTRUCTURA DE DATOS MÈS ElCIENTE PARA TRABAJAR CON LA MEMORIA PRINCIPAL INTERNA DEL PROCESADOR MIENTRAS QUE LOS ÈRBOLES " Y ESPECIALMENTE LA VERSIØN " REPRESENTAN LA ESTRUCTURA DE DATOS MÈS ElCIENTE PARA TRABAJAR EN MEMORIA SECUNDARIA O EXTERNA %N LA TABLA SE PRESENTAN LAS PRINCIPALES ESTRUCTURAS DE DATOS CLASIlCADAS DE ACUERDO CON SU CAPACIDAD PARA CAMBIAR EN FORMA Y TAMA×O DURANTE LA EJECUCIØN DEL PROGRAMA %S DE OBSERVAR QUE LAS PILAS Y COLAS NO FUERON CONSIDERADAS EN ESTA CLASIlCACIØN PUESTO QUE DEPENDEN DE LA ESTRUCTURA QUE SE UTILICE PARA IMPLEMENTARLAS 3I SE USAN ARREGLOS SE TRATARÈN COMO ESTRUCTURAS ESTÈTICAS 3I SE IMPLEMENTAN CON LISTAS SERÈN ES TRUCTURAS DINÈMICAS %N AMBOS CASOS SON LINEALES %N LA TABLA SE PRESENTAN LAS PRINCIPALES ESTRUCTURAS DE DATOS CLASIlCADAS SEGÞN LA DISTRIBUCIØN DE SUS ELEMENTOS

4!",!

%STRUCTURAS ESTÈTICAS

%STRUCTURAS DINÈMICAS

%STRUCTURAS DE DATOS ESTÉTICAS Y DINÉMICAS

!RREGLOS

,ISTAS

2EGISTROS

«RBOLES 'RÈlCAS


178 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 4!",! %STRUCTURAS DE DATOS LINEALES Y NO LINEALES

%STRUCTURAS LINEALES

%STRUCTURAS NO LINEALES

!RREGLOS

«RBOLES

2EGISTROS

'RÈlCAS

0ILAS #OLAS ,ISTAS

­2"/,%3 %. '%.%2!, 5N ÈRBOL SE PUEDE DElNIR COMO UNA ESTRUCTURA JERÈRQUICA APLICADA SOBRE UNA COLEC CIØN DE ELEMENTOS U OBJETOS LLAMADOS NODOS UNO DE LOS CUALES ES CONOCIDO COMO RAÓZ !DEMÈS SE CREA UNA RELACIØN O PARENTESCO ENTRE LOS NODOS DANDO LUGAR A TÏRMINOS COMO PADRE HIJO HERMANO ANTECESOR SUCESOR ANCESTRO ETCÏTERA &ORMALMENTE SE DElNE UN ÈRBOL DE TIPO 4 COMO UNA ESTRUCTURA HOMOGÏNEA RE SULTADO DE LA CONCATENACIØN DE UN ELEMENTO DE TIPO 4 CON UN NÞMERO lNITO DE ÈRBO LES DISJUNTOS LLAMADOS SUBÈRBOLES 5NA FORMA PARTICULAR DE ÈRBOL ES EL ÈRBOL VACÓO ,OS ÈRBOLES SON ESTRUCTURAS RECURSIVAS YA QUE CADA SUBÈRBOL ES A SU VEZ UN ÈRBOL ,OS ÈRBOLES SE PUEDEN APLICAR PARA LA SOLUCIØN DE UNA GRAN CANTIDAD DE PROBLEMAS 0OR EJEMPLO SE PUEDEN UTILIZAR PARA REPRESENTAR FØRMULAS MATEMÈTICAS PARA REGISTRAR LA HISTORIA DE UN CAMPEONATO DE TENIS PARA CONSTRUIR UN ÈRBOL GENEALØGICO PARA EL ANÈLISIS DE CIRCUITOS ELÏCTRICOS Y PARA ENUMERAR LOS CAPÓTULOS Y SECCIONES DE UN LIBRO 5N ÈRBOL SE PUEDE REPRESENTAR DE DIFERENTES FORMAS Y TODAS ELLAS SE CONSIDERAN EQUI VALENTES %N LA lGURA SE PRESENTAN CINCO NOTACIONES DIFERENTES CORRESPONDIENTES A UN MISMO ÈRBOL %N LA lGURA A SE UTILIZA UN DIAGRAMA DE 6ENN EN LA lGURA B LA ANI DACIØN DE PARÏNTESIS EN LA lGURA C LA NOTACIØN DECIMAL DE $EWEY EN LA lGURA D LA NOTACIØN INDENTADA Y POR ÞLTIMO EN LA lGURA E UN GRAFO %STA ÞLTIMA REPRESENTACIØN ES LA QUE COMÞNMENTE SE UTILIZA Y HA ORIGINADO EL TÏRMINO ÈRBOL POR SU PARECIDO ABSTRAC TO CON EL VEGETAL RAÓZ RAMAS HOJAS A PESAR DE QUE LA RAÓZ SE DIBUJA ARRIBA AUNQUE EN EL VEGETAL SE ENCUENTRE ABAJO %N EL GRAFO SE DISTINGUEN NODOS CÓRCULOS Y ARCOS LÓNEAS CON mECHAS ,OS PRIMEROS SE USAN PARA ALMACENAR LA INFORMACIØN Y LOS ÞLTIMOS PARA ESTABLECER LA RELACIØN ENTRE LOS NODOS %N EL EJEMPLO DE LA lGURA E LOS NODOS GUARDAN LETRAS Y LOS ARCOS PERMITEN IR DE CIERTOS NODOS A OTROS

#ARACTERÓSTICAS Y PROPIEDADES DE LOS ÉRBOLES ,A ESTRUCTURA TIPO ÈRBOL TIENE CIERTAS CARACTERÓSTICAS Y PROPIEDADES QUE LA DISTINGUEN ! CONTINUACIØN SE PRESENTAN LAS MÈS IMPORTANTES A 4ODO ÈRBOL QUE NO ES VACÓO TIENE UN ÞNICO NODO RAÓZ


Ç3#0-&4 &/ (&/&3"-

179

&)'52! $IFERENTES FORMAS DE REPRESENTAR UNA ESTRUCTURA DE ÉRBOL A $IAGRAMAS DE 6ENN B !NIDACIØN DE PARÏNTESIS C .OTACIØN DECIMAL DE $EWEY D .OTACIØN INDENTADA E 'RAFO

B 5N NODO 8 ES DESCENDIENTE DIRECTO DE UN NODO 9 SI EL NODO 8 ES APUNTADO POR EL NODO 9 %N ESTE CASO ES COMÞN UTILIZAR LA EXPRESIØN 8 ES HIJO DE 9 C 5N NODO 8 ES ANTECESOR DIRECTO DE UN NODO 9 SI EL NODO 8 APUNTA AL NODO 9 %N ESTE CASO ES COMÞN UTILIZAR LA EXPRESIØN 8 ES PADRE DE 9 D 3E DICE QUE TODOS LOS NODOS QUE SON DESCENDIENTES DIRECTOS HIJOS DE UN MISMO NODO PADRE SON HERMANOS E 4ODO NODO QUE NO TIENE RAMIlCACIONES HIJOS SE CONOCE CON EL NOMBRE DE TER MINAL U HOJA F 4ODO NODO QUE NO ES RAÓZ NI TERMINAL U HOJA SE CONOCE CON EL NOMBRE DE INTERIOR G 'RADO ES EL NÞMERO DE DESCENDIENTES DIRECTOS DE UN DETERMINADO NODO H 'RADO DEL ÈRBOL ES EL MÈXIMO GRADO DE TODOS LOS NODOS DEL ÈRBOL I .IVEL ES EL NÞMERO DE ARCOS QUE DEBEN SER RECORRIDOS PARA LLEGAR A UN DETERMINADO NODO 0OR DElNICIØN LA RAÓZ TIENE NIVEL J !LTURA DEL ÈRBOL ES EL MÈXIMO NÞMERO DE NIVELES DE TODOS LOS NODOS DEL ÈRBOL


180 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ! CONTINUACIØN SE PRESENTA UN EJEMPLO PARA CLARIlCAR ESTOS CONCEPTOS

%JEMPLO

$ADO EL ÈRBOL GENERAL DE LA lGURA SE PUEDE AlRMAR LO SIGUIENTE ! ES LA RAÓZ DEL ÈRBOL

" ES HIJO DE ! # ES HIJO DE ! $ ES HIJO DE " % ES HIJO DE " , ES HIJO DE (

! ES PADRE DE " " ES PADRE DE $ $ ES PADRE DE ) # ES PADRE DE ' ( ES PADRE DE ,

" Y # SON HERMANOS $ % Y & SON HERMANOS ' Y ( SON HERMANOS * Y + SON HERMANOS

) % * + ' Y , SON NODOS TERMINALES U HOJAS " $ & # Y ( SON NODOS INTERIORES

%L GRADO DEL NODO ! ES %L GRADO DEL NODO " ES %L GRADO DEL NODO # ES %L GRADO DEL NODO $ ES %L GRADO DEL NODO % ES %L GRADO DEL ÈRBOL ES

%L NIVEL DEL NODO ! ES %L NIVEL DEL NODO " ES %L NIVEL DEL NODO $ ES %L NIVEL DEL NODO # ES %L NIVEL DEL NODO , ES

,A ALTURA DEL ÈRBOL ES

,ONGITUD DE CAMINO INTERNO Y EXTERNO 3E DElNE LA LONGITUD DE CAMINO DEL NODO 8 COMO EL NÞMERO DE ARCOS QUE SE DEBEN RE CORRER PARA LLEGAR DESDE LA RAÓZ HASTA EL NODO 8 0OR DElNICIØN LA RAÓZ TIENE LONGITUD DE


Ç3#0-&4 &/ (&/&3"-

181

&)'52! ­RBOL GENERAL

CAMINO SUS DESCENDIENTES DIRECTOS LONGITUD DE CAMINO Y ASÓ SUCESIVAMENTE #ONSI DERE EL ÈRBOL DE LA lGURA %L NODO " TIENE LONGITUD DE CAMINO EL NODO ) LONGITUD DE CAMINO Y EL NODO ( LONGITUD DE CAMINO

,ONGITUD DE CAMINO INTERNO ,A LONGITUD DE CAMINO INTERNO ,#) DEL ÈRBOL ES LA SUMA DE LAS LONGITUDES DE CAMINO DE TODOS LOS NODOS DEL ÈRBOL %STA MEDIDA ES IMPORTANTE PORQUE PERMITE CONOCER LOS CAMINOS QUE TIENE EL ÈRBOL 3E CALCULA POR MEDIO DE LA SIGUIENTE FØRMULA H

,#) ¤ NI I

▼ &ØRMULA

I

DONDE I REPRESENTA EL NIVEL DEL ÈRBOL H SU ALTURA Y NI EL NÞMERO DE NODOS EN EL NIVEL I ,A ,#) DEL ÈRBOL DE LA lGURA SE CALCULA DE ESTA FORMA ,#) !HORA BIEN LA MEDIA DE LA LONGITUD DE CAMINO INTERNO ,#)- SE CALCULA DIVI DIENDO LA ,#) ENTRE EL NÞMERO DE NODOS DEL ÈRBOL N ,A MEDIA ES IMPORTANTE PORQUE PERMITE CONOCER EN PROMEDIO EL NÞMERO DE DECISIONES QUE SE DEBEN TOMAR PARA LLEGAR A UN DETERMINADO NODO PARTIENDO DESDE LA RAÓZ 3E EXPRESA

,#)- ,#) N

▼ &ØRMULA

,A ,#)- DEL ÈRBOL DE LA lGURA SE CALCULA COMO SE MUESTRA A CONTINUACIØN ,#)-


182 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

,ONGITUD DE CAMINO EXTERNO 0ARA DElNIR LA LONGITUD DE CAMINO EXTERNO DE UN ÈRBOL ES NECESARIO PRIMERO EXPLICAR LOS CONCEPTOS DE ÈRBOL EXTENDIDO Y NODO ESPECIAL 5N ÈRBOL EXTENDIDO ES AQUEL EN EL QUE EL NÞMERO DE HIJOS DE CADA NODO ES IGUAL AL GRADO DEL ÈRBOL 3I ALGUNO DE LOS NODOS DEL ÈRBOL NO CUMPLE CON ESTA CONDICIØN ENTON CES DEBEN INCORPORARSE AL MISMO TANTOS NODOS ESPECIALES COMO SE REQUIERA PARA LLEGAR A CUMPLIRLA ,OS NODOS ESPECIALES TIENEN COMO OBJETIVO REMPLAZAR LAS RAMAS VACÓAS O NULAS NO PUEDEN TENER DESCENDIENTES Y NORMALMENTE SE REPRESENTAN CON LA FORMA DE UN CUADRADO %N LA lGURA SE PRESENTA EL ÈRBOL EXTENDIDO DE LA lGURA %L NÞMERO DE NODOS ES PECIALES DE ESTE ÈRBOL ES 3E PUEDE DElNIR AHORA LA LONGITUD DE CAMINO EXTERNO ,#% DE UN ÈRBOL COMO LA SUMA DE LAS LONGITUDES DE CAMINO DE TODOS LOS NODOS ESPECIALES DEL ÈRBOL 3E CALCULA POR MEDIO DE LA SIGUIENTE FØRMULA H

,#% ¤ NEI I

▼ &ØRMULA

I

DONDE I REPRESENTA EL NIVEL DEL ÈRBOL H SU ALTURA Y NEI EL NÞMERO DE NODOS ESPECIALES EN EL NIVEL I /BSERVE QUE I COMIENZA DESDE PUESTO QUE LA RAÓZ SE ENCUENTRA EN EL NIVEL Y NO PUEDE SER UN NODO ESPECIAL ,A ,#% DEL ÈRBOL DE LA lGURA SE CALCULA DE ESTA MANERA ,#%

&)'52! ­RBOL EXTENDIDO

!HORA BIEN LA MEDIA DE LA LONGITUD DE CAMINO EXTERNO ,#%- SE CALCULA DIVI DIENDO LA ,#% ENTRE EL NÞMERO DE NODOS ESPECIALES DEL ÈRBOL NE /BSERVE EL LECTOR LA SIGUIENTE FØRMULA


Ç3#0-&4 &/ (&/&3"-

,#%- ,#% NE

183

▼ &ØRMULA

E INDICA EL NÞMERO DE ARCOS QUE SE DEBEN RECORRER EN PROMEDIO PARA LLEGAR PARTIENDO DESDE LA RAÓZ A UN NODO ESPECIAL CUALQUIERA DEL ÈRBOL ,A ,#%- DEL ÈRBOL DE LA lGURA SE CALCULA DE LA SIGUIENTE MANERA ,#%- %L SIGUIENTE EJEMPLO CLARIlCARÈ LOS CONCEPTOS DE LONGITUD DE CAMINO INTERNO Y EX TERNO

%JEMPLO

$ADO EL ÈRBOL GENERAL DE LA lGURA Y EL ÈRBOL EXTENDIDO DE LA lGURA SE CALCULA LA LONGITUD DE CAMINO INTERNO

&)'52! ­RBOL GENERAL

,#) ,A MEDIA DE LA LONGITUD DE CAMINO INTERNO ,#)- &)'52! ­RBOL EXTENDIDO

,A LONGITUD DE CAMINO EXTERNO ,#%


184 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ,A MEDIA DE LA LONGITUD DE CAMINO EXTERNO ,#%-

­2"/,%3 ").!2)/3 5N ÈRBOL ORDENADO ES AQUEL EN EL CUAL LA DISTRIBUCIØN DE LAS RAMAS SIGUE UN CIERTO ORDEN ,OS ÈRBOLES ORDENADOS DE GRADO SON DE ESPECIAL INTERÏS EN EL ÈREA DE LA COMPUTACIØN PORQUE PERMITEN REPRESENTAR LA INFORMACIØN RELACIONADA CON LA SOLUCIØN DE MUCHOS PRO BLEMAS %STOS ÈRBOLES SON CONOCIDOS CON EL NOMBRE DE ÈRBOLES BINARIOS %N UN ÈRBOL BINARIO CADA NODO PUEDE TENER COMO MÈXIMO DOS SUBÈRBOLES Y ÏSTOS SE DISTINGUEN ENTRE SÓ COMO EL SUBÈRBOL IZQUIERDO Y EL SUBÈRBOL DERECHO SEGÞN SU UBICACIØN CON RESPECTO AL NODO RAÓZ &ORMALMENTE SE DElNE UN ÈRBOL BINARIO TIPO 4 COMO UNA ESTRUCTURA HOMOGÏ NEA RESULTADO DE LA CONCATENACIØN DE UN ELEMENTO DE TIPO 4 LLAMADO RAÓZ CON DOS ÈRBOLES BINARIOS DISJUNTOS LLAMADOS SUBÈRBOL IZQUIERDO Y SUBÈRBOL DERECHO 5N ÈRBOL BINARIO ESPECIAL ES EL ÈRBOL VACÓO ,OS ÈRBOLES BINARIOS TIENEN MÞLTIPLES APLICACIONES 3E LES PUEDE UTILIZAR PARA RE PRESENTAR LA SOLUCIØN DE UN PROBLEMA PARA EL CUAL EXISTEN DOS POSIBLES ALTERNATIVAS ÈRBOL DE DECISIONES PARA REPRESENTAR UN ÈRBOL GENEALØGICO CONSTRUIDO EN FORMA ASCENDENTE Y DONDE SE MUESTRAN LOS ANCESTROS DE UN INDIVIDUO DADO PARA REPRESENTAR LA HISTORIA DE UN CAMPEONATO DE TENIS CONSTRUIDO EN FORMA ASCENDENTE Y DONDE EXISTE UN GANADOR lNALISTAS SEMIlNALISTAS Y ASÓ SUCESIVAMENTE Y PARA REPRESENTAR EX PRESIONES ALGEBRAICAS CONSTRUIDAS CON OPERADORES BINARIOS %STO SØLO POR CITAR ALGUNOS DE SUS MÞLTIPLES USOS %N LA lGURA SE MUESTRAN TRES DIAGRAMAS CORRESPONDIENTES A UNA ESTRUCTURA DE ÈRBOL BINARIO %N LA lGURA A HAY UN ÈRBOL BINARIO DE BÞSQUEDA ESTA VARIANTE SE PRE SENTARÈ CON DETALLE MÈS ADELANTE EN LA lGURA B EL ÈRBOL BINARIO QUE REPRESENTA LA EXPRESIØN ! " # $ > Y EN LA lGURA C UN ÈRBOL GENEALØGICO ,OS ÈRBOLES ORDENADOS DE GRADO MAYOR A REPRESENTAN TAMBIÏN ESTRUCTURAS IM PORTANTES 3E CONOCEN CON EL NOMBRE DE ÈRBOLES MULTICAMINOS Y SERÈN ESTUDIADOS MÈS ADELANTE EN ESTE MISMO CAPÓTULO


Ç3#0-&4 #*/"3*04 &)'52! $ISTINTAS APLICACIONES DE ÉRBOLES BINARIOS A ­RBOLES BINARIOS DE BÞSQUEDA B 2EPRESENTACIØN DE UNA EXPRESIØN ALGEBRAICA C ­RBOL GENEALØGICO

185


186 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

­RBOLES BINARIOS DISTINTOS SIMILARES Y EQUIVALENTES $OS ÈRBOLES BINARIOS SON DISTINTOS CUANDO SUS ESTRUCTURAS LA DISTRIBUCIØN DE NODOS Y ARCOS SON DIFERENTES %N LA lGURA SE PRESENTAN DOS EJEMPLOS DE ÈRBOLES BINARIOS DISTINTOS &)'52! ­RBOLES BINARIOS DISTINTOS

$OS ÈRBOLES BINARIOS SON SIMILARES CUANDO SUS ESTRUCTURAS SON IDÏNTICAS PERO LA INFORMACIØN QUE CONTIENEN SUS NODOS DIlERE ENTRE SÓ %N LA lGURA SE PRESENTAN DOS EJEMPLOS DE ÈRBOLES BINARIOS SIMILARES

&)'52! ­RBOLES BINARIOS SIMILARES

0OR ÞLTIMO LOS ÈRBOLES BINARIOS EQUIVALENTES SE DElNEN COMO AQUELLOS QUE SON SIMILARES Y ADEMÈS LOS NODOS CONTIENEN LA MISMA INFORMACIØN %N LA lGURA SE MUES TRAN DOS EJEMPLOS DE ÈRBOLES BINARIOS EQUIVALENTES &)'52! ­RBOLES BINARIOS EQUIVA LENTES


Ç3#0-&4 #*/"3*04

187

#ON EL lN DE CLARIlCAR LOS CONCEPTOS ANTERIORES SE PRESENTA EL SIGUIENTE EJEMPLO

%JEMPLO

$ADOS LOS ÈRBOLES BINARIOS DE LA lGURA SE PUEDE AlRMAR LO SIGUIENTE

&)'52! ­RBOLES BINARIOS DISTINTOS SIMILARES Y EQUIVALENTES

◗ ◗ ◗

%L ÈRBOL DE LA lGURA C ES DISTINTO DE LOS ÈRBOLES DE LA lGURA A B Y D ,OS ÈRBOLES DE LA lGURA A B Y D SON SIMILARES ,OS ÈRBOLES DE LA lGURA A Y D SON EQUIVALENTES

­RBOLES BINARIOS COMPLETOS 3E DElNE UN ÈRBOL BINARIO COMPLETO !"# COMO UN ÈRBOL EN EL QUE TODOS SUS NODOS EXCEPTO LOS DEL ÞLTIMO NIVEL TIENEN DOS HIJOS EL SUBÈRBOL IZQUIERDO Y EL SUBÈRBOL DERE CHO %N LA lGURA SE PRESENTAN DOS EJEMPLOS DE ÈRBOLES BINARIOS COMPLETOS


188 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! ­RBOLES BINARIOS COMPLE TOS A $E ALTURA B $E ALTURA

%L NÞMERO DE NODOS DE UN ÈRBOL BINARIO COMPLETO DE ALTURA H SE PUEDE CALCULAR APLICANDO LA SIGUIENTE FØRMULA

.Á-%2/ $% ./$/3 !"# H n

▼ &ØRMULA

!SÓ POR EJEMPLO UN ÈRBOL BINARIO COMPLETO DE ALTURA TENDRÈ NODOS UNO DE ALTURA TENDRÈ NODOS Y UN ÈRBOL DE ALTURA TENDRÈ NODOS #ABE ACLARAR QUE EXISTEN ALGUNOS AUTORES QUE DElNEN UN ÈRBOL BINARIO COMPLETO DE OTRA FORMA Y OTROS QUE UTILIZAN EL TÏRMINO LLENO PARA REFERIRSE A LO QUE EN ESTE LIBRO SE DENOMINA COMPLETO

2EPRESENTACIØN DE ÉRBOLES GENERALES COMO BINARIOS ,OS ÈRBOLES BINARIOS POR LAS RAZONES YA MENCIONADAS SE APLICAN EN LA SOLUCIØN COMPU TACIONAL DE MUCHOS PROBLEMAS !DEMÈS SU USO SE VE FAVORECIDO POR SU DINAMISMO LA NO LINEALIDAD ENTRE SUS ELEMENTOS Y POR SU SENCILLA PROGRAMACIØN 0OR LO TANTO RESULTA MUY ÞTIL PODER CONVERTIR ÈRBOLES GENERALES CON A N HIJOS EN ÈRBOLES BINARIOS %N ESTA SECCIØN SE DARÈN LOS PASOS NECESARIOS PARA LOGRARLO #ONSIDERE EL ÈRBOL GE NERAL DE LA lGURA A ,AS OPERACIONES QUE SE DEBEN APLICAR PARA LOGRAR LA CONVERSIØN DEL ÈRBOL GENERAL AL ÈRBOL BINARIO CORRESPONDIENTE SON LAS SIGUIENTES


Ç3#0-&4 #*/"3*04

189

%NLAZAR LOS HIJOS DE CADA NODO EN FORMA HORIZONTAL ˆLOS HERMANOSˆ 2ELACIONAR EN FORMA VERTICAL EL NODO PADRE CON EL HIJO QUE SE ENCUENTRA MÈS A LA IZQUIERDA !DEMÈS SE DEBE ELIMINAR EL VÓNCULO DE ESE PADRE CON EL RESTO DE SUS HIJOS 2OTAR EL DIAGRAMA RESULTANTE APROXIMADAMENTE GRADOS HACIA LA IZQUIERDA Y ASÓ SE OBTENDRÈ EL ÈRBOL BINARIO CORRESPONDIENTE %N LA lGURA B SE VISUALIZA EL ÈRBOL LUEGO DE APLICAR LOS DOS PRIMEROS PASOS %N LA lGURA C SE OBSERVA EL ÈRBOL BINARIO OBTENIDO LUEGO DE APLICAR EL TERCER PASO

&)'52! #ONVERSIØN DE UN ÉRBOL GENERAL EN UN ÉRBOL BINARIO A ­RBOL GENERAL B ­RBOL BINARIO LUEGO DE APLICAR LOS PASOS Y C ­RBOL BINARIO LUEGO DE APLICAR EL PASO


190 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %JEMPLO

&)'52! #ONVERSIØN DE UN ÉRBOL GENERAL EN UN ÉRBOL BINARIO A ­RBOL GENERAL B ­RBOL BINARIO LUEGO DE APLICAR LOS PASOS Y C ­RBOL BINARIO LUEGO DE APLICAR EL PASO

$ADO COMO DATO EL ÈRBOL GENERAL DE LA lGURA A SE DEBE CONVERTIR A UN ÈRBOL BINARIO %N LA lGURA B SE OBSERVA UNA GRÈlCA DEL ÈRBOL LUEGO DE APLICAR LOS DOS PRIMEROS PA SOS %N LA lGURA C SE OBSERVA EL ÈRBOL BINARIO QUE SE OBTIENE LUEGO DE QUE SE APLICA EL TERCER PASO


Ç3#0-&4 #*/"3*04

191

/BSERVE QUE PARA TODO NODO DE UN ÈRBOL BINARIO GENERADO A PARTIR DE UN ÈRBOL GE NERAL SE DEBE CUMPLIR LO SIGUIENTE 3I LA RAMA DERECHA DE CADA NODO EXCEPTO EL NODO RAÓZ ES DISTINTA DE VACÓO SE EN CUENTRA UN NODO QUE ERA HERMANO DE ÏSTE EN EL ÈRBOL GENERAL $E LA lGURA C PODEMOS DEDUCIR QUE # ERA HERMANO DE " !PLICANDO EL MISMO CRITERIO DEDUCIMOS TAMBIÏN QUE $ ERA HERMANO DE # Y POR LO TANTO POR TRANSITIVIDAD HERMANO DE " /TRAS DEDUCCIONES QUE SE PUEDEN REALIZAR OBSERVANDO LA lGURA C SON LAS SI GUIENTES ◗ % Y & ERAN HERMANOS ◗ - Y . ERAN HERMANOS ◗ ( ) * Y + ERAN HERMANOS %S DE NOTAR QUE LOS HERMANOS SE ENCUENTRAN EN LA GRÈlCA EN UNA LÓNEA OBLICUA CONTINUA ORIENTADA GRADOS HACIA LA DERECHA %N LA lGURA SE PRESENTAN TRES DIAGRAMAS DIFERENTES DONDE SE PUEDEN OBSERVAR ALGUNOS EJEMPLOS

&)'52! .ODOS HERMANOS

%N LA RAMA IZQUIERDA DE CADA NODO SI ÏSTA ES DISTINTA DE VACÓO SE ENCUENTRA UN NODO QUE ERA HIJO DE ÏSTE EN EL ÈRBOL GENERAL $E LA lGURA C PODEMOS DEDUCIR QUE % ERA HIJO DE " Y COMO POR & ERA HERMANO DE % PODEMOS AlRMAR QUE & ERA TAMBIÏN HIJO DE " /TRAS DEDUCCIONES QUE SE PUEDEN REALIZAR OBSERVANDO LA lGURA C SON LAS SIGUIENTES ◗ " # Y $ ERAN HIJOS DE ! ◗ - Y . ERAN HIJOS DE ' ◗ ' ERA HIJO DE # %S DE NOTAR QUE LOS HIJOS DE UN NODO SE ENCUENTRAN EN LA GRÈlCA PRIMERO EN UNA LÓNEA OBLICUA CONTINUA ORIENTADA GRADOS HACIA LA IZQUIERDA Y LUEGO EN UNA LÓNEA CON TINUA OBLICUA ORIENTADA GRADOS HACIA LA DERECHA %N LA lGURA HAY TRES DIAGRAMAS DIFERENTES DONDE SE OBSERVAN ALGUNOS EJEMPLOS


192 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %N LA lGURA B NO EXISTE LÓNEA OBLICUA ORIENTADA HACIA LA DERECHA PORQUE ' ES EL ÞNICO HIJO DEL NODO #

&)'52! .ODOS HIJOS

2EPRESENTACIØN DE UN BOSQUE COMO ÉRBOL BINARIO 5N BOSQUE REPRESENTA UN CONJUNTO NORMALMENTE ORDENADO DE UNO O MÈS ÈRBOLES GENE RALES %S POSIBLE UTILIZAR EL ALGORITMO DE CONVERSIØN ANALIZADO EN LA SECCIØN ANTERIOR CON ALGUNAS MODIlCACIONES PARA GENERAR UN ÈRBOL BINARIO A PARTIR DE UN BOSQUE #ONSIDERE POR EJEMPLO EL BOSQUE FORMADO POR TRES ÈRBOLES GENERALES DE LA lGURA ,OS PASOS QUE SE DEBEN APLICAR PARA LOGRAR LA CONVERSIØN DEL BOSQUE A UN ÈRBOL BINARIO SON LOS SIGUIENTES

&)'52! "OSQUE DE ÉRBOLES GENERALES


Ç3#0-&4 #*/"3*04

193

%NLAZAR EN FORMA HORIZONTAL LAS RAÓCES DE LOS DISTINTOS ÈRBOLES GENERALES 2ELACIONAR LOS HIJOS DE CADA NODO ˆLOS HERMANOSˆ EN FORMA HORIZONTAL %NLAZAR EN FORMA VERTICAL EL NODO PADRE CON EL HIJO QUE SE ENCUENTRA MÈS A LA IZ QUIERDA !DEMÈS SE DEBE ELIMINAR EL VÓNCULO DEL PADRE CON EL RESTO DE SUS HIJOS 2OTAR EL DIAGRAMA RESULTANTE APROXIMADAMENTE GRADOS HACIA LA IZQUIERDA Y ASÓ SE OBTENDRÈ EL ÈRBOL BINARIO CORRESPONDIENTE %N LA lGURA A SE MUESTRA EL ÈRBOL LUEGO DE APLICAR LOS TRES PRIMEROS PASOS %N LA lGURA B SE OBSERVA EL ÈRBOL BINARIO OBTENIDO LUEGO DE QUE SE REALIZA EL CUARTO PASO &)'52! #ONVERSIØN DE UN BOSQUE EN ÉRBOL BINARIO A ­RBOL BINARIO LUEGO DE APLICAR LOS PASOS Y B ­RBOL BINARIO LUEGO DE APLICAR EL PASO


194 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %JEMPLO

$ADO COMO DATO EL BOSQUE DE LA lGURA A SE DESEA CONVERTIRLO A UN ÈRBOL BINARIO %N LA lGURA B SE OBSERVA UNA GRÈlCA DEL ÈRBOL LUEGO DE APLICAR LOS TRES PRIMEROS PASOS %N LA lGURA C SE PUEDE APRECIAR EL ÈRBOL BINARIO QUE SE OBTIENE LUEGO DE QUE SE APLICA EL CUARTO PASO

&)'52! #ONVERSIØN DE UN BOSQUE EN ÉRBOL BINARIO A "OSQUE B ­RBOL LUEGO DE APLICAR EL PRIME RO SEGUNDO Y TERCER PASOS C ­RBOL BINARIO LUEGO DE APLICAR EL CUARTO PASO


Ç3#0-&4 #*/"3*04

195

%S DE NOTAR QUE PARA TODO NODO DE UN ÈRBOL BINARIO QUE SE OBTIENE A PARTIR DE UN BOSQUE SE CUMPLEN LOS DOS INCISOS SE×ALADOS EN LA CONVERSIØN DE UN ÈRBOL GENERAL EN UN ÈRBOL BINARIO

2EPRESENTACIØN DE ÉRBOLES BINARIOS EN MEMORIA ,AS DOS MANERAS MÈS COMUNES DE REPRESENTAR UN ÈRBOL BINARIO EN MEMORIA SON 0OR MEDIO DE DATOS TIPO PUNTERO TAMBIÏN CONOCIDOS COMO VARIABLES DINÈMICAS 0OR MEDIO DE ARREGLOS %N ESTE LIBRO SE EXPLICARÈ Y UTILIZARÈ LA PRIMERA FORMA PUESTO QUE REPRESENTA LA MÈS NATURAL PARA TRATAR UNA ESTRUCTURA DE DATOS DE ESTE TIPO !L lNAL DEL CAPÓTULO SE PRESENTARÈ UNA BREVE INTRODUCCIØN A LOS ÈRBOLES DESDE EL PUNTO DE VISTA DEL PARADIGMA ORIENTADO A OBJETOS 3IN EMBARGO LO QUE SE ESTUDIARÈ A CONTINUACIØN SIGUE SIENDO VÈLIDO PARA LAS CLASES #OMO EN LAS OTRAS ESTRUCTURAS DE DATOS PRESENTADAS EN ESTE LIBRO LOS CONCEPTOS EXPLICADOS SON LOS FUNDAMENTOS REQUERIDOS PARA EL USO DE LAS MISMAS INDEPENDIENTEMENTE DEL PARADIGMA Y DEL LENGUAJE UTILIZADO PARA SU IMPLEMENTACIØN ,OS NODOS DEL ÈRBOL BINARIO SE REPRESENTAN COMO REGISTROS #ADA UNO DE ELLOS CON TIENE COMO MÓNIMO TRES CAMPOS %N UN CAMPO SE ALMACENARÈ LA INFORMACIØN DEL NODO ,OS DOS RESTANTES SE UTILIZARÈN PARA APUNTAR LOS SUBÈRBOLES IZQUIERDO Y DERECHO RESPEC TIVAMENTE DEL NODO EN CUESTIØN $ADO EL NODO 4 4

):1

).&/

$%2

%N ÏL SE DISTINGUEN TRES CAMPOS ◗ ◗

):1 ES EL CAMPO DONDE SE ALMACENA LA DIRECCIØN DEL SUBÈRBOL IZQUIERDO DEL NODO 4 ).&/ REPRESENTA EL CAMPO DONDE SE ALMACENA LA INFORMACIØN DEL NODO .ORMAL MENTE EN ESTE CAMPO Y EN EL TRANSCURSO DE ESTE LIBRO SE ALMACENARÈ UN VALOR SIMPLE NÞMERO O CARÈCTER 3IN EMBARGO EN LA PRÈCTICA ES COMÞN ALMACENAR EN ESTE CAMPO CUALQUIER TIPO DE DATO $%2 ES EL CAMPO DONDE SE ALMACENA LA DIRECCIØN DEL SUBÈRBOL DERECHO DEL NODO 4 ,A DElNICIØN DE UN ÈRBOL BINARIO EN LENGUAJE ALGORÓTMICO ES COMO SIGUE %.,!#% >./$/ ./$/ 2%')342/ ):1 TIPO %.,!#% ).&/ TIPO DE DATO $%2 TIPO %.,!#% [&IN DE LA DElNICIØN]


196 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 .OTA %S IMPORTANTE OBSERVAR QUE SE UTILIZA EL SÓMBOLO > PARA REPRESENTAR EL CON CEPTO DE DATO TIPO PUNTERO

%JEMPLO

#ONSIDERE EL ÈRBOL BINARIO DE LA lGURA A QUE REPRESENTA LA EXPRESIØN ALGEBRAICA ! " # $ > 3U REPRESENTACIØN EN MEMORIA ES COMO LA QUE SE MUESTRA EN LA lGURA B .OTE EL LECTOR QUE EN LA lGURA B SE UTILIZA EL TÏRMINO .), PARA HACER REFERENCIA AL ÈRBOL VACÓO

&)'52! 2EPRESENTACIØN DE UN ÉRBOL BINARIO EN MEMORIA A ­RBOL BINARIO B 3U REPRESENTACIØN EN MEMORIA

#OMO TODAS LAS ESTRUCTURAS DE DATOS LOS ÈRBOLES TIENEN ASOCIADAS CIERTAS OPERACIO NES ! CONTINUACIØN SE PRESENTAN LOS ALGORITMOS DE ALGUNAS DE ESTAS OPERACIONES Y MÈS ADELANTE CUANDO SE ESTUDIEN OTROS TIPOS DE ÈRBOLES SE EXPLICARÈN OTRAS

/PERACIONES EN ÉRBOLES BINARIOS 5NA DE LAS OPERACIONES BÈSICAS DE UN ÈRBOL BINARIO ES LA CREACIØN DEL MISMO EN MEMO RIA 5N ALGORITMO MUY SIMPLE PARA FORMAR UN ÈRBOL POR MEDIO DE LA CREACIØN DINÈMICA DE NODOS Y LA ASIGNACIØN A ÏSTOS DE INFORMACIØN ES EL QUE SE MUESTRA A CONTINUACIØN


Ç3#0-&4 #*/"3*04

197

!LGORITMO #REA?ÈRBOL #REA?ÈRBOL !0./$/ [%L ALGORITMO CREA UN ÈRBOL BINARIO EN MEMORIA !0./$/ ES UNA VARIABLE DE TIPO %.,!#% PUNTERO A UN NODO ,A PRIMERA VEZ !0./$/ SE CREA EN EL PROGRAMA PRINCIPAL] [).&/ ):1 Y $%2 SON CAMPOS DEL REGISTRO ./$/ ).&/ ES DE TIPO CARÈCTER ):1 Y $%2 SON DE TIPO PUNTERO ,AS VARIABLES 2%30 Y /42/ SON DE TIPO CARÈCTER Y DE TIPO %.,!#% RESPECTIVAMENTE] ,EER !0./$/> ).&/ [,EE LA INFORMACIØN Y SE GUARDA EN EL NODO] %SCRIBIR hz%XISTE NODO POR IZQUIERDA 3Ó n .O v ,EER 2%30 3I 2%30 h3Óv ENTONCES #REAR /42/ [3E CREA UN NUEVO NODO] (ACER !0./$/> ):1 ← /42/ 2EGRESAR A #REA?ÈRBOL CON !0./$/> ):1 [,LAMADA RECURSIVA] SI NO (ACER !0./$/> ):1 ← .), [&IN DEL CONDICIONAL DEL PASO ] %SCRIBIR hz%XISTE NODO POR DERECHA 3Ó n .O v ,EER 2%30 3I 2%30 h3Óv ENTONCES #REAR /42/ [3E CREA UN NUEVO NODO] (ACER !0./$/> $%2 ← /42/ 2EGRESAR A #REA?ÈRBOL CON !0./$/> $%2 [,LAMADA RECURSIVA] SI NO (ACER !0./$/> $%2 ← .), [&IN DEL CONDICIONAL DEL PASO ]

5NA VEZ QUE SE CREA EL ÈRBOL BINARIO SE PUEDEN REALIZAR OTRAS OPERACIONES SOBRE SUS ELEMENTOS RECORRER TODOS LOS NODOS INSERTAR UN NUEVO NODO ELIMINAR ALGUNO DE LOS EXISTENTES O BUSCAR UN VALOR DETERMINADO 5NA DE LAS OPERACIONES MÈS IMPORTANTES QUE SE REALIZA EN UN ÈRBOL BINARIO ES EL RECO RRIDO DE LOS MISMOS 2ECORRER SIGNIlCA VISITAR LOS NODOS DEL ÈRBOL EN FORMA ORDENADA DE TAL MANERA QUE TODOS LOS NODOS DEL MISMO SEAN VISITADOS UNA SOLA VEZ %XISTEN TRES FOR MAS DIFERENTES DE EFECTUAR EL RECORRIDO Y TODAS ELLAS DE NATURALEZA RECURSIVA ÏSTAS SON A 2ECORRIDO EN PREORDEN ◗ 6ISITAR LA RAÓZ ◗ 2ECORRER EL SUBÈRBOL IZQUIERDO ◗ 2ECORRER EL SUBÈRBOL DERECHO B 2ECORRIDO EN INORDEN ◗ 2ECORRER EL SUBÈRBOL IZQUIERDO


198 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ◗ 6ISITAR LA RAÓZ ◗ 2ECORRER EL SUBÈRBOL DERECHO C 2ECORRIDO EN POSORDEN ◗ 2ECORRER EL SUBÈRBOL IZQUIERDO ◗ 2ECORRER EL SUBÈRBOL DERECHO ◗ 6ISITAR LA RAÓZ %N LA lGURA SE MUESTRAN TRES ÈRBOLES BINARIOS CON EL RESULTADO QUE SE OBTIENE AL EFECTUAR LOS DIFERENTES TIPOS DE RECORRIDO %N ESTE EJEMPLO LA VISITA DEL NODO IMPLICØ LA IMPRESIØN DE SU CONTENIDO .OTE QUE EN UN ÈRBOL BINARIO QUE REPRESENTA UNA EXPRESIØN ALGEBRAICA POR EJEM PLO EL ÈRBOL DE LA lGURA C LA IMPRESIØN DE LA INFORMACIØN DE SUS NODOS USANDO EL RECORRIDO PREORDEN PRODUCE LA NOTACIØN POLACA PRElJA %N EL CASO DEL RECORRIDO INORDEN SE OBTIENE LA NOTACIØN CONVENCIONAL Y POR ÞLTIMO EL RECORRIDO POSORDEN PRODUCE LA NO TACIØN POLACA POSlJA !UNQUE CABE ACLARAR SIN LOS PARÏNTESIS RESPECTIVOS QUE INDICAN LA PRECEDENCIA DE LOS DISTINTOS OPERADORES

&)'52! ­RBOLES BINARIOS Y SUS RECORRIDOS


Ç3#0-&4 #*/"3*04

199

&)'52! CONTINUACIØN

3E ANALIZAN A CONTINUACIØN LOS ALGORITMOS QUE EFECTÞAN LOS DIFERENTES TIPOS DE RECO RRIDOS EN UN ÈRBOL BINARIO !LGORITMO 0REORDEN

0REORDEN !0./$/ [%STE ALGORITMO REALIZA EL RECORRIDO PREORDEN DE UN ÈRBOL BINARIO !0./$/ ES UN DATO DE TIPO %.,!#% PUNTERO A UN NODO ] [).&/ ):1 Y $%2 SON CAMPOS DEL REGISTRO NODO ).&/ ES UNA VARIABLE DE TIPO CARÈCTER ):1 Y $%2 SON VARIABLES DE TIPO PUNTERO] 3I !0./$/ ≠ .), ENTONCES 6ISITAR EL !0./$/ [%SCRIBIR ./$/> ).&/] 2EGRESAR A 0REORDEN CON !0./$/> ):1 [,LAMADA RECURSIVA A 0REORDEN CON LA RAMA IZQUIERDA DEL NODO EN CUESTIØN] 2EGRESAR A 0REORDEN CON !0./$/> $%2 [,LAMADA RECURSIVA A 0REORDEN CON LA RAMA DERECHA DEL NODO EN CUESTIØN] [&IN DEL CONDICIONAL DEL PASO ]

.OTA #ABE DESTACAR QUE EL TÏRMINO VISITAR SE PUEDE REEMPLAZAR POR CUALQUIER OTRA INSTRUCCIØN VÈLIDA POR EJEMPLO ESCRIBIR SUMAR O COMPARAR LA INFORMACIØN DEL NODO .OTE QUE ESTA ACLARACIØN SE APLICA TAMBIÏN PARA LOS OTROS TIPOS DE RECORRIDOS

%JEMPLO

%N LA SIGUIENTE TABLA SE PRESENTAN LOS PASOS NECESARIOS PARA OBTENER EL RECORRIDO PREOR DEN DEL ÈRBOL BINARIO DE LA lGURA A UTILIZANDO EL ALGORITMO %N LA COLUMNA 0ILA RAMA PENDIENTE DE VISITAR LA LLAMADA . INDICA EL ORDEN EN EL CUAL LAS RAMAS PENDIENTES DE VISITAR SE INTRODUJERON EN LA PILA %N LA COLUMNA .ODO ACTUAL LA LLAMADA . SE×ALA LA RAMA QUE SE EXTRAJO DE LA PILA /BSERVE EL LECTOR QUE EL ORDEN EN QUE LOS NODOS SE VISITARON ES ! " $ % # % '


200 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 4!",! 2ECORRIDO PREORDEN

0ASO

.ODO ACTUAL

.ODO VISITADO

2AMA A VISITAR

0ILA RAMA PENDIENTE DE VISITAR

!

!

!> ):1 → "

!> $%2 → #

"

"

"> ):1 → $

"> $%2 → %

$

$

$> ):1 → .),

$> $%2 → .),

.),

.),

%

%

%> ):1 → .),

%> $%2 → .),

.),

.),

#

#

#> ):1 → &

#> $%2 → '

&

&

&> ):1 → .),

&> $%2 → .),

.),

.),

'

'

'> ):1 → .),

'> $%2 → .),

.),

.),

!LGORITMO )NORDEN

)NORDEN !0./$/ [%STE ALGORITMO REALIZA EL RECORRIDO INORDEN DE UN ÈRBOL BINARIO !0./$/ ES UN REGISTRO DE TIPO %.,!#% PUNTERO A UN NODO ] [).&/ ):1 Y $%2 SON CAMPOS DEL REGISTRO NODO ).&/ ES UNA VARIABLE DE TIPO CARÈCTER ):1 Y $%2 SON VARIABLES DE TIPO PUNTERO] 3I !0./$/ ≠ .), ENTONCES 2EGRESAR A )NORDEN CON !0./$/> ):1 [,LAMADA RECURSIVA A )NORDEN CON LA RAMA IZQUIERDA DEL NODO EN CUESTIØN] 6ISITAR EL !0./$/ [%SCRIBIR !0./$/> ).&/] 2EGRESAR A )NORDEN CON !0./$/> $%2 [,LAMADA RECURSIVA A )NORDEN CON LA RAMA DERECHA DEL NODO EN CUESTIØN] [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

%N LA TABLA SE MUESTRA LA GENERACIØN DEL RECORRIDO INORDEN DEL ÈRBOL DE LA lGURA A USANDO EL ALGORITMO


Ç3#0-&4 #*/"3*04 4!",! 2ECORRIDO INORDEN

0ASO

.ODO ACTUAL

2AMA A VISITAR

.ODO VISITADO

0ILA RAMA PENDIENTE DE VISITAR

!

!> ):1 → "

!> $%2 → # !

"

"> ):1 → $

"> $%2 → % "

$

$> ):1 → .),

$> $%2 → .), $

.),

$

.),

"

%

%> ):1 → .), %

.),

%

.),

!

#

#> ):1 → &

#> $%2 → ' #

&

&> ):1 → .),

&> $%2 → .), &

.),

&

.),

#

'

'> $%2 → .), '

.),

.),

%> ):1 → .),

'> ):1 → .),

201

'

%N LA COLUMNA 0ILA RAMA PENDIENTE DE VISITAR LA LLAMADA . INDICA EL ORDEN EN EL CUAL LAS RAMAS PENDIENTES DE VISITAR FUERON INTRODUCIDAS A LA PILA %N LAS COLUMNAS .ODO ACTUAL Y .ODO VISITADO LAS LLAMADAS . INDICAN LAS INSTRUCCIONES QUE SE EXTRAJERON DE LA PILA .OTE QUE ESTA OBSERVACIØN TAMBIÏN ES VÈLIDA PARA LA TABLA %L ORDEN EN QUE SE VISITARON LOS NODOS ES $ " % ! & # ' !LGORITMO 0OSORDEN 0OSORDEN !0./$/ [%STE ALGORITMO REALIZA EL RECORRIDO POSORDEN DE UN ÈRBOL BINARIO !0./$/ ES UN DATO DE TIPO %.,!#% PUNTERO A UN NODO ] [).&/ ):1 Y $%2 SON CAMPOS DEL REGISTRO NODO ).&/ ES UNA VARIABLE DE TIPO CARÈCTER ):1 Y $%2 SON VARIABLES DE TIPO PUNTERO]


202 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 3I !0./$/ ≠ .), ENTONCES 2EGRESAR A 0OSORDEN CON !0./$/> ):1 [,LAMADA RECURSIVA A 0OSORDEN CON LA RAMA IZQUIERDA DEL NODO EN CUESTIØN] 2EGRESAR A 0OSORDEN CON !0./$/> $%2 [,LAMADA RECURSIVA A 0OSORDEN CON LA RAMA DERECHA DEL NODO EN CUESTIØN] 6ISITAR EL !0./$/ [%SCRIBIR !0./$/> ).&/] [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

%N LA TABLA SE PRESENTAN LOS PASOS NECESARIOS QUE SE SIGUIERON PARA EFECTUAR EL RECO RRIDO POSORDEN DEL ÈRBOL DE LA lGURA A APLICANDO EL ALGORITMO ANTERIOR

.ODO ACTUAL

4!",! 2ECORRIDO POSORDEN

0ASO

!

2AMA A VISITAR !> ):1 → "

"

"> ):1 → $

$

$> ):1 → .),

.),

.),

%

.),

.),

0ILA RAMA PENDIENTE DE VISITAR

.ODO VISITADO

!

!> $%2 → #

"

"> $%2 → %

$

$> $%2 → .),

%

%> $%2 → .),

#

$ %> ):1 → .),

%

"

#

#> ):1 → &

&

&> ):1 → .),

.),

.),

'

.),

.),

#> $%2 → '

&

&> $%2 → .),

'

'> $%2 → .),

& '> ):1 → .),

'

#

!


Ç3#0-&4 #*/"3*04

203

­RBOLES BINARIOS DE BÞSQUEDA %N ESTA SECCIØN SE PRESENTA UN TIPO ESPECIAL DE ÈRBOLES BINARIOS 3U PRINCIPAL CARACTE RÓSTICA ES QUE LA INFORMACIØN SE ALMACENA EN LOS NODOS CUIDANDO DE MANTENER CIERTO ORDEN &ORMALMENTE SE DElNE UN ÈRBOL BINARIO DE BÞSQUEDA DE LA SIGUIENTE MANERA 0ARA TODO NODO 4 DEL ÈRBOL SE DEBE CUMPLIR QUE TODOS LOS VALORES ALMACENADOS EN EL SUBÈRBOL IZQUIERDO DE 4 SEAN MENORES O IGUALES A LA INFORMACIØN GUARDADA EN EL NODO 4 $E FORMA SIMILAR TODOS LOS VALORES ALMACENADOS EN EL SUBÈRBOL DERECHO DE 4 DEBEN SER MAYORES O IGUALES A LA INFORMACIØN GUARDADA EN EL NODO 4 ,OS VALORES A LOS QUE SE HACE REFERENCIA EN LA DElNICIØN RElEREN AL CONTENIDO DEL CAMPO DE INFORMA CIØN DEL NODO 0OR EJEMPLO SI EN EL ÈRBOL SE ALMACENA INFORMACIØN DE LOS EMPLEADOS DE UNA EMPRESA LOS VALORES UTILIZADOS PARA GENERAR EL ÈRBOL DE MANERA ORDENADA CORRESPON DERÈN AL NÞMERO DE CADA EMPLEADO CAMPO CLAVE %L ÈRBOL BINARIO DE BÞSQUEDA ES UNA ESTRUCTURA DE DATOS OBRE LA CUAL SE PUEDEN REA LIZAR ElCIENTEMENTE LAS OPERACIONES DE BÞSQUEDA INSERCIØN Y ELIMINACIØN #OMPARANDO ESTA ESTRUCTURA CON OTRAS SE PUEDEN OBSERVAR CIERTAS VENTAJAS 0OR EJEMPLO EN UN ARREGLO ES POSIBLE LOCALIZAR DATOS ElCIENTEMENTE SI ÏSTOS SE ENCUENTRAN ORDENADOS PERO LAS OPE RACIONES DE INSERCIØN Y ELIMINACIØN RESULTAN COSTOSAS PORQUE INVOLUCRAN MOVIMIENTO DE LOS ELEMENTOS DENTRO DEL ARREGLO %N LAS LISTAS POR OTRA PARTE DICHAS OPERACIONES SE PUEDEN LLEVAR A CABO CON FACILIDAD PERO LA OPERACIØN DE BÞSQUEDA EN ESTE CASO ES UNA OPERACIØN QUE DEMANDA RECURSOS PUDIENDO INCLUSO REQUERIR RECORRER TODOS LOS ELEMEN TOS DE ELLA PARA LLEGAR A UNO EN PARTICULAR

%JEMPLO

&)'52! ­RBOL BINARIO DE BÞSQUEDA

,A lGURA CONTIENE UN ÈRBOL BINARIO DE BÞSQUEDA /BSERVE EL LECTOR QUE SI EN DICHO ÈRBOL SE SUSTITUYEN LOS VALORES POR POR Y POR EL ÈRBOL CONTINÞA SIENDO UN ÈRBOL BINARIO DE BÞSQUEDA 0ERO POR OTRA PARTE SI EN DICHO ÈRBOL SE REEMPLAZA EL VALOR POR ENTONCES EL ÈRBOL DEJA DE SER UN ÈRBOL BINARIO DE BÞSQUEDA PUESTO QUE VIOLA EL PRINCIPIO QUE DICE h4ODOS LOS NODOS DEL SUBÈRBOL IZQUIERDO DEL NODO 4 DEBEN ALMACENAR VALORES MENORES O IGUALES AL NODO|| EN ESTE CASO NO ES MENOR A


204 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 4AMBIÏN ES POSIBLE OBSERVAR QUE SI SE EFECTÞA UN RECORRIDO INORDEN SOBRE UN ÈRBOL DE BÞSQUEDA SE OBTENDRÈ UNA CLASIlCACIØN DE LOS NODOS EN FORMA ASCENDENTE %L RECORRI DO INORDEN DEL ÈRBOL DE LA lGURA PRODUCE EL SIGUIENTE RESULTADO

"ÞSQUEDA ,A OPERACIØN DE BÞSQUEDA EN UN ÈRBOL BINARIO DE BÞSQUEDA ES MUCHO MÈS ElCIENTE QUE EN UN ÈRBOL BINARIO GENERAL YA QUE AL COMPARAR EL VALOR BUSCADO CON LA INFORMACIØN DEL NODO VISITADO SI NO ES IGUAL SE DEBERÈ CONTINUAR SØLO POR ALGUNO DE LOS DOS SUBÈRBO LES 0OR EJEMPLO SI SE COMPARA EL VALOR BUSCADO CON EL VALOR DEL NODO VISITADO LA BÞSQUEDA SØLO DEBE CONTINUAR POR EL CAMINO DE LA DERECHA %L CAMINO DE LA IZQUIERDA SE DESECHA PORQUE CONTIENE NODOS CUYOS VALORES SERÈN MENORES O IGUALES A !LGORITMO "ÞSQUEDA?!"" "ÞSQUEDA?!"" !0./$/ ).&/2 [%STE ALGORITMO LOCALIZA EL NODO DEL ÈRBOL BINARIO DE BÞSQUEDA QUE CONTIENE LA INFORMACIØN ).&/2 QUE ESTAMOS BUSCANDO !0./$/ ES UN PARÈMETRO DE TIPO %.,!#% LA PRIMERA VEZ APUNTA A LA RAÓZ DEL ÈRBOL 3E ASUME QUE EL ÈRBOL NO ES VACÓO] 3I ).&/2 !0./$/> ).&/ ENTONCES 3I !0./$/> ):1 .), ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ÈRBOLv SI NO 2EGRESAR A "ÞSQUEDA?!"" CON !0./$/> ):1 E ).&/2 [,LAMADA RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ] SI NO 3I ).&/2 !0./$/> ).&/ ENTONCES 3I !0./$/> $%2 .), ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ÈRBOLv SI NO 2EGRESAR A "ÞSQUEDA?!"" CON !0./$/> $%2 E ).&/2 [,LAMADA RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h,A INFORMACIØN ESTÈ EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]


Ç3#0-&4 #*/"3*04

205

!NALICE EL ALGORITMO DE BÞSQUEDA CON EL SIGUIENTE EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA LOCALIZAR LAS CLAVES Y EN EL ÈRBOL BINARIO DE BÞSQUEDA DE LA lGURA %N LAS TABLAS Y SE PRESENTAN LOS PASOS 0 NÞMERO DE COM PARACIONES # Y PREGUNTAS Y ACCIONES NECESARIAS PARA LOCALIZAR LAS CLAVES Y RESPECTIVAMENTE

4!",!

0

#

,OCALIZACIØN DE LA CLAVE ).&/2 ←

0REGUNTAS Y ACCIONES z%S 3Ó z%S EL SUBÈRBOL IZQUIERDO DE .),

.O %NTONCES SE REGRESA A "ÞSQUEDA CON EL SUBÈRBOL IZQUIERDO DE E ).&/2

z%S

.O z%S 3Ó z%S EL SUBÈRBOL DERECHO DE .),

z%S 3Ó z%S EL SUBÈRBOL IZQUIERDO DE .),

.O %NTONCES SE REGRESA A "ÞSQUEDA CON EL SUBÈRBOL DERECHO DE E ).&/2

.O %NTONCES SE REGRESA A "ÞSQUEDA CON EL SUBÈRBOL IZQUIERDO DE E ).&/2

z%S

.O z%S .O %NTONCES ²8)4/

4!",! ,OCALIZACIØN DE LA CLAVE ).&/2 ←

0

#

0REGUNTAS Y ACCIONES

z%S

.O z%S 3Ó z%S EL SUBÈRBOL DERECHO DE .),

z%S 3Ó z%S EL SUBÈRBOL IZQUIERDO DE .),

.O %NTONCES SE REGRESA A "ÞSQUEDA CON EL SUBÈRBOL DERECHO DE E ).&/2

.O %NTONCES SE REGRESA A "ÞSQUEDA CON EL SUBÈRBOL IZQUIERDO DE E ).&/2

z%S

3Ó z%S EL SUBÈRBOL IZQUIERDO DE .), .), 3Ó %NTONCES &2!#!3/


206 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 /TRA FORMA DE ESCRIBIR EL ALGORITMO DE BÞSQUEDA PRESENTADO ANTERIORMENTE ES LA QUE SE MUESTRA A CONTINUACIØN %N ESTA VARIANTE SE CONTEMPLA EL CASO DE QUE EL ÈRBOL ESTÏ VACÓO !LGORITMO "ÞSQUEDA?V ?!"" "ÞSQUEDA?V ?!"" !0./$/ ).&/2 [%L ALGORITMO LOCALIZA EL NODO DEL ÈRBOL BINARIO DE BÞSQUEDA QUE CONTIENE CIERTA INFORMACIØN ).&/2 0ARÈMETRO DE TIPO ENTERO !0./$/ ES UNA VARIABLE DE TIPO %.,!#% ,A PRIMERA VEZ APUNTA A LA RAÓZ DEL ÈRBOL] 3I !0./$/ ≠ .), ENTONCES 3I ).&/2 !0./$/> ).&/ ENTONCES 2EGRESAR A "ÞSQUEDA?V ?!"" CON !0./$/> ):1 E ).&/2 [,LAMADA RECURSIVA] SI NO 3I ).&/2 ./$/> ).&/ ENTONCES 2EGRESAR A "ÞSQUEDA?V ?!"" CON !0./$/> $%2 E ).&/2 [,LAMADA RECURSIVA] SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ]

)NSERCIØN EN UN ÉRBOL BINARIO DE BÞSQUEDA ,A INSERCIØN EN UN ÈRBOL BINARIO DE BÞSQUEDA ES UNA OPERACIØN QUE SE PUEDE REALIZAR ElCIENTEMENTE EN ESTE TIPO DE ESTRUCTURA DE DATOS ,A ESTRUCTURA CRECE CONFORME SE IN SERTAN ELEMENTOS AL ÈRBOL ,OS PASOS QUE SE DEBEN REALIZAR PARA AGREGAR UN NUEVO NODO A UN ÈRBOL BINARIO DE BÞSQUEDA SON LOS SIGUIENTES #OMPARAR LA CLAVE A INSERTAR CON LA RAÓZ DEL ÈRBOL 3I ES MAYOR SE SIGUE CON EL SUB ÈRBOL DERECHO 3I ES MENOR SE CONTINÞA CON EL SUBÈRBOL IZQUIERDO 2EPETIR SUCESIVAMENTE EL PASO HASTA QUE SE CUMPLA ALGUNA DE LAS SIGUIENTES CON DICIONES %L SUBÈRBOL DERECHO O EL SUBÈRBOL IZQUIERDO ES IGUAL A VACÓO EN CUYO CASO SE PROCEDERÈ A INSERTAR EL ELEMENTO EN EL LUGAR QUE LE CORRESPONDE


Ç3#0-&4 #*/"3*04

207

,A CLAVE QUE SE QUIERE INSERTAR ESTÈ EN EL NODO ANALIZADO POR LO TANTO NO SE LLEVA A CABO LA INSERCIØN %STE CASO ES VÈLIDO SØLO CUANDO LA APLICACIØN EXIGE QUE NO SE REPITAN ELEMENTOS

%JEMPLO

3UPONGAMOS QUE SE QUIERE INSERTAR LAS SIGUIENTES CLAVES EN UN ÈRBOL BINARIO DE BÞSQUEDA QUE SE ENCUENTRE VACÓO ,OS RESULTADOS PARCIALES QUE ILUSTRAN CØMO FUNCIONA EL PROCEDIMIENTO SE PRESENTAN EN LA lGURA

&)'52! )NSERCIØN EN UN ÉRBOL BINARIO DE BÞSQUEDA .OTA ,AS LÓNEAS EN COLOR INDICAN EL ELEMENTO QUE ACABA DE INSERTARSE


208 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! CONTINUACIØN

%L ALGORITMO DE INSERCIØN ES EL SIGUIENTE !LGORITMO )NSERCIØN?!"" )NSERCIØN?!"" !0./$/ ).&/2 [%L ALGORITMO REALIZA LA INSERCIØN DE UN NODO EN UN ÈRBOL BINARIO DE BÞSQUEDA !0./$/ ES UNA VARIABLE DE TIPO PUNTERO Y LA PRIMERA VEZ DEBE SER DISTINTA DE VACÓO ).&/2 ES UN PARÈMETRO DE TIPO ENTERO QUE CONTIENE LA INFORMACIØN QUE SE QUIERE INSERTAR EN UN NUEVO NODO] [3E UTILIZA ADEMÈS COMO AUXILIAR LA VARIABLE /42/ DE TIPO PUNTERO] 3I ).&/2 !0./$/> ).&/ ENTONCES 3I !0./$/> ):1 .), ENTONCES #REAR /42/ [3E CREA UN NUEVO NODO] (ACER /42/> ):1 ← .), /42/> $%2 ← .), /42/> ).&/ ← ).&/2 Y !0./$/> ):1 ← /42/ SI NO 2EGRESAR A )NSERCIØN?!"" CON !0./$/> ):1 E ).&/2 [,LAMADA RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ] SI NO 3I ).&/2 !0./$/> ).&/ ENTONCES 3I !0./$/> $%2 .), ENTONCES #REAR /42/ [3E CREA UN NUEVO NODO] (ACER /42/> ):1 ← .), /42/> $%2 ← .), /42/> ).&/ ← ).&/2 Y ./$/> $%2 ← /42/


Ç3#0-&4 #*/"3*04

209

SI NO 2EGRESAR A )NSERCIØN?!"" CON ./$/> $%2 E ).&/2 [,LAMADA RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h%L NODO YA SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

4!",!

3UPONGAMOS QUE SE DESEA INSERTAR LAS CLAVES Y EN EL ÈRBOL BINARIO DE BÞSQUEDA DE LA lGURA %N LAS TABLAS Y SE PRESENTAN LOS PASOS 0 NÞMERO DE COMPARA CIONES # Y PREGUNTAS Y ACCIONES NECESARIAS PARA INSERTAR ESTAS CLAVES 0

)NSERCIØN DE LA CLAVE ).&/2 ←

#

z%S 3Ó z%S EL SUBÈRBOL IZQUIERDO DE .),

0REGUNTAS Y ACCIONES

.O %NTONCES REGRESAR A )NSERCIØN CON EL SUBÈRBOL IZQUIERDO DE E )NFOR

z%S

.O z%S 3Ó z%S EL SUBÈRBOL DERECHO DE .),

0

)NSERCIØN DE LA CLAVE ).&/2 ←

z%S 3Ó z%S EL SUBÈRBOL IZQUIERDO DE .), .),

4!",!

.O %NTONCES REGRESAR A )NSERCIØN CON EL SUBÈRBOL DERECHO DE E )NFOR

3Ó %NTONCES CREAR OTRO NODO REALIZAR LOS ENLACES Y CARGAR LA INFORMACIØN

#

0REGUNTAS Y ACCIONES

z%S

.O z%S 3Ó z%S EL SUBÈRBOL DERECHO DE .),

.O z%S 3Ó z%S EL SUBÈRBOL IZQUIERDO DE .),

3Ó %NTONCES REGRESAR A )NSERCIØN CON EL SUBÈRBOL DERECHO DE E )NFOR

.O %NTONCES REGRESAR A )NSERCIØN CON EL SUBÈRBOL IZQUIERDO DE E )NFOR

z%S

.O z%S 3Ó z%S EL SUBÈRBOL DERECHO DE .), .),

.O %NTONCES CREAR OTRO NODO REALIZAR LOS ENLACES Y CARGAR LA INFORMACIØN


210 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %N LA lGURA SE PRESENTA EL ÈRBOL BINARIO DE BÞSQUEDA LUEGO DE REALIZADA ESTA OPERACIØN &)'52! ­RBOL BINARIO DE BÞSQUEDA )NSERCIØN DE LAS CLAVES Y

/TRA FORMA DE EXPRESAR EL ALGORITMO DE INSERCIØN ES LA SIGUIENTE !LGORITMO )NSERCIØN?V ?!"" )NSERCIØN?V ?!"" !0./$/ ).&/2 [%L ALGORITMO REALIZA LA INSERCIØN DE UN ELEMENTO EN UN ÈRBOL BINARIO DE BÞSQUEDA !0./$/ ES UNA VARIABLE DE TIPO %.,!#% LA PRIMERA VEZ APUNTA A LA RAÓZ DEL ÈRBOL ).&/2 ES UN PARÈMETRO DE TIPO ENTERO QUE CONTIENE LA INFORMACIØN DEL ELEMENTO QUE SE QUIERE INSERTAR %L ALGORITMO CONSIDERA EL CASO DE UN ÈRBOL VACÓO] 3I !0./$/ ≠ .), ENTONCES 3I ).&/2 !0./$/> ).&/ ENTONCES 2EGRESAR A )NSERCIØN?V ?!"" CON !0./$/> ):1 E ).&/2 [,LAMADA RECURSIVA] SI NO 3I ).&/2 !0./$/> ).&/ ENTONCES 2EGRESAR A )NSERCIØN?V ?!"" CON !0./$/> $%2 E ).&/2 [,LAMADA RECURSIVA] SI NO %SCRIBIR h,A INFORMACIØN YA SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SI NO #REAR /42/ [3E CREA UN NUEVO NODO] (ACER /42/> ):1 ← .), /42/> $%2 ← .), /42/> ).&/ ← ).&/2 Y !0./$/ ← /42/ [&IN DEL CONDICIONAL DEL PASO ]


Ç3#0-&4 #*/"3*04

211

%LIMINACIØN EN UN ÉRBOL BINARIO DE BÞSQUEDA ,A OPERACIØN DE ELIMINACIØN EN UN ÈRBOL BINARIO DE BÞSQUEDA ES UN POCO MÈS COM PLICADA QUE LA DE INSERCIØN ²STA CONSISTE EN ELIMINAR UN NODO SIN VIOLAR LOS PRINCIPIOS QUE DElNEN UN ÈRBOL BINARIO DE BÞSQUEDA 3E DEBEN DISTINGUIR LOS SIGUIENTES CASOS 3I EL ELEMENTO A ELIMINAR ES TERMINAL U HOJA SIMPLEMENTE SE SUPRIME REDElNIENDO EL PUNTERO DE SU PREDECESOR 3I EL ELEMENTO A ELIMINAR TIENE UN SOLO DESCENDIENTE ENTONCES TIENE QUE SUSTITUIRSE POR ESE DESCENDIENTE 3I EL ELEMENTO A ELIMINAR TIENE LOS DOS DESCENDIENTES ENTONCES SE TIENE QUE SUSTITUIR POR EL NODO QUE SE ENCUENTRA MÈS A LA IZQUIERDA EN EL SUBÈRBOL DERECHO O POR EL NODO QUE SE ENCUENTRA MÈS A LA DERECHA EN EL SUBÈRBOL IZQUIERDO #ABE DESTACAR QUE ANTES DE ELIMINAR UN NODO SE DEBE LOCALIZAR ÏSTE EN EL ÈRBOL 0ARA ESTO SE UTILIZA EL ALGORITMO DE BÞSQUEDA PRESENTADO ANTERIORMENTE

%JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LAS SIGUIENTES CLAVES DEL ÈRBOL BINARIO DE BÞSQUEDA DE LA lGURA ,OS RESULTADOS PARCIALES QUE ILUSTRAN CØMO FUNCIONA EL PROCEDIMIENTO SE PRESENTAN EN LA lGURA

&)'52! %LIMINACIØN EN UN ÉRBOL BINARIO DE BÞSQUEDA A Y F CORRESPONDEN AL PRIMER CASO B Y E CORRESPONDEN AL SEGUNDO CASO C Y D CO RRESPONDEN AL TERCER CASO G %STADO lNAL DEL ÉRBOL .OTA ,AS mECHAS EN COLOR INDICAN EL ELEMENTO QUE QUIERE ELIMINARSE


212 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! CONTINUACIØN

! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE


Ç3#0-&4 #*/"3*04

213

!LGORITMO %LIMINACIØN?!"" %LIMINACIØN?!"" !0./$/ ).&/2 [%L ALGORITMO REALIZA LA ELIMINACIØN DE UN ELEMENTO EN UN ÈRBOL BINARIO DE BÞSQUEDA !0./$/ ES UNA VARIABLE POR REFERENCIA DE TIPO %.,!#% ).&/2 ES UN PARÈMETRO DE TIPO ENTERO QUE CONTIENE LA INFORMACIØN DEL NODO QUE SE DESEA ELIMINAR] [!58 !58) Y /42/ SON VARIABLES AUXILIARES DE TIPO PUNTERO "/ ES UNA VARIABLE DE TIPO BOOLEANO] 3I !0./$/ ≠ .), ENTONCES 3I ).&/2 !0./$/> ).&/ ENTONCES 2EGRESAR A %LIMINACIØN?!"" CON !0./$/> ):1 E ).&/2 SI NO 3I ).&/2 !0./$/> ).&/ ENTONCES 2EGRESAR A %LIMINACIØN?!"" CON !0./$/> $%2 E ).&/2 SI NO (ACER /42/ ← ./$/ 3I /42/> $%2 .), ENTONCES (ACER !0./$/ ← /42/> ):1 SINO 3I /42/> ):1 .), ENTONCES (ACER !0./$/ ← /42/> $%2 SINO (ACER !58 ← !0./$/> ):1 Y "/ ← &!,3/ ! -IENTRAS !58> $%2 ≠ .), 2EPETIR (ACER !58 ← !58 !58 ← !58> $%2 Y "/ ← 6%2$!$%2/ " [&IN DEL CICLO DEL PASO !] (ACER !0./$/> ).&/ ← !58> ).&/ Y /42/ ← !58 # 3I "/ 6%2$!$%2/ ENTONCES (ACER !58 > $%2 ← !58> ):1 SINO (ACER !0./$/> ):1 ← !58> ):1 $ [&IN DEL CONDICIONAL DEL PASO #] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] 1UITAR /42/ [3E LIBERA EL ESPACIO DE MEMORIA] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SINO %SCRIBIR h,A INFORMACIØN A ELIMINAR NO SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ]


214 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %JEMPLO

$ADO EL ÈRBOL DE LA lGURA A VERIlQUE SI QUEDA IGUAL AL ÈRBOL DE LA lGURA B LUEGO DE ELIMINAR APLICANDO EL ALGORITMO LAS CLAVES QUE SE MUESTRAN A CONTINUACIØN

&)'52! %LIMINACIØN EN UN ÉRBOL BINARIO DE BÞSQUEDA A !NTES DE ELIMINAR LAS CLAVES B $ESPUÏS DE ELIMINAR LAS CLAVES .OTA %N EL EJEMPLO COMO EL NODO A ELIMINAR TIENE DOS DESCENDIENTES SE SUSTITUYE POR EL NODO QUE SE ENCUENTRA MÉS A LA DERECHA EN EL SUBÉRBOL IZQUIERDO

­2"/,%3 "!,!.#%!$/3 #UANDO SE ESTUDIARON LOS ÈRBOLES BINARIOS DE BÞSQUEDA SE MENCIONØ QUE ES UNA ES TRUCTURA SOBRE LA CUAL SE PUEDEN REALIZAR ElCIENTEMENTE LAS OPERACIONES DE BÞSQUEDA INSERCIØN Y ELIMINACIØN 3IN EMBARGO SI EL ÈRBOL CRECE O DECRECE DESCONTROLADAMENTE EL RENDIMIENTO PUEDE DISMINUIR CONSIDERABLEMENTE %L CASO MÈS DESFAVORABLE SE PRODUCE CUANDO SE INSERTA UN CONJUNTO DE CLAVES ORDENADAS EN FORMA ASCENDENTE O DESCENDENTE COMO SE MUESTRA EN LA lGURA &)'52! ­RBOLES BINARIOS DE BÞS QUEDA CON CRECIMIENTO DESCONTROLADO


Ç3#0-&4 #"-"/$&"%04

215

%S DE NOTAR QUE EL NÞMERO PROMEDIO DE COMPARACIONES QUE SE DEBEN REALIZAR PARA LOCALIZAR UNA DETERMINADA CLAVE EN UN ÈRBOL BINARIO DE BÞSQUEDA CON CRECIMIENTO DES CONTROLADO ES . CIFRA QUE MUESTRA UN RENDIMIENTO MUY POBRE EN LA ESTRUCTURA #ON EL OBJETO DE MANTENER LA ElCIENCIA EN LA OPERACIØN DE BÞSQUEDA SURGEN LOS ÈRBOLES BALANCEADOS ,A PRINCIPAL CARACTERÓSTICA DE ÏSTOS ES LA DE REALIZAR REACOMODOS O BALANCEOS DESPUÏS DE INSERCIONES O ELIMINACIONES DE ELEMENTOS %STOS ÈRBOLES TAMBIÏN RECIBEN EL NOMBRE DE !6, EN HONOR A SUS INVENTORES DOS MATEMÈTICOS RUSOS ' - !DELSON 6ELSKII Y % - ,ANDIS &ORMALMENTE SE DElNE UN ÈRBOL BALANCEADO COMO UN ÈRBOL BINARIO DE BÞSQUE DA EN EL CUAL SE DEBE CUMPLIR LA SIGUIENTE CONDICIØN 0ARA TODO NODO 4 DEL ÈRBOL LA ALTURA DE LOS SUBÈRBOLES IZQUIERDO Y DERECHO NO DEBEN DIFERIR EN MÈS DE UNA UNIDAD \(2) n (2$\ ≤ DONDE (2) ES LA ALTURA DE LA RAMA O SUBÈRBOL IZQUIERDO Y (2$ ES LA ALTURA DE LA RAMA O SUBÈRBOL DERECHO %N LA lGURA SE MUESTRAN DOS EJEMPLOS DE ÈRBOLES BALANCEADOS

&)'52! $OS ÉRBOLES BALANCEADOS A #ON ALTURA B #ON ALTURA

/BSERVE EL LECTOR QUE SI SE INSERTAN LAS CLAVES O EN EL ÈRBOL BALANCEADO DE LA lGURA A ÏSTE PIERDE EL EQUILIBRIO 3IN EMBARGO SI SE INSERTAN LAS CLAVES O EN EL MISMO ÈRBOL ÏSTE MANTIENE EL EQUILIBRIO MÈS AÞN LO MEJORA !HORA BIEN CON RESPECTO A LA ELIMINACIØN SI A DICHO ÈRBOL SE LE QUITAN LAS CLAVES O EL ÈRBOL CONTINÞA SIENDO BALANCEADO INCLUSO PODRÓAN QUITÈRSELE LAS TRES CLAVES Y EL ÈRBOL NO PERDERÓA EL EQUILIBRIO 3IN EMBARGO SI SE ELIMINA LA CLAVE EL ÈRBOL PIERDE EL EQUILIBRIO Y ES NECESARIO REESTRUCTURARLO ,OS ÈRBOLES BALANCEADOS SE PARECEN MUCHO EN SU MECANISMO DE FORMACIØN A LOS NÞMEROS &IBONACCI %L ÈRBOL DE ALTURA ES VACÓO EL ÈRBOL DE ALTURA TIENE UN ÞNICO NODO Y EN GENERAL EL NÞMERO DE NODOS DEL ÈRBOL CON ALTURA H SE CALCULA APLICANDO LA SIGUIENTE FØRMULA RECURSIVA


216 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

▼ &ØRMULA

+H +H n +H n

DONDE + INDICA EL NÞMERO DE NODOS DEL ÈRBOL Y H LA ALTURA 0OR OTRA PARTE ALGUNOS ESTUDIOS DEMUESTRAN QUE LA ALTURA DE UN ÈRBOL BALANCEADO DE N NODOS NUNCA EXCEDERÈ DE LOG N

%JEMPLO

3UPONGAMOS QUE SE DESEA CALCULAR EL NÞMERO DE NODOS DE UN ÈRBOL BALANCEADO CON ALTURA ,A FORMA EN QUE SE EFECTÞA EL CÈLCULO ES LA SIGUIENTE

+ +

+ + +

+ + +

+ + + +

+ + + +

+

+

)NSERCIØN EN ÉRBOLES BALANCEADOS !L INSERTAR UN ELEMENTO EN UN ÈRBOL BALANCEADO SE DEBEN DISTINGUIR LOS SIGUIENTES CA SOS ,AS RAMAS IZQUIERDA 2) Y DERECHA 2$ DEL ÈRBOL TIENEN LA MISMA ALTURA (2) (2$ POR LO TANTO 3I SE INSERTA UN ELEMENTO EN 2) ENTONCES (2) SERÈ MAYOR EN UNA UNIDAD A (2$ 3I SE INSERTA UN ELEMENTO EN 2$ ENTONCES (2$ SERÈ MAYOR EN UNA UNIDAD A (2) /BSERVE QUE EN CUALQUIERA DE LOS DOS CASOS MENCIONADOS Y NO SE VIOLA EL CRITERIO DE EQUILIBRIO DEL ÈRBOL ,AS RAMAS IZQUIERDA 2) Y DERECHA 2$ DEL ÈRBOL TIENEN ALTURA DIFERENTE (2) ≠ (2$ 3UPONGAMOS QUE (2) (2$ 3I SE INSERTA UN ELEMENTO EN 2) ENTONCES (2) SERÈ IGUAL A (2$ [,AS RA MAS TIENEN LA MISMA ALTURA POR LO QUE SE MEJORA EL EQUILIBRIO DEL ÈRBOL] 3I SE INSERTA UN ELEMENTO EN 2$ ENTONCES SE ROMPE EL CRITERIO DE EQUILI BRIO DEL ÈRBOL Y ES NECESARIO REESTRUCTURARLO 3UPONGAMOS QUE (2) (2$ 3I SE INSERTA UN ELEMENTO EN 2) ENTONCES SE ROMPE EL CRITERIO DE EQUILI BRIO DEL ÈRBOL Y ES NECESARIO REESTRUCTURARLO 3I SE INSERTA UN ELEMENTO EN 2$ ENTONCES (2$ SERÈ IGUAL A (2) [,AS RA MAS TIENEN LA MISMA ALTURA POR LO QUE SE MEJORA EL EQUILIBRIO DEL ÈRBOL]


Ç3#0-&4 #"-"/$&"%04

217

%N LA lGURA SE MUESTRAN DIAGRAMAS DE LOS DISTINTOS CASOS QUE SE PRESENTAN EN LA OPERACIØN DE INSERCIØN EN ÈRBOLES BALANCEADOS

&)'52! $IFERENTES CASOS DE INSER CIØN EN ÉRBOLES BALANCEA DOS A #ASO B #ASO C #ASO D #ASO E #ASO F #ASO G #ASO H #ASO I #ASO .OTA ,A LÓNEA DISCONTINUA MARCA EL EQUILIBRIO PERFECTO DEL ÉRBOL

!HORA BIEN PARA PODER DETERMINAR SI UN ÈRBOL ESTÈ BALANCEADO O NO SE DEBE MANE JAR INFORMACIØN RELATIVA AL EQUILIBRIO DE CADA NODO DEL ÈRBOL 3URGE ASÓ EL CONCEPTO DE FACTOR DE EQUILIBRIO DE UN NODO &% QUE SE DElNE COMO LA ALTURA DEL SUBÈRBOL DERECHO MENOS LA ALTURA DEL SUBÈRBOL IZQUIERDO

&% (2$ n (2)

▼ &ØRMULA


218 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ,OS VALORES QUE PUEDE TOMAR &% SON n 3I &% LLEGARA A TOMAR LOS VALORES DE n O ENTONCES DEBERÓA REESTRUCTURARSE EL ÈRBOL %N LA lGURA SE PRESENTA UN ÈRBOL BALANCEADO CON EL CORRESPONDIENTE &% PARA CADA NODO DEL ÈRBOL

&)'52! ­RBOL BALANCEADO CON EL CORRESPONDIENTE &%

/BSERVE EL LECTOR QUE EN LA lGURA EL &% DEL NODO QUE ALMACENA EL ES n PUESTO QUE LA ALTURA DEL SUBÈRBOL DERECHO ES IGUAL A Y LA ALTURA DEL SUBÈRBOL IZQUIERDO IGUAL A &% n n %L &% DE SE CALCULA COMO &% n ! CONTINUACIØN SE PRESENTA LA DElNICIØN DE UN ÈRBOL BALANCEADO EN LENGUAJE ALGO RÓTMICO %.,!#% >./$/ ./$/ 2%')342/ ):1 $%2 TIPO %.,!#% ).&/ TIPO DE DATO &% n [&IN DE LA DElNICIØN]

2EESTRUCTURACIØN DEL ÉRBOL BALANCEADO %L PROCESO DE INSERCIØN EN UN ÈRBOL BALANCEADO ES SENCILLO SIN EMBARGO REQUIERE DE OPERACIONES AUXILIARES QUE COMPLICAN PARCIALMENTE EL PROCESO 0RIMERO SE DEBE SEGUIR EL CAMINO DE BÞSQUEDA DEL ÈRBOL HASTA LOCALIZAR EL LUGAR DONDE HAY QUE INSERTAR EL ELE MENTO ,UEGO SE CALCULA SU &% QUE OBVIAMENTE SERÈ Y REGRESAMOS POR EL CAMINO DE BÞSQUEDA CALCULANDO EL &% DE LOS DISTINTOS NODOS VISITADOS 3I EN ALGUNO DE LOS NODOS SE VIOLA EL CRITERIO DE EQUILIBRIO ENTONCES SE DEBE REESTRUCTURAR EL ÈRBOL %L PROCESO TERMINA


Ç3#0-&4 #"-"/$&"%04

219

AL LLEGAR A LA RAÓZ DEL ÈRBOL O CUANDO SE REALIZA LA REESTRUCTURACIØN DEL MISMO EN CUYO CASO NO ES NECESARIO DETERMINAR EL &% DE LOS NODOS RESTANTES 2EESTRUCTURAR EL ÈRBOL SIGNIlCA ROTAR LOS NODOS DEL MISMO PARA LLEVARLO A UN ESTADO DE EQUILIBRIO ,A ROTACIØN PUEDE SER SIMPLE O COMPUESTA %L PRIMER CASO INVOLUCRA DOS NODOS Y EL SEGUNDO CASO AFECTA A TRES 3I LA ROTACIØN ES SIMPLE SE PUEDE REALIZAR POR LAS RAMAS DERECHAS $$ O POR LAS RAMAS IZQUIERDAS )) 3I POR OTRA PARTE LA ROTACIØN ES COMPUESTA SE PUEDE REALIZAR POR LAS RAMAS DERECHA E IZQUIERDA $) O POR LAS RAMAS IZQUIERDA Y DERECHA )$

%JEMPLO

&)'52! 2OTACIONES EN ÉRBOLES BALANCEADOS A 2OTACIØN )) B 2OTACIØN $$ C 2OTACIØN $) D 2OTACIØN )$

%N LA lGURA SE PUEDEN OBSERVAR GRÈlCAMENTE LOS DIFERENTES TIPOS DE ROTACIONES %N LA lGURA A SE PRESENTA LA ROTACIØN )) EN LA lGURA B LA ROTACIØN $$ EN LA lGURA C LA ROTACIØN $) Y EN LA lGURA D LA ROTACIØN )$ ,A LÓNEA CONTINUA ?????? MARCA EL ESTADO DE LOS NODOS DEL ÈRBOL ANTES DE REALIZAR LA INSERCIØN ,A LÓNEA DISCONTINUA ? ? ? ? INDICA EL NUEVO ELEMENTO INSERTADO ,A LÓNEA CON PUNTOS MARCA EL CAMINO DE REGRESO HASTA QUE SE DETECTA EL DESEQUILIBRIO DEL ÈRBOL ,A LÓNEA GRUESA ?????? INDICA EL MOVIMIENTO DE LOS NODOS EN LA ROTACIØN


220 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! CONTINUACIØN

%JEMPLO

3UPONGAMOS QUE SE DESEA INSERTAR LAS SIGUIENTES CLAVES EN UN ÈRBOL BALANCEADO QUE SE ENCUENTRA VACÓO


Ç3#0-&4 #"-"/$&"%04

221

,AS OPERACIONES NECESARIAS SON LAS SIGUIENTES

!L REGRESAR LUEGO DE INSERTAR UN NODO CON EL VALOR SIGUIENDO EL CAMINO DE BÞSQUEDA SE DETECTA QUE EN LA CLAVE SE VIOLA EL CRITERIO DE EQUILIBRIO DEL ÈRBOL Y SE DEBE REESTRUCTURAR 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ LA RAMA IZQUIERDA DE DICHA CLAVE ,UEGO SE VERIlCA EL &% DE ./$/ COMO EN ESTE CASO ES IGUAL A n SE PUEDE REALIZAR LA ROTACIØN )) %L MOVIMIENTO DE APUNTADORES PARA REALIZAR LA ROTACIØN )) ES EL SIGUIENTE ./$/> ):1 ← ./$/ > $%2 ./$/ > $%2 ← ./$/ ./$/ ← ./$/ 2ESPECTO AL &% DE LOS NODOS AFECTADOS ÏSTE SERÈ SIEMPRE EN EL CASO DE ROTACIONES SIMPLES ./$/> &% ./$/ > &%

,UEGO DE EFECTUAR EL REACOMODO EL ÈRBOL QUEDA ASÓ

!L REGRESAR SIGUIENDO EL CAMINO DE BÞSQUEDA SE MODIlCA EL &% DE LOS NODOS Y PERO EL EQUILIBRIO DEL ÈRBOL SE MANTIENE


222 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

!L REGRESAR LUEGO DE INSERTAR EL VALOR SIGUIENDO EL CAMINO DE BÞSQUEDA SE OB SERVA UNA VIOLACIØN AL CRITERIO DE EQUILIBRIO DEL ÈRBOL Y SE DEBE REESTRUCTURAR 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ LA RAMA DERECHA DE DICHA CLAVE 3E VERIlCA EL &% DE ./$/ Y COMO EN ESTE CASO ES IGUAL A SE PUEDE REALIZAR LA ROTACIØN $$ %L MOVI MIENTO DE APUNTADORES PARA REALIZAR LA ROTACIØN $$ ES ./$/> $%2 ← ./$/ > ):1 ./$/ > ):1 ← ./$/ ./$/ ← ./$/ 2ESPECTO AL &% DE LOS NODOS AFECTADOS LAS ASIGNACIONES SON LAS SIGUIENTES ./$/> &% ./$/ > &%

← ←

,UEGO DE VOLVER A EQUILIBRARLO EL ÈRBOL QUEDA DE ESTA FORMA


Ç3#0-&4 #"-"/$&"%04

223

,UEGO DE INSERTAR LA CLAVE Y AL REGRESAR SIGUIENDO EL CAMINO DE BÞSQUEDA SE AD VIERTE QUE EN LA CLAVE SE ROMPE EL EQUILIBRIO DEL ÈRBOL 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ SU RAMA DERECHA 3E CALCULA EL &% DE ./$/ Y COMO EN ESTE CASO ES IGUAL A n SE REALIZA LA ROTACIØN $) 3E APUNTA ENTONCES CON ./$/ LA RAMA IZQUIERDA DE ./$/ %L MOVIMIENTO DE APUNTADORES PARA REALIZAR LA ROTACIØN $) ES ./$/ > ):1 ← ./$/ > $%2 ./$/ > $%2 ← ./$/ ./$/> $%2 ← ./$/ > ):1 ./$/ > ):1 ← ./$/ ./$/ ← ./$/ %L &% DE LOS NODOS INVOLUCRADOS SE ASIGNA DE ACUERDO CON LOS VALORES ESTABLECIDOS EN LA TABLA

4!",! &ACTORES DE EQUILIBRIO EN LA ROTACIØN $)

./$/∧.&% ./$/ ∧.&% n

./$/ ∧.&% ./$/ ∧.&% ./$/∧.&%

./$/ ∧.&%

./$/ ∧.&% ./$/ ∧.&% ./$/∧.&% n

./$/ ∧.&%

./$/ ∧.&% ./$/ ∧.&%

#OMO EN EL EJEMPLO PRESENTADO EL &% DE ./$/ ES IGUAL A SE REALIZAN LAS SI GUIENTES ASIGNACIONES ./$/> &% ./$/ > &% ./$/ > &%

← n ← ←

,UEGO DE REALIZAR EL REACOMODO EL ÈRBOL QUEDA DE LA SIGUIENTE MANERA


224 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

2EGRESANDO POR EL CAMINO DE BÞSQUEDA LUEGO DE INSERTAR LA CLAVE ES EVIDENTE QUE EN LA CLAVE SE ROMPE EL EQUILIBRIO DEL ÈRBOL 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ SU RAMA IZQUIERDA 3E VERIlCA EL &% DE ./$/ Y COMO EN ESTE CASO ES IGUAL A SE REALIZA LA ROTACIØN )$ 3E APUNTA CON ./$/ LA RAMA DERECHA DE ./$/ %L MOVIMIENTO DE APUNTADORES PARA REALIZAR LA ROTACIØN )$ ES ./$/ > $%2 ← ./$/ > ):1 ./$/ > ):1 ← ./$/ ./$/> ):1 ← ./$/ > $%2 ./$/ > $%2 ← ./$/ ./$/ ← ./$/ %L &% DE LOS NODOS INVOLUCRADOS SE ASIGNA DE ACUERDO CON LOS VALORES ESTABLECIDOS EN LA TABLA

4!",! &ACTORES DE EQUILIBRIO EN LA ROTACIØN )$

./$/∧ &% ./$/ ∧ &% n

./$/ ∧ &% ./$/ ∧ &% ./$/∧ &%

./$/ ∧ &%

./$/ ∧ &% ./$/ ∧ &% ./$/∧ &%

./$/ ∧ &%

./$/ ∧ &% n ./$/ ∧ &%


Ç3#0-&4 #"-"/$&"%04

225

#OMO EN EL EJEMPLO PRESENTADO EL &% DE ./$/ ES IGUAL A SE REALIZAN LAS SI GUIENTES ASIGNACIONES ./$/> &% ./$/ > &% ./$/ > &%

← ← ←

,UEGO DE VOLVER A EQUILIBRARLO EL ÈRBOL QUEDA DE LA SIGUIENTE FORMA

.OTA /BSERVE QUE LUEGO DE REALIZAR LA INSERCIØN DE UN ELEMENTO Y CUANDO SE RE GRESA POR EL CAMINO DE BÞSQUEDA EL &% DEL NODO VISITADO SE INCREMENTA EN SI LA INSER CIØN SE HIZO POR SU RAMA DERECHA Y DISMINUYE EN SI LA INSERCIØN SE HIZO POR SU RAMA IZQUIERDA

%JEMPLO

$ADO COMO DATO EL ÈRBOL BALANCEADO DE LA lGURA A VERIlQUE SI EL MISMO QUEDA IGUAL AL DE LA lGURA B LUEGO DE INSERTAR LAS SIGUIENTES CLAVES n

&)'52! )NSERCIØN EN ÉRBOLES BALAN CEADOS A !NTES DE INSERTAR LAS CLAVES B $ESPUÏS DE INSERTAR LAS CLAVES


226 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE INSERCIØN EN ÈRBOLES BALANCEADOS !LGORITMO )NSERTA?BALANCEADO )NSERTA?BALANCEADO ./$/ "/ ).&/2 [%L ALGORITMO INSERTA UN ELEMENTO EN UN ÈRBOL BALANCEADO ./$/ ES UN PARÈMETRO DE TIPO PUNTERO POR REFERENCIA "/ ES UN PARÈMETRO DE TIPO BOOLEANO POR REFERENCIA "/ SE UTILIZA PARA INDICAR QUE LA ALTURA DEL ÈRBOL HA CRECIDO SU VALOR INICIAL ES &!,3/ ).&/2 ES UN PARÈMETRO DE TIPO ENTERO QUE CONTIENE LA INFORMACIØN DEL ELEMENTO QUE QUEREMOS INSERTAR] [/42/ ./$/ Y ./$/ SON VARIABLES AUXILIARES DE TIPO PUNTERO] 3I ./$/ ≠ .), ENTONCES 3I ).&/2 ./$/> ).&/ ENTONCES 2EGRESAR A )NSERTA?BALANCEADO CON ./$/> ):1 "/ E ).&/2 [,LAMADA RECURSIVA] 3I "/ 6%2$!$%2/ ENTONCES 3I ./$/> &% (ACER ./$/> &% ← Y "/ ← &!,3/ (ACER ./$/> &% ← n n (ACER ./$/ ← ./$/> ):1 [2EESTRUCTURACIØN DEL ÈRBOL] 3I ./$/ > &% ≤ ENTONCES [2OTACIØN ))] (ACER ./$/> ):1 ← ./$/ > $%2

./$/ > $%2 ← ./$/ ./$/> &% ← Y ./$/ ← ./$/ [4ERMINA LA ROTACIØN ))] SI NO [2OTACIØN )$] (ACER ./$/ ← ./$/ > $%2

./$/> ):1 ← ./$/ > $%2

./$/ > $%2 ← ./$/

./$/ > $%2 ← ./$/ > ):1 Y ./$/ > ):1 ← ./$/ ! 3I ./$/ > &% n ENTONCES (ACER ./$/> &% ← SI NO (ACER ./$/> &% ← " [&IN DEL CONDICIONAL DEL PASO !] # 3I ./$/ > &% ENTONCES (ACER ./$/ > &% ← n SI NO (ACER ./$/ > &% ← $ [&IN DEL CONDICIONAL DEL PASO #] (ACER ./$/ ← ./$/ [4ERMINA LA ROTACIØN )$]


Ç3#0-&4 #"-"/$&"%04

[&IN DEL CONDICIONAL DEL PASO ] (ACER ./$/> &% ← Y "/ ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SI NO 3I ).&/2 ./$/> ).&/ ENTONCES 2EGRESAR A )NSERTA?BALANCEADO CON ./$/> $%2 "/ E ).&/2 [,LAMADA RECURSIVA] 3I "/ 6%2$!$%2/ ENTONCES 3I ./$/> &% n (ACER ./$/> &% ← Y "/ ← &!,3/ (ACER ./$/ > &% ← (ACER ./$/ ← ./$/> $%2 [2EESTRUCTURACIØN DE ÈRBOL] ! 3I ./$/ > &% ≥ ENTONCES [2OTACIØN $$] (ACER ./$/> $%2 ← ./$/ > ):1

./$/ > ):1 ← ./$/

./$/> &% ← Y ./$/ ← ./$/ [4ERMINA LA ROTACIØN $$] SI NO [2OTACIØN $)] (ACER ./$/ ← ./$/ > ):1

./$/> $%2 ← ./$/ > ):1 ./$/ > ):1 ← ./$/

./$/ > ):1 ← ./$/ > $%2 Y ./$/ > $%2 ← ./$/ 3I ./$/ > &% ENTONCES (ACER ./$/> &% ← n SI NO (ACER ./$/> &% ← [&IN DEL CONDICIONAL INTERNO] 3I ./$/ > &% n ENTONCES (ACER ./$/ > &% ← SI NO (ACER ./$/ > &% ← [&IN DEL CONDICIONAL INTERNO] (ACER ./$/ ← ./$/ [4ERMINA LA ROTACIØN $)] " [&IN DEL CONDICIONAL DEL PASO !] (ACER ./$/> &% ← Y "/ ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h,A INFORMACIØN YA SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ]

227


228 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

[&IN DEL CONDICIONAL DEL PASO ] SI NO #REAR ./$/ (ACER ./$/> ).&/ ← ).&/2 ./$/> ):1 ← .), ./$/> $%2 ← .), ./$/> &% ← Y "/ ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ]

%LIMINACIØN EN ÉRBOLES BALANCEADOS ,A OPERACIØN DE ELIMINACIØN EN ÈRBOLES BALANCEADOS ES MÈS COMPLEJA QUE LA OPERACIØN DE INSERCIØN COMO NORMALMENTE OCURRE EN CASI TODAS LAS ESTRUCTURAS DE DATOS #ONSISTE EN QUITAR UN NODO DEL ÈRBOL SIN VIOLAR LOS PRINCIPIOS QUE DElNEN UN ÈRBOL BALANCEADO 2ECUERDE QUE SE DElNIØ COMO UNA ESTRUCTURA EN LA CUAL PARA TODO NODO DEL ÈRBOL SE DEBE CUMPLIR QUE LA ALTURA DEL SUBÈRBOL IZQUIERDO Y LA ALTURA DEL SUBÈRBOL DERECHO NO DEBEN DIFERIR EN MÈS DE UNA UNIDAD %LIMINAR NODOS EN UN ÈRBOL BALANCEADO RESULTA DIFÓCIL A PESAR DE QUE SE UTILIZA EL MISMO ALGORITMO DE ELIMINACIØN IDÏNTICO EN LØGICA PERO DIFERENTE EN IMPLEMENTACIØN QUE EN LOS ÈRBOLES BINARIOS DE BÞSQUEDA Y LAS MISMAS OPERACIONES DE REACOMODO QUE SE UTILIZAN EN EL ALGORITMO DE INSERCIØN EN ÈRBOLES BALANCEADOS %N LA OPERACIØN DE ELIMINACIØN EN ÈRBOLES BALANCEADOS SE DEBEN DISTINGUIR LOS SI GUIENTES CASOS 3I EL ELEMENTO A ELIMINAR ES TERMINAL U HOJA SIMPLEMENTE SE SUPRIME 3I EL ELEMENTO A ELIMINAR TIENE UN SOLO DESCENDIENTE ENTONCES SE TIENE QUE SUSTITUIR POR ESE DESCENDIENTE 3I EL ELEMENTO A ELIMINAR TIENE LOS DOS DESCENDIENTES ENTONCES SE TIENE QUE SUSTITUIR POR EL NODO QUE SE ENCUENTRA MÈS A LA IZQUIERDA EN EL SUBÈRBOL DERECHO O POR EL NODO QUE SE ENCUENTRA MÈS A LA DERECHA EN EL SUBÈRBOL IZQUIERDO 0ARA ELIMINAR UN NODO EN UN ÈRBOL BALANCEADO LO PRIMERO QUE SE DEBE HACER ES LOCALIZAR SU POSICIØN EN EL ÈRBOL 3E ELIMINA SIGUIENDO LOS CRITERIOS ESTABLECIDOS ANTERIOR MENTE Y SE REGRESA POR EL CAMINO DE BÞSQUEDA CALCULANDO EL &% DE LOS NODOS VISITADOS 3I EN ALGUNO DE LOS NODOS SE VIOLA EL CRITERIO DE EQUILIBRIO ENTONCES SE DEBE REESTRUCTURAR EL ÈRBOL %L PROCESO TERMINA CUANDO SE LLEGA A LA RAÓZ DEL ÈRBOL #ABE ACLARAR QUE MIEN TRAS QUE EN EL ALGORITMO DE INSERCIØN UNA VEZ EFECTUADA UNA ROTACIØN SE PODÓA DETENER EL PROCESO EN ESTE ALGORITMO SE DEBE CONTINUAR PUESTO QUE SE PUEDE PRODUCIR MÈS DE UNA ROTACIØN EN EL CAMINO HACIA ATRÈS 0ARA COMPRENDER MEJOR LA OPERACIØN DE ELIMINACIØN EN ÈRBOLES BALANCEADOS OBSERVE EL SIGUIENTE EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LAS SIGUIENTES CLAVES DEL ÈRBOL BALANCEADO DE LA lGURA


Ç3#0-&4 #"-"/$&"%04

229

#ABE DESTACAR QUE EL MOVIMIENTO DE APUNTADORES Y LA REASIGNACIØN DE LOS &% NO SE PRESENTARÈN EN ESTE EJEMPLO PORQUE SON IDÏNTICOS A LOS MOSTRADOS EN EL EJEMPLO &)'52! ­RBOL BALANCEADO

,AS OPERACIONES QUE SE REALIZAN SON LAS SIGUIENTES


230 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

,A ELIMINACIØN DE LA CLAVE ES UN PROCESO SENCILLO YA QUE DICHA CLAVE NO TIENE DESCENDIENTES DIAGRAMA A !L REGRESAR SIGUIENDO EL CAMINO DE BÞSQUEDA ES EVIDENTE QUE EN LA CLAVE SE ROMPE EL CRITERIO DE EQUILIBRIO Y SE DEBE REESTRUCTURAR EL ÈRBOL DIAGRAMA A 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ LA RAMA IZQUIERDA DE ./$/ 3E VERIlCA EL &% DE ./$/ Y COMO ÏSTE ES IGUAL A n ENTONCES SE REALIZA LA ROTACIØN )) ,UEGO DE LA REESTRUCTURACIØN EL ÈRBOL QUEDA COMO EN EL DIAGRAMA A


Ç3#0-&4 #"-"/$&"%04

231

,A ELIMINACIØN DE LA CLAVE ES UN PROCESO SENCILLO DIAGRAMA B .O SE DEBE REESTRUCTURAR EL ÈRBOL PORQUE MANTIENE EL EQUILIBRIO Y SØLO ES NECESARIO CAMBIAR EL &% DE LOS NODOS QUE ALMACENAN AL Y DIAGRAMA B


232 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 !L ELIMINAR LA CLAVE SE ORIGINA EL CASO MÈS DIFÓCIL DE ELIMINACIØN EN ÈRBOLES LA ELIMINACIØN DE UNA CLAVE CON DOS DESCENDIENTES DIAGRAMA C L %N ESTE CASO SE OPTA POR SUSTITUIR DICHA CLAVE POR EL NODO QUE SE ENCUENTRA MÈS A LA DERECHA EN EL SUBÈRBOL IZQUIERDO ,UEGO DE LA SUSTITUCIØN EL ÈRBOL QUEDA COMO SE MUESTRA EN EL DIAGRAMA C !L REALIZAR LA SUSTITUCIØN SE OBSERVA QUE EN DICHO NODO SE VIOLA EL CRITERIO DE EQUI LIBRIO Y SE DEBE REESTRUCTURAR EL ÈRBOL 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ LA RAMA DERECHA DE ./$/ 3E VERIlCA EL &% DE ./$/ Y COMO ÏSTE ES IGUAL A SE REALIZA LA ROTACIØN $$ ,UEGO DEL REACOMODO EL ÈRBOL QUEDA COMO EN EL DIAGRAMA C


Ç3#0-&4 #"-"/$&"%04

233

!L ELIMINAR LA CLAVE SURGE NUEVAMENTE EL TERCER CASO DE ELIMINACIØN QUE CORRES PONDE A UNA CLAVE CON DOS DESCENDIENTES DIAGRAMA D 3E SUSTITUYE DICHA CLAVE POR EL NODO QUE SE ENCUENTRA MÈS A LA DERECHA EN EL SUBÈRBOL IZQUIERDO ,UEGO DE LA SUS TITUCIØN EL ÈRBOL QUEDA COMO SE PRESENTA EN EL DIAGRAMA D %S EVIDENTE QUE DESPUÏS DE LA SUSTITUCIØN EN EL NODO CON LA CLAVE SE VIOLA EL CRITERIO DE EQUILIBRIO Y SE DEBE REESTRUCTURAR EL ÈRBOL 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ LA RAMA IZQUIERDA DE ./$/ Y SE VERIlCA EL &% #OMO EN ESTE CASO ES IGUAL A SE APUNTA CON ./$/ LA RAMA DERECHA DE ./$/ Y SE REALIZA LA ROTACIØN )$ ,UEGO DE LA REESTRUCTURACIØN EL ÈRBOL QUEDA COMO EL PRESENTADO EN EL DIAGRAMA D

,UEGO DE LA ELIMINACIØN DE LAS CLAVES EL ÈRBOL QUEDA COMO EN EL DIAGRAMA E


234 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ,A ELIMINACIØN DE LA CLAVE CORRESPONDE AL PRIMER CASO DE BORRADO EN ÈRBOLES ES EL CASO MÈS SIMPLE DIAGRAMA F 3IN EMBARGO AL VERIlCAR EL &% DE LA CLAVE SE ADVIERTE QUE SE ROMPE EL EQUILIBRIO DEL ÈRBOL Y SE DEBE REESTRUCTURAR DIAGRAMA F 3E APUNTA CON ./$/ LA CLAVE Y CON ./$/ LA RAMA DERECHA DE ./$/ Y SE VERIlCA EL &% DE ./$/ #OMO ÏSTE ES IGUAL A n SE APUNTA CON ./$/ LA RAMA IZQUIERDA DE ./$/ Y SE REALIZA LA ROTA CIØN $) ,UEGO DE LA REESTRUCTURACIØN EL ÈRBOL QUEDA COMO EN EL DIAGRAMA F /BSERVE CUIDADOSAMENTE QUE LUEGO DE REALIZAR LA ELIMINACIØN DE UN ELEMENTO Y CUANDO SE REGRESA POR EL CAMINO DE BÞSQUEDA EL &% DEL NODO VISITADO DISMINUYE EN SI LA ELIMINACIØN SE HIZO POR SU RAMA DERECHA Y SE INCREMENTA EN SI LA ELIMINACIØN SE HIZO POR SU RAMA IZQUIERDA

%JEMPLO

$ADO EL ÈRBOL BALANCEADO DE LA lGURA A VERIlQUE SI EL MISMO QUEDA IGUAL AL DE LA lGURA B LUEGO DE ELIMINAR LAS SIGUIENTES CLAVES

&)'52! %LIMINACIØN EN ÉRBOLES BALANCEADOS A !NTES DE ELIMINAR LAS CLAVES B $ESPUÏS DE ELIMINAR LAS CLAVES


Ç3#0-&4 #"-"/$&"%04

235

#ON EL lN DE DARLE MAYOR MODULARIDAD AL ALGORITMO DE ELIMINACIØN EN ÈRBOLES BA LANCEADOS SE ESTUDIARÈN DOS ALGORITMOS AUXILIARES %L PRIMERO 2EESTRUCTURA?IZQ SE UTILIZA CUANDO LA ALTURA DE LA RAMA IZQUIERDA HA DISMINUIDO %L SEGUNDO 2EESTRUCTU RA?DER SE EMPLEA CUANDO LA ALTURA DE LA RAMA DERECHA HA DISMINUIDO !LGORITMO 2EESTRUCTURA?IZQ

2EESTRUCTURA?IZQ ./$/ "/ [%STE ALGORITMO REESTRUCTURA EL ÈRBOL CUANDO LA ALTURA DE LA RAMA IZQUIERDA HA DISMINUIDO Y EL &% DE ./$/ ES IGUAL A ./$/ ES UN PARÈMETRO POR REFERENCIA DE TIPO PUNTERO "/ ES UN PARÈMETRO DE TIPO BOOLEANO TAMBIÏN POR REFERENCIA "/ SE UTILIZA PARA INDICAR QUE LA ALTURA DE LA RAMA IZQUIERDA HA DISMINUIDO] [./$/ Y ./$/ SON VARIABLES AUXILIARES DE TIPO PUNTERO] 3I "/ 6%2$!$%2/ ENTONCES 3I ./$/> &% n (ACER ./$/> &% ← (ACER ./$/> &% ← Y "/ ← &!,3/ [2EESTRUCTURACIØN DEL ÈRBOL] (ACER ./$/ ← ./$/> $%2 3I ./$/ > &% ≥ ENTONCES [2OTACIØN $$] (ACER ./$/> $%2 ← ./$/ > ):1 Y ./$/ > ):1 ← ./$/ 3I ./$/ > &% (ACER ./$/> &% ← ./$/ > &% ← n Y "/ ← &!,3/ (ACER ./$/> &% ← Y ./$/ > &% ← [&IN DEL CONDICIONAL ] (ACER ./$/ ← ./$/ [4ERMINA LA ROTACIØN $$] SI NO [2OTACIØN $)] (ACER ./$/ ← ./$/ > ):1 ./$/> $%2 ← ./$/ > ):1

./$/ > ):1 ← ./$/ ./$/ > ):1 ← ./$/ > $%2 Y ./$/ > $%2 ← ./$/ 3I ./$/ > &% ENTONCES (ACER ./$/> &% ← n SI NO (ACER ./$/> &% ← [&IN DEL CONDICIONAL ] 3I ./$/ > &% n ENTONCES (ACER ./$/ > &% ← SI NO (ACER ./$/ > &% ←


236 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

[&IN DEL CONDICIONAL ] (ACER ./$/ ← ./$/ Y ./$/ > &% ← [4ERMINA LA ROTACIØN $)] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

!LGORITMO 2EESTRUCTURA?DER 2EESTRUCTURA?DER [%STE ALGORITMO REESTRUCTURA EL ÈRBOL CUANDO LA ALTURA DE LA RAMA DERECHA HA DISMINUIDO Y EL &% DE ./$/ ES IGUAL A n ./$/ ES UN PARÈMETRO POR REFERENCIA DE TIPO PUNTERO "/ ES UN PARÈMETRO DE TIPO BOOLEANO TAMBIÏN POR REFERENCIA "/ SE UTILIZA PARA INDICAR QUE LA ALTURA DE LA RAMA DERECHA HA DISMINUIDO] [./$/ Y ./$/ SON VARIABLES AUXILIARES DE TIPO PUNTERO] 3I "/ 6%2$!$%2/ ENTONCES 3I ./$/> &% (ACER ./$/> &% ← (ACER ./$/> &% ← n Y "/ ← &!,3/ n [2EESTRUCTURACIØN DEL ÈRBOL] (ACER ./$/ ← ./$/> ):1 3I ./$/ > &% ≤ ENTONCES [2OTACIØN )) (ACER ./$/> ):1 ← ./$/ > $%2 Y ./$/ > $%2 ← ./$/ 3I ./$/ > &% (ACER ./$/> &% ← n ./$/ > &% ← Y "/ ← &!,3/ n (ACER ./$/> &% ← Y ./$/ > &% ← [&IN DEL CONDICIONAL DEL PASO ] (ACER ./$/ ← ./$/ [4ERMINA LA ROTACIØN ))] SI NO [2OTACIØN )$ (ACER ./$/ ← ./$/ > $%2 ./$/> ):1 ← ./$/ > $%2

./$/ > $%2 ← ./$/ ./$/ > $%2 ← ./$/ > ):1 Y ./$/ > ):1 ← ./$/ 3I ./$/ > &% n ENTONCES (ACER ./$/> &% ← SI NO (ACER ./$/> &% ← [&IN DEL CONDICIONAL DEL PASO ] 3I ./$/ > &% ENTONCES (ACER ./$/ > &% ← n


Ç3#0-&4 #"-"/$&"%04

237

SI NO (ACER ./$/ > &% ← [&IN DEL CONDICIONAL DEL PASO ] (ACER ./$/ ← ./$/ Y ./$/ > &% ← [4ERMINA LA ROTACIØN )$ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

! CONTINUACIØN SE PRESENTA EL ALGORITMO DE ELIMINACIØN EN ÈRBOLES BALANCEADOS EL CUAL HARÈ USO DE LOS PREVIAMENTE EXPLICADOS !LGORITMO %LIMINA?BALANCEADO

%LIMINA?BALANCEADO ./$/ "/ ).&/2 [%L ALGORITMO ELIMINA UN ELEMENTO EN UN ÈRBOL BALANCEADO 5TILIZA DOS ALGORITMOS AUXILIARES 2EESTRUCTURA?IZQ Y 2EESTRUCTURA?DER ./$/ ES UN PARÈMETRO POR REFERENCIA DE TIPO PUNTERO "/ ES UN PARÈMETRO DE TIPO BOOLEANO TAMBIÏN POR REFERENCIA Y SE UTILIZA PARA INDICAR QUE LA ALTURA DEL ÈRBOL HA DISMINUIDO SU VALOR INICIAL ES &!,3/ ).&/2 ES UN PARÈMETRO DE TIPO ENTERO QUE CONTIENE LA INFORMACIØN DEL ELEMENTO QUE SE QUIERE ELIMINAR] [/42/ !58 !58 SON VARIABLES AUXILIARES DE TIPO PUNTERO "//, ES UNA VARIABLE DE TIPO BOOLEANO] 3I ./$/ ≠ .), ENTONCES 3I ).&/2 ./$/> ).&/ ENTONCES 2EGRESAR A %LIMINA?BALANCEADO CON ./$/> ):1 "/ E ).&/2 ,LAMAR AL ALGORITMO 2EESTRUCTURA?IZQ CON ./$/ Y "/ SI NO 3I ).&/2 ./$/> ).&/ ENTONCES 2EGRESAR A %LIMINA?BALANCEADO CON ./$/> $%2 "/ E ).&/2 ,LAMAR AL ALGORITMO 2EESTRUCTURA?DER CON ./$/ Y "/ SI NO (ACER /42/ ← ./$/ Y "/ ← 6%2$!$%2/ 3I /42/> $%2 .), ENTONCES (ACER ./$/ ← /42/> ):1 SI NO 3I /42/> ):1 .), ENTONCES (ACER ./$/ ← /42/> $%2 SI NO


238 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

(ACER !58 ← ./$/> ):1 Y "//, ← &!,3/ ! -IENTRAS !58> $%2 ≠ .), 2EPETIR (ACER !58 ← !58 !58 ← !58> $%2 Y "//, ← 6%2$!$%2/ " [&IN DEL CICLO DEL PASO !] (ACER ./$/> ).&/ ← !58> ).&/ Y /42/ ← !58 # 3I "//, 6%2$!$%2/ ENTONCES (ACER !58 > $%2 ← !58> ):1 SI NO (ACER ./$/> ):1 ← !58> ):1 $ [&IN DEL CONDICIONAL DEL PASO #] ,LAMAR AL ALGORITMO 2EESTRUCTURA?DER CON ./$/> ):1 Y "/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] 1UITAR /42/ [,IBERA LA MEMORIA DEL NODO] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ÈRBOLv [&IN DEL CONDICIONAL DEL PASO ]

%L ANÈLISIS MATEMÈTICO DE LOS ALGORITMOS DE INSERCIØN )NSERTA?BALANCEADO Y ELIMINACIØN %LIMINA?BALANCEADO DEMUESTRA QUE ES POSIBLE BUSCAR INSERTAR Y ELI MINAR UN ELEMENTO EN UN ÈRBOL BALANCEADO DE N NODOS EN / LOG N UNIDADES DE TIEMPO 0OR OTRA PARTE DIVERSOS ANÈLISIS DEMUESTRAN QUE SON MÈS FRECUENTES LAS ROTACIONES EN LAS OPERACIONES DE INSERCIØN QUE EN LAS DE ELIMINACIØN YA QUE MIENTRAS SE PRODUCE APROXIMADAMENTE UNA ROTACIØN POR CADA DOS INSERCIONES SE PRODUCE UNA ROTACIØN POR CADA CINCO ELIMINACIONES

%JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LA CLAVE DEL ÈRBOL BALANCEADO DE LA lGURA &)'52! ­RBOL BALANCEADO


Ç3#0-&4 #"-"/$&"%04 ,AS OPERACIONES QUE SE REALIZAN SON LAS SIGUIENTES

239


240 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

/BSERVE EL LECTOR QUE AL ELIMINAR LA CLAVE SE DESBALANCEA EL ÈRBOL Y DEBEMOS EFECTUAR LA ROTACIØN )) 3IN EMBARGO LUEGO DE BALANCEAR Y MODIlCAR EL FACTOR DE EQUI LIBRIO DEL NODO QUE ALMACENA LA CLAVE NOS DAMOS CUENTA QUE DEBEMOS EFECTUAR UN NUEVO BALANCEO AHORA UNA ROTACIØN $$ ²STE ES UN TÓPICO CASO DONDE AL ELIMINAR UNA CLAVE SE PRODUCE UNA CADENA DE BALANCEOS

­2"/,%3 -5,4)#!-)./3 ,OS DIFERENTES TIPOS DE ÈRBOLES BINARIOS ESTUDIADOS HASTA EL MOMENTO FUERON DESARRO LLADOS PARA FUNCIONAR EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA 3IN EMBARGO EXISTEN MUCHAS APLICACIONES EN LAS QUE EL VOLUMEN DE INFORMACIØN ES TAL QUE LOS DATOS NO CABEN EN LA MEMORIA PRINCIPAL Y ES NECESARIO ALMACENARLOS ORGANIZADOS EN ARCHIVOS EN DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO %STA ORGANIZACIØN DE ARCHIVOS DEBE SER SUlCIENTEMENTE ADECUADA COMO PARA RECUPERAR LOS DATOS EN FORMA ElCIENTE


Ç3#0-&4 .6-5*$".*/04

241

%S IMPORTANTE RECORDAR QUE EL TIEMPO NECESARIO PARA LOCALIZAR UN REGISTRO EN LA ME MORIA PRINCIPAL DE LA COMPUTADORA SE MIDE EN MICROSEGUNDOS MIENTRAS QUE EL TIEMPO NECESARIO PARA LOCALIZAR UNA PÈGINA CONTIENE VARIOS REGISTROS EN MEMORIA SECUNDARIA POR EJEMPLO DISCO SE MIDE EN MILISEGUNDOS %L TIEMPO DE ACCESO CLARO ESTÈ ES MILES DE VECES MÈS RÈPIDO EN LA MEMORIA PRINCIPAL QUE EN LA MEMORIA SECUNDARIA #ONSIDERE EL CASO DE ALMACENAR UN ÈRBOL BINARIO EN DISCO 3E NECESITARÈ EN PRO MEDIO PARA LOCALIZAR ALGUNO DE LOS NODOS LOGD N ACCESOS A DISCO DONDE N REPRESENTA EL NÞMERO DE NODOS DEL ÈRBOL Y DEL ORDEN DEL MISMO QUE EN ESTE CASO ES IGUAL A 0OR EJEMPLO SI EL ÈRBOL CONTIENE DE ELEMENTOS SE NECESITARÓAN APROXIMADAMENTE ACCESOS A DISCO !HORA BIEN SI EL ÈRBOL ESTÈ ORGANIZADO EN PÈGINAS NODOS DE TAL MANERA QUE CADA PÈGINA CONTENGA COMO MÓNIMO ELEMENTOS ENTONCES SE NECESITA RÓAN COMO MÈXIMO TRES ACCESOS A DISCO LOG .OTE EL LECTOR QUE LOS ACCESOS A DISCO DISMINUYEN DE MODO CONSIDERABLE %XISTEN DIFERENTES TÏCNICAS PARA LA ORGANIZACIØN DE ARCHIVOS INDIZADOS SIN EMBARGO LA ORGANIZACIØN EN ÈRBOLES " Y ESPECÓlCAMENTE SU VARIANTE LA ORGANIZACIØN EN ÈRBOLES " ES LA MÈS UTILIZADA

­RBOLES " ,OS ÈRBOLES " SON UNA GENERALIZACIØN DE LOS ÈRBOLES BALANCEADOS ²STOS REPRESENTAN BÈSICAMENTE UN MÏTODO PARA ALMACENAR Y RECUPERAR INFORMACIØN EN MEDIOS EXTERNOS &UERON PROPUESTOS POR "AYER Y -C#REIGHT EN 3U NOMBRE ÈRBOLES " NUNCA FUE EXPLICADO POR LOS AUTORES AUNQUE MUCHOS SOSTIENEN QUE " PROVIENE DE "AYER UNO DE SUS INVENTORES %N ESTE TIPO DE ÈRBOLES UN GRUPO DE NODOS RECIBE EL NOMBRE DE PÈGINA %N CADA PÈGINA SE ALMACENA LA INFORMACIØN DE UN GRUPO DE NODOS Y SE IDENTIlCA POR MEDIO DE UNA CLAVE O LLAVE %N GENERAL CADA PÈGINA DE UN ÈRBOL " DE ORDEN D CONTIENE D CLAVES COMO MÈXIMO Y D CLAVES COMO MÓNIMO #ON ESTO SE GARANTIZA QUE CADA PÈGINA ESTÏ LLENA COMO MÓNI MO HASTA LA MITAD 2ESPECTO AL NÞMERO DE DESCENDIENTES CADA PÈGINA DE UN ÈRBOL " DE ORDEN D TIENE D HIJOS COMO MÈXIMO Y D HIJOS COMO MÓNIMO EXCEPTO LA PÈGINA RAÓZ QUE PUEDE CONTENER COMO MÓNIMO DATO Y POR CONSIGUIENTE SOLAMENTE HIJOS ,AS PÈGINAS EN GENERAL SON ALMACENADAS EN DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO A EXCEPCIØN DE LA PÈGINA RAÓZ QUE ES CONVENIENTE MANTENERLA EN MEMORIA PRINCIPAL #ABE MENCIONAR QUE BÈSICAMENTE POR CUESTIONES DE ESPACIO EN LOS EJEMPLOS Y lGURAS EN CADA NODO SE ALMACENA SOLAMENTE UN DATO LA CLAVE CON LA CUAL VAMOS A TRABAJAR %N LA lGURA SE PRESENTA UN DIAGRAMA CORRESPONDIENTE A UN ÈRBOL " DE ORDEN

&)'52! ­RBOL " DE ORDEN


242 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %N LA lGURA SE OBSERVA UNA PÈGINA DE UN ÈRBOL " DE ORDEN D CON D CLAVES Y D HIJOS

&)'52! 0ÉGINA DE UN ÉRBOL " DE ORDEN D

&ORMALMENTE UN ÈRBOL " SE DElNE DE LA SIGUIENTE MANERA #ADA PÈGINA EXCEPTO LA RAÓZ CONTIENE ENTRE D Y D ELEMENTOS SIENDO D EL GRADO DEL ÈRBOL ,A RAÓZ PUEDE ALMACENAR ENTRE Y D ELEMENTOS #ADA PÈGINA EXCEPTO LA PÈGINA RAÓZ Y LAS PÈGINAS HOJA TIENE ENTRE D Y D DESCENDIENTES 3E UTILIZARÈ M PARA EXPRESAR EL NÞMERO DE ELEMENTOS POR PÈGINA ,A PÈGINA RAÓZ TIENE AL MENOS DOS DESCENDIENTES ,AS PÈGINAS HOJA ESTÈN TODAS AL MISMO NIVEL

%JEMPLO

,UEGO DE ANALIZAR EL ÈRBOL " DE LA lGURA SE PUEDE AlRMAR LO SIGUIENTE RESPECTO A ÏSTE

&)'52! ­RBOL " DE ORDEN

◗ ◗ ◗ ◗ ◗ ◗

/RDEN DEL ÈRBOL !LTURA DEL ÈRBOL 4ODAS LAS PÈGINAS CONTIENEN O ELEMENTOS EXCEPTO LA RAÓZ QUE CONTIENE ,OS ELEMENTOS DENTRO DE LA PÈGINA SE ENCUENTRAN ORDENADOS EN FORMA CRECIENTE DE IZQUIERDA A DERECHA 4ODAS LAS HOJAS ESTÈN AL MISMO NIVEL 4ODAS LAS PÈGINAS TIENEN O DESCENDIENTES

"ÞSQUEDA EN ÉRBOLES " %L PROCESO DE BÞSQUEDA EN ÈRBOLES " ES UNA GENERALIZACIØN DEL PROCESO DE BÞSQUEDA EN ÈRBOLES BINARIOS DE BÞSQUEDA ,OS PASOS NECESARIOS PARA LOCALIZAR UNA CLAVE 8 EN UN ÈRBOL " SON LOS QUE SE PRESENTAN A CONTINUACIØN 3E UTILIZA .), PARA INDICAR QUE LA PÈGINA ESTÈ VACÓA


Ç3#0-&4 .6-5*$".*/04

243

3E DEBE TENER EN MEMORIA LA PÈGINA SOBRE LA CUAL SE QUIERE TRABAJAR 3I PÈGINA ≠ .), ENTONCES 3E AVANZA HACIA EL PASO SI NO 3E AVANZA HACIA EL PASO [&IN DEL CONDICIONAL DEL PASO ] 3E DEBE VERIlCAR SI LA CLAVE BUSCADA SE ENCUENTRA EN DICHA PÈGINA 3I M ES PEQUE×A SE UTILIZARÈ BÞSQUEDA SECUENCIAL DE OTRA MANERA SE PODRÈ UTILIZAR BÞSQUEDA BINARIA 3I LA CLAVE SE ENCUENTRA EN LA PÈGINA ENTONCES [,A OPERACIØN DE BÞSQUEDA CONCLUYE CUANDO SE ENCUENTRA _²8)4/ EL DATO EN LA PÈGINA VISITADA] SI NO 3E DEBEN DISTINGUIR LOS SIGUIENTES CASOS 3I 8 #, ENTONCES 3E DEBE LOCALIZAR 0!' 3I #,I 8 #,M ENTONCES 3E DEBE LOCALIZAR 0!'I 3I 8 #,M ENTONCES 3E DEBE LOCALIZAR 0!'M [&IN DEL CONDICIONAL DEL PASO ] 2EGRESAR AL PASO .OTA 3E UTILIZA EL TÏRMINO #, PARA HACER REFERENCIA A LAS CLAVES DE UNA DETER MINADA PÈGINA 8 PARA INDICAR LA CLAVE QUE SE BUSCA Y 0!' PARA EXPRESAR LA PÈGINA QUE DEBE LOCALIZARSE EN MEMORIA SECUNDARIA _&2!#!3/ ,A PÈGINA QUE SE DESEA LOCALIZAR ESTÈ VACÓA POR LO TANTO EL PROCESO DE BÞSQUEDA SE INTERRUMPE Y SE INFORMA QUE LA CLAVE NO SE ENCUENTRA ALMACENADA EN EL ÈRBOL

)NSERCIØN EN ÉRBOLES " %L PROCESO DE INSERCIØN EN ÈRBOLES " ES RELATIVAMENTE SENCILLO AUNQUE REQUIERE CIERTO TRATAMIENTO ESPECIAL DEBIDO A LAS CARACTERÓSTICAS PROPIAS DE ESTOS ÈRBOLES ,OS ÈRBOLES " TIENEN UN COMPORTAMIENTO TÓPICO DIFERENTE AL RESTO DE LOS ÈRBOLES ESTUDIADOS ANTERIORMEN TE 4ODAS LAS HOJAS ESTÈN AL MISMO NIVEL Y POR LO TANTO CUALQUIER CAMINO DESDE LA RAÓZ HASTA ALGUNA DE LAS HOJAS TIENE LA MISMA LONGITUD 0OR OTRA PARTE LOS ÈRBOLES " TIENEN UNA FORMA EXTRA×A DE CRECER LO HACEN DE ABAJO HACIA ARRIBA ES DECIR DESDE LAS HOJAS HACIA LA RAÓZ ,OS PASOS PARA LLEVAR A CABO LA INSERCIØN DE UN NODO EN UN ÈRBOL " SON LOS SIGUIENTES ,OCALIZAR LA PÈGINA DONDE CORRESPONDE POR EL VALOR PARA NO ALTERAR EL ORDEN INSERTAR LA CLAVE 3I M D [%L NÞMERO DE ELEMENTOS DE LA PÈGINA ES MENOR A D]


244 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ENTONCES ,A CLAVE SE INSERTA EN EL LUGAR QUE LE CORRESPONDE [%N LA lGURA SE PRESENTA UN EJEMPLO DE ESTE CASO] SI NO [%L NÞMERO DE ELEMENTOS DE LA PÈGINA ES IGUAL A D] ,A PÈGINA AFECTADA SE DIVIDE EN Y SE DISTRIBUYEN LAS M CLAVES EQUITATIVAMENTE ENTRE LAS MISMAS ,A CLAVE DEL MEDIO SUBE A LA PÈGINA ANTECESORA [%N LA lGURA SE PRESENTA UN EJEMPLO DE ESTE CASO] [&IN DEL CONDICIONAL DEL PASO ] ,OS PASOS ANTERIORES SE REPITEN MIENTRAS SEA NECESARIO 3I ALGUNA DE LAS PÈGINAS ANTECESORAS SE DESBORDA NUEVAMENTE ENTONCES HAY QUE ORDENAR LAS CLAVES EN LA PÈGINA APLICAR PARTICIØN Y LA CLAVE DEL MEDIO SUBE A LA PÈGINA ANTECESORA %L PROCESO DE PROPA GACIØN PUEDE LLEGAR INCLUSO HASTA LA RAÓZ EN DICHO CASO LA ALTURA DEL ÈRBOL SE INCREMENTA EN UNA UNIDAD [%N LA lGURA SE PRESENTA UN EJEMPLO DE ESTE CASO]

&)'52! )NSERCIØN DE LA CLAVE EN UN ÉRBOL " A !NTES DE IN SERTAR LA CLAVE B $ESPUÏS DE INSERTAR LA CLAVE

&)'52! )NSERCIØN DE LA CLAVE EN UN ÉRBOL " A !NTES DE INSERTAR LA CLAVE B $ESPUÏS DE INSERTARLA .OTA /BSERVE EL LECTOR QUE LA INSERCIØN DE LA CLAVE PROVOCØ LA DIVISIØN DE LA PÉGINA ! EN DOS PÉGINAS " Y # ,AS CLAVES SE DISTRIBUYERON EQUITATIVAMENTE ENTRE LAS PÉGINAS CITADAS Y LA CLAVE DEL MEDIO SUBIØ A LA PÉGINA ANTECESORA


Ç3#0-&4 .6-5*$".*/04

245

&)'52! )NSERCIØN DE LA CLAVE EN UN ÉRBOL " A !NTES DE IN SERTAR LA CLAVE B $ESPUÏS DE INSERTARLA .OTA /BSERVE EL LECTOR QUE LA INSERCIØN DE LA CLAVE PROVO CØ LA DIVISIØN DE LA PÉGINA ! EN DOS PÉGINAS " Y # 3IN EMBAR GO AL SUBIR LA CLAVE DEL MEDIO SE PRODUJO UN NUEVO DESBORDAMIENTO QUE ORIGINØ LA PARTICIØN DE LA PÉGINA $ EN LAS PÉGINAS % Y & ,A CLAVE FORMA AHORA PARTE DE UNA NUEVA PÉGINA ' Y REPRESENTA LA RAÓZ DEL ÉRBOL

%JEMPLO

3UPONGAMOS QUE SE DESEA INSERTAR LAS SIGUIENTES CLAVES EN UN ÈRBOL " DE ORDEN QUE SE ENCUENTRA VACÓO ,OS RESULTADOS PARCIALES QUE ILUSTRAN EL CRECIMIENTO DEL ÈRBOL SE PRESENTAN EN LOS DIAGRAMAS DE LA lGURA

&)'52! )NSERCIONES EN UN ÉRBOL " DE ORDEN


246 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! CONTINUACIØN


Ç3#0-&4 .6-5*$".*/04

247

&)'52! CONTINUACIØN

%JEMPLO

$ADO COMO DATO EL ÈRBOL " DE ORDEN DE LA lGURA A VERIlQUE SI EL MISMO QUEDA IGUAL AL DE LA lGURA B LUEGO DE INSERTAR LAS SIGUIENTES CLAVES

&)'52! )NSERCIØN EN UN ÉRBOL " DE ORDEN A !NTES DE INSER TAR LAS CLAVES B $ESPUÏS DE INSERTAR LAS CLAVES


248 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

%LIMINACIØN EN ÉRBOLES " ,A OPERACIØN DE ELIMINACIØN EN ÈRBOLES " ES UNA OPERACIØN MÈS COMPLICADA QUE LA INSERCIØN #ONSISTE EN QUITAR UNA CLAVE DEL ÈRBOL SIN VIOLAR LA CONDICIØN DE QUE EN UNA PÈGINA EXCEPTO LA RAÓZ NO PUEDE HABER MENOS DE D CLAVES NI MÈS DE D CLAVES SIENDO D EL ORDEN DEL ÈRBOL %N LA OPERACIØN DE BORRADO SE DEBEN DISTINGUIR LOS SIGUIENTES CASOS 3I LA CLAVE A ELIMINAR SE ENCUENTRA EN UNA PÈGINA HOJA ENTONCES SIMPLEMENTE SE SUPRIME 3I M ≥ D [3E VERIlCA QUE EL NÞMERO DE ELEMENTOS EN LA PÈGINA SEA VÈLIDO] ENTONCES 4ERMINA LA OPERACIØN DE BORRADO [3E PRESENTA UN EJEMPLO DE ESTE CASO EN LA lGURA ] SI NO 3E DEBE BAJAR LA CLAVE LEXICOGRÈlCAMENTE ADYACENTE DE LA PÈGINA ANTECESORA Y SUSTITUIR ESTA CLAVE POR LA QUE SE ENCUENTRE MÈS A LA DERECHA EN EL SUBÈRBOL IZQUIERDO O POR LA QUE SE ENCUENTRE MÈS A LA IZQUIERDA EN EL SUBÈRBOL DERECHO #ON ESTE PASO SE LOGRA QUE M EN ESTA PÈGINA SIGA SIENDO ≥ D [3E PRESENTA UN EJEMPLO EN LAS lGURAS A Y B] 3I ESTO NO ES POSIBLE POR LAS M DE LAS PÈGINAS INVOLUCRADAS SE DEBEN FUSIONAR LAS PÈGINAS QUE SON DESCENDIENTES DIRECTAS DE LA CLAVE QUE SE BAJA [3E PRESENTA UN EJEMPLO DE ESTE CASO EN LAS lGURAS C Y D] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] 3I LA CLAVE A ELIMINAR NO SE ENCUENTRA EN UNA PÈGINA HOJA ENTONCES 3E DEBE SUSTITUIR POR LA CLAVE QUE SE ENCUENTRA MÈS A LA IZQUIERDA EN EL SUBÈRBOL DERECHO O POR LA CLAVE QUE SE ENCUENTRA MÈS A LA DERECHA EN EL SUBÈRBOL IZQUIERDO 3I M ≥ D [3E VERIlCA QUE EL NÞMERO DE ELEMENTOS EN LA PÈGINA SEA VÈLIDO]

&)'52! %LIMINACIØN DE LA CLAVE EN UN ÉRBOL " DE ORDEN A !NTES DE ELIMINAR LA CLAVE B $ESPUÏS DE ELI MINARLA


Ç3#0-&4 .6-5*$".*/04

249

ENTONCES 4ERMINA LA OPERACIØN DE BORRADO [3E PRESENTA UN EJEMPLO DE ESTE CASO EN LA lGURA ] SI NO 3E DEBE BAJAR LA CLAVE LEXICOGRÈlCAMENTE ADYACENTE DE LA PÈGINA ANTECESORA Y FUSIONAR LAS PÈGINAS QUE SON DESCENDIENTES DIRECTAS DE DICHA CLAVE [%N LA lGURA SE PRESENTA UN EJEMPLO DE ESTE CASO] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] #ABE ACLARAR QUE EL PROCESO DE FUSIØN DE PÈGINAS SE PUEDE PROPAGAR INCLUSO HASTA LA RAÓZ EN CUYO CASO LA ALTURA DEL ÈRBOL DISMINUYE EN UNA UNIDAD %N LA lGURA SE PRESENTAN DOS EJEMPLOS DE ESTE CASO &)'52! %LIMINACIØN DE LAS CLAVES Y EN UN ÉRBOL " DE ORDEN A !NTES DE ELIMI NAR LA CLAVE B $ESPUÏS DE ELIMINARLA C !NTES DE ELIMINAR LA CLAVE D $ESPUÏS DE ELIMINARLA .OTAS !L ELIMINAR LA CLAVE DE LA PÉGINA ! BAJA LA CLAVE DE LA PÉGINA ANTECESORA Y ÏSTA ES SUSTITUIDA POR LA QUE SE ENCUENTRA MÉS A LA IZQUIERDA EN LA PÉGINA DERECHA ES DECIR LA CLAVE DE LA PÉGINA " !L ELIMINAR LA CLAVE DE LA PÉGINA ! BAJA LA CLAVE DE LA PÉGINA ANTECESORA Y SE FUSIO NAN LAS PÉGINAS ! Y "

&)'52! %LIMINACIØN DE LA CLAVE EN UN ÉRBOL " DE ORDEN A !NTES DE ELIMINAR LA CLAVE B $ESPUÏS DE ELI MINARLA .OTA !L ELIMINAR LA CLAVE SE SUSTITUYE POR LA CLAVE QUE SE ENCUENTRA MÉS A LA IZQUIERDA EN EL SUBÉRBOL DERECHO


250 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! %LIMINACIØN DE LA CLAVE EN UN ÉRBOL " DE ORDEN A !NTES DE ELIMINAR LA CLAVE B $ESPUÏS DE ELI MINARLA .OTA !L ELIMINAR LA CLAVE SE SUSTITUYE POR LA CLAVE QUE SE ENCUENTRA MÉS A LA DERECHA EN EL SUBÉRBOL IZQUIERDO 3IN EMBARGO AL SUBIR LA CLAVE EN LA PÉGINA ! M QUEDA MENOR QUE D POR LO QUE ES NECESARIO REALIZAR UNA FUSIØN "AJA LA CLA VE CORRESPONDIENTE A LA PÉGINA ANTECESORA NUEVAMENTE Y SE FUSIONAN LAS PÉGINAS ! Y "

&)'52! %LIMINACIØN DE LAS CLAVES Y EN UN ÉRBOL " DE ORDEN A !NTES DE ELIMI NAR LA CLAVE B $ESPUÏS DE ELIMINARLA .OTA !L ELIMINAR LA CLAVE DE LA PÉGINA ! M QUEDA MENOR A D POR LO QUE ES NECESARIO BAJAR LA CLAVE DE LA PÉGINA ANTECESORA PRODUCIÏNDOSE LA FUSIØN DE LAS PÉGINAS ! Y " 3IN EMBARGO EN LA PÉGINA # NUE VAMENTE M QUEDA MENOR A D POR LO QUE ES NECESARIO BAJAR LA CLAVE DE LA PÉGINA % #OMO ESTA PÉGINA QUEDA VACÓA ES NECESARIA ENTONCES UNA NUEVA FUSIØN AHORA DE LAS PÉGINAS # Y $ ,A ALTURA DEL ÉRBOL DISMI NUYE EN UNA UNIDAD


Ç3#0-&4 .6-5*$".*/04

251

&)'52! CONTINUACIØN

C !NTES DE ELIMINAR LA CLAVE D $ESPUÏS DE ELIMINARLA .OTA !L ELIMINAR LA CLAVE DE LA PÉGINA ! SE SUSTITUYE POR LA CLAVE QUE SE ENCUENTRA MÉS A LA DERECHA EN EL SUBÉRBOL IZQUIERDO DE LA PÉGINA " 3IN EMBARGO EN LA PÉGINA " M QUEDA MENOR QUE D POR LO QUE ES NECESARIO BAJAR LA CLAVE DE LA PÉGINA $ PRODUCIÏNDOSE LA FUSIØN DE LAS PÉGINAS " Y # .UEVAMENTE EN LA PÉGINA $ M QUEDA MENOR A D POR LO QUE AHORA ES NECESARIO BAJAR LA CLAVE DE LA PÉGINA ! #OMO ESTA PÉGINA QUEDA VACÓA ENTONCES NECESITA REALIZARSE UNA FUSIØN DE LAS PÉGINAS $ Y % ,A ALTURA DEL ÉRBOL DISMINUYE EN UNA UNIDAD

%JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LAS SIGUIENTES CLAVES DEL ÈRBOL " DE ORDEN DE LA lGURA

&)'52! ­RBOL " DE ORDEN

,OS RESULTADOS PARCIALES QUE ILUSTRAN CØMO FUNCIONA EL PROCEDIMIENTO SE PRESENTAN EN LOS DIAGRAMAS DE LA lGURA


252 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! %LIMINACIONES EN UN ÉRBOL " DE ORDEN


Ç3#0-&4 .6-5*$".*/04

253

&)'52! CONTINUACIØN

%JEMPLO

$ADO COMO DATO EL ÈRBOL " DE ORDEN DE LA lGURA VERIlQUE SI EL MISMO QUEDA IGUAL AL DE LA lGURA LUEGO DE ELIMINAR LAS SIGUIENTES CLAVES

&)'52! ­RBOL " DE ORDEN LUEGO DE ELIMINAR LAS CLAVES Y


254 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LA CLAVE DEL ÈRBOL " DE ORDEN DE LA lGURA

&)'52! ­RBOL " DE ORDEN

,AS OPERACIONES QUE SE REALIZAN SON LAS SIGUIENTES


Ç3#0-&4 .6-5*$".*/04

255

.OTA !L ELIMINAR LA CLAVE DE LA PÈGINA ! M QUEDA MENOR A D POR LO QUE ES NECESARIO BAJAR LA CLAVE DE LA PÈGINA # PRODUCIÏNDOSE LA FUSIØN DE LAS PÈGINAS ! Y " 3IN EMBARGO EN LA PÈGINA # NUEVAMENTE M QUEDA MENOR A D POR LO QUE ES NECESARIO BAJAR LA CLAVE DE LA PÈGINA & !QUÓ ES DONDE SE PRODUCE UNO DE LOS CASOS MÈS DIFÓCILES DE BORRADO EN ÈRBOLES " %N LOS EJEMPLOS ANTERIORES HACÓAMOS FUSIØN DE LAS PÈGINAS # Y $ DISMINUYENDO LA ALTURA DEL ÈRBOL 3IN EMBARGO SI HICIÏRAMOS ESTO M SERÓA MAYOR A D POR LO QUE VIOLARÓAMOS LOS PRINCIPIOS QUE DElNEN UN ÈRBOL " %S NECESARIO ENTONCES SUBIR LA CLAVE DE LA PÈGINA $ A LA PÈGINA & Y LA PÈGINA % PASA A SER EL HIJO DERECHO DE LA CLAVE AHORA EN LA PÈGINA #

­RBOLES " ,OS ÈRBOLES " SE HAN CONVERTIDO EN LA TÏCNICA MÈS UTILIZADA PARA LA ORGANIZACIØN DE AR CHIVOS INDIZADOS ,A PRINCIPAL CARACTERÓSTICA DE ESTOS ÈRBOLES ES QUE TODA LA INFORMACIØN SE ENCUENTRA EN LAS HOJAS MIENTRAS QUE LOS NODOS RAÓZ E INTERIORES ALMACENAN CLAVES QUE SE UTILIZAN COMO ÓNDICES $EBIDO A ESTA CARACTERÓSTICA DE LOS ÈRBOLES " TODOS LOS CAMI NOS DESDE LA RAÓZ HASTA CUALQUIERA DE LOS DATOS TIENEN LA MISMA LONGITUD %N LA lGURA PRESENTAMOS UN DIAGRAMA DE UN ÈRBOL " DE ORDEN %S DE NOTAR QUE LOS ÈRBOLES " OCUPAN UN POCO MÈS DE ESPACIO QUE LOS ÈRBOLES " Y ESTO OCURRE AL EXISTIR DUPLICIDAD EN ALGUNAS CLAVES 3IN EMBARGO ESTO ES ACEPTABLE SI EL ARCHIVO SE MODIlCA FRECUENTEMENTE PUESTO QUE SE EVITA LA OPERACIØN DE REORGANIZACIØN DEL ÈRBOL QUE ES TAN COSTOSA EN LOS ÈRBOLES " &ORMALMENTE SE DElNE UN ÈRBOL " DE ORDEN D DE LA SIGUIENTE MANERA #ADA PÈGINA EXCEPTO LA RAÓZ CONTIENE M ELEMENTOS DONDE M ES UN VALOR ENTRE D Y D ,A RAÓZ CONTIENE DE A D ELEMENTOS #ADA PÈGINA EXCEPTO LA RAÓZ TIENE ENTRE D Y D DESCENDIENTES ,A PÈGINA RAÓZ TIENE AL MENOS DOS DESCENDIENTES ,AS PÈGINAS HOJAS ESTÈN TODAS AL MISMO NIVEL 4ODA LA INFORMACIØN CON LAS CLAVES QUE LAS IDENTIlCAN SE ENCUENTRA EN LAS PÈGINAS HOJA ,AS CLAVES ALMACENADAS EN LAS PÈGINAS RAÓZ E INTERIORES SE UTILIZAN COMO ÓNDICES

&)'52! ­RBOL " DE ORDEN


256 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

"ÞSQUEDA EN ÉRBOLES " ,A OPERACIØN DE BÞSQUEDA EN ÈRBOLES " ES SIMILAR A LA OPERACIØN DE BÞSQUEDA EN ÈRBOLES " %L PROCESO ES SIMPLE SIN EMBARGO PUEDE SUCEDER QUE AL BUSCAR UNA DETERMI NADA CLAVE LA MISMA SE ENCUENTRE EN UNA PÈGINA RAÓZ O INTERIOR %N DICHO CASO NO SE DEBE DETENER EL PROCESO PORQUE EN LA PÈGINA RAÓZ O EN LAS INTERIORES SØLO SE ALMACENAN CLAVES QUE FUNCIONAN COMO ÓNDICES ,A BÞSQUEDA DEBE CONTINUAR EN LA PÈGINA APUNTADA POR LA RAMA DERECHA DE DICHA CLAVE 0OR EJEMPLO AL BUSCAR LA CLAVE EN EL ÈRBOL " DE LA lGURA SE ADVIERTE QUE ÏSTA SE ENCUENTRA EN LA PÈGINA RAÓZ %N ESTE CASO SE DEBE CONTINUAR EL PROCESO DE BÞS QUEDA EN LA PÈGINA APUNTADA POR LA RAMA DERECHA DE DICHA CLAVE

)NSERCIØN EN ÉRBOLES " %L PROCESO DE INSERCIØN EN ÈRBOLES " ES RELATIVAMENTE SIMPLE SIMILAR AL PROCESO DE INSERCIØN EN ÈRBOLES " ,A DIlCULTAD SE PRESENTA CUANDO SE DESEA INSERTAR UNA CLAVE EN UNA PÈGINA QUE SE ENCUENTRA LLENA M D %N ESTE CASO LA PÈGINA AFECTADA SE DIVIDE EN DISTRIBUYÏNDOSE LAS M CLAVES DE LA SIGUIENTE FORMA hLAS D PRIMERAS CLAVES EN LA PÈGINA DE LA IZQUIERDA Y LAS D RESTANTES CLAVES EN LA PÈGINA DE LA DERECHAv 5NA COPIA DE LA CLAVE DEL MEDIO SUBE A LA PÈGINA ANTECESORA %N LA lGURA SE MUESTRAN DOS DIAGRAMAS QUE ILUSTRAN CØMO FUNCIONA ESTE CASO 0UEDE SUCEDER QUE LA PÈGINA ANTECESORA SE DESBORDE NUEVAMENTE EN DICHO CASO SE DEBE REPETIR EL PROCESO ANTERIOR %S IMPORTANTE NOTAR QUE EL DESBORDAMIENTO EN UNA PÈGINA QUE NO ES HOJA NO PRODUCE DUPLICIDAD DE CLAVES %L PROCESO DE PROPAGACIØN PUEDE LLEGAR HASTA LA RAÓZ EN CUYO CASO LA ALTURA DEL ÈRBOL SE PUEDE INCREMENTAR EN UNA UNIDAD

&)'52! )NSERCIØN DE LA CLAVE EN UN ÉRBOL " A !NTES DE INSERTAR LA CLAVE B $ESPUÏS DE INSERTARLA .OTA /BSERVE QUE LA INSERCIØN DE LA CLAVE EN LA PÉGINA ! PRODUCE SU DIVISIØN EN DOS PÉGINAS " Y # ,AS D PRIMERAS CLAVES SE UBICAN EN LA PÉGINA " Y ,AS D CLAVES RESTANTES EN LA PÉGINA # Y 5NA COPIA DE LA CLAVE DEL MEDIO SUBE A LA PÉGINA ANTECESORA


Ç3#0-&4 .6-5*$".*/04

257

%N LA lGURA SE PRESENTAN DOS DIAGRAMAS QUE CLARIlCAN Y RESUELVEN ESTE CASO &)'52! )NSERCIØN DE LA CLAVE EN UN ÉRBOL " A !NTES DE INSERTAR LA CLAVE B $ESPUÏS DE INSERTARLA .OTA ,A INSERCIØN DE LA CLAVE EN LA PÉGINA ! PROVOCØ LA DIVISIØN DE ÏSTA EN LAS PÉGINAS " Y # 3IN EMBARGO AL SUBIR UNA COPIA DE LA CLAVE DEL MEDIO SE PRODUCE UN NUEVO DESBORDAMIENTO EN LA PÉGINA $ QUE PROVOCA SU PARTICIØN EN LAS PÉGINAS % Y & ,A CLAVE FORMA AHORA PARTE DE LA PÉGINA ' Y REPRESENTA LA RAÓZ DEL ÉRBOL ,A ALTURA DEL ÉRBOL SE INCREMENTA EN UNA UNIDAD

%JEMPLO

3UPONGAMOS QUE SE DESEA INSERTAR LAS SIGUIENTES CLAVES EN UN ÈRBOL " DE ORDEN QUE SE ENCUENTRA VACÓO ,OS RESULTADOS PARCIALES QUE ILUSTRAN EL CRECIMIENTO DEL ÈRBOL SE PRESENTAN EN LOS DIAGRAMAS CORRESPONDIENTES A LA lGURA


258 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 &)'52! )NSERCIONES EN UN ÉRBOL " DE ORDEN


Ç3#0-&4 .6-5*$".*/04

259

&)'52! CONTINUACIØN

%JEMPLO

$ADO COMO DATO EL ÈRBOL " DE ORDEN DE LA lGURA A VERIlQUE SI EL MISMO QUEDA IGUAL AL DE LA lGURA B LUEGO DE INSERTAR LAS SIGUIENTES CLAVES

&)'52! )NSERCIONES EN UN ÉRBOL " DE ORDEN A !NTES DE INSERTAR LAS CLAVES B $ESPUÏS DE INSERTARLAS


260 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

%LIMINACIØN EN ÉRBOLES " ,A OPERACIØN DE ELIMINACIØN EN ÈRBOLES " ES MÈS SIMPLE QUE LA OPERACIØN DE BORRADO EN ÈRBOLES " %STO OCURRE PORQUE LAS CLAVES QUE SE DEBEN ELIMINAR SIEMPRE SE ENCUENTRAN EN LAS PÈGINAS HOJA %N GENERAL SE DEBEN DISTINGUIR LOS SIGUIENTES CASOS 3I AL ELIMINAR UNA CLAVE M QUEDA MAYOR O IGUAL A D ENTONCES TERMINA LA OPERACIØN DE BORRADO ,AS CLAVES DE LAS PÈGINAS RAÓZ O INTERNAS NO SE MODIlCAN POR MÈS QUE SEAN UNA COPIA DE LA CLAVE ELIMINADA EN LAS HOJAS 3E PRESENTA UN EJEMPLO DE ESTE CASO EN LA lGURA 3I AL ELIMINAR UNA CLAVE M QUEDA MENOR A D ENTONCES SE DEBE REALIZAR UNA REDISTRI BUCIØN DE CLAVES TANTO EN EL ÓNDICE COMO EN LAS PÈGINAS HOJAS #UANDO SE CAMBIA LA ESTRUCTURA DEL ÈRBOL SE QUITAN AQUELLAS CLAVES QUE QUEDARON EN LOS NODOS INTERIORES LUEGO DE HABER ELIMINADO SU CORRESPONDIENTE INFORMACIØN EN LOS NODOS HOJA (AY DOS EJEMPLOS QUE ILUSTRAN CØMO FUNCIONA ESTE CASO EN LA lGURA 0UEDE SUCEDER QUE AL ELIMINAR UNA CLAVE Y AL REALIZAR UNA REDISTRIBUCIØN DE LAS MIS MAS LA ALTURA DEL ÈRBOL DISMINUYA EN UNA UNIDAD %N LA lGURA SE PRESENTAN DOS DIAGRAMAS QUE CORRESPONDEN A ESTE CASO

&)'52! %LIMINACIØN DE LA CLAVE DE UN ÉRBOL " DE ORDEN A !NTES DE ELIMINAR LA CLAVE B $ESPUÏS DE ELI MINARLA .OTA !L ELIMINAR LA CLAVE DE LA PÉGINA ! LA PÉGINA RAÓZ " QUE CONTIENE COMO ÓNDICE A LA CLAVE ELIMINADA NO SE MODIlCA

&)'52! %LIMINACIØN DE LAS CLAVES Y DE UN ÉRBOL " DE ORDEN A !NTES DE ELIMI NAR LA CLAVE B $ESPUÏS DE ELIMINARLA C !NTES DE ELIMINAR LA CLAVE D $ESPUÏS DE ELIMINARLA


Ç3#0-&4 .6-5*$".*/04

261

&)'52! CONTINUACIØN .OTAS !L ELIMINAR LA CLAVE DE LA PÉGINA ! M QUEDA MENOR A D POR LO QUE DEBE REALIZARSE UNA REDISTRIBUCIØN DE CLAVES 3E TOMA LA CLAVE QUE SE ENCUENTRA MÉS A LA DERECHA EN LA RAMA IZQUIERDA DE DE LA PÉGINA " 3E COLOCA DICHA CLAVE EN LA PÉGINA ! Y UNA COPIA DE LA MISMA COMO ÓNDICE EN LA PÉGINA # !L ELIMINAR LA CLAVE DE LA PÉGINA ! M QUEDA MENOR A D POR LO QUE DEBE REALIZARSE UNA REDISTRIBUCIØN DE CLAVES #OMO NO SE PUEDE TOMAR UNA CLAVE DE LA PÉGINA " PUESTO QUE M QUEDARÓA MENOR A D ENTONCES SE REALIZA UNA FUSIØN DE LAS PÉGINAS ! Y "

&)'52! %LIMINACIØN DE LA CLAVE EN UN ÉRBOL " DE ORDEN A !NTES DE ELIMINAR LA CLAVE B $ESPUÏS DE ELI MINARLA .OTA !L ELIMINAR LA CLAVE DE LA PÉGINA ! M QUEDA MENOR A D POR LO QUE DEBE REALIZARSE UNA REDISTRIBUCIØN DE CLAVES #OMO NO PUEDE TOMARSE UNA CLAVE DE LA PÉGINA " PUESTO QUE M QUEDARÓA MENOR A D EN TONCES SE REALIZA UNA FUSIØN DE LAS PÉGINAS ! Y " 3IN EMBARGO LUEGO DE ESTA FUSIØN M QUEDA MENOR A D EN LA PÉGINA # POR LO QUE DEBE BAJARSE LA CLAVE DE LA PÉGINA % Y REALIZARSE UNA NUEVA FUSIØN AHORA DE LAS PÉ GINAS # Y % ,A ALTURA DEL ÉRBOL DISMINUYE EN UNA UNIDAD


262 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LAS SIGUIENTES CLAVES DEL ÈRBOL " DE ORDEN DE LA lGURA

&)'52! ­RBOL " DE ORDEN

,OS RESULTADOS PARCIALES QUE ILUSTRAN CØMO FUNCIONA EL PROCEDIMIENTO SE PRESENTAN EN LOS DIAGRAMAS DE LA lGURA

&)'52! %LIMINACIONES EN UN ÉRBOL " DE ORDEN


Ç3#0-&4 .6-5*$".*/04

263

&)'52! CONTINUACIØN

%JEMPLO

6ERIlQUE SI EL ÈRBOL " DE ORDEN DE LA lGURA QUEDA IGUAL AL DE LA lGURA LUEGO DE ELIMINAR LAS SIGUIENTES CLAVES

&)'52! ­RBOL " DE ORDEN LUEGO DE ELIMINAR LAS CLAVES Y


264 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

­RBOLES ,OS ÈRBOLES SON UNA VARIANTE DE LOS ÈRBOLES MULTICAMINOS ²STOS SE CARACTERIZAN PORQUE CADA UNO DE SUS NODOS PUEDE TENER MÈXIMO HIJOS Y TODOS LOS NODOS EXTERNOS HOJAS ESTÈN AL MISMO NIVEL %S DECIR EN ESTOS ÈRBOLES SE DEBE GARANTIZAR EL TAMA×O Y LA ALTURA DE LOS MISMOS #OMO EN EL CASO DE LOS ÈRBOLES MULTICAMINOS ANALIZADOS EN LAS SECCIONES PREVIAS LAS OPERACIONES DE INSERCIØN Y ELIMINACIØN PUEDEN OCASIONAR RESPECTIVAMENTE LA PARTI CIØN O FUSIØN DE LOS NODOS CON EL OBJETO DE MANTENER LAS PROPIEDADES ENUNCIADAS $EBI DO A QUE SE LLEVAN A CABO DE MANERA SIMILAR A LO PRESENTADO SE DEJA AL LECTOR EL DESARROLLO DE LOS CORRESPONDIENTES ALGORITMOS

,! #,!3% ­2"/, ,A CLASE «RBOL TIENE COMO ATRIBUTO A LA RAÓZ DE LA ESTRUCTURA Y COMO MÏTODOS A TODAS LAS OPERACIONES ANALIZADAS SEGÞN EL TIPO DE ÈRBOL QUE SE ESTÏ REPRESENTANDO 'RÈlCAMENTE UNA CLASE «RBOL PARA ÈRBOLES BINARIOS SE PUEDE VER COMO SE MUESTRA EN LA lGURA %N ESTE CASO LOS MÏTODOS PERMITEN LLEVAR A CABO TODAS LAS OPERACIONES PRESENTADAS PREVIAMENTE LOS TRES TIPOS DE RECORRIDOS BÞSQUEDA INSERCIØN Y ELIMINACIØN 3E TIENE ACCESO A LOS MIEMBROS DE UN OBJETO DE LA CLASE «RBOL POR MEDIO DE LA NOTACIØN DE PUNTOS !SUMIENDO QUE LA VARIABLE !2/"* ES UN OBJETO DE LA CLASE «RBOL PREVIAMENTE CREADO SE PUEDE HACER !2/"* 2ECORRE?0REORDEN ARGUMENTO PARA INVOCAR EL MÏTODO QUE VISITA CADA UNO DE LOS NODOS DEL ÈRBOL SIGUIENDO EL RECORRIDO PREORDEN %N ESTE MÏTODO SE REQUIERE COMO ARGUMENTO UN PUNTERO AL NODO A VISITAR LA PRIMERA VEZ ES LA RAÓZ YA QUE ES UN MÏTODO RECURSIVO !2/"* )NSERTA ARGUMENTOS PARA INSERTAR UN NUEVO ELEMENTO EN EL ÈRBOL BINARIO %N ESTE MÏTODO SE REQUIEREN DOS ARGUMENTOS UNO PARA EL NODO A VISITAR LA PRIMERA VEZ ES LA RAÓZ Y OTRO PARA EL DATO A INSERTAR

&)'52! #LASE ­RBOL


&+&3$*$*04

265

▼ %*%2#)#)/3 ­RBOLES EN GENERAL Ê £° ,OS ÈRBOLES SE PUEDEN REPRESENTAR DE DIFERENTES FORMAS $ADO EL SIGUIENTE DIAGRAMA DE 6ENN QUE CORRESPONDE A UNA ESTRUCTURA ÈRBOL CONVIÏRTALO A NOTACIØN DECIMAL DE $EWEY Y NOTACIØN INDENTADA

Ê Ó° $ADA LA SIGUIENTE ESTRUCTURA DEL ÈRBOL REPRESENTADA COMO ANIDACIØN DE PARÏNTESIS ! " % + & # ' , - . $ ( ) / 0 1 2 *

#ALCULE LO SIGUIENTE

A 'RADO DEL ÈRBOL B 'RADO DEL NODO ' C !LTURA DEL ÈRBOL D .ODOS TERMINALES U HOJAS E .ODOS INTERIORES Ê Î° $ADA LA SIGUIENTE ESTRUCTURA DE ÈRBOL REPRESENTADA COMO NOTACIØN DECIMAL DE $EWEY

! " $ % ) *

& ' + - .

# ( , #ALCULE LAS LONGITUDES DE CAMINO INTERNO Y EXTERNO DE DICHO ÈRBOL

Ê {° #ALCULE CUÈL ES EL GRADO DEL NODO 4 SI 4 ES PADRE DEL NODO 0 Y ÏSTE TIENE HERMA NOS


266 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

­RBOLES BINARIOS Ê x° 2EPRESENTE LAS SIGUIENTES EXPRESIONES ALGEBRAICAS UTILIZANDO ÈRBOLES BINARIOS A # 9 > $ 2 + B ! 2 n # , $ + C 8 " # $ > " + 0 > > Ê È° $ADOS LOS SIGUIENTES ÈRBOLES BINARIOS REPRESENTADOS COMO ANIDACIØN DE PARÏNTESIS A + " ! & $ 7 - , / 0 : B

%SCRIBA LOS RECORRIDOS PREORDEN INORDEN Y POSORDEN DE CADA UNO DE ELLOS

Ê Ç° z#UÈL ES EL MÈXIMO NÞMERO DE NODOS DE UN ÈRBOL BINARIO DE ALTURA H Ê n° z#UÈNTOS ÈRBOLES BINARIOS DISTINTOS SE PUEDE TENER CON NODOS z9 CUÈNTOS CON Ê ° z#UÈNTOS ÈRBOLES BINARIOS SIMILARES SE PUEDE TENER CON NODOS z9 CUÈNTOS CON £ä° $ADAS LAS SIGUIENTES SECUENCIAS DE NODOS OBTENIDAS POR LOS RECORRIDOS PREORDEN INORDEN Y POSORDEN DIBUJE EL CORRESPONDIENTE ÈRBOL BINARIO ◗ ◗ ◗

0REORDEN 0 2 ! # ( 4 / )NORDEN ! 2 ( # 0 / 4 0OSTORDEN ! ( # 2 / - 4 0

2EPRESENTACIØN DE ÉRBOLES GENERALES COMO ÉRBOLES BINARIOS ££° $ADOS LOS SIGUIENTES ÈRBOLES GENERALES UNO REPRESENTADO EN FORMA DE GRAFO INCISO A Y OTRO REPRESENTADO COMO ANIDACIØN DE PARÏNTESIS INCISO B CONVIÏRTALOS A ÈRBO LES BINARIOS


&+&3$*$*04 A

B ! " % & + # ' , - 1 2 . $ ( ) / 3 0 £Ó° $ADO EL SIGUIENTE BOSQUE CONVIÏRTALO EN ÈRBOL BINARIO

267


268 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ­RBOLES BINARIOS DE BÞSQUEDA £Î° $ADAS LAS SIGUIENTES CLAVES QUE REPRESENTAN LOS SIGNOS DEL ZODIACO CONSTRUYA UN ÈRBOL BINARIO DE BÞSQUEDA

PISCIS ACUARIO CAPRICORNIO CÈNCER SAGITARIO VIRGO LEO ESCORPIØN LIBRA GÏMINIS ARIES TAURO

£{° $ADO EL SIGUIENTE ÈRBOL BINARIO DE BÞSQUEDA COMPLETE LOS NODOS EN BLANCO DE TAL FORMA QUE NO SE VIOLEN LOS PRINCIPIOS QUE DElNEN JUSTAMENTE UN ÈRBOL BINARIO DE BÞSQUEDA

£x° $ADO EL SIGUIENTE ÈRBOL BINARIO DE BÞSQUEDA ELIMINE LAS CLAVES

£È° 6ERIlQUE SI EL ÈRBOL BINARIO DE BÞSQUEDA DEL DIAGRAMA DEL INCISO A QUEDA IGUAL AL DEL DIAGRAMA DEL INCISO B LUEGO DE ELIMINAR LAS CLAVES


&+&3$*$*04

269

%JERCICIOS DE PROGRAMACIØN EN ÉRBOLES BINARIOS £Ç° %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA CUÈNTOS NODOS TIENE UN ÈRBOL BINARIO £n° %SCRIBA UN PROGRAMA QUE CALCULE E IMPRIMA EL TOTAL DE NODOS INTERNOS QUE TIENE UN ÈRBOL BINARIO £ ° #ONSIDERANDO QUE UN ÈRBOL BINARIO ALMACENA NÞMEROS ENTEROS ENCUENTRE E IMPRIMA EL MÈXIMO VALOR GUARDADO EN EL ÈRBOL Y EL PROMEDIO DE LOS MISMOS Óä° %SCRIBA UN PROCEDIMIENTO QUE REALICE LO SIGUIENTE A )MPRIMA LA INFORMACIØN ALMACENADA EN LAS HOJAS DE UN ÈRBOL BINARIO B )MPRIMA LA INFORMACIØN ALMACENADA EN LOS NODOS INTERNOS DE UN ÈRBOL BINARIO Ó£° $ADO EL SIGUIENTE ÈRBOL BINARIO


270 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 %SCRIBA UN PROGRAMA QUE IMPRIMA LOS NODOS DEL MISMO DE LA SIGUIENTE FORMA ! " $ % & ' ( # ) ÓÓ° $ADO EL ÈRBOL BINARLO DEL EJERCICIO ESCRIBA UN PROGRAMA QUE IMPRIMA LOS NODOS DEL MISMO DE LA SIGUIENTE FORMA ! " # $ % ) & ' ( Óΰ %SCRIBA UN PROCEDIMIENTO QUE VISITE LOS NODOS DE UN ÈRBOL BINARIO DE LA SIGUIENTE FORMA ◗ ◗ ◗

2AÓZ 2AMA DERECHA 2AMA IZQUIERDA

Ó{° %SCRIBA TRES PROCEDIMIENTOS QUE EFECTÞEN LOS RECORRIDOS EN PREORDEN INORDEN Y POS ORDEN EN FORMA ITERATIVA EN LUGAR DE RECURSIVA PARA LO CUAL SE PUEDE APOYAR EN UNA PILA Óx° %SCRIBA UN PROCEDIMIENTO QUE ELIMINE TODAS LAS HOJAS DE UN ÈRBOL BINARIO ÓÈ° %SCRIBA UN PROGRAMA QUE CARGUE LOS NODOS DE UN ÈRBOL BINARIO EN UN ARREGLO UNIDI MENSIONAL #UIDE QUE SE MANTENGA LA RELACIØN PADRE HIJO ENTRE LOS NODOS ÓÇ° %SCRIBA UNA FUNCIØN QUE DETERMINE SI DOS ÈRBOLES BINARIOS SON SIMILARES Ón° %SCRIBA UNA FUNCIØN QUE DETERMINE SI DOS ÈRBOLES BINARIOS SON EQUIVALENTES Ó ° %SCRIBA UN PROCEDIMIENTO QUE INTERCAMBIE LOS SUBÈRBOLES IZQUIERDO Y DERECHO DE UN ÈRBOL BINARIO %S DE OBSERVAR QUE ESTE INTERCAMBIO SE DEBE REALIZAR PARA TODO NODO DEL ÈRBOL %JEMPLO $ADO EL ÈRBOL BINARIO DEL DIAGRAMA DEL INCISO A EL INTERCAMBIO DE RAMAS PRODUCE EL ÈRBOL DEL DIAGRAMA DEL INCISO B


&+&3$*$*04

271

Îä° 3E TIENE ALMACENADA TODA LA ASCENDENCIA DE #ARLOS EN UN ÈRBOL BINARIO 3E HA SEGUI DO EL SIGUIENTE CRITERIO PARA #ARLOS Y TODOS SUS PROGENITORES EN LA RAMA IZQUIERDA SE HA GUARDADO EL NOMBRE DE LA MADRE Y EN LA RAMA DERECHA EL NOMBRE DEL PADRE /BSERVE LA lGURA QUE SE MUESTRA A CONTINUACIØN

%SCRIBA UN SUBPROGRAMA QUE IMPRIMA EL NOMBRE DE TODOS LOS PROGENITORES FEMENINOS DE #ARLOS Σ° 2ETOME EL PROBLEMA ANTERIOR !GREGUE UNA FUNCIØN QUE PUEDA INSERTAR AL ÈRBOL GE NEALØGICO DE #ARLOS TANTO ASCENDIENTES FEMENINOS COMO MASCULINOS ÎÓ° $ElNA LA CLASE «RBOL BINARIO UTILIZANDO ALGÞN LENGUAJE DE PROGRAMACIØN ORIENTADO A OBJETOS TOMANDO COMO BASE PARA PROGRAMAR LOS MÏTODOS LOS ALGORITMOS ESTUDIA DOS EN ESTE CAPÓTULO Îΰ 2ETOME EL PROBLEMA ANTERIOR !GREGUE A LA CLASE UN MÏTODO QUE MUESTRE EL CONTENI DO DE UN NODO Î{° %SCRIBA UN PROGRAMA DE APLICACIØN QUE DADOS DOS OBJETOS DE LA CLASE «RBOL BINARIO PREVIAMENTE DElNIDA IMPRIMA UN MENSAJE ADECUADO SEGÞN LOS MISMOS SEAN EQUI VALENTES O NO $ETERMINE SI REQUIERE DElNIR NUEVOS MÏTODOS A LA CLASE

­RBOLES BALANCEADOS Îx° $ETERMINE SI LOS SIGUIENTES ÈRBOLES BINARIOS SON ÈRBOLES BALANCEADOS


272 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

ÎÈ° #ALCULE CUÈL ES EL MÈXIMO NÞMERO DE NODOS DE UN ÈRBOL BALANCEADO DE ALTURA z#UÈL ES EL MÓNIMO


&+&3$*$*04

273

ÎÇ° )NSERTE LAS CLAVES EN EL ÈRBOL BALANCEADO QUE SE DA A CONTINUACIØN

În° %LIMINE LAS SIGUIENTES CLAVES DEL ÈRBOL BALANCEADO DEL SIGUIENTE DIAGRAMA

Î ° %SCRIBA LAS INSTRUCCIONES NECESARIAS PARA EQUILIBRAR EL ÈRBOL BALANCEADO DEL SIGUIEN TE DIAGRAMA LUEGO DE ELIMINAR LA CLAVE


274 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4 ­RBOLES " Y ÉRBOLES " {ä° z#UÈL ES EL NÞMERO DE CLAVES M QUE PUEDE TENER COMO MÈXIMO UN ÈRBOL " DE ORDEN Y TRES NIVELES z#UÈL EL DE UN ÈRBOL " {£° z#UÈL ES EL NÞMERO MÈS PEQUE×O DE CLAVES QUE AL SER INSERTADAS PROVOCARÓA QUE UN ÈRBOL " DE ORDEN TUVIERA TRES NIVELES {Ó° z#UÈL ES EL NÞMERO MÈS PEQUE×O DE CLAVES QUE AL SER INSERTADAS PROVOCARÓA QUE UN ÈRBOL " DE ORDEN TUVIERA CUATRO NIVELES {ΰ 5N ÈRBOL " DE ORDEN Y TRES NIVELES TIENE CLAVES z#UÈNTAS CLAVES SE PODRÓAN ELIMINAR DEL ÈRBOL SIN QUE ÏSTE TENGA QUE DISMINUIR SU ALTURA {{° 2EALICE LOS TRES EJERCICIOS ANTERIORES PERO AHORA APLICADOS A ÈRBOLES " {x° )NSERTE LAS SIGUIENTES CLAVES A %N UN ÈRBOL " DE ORDEN QUE SE ENCUENTRA VACÓO B %N UN ÈRBOL " DE ORDEN QUE SE ENCUENTRA VACÓO {È° 6ERIlQUE SI EL ÈRBOL " DE ORDEN DEL DIAGRAMA DEL INCISO A QUEDA IGUAL AL DEL DIAGRAMA DEL INCISO B LUEGO DE INSERTAR LAS SIGUIENTES CLAVES


&+&3$*$*04

275

{Ç° 6ERIlQUE SI EL ÈRBOL " DE ORDEN DEL DIAGRAMA DEL INCISO A QUEDA IGUAL AL DEL DIAGRAMA DEL INCISO B LUEGO DE INSERTAR LAS SIGUIENTES CLAVES

{n° 6ERIlQUE SI EL ÈRBOL " DE ORDEN DEL DIAGRAMA DEL INCISO B DEL EJERCICIO QUEDA IGUAL AL ÈRBOL DEL SIGUIENTE DIAGRAMA LUEGO DE ELIMINAR LAS CLAVES

{ ° 6ERIlQUE SI EL ÈRBOL " QUE SE PRESENTA EN EL INCISO A QUEDA IGUAL AL ÈRBOL DEL DIAGRA MA DEL INCISO B LUEGO DE ELIMINAR LAS SIGUIENTES CLAVES


276 >« ÌÕ ÊÈÊ Ê Ê Ç3#0-&4

%JERCICIOS DE PROGRAMACIØN DE ÉRBOLES " Y ÉRBOLES " xä° %SCRIBA LOS SUBPROGRAMAS DE INSERCIØN Y ELIMINACIØN EN ÈRBOLES " x£° %SCRIBA LOS SUBPROGRAMAS DE INSERCIØN Y ELIMINACIØN EN ÈRBOLES "


#APÓTULO

Ç

'2­&)#!3 ).42/$5##)¼. %N EL CAPÓTULO ANTERIOR SE ESTUDIARON LAS ESTRUCTURAS DE DATOS TIPO ÈRBOLES EN DONDE CADA NODO O ELEMENTO PUEDE TENER COMO MÈXIMO UN NODO QUE LE PRECEDE O RAÓZ 3IN EMBARGO EN LA PRÈCTICA EXISTEN PROBLEMAS O SITUACIONES EN QUE LA INFORMACIØN QUE SE DEBE ALMA CENAR NO CORRESPONDE CON UNA ESTRUCTURA DE ESTE TIPO 0ARA ESTOS PROBLEMAS SE NECESITA DE UNA ESTRUCTURA EN LA CUAL SE PUEDAN REPRESENTAR OTRAS RELACIONES ENTRE LOS DATOS O COMPONENTES DE LA MISMA $EDICAREMOS ESTE CAPÓTULO AL ESTUDIO DE LAS GRÈlCAS ,AS GRÈlCAS SON ESTRUCTURAS DE DATOS NO LINEALES DONDE CADA COMPONENTE PUEDE TENER UNO O MÈS PREDECESORES Y SUCESORES %N UNA GRÈlCA SE DISTINGUEN DOS ELEMENTOS LOS NODOS MEJOR CONOCIDOS COMO VÏRTICES Y LOS ARCOS LLAMADOS ARISTAS QUE CONECTAN UN VÏRTICE CON OTRO ,OS VÏRTICES ALMACENAN INFORMACIØN Y LAS ARISTAS REPRESENTAN RELA CIONES ENTRE DICHA INFORMACIØN %STAS ESTRUCTURAS TIENEN APLICACIONES EN DIFERENTES DOMINIOS ENTRE ELLOS TRANSPORTE TERRESTRE AÏREO Y MARÓTIMO REDES DE COMPUTADORAS MAPAS UBICACIØN GEOGRÈlCA DE VARIAS CIUDADES ASIGNACIØN DE TAREAS ETC #ONSIDERE POR EJEMPLO LA GRÈlCA DE LA lGURA DONDE SE OBSERVAN ALGUNAS DE LAS PRINCIPALES CAPITALES SUDAMERICANAS Y LA CONEXIØN ENTRE ELLAS %N ESTE CASO LOS VÏRTICES REPRESENTAN A LAS CIUDADES MIENTRAS QUE LAS ARISTAS A LAS CARRETERAS O ALGÞN OTRO MEDIO DE CONEXIØN ENTRE ELLAS !LGUNAS ARISTAS ESTÈN ETIQUE TADAS EL VALOR QUE APARECE EN ELLAS CONSTITUYE LA DISTANCIA QUE EXISTE ENTRE LAS CIUDADES %N GENERAL UNA ETIQUETA EN LA ARISTA QUE UNE POR EJEMPLO LOS VÏRTICES I Y J SE USA PARA REPRESENTAR EL COSTO DE IR DEL VÏRTICE I AL VÏRTICE J %N LA lGURA SE PRESENTAN DOS EJEMPLOS DE GRÈlCAS ,A PRIMERA A TIENE CUATRO VÏRTICES A B C D Y CINCO ARISTAS A B B C C D D A B D MIENTRAS QUE LA SEGUNDA B TIENE SEIS VÏRTICES A B C D E F Y SEIS ARISTAS A B B C C D D A D E E F

$%&).)#)¼. $% '2­&)#!3 5NA GRÈlCA ' CONSTA DE DOS CONJUNTOS 6 ' Y ! ' %L PRIMERO LO INTEGRAN ELEMENTOS LLAMADOS NODOS O VÏRTICES EL SEGUNDO ARCOS O ARISTAS 0OR LO TANTO PODEMOS DENOTAR UNA GRÈlCA ' COMO


278 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! %JEMPLO DE GRÉlCA

' 6 ! $ONDE 6 REPRESENTA EL CONJUNTO DE VÏRTICES DE ' Y ! EL CONJUNTO DE ARISTAS DE ' 3I NO SE HACE NINGUNA ESPECIlCACIØN LOS CONJUNTOS 6 Y ! SON lNITOS #ADA ARISTA ESTÈ IDENTIlCADA POR UN ÞNICO PAR DE NODOS DEL CONJUNTO DE VÏRTICES QUE PUEDE O NO ESTAR ORDENADO 5NA ARISTA QUE VA DEL VÏRTICE U AL V SE DENOTA MEDIANTE

&)'52! %LEMENTOS DE UNA GRÉlCA


$0/$&1504 #Ç4*$04 %& (3Ç'*$"4

279

LA EXPRESIØN A U V DONDE U Y V SON VÏRTICES ADYACENTES Y LOS EXTREMOS DE A %N ESTE CASO U Y V ESTÈN CONECTADOS POR A Y SE DICE QUE A ES INCIDENTE EN U Y V

#/.#%04/3 "­3)#/3 $% '2­&)#!3 ! CONTINUACIØN SE PRESENTAN ALGUNOS DE LOS CONCEPTOS MÈS IMPORTANTES RELACIONADOS CON LA TEORÓA DE GRÈlCAS ◗ ◗ ◗

'RADO DE UN VÏRTICE %L GRADO DE UN VÏRTICE V ESCRITO COMO GRADO V ES EL NÞMERO DE ARISTAS QUE CONTIENEN A V ES DECIR QUE TIENEN A V COMO EXTREMO 3I EL GRADO V V NO TIENE ARISTAS SE DICE QUE V ES UN NODO AISLADO ,AZO O BUCLE 5N LAZO O BUCLE ES UNA ARISTA QUE CONECTA A UN VÏRTICE CONSIGO MIS MO ES DECIR A U U #AMINO 5N CAMINO 0 DE LONGITUD N SE DElNE COMO LA SECUENCIA DE N VÏRTICES QUE SE DEBE SEGUIR PARA LLEGAR DEL VÏRTICE V ORIGEN AL VÏRTICE VN DESTINO 0 V VN $E TAL MODO QUE VI ES ADYACENTE A VI PARA I N n

◗ ◗ ◗ ◗ ◗ ◗ ◗

◗ ◗

#AMINO CERRADO %L CAMINO 0 ES CERRADO SI EL PRIMERO Y ÞLTIMO VÏRTICES SON IGUA LES ES DECIR SI V VN #AMINO SIMPLE %L CAMINO ES SIMPLE SI TODOS SUS NODOS SON DISTINTOS CON EXCEP CIØN DEL PRIMERO Y DEL ÞLTIMO QUE PUEDEN SER IGUALES ES DECIR 0 ES SIMPLE SI V V SON DISTINTOS #ICLO 5N CICLO ES UN CAMINO SIMPLE CERRADO DE LONGITUD O MAYOR 5N CICLO DE LONGITUD K SE LLAMA K CICLO 'RÈlCA CONEXA 3E DICE QUE UNA GRÈlCA ES CONEXA SI EXISTE UN CAMINO SIMPLE ENTRE CUALESQUIERA DOS DE SUS NODOS 'RÈlCA ÈRBOL 3E DICE QUE UNA GRÈlCA ' ES DEL TIPO ÈRBOL O ÈRBOL LIBRE SI ' ES UNA GRÈlCA CONEXA SIN CICLOS 'RÈlCA COMPLETA 3E DICE QUE UNA GRÈlCA ES COMPLETA SI CADA VÏRTICE V DE ' ES AD YACENTE A TODOS LOS DEMÈS VÏRTICES DE ' 5NA GRÈlCA COMPLETA DE N VÏRTICES TENDRÈ N N n ARISTAS 'RÈlCA ETIQUETADA 3E DICE QUE UNA GRÈlCA ' ESTÈ ETIQUETADA SI SUS ARISTAS TIENEN ASIGNADO UN VALOR %S DECIR SI CADA ARISTA A TIENE UN VALOR NUMÏRICO NO NEGATIVO C A LLAMADO COSTO PESO O LONGITUD DE A ENTONCES ' TIENE PESO O ESTÈ ETIQUETADA %N ESTE CASO CADA CAMINO 0 DE ' TENDRÈ ASOCIADO UN PESO O LONGITUD QUE SERÈ LA SUMA DE LOS PESOS DE LAS ARISTAS QUE FORMAN EL CAMINO 0 -ULTIGRÈlCA 5NA GRÈlCA SE DENOMINA MULTIGRÈlCA SI AL MENOS DOS DE SUS VÏRTICES ESTÈN CONECTADOS ENTRE SÓ POR MEDIO DE DOS ARISTAS %N ESTE CASO LAS ARISTAS RECIBEN EL NOMBRE DE ARISTAS MÞLTIPLES O PARALELAS 3UBGRÈlCA $ADA LA GRÈlCA ' 6 ! 'ʹ 6ʹ !ʹ SE DENOMINA SUBGRÈlCA DE ' SI 6ʹ ≠ φ 6ʹ ⊆ 6 Y !ʹ ⊆ ! DONDE CADA ARISTA DE !ʹ ES INCIDENTE CON VÏRTICES DE 6ʹ


280 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! #ONCEPTOS DE GRÉlCAS

,UEGO DE OBSERVAR LA lGURA SE PUEDEN REALIZAR LAS SIGUIENTES AlRMACIONES A 4ODOS LOS VÏRTICES TIENEN GRADO B 5N CAMINO 0 PARA LLEGAR DEL NODO ! AL $ PUEDE SER ! " # $ /TROS PUEDEN SER ! % $ O ! $ C %L CAMINO ! # $ ! ES UN CAMINO CERRADO EL ! # $ NO LO ES D %L CAMINO ! # $ ! ES UN CAMINO SIMPLE EL ! # " $ # NO LO ES E %L CAMINO ! # $ ! ES UN CICLO F %S UNA GRÈlCA CONEXA PUES TODOS LOS NODOS TIENEN AL MENOS UN CAMINO A OTRO NODO G %S UNA GRÈlCA COMPLETA PUES TODOS LOS NODOS SE CONECTAN CON LOS DEMÈS ,UEGO DE OBSERVAR LA lGURA SE PUEDEN REALIZAR LAS SIGUIENTES AlRMACIONES A %N LA GRÈlCA DE LA lGURA A EXISTE UN LAZO O BUCLE EN EL VÏRTICE D %S DECIR A D D B ,A GRÈlCA DE LA lGURA B ES UNA MULTIGRÈlCA YA QUE HAY DOS ARISTAS QUE UNEN LOS VÏRTICES C Y D %S DECIR LAS ARISTAS A C D Y A C D SON ARISTAS MÞLTIPLES O ARISTAS PARALELAS %N LAS SIGUIENTES SECCIONES SE DESCRIBEN DOS TIPOS DE GRÈlCAS DIRIGIDAS Y NO DIRI GIDAS

'2­&)#!3 $)2)')$!3 %N ESTA SECCIØN SE TRATARÈ UN TIPO ESPECIAL DE GRÈlCAS LLAMADAS GRÈlCAS DIRIGIDAS !DEMÈS DE SU DElNICIØN Y SU REPRESENTACIØN SE PRESENTARÈN LOS PRINCIPALES ALGORITMOS USADOS PARA EL CÈLCULO DE CAMINOS %S IMPORTANTE MENCIONAR QUE EXISTE GRAN CANTIDAD DE PROBLEMAS DE LA VIDA REAL QUE SON MUY DIFÓCILES DE RESOLVER Y QUE SIN EMBARGO SE PODRÓAN RESOLVER FÈCILMENTE SI SE MODELARAN CON GRÈlCAS Y LUEGO SE APLICARAN ALGUNOS MÏTODOS QUE FUNCIONAN SOBRE ELLAS


(3Ç'*$"4 %*3*(*%"4

281

&)'52! /TROS CONCEPTOS DE GRÉlCAS

#ADA VEZ QUE SOLUCIONAMOS UN PROBLEMA EN REALIDAD ESTAMOS ENCONTRANDO LA SO LUCIØN A UN MODELO DEL PROBLEMA 4ODOS LOS MODELOS SON SIMPLIlCACIONES DE ALGUNA FORMA DEL MUNDO REAL DE OTRA MANERA SERÓAN EXTREMADAMENTE COMPLEJOS Y DIFÓCILES DE MANEJAR %L PROCESO DE SOLUCIØN DE UN PROBLEMA CONSTA DE DOS ETAPAS IMPORTANTES EL DESA RROLLO DE UN MODELO DE UN PROBLEMA Y EL USO DEL MODELO PARA GENERAR LA SOLUCIØN ,A SOLUCIØN lNALMENTE ES EN TÏRMINOS DEL MODELO 3I EL NUESTRO TIENE UN ALTO GRADO DE l DELIDAD Y EL MÏTODO QUE EMPLEAMOS ES ADECUADO ENTONCES NUESTRA SOLUCIØN SERÈ BUENA 0OR EL CONTRARIO SI NUESTRO MODELO NO REPRESENTA lDEDIGNAMENTE AL PROBLEMA ENTONCES LOS RESULTADOS NO SERÈN SATISFACTORIOS ,A TEORÓA DE GRÈlCAS PROPORCIONA LOS CONCEPTOS PARA MODELAR MUCHOS PROBLEMAS DE LA VIDA REAL UTILIZANDO JUSTAMENTE GRÈlCAS ,UEGO EXISTEN MUY BUENOS MÏTODOS QUE SE PUEDEN APLICAR A ESTAS GRÈlCAS QUE PROPORCIONARÈN COMO RESULTADO lNAL LA SOLUCIØN DEL PROBLEMA INICIAL ,AS GRÈlCAS DIRIGIDAS SE CARACTERIZAN PORQUE SUS ARISTAS TIENEN ASOCIADA UNA DIREC CIØN ES DECIR SON PARES ORDENADOS ,OS VÏRTICES SE UTILIZAN PARA REPRESENTAR INFORMA CIØN MIENTRAS QUE LAS ARISTAS REPRESENTAN UNA RELACIØN CON DIRECCIØN O JERARQUÓA ENTRE AQUÏLLOS 5NA POSIBLE APLICACIØN DE ESTE TIPO DE GRÈlCAS PUEDE SER LA REPRESENTACIØN DE CIUDADES EN LOS VÏRTICES Y LA DURACIØN DE LOS VUELOS EN LAS ARISTAS ASUMIENDO QUE EL TIEMPO NECESARIO PARA IR DE LA CIUDAD # A LA CIUDAD # NO ES EL MISMO TENIENDO EN CUENTA RAZONES COMO LOS VIENTOS QUE EL REQUERIDO PARA IR DE LA CIUDAD # A LA CIUDAD # ! CONTINUACIØN SE DElNE FORMALMENTE EL CONCEPTO DE GRÈlCA DIRIGIDA 5NA GRÈlCA DIRIGIDA ' TAMBIÏN LLAMADA DIGRÈlCA SE CARACTERIZA PORQUE CADA ARISTA A TIENE UNA DIRECCIØN ASIGNADA ES DECIR CADA ARISTA ESTÈ ASOCIADA A UN PAR ORDE NADO U V DE VÏRTICES DE ' 5NA ARISTA DIRIGIDA A U V SE LLAMA ARCO Y GENERALMENTE SE EXPRESA COMO U → V 0ARA LAS ARISTAS DE LAS DIGRÈlCAS SE APLICA LA SIGUIENTE TERMINO LOGÓA


282 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! 2EPRESENTACIØN DE UNA ARISTA DIRIGIDA

A B C D

A EMPIEZA EN U Y TERMINA EN V U ES EL ORIGEN O PUNTO INICIAL DE A Y V ES EL DESTINO O PUNTO TERMINAL DE A U ES UN PREDECESOR DE V Y V ES UN SUCESOR O VECINO DE U U ES ADYACENTE HACIA V Y V ES ADYACENTE DESDE U

%N LA lGURA SE PRESENTA UN EJEMPLO DE UNA ARISTA DE UNA DIGRÈlCA /BSERVE QUE EL ARCO QUE UNE A LOS DOS VÏRTICES TIENE DIRECCIØN INDICADA POR MEDIO DE LA mECHA

2EPRESENTACIØN DE GRÉlCAS DIRIGIDAS ,AS DIGRÈlCAS SON ESTRUCTURAS DE DATOS ABSTRACTAS POR LO TANTO LOS LENGUAJES DE PROGRA MACIØN NO CUENTAN CON HERRAMIENTAS QUE PERMITAN SU MANEJO 0ARA SU REPRESENTACIØN SE REQUIERE USAR OTRAS ESTRUCTURAS DE DATOS %XISTEN VARIAS OPCIONES PARA REALIZAR ESTO ÞLTI MO LA ELECCIØN DE LA MÈS ADECUADA DEPENDE DEL USO QUE SE LE VAYA A DAR A LA INFORMACIØN ALMACENADA EN LOS VÏRTICES Y EN LAS ARISTAS ,AS REPRESENTACIONES MÈS UTILIZADAS SON LAS MATRICES Y LISTAS DE ADYACENCIA QUE SE DESCRIBEN A CONTINUACIØN %S IMPORTANTE SE×ALAR QUE ALGUNOS LENGUAJES DE PROGRAMACIØN COMO ,)30 O 3#(%-% NO UTILIZAN ARREGLOS BIDIMENSIONALES MATRICES COMO ESTRUCTURAS DE DATOS ESTÈNDAR POR LO TANTO SE USAN ÈRBOLES O LISTAS PARA LA REPRESENTACIØN DE DIGRÈlCAS

-ATRIZ DE ADYACENCIA 5NA MATRIZ DE ADYACENCIA ES UNA MATRIZ BOOLEANA DE ORDEN N DONDE N INDICA EL NÞ MERO DE VÏRTICES DE ' ,OS RENGLONES Y COLUMNAS DE LA MATRIZ REPRESENTAN A LOS VÏRTICES Y SU CONTENIDO LA EXISTENCIA O NO DE ARCOS ENTRE ELLOS 0OR LO TANTO CADA ELEMENTO I J DE LA MATRIZ ALMACENA UN O UN DEPENDIENDO DE SI EXISTE O NO UN ARCO ENTRE LOS VÏRTICES I Y J 0ARA GENERAR LA MATRIZ DE ADYACENCIA CORRESPONDIENTE A UNA DIGRÈlCA SE LE DA UN OR DEN ARBITRARIO A SUS VÏRTICES Y SE ASIGNA A LOS RENGLONES Y A LAS COLUMNAS DE UNA MATRIZ EL MISMO ORDEN 5N ELEMENTO DE LA MATRIZ SERÈ SI LOS VÏRTICES CORRESPONDIENTES AL RENGLØN Y A LA COLUMNA ESTÈN UNIDOS POR UNA ARISTA SON ADYACENTES Y EN CASO CONTRARIO 3I ' 6 ! Y 6 [L N] LA MATRIZ DE ADYACENCIA - QUE REPRESENTA A ' TIENE N § N ELEMENTOS DONDE -;I J= CON ≤ I ≤ N Y ≤ J ≤ N ES SØLO SI EXISTE UN ARCO QUE VAYA DEL NODO I AL J Y ES EN OTRO CASO 5NA VENTAJA DE LAS MATRICES DE ADYACENCIA ES QUE EL TIEMPO DE ACCESO AL ELEMENTO REQUERIDO ES INDEPENDIENTE DEL TAMA×O DE 6 Y ! %L TIEMPO DE BÞSQUEDA ES DEL ORDEN DE N 3IN EMBARGO SU PRINCIPAL DESVENTAJA ES QUE REQUIERE UN ESPACIO DE ALMACENA MIENTO DE N POSICIONES AUNQUE EL NÞMERO DE ARCOS DE ' NO SOBREPASE ESE NÞMERO ,A MATRIZ DE ADYACENCIA ES ÞTIL EN LOS ALGORITMOS DISE×ADOS PARA CONOCER SI EXISTE UNA ARISTA ENTRE DOS NODOS DADOS %N LAS lGURAS Y SE PRESENTAN DOS EJEMPLOS DE GRÈlCAS DIRIGIDAS CON SUS RESPECTIVAS REPRESENTACIONES POR MEDIO DE MATRICES DE ADYACENCIA


(3Ç'*$"4 %*3*(*%"4

283

1, ÊÇ°È %JEMPLO DE REPRESENTACIØN DE GRÉlCAS A 'RÉlCA DIRI GIDA B Ê-ATRIZ DE ADYACEN CIA DE LA GRÉlCA DIRIGIDA

5NA VARIANTE DE LA MATRIZ DE ADYACENCIA ES LA MATRIZ DE ADYACENCIA ETIQUETADA EN DONDE -;I J= REPRESENTA LA ETIQUETA O COSTO ASOCIADO AL ARCO 3I LA ARISTA NO EXISTE EN TONCES EL VALOR DE -;I J= SERÈ CERO %STAS MATRICES TAMBIÏN SE DENOMINAN MATRICES DE COSTOS O DE DISTANCIAS %N LA lGURA SE PRESENTA UN EJEMPLO DE ESTE CASO #OMO YA SE MENCIONØ LA PRINCIPAL DESVENTAJA DE LAS MATRICES DE ADYACENCIA ES EL ESPACIO QUE REQUIEREN PARA ALMACENAR LA INFORMACIØN 5NA ALTERNATIVA PARA OPTIMIZAR EL USO DE LA MEMORIA ES POR MEDIO DE LAS LISTAS DE ADYACENCIA

1, ÊÇ°Ç %JEMPLO DE REPRESENTACIØN DE GRÉlCAS A 'RÉlCA DIRIGIDA CON COSTOS B Ê-ATRIZ DE ADYACENCIA ETIQUETADA O CON COSTOS


284 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! %JEMPLO DE REPRESENTACIØN DE GRÉlCAS A $IGRÉlCA B ,ISTA DE ADYACENCIA DE LA DIGRÉlCA

,ISTA DE ADYACENCIA 5NA LISTA DE ADYACENCIA PARA UN VÏRTICE A ES UNA LISTA ORDENADA DE TODOS LOS VÏRTICES AD YACENTES DE A 0OR LO TANTO UNA LISTA DE ADYACENCIA PARA REPRESENTAR UNA GRÈlCA DIRIGIDA ESTARÈ FORMADA POR TANTAS LISTAS COMO VÏRTICES TENGA ' 0ARA GUARDAR LOS VÏRTICES DE ' SE PUEDE UTILIZAR OTRA LISTA O UN ARREGLO %N ESTE LIBRO SE USA UN ARREGLO AL QUE LLAMAMOS (%!$ DONDE (%!$;I= ES UN APUNTADOR A LA LISTA DE VÏRTICES ADYACENTES AL VÏRTICE I ,A LISTA DE ADYACENCIA REQUIERE UN ESPACIO DE ALMACENAMIENTO PROPORCIONAL A LA SUMA DEL NÞMERO DE VÏRTICES MÈS EL NÞMERO DE ARCOS %STE TIPO DE REPRESENTACIØN SE RECOMIENDA CUANDO EL NÞMERO DE ARISTAS ES MENOR A N %L USO DE LA LISTA DE ADYACENCIA PERMITE AHORRAR ESPACIO DE ALMACENAMIENTO 3IN EMBARGO USAR UNA LISTA EN LUGAR DE UNA MATRIZ TIENE LA DESVENTAJA DE QUE EL TIEMPO DE BÞSQUEDA DE LAS ARISTAS PUEDE SER MAYOR YA QUE SE PIERDE EL ACCESO DIRECTO QUE PERMITE LA MATRIZ ,A OPERACIØN DE BÞSQUEDA SERÈ DEL ORDEN DE / N &)'52! %JEMPLO DE APLICACIØN DEL ALGORITMO DE $IJKSTRA A $IGRÉlCA B -ATRIZ DE DISTANCIAS DE LA DIGRÉlCA


(3Ç'*$"4 %*3*(*%"4

285

%N LA lGURA SE OBSERVA QUE EN EL ARREGLO EN LA POSICIØN CORRESPONDIENTE A CADA UNO DE LOS CUATRO VÏRTICES SE GUARDØ UN PUNTERO A LA LISTA DE ADYACENCIA DE LOS RESPEC TIVOS VÏRTICES !SÓ EN LA POSICIØN DEL NODO A HAY UN PUNTERO A LA LISTA FORMADA POR LOS VÏRTICES B Y C AMBOS ADYACENTES DESDE A

/BTENCIØN DE CAMINOS DENTRO DE UNA DIGRÉlCA !L BUSCAR UNA ESTRUCTURA DE DATOS QUE SE AJUSTE A LAS CARACTERÓSTICAS DE UN PROBLEMA SE BUSCA TAMBIÏN QUE SOBRE DICHA ESTRUCTURA SE PUEDAN REALIZAR OPERACIONES QUE FACILITEN EL MANEJO DE LA INFORMACIØN ALMACENADA EN ELLA 0ARA EL CASO DE LAS GRÈlCAS DIRIGIDAS GENERALMENTE RESULTA DE INTERÏS ENCONTRAR LOS CAMINOS DIRECTOS O INDIRECTOS ENTRE SUS VÏRTICES ! SU VEZ AL TRABAJAR CON DIGRÈlCAS ETIQUETADAS SE REQUIERE ENCONTRAR EL CAMINO MÈS CORTO ENTRE DOS VÏRTICES DADOS O ENTRE TODOS SUS VÏRTICES %S DECIR INTERESAN AQUELLOS CAMINOS QUE NOS PERMITAN LLEGAR DESDE UN VÏRTICE ORIGEN A UN VÏRTICE DESTINO RECORRIENDO LA MENOR DISTANCIA O CON EL MENOR COSTO ,OS ALGORITMOS MÈS USADOS PARA ESTE lN SON $IJKSTRA &LOYD Y 7ARSHALL ,OS TRES ALGORITMOS UTILIZAN UNA MATRIZ DE ADYACENCIA ETIQUETADA DONDE -;I J= SI I J -;I J= ∞ SI NO EXISTE UN CAMINO DE I A J DONDE I ≠ J -;I J= COSTO DE IR DEL VÏRTICE I AL VÏRTICE J SI EXISTE A I J ! PARTIR DE ESTE PUNTO A LA MATRIZ DE ADYACENCIA ETIQUETADA LA LLAMAREMOS MATRIZ DE DISTANCIAS O MATRIZ DE COSTOS %N LAS SIGUIENTES SECCIONES SE PRESENTARÈN LOS ALGO RITMOS MENCIONADOS

!LGORITMO DE $IJKSTRA %L ALGORITMO DE $IJKSTRA ENCUENTRA EL CAMINO MÈS CORTO DE UN VÏRTICE ELEGIDO A CUAL QUIER OTRO VÏRTICE DE LA DIGRÈlCA DONDE LA LONGITUD DE UN CAMINO ES LA SUMA DE LOS PESOS DE LAS ARISTAS QUE LO FORMAN ,AS ARISTAS DEBEN TENER UN PESO NO NEGATIVO 5NA POSIBLE APLICACIØN DE ESTE ALGORITMO SE PRESENTA CUANDO SE DESEA ENCONTRAR LA RUTA MÈS CORTA ENTRE DOS CIUDADES CADA VÏRTICE REPRESENTA UNA CIUDAD Y EL PESO DE LAS ARISTAS INDICA LA DURACIØN DE LOS VUELOS ! CONTINUACIØN SE DESCRIBEN LOS PRINCIPALES ELEMENTOS QUE SE CONSIDERAN CUANDO SE APLICA EL ALGORITMO ◗ ◗

3 ES UN ARREGLO FORMADO POR LOS VÏRTICES DE LOS CUALES YA CONOCEMOS LA DISTANCIA MÓNIMA ENTRE ELLOS Y EL ORIGEN %STE ARREGLO INICIALMENTE SØLO ALMACENA AL NODO ORIGEN $ ES UN ARREGLO FORMADO POR LA DISTANCIA DEL VÏRTICE ORIGEN A CADA UNO DE LOS OTROS %S DECIR $;I= ALMACENA LA MENOR DISTANCIA O COSTO ENTRE EL ORIGEN Y EL VÏRTICE I ! ESTE CAMINO SE LE CONOCE COMO ESPECIAL %STE ARREGLO SE FORMA EN CADA PASO DEL AL GORITMO !L TERMINAR EL ALGORITMO $ CONTENDRÈ LA DISTANCIA MÓNIMA ENTRE EL ORIGEN Y CADA UNO DE LOS OTROS VÏRTICES DE LA GRÈlCA


286 >ยซย ร ร ย ย ร ร ร ร ร (3ร '*$"4 โ

- ES UNA MATRIZ DE DISTANCIAS DE N ยง N ELEMENTOS TAL QUE -;I J= ALMACENA LA DISTAN CIA O COSTO ENTRE LOS Vร RTICES I Y J SI ENTRE AMBOS EXISTE UNA ARISTA %N CASO CONTRARIO -;I J= SERร UN VALOR MUY GRANDE โ %L ALGORITMO DE $IJKSTRA ES EL SIGUIENTE

!LGORITMO $IJKSTRA $IJKSTRA . [%STE ALGORITMO ENCUENTRA LA DISTANCIA Mร NIMA ENTRE UN Vร RTICE ORIGEN Y CADA UNO DE LOS OTROS Vร RTICES DE UNA GRร lCA DIRIGIDA 3E CONSIDERA AL Vร RTICE COMO EL Vร RTICE ORIGEN . ES EL Nร MERO DE Vร RTICES DE LA GRร lCA DIRIGIDA 3 Y $ SON ARREGLOS DE . ELEMENTOS Y - ES UNA MATRIZ DE . ยง . ELEMENTOS SEGร N LO DESCRITO ANTERIORMENTE] !GREGAR EL Vร RTICE A 3 2EPETIR CON I DESDE HASTA . %LEGIR UN Vร RTICE V EN 6 n 3 TAL QUE $;V= SEA EL Mร NIMO VALOR !GREGAR V A 3 2EPETIR PARA CADA Vร RTICE W EN 6 n 3 (ACER $;W= โ Mร NIMO $;W= $;V= -;V W= [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]

$ADA UNA GRร lCA ' 6 ! DONDE 6 ESTร FORMADO POR N Vร RTICES SI SE USA UNA MATRIZ DE DISTANCIAS PARA REPRESENTARLA CADA CICLO TOMA UN TIEMPO DE / N Y SON EJECU TADOS N n VECES POR LO TANTO EL ALGORITMO ES DEL ORDEN DE / N 3I ! ES MENOR QUE N ENTONCES ES Mร S ElCIENTE USAR UNA LISTA DE ADYACENCIA PARA REPRESENTAR LA DIGRร lCA %N ESTE CASO EL TIEMPO DE RECORRIDO SERร DEL ORDEN DE / LOG N Y EL DE LOS CICLOS SERร DEL ORDEN DE / ! LOG N

%JEMPLO

! CONTINUACIร N SE PRESENTA UN EJEMPLO DE APLICACIร N DEL ALGORITMO DE $IJKSTRA PARA EN CONTRAR EL CAMINO Mร S CORTO DESDE UNO DE LOS Vร RTICES A CUALQUIERA DE LOS OTROS Vร RTICES DE UNA GRร lCA DIRIGIDA FORMADA POR CINCO Vร RTICES . %N LA TABLA SE PRESENTA EL SEGUIMIENTO DEL ALGORITMO PARA LA DIGRร lCA DE LA lGU RA ,A PRIMERA COLUMNA ES PARA 3 ARREGLO EN EL CUAL SE ALMACENA EN CADA PASO DEL ALGORITMO EL Vร RTICE SELECCIONADO ,AS COLUMNAS ETIQUETADAS CON $;A= $;B= $;E= SE UTILIZAN PARA MOSTRAR EL VALOR Mร NIMO DEL CAMINO ENCONTRADO ENTRE EL Vร RTICE ORIGEN Y

4!",! !PLICACIร N DEL ALGORITMO DE $IJKSTRA

3

$;A=

$;B=

$;C=

$;D=

$;E=

#OMENTARIO

[A]

%STADO INICIAL

[A B]

3E ENCONTRร A B D Y A B E

[A B E]

3E ENCONTRร A B E D

[A B E D]

.O HAY CAMBIOS

[A B E D C]

%STADO lNAL A B E D C


(3Ç'*$"4 %*3*(*%"4

287

&)'52! %JEMPLO DE APLICACIØN DEL ALGORITMO DE $IJKSTRA A $IGRÉlCA B -ATRIZ DE DISTANCIAS DE LA DIGRÉlCA

LOS VÏRTICES A B E RESPECTIVAMENTE 0OR ÞLTIMO SE TIENE UNA COLUMNA EN LA CUAL SE COMENTA CADA PASO DEL ALGORITMO ◗ ◗ ◗ ◗

%JEMPLO

3E ELIGIØ EL VÏRTICE A COMO VÏRTICE ORIGEN 5NA VEZ QUE EL VÏRTICE ELEGIDO SE AGREGA A 3 SU VALOR CORRESPONDIENTE EN $ NO CAM BIA ,OS VALORES lNALES DE $ INDICAN LA DISTANCIA MÓNIMA ENTRE EL VÏRTICE ORIGEN Y CADA UNO DE LOS OTROS VÏRTICES 0OR EJEMPLO $;D= REPRESENTA EL COSTO DE IR DEL VÏRTICE A AL D PASANDO POR B Y E $;E= ES EL COSTO DE IR DEL VÏRTICE A AL E PASANDO POR B ,A SOMBRA SE UTILIZA PARA INDICAR EN CADA PASO CUÈL ES EL MÓNIMO VALOR EN $ LO QUE IMPLICA LA ELECCIØN DEL VÏRTICE CORRESPONDIENTE PARA SER INCLUIDO EN 3

%N LA lGURA SE PRESENTA OTRO EJEMPLO DE APLICACIØN DEL ALGORITMO DE $IJKSTRA PARA ENCONTRAR EL CAMINO MÈS CORTO DESDE UNO DE LOS VÏRTICES A CUALQUIERA DE LOS OTROS VÏRTI CES DE UNA GRÈlCA DIRIGIDA CON .


288 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 4!",! !PLICACIØN DEL ALGORITMO DE $IJKSTRA

3

$;A=

$;B=

$;C=

$;D=

$;E=

$;F=

$;G=

$;H=

#OMENTARIO

[A]

%STADO INICIAL

[A B]

3E ENCONTRØ A B C Y A B E

[A B D]

3E ENCONTRØ A B D G

[A B D C]

3E ENCONTRØ A B C F

[A B D C G]

3E ENCONTRØ A D G H

[A B D C G E]

3E ENCONTRØ A B E F Y A B E H

[A B D C G E H]

.O HAY CAMBIO

[A B D C G E H F]

%STADO lNAL

%N LA TABLA SE PRESENTA EL SEGUIMIENTO DEL ALGORITMO PARA LA DIGRÈlCA DE LA lGURA ,A PRIMERA COLUMNA ES PARA 3 ARREGLO EN EL CUAL SE ALMACENA EN CADA PASO DEL ALGORITMO EL VÏRTICE SELECCIONADO ,AS COLUMNAS ETIQUETADAS CON $;A= $;B= $;H= SE UTILIZAN PARA MOSTRAR EL VALOR MÓNIMO DEL CAMINO ENCONTRADO ENTRE EL VÏRTICE ORIGEN Y CADA UNO DE LOS OTROS VÏRTICES 0OR ÞLTIMO SE TIENE UNA COLUMNA EN LA CUAL SE COMENTA CADA PASO DEL ALGORITMO ◗ ◗ ◗ ◗

3E ELIGIØ EL VÏRTICE A COMO ORIGEN 5NA VEZ QUE EL VÏRTICE ELEGIDO SE AGREGA A 3 SU VALOR CORRESPONDIENTE EN $ NO CAM BIA ,OS VALORES lNALES DE $ INDICAN LA DISTANCIA MÓNIMA ENTRE EL VÏRTICE ORIGEN Y CADA UNO DE LOS OTROS VÏRTICES 0OR EJEMPLO $;F= REPRESENTA EL COSTO DE IR DEL VÏRTICE A AL VÏRTICE F PASANDO POR LOS VÏRTICES B Y E ,A SOMBRA SE UTILIZA PARA INDICAR EN CADA PASO CUÈL ES EL MÓNIMO VALOR EN $ LO QUE IMPLICA LA ELECCIØN DEL VÏRTICE CORRESPONDIENTE PARA SER INCLUIDO EN 3

!LGORITMO DE &LOYD %L ALGORITMO DE &LOYD ENCUENTRA EL CAMINO MÈS CORTO ENTRE TODOS LOS VÏRTICES DE LA DIGRÈlCA 3EA LA GRÈlCA DIRIGIDA ' 6 ! DONDE CADA ARCO U → V TIENE ASOCIADO UN PESO %L ALGORITMO DE &LOYD PERMITIRÈ ENCONTRAR EL CAMINO MÈS CORTO ENTRE CADA PAR ORDENADO U Y V ,A MATRIZ DE DISTANCIAS SIRVE COMO PUNTO DE PARTIDA PARA ESTE ALGORITMO 3E REALIZAN K ITERACIONES SOBRE LA MATRIZ BUSCANDO EL CAMINO MÈS CORTO POR LO TANTO EN LA K ÏSIMA ITERACIØN -;I J= TENDRÈ EL CAMINO DE MENOR COSTO PARA LLEGAR DE I A J PASANDO POR UN NÞMERO DE VÏRTICES MENOR A K EL CUAL SE CALCULARÈ SEGÞN LA SIGUIENTE EXPRESIØN


(3Ç'*$"4 %*3*(*%"4

289

- K ; I J = « - K ; I J = MÓN ¬ ­® - K ; I K = - K ; K J = 3E ELEGIRÈ EL CAMINO MÈS CORTO ENTRE EL VALOR OBTENIDO EN LA ITERACIØN K n Y EL QUE RESULTA DE PASAR POR EL VÏRTICE K %N EL ALGORITMO SE USA LA MATRIZ DE COSTOS - DONDE -;I J= SERÈ IGUAL AL COSTO DE IR DE I A J A UN VALOR MUY GRANDE ∞ SI NO EXISTE CAMINO DE I A J O A CERO SI I J !LGORITMO &LOYD

&LOYD . [%STE ALGORITMO ENCUENTRA LA DISTANCIA MÓNIMA ENTRE TODOS LOS VÏRTICES DE LA GRÈlCA DIRIGIDA . ES EL NÞMERO DE VÏRTICES DE LA GRÈlCA DIRIGIDA - ES UNA MATRIZ DE . . ELEMENTOS Y SE INICIA CON LOS COSTOS DE LA DIGRÈlCA K I J SON VARIABLES ENTERAS] 2EPETIR CON + DESDE HASTA . 2EPETIR CON ) DESDE HASTA . 2EPETIR CON * DESDE HASTA . 3I -)+ -+* -)* ENTONCES (ACER -)* ← -)+ -+* [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]

0ARA TODO VÏRTICE DE LA DIGRÈlCA SE PRUEBA SI EL CAMINO MÈS CORTO PARA IR DESDE DICHO VÏRTICE A LOS OTROS ES A TRAVÏS DE UN VÏRTICE INTERMEDIO K %N CASO AlRMATIVO EL COSTO QUE TIENE ASOCIADO SE REEMPLAZA POR LA SUMA DE LOS COSTOS DE IR DEL VÏRTICE ORIGEN AL INTERMEDIO Y DEL INTERMEDIO AL DESTINO %N OTRO CASO EL VALOR DE -;I J= NO SE MODIlCA 5NA VEZ PROBADOS TODOS LOS VÏRTICES DE LA DIGRÈlCA COMO NODOS INTERMEDIOS LA MATRIZ RESULTANTE ALMACENA LA MENOR DISTANCIA ENTRE CADA PAR DE NODOS ,A COMPLEJIDAD DEL ALGORITMO ES DEL ORDEN DE / . YA QUE SE UTILIZAN TRES CICLOS ANIDADOS DE ORDEN .

%JEMPLO

! CONTINUACIØN SE PRESENTA UN EJEMPLO DE APLICACIØN DEL ALGORITMO DE &LOYD PARA EN CONTRAR LA MÓNIMA DISTANCIA ENTRE TODOS LOS VÏRTICES DE UNA GRÈlCA DIRIGIDA ,A MATRIZ DE DISTANCIAS ES LA CORRESPONDIENTE A LA DIGRÈlCA DEL EJEMPLO %N LA lGURA SE PRESENTAN LOS DIFERENTES ESTADOS DE LA MATRIZ DE DISTANCIAS DE LA DIGRÈlCA DADA OBTENIDOS A PARTIR DE LA APLICACIØN DEL ALGORITMO !SÓ LA MATRIZ MOSTRADA EN EL INCISO A ES LA MATRIZ DE DISTANCIAS DE LA DIGRÈlCA DADA ESTADO INICIAL ,A MATRIZ DE COSTOS MOSTRADA EN EL INCISO B ES LA OBTENIDA USANDO EL VÏRTICE B COMO VÏRTICE INTERMEDIO %N ESE PASO + SE ENCONTRARON LOS SIGUIENTES CAMINOS A B D CON DISTANCIA IGUAL A A B E CON DISTANCIA IGUAL A Y C B E CON DISTANCIA IGUAL A ,A lGURA DE C CORRESPONDE A LA


290 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 MATRIZ DE DISTANCIAS RESULTADO DE USAR EL VÏRTICE C COMO VÏRTICE INTERMEDIO %N ESE PASO + SE ENCONTRØ EL SIGUIENTE CAMINO E C B CON DISTANCIA IGUAL A &INALMENTE LA lGURA PRESENTADA EN EL INCISO D MUESTRA LA MATRIZ OBTENIDA DE DISTANCIAS MEDIANTE EL VÏRTICE E COMO VÏRTICE INTERMEDIO 0ARA + SE ENCONTRARON LOS SIGUIENTES CAMINOS A E D CON DISTANCIA IGUAL A B E C CON DISTANCIA IGUAL A Y B E D CON DISTANCIA IGUAL A %L ESTADO lNAL DE ESTA MATRIZ ALMACENA LAS DISTANCIAS MÓNIMAS ENTRE CADA UNO DE LOS VÏRTICES DE LA DIGRÈlCA DADA 3I ADEMÈS DE OBTENER LA MENOR DISTANCIA ENTRE TODOS LOS VÏRTICES DE LA GRÈlCA DIRIGI DA SE REQUIERE CONOCER LA TRAYECTORIA ENCONTRADA PARA CADA VÏRTICE SE DEBERÈ IR GUARDAN DO DICHA TRAYECTORIA LOS VÏRTICES INTERMEDIOS %STA VARIANTE DEL ALGORITMO DE &LOYD UTILIZA UN ARREGLO AUXILIAR 4 DE . . ELEMENTOS DONDE 4;I J= SERÈ IGUAL A K SI K ES UN NODO INTERMEDIO ENTRE I Y J

&)'52! %JEMPLO DE APLICACIØN DEL ALGORITMO DE &LOYD


(3Ç'*$"4 %*3*(*%"4

291

!LGORITMO &LOYD?GUARDA?VÏRTICES

&LOYD?GUARDA?VÏRTICES . [%STE ALGORITMO ENCUENTRA LA DISTANCIA MÓNIMA ENTRE TODOS LOS VÏRTICES DE LA GRÈlCA DIRIGIDA !DEMÈS ALMACENA EL CONJUNTO DE NODOS INTERMEDIOS QUE FORMAN LAS TRAYECTORIAS ENCONTRADAS . ES EL NÞMERO DE VÏRTICES DE LA GRÈlCA DIRIGIDA - ES UNA MATRIZ DE . . ELEMENTOS Y SE INICIA CON LOS COSTOS DE LA DIGRÈlCA 4 ES UNA MATRIZ DE . . ELEMENTOS Y ALMACENARÈ EN CADA ELEMENTO I J EL VÏRTICE INTERMEDIO USADO PARA IR DE I A J + ) * SON VARIABLES ENTERAS] 2EPETIR CON + DESDE HASTA . 2EPETIR CON ) DESDE HASTA . 2EPETIR CON * DESDE HASTA . 3I -)+ -+* -IJ ENTONCES (ACER -)* ← -)+ -+* Y 4)* ← + [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]

%JEMPLO

! CONTINUACIØN SE PRESENTA UN EJEMPLO DE APLICACIØN DEL ALGORITMO DE &LOYD?GUARDA? VÏRTICES #OMO RESULTADO SE OBTIENE UNA MATRIZ CON LAS DISTANCIAS MÓNIMAS ENTRE TODOS LOS VÏRTICES DE UNA GRÈlCA DIRIGIDA Y LOS VÏRTICES INTERMEDIOS UTILIZADOS PARA ALCANZAR ESAS DISTANCIAS ,A MATRIZ DE DISTANCIAS ES LA CORRESPONDIENTE A LA DIGRÈlCA DEL EJEMPLO #ON RESPECTO A LA OBTENCIØN DE LA MATRIZ DE DISTANCIAS MÓNIMAS EL ALGORITMO GENERA UNA MATRIZ IGUAL A LA PRESENTADA EN LA lGURA DONDE SE OBSERVA CØMO SE VAN ASIG NANDO VALORES A LA MATRIZ 4 A MEDIDA QUE SE VAN ENCONTRANDO VÏRTICES INTERMEDIOS QUE REDUCEN LA DISTANCIA ENTRE DOS VÏRTICES %N EL INCISO A SE MUESTRA EL ESTADO INICIAL DE 4 %N ESTE CASO SE ASIGNØ UN A CADA COMPONENTE DEL ARREGLO %N LA lGURA DEL INCISO B SE PRESENTA EL ARREGLO UNA VEZ REGIS TRADO B PARA + COMO VÏRTICE INTERMEDIO ENTRE A Y D A Y E C Y E %N C SE PUEDE OBSERVAR 4 LUEGO DE ENCONTRAR AL NODO C PARA + COMO INTERMEDIO ENTRE E Y B 0OR ÞLTIMO SE LLEGA AL ESTADO lNAL DE 4 INCISO D LUEGO DE ENCONTRAR A E PARA + COMO VÏRTICE INTERMEDIO ENTRE LOS VÏRTICES A Y D B Y C B Y D


292 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! %JEMPLO DE APLICACIØN DEL ALGORITMO &LOYD?GUARDA?VÏRTICES°

!LGORITMO DE 7ARSHALL %L ALGORITMO DE 7ARSHALL ENCUENTRA SI ES POSIBLE UN CAMINO ENTRE CADA UNO DE LOS VÏR TICES DE LA GRÈlCA DIRIGIDA %S DECIR LA SOLUCIØN ENCONTRADA POR EL ALGORITMO NO PRESENTA LAS DISTANCIAS ENTRE LOS VÏRTICES SØLO MUESTRA SI HAY O NO CAMINO ENTRE ELLOS %L ALGORITMO DE 7ARSHALL SE BASA EN UN CONCEPTO LLAMADO CERRADURA TRANSITIVA DE LA MATRIZ DE ADYACENCIA 3EA LA GRÈlCA DIRIGIDA ' 6 ! Y SU MATRIZ DE ADYACENCIA - DONDE -;I J= SI HAY UN ARCO DE I A J Y SI NO LO HAY ,A CERRADURA TRANSITIVA DE - ES LA MATRIZ # TAL QUE #;I J= SI HAY UN CAMINO DE LONGITUD MAYOR O IGUAL QUE DE I A J O EN OTRO CASO 0ARA GENERAR LA MATRIZ # SE ESTABLECE QUE EXISTE UN CAMINO DEL VÏRTICE I AL J QUE NO PASA POR UN NÞMERO DE VÏRTICES MAYOR QUE K SI A 9A EXISTE UN CAMINO DE I A J QUE NO PASA POR UN NÞMERO DE VÏRTICES MAYOR QUE K n B (AY UN CAMINO DE I A K QUE NO PASA POR UN NÞMERO DE VÏRTICES MAYOR QUE K n Y HAY UN CAMINO DE K A J QUE NO PASA POR UN NÞMERO DE VÏRTICES MAYOR QUE K n


(3Ç'*$"4 /0 %*3*(*%"4

293

!LGORITMO 7ARSHALL 7ARSHALL . [%STE ALGORITMO ENCUENTRA SI ES POSIBLE UN CAMINO DE LONGITUD MAYOR O IGUAL A UNO ENTRE CADA UNO DE LOS VÏRTICES DE LA GRÈlCA DIRIGIDA . ES EL NÞMERO DE VÏRTICES DE LA DIGRÈlCA # ES UNA MATRIZ DE . . ELEMENTOS )NICIALMENTE ES IGUAL A - !L TERMINAR EL ALGORITMO CONTENDRÈ LA CERRADURA TRANSITIVA DE - K ) * SON VARIABLES ENTERAS] 2EPETIR CON + DESDE HASTA . 2EPETIR CON ) DESDE HASTA . 2EPETIR CON * DESDE HASTA . 3I !;) *= ENTONCES !;) *= ← !;) += Y !;+ *= [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]

%JEMPLO

3E PRESENTA UN EJEMPLO DE APLICACIØN DEL ALGORITMO DE 7ARSHALL PARA DETERMINAR SI EXISTE O NO UN CAMINO ENTRE TODOS LOS VÏRTICES DE UNA GRÈlCA DIRIGIDA 3E TOMA LA DIGRÈlCA DEL EJEMPLO LA MATRIZ # QUE CONTENDRÈ LA CERRADURA TRANSITIVA AL lNALIZAR EL ALGORITMO SE INICIA CON LOS VALORES DE LA MATRIZ DE ADYACENCIA CORRESPONDIENTE %N LA lGURA SE PRESENTAN LOS DIFERENTES ESTADOS DE # OBTENIDOS A PARTIR DE LA APLICACIØN DEL ALGORITMO %N LA lGURA DEL INCISO A SE MUESTRA EL ESTADO INICIAL DE LA MATRIZ 0OR SU PARTE EN B SE PRESENTA LA CORRESPONDIENTE A LA MATRIZ # RESULTADO DE USAR EL VÏR TICE B COMO VÏRTICE INTERMEDIO 3E ENCONTRARON LOS SIGUIENTES CAMINOS A B D A B E Y C B E ,A lGURA DEL INCISO C CORRESPONDE A LA MATRIZ # OBTENIDA POR MEDIO DEL VÏRTICE C COMO VÏRTICE INTERMEDIO 3E FORMARON LOS CAMINOS E C B Y E C E &INALMENTE EN D SE PRESENTA A LA MATRIZ # LUEGO DE USAR EL VÏRTICE E COMO VÏRTICE INTERMEDIO 3E OBTUVIERON LOS CAMINOS A E A B E B B E C Y C E C

'2­&)#!3 ./ $)2)')$!3 %N ESTA SECCIØN SE PRESENTARÈ EL CONCEPTO DE GRÈlCAS NO DIRIGIDAS O SIMPLEMENTE GRÈ lCAS CUYA CARACTERÓSTICA PRINCIPAL ES QUE SUS ARISTAS SON PARES NO ORDENADOS DE VÏRTICES %S DECIR SI EXISTE UN CAMINO DEL VÏRTICE I AL J SERÈ EXACTAMENTE EL MISMO CAMINO DEL VÏRTICE J AL I %STAS GRÈlCAS SE UTILIZAN PARA MODELAR RELACIONES SIMÏTRICAS ENTRE DIFERENTES OBJE TOS QUE SE REPRESENTAN POR MEDIO DE LOS VÏRTICES MIENTRAS QUE LAS ARISTAS SE USAN PARA INDICAR LAS RELACIONES ENTRE ELLOS 0OR EJEMPLO EL COSTO DE UN BOLETO DE AVIØN PARA IR DE LA CIUDAD DE -ÏXICO A 'UADALAJARA SERÈ EL MISMO EN CUALQUIERA DE LAS DIRECCIONES QUE SE REALICE EL VIAJE


294 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4

&)'52! %JEMPLO DE APLICACIØN DEL ALGORITMO DE 7ARSHALL

5NA GRÈlCA NO DIRIGIDA ' 6 ! CONSTA DE UN CONJUNTO lNITO DE VÏRTICES 6 Y DE OTRO lNITO DE ARISTAS ! 3E DIFERENCIA DE UNA GRÈlCA DIRIGIDA EN QUE CADA ARISTA EN ! ES UN PAR NO ORDENADO DE VÏRTICES 3I U V ES UNA ARISTA NO DIRIGIDA ENTONCES U V V U

2EPRESENTACIØN DE GRÉlCAS NO DIRIGIDAS ,AS GRÈlCAS NO DIRIGIDAS SON ESTRUCTURAS DE DATOS ABSTRACTAS POR LO TANTO SE DEBEN APO YAR EN OTRAS ESTRUCTURAS PARA SU REPRESENTACIØN EN MEMORIA ,AS DOS REPRESENTACIONES MÈS UTILIZADAS SON MATRIZ DE ADYACENCIA Y LISTA DE ADYACENCIA AMBAS EXPLICADAS EN LA SECCIØN CORRESPONDIENTE A LAS GRÈlCAS DIRIGIDAS #ONSIDERANDO LA SIMETRÓA DE LAS RELACIONES ENTRE LOS ELEMENTOS DE LA GRÈlCA SE REQUIERE CAMBIAR CADA ARISTA NO DIRIGIDA ENTRE U Y V POR DOS ARISTAS DIRIGIDAS UNA DE U A V Y OTRA DE V A U POR LO TANTO LA MATRIZ DE ADYACENCIA RESULTARÈ UNA MATRIZ SIMÏTRICA Y EN LA LISTA DE ADYACENCIA EL VÏRTICE U ESTARÈ EN LA LISTA DE ADYACENCIA DEL VÏRTICE V Y VICEVERSA %N LA lGURA A SE PUEDE OBSERVAR UN EJEMPLO DE UNA GRÈlCA Y EN B SU REPRESEN TACIØN POR MEDIO DE UNA MATRIZ DE ADYACENCIA %N LA MATRIZ SE HA SOMBREADO LA DIAGONAL


(3Ç'*$"4 /0 %*3*(*%"4

295

&)'52! 'RÉlCA Y SU REPRESENTACIØN POR MEDIO DE UNA MATRIZ DE ADYACENCIA°

&)'52! 2EPRESENTACIØN DE UNA GRÉlCA POR MEDIO DE UNA LISTA DE ADYACENCIA°

PRINCIPAL PARA ILUSTRAR MÈS CLARAMENTE LA SIMETRÓA %S DECIR LA MATRIZ TRIANGULAR INFERIOR ES IGUAL A LA MATRIZ TRIANGULAR SUPERIOR %N LA lGURA SE MUESTRA LA REPRESENTACIØN DE LA GRÈlCA DE LA lGURA A POR MEDIO DE UNA LISTA DE ADYACENCIA

#ONSTRUCCIØN DEL ÉRBOL ABARCADOR DE COSTO MÓNIMO 3EA ' 6 ! UNA GRÈlCA CONEXA ES DECIR UNA GRÈlCA EN LA CUAL EXISTE UN CAMINO SIMPLE ENTRE CUALESQUIERA DOS DE SUS VÏRTICES !DEMÈS CADA ARISTA U V TIENE ASOCIADO UN PESO O COSTO C U V #ONSIDERANDO LO ANTERIOR UN ÈRBOL ABARCADOR DE UNA GRÈlCA ' SE DElNE COMO UN ÈRBOL LIBRE QUE CONECTA TODOS LOS VÏRTICES DE 6 %L COSTO DEL ÈRBOL ABARCADOR RESULTA DE LA SUMA DE LAS ARISTAS INCLUIDAS EN ÏL 0OR LO TANTO UN ÈRBOL ABARCADOR DE COSTO MÓNIMO SE FORMA A PARTIR DE LAS ARISTAS DE MENOR COSTO


296 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 5NA APLICACIØN TÓPICA DE ÈRBOLES ABARCADORES DE COSTO MÓNIMO ES EL DISE×O DE REDES DE COMUNICACIØN 0OR EJEMPLO LOS VÏRTICES DE LA GRÈlCA PUEDEN REPRESENTAR CIUDADES Y LAS ARISTAS POSIBLES CANALES DE COMUNICACIØN ENTRE ELLAS %L COSTO ASOCIADO A CADA ARISTA REPRESENTA EL COSTO DE COMUNICAR UNA CIUDAD CON OTRA EN TIEMPO DINERO MEDIOS ETC 0OR LO TANTO EL ÈRBOL ABARCADOR REPRESENTARÈ LA RED DE COMUNICACIØN QUE CONECTA A TODAS LAS CIUDADES A UN COSTO MÓNIMO ,OS ÈRBOLES ABARCADORES DE COSTO MÓNIMO GOZAN DE UNA PROPIEDAD QUE SIRVE COMO BASE PARA TODOS LOS ALGORITMOS UTILIZADOS PARA SU CONSTRUCCIØN %STA PROPIEDAD ESTABLECE QUE SI ' 6 ! ES UNA GRÈlCA CONEXA 5 ES UN SUBCONJUNTO PROPIO DEL CONJUNTO DE VÏR TICES 6 Y U V ES UNA ARISTA DE COSTO MÓNIMO TAL QUE U ∈ 5 Y V ∈ 6 5 ENTONCES EXISTE UN ÈRBOL ABARCADOR DE COSTO MÓNIMO QUE INCLUYE A U V ENTRE SUS ARISTAS %N LAS SIGUIENTES SECCIONES SE PRESENTARÈN LOS ALGORITMOS DE 0RIM Y DE +RUSKAL UTILIZADOS PARA OBTENER EL ÈRBOL ABARCADOR DE UNA GRÈlCA

!LGORITMO DE 0RIM %L ALGORITMO DE 0RIM PERMITE ENCONTRAR EL ÈRBOL ABARCADOR DE COSTO MÓNIMO DE UNA GRÈlCA 0ARA ELLO UTILIZA DOS CONJUNTOS 6 CONJUNTO DE TODOS LOS VÏRTICES Y 5 CONJUNTO AUXILIAR INICIADO CON EL PRIMER VÏRTICE %N CADA ITERACIØN DEL ALGORITMO SE BUSCA LA ARISTA U V QUE CONECTE 5 CON LA SUBGRÈlCA 6 5 ,UEGO SE AGREGA EL NODO V PERTENECIENTE A 6 5 A 5 %STE PROCESO SE REPITE HASTA QUE 5 6 #ONSIDERANDO EL RECORRIDO QUE SE DEBE HACER EN LA GRÈlCA EL TIEMPO DE EJECUCIØN SERÈ DEL ORDEN DE / N SI SE USA UNA MATRIZ DE ADYACENCIA PARA REPRESENTARLA %N CAM BIO SI LA GRÈlCA FUE REPRESENTADA POR MEDIO DE UNA LISTA DE ADYACENCIA LA COMPLEJIDAD DEL ALGORITMO SERÈ DEL ORDEN DE / ! LOG N DONDE ! ES EL NÞMERO DE ARISTAS !NTES DE PRESENTAR EL ALGORITMO RESULTA CONVENIENTE EXPLICAR LOS ELEMENTOS QUE SE USARÈN EN ÏL ◗ ◗ ◗

6 ES EL CONJUNTO DE VÏRTICES DE ' 6 [ N] 3E USAN LOS NÞMEROS ENTEROS DEL EN ADELANTE PARA IDENTIlCAR LOS VÏRTICES 3IN EMBARGO EN CADA APLICACIØN SE PODRÈ USAR LA MANERA QUE SE CONSIDERE MÈS ADECUADA 5 ES UN SUBCONJUNTO PROPIO DEL CONJUNTO 6 SIENDO SU VALOR INICIAL EL DEL PRIMER VÏRTICE 0ARA NUESTRA IMPLEMENTACIØN 5 [ ] , ES UNA LISTA DE ARISTAS QUE SE VA FORMANDO CON LAS ARISTAS DE MENOR COSTO QUE SE VAN SELECCIONANDO )NICIALMENTE , ESTÈ VACÓA , ∅

!LGORITMO 0RIM

0RIM . [%STE ALGORITMO ENCUENTRA EL ÈRBOL ABARCADOR DE COSTO MÓNIMO DE UNA GRÈlCA ' DE . VÏRTICES 5 6 Y , SON ESTRUCTURAS DE DATOS ARREGLOS O LISTAS QUE PERMITEN GUARDAR LOS NOMBRES DE LOS VÏRTICES Y LAS ARISTAS SELECCIONADAS]


(3Ç'*$"4 /0 %*3*(*%"4

297

-IENTRAS 6 ≠ 5 2EPETIR %LEGIR UNA ARISTA U V ∈ ! ' TAL QUE SU COSTO SEA MÓNIMO SIENDO U ∈ 5 Y V ∈ 6 n 5 !GREGAR LA ARISTA U V A , !GREGAR EL NODO V A 5 [&IN DEL CICLO DEL PASO ]

%JEMPLO

! CONTINUACIØN SE PRESENTA UN EJEMPLO DE USO DEL ALGORITMO DE 0RIM PARA ENCONTRAR EL ÈRBOL ABARCADOR DE COSTO MÓNIMO DE UNA GRÈlCA %L ALGORITMO SE APLICA A LA GRÈlCA DE LA lGURA OBTENIENDO COMO RESULTADO EL ÈRBOL QUE SE MUESTRA EN LA lGURA %L SEGUIMIENTO DEL ALGORITMO SE PRESENTA EN LA TABLA %N LA PRIMERA ITERACIØN SE ELIGE LA ARISTA POR SER LA DE MENOR COSTO EN ESTE CASO IGUAL A %L VÏRTICE SE AGREGA AL CONJUNTO 5 %N LA SIGUIENTE ITERACIØN SE ELIGE LA ARISTA CON UN COSTO DE Y EL VÏRTICE PASA A FORMAR PARTE DE 5 !SÓ SE SIGUE HASTA ALCANZAR LA CONDICIØN lNAL DE 6 5 Y CONSECUENTEMENTE TERMINA EL PROCESO

&)'52! %JEMPLO DE APLICACIØN DEL ALGORITMO DE 0RIM

4!",! !PLICACIØN DEL ALGORITMO DE 0RIM

)TERACIØN

5

U V

#OSTO

V

,

5 ACTUALIZADO

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]

[ ]


298 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! ­RBOL ABARCADOR DE COSTO MÓNIMO OBTENIDO APLICAN DO EL ALGORITMO DE 0RIM

!LGORITMO DE +RUSKAL %L ALGORITMO DE +RUSKAL AL IGUAL QUE EL DE 0RIM PERMITE ENCONTRAR EL ÈRBOL ABARCADOR DE COSTO MÓNIMO DE UNA GRÈlCA ,A CONSTRUCCIØN DEL ÈRBOL ABARCADOR DE COSTO MÓNIMO SE LLEVA A CABO SELECCIONANDO LA ARISTA DE MENOR COSTO Y AGREGÈNDOLA AL ÈRBOL ABARCADOR 0ARA ELLO SE UTILIZA UN PROCESO RELATIVAMENTE SENCILLO 0RIMERO SE DEBE GENERAR UNA SERIE DE PARTICIONES A PARTIR DEL CONJUNTO DE VÏRTICES 6 )NICIALMENTE LAS PARTICIONES TIENEN TAMA×O UNO %S DECIR 0 [[6 ] [6 ] [6 ] [6N]] DONDE 0 INDICA LA PARTICIØN INICIAL Y CADA [6I] ES UNA PARTICIØN FORMADA POR EL VÏRTICE I ! PARTIR DE ESTE PASO SE BUSCA LA ARISTA DE MENOR COSTO Y SI ÏSTA UNE DOS VÏRTICES QUE PERTENECEN A PARTICIONES DIFERENTES DICHAS PARTICIONES SE REEMPLAZAN POR SU UNIØN 0ARA EL CASO CONTRARIO LA ARISTA NO FORMA PARTE DEL ÈRBOL ABARCADOR DE COSTO MÓNIMO YA QUE PRODUCIRÓA UN CICLO 3E CONTINÞA ELIGIENDO LA ARISTA U V DE MENOR COSTO Y UNIENDO LAS PARTICIONES A LAS CUALES PERTENECEN U Y V RESPECTIVAMENTE HASTA QUE SE TENGA UNA SOLA PARTICIØN FORMADA POR TODOS LOS VÏRTICES DE LA GRÈlCA %S DECIR 0K [6 6 6 6N] DONDE 0K ES LA PARTICIØN lNAL LUEGO DE K ITERACIONES LA CUAL ESTÈ FORMADA POR LOS . VÏRTICES DE ' %STE ALGORITMO REQUIERE EN EL PEOR DE LOS CASOS UN TIEMPO DE / ! LOG ! DONDE ! ES EL NÞMERO DE ARISTAS DE LA GRÈlCA 3I ! ES MENOR QUE N ENTONCES EL ALGORITMO DE +RUSKAL ES MÈS ElCIENTE QUE EL DE 0RIM 3I ! TIENE UN VALOR CERCANO A N ENTONCES ES MÈS CONVENIENTE USAR EL DE 0RIM %L ALGORITMO UTILIZA ALGUNOS ELEMENTOS AUXILIARES ! CONTINUACIØN SE DESCRIBEN LOS MISMOS ◗ ◗

, ES UN CONJUNTO FORMADO POR LAS ARISTAS Y SUS RESPECTIVOS COSTOS 0 REPRESENTA LAS PARTICIONES GENERADAS A PARTIR DE 6 )NICIALMENTE 0 [[ ] [ ] [N]]


(3Ç'*$"4 /0 %*3*(*%"4

299

0ARA ESTOS DOS ELEMENTOS , Y 0 SE PUEDEN USAR ARREGLOS O LISTAS PARA SU REPRE SENTACIØN EN MEMORIA !LGORITMO +RUSKAL

+RUSKAL . [%STE ALGORITMO ENCUENTRA EL ÈRBOL ABARCADOR DE COSTO MÓNIMO DE UNA GRÈlCA ' DE . VÏRTICES , Y 0 SON ESTRUCTURAS DE DATOS ARREGLOS O LISTAS QUE PERMITEN GUARDAR LAS ARISTAS Y LAS PARTICIONES RESPECTIVAMENTE] -IENTRAS HAYA VÏRTICES EN 0 QUE PERTENEZCAN A PARTICIONES DISTINTAS 2EPETIR $E , SELECCIONAR LA ARISTA U V QUE TENGA EL MENOR COSTO 3I U Y V SE ENCUENTRAN EN PARTICIONES DIFERENTES ENTONCES 5NIR LAS PARTICIONES A LAS CUALES PERTENECEN U Y V [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]

%JEMPLO

3E PRESENTA UN EJEMPLO DE USO DEL ALGORITMO DE +RUSKAL PARA ENCONTRAR EL ÈRBOL ABAR CADOR DE COSTO MÓNIMO DE UNA GRÈlCA EL CUAL SE APLICA A LA GRÈlCA DE LA lGURA OBTENIENDO COMO RESULTADO EL ÈRBOL QUE SE MUESTRA EN LA lGURA

&)'52! ­RBOL ABARCADOR DE COSTO MÓNIMO OBTENIDO APLICANDO EL ALGORITMO DE +RUSKAL A 'RÉlCA INICIAL EN ELLA APARECEN TODAS LAS ARISTAS CON SU PESO ASOCIADO 0ARTICIØN INICIAL 0 B ,UEGO DE SELECCIONAR LA ARISTA DE MENOR PESO QUE UNE LOS VÏRTICES Y


300 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4

&)'52! CONTINUACIØN C ,UEGO DE SELECCIONAR LA SIGUIENTE ARISTA DE MENOR PESO QUE UNE LOS VÏRTICES Y D ,UEGO DE SELECCIONAR LA SIGUIENTE ARISTA DE MENOR PESO QUE UNE LOS VÏRTICES Y E ,UEGO DE SELECCIONAR LA SIGUIENTE ARISTA DE MENOR PESO QUE UNE LOS VÏRTICES Y F ­RBOL ABARCADOR AL QUE SE LLEGA LUEGO DE APLICAR EL ALGORITMO DE +RUSKAL


3&40-6$*Î/ %& 130#-&."4

301

&)'52! 0UZZLE

,A LISTA , FORMADA POR LAS ARISTAS Y SUS COSTOS U V C DONDE U Y V SON VÏRTICES Y C REPRESENTA EL COSTO ASOCIADO A DICHA ARISTA ES LA SIGUIENTE , [ ] %N LA TABLA SE PRESENTA EL SEGUIMIENTO DEL ALGORITMO %N EL PASO SE ELIGE LA ARISTA PORQUE ES LA QUE TIENE ASOCIADO EL MENOR COSTO Y EN CONSECUENCIA SE UNEN LAS PARTICIONES CORRESPONDIENTES A LOS VÏRTICES Y ,A PARTICIØN RESULTANTE SE SOMBREA 3E SIGUE DE LA MISMA MANERA EN LOS PASOS Y %N EL PASO SE ELIGE LA ARISTA CON UN COSTO DE Y NO LA ARISTA CON UN COSTO DE YA QUE LOS VÏRTICES DE ESTA ÞLTIMA NO CUMPLEN CON LA CONDICIØN DE PERTENECER A PARTICIONES DISTINTAS

2%3/,5#)¼. $% 02/",%-!3 ,OS PROBLEMAS BÈSICAMENTE SE CLASIlCAN EN DOS GRANDES SUBGRUPOS LOS QUE CUENTAN CON UNA SOLUCIØN DETERMINÓSTICA PARA SU SOLUCIØN EXPRESABLE POR MEDIO DE UN ALGORIT MO Y LOS QUE REQUIEREN DE UNA BÞSQUEDA PARA SU SOLUCIØN ,A INTELIGENCIA ARTIlCIAL SE PREOCUPA DE ESTE TIPO DE PROBLEMAS SIN IMPORTAR SI SON MÈS O MENOS COMPLEJOS QUE LOS ANTERIORES DETERMINÓSTICOS

4!",! !PLICACIØN DEL ALGORITMO DE +RUSKAL

0ASO

!RISTA ELEGIDA

#OSTO

0ARTICIONES 0 [[ ] [ ] [ ] [ ] [ ]] %STADO INICIAL

0 [[ ] [ ] [ ] [ ]]

0 [[ ] [ ] [ ]]

0 [[ ] [ ]]

0 [ ]


302 >ยซย ร ร ย ย ร ร ร ร ร (3ร '*$"4 %N LA VIDA EXISTE UNA CANTIDAD DE PROBLEMAS QUE SE PUEDEN RESOLVER APLICANDO Mร TODOS DE Bร SQUEDA SI ร STOS FUERON MODELADOS MEDIANTE GRร lCAS 5NO DE LOS PROBLEMAS Mร S ESTUDIADO Y UTILIZADO EN EL CAMPO DE LA SOLUCIร N DE PROBLEMAS ES EL DEL PUZZLE %STE ES UN JUEGO QUE CONSISTE EN ORDENAR UN CONJUNTO DE lCHAS EN UN TABLERO DE . ยง . PO SICIONES USANDO Sร LO UN LUGAR LIBRE DE TAL MANERA QUE AQUร LLAS QUEDEN EN UNA SECUENCIA DE A . n 3E UTILIZAN FRECUENTEMENTE LOS JUEGOS EN EL ร REA DE RESOLUCIร N DE PROBLE MAS PORQUE PROPORCIONAN UNA RICA FUENTE DE EJEMPLOS PARA COMPARAR Y PROBAR DISTINTOS Mร TODOS DE Bร SQUEDA %N LA lGURA SE PRESENTA UN EJEMPLO DE UN PUZZLE %N EL PUZZLE EXISTE UN ESTADO INICIAL Y OTRO lNAL DElNIDOS 0OR OTRA PARTE HAY UN CONJUNTO DE MOVIMIENTOS QUE PERMITEN CAMBIAR DE UNA CONlGURACIร N A OTRA ESTOS MO VIMIENTOS SE DENOMINAN OPERADORES %N LOS DIFERENTES ESTADOS PARCIALES SIEMPRE EXISTEN OPERADORES PROHIBIDOS ES DECIR QUE NO SE PUEDEN APLICAR PORQUE LOS MOVIMIENTOS RE PRESENTAN ESTADOS ILEGALES %N LA lGURA SE OBSERVAN TANTO LOS ESTADOS INICIAL Y lNAL DEL PROBLEMA A RESOL VER ,A CELDA VACร A EN ESTE CASO Sร LO SE PUEDE INTERCAMBIAR CON LAS CELDAS QUE CONTIE NEN AL Y AL RESPECTIVAMENTE %N EL PUZZLE QUE SE REPRESENTA COMO UNA MATRIZ DE ยง EL Nร MERO POSIBLE DE COMBINACIONES QUE SE PODRร AN GENERAR ES LO CUAL IMPLICA QUE EL PUZZLE TENGA ESTADOS LEGALES ยง %S PRUDENTE DESTACAR QUE PARA UN ESTADO lNAL Sร LO EXISTEN ESTADOS INICIALES POSIBLES ,A COMPLEJIDAD DE ESTE PROBLEMA ES SIMILAR A LA QUE TIENE UN CARTERO QUE DEBE DISTRIBUIR NUEVE CARTAS EN NUEVE DIRECCIONES DIFERENTES Y QUIERE ENCONTRAR LA TRAYECTORIA ร PTIMA 3I EL PROBLEMA QUE TUVIร RAMOS QUE RESOLVER FUERA EN CAMBIO EL PUZZLE QUE SE REPRESENTA EN UNA MATRIZ DE DE ยง LOS ESTADOS LEGALES DEL PROBLEMA SON % 0OR OTRA PARTE CABE MENCIONAR QUE EXISTEN PUZZLES QUE SE REPRESENTAN EN UNA MATRIZ DE ยง CUYO Nร MERO DE ESTADOS LEGALES ES SIN EMBARGO MUCHOS DE ELLOS NO SE PUEDEN RESOLVER 0ARA QUE EL LECTOR OBSERVE LA COMPLEJIDAD DEL PROBLEMA SE PRESENTAN LAS TABLAS Y DONDE SE MUESTRA EL TIEMPO QUE SE NECESITA PARA GENERAR TODOS LOS ESTADOS LEGALES DEL PUZZLE Y PUZZLE RESPECTIVAMENTE %N LA PRIMERA COLUMNA SE PRESENTA EL Nร MERO DE NODOS GENERADOS POR SEGUNDO MIENTRAS QUE EN LA SEGUNDA ES EL TIEMPO NECESARIO PARA PROCESAR TODOS LOS NODOS %N LA TABLA SE OBSERVA QUE SI SE PUDIERAN PROCESAR NODOS POR SEGUNDO SE REQUERIRร AN SEGUNDOS PARA ALCANZAR LA SOLUCIร N DEL PROBLEMA %N CAMBIO SI LA CAPACIDAD DE PROCESAMIENTO FUERA DE DE NODOS POR SEGUNDO Sร LO SE NECESITARร A SEGUN DOS PARA LLEGAR A LA SOLUCIร N

4!",!

.ODOS POR SEGUNDO

4IEMPO DE SOLUCIร N

SEGUNDOS MINUTOS

SEGUNDOS

*ร รขรขย iย n


3&40-6$*ร / %& 130#-&."4 4!",!

.ODOS POR SEGUNDO

4IEMPO DE SOLUCIร N

% SEGUNDOS % MINUTOS HORAS Dร AS Aร OS

SEGUNDOS MINUTOS HORAS Dร AS

303

0UZZLE DE ย

%N LA TABLA SE PRESENTAN LOS RESULTADOS PARA EL PUZZLE 3I LA VELOCIDAD CON QUE SE GENERAN LOS NODOS FUERA DE NODOS POR SEGUNDO ENTONCES SE NECESITARร AN Aร OS PARA GENERAR TODOS LOS NODOS SI EN CAMBIO LA VELOCIDAD FUERA DE DE NODOS POR SEGUNDO SE NECESITARร AN Dร AS /BSERVE QUE LOS PROBLEMAS SON Fร CILMENTE ENTENDIBLES PERO LA SOLUCIร N ES MUY COMPLEJA ,OS PUZZLES CONSTITUYEN UN EXCELENTE CAMPO PARA APLICAR Y PROBAR Mร TODOS DE Bร S QUEDA %L PUZZLE Mร S FRECUENTEMENTE UTILIZADO ES EL PUZZLE ES DECIR AQUEL DE DIMEN SIร N ยง DONDE SE DEBEN ACOMODAR LOS Nร MEROS AL %N LA lGURA SE PRESENTA OTRO EJEMPLO DE PUZZLE %L PROBLEMA QUEDA DElNIDO EN FUNCIร N DE โ โ โ

5N ESTADO INICIAL Y UN ESTADO lNAL 5N CONJUNTO DE MOVIMIENTOS U OPERADORES PERMITIDOS PARA CAMBIAR DE UNA CON lGURACIร N A OTRA %S DECIR UN OPERADOR ESTร ASOCIADO AL CONCEPTO DE MOVIMIENTO Y ES EL QUE PERMITE TRANSFORMAR UN ESTADO EN OTRO 5N CONJUNTO DE OPERADORES PROHIBIDOS

0ARA EL PROBLEMA DEL PUZZLE LOS OPERADORES Vร LIDOS SE MUESTRAN EN LA lGURA MIENTRAS QUE LOS OPERADORES PROHIBIDOS SE PRESENTAN EN LA lGURA &)'52! %JEMPLO DE UN PUZZLE


304 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52! /PERADORES VÉLIDOS PARA EL PUZZLE

&)'52! /PERADORES PROHIBIDOS PARA EL PUZZLE

%N LENGUAJE DE ESTADOS Y OPERADORES UNA SOLUCIØN AL PROBLEMA CONSISTE EN OBTENER UNA SECUENCIA APROPIADA DE OPERADORES QUE PERMITIRÈN TRANSFORMAR EN INICIAL EL ESTADO lNAL ,A SOLUCIØN DE UN PROBLEMA REQUIERE DE UN ORDEN DE BÞSQUEDA PARA SU SOLUCIØN PERO ANTES DE COMENZAR LA BÞSQUEDA ES NECESARIO MODELAR O REPRESENTAR EL PROBLEMA DE ALGUNA FORMA ,AS ALTERNATIVAS SON ◗ ◗

%SPACIO ESTADO 2EDUCCIØN DE PROBLEMAS

%N ESTE CAPÓTULO SØLO ANALIZAREMOS LA REPRESENTACIØN ESPACIO ESTADO PORQUE ES LA QUE SE RELACIONA CON LAS GRÈlCAS

%SPACIO ESTADO 5N PASO IMPORTANTE EN LA FORMULACIØN DE UN PROBLEMA ESPACIO ESTADO CONSISTE EN LA SELECCIØN DE UNA FORMA DE REPRESENTAR LOS ESTADOS DEL PROBLEMA ,AS ESTRUCTURAS DE DATOS MÈS USADAS PARA DESCRIBIR LOS ESTADOS SON ARREGLOS UNIDIMENSIONALES ARREGLOS BIDIMEN


3&40-6$*ร / %& 130#-&."4

305

SIONALES LISTAS LIGADAS ร RBOLES Y GRร lCAS %N EL PROBLEMA DEL PUZZLE UNA MATRIZ DE ยง PARECE SER LA ESTRUCTURA Mร S NATURAL PARA REPRESENTAR LOS ESTADOS DEL PROBLEMA 3IN EMBARGO HAY QUE SER CUIDADOSOS EN LA ELECCIร N DE LA ESTRUCTURA POR DOS RAZONES ,A SOLUCIร N DEBE SER COMPUTABLE %S DECIR SE DEBE PODER DESARROLLAR UN Mร TODO QUE SE PUEDA EJECUTAR EN UNA COMPUTADORA EN UN TIEMPO RAZONABLE $EBE PERMITIR ALMACENAR Y MANIPULAR LOS OPERADORES QUE TRANSFORMAN UN ESTADO EN OTRO #ONSIDERANDO QUE LA MATRIZ ES UNA ESTRUCTURA DE DATOS ESTร TICA LA LISTA RESULTA SER LA ESTRUCTURA DE DATOS Mร S ADECUADA PARA REPRESENTAR AL PUZZLE 0OR EL DINAMISMO DE LA MISMA SE PUEDEN ALMACENAR Fร CILMENTE LOS ESTADOS Y LOS OPERADORES DEL PROBLEMA

-ร TODOS DE Bร SQUEDA EN ESPACIO ESTADO %N EL PLANTEAMIENTO DE PROBLEMAS ESPACIO ESTADO UNA SOLUCIร N SE OBTIENE MEDIANTE LA APLICACIร N DE OPERADORES DESDE EL ESTADO INICIAL HASTA ALCANZAR EL ESTADO lNAL O META %S IMPORTANTE CONSIDERAR LOS SIGUIENTES PUNTOS โ โ โ โ

5N NODO INICIAL SE ASOCIA CON LA DESCRIPCIร N DE UN ESTADO INICIAL ,OS SUCESORES DE UN NODO SE CALCULAN USANDO LOS OPERADORES QUE SON APLICABLES A ESE ESTADO 8 ES UN OPERADOR QUE CALCULA TODOS LOS SUCESORES DE UN NODO %L PROCESO DE APLICAR 8 A UN NODO SE DENOMINA EXPANDER UN NODO 3E UTILIZAN APUNTADORES PARA LIGAR EL NODO PADRE CON SU HIJO Y DE ESTA MANERA PODER OBTENER LA TRAYECTORIA CUANDO SE ENCUENTRA EL ESTADO META

,OS Mร TODOS DE Bร SQUEDA SE CARACTERIZAN POR EL ORDEN EN EL CUAL SE EXPANDEN LOS NODOS LOS DOS Bร SICOS Mร S AMPLIAMENTE CONOCIDOS SON โ โ

"READTH lRST O Bร SQUEDA A LO ANCHO 3E EXPANDEN LOS NODOS EN EL ORDEN EN QUE HAN SIDO GENERADOS $EPTH lRST O Bร SQUEDA EN PROFUNDIDAD 3E EXPANDEN LOS NODOS QUE HAN SIDO GENERADOS RECIENTEMENTE

%S IMPORTANTE SEร ALAR QUE ร STOS SON Mร TODOS DE Bร SQUEDA ELEMENTALES PARA EN CONTRAR LAS TRAYECTORIAS PERO SON EXHAUSTIVOS PORQUE EXPANDEN DEMASIADOS NODOS Y DEBEMOS RECORDAR QUE SIEMPRE EXISTEN Lร MITES TANTO DE TIEMPO COMO DE ESPACIO PARA ENCONTRAR LA SOLUCIร N DEL PROBLEMA $ENTRO DEL ร REA DE RESOLUCIร N DE PROBLEMAS DE IN TELIGENCIA ARTIlCIAL EXISTEN OTROS Mร TODOS Mร S ElCIENTES QUE INCORPORAN CONOCIMIENTO ESTRATEGIA Y HEURร STICA Y PERMITEN NO Sร LO ENCONTRAR UNA TRAYECTORIA SINO TAMBIร N LA ร PTIMA


306 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4

-ÏTODO DE BÞSQUEDA BREADTH lRST %N EL MÏTODO DE BÞSQUEDA BREADTH lRST O BÞSQUEDA A LO ANCHO LOS NODOS SE EXPANDEN EN EL ORDEN EN EL QUE HAN SIDO GENERADOS 3E AVANZA POR NIVELES ES DECIR PRIMERO SE GENERAN TODOS LOS NODOS DEL PRIMER NIVEL LUEGO LOS DEL SEGUNDO POSTERIORMENTE LOS DEL TERCERO Y ASÓ SUCESIVAMENTE HASTA ENCONTRAR EL ESTADO META SIEMPRE QUE SEA POSIBLE EN CUANTO A TIEMPO Y ESPACIO OCUPADO EN MEMORIA %L MÏTODO TRABAJA CON DOS LISTAS AUXILIARES UNA LLAMADA !")%24/ Y LA OTRA #%22!$/ ,A PRIMERA SE UTILIZA PARA ALMACENAR LOS NODOS QUE ESTÈN PENDIENTES DE SER EXPANDIDOS CADA NUEVO NODO GENERADO SE COLOCA SIEMPRE AL lNAL DE !")%24/ %N #%22!$/ SE COLOCAN LOS NODOS QUE YA HAN SIDO EXPANDIDOS ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE !LGORITMO "READTH lRST "READTH?lRST [%STE MÏTODO PERMITE ENCONTRAR LA TRAYECTORIA QUE HACE POSIBLE IR DE UN ESTADO INICIAL A UN ESTADO lNAL USANDO LOS OPERADORES PERMITIDOS !")%24/ Y #%22!$/ SON DOS LISTAS LIGADAS EN LAS CUALES SE ALMACENAN LOS NODOS PENDIENTES DE SER EXPANDIDOS Y LOS NODOS YA EXPANDIDOS RESPECTIVAMENTE] )NSERTAR EL NODO INICIAL EN LA LISTA !")%24/ -IENTRAS !")%24/ NO ESTÏ 6!#¶! Y NO SE HAYA ALCANZADO EL ESTADO lNAL 2EPETIR 1UITAR EL PRIMER NODO 8 DE !")%24/ 3I EL NODO 8 NO SE ENCUENTRA EN #%22!$/ ENTONCES 0ONER EL NODO 8 EN LA LISTA #%22!$/ %XPANDIR EL NODO 8 OBTENIENDO TODOS SUS SUCESORES 3I HAY SUCESORES Y NO SON EL ESTADO lNAL ENTONCES !LMACENARLOS AL lNAL DE !")%24/ Y PROVEER APUNTADORES PARA REGRESAR A 8 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I SE GENERØ EL ESTADO lNAL ENTONCES [²XITO] $ESPLEGAR TRAYECTORIA DEL ESTADO INICIAL AL ESTADO lNAL SI NO [&RACASO] %SCRIBIR h.O SE ALCANZØ EL ESTADO lNALv [&IN DEL CONDICIONAL DEL PASO ]

%JEMPLO

! CONTINUACIØN SE PRESENTA UN EJEMPLO DE APLICACIØN DEL MÏTODO DE BÞSQUEDA BREADTH lRST PARA ENCONTRAR UNA TRAYECTORIA ENTRE DOS NODOS %L PROBLEMA CONSISTE EN ENCONTRAR UNA TRAYECTORIA DE 3 A + DE LA GRÈlCA PRESENTADA EN LA lGURA TOMANDO EL ORDEN ALFABÏTICO COMO BASE PARA EL ORDEN DE APLICACIØN DE LOS OPERADORES %N LA lGURA SE OBSERVA QUE PARA ESTE PROBLEMA LA SOLUCIØN ALCANZADA ES 3 ! # % * +


3&40-6$*Î/ %& 130#-&."4 &)'52! "ÞSQUEDA BREADTH lRST

&)'52! 4RAYECTORIA ENCONTRADA 3 ! # % * +

9A FUERON EXPANDIDOS

307


308 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 LA CUAL SE INDICA CON UNA mECHA EN COLOR %N EL ESTADO INICIAL 3 SE OBTIENEN TODOS SUS SUCESORES LOS CUALES SEGÞN LA GRÈlCA DE LA lGURA SON ! Y ' #OMO NINGUNO DE LOS DOS ES EL ESTADO META SE CONTINÞA EXPANDIENDO CADA UNO DE ESTOS NODOS !SÓ PARA ! SE OBTIENEN " # Y ' MIENTRAS QUE PARA ' SE GENERARON ! Y ( %N AMBOS CASOS SE OBTUVIE RON NODOS ' Y ! CON LOS QUE YA SE CONTABA POR EXPANSIONES ANTERIORES POR LO TANTO SE IGNORAN %N LA GRÈlCA ESTOS CASOS SE SE×ALAN CON %N LA lGURA SE OBSERVA CLARAMENTE QUE TODAS LAS RAMAS DEL ÈRBOL CRECEN EN PROFUNDIDAD DE IGUAL MANERA

%JEMPLO

! CONTINUACIØN SE PRESENTA OTRO EJEMPLO DE APLICACIØN DEL MÏTODO DE BÞSQUEDA BREADTH lRST PERO AHORA PARA RESOLVER EL PUZZLE %N ESTE CASO SE USAN LISTAS PARA REPRESENTAR LOS NODOS

.OTA 3E UTILIZA EL EN LUGAR DEL RECTÈNGULO PARA INDICAR CELDA VACÓA SIMPLEMENTE PARA MANTENER LA HOMOGENEIDAD DE LOS DATOS

#ABE RECORDAR QUE SE USAN LAS LISTAS !")%24/ Y #%22!$/ PARA ALMACENAR LOS NODOS QUE SE VAN A EXPANDIR EN ALGÞN MOMENTO Y LOS QUE YA HAN SIDO EXPANDIDOS RES PECTIVAMENTE %STA ÞLTIMA LISTA TAMBIÏN SE UTILIZA PARA RECUPERAR LA TRAYECTORIA DESDE EL ESTADO INICIAL AL ESTADO META UNA VEZ QUE SE ALCANZA ESTA ÞLTIMA 4AMBIÏN ES IMPORTANTE REMARCAR QUE CADA VEZ QUE SE EXPANDE UN NODO ES NECESARIO VERIlCAR QUE SU CONTENIDO NO SE ENCUENTRE EN LA LISTA #%22!$/ PARA EVITAR CAER EN CICLOS INlNITOS 3I EXPANDE MOS UN NODO QUE YA SE ENCUENTRA EN #%22!$/ ENTONCES CAEMOS EN UN CICLO Y ADE MÈS DE SER MUY DIFÓCIL SALIR DE ÏL ES CASI IMPOSIBLE ENCONTRAR LA SOLUCIØN DEL PROBLEMA ESTADO META


3&40-6$*Î/ %& 130#-&."4

309

,A lGURA PRESENTA LA SOLUCIØN AL PROBLEMA DEL PUZZLE ,OS OPERADORES SE APLICAN SIGUIENDO LA FORMA DE LAS MANECILLAS DEL RELOJ IZQUIERDA ARRIBA DERECHA Y ABAJO ← ↑ → ↓ 3E PRESENTAN A CONTINUACIØN LAS LISTAS !")%24/ Y #%22!$/ FORMADAS DURANTE LA SOLUCIØN DEL PROBLEMA ,AS LÓNEAS HORIZONTALES SOBRE LA INFORMACIØN DE LOS NODOS INDICAN QUE DICHO NODO SE QUITØ DE LA LISTA !")%24/ #OMO SE OBSERVA EN LAS DOS LISTAS SE INCORPORA SOLAMENTE LA INFORMACIØN DEL NODO POR PROBLEMAS DE ESPACIO %N UNA APLICACIØN REAL ES ABSOLUTAMENTE NECESARIO INCLUIR EL CONTENIDO COMPLETO DEL NODO /BSERVE QUE PARA EL ESTADO INICIAL LA INFORMACIØN DE ESE NODO ES .), %L PRIMER NÞMERO INDICA EL NÞMERO DEL NODO EL SEGUNDO INDICA SU PADRE EL TERCERO EL NIVEL EN QUE NOS ENCONTRAMOS Y EL ÞLTIMO .), EL OPERADOR APLICADO

&)'52! 3OLUCIØN AL PROBLEMA DEL PUZZLE


310 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 !")%24/

#%22!$/

.), ← → ↓ → ↓ ↓ ↓ ↓ ↓ ↓ ↓ ← → ↓

.), ← .), → ← .), ↓ → ← .), ↓ ↓ → ← .),

5NA VEZ QUE SE ALCANZA EL ESTADO META SE PUEDE OBTENER INFORMACIØN MUY VALIOSA DEL CAMPO )NFORMACIØN DEL NODO %N ESTE EJEMPLO → EL NÞMERO INDICA QUE SE HAN GENERADO n NODOS !SIMISMO EL INDICA QUE EL ESTADO META SE ENCONTRØ EN EL NIVEL Y POR LO TANTO SE NECESITA APLICAR TRES OPERADORES PARA RESOLVER EL PROBLEMA 0OR OTRA PARTE LA TRAYECTORIA SE DEBE OBTENER DE #%22!$/ DE LA SIGUIENTE MANERA → ↓ ← .),

PADRE DE → SE BUSCA EN #%22!$/ EL NÞMERO DE NODO PADRE DE → SE BUSCA EN #%22!$/ EL NÞMERO DE NODO PADRE DE → SE BUSCA EN #%22!$/ EL NÞMERO DE NODO PADRE DE → SE BUSCA EN #%22!$/ EL NÞMERO DE NODO

,A SOLUCIØN EN LENGUAJE DE ESTADOS Y OPERADORES ES ←↓→ 2ECUERDE QUE EN EL LENGUAJE DE ESTADOS Y OPERADORES LA SOLUCIØN A UN PROBLEMA CONSISTE EN ENCONTRAR LA SECUENCIA DE OPERADORES QUE PERMITEN TRANSFORMAR EL ESTADO INICIAL EN EL lNAL

%JEMPLO

! CONTINUACIØN SE PRESENTA OTRO EJEMPLO DE USO DEL MÏTODO DE BÞSQUEDA BREADTH lRST %N ESTE CASO EL MÏTODO PERMITE PROBAR SI UNA CADENA DADA COMO ENTRADA FUE GENERADA O NO POR CIERTA GRAMÈTICA 0ARA ESTE PROBLEMA LOS OPERADORES SE DElNEN EN TÏRMINO DE LAS SIGUIENTES REGLAS DE REESCRITURA

αβ → γ αγ → γ γβ → γ γγ → γ γ→Σ

%N LA lGURA SE PRESENTA LA GRÈlCA CON LOS NODOS GENERADOS A PARTIR DEL ESTADO INICIAL αβααβαβ HASTA ALCANZAR EL ESTADO META Σ %L DEBAJO DE UN NODO INDICA QUE DICHO NODO YA EXISTE Y POR LO TANTO SE ELIMINA PARA EVITAR LOS CICLOS #OMO EN EL EJEM PLO ANTERIOR LAS LISTAS !")%24/ Y #%22!$/ ALMACENAN LOS NODOS PENDIENTES DE SER EXPANDIDOS Y AQUELLOS QUE YA HAN SIDO EXPANDIDOS ,AS LÓNEAS HORIZONTALES SOBRE ALGU NOS NODOS INDICAN QUE ÏSTOS FUERON ELIMINADOS DE !")%24/ POR HABER SIDO EXPANDIDOS ANTERIORMENTE PARA NO CAER EN CICLOS INlNITOS


3&40-6$*Î/ %& 130#-&."4 &)'52! .ODOS GENERADOS PARA LLEGAR AL ESTADO META

!")%24/ .IL

311


312 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4

↓ 3OLUCIØN #%22!$/ .), .), .), .), .), .), .), .), .), .), .), .), .), .), .), .), .), .),


3&40-6$*Î/ %& 130#-&."4

313

,A TRAYECTORIA QUE PERMITE LLEGAR A LA SOLUCIØN ES LA SIGUIENTE .), %L ESTADO META ES EL NODO %L TOTAL DE NODOS GENERADOS ES Y FUERON NECESARIOS SIETE NIVELES PARA ALCANZAR LA SOLUCIØN ,OS OPERADORES REGLAS DE REESCRITU RA APLICADOS PARA ALCANZAR EL ESTADO META PARTIENDO DEL ESTADO INICIAL SON αβ αβ αβ αγ γγ γγ γ

%JEMPLO

→γ →γ →γ →γ →γ →γ →Σ

/TRO EJEMPLO DE APLICACIØN DEL MÏTODO DE BÞSQUEDA BREADTH lRST ES EL CONOCIDO COMO PROBLEMA DE LAS JARRAS DE AGUA 3E TIENEN DOS JARRAS UNA CON CAPACIDAD PARA CUATRO LI TROS Y OTRA PARA TRES .INGUNA DE ELLAS TIENE MARCAS DE MEDICIØN !DEMÈS SE DISPONE DE UNA BOMBA DE AGUA QUE PERMITE LLENAR LAS JARRAS DE AGUA TANTAS VECES COMO SE REQUIERA %L PROBLEMA CONSISTE EN ENCONTRAR LA FORMA DE COLOCAR EXACTAMENTE DOS LITROS DE AGUA EN LA JARRA DE CUATRO LITROS %N ESTE PROBLEMA SE PARTE DE UN ESTADO INICIAL Y EXISTEN VA RIAS MANERAS DE ALCANZAR EL ESTADO lNAL PARTICULARIDAD QUE LO CONVIERTE EN UN CASO MUY INTERESANTE ,OS ELEMENTOS DEL PROBLEMA SE ALMACENAN EN UNA LISTA FORMADA POR LAS VARIABLES 8 Y 9 LAS CUALES A SU VEZ REPRESENTARÈN A LAS JARRAS DE CUATRO Y TRES LITROS DE CAPACIDAD RESPECTIVAMENTE 8 *ARRA DE CUATRO LITROS QUE PUEDE TOMAR LOS VALORES 9 *ARRA DE TRES LITROS QUE PUEDE TOMAR LOS VALORES 0ARA ESTE PROBLEMA LOS OPERADORES VÈLIDOS SON LOS QUE SE MUESTRAN EN LA TABLA

4!",! /PERADORES PARA EL PROBLEMA DE LA JARRA

)DENTIlCADOR DEL OPERADOR

$ESCRIPCIØN DE LA OPERACIØN

,LENAR LA JARRA DE CUATRO LITROS

,LENAR LA JARRA DE TRES LITROS

6ACIAR EN EL SUELO LA JARRA DE CUATRO LITROS

6ACIAR EN EL SUELO LA JARRA DE TRES LITROS

6ERTER DE LA JARRA DE CUATRO LITROS A LA DE TRES HASTA QUE LA SEGUNDA SE LLENE O LA PRIMERA QUEDE VACÓA

6ERTER DE LA JARRA DE TRES LITROS A LA DE CUATRO HASTA QUE LA SEGUNDA SE LLENE O LA PRIMERA QUEDE VACÓA


314 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 %L ESTADO INICIAL Y EL lNAL DEL PROBLEMA SE DElNEN COMO

%STADO INICIAL !MBAS JARRAS ESTÈN VACÓAS %STADO lNAL . ,A JARRA 8 TIENE DOS LITROS Y LA JARRA 9 TIENE . DONDE .

/BSERVE QUE ESTE PROBLEMA MUESTRA LA PARTICULARIDAD DE TENER UN ESTADO INICIAL Y MÞLTIPLES ESTADOS lNALES %N LA lGURA SE PRESENTA LA GRÈlCA CON LOS NODOS GENERADOS PARA ALCANZAR LA SOLUCIØN #OMO EN LOS EJEMPLOS ANTERIORES EL ASTERISCO SE UTILIZA PARA INDICAR QUE DICHO NODO YA FUE GENERADO Y POR LO TANTO SE IGNORA

&)'52! .ODOS GENERADOS PARA ALCANZAR LA SOLUCIØN


3&40-6$*Î/ %& 130#-&."4

315

! CONTINUACIØN SE PRESENTAN LAS LISTAS !")%24/ Y #%22!$/ DONDE SE GUARDAN RESPECTIVAMENTE LOS NODOS GENERADOS Y EXPANDIDOS ,AS LÓNEAS ATRAVESADAS SOBRE ALGU NOS NODOS INDICAN QUE ÏSTOS FUERON ELIMINADOS POR HABER SIDO EXPANDIDOS ANTERIORMEN TE %L ASTERISCO DEBAJO DE UN NODO INDICA QUE ÏSTE YA EXISTE Y POR LO TANTO SE ELIMINA PARA EVITAR CAER EN CICLOS ,A IGUALDAD SE DETECTA AL COMPARAR EL CONTENIDO DEL NODO QUE SE QUIERE EXPANDIR CON EL DE AQUELLOS QUE YA SE ENCUENTRAN EN #%22!$/ !")%24/ .),

↓ %STADO META #%22!$/ .), .), .), .), .), .), .), .), .), .), .),

%L ESTADO META SE ENCUENTRA EN EL NODO %L TOTAL DE NODOS GENERADOS ES n Y EL TOTAL DE NIVELES ES ,A TRAYECTORIA QUE DESCRIBE LA SOLUCIØN SE RECUPERA DE LA LISTA #%22!$/ .),


316 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 #ONSIDERANDO LA DESCRIPCIØN DE LAS OPERACIONES ASOCIADAS A LOS OPERADORES TABLA LA SOLUCIØN EN LENGUAJE DE ESTADOS Y OPERADORES ES %STA SECUENCIA DE OPERADORES INDICA QUE PRIMERO SE DEBE LLENAR LA JARRA 8 REQUIE RE CUATRO LITROS Y LUEGO VERTER ESA AGUA EN LA JARRA 9 SØLO SE USARÈN TRES DE LOS CUATRO LITROS %L SIGUIENTE OPERADOR INDICA QUE SE DEBE VACIAR LA JARRA 9 ARROJANDO EL AGUA QUE CONTIENE AL PISO 0OSTERIORMENTE SE COLOCA EL LITRO RESTANTE DE LA JARRA 8 EN LA JARRA 9 QUEDANDO LA PRIMERA VACÓA Y LA SEGUNDA CON UN LITRO ,UEGO SE LLENA LA JARRA 8 USANDO CUATRO LITROS 0OR ÞLTIMO SE PASA AGUA DE LA JARRA 8 A LA JARRA 9 HASTA QUE ÏSTA SE LLENE LO CUAL SE LOGRA CON SØLO DOS LITROS POR LO TANTO LA JARRA 8 SE QUEDA CON LOS OTROS DOS LITROS ALCANZANDO ASÓ EL ESTADO META

#OMPLEJIDAD DEL MÏTODO BREADTH lRST ,A COMPLEJIDAD DEL MÏTODO BREADTH lRST ES / BD DONDE B REPRESENTA EL FACTOR DE RA MIlCACIØN DEL NODO Y D LA PROFUNDIDAD DEL ÈRBOL 3UPONIENDO QUE B LA VELOCIDAD DE EXPANSIØN DE NODOS POR SEGUNDO Y LA CAPACIDAD DE ALMACENAMIENTO BYTES POR NODO EN LA TABLA SE OBSERVA EN TIEMPO Y ESPACIO LA COMPLEJIDAD DEL MÏTODO BREADTH lRST %S IMPORTANTE DESTACAR QUE CUANDO SE UTILIZA EL MÏTODO BREADTH lRST SE DEBE EN CONTRAR LA SOLUCIØN EN LOS PRIMEROS SEIS NIVELES PORQUE DE OTRA FORMA APARECERÈN SERIOS PROBLEMAS EN CUANTO A TIEMPO Y ESPACIO /BSERVE QUE EN EL NIVEL YA SE NECESITAN HORAS PARA RESOLVER EL PROBLEMA Y GIGABYTES

-ÏTODO DE BÞSQUEDA DEPTH lRST %N EL MÏTODO DE BÞSQUEDA DEPTH lRST CONOCIDO CON EL NOMBRE DE BÞSQUEDA EN PROFUN DIDAD EN EL MUNDO DE HABLA HISPANA SE EXPANDE EL NODO MÈS RECIENTEMENTE GENERADO

4!",! #OMPLEJIDAD BREADTH lRST / BD

0ROFUNDIDAD

.ODOS

4IEMPO

-EMORIA

MILISEGUNDO

BYTES

SEGUNDO

+B

SEGUNDOS

-B

MINUTOS

-B

HORAS

'B

DÓAS

4B

A×OS

4B

A×OS

4B


3&40-6$*Î/ %& 130#-&."4

317

ESTO ÞLTIMO PERMITE REALIZAR UNA BÞSQUEDA EN PROFUNDIDAD EN LUGAR DE HACERLO EN FORMA HORIZONTAL COMO EN EL MÏTODO DE BÞSQUEDA A LO ANCHO ,A PROFUNDIDAD DEL NODO INICIAL ES CERO Y LA DE UN NODO QUE NO ES INICIAL ES IGUAL A UNO MÈS LA PROFUNDIDAD DE SU PADRE .ORMALMENTE SE ESTABLECE UN LÓMITE MÈXIMO DE PROFUNDIDAD PERMITIDO QUE A SU VEZ ESTABLECE EL NÞMERO MÈXIMO DE NIVELES QUE SE PUEDEN GENERAR EN LA BÞSQUEDA DE LA SOLUCIØN 3I SE LLEGA AL LÓMITE ESTABLECIDO SIN HABER ALCANZADO EL ESTADO META ENTONCES SE CONSIDERA QUE EL PROBLEMA NO TIENE SOLUCIØN ! CONTINUACIØN SE PRESENTA EL ALGORITMO CORRESPONDIENTE !LGORITMO $EPTH lRST

$EPTH &IRST [%STE MÏTODO PERMITE ENCONTRAR EL ESTADO META DE UN PROBLEMA A PARTIR DE UN ESTADO INICIAL Y USANDO LOS OPERADORES PERMITIDOS PARA DICHO PROBLEMA 0 ES UN ENTERO QUE INDICA EL LÓMITE DE PROFUNDIDAD PERMITIDO !")%24/ Y #%22!$/ SON DOS LISTAS LINEALES SIMPLEMENTE LIGADAS] )NSERTAR EL NODO INICIAL EN LA LISTA LLAMADA !")%24/ -IENTRAS !")%24/ TENGA ELEMENTOS Y NO SE HAYA LLEGADO AL ESTADO lNAL 2EPETIR 1UITAR EL PRIMER NODO . DE !")%24/ 3I . NO ESTÈ EN #%22!$/ Y SU PROFUNDIDAD ES ≤ 0 ENTONCES )NSERTAR EL NODO . EN LA LISTA #%22!$/ %XPANDIR EL NODO . OBTENIENDO TODOS SUS SUCESORES 3I HAY SUCESORES Y NO SON EL ESTADO META ENTONCES !LMACENARLOS AL INICIO DE LA LISTA !")%24/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I ALGUNO DE LOS NODOS GENERADOS ES EL ESTADO META ENTONCES [²XITO] $ESPLEGAR LA TRAYECTORIA DESDE EL ESTADO INICIAL AL lNAL SI NO [&RACASO] .O SE ENCONTRØ EL ESTADO lNAL [&IN DEL CONDICIONAL DEL PASO ]

%N ESTE ALGORITMO SE MANEJA UN VALOR ADICIONAL 0 QUE REPRESENTA LA PROFUNDIDAD MÈXIMA PERMITIDA !L RESOLVER EL PROBLEMA SE VERIlCA SI EL NODO YA TIENE ESA PROFUN DIDAD %N CASO AlRMATIVO SE ELIMINA DE LA LISTA !")%24/ Y SE APLICA BACKTRACKING ES DECIR SE CONTINÞA EL ANÈLISIS CON EL NODO INMEDIATAMENTE ANTERIOR DEL ÈRBOL DE DERIVA CIØN !DEMÈS ES IMPORTANTE DESTACAR QUE MIENTRAS EN EL MÏTODO BREADTH lRST LOS NODOS GENERADOS SE ALMACENAN AL lNAL DE !")%24/ EN EL MÏTODO DEPTH lRST SE COLOCAN AL INICIO


318 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 %JEMPLO

! CONTINUACIØN SE PRESENTA UN EJEMPLO DE APLICACIØN DEL MÏTODO DE BÞSQUEDA DEPTH lRST 3E RETOMA EL PROBLEMA DEL PUZZLE PERO AHORA SE SOLUCIONA POR MEDIO DE ESTE MÏTODO 3E PARTE DE UN ESTADO INICIAL Y SE DElNE UN ESTADO lNAL AL CUAL SE QUIERE LLEGAR

%STADO INICIAL

%STADO lNAL

%L ESTADO INICIAL SE REPRESENTA DE LA SIGUIENTE MANERA

.IL

)NFORMACIØN DEL NODO

#ONTENIDO DEL NODO

!DEMÈS SE ESTABLECE UN LÓMITE DE PROFUNDIDAD IGUAL A %N LA lGURA SE PRE SENTA LA GRÈlCA CON LOS NODOS GENERADOS HASTA LLEGAR A LA SOLUCIØN ,AS LÓNEAS PUNTEADAS INDICAN BACKTRACKING UN MÏTODO QUE DESHACE PARTE DE LA TRAYECTORIA GENERADA CUANDO ÏSTA NO PERMITE LLEGAR A LA SOLUCIØN ! CONTINUACIØN SE PRESENTAN LAS LISTAS !")%24/ Y #%22!$/ DONDE SE GUARDAN RESPECTIVAMENTE LOS NODOS GENERADOS Y LOS EXPANDIDOS ,AS LÓNEAS HORIZONTALES INDICAN QUE DICHOS NODOS FUERON ELIMINADOS YA SEA POR HABER SIDO EXPANDIDOS ANTERIORMENTE O POR HABER LLEGADO A LA PROFUNDIDAD LÓMITE ESTABLECIDA %L ASTERISCO DEBAJO DE UN NODO INDICA QUE ÏSTE YA EXISTE O QUE SU PROFUNDIDAD ES IGUAL A LA MÈXIMA ESTABLECIDA POR LO TANTO SE ELIMINA PARA EVITAR CAER EN CICLOS !")%24/ .), ← ↑ → ↓ ↑ ↓ ↑ → ↓ → ↓ ↑ → ↓ → ↓ ↓ ↑ → ↓

→ ↑ → ↓ → → ↑ → ↓

← → → ↓ ↓ → → ↓ ↓ → %STADO META


3&40-6$*Î/ %& 130#-&."4

&)'52! 3OLUCIØN AL PROBLEMA DEL PUZZLE APLICANDO DEPTH lRST

319


320 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 #%22!$/ .), ← .), ↑ ← .), → ↑ ← .), ↓ → ↑ ← .), → ↓ → ↑ ← .), ↑ → ↓ → ↑ ← .), ← ↑ → ↓ → ↑ ← .), ↓ ← ↑ → ↓ → ↑ ← .), %L ESTADO META SE ENCUENTRA EN EL NODO → %L TOTAL DE NODOS GENERADOS ES n Y ES EL NIVEL DONDE ENCONTRAMOS EL ESTADO META ,A TRAYECTORIA QUE DESCRIBE LA SOLUCIØN SE RECUPERA DE LA LISTA #%22!$/ → ↓ ← ↑ .), ,A SOLUCIØN EXPRESADA EN LENGUAJE DE ESTADOS Y OPERADORES QUEDA DE LA SIGUIENTE MANERA ↑←↓→ ,OS MÏTODOS DE BÞSQUEDA ANALIZADOS BREADTH lRST Y DEPTH lRST SE CONOCEN COMO CIEGOS YA QUE SON MÏTODOS EXHAUSTIVOS %N PRINCIPIO ESTOS MÏTODOS PROPORCIONAN UNA SOLUCIØN PARA ENCONTRAR UNA TRAYECTORIA PERO SON POCO PRÈCTICOS PORQUE EXPANDEN DE MASIADOS NODOS ADEMÈS SABEMOS QUE EXISTEN LÓMITES EN CUANTO A TIEMPO Y ESPACIO MEMORIA 5SANDO INFORMACIØN ESPECIAL DEL PROBLEMA Y SU REPRESENTACIØN SE PUEDE AUMENTAR LA VELOCIDAD %SA INFORMACIØN SE DENOMINA INFORMACIØN HEURÓSTICA %N EL CAMPO DE LA SOLUCIØN DE PROBLEMAS HEURÓSTICA SIGNIlCA ACELERAR EL PROCESO DE BÞSQUEDA HACIA LA META MEDIANTE LA EXPANSIØN DE LOS NODOS MÈS PROMISORIOS 5NO DE LOS TEMAS QUE OCUPA A LA INTELIGENCIA ARTIlCIAL ES PRECISAMENTE EL ESTUDIO DE MÏTODOS HEURÓSTICOS %N RESUMEN LOS MÏTODOS ANALIZADOS PUEDEN MEJORAR CONSIDERABLEMENTE SU DESEM PE×O SI LES INCORPORAMOS CONOCIMIENTO Y HEURÓSTICA 5NO DE LOS MÏTODOS HEURÓSTICOS DE MEJOR COMPORTAMIENTO SE CONOCE COMO !

,! #,!3% '2­&)#! 0ARA DElNIR LA CLASE GRÈlCA SE REQUIERE DETERMINAR SUS ATRIBUTOS Y LOS MÏTODOS NECESA RIOS PARA SU MANEJO ,OS ATRIBUTOS SON LOS VÏRTICES Y ARISTAS INDICANDO EN ESTAS ÞLTIMAS SI TIENEN DIRECCIØN Y COSTO 0ARA SU REPRESENTACIØN SE PUEDE UTILIZAR CUALQUIERA DE LAS ESTRUCTURAS PRESENTADAS %N CUANTO A LOS MÏTODOS ÏSTOS SERÈN LOS QUE PERMITAN ENCONTRAR UN VÏRTICE IMPRIMIR LA INFORMACIØN DE VÏRTICES Y ARISTAS ASÓ COMO ENCONTRAR TRAYECTORIAS SEGÞN EL TIPO DE GRÈlCA QUE SE ESTÏ REPRESENTANDO %S RECOMENDABLE QUE SE DElNA UNA CLASE POR TIPO DE GRÈlCA %S DECIR UNA PARA LAS GRÈlCAS DIRIGIDAS Y OTRA PARA LAS GRÈlCAS NO DIRIGIDAS %N CADA UNA DE ELLAS SE DEBERÈ INCLUIR COMO MÏTODOS LOS ALGORITMOS ESTUDIADOS EN ESTE CAPÓTULO


&+&3$*$*04

321

▼ %*%2#)#)/3 Ê £° 0ARA CADA UNA DE LAS GRÈlCAS DE LA lGURA INDIQUE A B C D E F G H I

!QUELLAS QUE SON GRÈlCAS CONECTADAS !QUELLAS QUE SON GRÈlCAS CÓCLICAS !QUELLAS QUE SON GRÈlCAS CONEXAS !QUELLAS QUE SON GRÈlCAS COMPLETAS 4ODOS LOS PARES DE VÏRTICES ADYACENTES 5N CAMINO ENTRE LOS VÏRTICES A Y C SI ES POSIBLE 5N CAMINO CERRADO ENTRE CUALQUIER PAR DE VÏRTICES SI ES POSIBLE 5N CAMINO SIMPLE ENTRE CUALQUIER PAR DE VÏRTICES SI ES POSIBLE %L GRADO DE CADA VÏRTICE

Ê Ó° 5TILICE UNA MATRIZ DE ADYACENCIA Y UNA LISTA SIMILAR PARA REPRESENTAR LAS GRÈlCAS DE LA lGURA A Y B Ê Î° 5TILICE UNA MATRIZ DE ADYACENCIA Y UNA LISTA DE ADYACENCIA PARA REPRESENTAR LA DIGRÈ lCA DE LA lGURA

&)'52!


322 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4

&)'52!

Ê {° 5TILICE UNA MATRIZ DE COSTOS PARA REPRESENTAR LA GRÈlCA DE LA lGURA Ê x° 5TILICE UNA MATRIZ DE COSTOS PARA REPRESENTAR LAS DIGRÈlCAS DE LA lGURA A Y B Ê È° $ADA LA DIGRÈlCA REPRESENTADA EN LA lGURA INDIQUE CUÈLES DE LAS SIGUIENTES SUCESIONES DE ÓNDICES DESCRIBEN UN CAMINO EN ELLA A B C D E

&)'52!


&+&3$*$*04 &)'52!

Ê Ç° $ADA LA DIGRÈlCA DE LA lGURA ENCUENTRE UN CAMINO ACÓCLICO DE A B C D E

A A A A A

Ê n° $ADA LA DIGRÈlCA DE LA lGURA A %NCUENTRE LA TRAYECTORIA MÈS CORTA DEL VÏRTICE A A TODOS LOS OTROS VÏRTICES B 5TILICE UNA MATRIZ DE COSTOS PARA REPRESENTARLA

&)'52!

323


324 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 &)'52!

Ê ° $ADA LA SIGUIENTE MATRIZ DE ADYACENCIA DIBUJE LA GRÈlCA CORRESPONDIENTE

&)'52!


&+&3$*$*04

325

£ä° $ADA LA SIGUIENTE MATRIZ DE ADYACENCIA DIBUJE LA DIGRÈlCA CORRESPONDIENTE

££° $ADA LA SIGUIENTE MATRIZ DE COSTOS DIBUJE LA DIGRÈlCA CORRESPONDIENTE

£Ó° !PLIQUE EL ALGORITMO DE $IJKSTRA A LA DIGRÈlCA DE LA lGURA B 4OME EL VÏRTICE A COMO VÏRTICE ORIGEN #ONSTRUYA LA TABLA CORRESPONDIENTE AL SEGUIMIENTO DEL ALGORIT MO £Î° !PLIQUE EL ALGORITMO DE &LOYD A LA DIGRÈlCA DE LA lGURA #ONSTRUYA LA TABLA CORRESPONDIENTE AL SEGUIMIENTO DEL ALGORITMO £{° !PLIQUE EL ALGORITMO DE 7ARSHALL A LA DIGRÈlCA DE LA lGURA #ONSTRUYA LA TABLA CORRESPONDIENTE AL SEGUIMIENTO DEL ALGORITMO


326 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 £x° !PLIQUE EL ALGORITMO DE 0RIM A LA GRÈlCA DE LA lGURA #ONSTRUYA LA TABLA CO RRESPONDIENTE AL SEGUIMIENTO DEL ALGORITMO £È° !PLIQUE EL ALGORITMO DE +RUSKAL A LA GRÈlCA DE LA lGURA #ONSTRUYA LA TABLA CORRESPONDIENTE AL SEGUIMIENTO DEL ALGORITMO £Ç° %SCRIBA UN ALGORITMO QUE PERMITA ALMACENAR UNA GRÈlCA POR MEDIO DE A 5NA MATRIZ DE ADYACENCIA B 5NA LISTA DE ADYACENCIA £n° %SCRIBA UN ALGORITMO QUE PERMITA ALMACENAR UNA DIGRÈlCA POR MEDIO DE UNA MATRIZ DE COSTOS £ ° %SCRIBA UN ALGORITMO QUE PERMITA DADA UNA GRÈlCA ALMACENADA POR MEDIO DE UNA MATRIZ DE ADYACENCIA IMPRIMIR TODOS LOS PARES DE VÏRTICES ADYACENTES Óä° %SCRIBA UNA VERSIØN MODIlCADA DEL ALGORITMO DE $IJKSTRA QUE PERMITA ELEGIR EL CA MINO CON EL MENOR NÞMERO DE ARISTAS EN CASO DE TRAYECTORIAS CON IGUAL COSTO Ó£° %SCRIBA UN ALGORITMO QUE PERMITA ELIMINAR LAS ARISTAS NECESARIAS PARA OBTENER COMO RESULTADO UNA GRÈlCA ACÓCLICA ÓÓ° #ONSIDERE QUE HAY CUATRO TIPOS DE SANGRE ! " !" Y / !DEMÈS SE SABE QUE EL TIPO / ES COMPATIBLE hPUEDE DONAR Av CON CUALQUIERA DE LOS CUATRO TIPOS EL TIPO ! ES COMPATIBLE CON SU TIPO Y CON EL TIPO !" EL TIPO " ES COMPATIBLE CON SU TIPO Y CON EL TIPO !" Y EL TIPO !" SØLO PUEDE DONAR A SU MISMO TIPO 5TILICE UNA GRÈlCA PARA REPRESENTAR ESTA INFORMACIØN z1UÏ TIPO DE GRÈlCA SERÈ LA MÈS APROPIADA *USTIlQUE SU RESPUESTA Óΰ 0IENSE EN LA RECETA PARA PREPARAR SU PLATILLO FAVORITO ,AS OPERACIONES INVOLUCRADAS JUNTO CON EL TIEMPO REQUERIDO PARA SU REALIZACIØN PUEDEN REPRESENTARSE POR MEDIO DE UNA GRÈlCA %N ELLA SE PUEDEN INDICAR LAS TAREAS A REALIZAR SIMULTÈNEAMENTE ASÓ COMO AQUELLAS QUE DEBEN SEGUIR CIERTA SERIACIØN 5TILICE UNA GRÈlCA Y REPRESÏNTELA CONSIDERANDO QUE A 5STED NO CUENTA CON AYUDA Y POR LO TANTO VA A LLEVAR A CABO CADA UNA DE LAS ACTIVI DADES REQUERIDAS B 5STED CUENTA CON TANTOS AYUDANTES COMO DESEE Y POR LO TANTO CIERTAS TAREAS SE PUE DEN REALIZAR PARALELAMENTE Ó{° 3E QUIERE REPRESENTAR UNA TOPOLOGÓA DE UNA RED TELEFØNICA DONDE SE DISTINGUEN CEN TRALES DE CONMUTACIØN Y ENLACES ENTRE LAS CENTRALES ,OS ENLACES ENTRE LAS CENTRALES SON BIDIRECCIONALES Y CON DIFERENTES CAPACIDADES DE TRANSMISIØN CANALES DE VOZ 5TILICE UNA GRÈlCA PARA REPRESENTAR UNA RED DE ESTE TIPO z1UÏ TIPO DE GRÈlCA SERÈ LA MÈS APROPIADA z#ØMO SE MODIlCA LA GRÈlCA SI CAMBIAN LAS CAPACIDADES z1UÏ OPERACIONES SOBRE ESTA GRÈlCA PODRÓAN SER DE INTERÏS *USTIlQUE SUS RESPUESTAS


&+&3$*$*04

327

Óx° 3E TIENE UN ALFABETO QUE CONSISTE EN TODAS LAS PALABRAS BINARIAS DE TRES BITS !L TRANSMITIRLOS A TRAVÏS DE UN CANAL CON RUIDO SE ORIGINAN CAMBIOS Y POR LO TANTO SE ORIGINA TRANSICIØN ENTRE LAS PALABRAS TRANSMITIDAS 0OR EJEMPLO SI LA PALABRA TRANS MITIDA ES LA RECIBIDA PODRÓA SER 3UPONGA QUE EN CADA PALABRA TRANSMITIDA PUEDE HABER SØLO UN DÓGITO CON ERROR #ON UNA GRÈlCA REPRESENTE TODAS LAS PALABRAS DEL ALFABETO Y LAS TRANSICIONES QUE PUEDEN ORIGINARSE A OTRAS PALABRAS AL TRANSMITIRLAS A TRAVÏS DEL CANAL CON RUIDO z1UÏ TIPO DE GRÈlCA SERÈ LA MÈS APROPIADA *USTIlQUE SU RESPUESTA ÓÈ° 3E TIENEN TRES JARRAS DE AGUA CON CAPACIDADES DE CINCO TRES Y SIETE LITROS .INGUNA DE ELLAS PRESENTA MARCAS DE MEDICIØN 3E TIENE UNA BOMBA QUE PERMITE LLENAR LAS JA RRAS DE AGUA z#ØMO SE PUEDEN COLOCAR EXACTAMENTE CUATRO LITROS DE AGUA EN LA JARRA DE CINCO LITROS DE CAPACIDAD ÓÇ° 4RES MISIONEROS Y TRES CANÓBALES SE ENCUENTRAN SOBRE LA ORILLA DE UN RÓO 4ODOS QUIE REN LLEGAR A LA OTRA ORILLA PERO ÞNICAMENTE HAY UN BOTE PARA DOS PERSONAS ,OS MI SIONEROS PARA NO CORRER EL RIESGO DE SER COMIDOS QUIEREN QUE SU NÞMERO NUNCA SEA MENOR QUE EL DE CANÓBALES EN EL MISMO LADO DEL RÓO z#ØMO PUEDEN CRUZAR TODOS SIN QUE LOS MISIONEROS ESTÏN EN PELIGRO Ón° -UESTRE QUE LA CADENA PERTENECE AL LENGUAJE GENERADO POR LA GRAMÈTICA ' APLICANDO LAS SIGUIENTES REGLAS DE REESCRITURA

3 ← ! ← 3 ! ← ! ! 3 ← !

Ó ° #ONSIDERE EL ESTADO INICIAL EL ESTADO lNAL Y LOS OPERADORES QUE SE DAN A CONTINUA CIØN %NCUENTRE LA SOLUCIØN AL PROBLEMA


328 >« ÌÕ ÊÇÊ Ê Ê (3Ç'*$"4 Îä° $ElNA LA CLASE 'RÈlCA CORRESPONDIENTE A UNA GRÈlCA NO DIRIGIDA UTILIZANDO UNA MATRIZ DE COSTOS PARA ALMACENAR LAS ARISTAS Y SUS COSTOS Σ° 2ETOME EL PROBLEMA ANTERIOR E INCLUYA LOS MÏTODOS NECESARIOS PARA IMPLEMENTAR LOS ALGORITMOS DE 0RIM Y +RUSKAL ÎÓ° $ElNA LA CLASE $IGRÈlCA CORRESPONDIENTE A UNA GRÈlCA DIRIGIDA UTILIZANDO UNA LISTA DE ADYACENCIA PARA ALMACENAR LAS ARISTAS Y SUS COSTOS 0UEDE REUSAR LA CLASE ,ISTAS DEL CAPÓTULO Îΰ 2ETOME EL PROBLEMA ANTERIOR E INCLUYA EN LA CLASE LOS MÏTODOS NECESARIOS PARA IM PLEMENTAR LOS ALGORITMOS DE $IJKSTRA &LOYD Y 7ARSHALL


#APÓTULO

n

-³4/$/3 $% /2$%.!#)¼. ).42/$5##)¼. /RDENAR SIGNIlCA REAGRUPAR O REORGANIZAR UN CONJUNTO DE DATOS U OBJETOS EN UNA SE CUENCIA ESPECÓlCA ,OS PROCESOS DE ORDENACIØN Y BÞSQUEDA ESTE ÞLTIMO SE ESTUDIARÈ EN EL SIGUIENTE CAPÓTULO SON FRECUENTES EN NUESTRA VIDA 6IVIMOS EN UN MUNDO DE SARROLLADO AUTOMATIZADO ACELERADO DONDE LA INFORMACIØN REPRESENTA UN ELEMENTO DE VITAL IMPORTANCIA ,A SOCIEDAD DEBE ESTAR INFORMADA Y POR LO TANTO CONSTANTEMENTE SE NECESITA BUSCAR Y RECUPERAR INFORMACIØN ,A OPERACIØN DE BÞSQUEDA RECUPERACIØN DE INFORMACIØN NORMALMENTE SE EFEC TÞA SOBRE ELEMENTOS ORDENADOS LO QUE DEMUESTRA QUE EN GENERAL DONDE HAYA OBJETOS QUE SE DEBAN BUSCAR Y RECUPERAR ESTARÈ PRESENTE EL PROCESO DE ORDENACIØN ,OS OBJETOS ORDENADOS APARECEN POR DOQUIER $IRECTORIOS TELEFØNICOS REGISTROS DE PACIENTES DE UN HOSPITAL REGISTROS DE HUÏSPEDES DE UN HOTEL ÓNDICES DE LIBROS DE UNA BI BLIOTECA SON TAN SØLO ALGUNOS EJEMPLOS DE OBJETOS ORDENADOS CON LOS QUE EL SER HUMANO SE ENCUENTRA FRECUENTEMENTE )NCLUSO Y DE MANERA INFORMAL SE PUEDE SE×ALAR QUE DESDE NI×O SE NOS ENSE×A A SER ORGANIZADO A PONER LAS COSAS EN ORDEN ,A ORDENACIØN ES UNA ACTIVIDAD FUNDAMENTAL Y RELEVANTE EN LA VIDA )MAGINE EL LEC TOR QUÏ OCURRIRÓA SI SE DESEARA ENCONTRAR UN LIBRO EN UNA BIBLIOTECA CON MÈS DE VOLÞMENES Y ÏSTOS ESTUVIERAN DESORDENADOS O REGISTRADOS EN LOS ÓNDICES EN EL ORDEN EN EL CUAL FUERON RECIBIDOS O POR EJEMPLO SI SE QUISIERA HABLAR POR TELÏFONO CON UNA PERSONA Y SE ENCONTRARA QUE EN EL DIRECTORIO LOS ABONADOS ESTÈN ORDENADOS SEGÞN SU NÞMERO TE LEFØNICO EN FORMA ASCENDENTE O DESCENDENTE ,A TAREA SERÓA MAYÞSCULA PERO SIN NINGÞN SENTIDO &ORMALMENTE SE DElNE ORDENACIØN DE LA SIGUIENTE MANERA 3EA ! UNA LISTA DE . ELEMENTOS ! ! ! !. /RDENAR SIGNIlCA PERMUTAR ESTOS ELEMENTOS DE TAL FORMA QUE QUEDEN DE ACUERDO CON UNA DISTRIBUCIØN PREESTABLECIDA


330 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ◗ ◗

!SCENDENTE ! ≤ ! ≤ ! ≤ ≤ !. $ESCENDENTE ! ≥ ! ≥ ! ≥ ≥ !.

%N EL PROCESAMIENTO DE DATOS A LOS MÏTODOS DE ORDENACIØN SE LES CLASIlCA EN DOS GRANDES CATEGORÓAS SEGÞN DONDE HAYAN SIDO ALMACENADOS ◗ ◗

/RDENACIØN DE ARREGLOS /RDENACIØN DE ARCHIVOS

,A PRIMERA CATEGORÓA SE DENOMINA TAMBIÏN ORDENACIØN INTERNA YA QUE LOS ELEMEN TOS O COMPONENTES DEL ARREGLO SE ENCUENTRAN EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA ,A SEGUNDA CATEGORÓA SE LLAMA ORDENACIØN EXTERNA YA QUE LOS ELEMENTOS SE ENCUENTRAN EN ARCHIVOS ALMACENADOS EN DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO COMO DISCOS CINTAS TAMBORES ETCÏTERA 3I SE BUSCARA UNA ANALOGÓA ENTRE LOS MÏTODOS DE ORDENACIØN Y LA VIDA REAL SE PODRÓA MENCIONAR QUE PARA LA MÈQUINA LA ORDENACIØN INTERNA REPRESENTA LO QUE PARA UN HUMANO SIGNIlCA ORDENAR UN CONJUNTO DE TARJETAS QUE SE ENCUENTRAN VISIBLES Y EXTENDIDAS TODAS SOBRE UNA MESA ,A ORDENACIØN EXTERNA EN CAMBIO REPRESENTA PARA LA MÈQUINA LO QUE PARA UN HUMANO SIGNIlCA ORDENAR UN CONJUNTO DE TARJETAS QUE ESTÈN DISPUESTAS UNA DEBA JO DE OTRA Y EN DONDE SØLO SE VISUALIZA LA PRIMERA %N LA PRIMERA PARTE DE ESTE CAPÓTULO SE ESTUDIARÈN LOS MÏTODOS MÈS IMPORTANTES DE ORDENACIØN INTERNA Y POSTERIORMENTE LOS MÈS INTERESANTES DE ORDENACIØN EXTERNA

&)'52! /RDENACIØN INTERNA


03%&/"$*Î/ */5&3/"

331

&)'52! /RDENACIØN EXTERNA

/2$%.!#)¼. ).4%2.! ,OS MÏTODOS DE ORDENACIØN INTERNA SE EXPLICARÈN CON ARREGLOS UNIDIMENSIONALES PERO SU USO PUEDE EXTENDERSE A OTROS TIPOS DE ARREGLOS Y ESTRUCTURAS DE DATOS %S IMPORTANTE SE×ALAR ADEMÈS QUE SE TRABAJARÈ CON MÏTODOS DE ORDENACIØN IN SITU ES DECIR MÏTODOS QUE NO REQUIEREN DE ARREGLOS AUXILIARES PARA SU ORDENACIØN ,OS MÏTODOS QUE REQUIE REN DE ARREGLOS AUXILIARES SON GENERALMENTE INElCIENTES E INTRÓNSECAMENTE DE MENOR INTERÏS ,OS MÏTODOS DE ORDENACIØN INTERNA A SU VEZ SE PUEDEN CLASIlCAR EN DOS TIPOS ◗ ◗

-ÏTODOS DIRECTOS N -ÏTODOS LOGARÓTMICOS N LOG N

,OS MÏTODOS DIRECTOS TIENEN LA CARACTERÓSTICA DE QUE SU IMPLEMENTACIØN ES RELATI VAMENTE SENCILLA Y SON FÈCILES DE COMPRENDER AUNQUE SON INElCIENTES CUANDO . EL NÞMERO DE ELEMENTOS DEL ARREGLO ES DE TAMA×O MEDIANO O GRANDE ,OS MÏTODOS LO GARÓTMICOS POR SU PARTE SON MÈS COMPLEJOS QUE LOS DIRECTOS 3U ELABORACIØN ES MÈS SOlSTICADA Y AL SER MENOS INTUITIVOS RESULTAN MÈS DIFÓCILES DE ENTENDER 3IN EMBARGO SON MÈS ElCIENTES YA QUE REQUIEREN DE MENOS COMPARACIONES Y MOVIMIENTOS PARA OR DENAR SUS ELEMENTOS %S IMPORTANTE DESTACAR QUE UNA BUENA MEDIDA DE ElCIENCIA ENTRE LOS DISTINTOS MÏTO DOS LA CONSTITUYE EL TIEMPO DE EJECUCIØN DEL ALGORITMO Y ÏSTE DEPENDE FUNDAMENTALMEN TE DEL NÞMERO DE COMPARACIONES Y MOVIMIENTOS QUE SE REALICEN ENTRE SUS ELEMENTOS #OMO CONCLUSIØN SE PUEDE SE×ALAR QUE CUANDO . ES PEQUE×O SE DEBEN UTILIZAR MÏ TODOS DIRECTOS Y CUANDO . ES MEDIANO O GRANDE SE USARÈN MÏTODOS LOGARÓTMICOS ,OS MÏTODOS DIRECTOS MÈS CONOCIDOS SON


332 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ◗ ◗ ◗

/RDENACIØN POR INTERCAMBIO /RDENACIØN POR INSERCIØN /RDENACIØN POR SELECCIØN

/RDENACIØN POR INTERCAMBIO DIRECTO BURBUJA %L MÏTODO DE INTERCAMBIO DIRECTO CONOCIDO COLOQUIALMENTE COMO BURBUJA ES EL MÈS UTILIZADO ENTRE LOS ESTUDIANTES PRINCIPIANTES DE COMPUTACIØN POR SU FÈCIL COMPRENSIØN Y PROGRAMACIØN 0ERO ES PRECISO SE×ALAR QUE ES QUIZÈS EL MÏTODO MÈS INElCIENTE %L MÏTODO DE INTERCAMBIO DIRECTO PUEDE TRABAJAR DE DOS MANERAS DIFERENTES LLEVAN DO LOS ELEMENTOS MÈS PEQUE×OS HACIA LA PARTE IZQUIERDA DEL ARREGLO O TRASLADANDO LOS ELEMENTOS MÈS GRANDES HACIA SU PARTE DERECHA ,A IDEA BÈSICA DE ESTE ALGORITMO CONSISTE EN COMPARAR PARES DE ELEMENTOS ADYACENTES E INTERCAMBIARLOS ENTRE SÓ HASTA QUE TODOS SE ENCUENTREN ORDENADOS 3E REALIZAN N n PASADAS TRANSPORTANDO EN CADA UNA DE ELLAS EL MENOR O MAYOR DE ELEMENTOS SEGÞN SEA EL CASO A SU POSICIØN IDEAL !L lNAL DE LAS N n PASADAS LOS ELEMENTOS DEL ARREGLO ESTARÈN ORDENADOS

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! TRANSPORTANDO EN CADA PASADA EL MENOR ELEMENTO HACIA LA PARTE IZQUIERDA DEL ARREGLO ! ,AS COMPARACIONES QUE SE REALIZAN SON 02)-%2! 0!3!$! !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

,UEGO DE LA PRIMERA PASADA EL ARREGLO QUEDA ASÓ ! /BSERVE QUE EL ELEMENTO MÈS PEQUE×O EN ESTE CASO FUE SITUADO EN LA PARTE IZQUIERDA DEL ARREGLO 3%'5.$! 0!3!$! !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO


03%&/"$*Î/ */5&3/" !; = !; = !; = !; = !; = !; =

333

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

,UEGO DE LA SEGUNDA PASADA EL ARREGLO QUEDA ASÓ ! Y EL SEGUNDO ELEMENTO MÈS PEQUE×O DEL ARREGLO EN ESTE CASO FUE SITUADO EN LA SE GUNDA POSICIØN %N LA TABLA SE PRESENTA EL RESULTADO DE LAS PASADAS RESTANTES 4!",!

A PASADA

A PASADA

A PASADA

A PASADA

A PASADA

%L ALGORITMO DE ORDENACIØN POR EL MÏTODO DE INTERCAMBIO DIRECTO QUE TRANSPORTA EN CADA PASADA EL MENOR ELEMENTO HACIA LA PARTE IZQUIERDA DEL ARREGLO ES EL SIGUIENTE !LGORITMO "URBUJA?MENOR "URBUJA?MENOR ! . [%STE ALGORITMO ORDENA LOS ELEMENTOS DEL ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO DE LA BURBUJA 4RANSPORTA EN CADA PASADA EL ELEMENTO MÈS PEQUE×O HACIA LA PARTE IZQUIERDA DEL ARREGLO ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) * Y !58 SON VARIABLES DE TIPO ENTERO] 2EPETIR CON ) DESDE HASTA . 2EPETIR CON * DESDE . HASTA ) 3I ! * n !;*= ENTONCES (ACER !58 ← !;* n = !;* n = ← !;)= Y !;)= ← !58 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! TRANSPORTANDO EN CADA PASADA EL MAYOR ELEMENTO HACIA LA PARTE DERECHA DEL ARREGLO !


334 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ,AS COMPARACIONES QUE SE REALIZAN SON 02)-%2! 0!3!$! !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! /BSERVE QUE EL ELEMENTO MÈS GRANDE EN ESTE CASO FUE SITUADO EN LA ÞLTIMA PO SICIØN DEL ARREGLO 3%'5.$! 0!3!$! !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; =

SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! Y EL SEGUNDO ELEMENTO MÈS GRANDE DEL ARREGLO EN ESTE CASO FUE SITUADO EN LA PENÞL TIMA POSICIØN %N LA TABLA SE VE EL RESULTADO DE LAS PASADAS RESTANTES 4!",!

A PASADA

A PASADA

A PASADA

A PASADA

A PASADA

%L ALGORITMO DE ORDENACIØN POR EL MÏTODO DE INTERCAMBIO DIRECTO QUE TRANSPORTA EN CADA PASADA EL ELEMENTO MAYOR HACIA LA PARTE DERECHA DEL ARREGLO ES !LGORITMO "URBUJA?MAYOR


03%&/"$*Î/ */5&3/"

335

"URBUJA?MAYOR ! . [%L ALGORITMO ORDENA LOS ELEMENTOS DEL ARREGLO UNIDIMENSIONAL ! 4RANSPORTA EN CADA PASADA EL ELEMENTO MÈS GRANDE HACIA LA PARTE DERECHA DEL ARREGLO ! ES UN ARREGLO DE . ELEMENTOS] [) * Y !58 SON VARIABLES DE TIPO ENTERO] 2EPETIR CON ) DESDE . n HASTA 2EPETIR CON * DESDE HASTA ) 3I !;*= ! ;* = ENTONCES (ACER !58 ← !;*= !;*= ← !;* = Y !;* = ← !58 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]

!NÉLISIS DE ElCIENCIA DEL MÏTODO DE INTERCAMBIO DIRECTO %L NÞMERO DE COMPARACIONES QUE SE REALIZAN EN EL MÏTODO DE LA BURBUJA SE PUEDE CON TABILIZAR FÈCILMENTE %N LA PRIMERA PASADA SE REALIZAN N n COMPARACIONES EN LA SE GUNDA PASADA N COMPARACIONES EN LA TERCERA PASADA N n COMPARACIONES Y ASÓ SUCESIVAMENTE HASTA LLEGAR A Y COMPARACIONES ENTRE CLAVES SIENDO N EL NÞMERO DE ELEMENTOS DEL ARREGLO 0OR LO TANTO TENEMOS QUE EL NÞMERO DE COMPARACIONES ES # N N x QUE ES IGUAL A

N N

N N #

▼ &ØRMULA

#OMO YA SE MENCIONØ EN EL CAPÓTULO SE HACE USO DEL PRINCIPIO DE INDUCCIØN MA TEMÈTICA PARA DESARROLLAR CIERTAS FØRMULAS 2ESPECTO DEL NÞMERO DE MOVIMIENTOS ÏSTOS DEPENDEN FUNDAMENTALMENTE DE SI EL ARREGLO SE ENCUENTRA ORDENADO DESORDENADO O EN ORDEN INVERSO ,OS MOVIMIENTOS PARA CADA UNO DE ESTOS CASOS SON

-MÓN

-MED N n N

-MÈX N n N

▼ &ØRMULA

!SÓ POR EJEMPLO SI SE TIENE QUE ORDENAR UN ARREGLO QUE CONTIENE ELEMENTOS EL NÞMERO DE MOVIMIENTOS QUE SE TENDRÈ QUE REALIZAR ES A 3I EL ARREGLO SE ENCUENTRA ORDENADO ◗ COMPARACIONES ◗ MOVIMIENTOS B 3I LOS ELEMENTOS DEL ARREGLO SE ENCUENTRAN DISPUESTOS EN FORMA ALEATORIA ◗ COMPARACIONES ◗ MOVIMIENTOS


336 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ C 3I LOS ELEMENTOS DEL ARREGLO SE ENCUENTRAN EN ORDEN INVERSO ◗ COMPARACIONES ◗ MOVIMIENTOS !HORA BIEN EL TIEMPO NECESARIO PARA EJECUTAR EL ALGORITMO DE LA BURBUJA ES PROPOR CIONAL A N / N DONDE N ES EL NÞMERO DE ELEMENTOS DEL ARREGLO ! CONTINUACIØN SE PRESENTARÈN DOS VARIANTES DEL MÏTODO DE INTERCAMBIO DIRECTO MÏTODO DE INTERCAMBIO DIRECTO CON SE×AL Y MÏTODO DE SHAKER SORT

/RDENACIØN POR EL MÏTODO DE INTERCAMBIO DIRECTO CON SE×AL %STE MÏTODO ES UNA MODIlCACIØN DEL MÏTODO DE INTERCAMBIO DIRECTO ANALIZADO EN LA SECCIØN ANTERIOR ,A IDEA CENTRAL DE ESTE ALGORITMO CONSISTE EN UTILIZAR UNA MARCA O SE×AL PARA INDICAR QUE NO SE HA PRODUCIDO NINGÞN INTERCAMBIO EN UNA PASADA %S DECIR SE COMPRUEBA SI EL ARREGLO ESTÈ TOTALMENTE ORDENADO DESPUÏS DE CADA PASADA TERMINANDO SU EJECUCIØN EN CASO AlRMATIVO %L ALGORITMO DE ORDENACIØN POR EL MÏTODO DE LA BURBUJA CON SE×AL ES !LGORITMO "URBUJA?SE×AL "URBUJA?SE×AL ! . [%L ALGORITMO ORDENA LOS ELEMENTOS DEL ARREGLO UTILIZANDO EL MÏTODO DE LA BURBUJA CON SE×AL ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) * Y !58 SON VARIABLES DE TIPO ENTERO "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] (ACER ) ← Y "!.$ ← &!,3/ -IENTRAS ) ≤ . n Y "!.$ &!,3/ 2EPETIR (ACER "!.$ ← 6%2$!$%2/ 2EPETIR CON * DESDE HASTA . n 3I !;*= !;* = ENTONCES (ACER !58 ← !;*= !;*= ← !;* = !;* = ← !58 Y "!.$ ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] (ACER ) ← ) [&IN DEL CICLO DEL PASO ]

! CONTINUACIØN PRESENTAMOS LA SEGUNDA VARIANTE DEL MÏTODO DE INTERCAMBIO DI RECTO


03%&/"$*Î/ */5&3/"

337

/RDENACIØN POR EL MÏTODO DE LA SACUDIDA SHAKER SORT %L MÏTODO DE SHAKER SORT MÈS CONOCIDO COMO EL MÏTODO DE LA SACUDIDA ES UNA OPTIMI ZACIØN DEL MÏTODO DE INTERCAMBIO DIRECTO ,A IDEA BÈSICA DE ESTE ALGORITMO CONSISTE EN MEZCLAR LAS DOS FORMAS EN QUE SE PUEDE REALIZAR EL MÏTODO DE LA BURBUJA %N ESTE ALGORITMO CADA PASADA TIENE DOS ETAPAS %N LA PRIMERA ETAPA DE DERECHA A IZQUIERDA SE TRASLADAN LOS ELEMENTOS MÈS PEQUE×OS HACIA LA PARTE IZQUIERDA DEL ARRE GLO ALMACENANDO EN UNA VARIABLE LA POSICIØN DEL ÞLTIMO ELEMENTO INTERCAMBIADO %N LA SEGUNDA ETAPA DE IZQUIERDA A DERECHA SE TRASLADAN LOS ELEMENTOS MÈS GRANDES HACIA LA PARTE DERECHA DEL ARREGLO ALMACENANDO EN OTRA VARIABLE LA POSICIØN DEL ÞLTIMO ELE MENTO INTERCAMBIADO ,AS SUCESIVAS PASADAS TRABAJAN CON LOS COMPONENTES DEL ARREGLO COMPRENDIDOS ENTRE LAS POSICIONES ALMACENADAS EN LAS VARIABLES AUXILIARES %L ALGORITMO TERMINA CUANDO EN UNA ETAPA NO SE PRODUCEN INTERCAMBIOS O BIEN CUANDO EL CONTENIDO DE LA VARIABLE QUE GUARDA EL EXTREMO IZQUIERDO DEL ARREGLO ES MAYOR QUE EL CONTENIDO DE LA VARIABLE QUE ALMACENA EL EXTREMO DERECHO

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! UTILIZANDO EL MÏTODO DE LA SACUDIDA ! 02)-%2! 0!3!$! 0RIMERA ETAPA DE DERECHA A IZQUIERDA !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

ÁLTIMA POSICIØN DE INTERCAMBIO DE DERECHA A IZQUIERDA ,UEGO DE LA PRIMERA ETAPA DE LA PRIMERA PASADA EL ARREGLO QUEDA ASÓ ! 3EGUNDA ETAPA DE IZQUIERDA A DERECHA !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

ÁLTIMA POSICIØN DE INTERCAMBIO DE IZQUIERDA A DERECHA


338 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ,UEGO DE LA SEGUNDA ETAPA DE LA PRIMERA PASADA EL ARREGLO QUEDA ASÓ ! 3%'5.$! 0!3!$! 0RIMERA ETAPA DE DERECHA A IZQUIERDA !; = !; = !; = !; = !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

ÁLTIMA POSICIØN DE INTERCAMBIO DE DERECHA A IZQUIERDA ! 3EGUNDA ETAPA DE IZQUIERDA A DERECHA !; = !; = !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO NO HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

ÁLTIMA POSICIØN DE INTERCAMBIO DE IZQUIERDA A DERECHA ! !L REALIZAR LA PRIMERA ETAPA DE LA TERCERA PASADA SE OBSERVA QUE NO SE REALIZARON INTERCAMBIOS POR LO TANTO LA EJECUCIØN DEL ALGORITMO SE TERMINA %L ALGORITMO DE ORDE NACIØN POR EL MÏTODO DE LA SACUDIDA ES EL SIGUIENTE !LGORITMO 3ACUDIDA 3ACUDIDA ! . [%L ALGORITMO ORDENA LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO DE LA SACUDIDA ! ES UN ARREGLO DE . ELEMENTOS] [) ):1 $%2 + Y !58 SON VARIABLES DE TIPO ENTERO] (ACER ):1 ← $%2 ← . Y + ← . -IENTRAS $%2 ≥ ):1 2EPETIR 2EPETIR CON ) DESDE $%2 HASTA ):1 [#ICLO DESCENDENTE]


03%&/"$*Î/ */5&3/"

339

3I !;) n = !;)= ENTONCES (ACER !58 ← !;) n = !;) n = ← !;)= !;)= ← !58 Y + ← ) [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] (ACER ):1 ← + 2EPETIR CON ) DESDE ):1 HASTA $%2 [#ICLO ASCENDENTE] 3I !;) n = !;)= ENTONCES (ACER !58 ← !;) n = !;) n = ← !;)= !;)= ← !58 Y + ← ) [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] (ACER $%2 ← + n [&IN DEL CICLO ]

!NÉLISIS DE ElCIENCIA DEL MÏTODO DE LA SACUDIDA %L ANÈLISIS DEL MÏTODO DE LA SACUDIDA Y EN GENERAL EL DE LOS MÏTODOS MEJORADOS Y LOGA RÓTMICOS ES MUY COMPLEJO 0ARA EL ANÈLISIS DE ESTE MÏTODO ES NECESARIO TENER EN CUENTA TRES FACTORES QUE AFECTAN DIRECTAMENTE AL TIEMPO DE EJECUCIØN DEL ALGORITMO LAS COM PARACIONES ENTRE LAS CLAVES LOS INTERCAMBIOS ENTRE ELLAS Y LAS PASADAS QUE SE REALIZAN %NCONTRAR FØRMULAS QUE PERMITAN CALCULAR CADA UNO DE ESTOS FACTORES ES UNA TAREA MUY DIFÓCIL DE REALIZAR ,OS ESTUDIOS QUE SE HAN EFECTUADO SOBRE EL MÏTODO DE LA SACUDIDA DEMUESTRAN QUE EN ÏL SØLO SE PUEDEN REDUCIR LAS DOBLES COMPARACIONES ENTRE CLAVES PERO SE DEBE RECOR DAR QUE LA OPERACIØN DE INTERCAMBIO ES UNA TAREA MÈS COMPLICADA Y COSTOSA QUE LA DE COMPARACIØN 0OR LO TANTO ES POSIBLE AlRMAR QUE LAS HÈBILES MEJORAS REALIZADAS SOBRE EL MÏTODO DE INTERCAMBIO DIRECTO SØLO PRODUCEN RESULTADOS APRECIABLES SI EL ARREGLO ESTÈ PARCIALMENTE ORDENADO LO CUAL RESULTA DIFÓCIL SABER DE ANTEMANO PERO SI EL ARREGLO ESTÈ DESORDENADO EL MÏTODO SE COMPORTA INCLUSO PEOR QUE OTROS MÏTODOS DIRECTOS COMO LOS DE INSERCIØN Y SELECCIØN

/RDENACIØN POR INSERCIØN DIRECTA %L MÏTODO DE ORDENACIØN POR INSERCIØN DIRECTA ES EL QUE UTILIZAN GENERALMENTE LOS JU GADORES DE CARTAS CUANDO LAS ORDENAN DE AHÓ QUE TAMBIÏN SE CONOZCA CON EL NOMBRE DE MÏTODO DE LA BARAJA ,A IDEA CENTRAL DE ESTE ALGORITMO CONSISTE EN INSERTAR UN ELEMENTO DEL ARREGLO EN SU PARTE IZQUIERDA QUE YA SE ENCUENTRA ORDENADA %STE PROCESO SE REPITE DESDE EL SEGUNDO HASTA EL N ÏSIMO ELEMENTO /BSERVEMOS UN EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! UTILIZANDO EL MÏTODO DE INSERCIØN DIRECTA !


340 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ,AS COMPARACIONES QUE SE REALIZAN SON 02)-%2! 0!3!$! !; = !; =

NO HAY INTERCAMBIO

! 3%'5.$! 0!3!$! !; = !; = !; = !; =

SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! 4%2#%2! 0!3!$! !; = !; = !; = !; =

SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO

! /BSERVE QUE UNA VEZ QUE SE DETERMINA LA POSICIØN CORRECTA DEL ELEMENTO SE INTE RRUMPEN LAS COMPARACIONES 0OR EJEMPLO PARA EL CASO ANTERIOR NO SE REALIZØ LA COMPARA CIØN !; = !; = %N LA TABLA SE PRESENTA EL RESULTADO DE LAS PASADAS RESTANTES %L ALGORITMO DE ORDENACIØN POR EL MÏTODO DE INSERCIØN DIRECTA ES !LGORITMO )NSERCIØN )NSERCIØN ! . [%STE ALGORITMO ORDENA LOS ELEMENTOS DEL ARREGLO UTILIZANDO EL MÏTODO DE INSERCIØN DIRECTA ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) !58 Y + SON VARIABLES DE TIPO ENTERO] 2EPETIR CON ) DESDE HASTA . (ACER !58 ← !;)= Y + ← ) n -IENTRAS + ≥ Y !58 !;+= 2EPETIR (ACER !;+ = ← !;+= Y + ← + n [&IN DEL CICLO DEL PASO ] (ACER !;+ = ← !58 [&IN DEL CICLO DEL PASO ]

4!",!

A PASADA

A PASADA

A PASADA

A PASADA


03%&/"$*Î/ */5&3/"

341

!NÉLISIS DE ElCIENCIA DEL MÏTODO DE INSERCIØN DIRECTA %L NÞMERO MÓNIMO DE COMPARACIONES Y MOVIMIENTOS ENTRE CLAVES SE PRODUCE CUANDO LOS ELEMENTOS DEL ARREGLO YA ESTÈN ORDENADOS !NALICE EL SIGUIENTE CASO

%JEMPLO

3EA ! UN ARREGLO FORMADO POR LOS ELEMENTOS ! ,AS COMPARACIONES QUE SE REALIZAN SON 02)-%2! 0!3!$! !; = !; =

NO HAY INTERCAMBIO

3%'5.$! 0!3!$! !; = !; =

NO HAY INTERCAMBIO

4%2#%2! 0!3!$! !; = !; =

NO HAY INTERCAMBIO

#5!24! 0!3!$! !; = !; =

NO HAY INTERCAMBIO

,UEGO DE LAS COMPARACIONES REALIZADAS EL ARREGLO CORRESPONDIENTE QUEDA ASÓ ! /BSERVE QUE PARA ESTE EJEMPLO SE EFECTUARON CUATRO COMPARACIONES %N GENERAL PODEMOS AlRMAR QUE SI EL ARREGLO SE ENCUENTRA ORDENADO SE EFECTÞAN COMO MÈXIMO N n COMPARACIONES Y MOVIMIENTOS ENTRE ELEMENTOS

#MÓN N n

▼ &ØRMULA

%L NÞMERO MÈXIMO DE COMPARACIONES Y MOVIMIENTOS ENTRE ELEMENTOS SE PRODUCE CUANDO LOS ELEMENTOS DEL ARREGLO ESTÈN EN ORDEN INVERSO

%JEMPLO

3EA ! UN ARREGLO FORMADO POR LOS SIGUIENTES ELEMENTOS ! ,AS COMPARACIONES QUE SE REALIZAN SON


342 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ 02)-%2! 0!3!$! !; = !; =

SÓ HAY INTERCAMBIO

3%'5.$! 0!3!$! !; = !; = !; = !; =

SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

4%2#%2! 0!3!$! !; = !; = !; = !; = !; = !; =

SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

#5!24! 0!3!$! !; = !; = !; = !; = !; = !; = !; = !; =

SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO

/BSERVE QUE EN LA PRIMERA PASADA SE REALIZØ UNA COMPARACIØN EN LA SEGUNDA DOS COMPARACIONES EN LA TERCERA TRES COMPARACIONES Y ASÓ SUCESIVAMENTE HASTA N n COM PARACIONES ENTRE ELEMENTOS 0OR LO TANTO - MÈX x N

N N

QUE ES IGUAL A

#MÈX

N

N

▼ &ØRMULA

!HORA BIEN EL NÞMERO DE COMPARACIONES PROMEDIO QUE ES CUANDO LOS ELEMENTOS APARECEN EN EL ARREGLO EN FORMA ALEATORIA SE PUEDE CALCULAR MEDIANTE LA SUMA DE LAS COMPARACIONES MÓNIMAS Y MÈXIMAS DIVIDIDA ENTRE

#MED

!L HACER LA OPERACIØN QUEDA

N N · ¨ © N ¸ ¹ ª


03%&/"$*Î/ */5&3/"

#MED

N

N

343

▼ &ØRMULA

2ESPECTO DEL NÞMERO DE MOVIMIENTOS SI EL ARREGLO SE ENCUENTRA ORDENADO NO SE REALIZA NINGUNO 0OR LO TANTO

▼ &ØRMULA

-MÓN

%L NÞMERO MÈXIMO DE MOVIMIENTOS SE PRESENTA CUANDO EL ARREGLO ESTÈ EN ORDEN INVERSO /BSERVE EL EJEMPLO ANTERIOR %N LA PRIMERA PASADA SE REALIZØ UN MOVIMIENTO EN LA SEGUNDA DOS Y ASÓ SUCESIVAMENTE HASTA N n MOVIMIENTOS ENTRE LOS ELEMENTOS EN LA ÞLTIMA PASADA 0OR LO TANTO - MÈX x N

N N

QUE ES IGUAL A

- MÈX

N

N

▼ &ØRMULA

%L NÞMERO DE MOVIMIENTOS PROMEDIO QUE SE DA CUANDO LOS ELEMENTOS SE ENCUEN TRAN EN EL ARREGLO EN FORMA ALEATORIA SE CALCULA COMO LA SUMA DE LOS MOVIMIENTOS MÓNI MOS Y MÈXIMOS DIVIDIDA ENTRE 0OR LO TANTO

- MED

N

N

!L HACER LA OPERACIØN QUEDA

- MED

N N

▼ &ØRMULA

!SÓ POR EJEMPLO SI SE TIENE QUE ORDENAR UN ARREGLO QUE CONTIENE ELEMENTOS A 3I EL ARREGLO SE ENCUENTRA ORDENADO SERÈN NECESARIAS ◗ COMPARACIONES ◗ MOVIMIENTOS B 3I LOS ELEMENTOS DEL ARREGLO SE ENCUENTRAN DISPUESTOS EN FORMA ALEATORIA SE REALIZA RÈN


344 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ◗ COMPARACIONES EN PROMEDIO ◗ MOVIMIENTOS EN PROMEDIO C 3I LOS ELEMENTOS DEL ARREGLO SE ENCUENTRAN EN ORDEN INVERSO SERÈN NECESARIAS ◗ COMPARACIONES ◗ MOVIMIENTOS %S IMPORTANTE SE×ALAR QUE EL TIEMPO REQUERIDO PARA EJECUTAR EL ALGORITMO DE IN SERCIØN DIRECTA ES PROPORCIONAL A N / N DONDE N ES EL NÞMERO DE ELEMENTOS DEL ARREGLO ! PESAR DE SER UN MÏTODO INElCIENTE Y RECOMENDABLE SØLO CUANDO N ES PEQUE×O EL MÏTODO DE INSERCIØN DIRECTA SE COMPORTA MEJOR QUE LOS MÏTODOS DE INTERCAMBIO DIRECTO ANALIZADOS ANTERIORMENTE

/RDENACIØN POR EL MÏTODO DE INSERCIØN BINARIA %L MÏTODO DE ORDENACIØN POR INSERCIØN BINARIA ES UNA MEJORA DEL MÏTODO DE INSERCIØN DIRECTA PRESENTADO ANTERIORMENTE ,A MEJORA CONSISTE EN REALIZAR UNA BÞSQUEDA BINARIA EN LUGAR DE UNA BÞSQUEDA SECUENCIAL PARA INSERTAR UN ELEMENTO EN LA PARTE IZQUIERDA DEL ARREGLO QUE YA SE ENCUENTRA ORDENADO %L PROCESO AL IGUAL QUE EN EL MÏTODO DE INSERCIØN DIRECTA SE REPITE DESDE EL SEGUNDO HASTA EL N ÏSIMO ELEMENTO !NALICEMOS UN EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! UTILIZANDO EL MÏTODO DE INSERCIØN BINARIA ! ! CONTINUACIØN SE PRESENTAN LAS COMPARACIONES QUE SE LLEVAN A CABO 02)-%2! 0!3!$! !; = !; =

NO HAY INTERCAMBIO

! 3%'5.$! 0!3!$! !; = !; =

SÓ HAY INTERCAMBIO

! 4%2#%2! 0!3!$! !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

!


03%&/"$*Î/ */5&3/"

345

#5!24! 0!3!$! !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! 15).4! 0!3!$! !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! 3%84! 0!3!$! !; = !; = !; = !; = !; = !; =

SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! 3²04)-! 0!3!$! !; = !; = !; = !; = !; = !; =

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO

! %L ALGORITMO DE ORDENACIØN POR EL MÏTODO DE INSERCIØN BINARIA ES !LGORITMO )NSERCIØN?BINARIA )NSERCIØN?BINARIA ! . [%STE ALGORITMO ORDENA LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO DE INSERCIØN BINARIA ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) !58 ):1 $%2 - Y * SON VARIABLES DE TIPO ENTERO] 2EPETIR CON ) DESDE HASTA . (ACER !58 ← !;)= ):1 ← Y $%2 ← ) n -IENTRAS ):1 ≤ $%2 2EPETIR (ACER - ← PARTE ENTERA ):1 $%2 ENTRE


346 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ 3I !58 ≤ !;-= ENTONCES (ACER $%2 ← - n SI NO (ACER ):1 ← - [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] (ACER * ← ) n -IENTRAS * ≥ ):1 2EPETIR (ACER !;* = ← !;*= Y * ← * n [&IN DEL CICLO DEL PASO ] (ACER !;):1= ← !58 [&IN DEL CICLO DEL PASO ]

!NÉLISIS DE ElCIENCIA DEL MÏTODO DE INSERCIØN BINARIA !L ANALIZAR EL MÏTODO DE ORDENACIØN POR INSERCIØN BINARIA SE ADVIERTE LA PRESENCIA DE UN CASO ANTINATURAL %L MÏTODO EFECTÞA EL MENOR NÞMERO DE COMPARACIONES CUANDO EL ARREGLO ESTÈ TOTALMENTE DESORDENADO Y EL MÈXIMO CUANDO SE ENCUENTRA ORDENADO %S POSIBLE SUPONER QUE MIENTRAS EN UNA BÞSQUEDA SECUENCIAL SE NECESITAN + COM PARACIONES PARA INSERTAR UN ELEMENTO EN UNA BINARIA SE NECESITARÈ LA MITAD DE LAS + COMPARACIONES 0OR LO TANTO EL NÞMERO DE COMPARACIONES PROMEDIO EN EL MÏTODO DE ORDENACIØN POR INSERCIØN BINARIA SE PUEDE CALCULAR COMO #

N N N x

QUE ES IGUAL A

N #

N

▼ &ØRMULA

²STE ES UN ALGORITMO DE COMPORTAMIENTO ANTINATURAL Y POR LO TANTO ES NECESARIO SER MUY CUIDADOSO CUANDO SE HACE UN ANÈLISIS DE ÏL ,AS HÈBILES MEJORAS INTRODUCIDAS PRODUCEN UN EFECTO NEGATIVO CUANDO EL ARREGLO ESTÈ ORDENADO Y RESULTADOS APENAS SATIS FACTORIOS CUANDO LAS CLAVES ESTÈN DESORDENADAS $E TODAS MANERAS SE DEBE RECORDAR QUE NO SE REDUCE EL NÞMERO DE MOVIMIENTOS QUE ES UNA OPERACIØN MÈS COMPLICADA Y COSTOSA QUE LA OPERACIØN DE COMPARACIØN 0OR LO TANTO EL TIEMPO DE EJECUCIØN DEL ALGORITMO SIGUE SIENDO PROPORCIONAL A N / N

/RDENACIØN POR SELECCIØN DIRECTA %L MÏTODO DE ORDENACIØN POR SELECCIØN DIRECTA ES MÈS ElCIENTE QUE LOS MÏTODOS ANALI ZADOS ANTERIORMENTE 0ERO AUNQUE SU COMPORTAMIENTO ES MEJOR QUE EL DE AQUÏLLOS Y SU


03%&/"$*Î/ */5&3/"

347

PROGRAMACIØN ES FÈCIL Y COMPRENSIBLE NO SE RECOMIENDA UTILIZARLO CUANDO EL NÞMERO DE ELEMENTOS DEL ARREGLO ES MEDIANO O GRANDE ,A IDEA BÈSICA DE ESTE ALGORITMO CONSISTE EN BUSCAR EL MENOR ELEMENTO DEL ARREGLO Y COLOCARLO EN LA PRIMERA POSICIØN ,UEGO SE BUSCA EL SEGUNDO ELEMENTO MÈS PEQUE×O DEL ARREGLO Y SE LO COLOCA EN LA SEGUNDA POSICIØN %L PROCESO CONTINÞA HASTA QUE TODOS LOS ELEMENTOS DEL ARREGLO HAYAN SIDO ORDENADOS %L MÏTODO SE BASA EN LOS SIGUIENTES PRINCIPIOS 3ELECCIONAR EL MENOR ELEMENTO DEL ARREGLO )NTERCAMBIAR DICHO ELEMENTO CON EL PRIMERO 2EPETIR LOS PASOS ANTERIORES CON LOS N n N n ELEMENTOS Y ASÓ SUCESIVAMENTE HASTA QUE SØLO QUEDE EL ELEMENTO MAYOR

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! UTILIZANDO EL MÏTODO DE SELECCIØN DIRECTA ! ,AS COMPARACIONES QUE SE REALIZAN SON 02)-%2! 0!3!$! 3E REALIZA LA ASIGNACIØN -%./2 ← !; = -%./2 !; = -%./2 !; = -%./2 !; = -%./2 !; = -%./2 !; = -%./2 !; = -%./2 !; =

SÓ SE CUMPLE LA CONDICIØN NO SE CUMPLE LA CONDICIØN -%./2 ← !; = SÓ SE CUMPLE LA CONDICIØN SÓ SE CUMPLE LA CONDICIØN SÓ SE CUMPLE LA CONDICIØN SÓ SE CUMPLE LA CONDICIØN SÓ SE CUMPLE LA CONDICIØN

,UEGO DE LA PRIMERA PASADA EL ARREGLO QUEDA DE LA SIGUIENTE FORMA ! /BSERVE QUE EL MENOR ELEMENTO DEL ARREGLO !; = SE INTERCAMBIØ CON EL PRIMER ELEMENTO !; = REALIZANDO SOLAMENTE UN MOVIMIENTO 3%'5.$! 0!3!$! 3E REALIZA LA SIGUIENTE ASIGNACIØN -%./2 ← !; = -%./2 !; = -%./2 !; = -%./2 !; =

NO SE CUMPLE LA CONDICIØN -%./2 ← !; = SÓ SE CUMPLE LA CONDICIØN SÓ SE CUMPLE LA CONDICIØN


348 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ -%./2 !; = -%./2 !; = -%./2 !; =

SÓ SE CUMPLE LA CONDICIØN NO SE CUMPLE LA CONDICIØN -%./2 ← !; = SÓ SE CUMPLE LA CONDICIØN

! /BSERVE QUE EL SEGUNDO ELEMENTO MÈS PEQUE×O DEL ARREGLO !; = SE INTERCAMBIØ CON EL SEGUNDO ELEMENTO !; = %N LA TABLA SE OBSERVA EL RESULTADO DE LAS PASADAS RESTANTES 4!",!

A PASADA

A PASADA

A PASADA

A PASADA

A PASADA

%L ALGORITMO DE ORDENACIØN POR EL MÏTODO DE SELECCIØN DIRECTA ES !LGORITMO 3ELECCIØN 3ELECCIØN ! . [%STE ALGORITMO ORDENA LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO DE SELECCIØN DIRECTA ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) -%./2 + Y * SON VARIABLES DE TIPO ENTERO] 2EPETIR CON ) DESDE HASTA . n (ACER -%./2 ← !;)= Y + ← ) 2EPETIR CON * DESDE ) HASTA . 3I !;*= -%./2 ENTONCES (ACER -%./2 ← !;*= Y + ← * [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] (ACER !;+= ← !;)= Y !;)= ← -%./2 [&IN DEL CICLO DEL PASO ]

!NÉLISIS DE ElCIENCIA DEL MÏTODO DE SELECCIØN DIRECTA %L ANÈLISIS DEL MÏTODO DE SELECCIØN DIRECTA ES RELATIVAMENTE SIMPLE 3E DEBE CONSIDERAR QUE EL NÞMERO DE COMPARACIONES ENTRE ELEMENTOS ES INDEPENDIENTE DE LA DISPOSICIØN INI CIAL DE ÏSTOS EN EL ARREGLO %N LA PRIMERA PASADA SE REALIZAN N n COMPARACIONES EN LA SEGUNDA PASADA N n COMPARACIONES Y ASÓ SUCESIVAMENTE HASTA Y COMPARACIONES EN LA PENÞLTIMA Y ÞLTIMA PASADAS RESPECTIVAMENTE 0OR LO TANTO


03%&/"$*Î/ */5&3/"

# N N x

349

N N

QUE ES IGUAL A

#

▼ &ØRMULA

N N

2ESPECTO DEL NÞMERO DE INTERCAMBIOS SIEMPRE SERÈ N n A EXCEPCIØN DE QUE SE TENGA INCORPORADA EN EL ALGORITMO ALGUNA TÏCNICA PARA PREVENIR EL INTERCAMBIO DE UN ELEMENTO CONSIGO MISMO 0OR LO TANTO

▼ &ØRMULA

- N n

!SÓ POR EJEMPLO SI SE TIENE QUE ORDENAR UN ARREGLO QUE CONTIENE ELEMENTOS SE EFECTUARÈN COMPARACIONES Y MOVIMIENTOS %L TIEMPO DE EJECUCIØN DEL ALGORITMO ES PROPORCIONAL A N / N AUN CUANDO ES MÈS RÈPIDO QUE LOS MÏTODOS PRESENTADOS CON ANTERIORIDAD

!NÉLISIS DE ElCIENCIA DE LOS MÏTODOS DIRECTOS ,A TABLA CONTIENE LAS FØRMULAS NECESARIAS PARA OBTENER EL NÞMERO DE COMPARACIONES Y MOVIMIENTOS PARA ORDENAR UN ARREGLO CON LOS TRES MÏTODOS DIRECTOS ANALIZADOS ,AS COLUMNAS INDICAN SI LOS ELEMENTOS DEL ARREGLO SE ENCUENTRAN EN FORMA ORDENADA DESOR DENADA O EN ORDEN INVERSO %N LA TABLA POR OTRA PARTE SE OBSERVAN LOS NÞMEROS DE COMPARACIONES Y MO VIMIENTOS NECESARIOS PARA ORDENAR UN ARREGLO CON LOS TRES MÏTODOS DIRECTOS ANALIZADOS

4!",! )NTERCAMBIO DIRECTO

)NSERCIØN DIRECTA

3ELECCIØN DIRECTA

/RDENADA

$ESORDENADA

/RDEN INVERSO

-

N N

N N N N

N N N N

#

N

-

#

N N N

#

-

N

N N

N N N N

N N N

N N N

N


350 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ 4!",! /RDENADA

$ESORDENADA

/RDEN INVERSO

)NTERCAMBIO

#

DIRECTO

-

)NSERCIØN

#

DIRECTA

-

3ELECCIØN

#

DIRECTA

-

,AS COLUMNAS INDICAN SI LOS ELEMENTOS DEL ARREGLO SE ENCUENTRAN EN FORMA ORDENADA DESORDENADA O EN ORDEN INVERSO /BSERVE QUE ESTAS COLUMNAS SE ENCUENTRAN DIVIDIDAS EN DOS ,A SUBCOLUMNA IZQUIERDA REPRESENTA UN ARREGLO DE ELEMENTOS Y LA SUBCOLUMNA DERECHA REPRESENTA UN ARREGLO DE ELEMENTOS %S FÈCIL OBSERVAR QUE EL MÏTODO DE SELECCIØN DIRECTA ES EL MEJOR Y SØLO ES SUPERADO POR EL MÏTODO DE INSERCIØN DIRECTA CUANDO LOS ELEMENTOS DEL ARREGLO YA SE ENCUENTRAN ORDENADOS %L PEOR MÏTODO SIN DUDA ES EL DE INTERCAMBIO DIRECTO %N LOS SIGUIENTES INCISOS SE ANALIZARÈN LOS MÏTODOS LOGARÓTMICOS MÈS IMPORTANTES

/RDENACIØN POR EL MÏTODO DE 3HELL %L MÏTODO DE 3HELL ES UNA VERSIØN MEJORADA DEL MÏTODO DE INSERCIØN DIRECTA 2ECIBE ESE NOMBRE EN HONOR DE SU AUTOR $ONALD , 3HELL QUIEN LO PROPUSO EN %STE MÏTODO TAMBIÏN SE CONOCE COMO INSERCIØN CON INCREMENTOS DECRECIENTES %N EL MÏTODO DE ORDENACIØN POR INSERCIØN DIRECTA CADA ELEMENTO SE COMPARA PARA SU UBICACIØN CORRECTA EN EL ARREGLO CON LOS ELEMENTOS QUE SE ENCUENTRAN EN SU PARTE IZQUIERDA 3I EL ELEMENTO A INSERTAR ES MÈS PEQUE×O QUE EL GRUPO DE ELEMENTOS QUE SE ENCUENTRAN A SU IZQUIERDA SERÈ NECESARIO EFECTUAR VARIAS COMPARACIONES ANTES DE SU UBICACIØN 3HELL PROPONE QUE LAS COMPARACIONES ENTRE ELEMENTOS SE EFECTÞEN CON SALTOS DE MAYOR TAMA×O PERO CON INCREMENTOS DECRECIENTES ASÓ LOS ELEMENTOS QUEDARÈN ORDE NADOS EN EL ARREGLO MÈS RÈPIDAMENTE 0ARA COMPRENDER MEJOR ESTE ALGORITMO ANALICE EL SIGUIENTE CASO #ONSIDEREMOS UN ARREGLO QUE CONTENGA ELEMENTOS %N PRIMER LUGAR SE DIVIDIRÈN LOS ELEMENTOS DEL ARREGLO EN OCHO GRUPOS TENIENDO EN CUENTA LOS ELEMENTOS QUE SE EN CUENTRAN A OCHO POSICIONES DE DISTANCIA ENTRE SÓ Y SE ORDENARÈN POR SEPARADO 1UEDARÈN EN EL PRIMER GRUPO LOS ELEMENTOS !; = !; = EN EL SEGUNDO !; = !; = EN EL TER CERO !; = !; = Y ASÓ SUCESIVAMENTE $ESPUÏS DE ESTE PRIMER PASO SE DIVIDIRÈN LOS ELEMENTOS DEL ARREGLO EN CUATRO GRUPOS TENIENDO EN CUENTA AHORA LOS ELEMENTOS QUE SE ENCUENTREN A CUATRO POSICIONES DE DISTANCIA ENTRE SÓ Y SE LES ORDENARÈ POR SEPARADO 1UE


03%&/"$*Î/ */5&3/"

351

DARÈN EN EL PRIMER GRUPO LOS ELEMENTOS !; = !; = !; = !; = EN EL SEGUNDO !; = !; = !; = !; = Y ASÓ SUCESIVAMENTE %N EL TERCER PASO SE DIVIDIRÈN LOS ELEMENTOS DEL ARREGLO EN GRUPOS TOMANDO EN CUENTA LOS ELEMENTOS QUE SE ENCUENTRAN AHORA A DOS POSICIONES DE DISTANCIA ENTRE SÓ Y NUEVAMENTE SE LES ORDENARÈ POR SEPARADO %N EL PRIMER GRUPO QUEDARÈN !; = !; = !; = !; = !; = !; = !; = !; = Y EN EL SEGUNDO !; = !; = !; = !; = !; = !; = !; = !; = &INALMENTE SE AGRUPARÈN Y ORDENARÈN LOS ELEMENTOS DE MANERA NORMAL ES DECIR DE UNO EN UNO 3E PRESENTA A CONTINUACIØN UN EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LOS ELEMENTOS QUE SE ENCUENTRAN EN EL ARREGLO UNIDI MENSIONAL ! UTILIZANDO EL MÏTODO DE 3HELL ! 02)-%2! 0!3!$! 3E DIVIDEN LOS ELEMENTOS EN GRUPOS


352 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/

,A ORDENACIØN PRODUCE ! ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE ORDENACIØN POR EL MÏTODO DE 3HELL !LGORITMO 3HELL 3HELL ! . [%STE ALGORITMO PERMITE ORDENAR LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO DE 3HELL ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [).4 ) Y !58 SON VARIABLES DE TIPO ENTERO "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] (ACER ).4 ← . -IENTRAS ).4 2EPETIR (ACER ).4 ← PARTE ENTERA ).4 Y "!.$ ← 6%2$!$%2/ -IENTRAS "!.$ 6%2$!$%2/ 2EPETIR (ACER "!.$ ← &!,3/ E ) ← -IENTRAS ) ).4 ≤ . 2EPETIR 3I !;)= !;) ).4= ENTONCES (ACER !58 ← !;)= !;)= ← !;) ).4= !;) ).4= ← !58 Y "!.$ ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] (ACER ) ← ) [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]


03%&/"$*Î/ */5&3/"

353

!NÉLISIS DE ElCIENCIA DEL MÏTODO DE 3HELL %L ANÈLISIS DE ElCIENCIA DEL MÏTODO DE 3HELL ES UN PROBLEMA MUY COMPLICADO Y AÞN NO RESUELTO (ASTA EL MOMENTO NO SE HA PODIDO ESTABLECER LA MEJOR SECUENCIA DE INCREMEN TOS CUANDO N ES GRANDE #ABE RECORDAR QUE CADA VEZ QUE SE PROPONE UNA SECUENCIA DE INTERVALOS ES NECESARIO CORRER EL ALGORITMO PARA ANALIZAR SU TIEMPO DE EJECUCIØN %N 0RATT DESCUBRIØ QUE EL TIEMPO DE EJECUCIØN DEL ALGORITMO ES DEL ORDEN DE N LOG N 5NAS PRUEBAS EXHAUSTIVAS REALIZADAS PARA OBTENER LA MEJOR SECUENCIA DE INTERVALOS CUANDO EL NÞMERO DE ELEMENTOS DEL ARREGLO ES IGUAL A ARROJARON COMO RESULTADO QUE LA MEJOR SECUENCIA CORRESPONDE A UN INTERVALO DE QUE NO ES MÈS QUE EL MÏTODO DE INSERCIØN DIRECTA ESTUDIADO PREVIAMENTE %STAS PRUEBAS TAMBIÏN DETERMINA RON QUE EL MENOR NÞMERO DE MOVIMIENTOS SE REGISTRABA CON LA SECUENCIA #ABE ACLARAR QUE LAS PRUEBAS EXHAUSTIVAS CORRESPONDEN AL ANÈLISIS DE POSIBILIDADES ES DECIR CASOS DIFERENTES %N LA TABLA SE MUESTRAN LAS DIEZ MEJORES SECUENCIAS OBTENIDAS AL EVALUAR LAS POSIBILIDADES DE SECUENCIAS QUE SE PRESENTAN CUANDO SE TIENE UN ARREGLO DE ELEMENTOS 0ARA CONCLUIR CON EL ANÈLISIS DE ElCIENCIA DE MÏTODO DE 3HELL SE MENCIONA QUE ES TUDIOS DE 0ETERSON Y 2USSELL EN LA 5NIVERSIDAD DE 3TANFORD EN MUESTRAN QUE LAS MEJORES SECUENCIAS PARA VALORES DE . COMPRENDIDOS ENTRE Y SON LAS QUE SE PRESENTAN EN LA TABLA DONDE K 0OR ÞLTIMO Y PARA ACLARAR AÞN MÈS LOS CONCEPTOS VERTIDOS SOBRE EL MÏTODO DE 3HELL SE INCLUYE UN SEGUNDO EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS SIGUIENTES CLAVES DEL ARREGLO UNIDIMENSIONAL ! UTILIZANDO EL MÏTODO DE 3HELL ,A SECUENCIA DE INTERVALOS QUE SE UTILIZARÈ CORRESPONDE A LA FØRMULA K n PRESENTADA POR 0ETERSON Y 2USSELL !

4!",!

0OSICIØN

3ECUENCIA


354 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ K

4!",!

K n

3ECUENCIAS

K K

,OS RESULTADOS PARCIALES DE CADA PASADA ASÓ COMO EL RESULTADO lNAL SE OBSERVAN EN LA TABLA DONDE 0!3 REPRESENTA EL NÞMERO DE PASADA E ).4 REPRESENTA EL INTERVALO EN EL CUAL SE ESTÈ TRABAJANDO

/RDENACIØN POR EL MÏTODO QUICKSORT %L MÏTODO DE ORDENACIØN QUICKSORT ES ACTUALMENTE EL MÈS ElCIENTE Y VELOZ DE LOS MÏTO DOS DE ORDENACIØN INTERNA %S TAMBIÏN CONOCIDO COMO MÏTODO RÈPIDO Y DE ORDENACIØN POR PARTICIØN %STE MÏTODO ES UNA MEJORA SUSTANCIAL DEL MÏTODO DE INTERCAMBIO DIRECTO Y SE DENOMINA QUICKSORT RÈPIDO POR LA VELOCIDAD CON QUE ORDENA LOS ELEMENTOS DEL ARREGLO 3U AUTOR # ! (OARE LO LLAMØ ASÓ ,A IDEA CENTRAL DE ESTE ALGORITMO CONSISTE EN LO SIGUIENTE 3E TOMA UN ELEMENTO 8 DE UNA POSICIØN CUALQUIERA DEL ARREGLO 3E TRATA DE UBICAR A 8 EN LA POSICIØN CORRECTA DEL ARREGLO DE TAL FORMA QUE TODOS LOS ELEMENTOS QUE SE ENCUENTREN A SU IZQUIERDA SEAN MENORES O IGUALES A 8 Y TODOS LOS QUE SE ENCUENTREN A SU DERECHA SEAN MAYORES O IGUALES A 8 3E REPITEN LOS PASOS ANTERIORES PERO AHORA PARA LOS CONJUNTOS DE DATOS QUE SE EN CUENTRAN A LA IZQUIERDA Y A LA DERECHA DE LA POSICIØN DE 8 EN EL ARREGLO %L PROCESO TERMINA CUANDO TODOS LOS ELEMENTOS SE ENCUENTRAN EN SU POSICIØN CO RRECTA EN EL ARREGLO 3E DEBE SELECCIONAR ENTONCES UN ELEMENTO 8 CUALQUIERA %N ESTE CASO SE SELECCIO NARÈ !; = 3E EMPIEZA A RECORRER EL ARREGLO DE DERECHA A IZQUIERDA COMPARANDO SI LOS ELEMENTOS SON MAYORES O IGUALES A 8 3I UN ELEMENTO NO CUMPLE CON ESTA CONDICIØN SE INTERCAMBIAN AQUÏLLOS Y SE ALMACENA EN UNA VARIABLE LA POSICIØN DEL ELEMENTO INTERCAM BIADO SE ACOTA EL ARREGLO POR LA DERECHA 3E INICIA NUEVAMENTE EL RECORRIDO PERO AHORA DE IZQUIERDA A DERECHA COMPARANDO SI LOS ELEMENTOS SON MENORES O IGUALES A 8 4!",! 0!3

).4

!RREGLO !


03%&/"$*Î/ */5&3/"

355

3I UN ELEMENTO NO CUMPLE CON ESTA CONDICIØN ENTONCES SE INTERCAMBIAN AQUÏLLOS Y SE ALMACENA EN OTRA VARIABLE LA POSICIØN DEL ELEMENTO INTERCAMBIADO SE ACOTA EL ARREGLO POR LA IZQUIERDA 3E REPITEN LOS PASOS ANTERIORES HASTA QUE EL ELEMENTO 8 ENCUENTRA SU POSICIØN CORRECTA EN EL ARREGLO !NALICEMOS A CONTINUACIØN EL SIGUIENTE EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LOS ELEMENTOS QUE SE ENCUENTRAN EN EL ARREGLO ! UTI LIZANDO EL MÏTODO ! 3E SELECCIONA !; = POR LO TANTO 8 ← 3E LLEVAN A CABO LAS COMPARACIONES QUE SE MUESTRAN A CONTINUACIØN 02)-%2! 0!3!$! 2ECORRIDO DE DERECHA A IZQUIERDA !; = ≥ 8 !; = ≥ 8

≥ ≥

NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! ↑ ↑ 2ECORRIDO DE IZQUIERDA A DERECHA !; = ≤ 8

SÓ HAY INTERCAMBIO

! ↑ ↑ 3%'5.$! 0!3!$! 2ECORRIDO DE DERECHA A IZQUIERDA !; = ≥ 8 !; = ≥ 8 !; = ≥ 8 !; = ≥ 8

≥ ≥ ≥ ≥

NO HAY INTERCAMBIO NO HAY INTERCAMBIO NO HAY INTERCAMBIO SÓ HAY INTERCAMBIO

! ↑ ↑ #OMO EL RECORRIDO DE IZQUIERDA A DERECHA SE DEBERÓA INICIAR EN LA MISMA POSICIØN DONDE SE ENCUENTRA EL ELEMENTO 8 EL PROCESO TERMINA YA QUE SE DETECTA QUE EL ELEMENTO 8 SE ENCUENTRA EN LA POSICIØN CORRECTA /BSERVE QUE LOS ELEMENTOS QUE FORMAN PARTE DEL PRIMER CONJUNTO SON MENORES O IGUALES A 8 Y LOS DEL SEGUNDO CONJUNTO SON MAYORES O IGUALES A 8


356 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ !

ER CONJUNTO

O CONJUNTO

%STE PROCESO DE PARTICIONAMIENTO APLICADO PARA LOCALIZAR LA POSICIØN CORRECTA DE UN ELEMENTO 8 EN EL ARREGLO SE REPITE CADA VEZ QUE QUEDEN CONJUNTOS FORMADOS POR DOS O MÈS ELEMENTOS %L MÏTODO SE PUEDE APLICAR DE MANERA ITERATIVA O RECURSIVA %N LA TABLA SE PRESENTA LA UBICACIØN DEL RESTO DE LOS ELEMENTOS EN EL ARREGLO 4!",!

!

!

!

!

%L ALGORITMO DE ORDENACIØN POR EL MÏTODO QUICKSORT EN SU VERSIØN RECURSIVA ES !LGORITMO 2ÈPIDO?RECURSIVO 2ÈPIDO?RECURSIVO ! . [%STE ALGORITMO ORDENA LOS ELEMENTOS DEL ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO RÈPIDO DE MANERA RECURSIVA ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] ,LAMAR AL ALGORITMO 2EDUCE?RECURSIVO CON Y .

/BSERVE QUE EL ALGORITMO 2ÈPIDO?RECURSIVO REQUIERE PARA SU FUNCIONAMIENTO DE OTRO ALGORITMO EL CUAL SE PRESENTA EN LA TABLA !LGORITMO 2EDUCE?RECURSIVO 2EDUCE?RECURSIVO ).) &). [).) Y &). REPRESENTAN LAS POSICIONES DEL EXTREMO IZQUIERDO Y DERECHO RESPECTIVAMENTE DEL CONJUNTO DE ELEMENTOS A ORDENAR] [):1 $%2 0/3 Y !58 SON VARIABLES DE TIPO ENTERO "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] (ACER ):1 ← ).) $%2 ← &). 0/3 ← ).) Y "!.$ ← 6%2$!$%2/ -IENTRAS "!.$ 6%2$!$%2/ 2EPETIR (ACER "!.$ ← &!,3/ -IENTRAS !;0/3= ≤ !;$%2= Y 0/3 ≠ $%2 2EPETIR (ACER $%2 ← $%2 n [&IN DEL CICLO DEL PASO ] 3I 0/3 ≠ $%2 ENTONCES (ACER !58 ← !;0/3= !;0/3= ← !;$%2= !;$%2= ← !58 Y 0/3 ← $%2


03%&/"$*Î/ */5&3/"

357

-IENTRAS !;0/3= ≥ !;):1= Y 0/3 ≠ ):1 2EPETIR (ACER ):1 ← ):1 [&IN DEL CICLO DEL PASO ] 3I 0/3 ≠ ):1 ENTONCES (ACER "!.$ ← 6%2$!$%2/ !58 ← !;0/3= !;0/3= ← !;):1= !;):1= ← !58 Y 0/3 ← ):1 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I 0/3 n ).) ENTONCES 2EGRESAR A 2EDUCE?RECURSIVO CON ).) Y 0/3 n [,LAMADA RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ] 3I &). 0/3 ENTONCES 2EGRESAR A 2EDUCE?RECURSIVO CON 0/3 Y &). [,LAMADA RECURSIVA] [&IN DEL CONDICIONAL DEL PASO ]

!UN CUANDO EL ALGORITMO DEL QUICKSORT PRESENTADO RESULTE CLARO ES POSIBLE AUMENTAR SU VELOCIDAD DE EJECUCIØN ELIMINANDO LAS LLAMADAS RECURSIVAS ,A RECURSIVIDAD ES UN INS TRUMENTO MUY PODEROSO PERO LA ElCIENCIA DE EJECUCIØN ES UN FACTOR MUY IMPORTANTE EN UN PROCESO DE ORDENACIØN QUE ES NECESARIO CUIDAR Y ADMINISTRAR MUY BIEN %STAS LLAMADAS RECURSIVAS SE PUEDEN SUSTITUIR UTILIZANDO PILAS DANDO LUGAR ENTONCES A LA ITERATIVIDAD #ONSIDEREMOS EL ARREGLO UNIDIMENSIONAL ! DEL EJEMPLO ,UEGO DE LA PRIMERA PARTICIØN ! QUEDA DE LA SIGUIENTE MANERA !

ER CONJUNTO

O CONJUNTO

!L UTILIZAR LA ITERATIVIDAD SE DEBEN ALMACENAR EN LAS PILAS LOS ÓNDICES DE LOS DOS CON JUNTOS DE DATOS QUE FALTA TRATAR 3E UTILIZARÈN DOS PILAS 0),!-%./2 Y 0),!-!9/2 %N LA PRIMERA SE ALMACENARÈ EL EXTREMO IZQUIERDO Y EN LA OTRA SE ALMACENARÈ EL EXTREMO DERECHO DE LOS CONJUNTOS DE DATOS QUE FALTA TRATAR %N LA lGURA SE OBSERVA EL ESTADO DE LAS PILAS LUEGO DE CARGAR LOS EXTREMOS DE LOS CONJUNTOS QUE FALTA TRATAR ,OS ÓNDICES DEL PRIMER CONJUNTO QUEDARON ALMACENADOS EN LA PRIMERA POSICIØN DE 0),!-%./2 Y 0),!-!9/2 RESPECTIVAMENTE ,A POSICIØN DEL EXTREMO IZQUIERDO DEL PRIMER CONJUNTO EN 0),!-%./2 Y LA DEL EXTREMO DERECHO DEL MISMO CONJUNTO EN 0),!-!9/2 ,AS POSICIONES DE LOS EXTREMOS IZQUIERDO Y DERECHO DEL SEGUNDO CONJUNTO Y FUERON ALMACENADOS EN LA CIMA DE 0),!-%./2 Y 0),!-!9/2 RESPECTIVAMENTE

&)'52! 0ILAS PARA SUSTITUIR LA RECURSIVIDAD


358 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE ORDENACIØN POR EL MÏTODO DEL QUICKSORT UTILIZANDO ITERATIVIDAD EN LUGAR DE RECURSIVIDAD !LGORITMO 2ÈPIDO?ITERATIVO 2ÈPIDO?ITERATIVO ! . [%STE ALGORITMO ORDENA LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL UTILIZANDO EL MÏTODO RÈPIDO DE MANERA ITERATIVA ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [4/0% ).) &). Y 0/3 SON VARIABLES DE TIPO ENTERO 0),!-%./2 Y 0),!-!9/2 SON ARREGLOS UNIDIMENSIONALES QUE FUNCIONAN COMO PILAS] (ACER 4/0% ← 0),!-%./2;4/0%= ← Y 0),!-!9/2;4/0%= ← . -IENTRAS 4/0% 2EPETIR (ACER ).) ← 0),!-%./2;4/0%= &). ← 0),!-!9/2;4/0%= Y 4/0% ← 4/0% n ,LAMAR AL ALGORITMO 2EDUCE?ITERATIVO CON ).) &). Y 0/3 3I ).) 0/3 n ENTONCES (ACER 4/0% ← 4/0% 0),!-%./2;4/0%= ← ).) Y 0),!-!9/2;4/0%= ← 0/3 n [&IN DEL CONDICIONAL DEL PASO ] 3I &). 0/3 ENTONCES (ACER 4/0% ← 4/0% 0),!-%./2;4/0%= ← 0/3 Y 0),!-!9/2;4/0%= ← &). [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]

.OTE QUE EL ALGORITMO 2ÈPIDO?ITERATIVO NECESITA PARA SU FUNCIONAMIENTO DE OTRO ALGORITMO EL CUAL SE PRESENTA A CONTINUACIØN !LGORITMO 2EDUCE?ITERATIVO 2EDUCE?ITERATIVO ).) &). 0/3 [).) Y &). REPRESENTAN LAS POSICIONES DE LOS EXTREMOS IZQUIERDO Y DERECHO RESPECTIVAMENTE DEL CONJUNTO DE ELEMENTOS A EVALUAR 0/3 ES UNA VARIABLE DONDE SE ALMACENARÈ EL RESULTADO DE ESTE ALGORITMO] [):1 $%2 Y !58 SON VARIABLES DE TIPO ENTERO "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] (ACER ):1 ← ).) $%2 ← &). 0/3 ← ).) Y "!.$ ← 6%2$!$%2/ -IENTRAS "!.$ 6%2$!$%2/ 2EPETIR -IENTRAS !;0/3= ≤ !;$%2= Y 0/3 ≠ $%2 2EPETIR (ACER $%2 ← $%2 n [&IN DEL CICLO DEL PASO ] 3I 0/3 $%2 ENTONCES


03%&/"$*Î/ */5&3/"

359

(ACER "!.$ ← &!,3/ SI NO (ACER !58 ← !;0/3= !;0/3= ← !;$%2= !;$%2= ← !58 Y 0/3 ← $%2 -IENTRAS !;0/3= ≥ !;):1= Y 0/3 ≠ ):1 2EPETIR (ACER ):1 ← ):1 [&IN DEL CICLO DEL PASO ] 3I 0/3 ):1 ENTONCES (ACER "!.$ ← &!,3/ SI NO (ACER !58 ← !;0/3= !;0/3= ← !;):1=

!;):1= ← !58 Y 0/3 ← ):1 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]

%JEMPLO

%N LA TABLA SE EXPONEN LOS PASOS NECESARIOS PARA ORDENAR LAS CLAVES DEL ARREGLO UNIDIMENSIONAL ! ! ,A COLUMNA %842%-/ CONTIENE LOS EXTREMOS IZQUIERDO Y DERECHO DEL CONJUNTO DE ELEMENTOS A EVALUAR %N 0),!-%./2 SE ALMACENA EL EXTREMO IZQUIERDO Y EN 0),! -!9/2 EL EXTREMO DERECHO DE LOS CONJUNTOS PENDIENTES DE TRATAR 5NA LEVE MEJORA EN EL FUNCIONAMIENTO DEL MÏTODO RÈPIDO SE PUEDE PRODUCIR SI EL PRIMER ELEMENTO POSICIONADO EN EL ARREGLO SE ENCUENTRA EN LA MITAD O MUY PRØXIMO A SU MITAD 0ARA LOGRAR ESTO ÞLTIMO SE NECESITA PERMUTAR LOS COMPONENTES DEL ARREGLO DE TAL FORMA QUE PARA EL VALOR 8 TODOS LOS ELEMENTOS QUE SE ENCUENTREN A SU IZQUIERDA DESDE !; = HASTA !;I= DONDE I ES IGUAL A N n SEAN MENORES O IGUALES A ÏL Y TODOS LOS QUE SE ENCUENTREN A SU DERECHA DESDE !;I = HASTA !;.= SEAN MAYORES O IGUALES A ÏL 0OR EJEMPLO EN EL SIGUIENTE ARREGLO UNIDIMENSIONAL ! ! ES EL ELEMENTO QUE OCUPA LA POSICIØN CENTRAL DEL ARREGLO ORDENADO Y DIVIDE A ÏSTE EN DOS MITADES IGUALES 1UEDA LA TAREA DE CONSTRUIR EL ALGORITMO QUE ENCUENTRA AL ELEMENTO 8 QUE OCUPA LA POSICIØN CENTRAL DEL ARREGLO

!NÉLISIS DE ElCIENCIA DEL MÏTODO QUICKSORT %L MÏTODO QUICKSORT ES EL MÈS RÈPIDO DE ORDENACIØN INTERNA QUE EXISTE EN LA ACTUALIDAD %STO ES SORPRENDENTE PORQUE EL MÏTODO TIENE SU ORIGEN EN EL MÏTODO DE INTERCAMBIO DIRECTO EL PEOR DE TODOS LOS MÏTODOS DIRECTOS $IVERSOS ESTUDIOS REALIZADOS SOBRE SU COMPORTAMIENTO DEMUESTRAN QUE SI SE ESCOGE EN CADA PASADA EL ELEMENTO QUE OCUPA LA


360 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ 4!",!

0/3)#)/.%3

%842%-/

0),! -%./2

0),! -!9/2

.),

.),

.),

.),

.),

.),

.),

.),

.),

POSICIØN CENTRAL DEL CONJUNTO DE DATOS A ANALIZAR EL NÞMERO DE PASADAS NECESARIAS PARA ORDENARLO ES DEL ORDEN DE LOG N 2ESPECTO DEL NÞMERO DE COMPARACIONES SI EL TAMA×O DEL ARREGLO ES UNA POTENCIA DE EN LA PRIMERA PASADA REALIZARÈ N n COMPARACIONES EN LA SEGUNDA N n COMPARACIONES PERO EN DOS CONJUNTOS DIFERENTES EN LA TERCERA REALIZARÈ N n COMPARACIONES PERO EN CUATRO CONJUNTOS DIFERENTES Y ASÓ SUCESIVA MENTE 0OR LO TANTO # N

N

N

x N

N N


03%&/"$*Î/ */5&3/"

361

LO CUAL ES LO MISMO QUE # N n N n N n N n 3I SE CONSIDERA A CADA UNO DE LOS COMPONENTES DE LA SUMATORIA COMO UN TÏRMINO Y EL NÞMERO DE TÏRMINOS DE LA SUMATORIA ES IGUAL A M ENTONCES SE TIENE QUE # N n M #ONSIDERANDO QUE EL NÞMERO DE TÏRMINOS DE LA SUMATORIA M ES IGUAL AL NÞMERO DE PASADAS Y QUE ÏSTE ES IGUAL A LOG N LA EXPRESIØN ANTERIOR QUEDA

▼ &ØRMULA

# N n LOG N

3IN EMBARGO ENCONTRAR EL ELEMENTO QUE OCUPE LA POSICIØN CENTRAL DEL CONJUNTO DE DATOS QUE SE VAN A ANALIZAR ES UNA TAREA DIFÓCIL YA QUE EXISTEN N POSIBILIDADES DE LOGRARLO !DEMÈS EL RENDIMIENTO MEDIO DEL MÏTODO ES APROXIMADAMENTE LN INFERIOR AL CASO ØPTIMO POR LO QUE (OARE EL AUTOR DEL MÏTODO PROPONE COMO SOLUCIØN QUE EL ELEMENTO 8 SE SELECCIONE ARBITRARIAMENTE O BIEN ENTRE UNA MUESTRA RELATIVAMENTE PEQUE×A DE ELEMENTOS DEL ARREGLO %L PEOR CASO OCURRE CUANDO LOS ELEMENTOS DEL ARREGLO YA SE ENCUENTRAN ORDENADOS O BIEN CUANDO SE ENCUENTRAN EN ORDEN INVERSO 3UPONGAMOS POR EJEMPLO QUE SE DEBE ORDENAR EL SIGUIENTE ARREGLO UNIDIMENSIONAL QUE YA SE ENCUENTRA ORDENADO ! 3I SE ESCOGE ARBITRARIAMENTE EL PRIMER ELEMENTO ENTONCES SE PARTICIONARÈ EL ARREGLO EN DOS MITADES UNA DE Y OTRA DE N n ELEMENTOS

3I SE CONTINÞA CON EL PROCESO DE ORDENACIØN Y SE ESCOGE NUEVAMENTE EL PRIMER ELE MENTO DEL CONJUNTO DE DATOS QUE SE ANALIZARÈN ENTONCES SE DIVIDIRÈ EL ARREGLO EN DOS NUEVOS CONJUNTOS NUEVAMENTE UNO DE Y OTRO DE N n ELEMENTOS 0OR LO TANTO EL NÞMERO DE COMPARACIONES QUE SE REALIZARÈN SERÈ #MÈX N N N x

N N

QUE ES IGUAL A

#MÈX

N N

▼ &ØRMULA


362 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ #OMO CONCLUSIØN SE PUEDE AlRMAR QUE EL TIEMPO PROMEDIO DE EJECUCIØN DEL ALGO RITMO ES PROPORCIONAL A N LOG N / N LOG N %N EL PEOR CASO EL TIEMPO DE EJECUCIØN ES PROPORCIONAL A N / N

/RDENACIØN POR EL MÏTODO HEAPSORT MONTÓCULO %L MÏTODO DE ORDENACIØN HEAPSORT SE CONOCE TAMBIÏN COMO MONTÓCULO 3U NOMBRE SE DEBE A SU AUTOR * 7 7ILLIAMS QUIEN LO LLAMØ ASÓ %S EL MÈS ElCIENTE DE LOS MÏTODOS DE ORDENACIØN QUE TRABAJAN CON ÈRBOLES ,A IDEA CENTRAL DE ESTE ALGORITMO SE BASA EN DOS OPERACIONES #ONSTRUIR UN MONTÓCULO %LIMINAR LA RAÓZ DEL MONTÓCULO EN FORMA REPETIDA %S IMPORTANTE SE×ALAR QUE UN MONTÓCULO SE DElNE COMO 0ARA TODO NODO DEL ÈRBOL SE DEBE CUMPLIR QUE SU VALOR SEA MAYOR O IGUAL QUE EL VALOR DE CUALQUIERA DE SUS HIJOS

%JEMPLO

%N LA lGURA SE MUESTRA UN MONTÓCULO !LLÓ SE PUEDE OBSERVAR QUE PARA CADA NODO + DEL ÈRBOL SU VALOR ES MAYOR O IGUAL QUE EL VALOR DE CUALQUIERA DE SUS HIJOS !HORA BIEN PARA REPRESENTAR UN MONTÓCULO EN UN ARREGLO LINEAL SE DEBE TENER EN CUENTA PARA TODO NODO + LO SIGUIENTE %L NODO + SE ALMACENA EN LA POSICIØN + CORRESPONDIENTE DEL ARREGLO %L HIJO IZQUIERDO DEL NODO + SE ALMACENA EN LA POSICIØN + %L HIJO DERECHO DEL NODO + SE ALMACENA EN LA POSICIØN + ,A lGURA CONTIENE LA REPRESENTACIØN DEL MONTÓCULO DE LA lGURA EN UN ARREGLO UNIDIMENSIONAL ! /BSERVE QUE SI SE DESEA OBTENER EL HIJO IZQUIERDO DEL NODO !; = CUYO VALOR ES SE HACE !; = !; = Y SU CONTENIDO ES 3I DESEAMOS OBTENER EN CAMBIO EL HIJO DERECHO DE !; = HACEMOS !; = !; = Y SU CONTENIDO ES

&)'52! -ONTÓCULO CON ELEMENTOS


03%&/"$*Î/ */5&3/"

363

&)'52! 2EPRESENTACIØN DE UN MONTÓCULO EN UN ARREGLO LINEAL

! SU VEZ ES POSIBLE CALCULAR EL PADRE DE UN NODO NO RAÓZ + CUALQUIERA TOMANDO LA PARTE ENTERA DE + ENTRE !SÓ POR EJEMPLO SI SE DESEA OBTENER EL PADRE DEL NODO !; = CUYO VALOR ES SE HACE !;PARTE ENTERA ENTRE = !; = Y SU CONTENIDO ES

)NSERCIØN DE UN ELEMENTO EN UN MONTÓCULO ,A INSERCIØN DE UN ELEMENTO EN UN MONTÓCULO SE LLEVA A CABO POR MEDIO DE LOS SIGUIENTES PASOS 3E INSERTA EL ELEMENTO EN LA PRIMERA POSICIØN DISPONIBLE 3E VERIlCA SI SU VALOR ES MAYOR QUE EL DE SU PADRE 3I SE CUMPLE ESTA CONDICIØN ENTONCES SE EFECTÞA EL INTERCAMBIO 3I NO SE CUMPLE ESTA CONDICIØN ENTONCES EL ALGORITMO SE DETIENE Y EL ELEMENTO QUEDA UBICADO EN SU POSICIØN CORRECTA EN EL MONTÓCULO #ABE ACLARAR QUE EL PASO SE APLICA DE MANERA RECURSIVA Y DESDE ABAJO HACIA ARRIBA

%JEMPLO

3UPONGAMOS QUE SE QUIERE INCORPORAR AL MONTÓCULO DE LA lGURA EL ELEMENTO ,AS COMPARACIONES QUE REALIZAMOS SON

SÓ HAY INTERCAMBIO SÓ HAY INTERCAMBIO NO HAY INTERCAMBIO

,UEGO DE HABER INSERTADO EL ELEMENTO EL MONTÓCULO QUEDA COMO SE MUESTRA EN LA lGURA

&)'52! -ONTÓCULO CON ELEMENTOS .OTA 3E UTILIZA mECHA DISCON TINUA PARA INDICAR LA POSICIØN INICIAL DONDE SE INSERTA EL ELEMENTO


364 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ &)'52! -ONTÓCULO LUEGO DE HABER INSERTADO LA CLAVE

%JEMPLO

3UPONGAMOS QUE SE DESEA INSERTAR LAS SIGUIENTES CLAVES EN UN MONTÓCULO QUE SE ENCUEN TRA VACÓO ,OS RESULTADOS PARCIALES QUE ILUSTRAN CØMO FUNCIONA EL PROCEDIMIENTO SE OBSERVAN EN LA lGURA %L MONTÓCULO SE REPRESENTA COMO ÈRBOL Y TAMBIÏN COMO ARREGLO ,AS mECHAS DISCONTINUAS INDICAN LA POSICIØN INICIAL DONDE SE INSERTA EL O LOS ELEMENTOS

%JEMPLO

$ADO EL MONTÓCULO DE LA lGURA F VERIlQUE SI ÏSTE QUEDA IGUAL AL MONTÓCULO REPRESEN TADO COMO ARREGLO DE LA lGURA LUEGO DE INSERTAR LAS SIGUIENTES CLAVES

&)'52! )NSERCIONES EN UN MONTÓCULO .OTA 3E UTILIZA LA mECHA DISCONTINUA PARA INDICAR LA PO SICIØN INICIAL DONDE SE INSERTA EL O LOS ELEMENTOS


03%&/"$*Î/ */5&3/"

&)'52! CONTINUACIØN )NSERCIONES EN UN MONTÓCULO .OTA 3E UTILIZA LA mECHA DISCONTINUA PARA INDICAR LA POSICIØN INICIAL DONDE SE INSERTA EL O LOS ELEMENTOS

365


366 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/

&)'52! CONTINUACIØN )NSERCIONES EN UN MON TÓCULO .OTA 3E UTILIZA LA mECHA DISCONTINUA PARA INDICAR LA PO SICIØN INICIAL DONDE SE INSERTA EL O LOS ELEMENTOS

%L ALGORITMO PARA INSERTAR ELEMENTOS EN UN MONTÓCULO ES !LGORITMO )NSERTA?MONTÓCULO )NSERTA?MONTÓCULO ! . [%L ALGORITMO INSERTA LOS ELEMENTOS EN UN MONTÓCULO REPRESENTADO COMO ARREGLO ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) + Y !58 SON VARIABLES DE TIPO ENTERO "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] 2EPETIR CON ) DESDE HASTA . (ACER + ← ) Y "!.$ ← 6%2$!$%2/ -IENTRAS + Y "!.$ 6%2$!$%2/ 2EPETIR (ACER "!.$ ← &!,3/ 3I !;+= !;PARTE ENTERA + ENTRE = ENTONCES (ACER !58 ← !;PARTE ENTERA + ENTRE =

!;PARTE ENTERA + ENTRE = ← !;+= !;+= ← !58

+ ← PARTE ENTERA + ENTRE Y "!.$ ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]


03%&/"$*Î/ */5&3/"

367

&)'52! -ONTÓCULO REPRESENTADO COMO ARREGLO UNIDIMENSIONAL

%LIMINACIØN DE UN MONTÓCULO %L PROCESO PARA OBTENER LOS ELEMENTOS ORDENADOS SE EFECTÞA ELIMINANDO LA RAÓZ DEL MON TÓCULO EN FORMA REPETIDA !HORA BIEN LOS PASOS NECESARIOS PARA LOGRAR LA ELIMINACIØN DE LA RAÓZ DEL MONTÓCULO SON 3E REEMPLAZA LA RAÓZ CON EL ELEMENTO QUE OCUPA LA ÞLTIMA POSICIØN DEL MONTÓCULO 3E VERIlCA SI EL VALOR DE LA RAÓZ ES MENOR QUE EL VALOR MÈS GRANDE DE SUS HIJOS 3I SE CUMPLE LA CONDICIØN ENTONCES SE EFECTÞA EL INTERCAMBIO 3I NO SE CUMPLE LA CONDI CIØN ENTONCES EL ALGORITMO SE DETIENE Y EL ELEMENTO QUEDA UBICADO EN SU POSICIØN CORRECTA EN EL MONTÓCULO #ABE ACLARAR QUE EL PASO SE APLICA DE MANERA RECURSIVA Y DESDE ARRIBA HACIA ABAJO

%JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LA RAÓZ DEL MONTÓCULO DE LA lGURA 2EEMPLAZAMOS LA RAÓZ POR EL ELEMENTO QUE OCUPA LA ÞLTIMA POSICIØN DEL MONTÓCU LO ! CONTINUACIØN EFECTUAMOS LAS SIGUIENTES COMPARACIONES

SÓ HAY INTERCAMBIO

ES EL MAYOR DE LOS HIJOS DE

SÓ HAY INTERCAMBIO

ES EL MAYOR DE LOS HIJOS DE

%L MONTÓCULO LUEGO DE HABERSE ELIMINADO LA RAÓZ QUEDA COMO EL QUE SE PRESENTA EN LA lGURA

&)'52! -ONTÓCULO REPRESENTADO COMO ÉRBOL


368 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ &)'52! -ONTÓCULO REPRESENTADO COMO ÉRBOL

%JEMPLO

3UPONGAMOS QUE SE DESEA ELIMINAR LA RAÓZ DEL MONTÓCULO PRESENTADO COMO ARREGLO DE LA lGURA EN FORMA REPETIDA #ABE ACLARAR QUE AL REEMPLAZAR LA RAÓZ POR EL ÞLTIMO ELEMENTO DEL MONTÓCULO ÏSTA SE COLOCA EN LA POSICIØN DEL ÞLTIMO ELEMENTO %S DECIR LA PRIMERA VEZ LA RAÓZ SERÈ COLO CADA EN LA POSICIØN N LA SEGUNDA VEZ EN LA POSICIØN N n LA TERCERA VEZ EN LA POSICIØN N n Y ASÓ SUCESIVAMENTE HASTA QUE QUEDE COLOCADA EN LAS POSICIONES Y EN FORMA RESPECTIVA ,OS PASOS A REALIZAR SON 02)-%2! %,)-).!#)». $% ,! 2!¶: 3E INTERCAMBIA LA RAÓZ CON EL ELEMENTO QUE OCUPA LA ÞLTIMA POSICIØN DEL MONTÓCULO ,AS COMPARACIONES QUE SE REALIZAN SON !; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

!; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

!; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

,UEGO DE ELIMINAR LA PRIMERA RAÓZ EL MONTÓCULO QUEDA ASÓ &)'52! -ONTÓCULO REPRESENTADO COMO ARREGLO UNIDIMEN SIONAL


03%&/"$*Î/ */5&3/"

369

/BSERVE QUE EL ELEMENTO MÈS GRANDE SE UBICØ EN LA ÞLTIMA POSICIØN DEL ARREGLO

3%'5.$! %,)-).!#)». $% ,! 2!¶: 3E INTERCAMBIA LA RAÓZ CON EL ELEMENTO QUE OCUPA LA ÞLTIMA POSICIØN DEL MONTÓCULO ,AS COMPARACIONES QUE SE REALIZAN SON !; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

!; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

!; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

,UEGO DE ELIMINAR LA SEGUNDA RAÓZ EL MONTÓCULO QUEDA ASÓ

4%2#%2! %,)-).!#)». $% ,! 2!¶: 3E INTERCAMBIA LA RAÓZ CON EL ELEMENTO QUE OCUPA LA ÞLTIMA POSICIØN DEL MONTÓCULO ,AS COMPARACIONES QUE SE REALIZAN SON !; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

!; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

!; = !; =

SÓ HAY INTERCAMBIO

!; = ES EL MAYOR DE LOS HIJOS DE !; =

,UEGO DE ELIMINAR LA TERCERA RAÓZ EL MONTÓCULO QUEDA ASÓ %N LA TABLA SE PRESENTA EL RESULTADO DE LAS RESTANTES ELIMINACIONES /BSERVE QUE LUEGO DE ELIMINAR LA RAÓZ DEL MONTÓCULO EN FORMA REPETIDA EL ARREGLO QUEDA ORDENADO ! CONTINUACIØN SE PRESENTA EL ALGORITMO QUE ELIMINA SUCESIVAMENTE LA RAÓZ DEL MON TÓCULO #ABE ACLARAR QUE PARA EFECTO DE AUMENTAR LA ElCIENCIA DEL ALGORITMO SE ELIMINAN LOS INTERCAMBIOS PARCIALES UTILIZANDO UNA VARIABLE AUXILIAR EN LA QUE SE ALMACENA EL ÞLTIMO ELEMENTO DEL MONTÓCULO


370 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ 4!",! %LIMINACIØN

-ONTÓCULO

!LGORITMO %LIMINA?MONTÓCULO %LIMINA?MONTÓCULO ! . [%L ALGORITMO ELIMINA LA RAÓZ DEL MONTÓCULO EN FORMA REPETIDA ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] [) !58 ):1 $%2 + Y !0 SON VARIABLES DE TIPO ENTERO "//, ES UNA VARIABLE DE TIPO BOOLEANO] 2EPETIR CON ) DESDE . HASTA [#ICLO DESCENDENTE] (ACER !58 ← !;)= !;)= ← !; = ):1 ← $%2 ← + ← Y "//, ← 6%2$!$%2/ -IENTRAS ):1 ) Y "//, 6%2$!$%2/ 2EPETIR (ACER -!9/2 ← !;):1= Y !0 ← ):1 3I -!9/2 !;$%2= Y $%2 ≠ ) ENTONCES (ACER -!9/2 ← !;$%2= Y !0 ← $%2 [&IN DEL CONDICIONAL DEL PASO ] 3I !58 -!9/2 ENTONCES (ACER !;+= ← !;!0= Y + ← !0 SI NO (ACER "//, ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] (ACER ):1 ← + Y $%2 ← ):1 [&IN DEL CICLO DEL PASO ] (ACER !;+= ← !58 [&IN DEL CICLO DEL PASO ]


03%&/"$*Î/ &95&3/"

371

%L PROCESO DE ORDENACIØN POR EL MÏTODO DEL MONTÓCULO CONSTA DE DOS PARTES #ONSTRUIR EL MONTÓCULO %STA OPERACIØN SE BASA EN LA DE INSERCIØN PRESENTADA EN EL ALGORITMO %LIMINAR REPETIDAMENTE LA RAÓZ DEL MONTÓCULO %STA OPERACIØN SE BASA EN LA DE ELIMI NACIØN PRESENTADA EN EL ALGORITMO %L ALGORITMO DE ORDENACIØN RESULTA ENTONCES DE LA SIGUIENTE MANERA !LGORITMO -ONTÓCULO -ONTÓCULO ! . [%L ALGORITMO ORDENA LOS ELEMENTOS DEL ARREGLO UTILIZANDO EL MÏTODO DEL MONTÓCULO ! ES UN ARREGLO UNIDIMENSIONAL DE . ELEMENTOS] ,LAMAR AL ALGORITMO )NSERTA?MONTÓCULO CON ! Y . ,LAMAR AL ALGORITMO %LIMINA?MONTÓCULO CON ! Y .

!NÉLISIS DE ElCIENCIA DEL MÏTODO DEL MONTÓCULO %L ANÈLISIS DEL MÏTODO DEL MONTÓCULO COMO EL DE LOS MÏTODOS LOGARÓTMICOS ES COMPLEJO %S IMPORTANTE TENER EN CUENTA TANTO LA FASE DE CONSTRUCCIØN DEL MONTÓCULO COMO LA FASE DONDE SE ELIMINA REPETIDAMENTE SU RAÓZ PARA lNALMENTE OBTENER EL ARREGLO ORDENADO ! DIFERENCIA DE LO QUE SE PUDIERA PENSAR YA QUE EN LA FASE DE CONSTRUCCIØN DEL MON TÓCULO LOS ELEMENTOS MAYORES SE CARGAN HACIA LA IZQUIERDA Y EN LA FASE DE ELIMINACIØN DE LA RAÓZ LOS ELEMENTOS MAYORES SE CARGAN HACIA LA DERECHA ÏSTE ES UN MÏTODO MUY RÈPIDO SOBRE TODO PARA VALORES GRANDES DE . ,OS ESTUDIOS REALIZADOS AL RESPECTO DEMUESTRAN QUE EL TIEMPO DE EJECUCIØN DEL ALGORITMO EN AMBAS FASES ES DE / N LOG N !UNQUE EL MÏTODO DEL MONTÓCULO PUEDE SER UN POCO MÈS LENTO QUE EL QUICKSORT SE ESTIMA EN ES EL ÞNICO QUE GARANTIZA QUE AUN EN EL PEOR CASO SU TIEMPO DE EJECU CIØN ES PROPORCIONAL A N LOG N / N LOG N 2ECUERDE QUE EL TIEMPO DE EJECUCIØN DEL MÏTODO QUICKSORT EN EL PEOR CASO ES PROPORCIONAL A N / N

/2$%.!#)¼. %84%2.! %N LA ACTUALIDAD ES MUY COMÞN PROCESAR TALES VOLÞMENES DE INFORMACIØN QUE LOS DATOS NO SE PUEDEN ALMACENAR EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA %STOS DATOS ORGA NIZADOS EN ARCHIVOS SE GUARDAN EN DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO COMO CINTAS DISCOS ETCÏTERA %L PROCESO DE ORDENAR LOS DATOS ALMACENADOS EN VARIOS ARCHIVOS SE CONOCE COMO FUSIØN O MEZCLA SE ENTIENDE POR ESTE CONCEPTO A LA COMBINACIØN O INTERCALACIØN DE DOS O MÈS SECUENCIAS ORDENADAS EN UNA ÞNICA SECUENCIA ORDENADA 3E DEBE HACER HINCAPIÏ EN


372 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ QUE SØLO SE COLOCAN EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA LOS DATOS QUE SE PUEDEN ACCEDER EN FORMA DIRECTA

)NTERCALACIØN DE ARCHIVOS 0OR INTERCALACIØN DE ARCHIVOS SE ENTIENDE LA UNIØN O FUSIØN DE DOS O MÈS ARCHIVOS ORDENADOS DE ACUERDO CON UN DETERMINADO CAMPO CLAVE EN UN SOLO ARCHIVO !NALICEMOS EL SIGUIENTE EJEMPLO

%JEMPLO

3UPONGA QUE SE TIENEN DOS ARCHIVOS & Y & CUYA INFORMACIØN ESTÈ ORDENADA DE ACUER DO CON UN CAMPO CLAVE & & 3E DEBE PRODUCIR ENTONCES UN ARCHIVO & ORDENADO COMO RESULTADO DE LA MEZCLA DE & Y & 3ØLO SE PUEDEN ACCEDER EN FORMA DIRECTA DOS CLAVES LA PRIMERA DEL ARCHIVO & Y LA SEGUNDA DEL ARCHIVO & ,AS COMPARACIONES QUE SE REALIZAN PARA PRODUCIR EL ARCHIVO & SON

SÓ SE CUMPLE LA CONDICIØN 3E ESCRIBE EN EL ARCHIVO DE SALIDA & Y SE VUELVE A LEER OTRA CLAVE DE &

SÓ SE CUMPLE LA CONDICIØN 3E ESCRIBE EN EL ARCHIVO DE SALIDA & Y SE VUELVE A LEER OTRA CLAVE DE &

NO SE CUMPLE LA CONDICIØN 3E ESCRIBE EN EL ARCHIVO DE SALIDA & Y SE VUELVE A LEER OTRA CLAVE DE &

%L ESTADO DE LOS ARCHIVOS & & Y & HASTA EL MOMENTO ES COMO SE MUESTRA MÈS ABAJO ,A mECHA SE×ALA EL ÞLTIMO ELEMENTO LEÓDO DE LOS ARCHIVOS QUE SE ESTÈN INTERCA LANDO ↓ & ↓ & & %L PROCESO CONTINÞA HASTA QUE EN UNO U OTRO ARCHIVO SE DETECTE SU lNAL EN TAL CASO SØLO SE TENDRÈ QUE COPIAR LA INFORMACIØN DEL ARCHIVO NO VACÓO AL ARCHIVO DE SALIDA & %L RESULTADO lNAL DE LA INTERCALACIØN ENTRE LOS ARCHIVOS & Y & ES


03%&/"$*Î/ &95&3/"

373

& ! CONTINUACIØN SE MUESTRA EL ALGORITMO DE INTERCALACIØN DE ARCHIVOS !LGORITMO )NTERCALACIØN

)NTERCALACIØN & & & [%L ALGORITMO INTERCALA LOS ELEMENTOS DE DOS ARCHIVOS YA ORDENADOS & Y & Y ALMACENA EL RESULTADO EN EL ARCHIVO & ] [2 Y 2 SON VARIABLES DE TIPO ENTERO "!. Y "!. SON VARIABLES DE TIPO BOOLEANO]

!BRIR LOS ARCHIVOS & Y & PARA LECTURA !BRIR EL ARCHIVO & PARA ESCRITURA (ACER "!. ← 6%2$!$%2/ Y "!. ← 6%2$!$%2/ -IENTRAS NO SEA EL lN DE ARCHIVO DE & O "!. &!,3/ Y NO SEA EL lN DE ARCHIVO DE & O "!. &!,3/ 2EPETIR 3I "!. 6%2$!$%2/ ENTONCES [3E DEBE LEER 2 DE & ] ,EER 2 DE & (ACER "!. ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] 3I "!. 6%2$!$%2/ ENTONCES [3E DEBE LEER 2 DE & ] ,EER 2 DE & (ACER "!. ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] 3I 2 2 ENTONCES %SCRIBIR 2 EN & (ACER "!. ← 6%2$!$%2/ SI NO %SCRIBIR 2 EN & (ACER "!. ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [6ERIlCA SI SE LEYØ UN ELEMENTO DE & Y NO SE COPIØ EN & ] 3I "!. &!,3/ ENTONCES %SCRIBIR 2 EN & -IENTRAS NO SEA EL lN DE ARCHIVO DE & 2EPETIR ,EER 2 DE & %SCRIBIR 2 EN & [&IN DEL CICLO DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [6ERIlCA SI SE LEYØ UN ELEMENTO DE & Y NO SE COPIØ EN & ] 3I "!. &!,3/ ENTONCES %SCRIBIR 2 EN & -IENTRAS NO SEA EL lN DE ARCHIVO DE & 2EPETIR


374 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/

,EER 2 DE & %SCRIBIR 2 EN & [&IN DEL CICLO DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [#ERRAR LOS ARCHIVOS & & Y & ]

/RDENACIØN DE ARCHIVOS ,A ORDENACIØN DE ARCHIVOS SE EFECTÞA CUANDO EL VOLUMEN DE LOS DATOS ES DEMASIADO GRANDE Y ÏSTOS NO CABEN EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA !L OCURRIR ESTA SITUACIØN NO SE PUEDEN APLICAR LOS MÏTODOS DE ORDENACIØN INTERNA ESTUDIADOS EN LA PRI MERA PARTE DE ESTE CAPÓTULO DE MODO QUE SE DEBE PENSAR EN OTRO TIPO DE ALGORITMOS PARA ORDENAR DATOS ALMACENADOS EN ARCHIVOS 0OR ORDENACIØN DE ARCHIVOS SE ENTIENDE ENTONCES LA ORDENACIØN O CLASIlCACIØN DE ÏSTOS ASCENDENTE O DESCENDENTEMENTE DE ACUERDO CON UN CAMPO DETERMINADO AL QUE SE DENOMINARÈ CAMPO CLAVE ,A PRINCIPAL DESVENTAJA DE ESTA ORDENACIØN ES EL TIEMPO DE EJECUCIØN DEBIDO A LAS SUCESIVAS OPERACIONES DE LECTURA Y ESCRITURA A DE ARCHIVO ,OS DOS MÏTODOS DE ORDENACIØN EXTERNA MÈS IMPORTANTES SON LOS BASADOS EN LA MEZCLA DIRECTA Y EN LA MEZCLA EQUILIBRADA

/RDENACIØN POR MEZCLA DIRECTA %L MÏTODO DE ORDENACIØN POR MEZCLA DIRECTA ES PROBABLEMENTE EL MÈS UTILIZADO POR SU FÈCIL COMPRENSIØN ,A IDEA CENTRAL DE ESTE ALGORITMO CONSISTE EN LA REALIZACIØN SUCESIVA DE UNA PARTICIØN Y UNA FUSIØN QUE PRODUCE SECUENCIAS ORDENADAS DE LONGITUD CADA VEZ MAYOR %N LA PRIMERA PASADA LA PARTICIØN ES DE LONGITUD Y LA FUSIØN O MEZCLA PRODUCE SECUENCIAS ORDENADAS DE LONGITUD %N LA SEGUNDA PASADA LA PARTICIØN ES DE LONGITUD Y LA FUSIØN O MEZCLA PRODUCE SECUENCIAS ORDENADAS DE LONGITUD %STE PROCESO SE REPITE HASTA QUE LA LONGITUD DE LA SECUENCIA PARA LA PARTICIØN SEA 0ARTE ENTERA N $ONDE N REPRESENTA EL NÞMERO DE ELEMENTOS DEL ARCHIVO ORIGINAL

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS CLAVES DEL ARCHIVO & 0ARA REALIZAR TAL ACTIVIDAD SE UTILIZAN DOS ARCHIVOS AUXILIARES A LOS QUE SE LES DENOMINARÈ & Y & & 02)-%2! 0!3!$! 0ARTICIØN EN SECUENCIAS DE LONGITUD


03%&/"$*ร / &95&3/"

375

& สน สน สน สน สน สน สน สน & สน สน สน สน สน สน สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน สน สน สน สน 3%'5.$! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน & สน สน สน สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน 4%2#%2! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน สน & สน สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน #5!24! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน & สน &USIร N EN SECUENCIAS DE LONGITUD & ! CONTINUACIร N SE PRESENTA EL ALGORITMO DE ORDENACIร N DE ARCHIVOS POR EL Mร TODO DE MEZCLA DIRECTA


376 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ !LGORITMO -EZCLA?DIRECTA -EZCLA?DIRECTA & & & . [%L ALGORITMO ORDENA LOS ELEMENTOS DEL ARCHIVO & POR EL MÏTODO DE MEZCLA DIRECTA 5TILIZA DOS ARCHIVOS AUXILIARES & Y & . ES EL NÞMERO DE ELEMENTOS DEL ARCHIVO &] [0!24 ES UNA VARIABLE DE TIPO ENTERO] (ACER 0!24 ← -IENTRAS 0!24 PARTE ENTERA . 2EPETIR ,LAMAR AL ALGORITMO 0ARTICIONA CON & & & Y 0!24 ,LAMAR AL ALGORITMO &USIONA CON & & & Y 0!24 (ACER 0!24 ← 0!24 [&IN DEL CICLO DEL PASO ]

/BSERVE QUE EL ALGORITMO REQUIERE PARA SU FUNCIONAMIENTO DE DOS ALGORITMOS AUXI LIARES LOS CUALES SE PRESENTAN A CONTINUACIØN

!LGORITMO 0ARTICIONA

0ARTICIONA & & & 0!24 [%L ALGORITMO GENERA DOS ARCHIVOS AUXILIARES & Y & A PARTIR DEL ARCHIVO & 0!24 ES LA LONGITUD DE LA PARTICIØN QUE SE VA A REALIZAR] [+ , Y 2 SON VARIABLES DE TIPO ENTERO] !BRIR EL ARCHIVO & PARA LECTURA !BRIR LOS ARCHIVOS & Y & PARA ESCRITURA -IENTRAS NO SEA EL lN DE ARCHIVO DE & 2EPETIR (ACER + ← -IENTRAS + 0!24 Y NO SEA EL lN DE ARCHIVO DE & GZeZi^g ,EER 2 DE & %SCRIBIR 2 EN & (ACER + ← + [&IN DEL CICLO DEL PASO ] (ACER , ← -IENTRAS , 0!24 Y NO SEA EL lN DE ARCHIVO DE & 2EPETIR ,EER 2 DE & %SCRIBIR 2 EN & (ACER , ← , [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ]


03%&/"$*Î/ &95&3/"

377

!LGORITMO &USIONA &USIONA & & & 0!24 [%L ALGORITMO FUSIONA LOS ARCHIVOS & Y & EN EL ARCHIVO & 0!24 ES LA LONGITUD DE LA PARTICIØN QUE SE REALIZØ PREVIAMENTE] [2 2 + Y , SON VARIABLES DE TIPO ENTERO " Y " SON VARIABLES DE TIPO BOOLEANO] !BRIR EL ARCHIVO & PARA ESCRITURA !BRIR LOS ARCHIVOS & Y & PARA LECTURA (ACER " ← 6%2$!$%2/ Y " ← 6%2$!$%2/ 3I NO ES EL lN DE ARCHIVO DE & ENTONCES ,EER 2 DE & (ACER " ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] 3I NO ES EL lN DE ARCHIVO DE & ENTONCES ,EER 2 DE & (ACER " ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] -IENTRAS NO SEA EL lN DE ARCHIVO DE & O " &!,3/ Y NO SEA EL lN DE ARCHIVO DE & O " &!,3/ 2EPETIR (ACER + ← Y , ← -IENTRAS + 0!24 Y " &!,3/ Y , 0!24 Y " &!,3/ 2EPETIR 3I 2 ≤ 2 ENTONCES %SCRIBIR 2 EN & (ACER " ← 6%2$!$%2/ Y + ← + 3I NO ES EL lN DE ARCHIVO DE & ENTONCES ,EER 2 DE & (ACER " ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] SI NO %SCRIBIR 2 EN & (ACER " ← 6%2$!$%2/ Y , ← , 3I NO ES EL lN DE ARCHIVO DE & ENTONCES ,EER 2 DE & (ACER " ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] -IENTRAS + 0!24 Y " &!,3/ 2EPETIR %SCRIBIR 2 EN & (ACER " ← 6%2$!$%2/ Y + ← + 3I NO ES EL lN DE ARCHIVO DE & ENTONCES ,EER 2 DE & (ACER " ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]


378 >ยซย ร ร ย ย ร nร ร ร .c50%04 %& 03%&/"$*ร / -IENTRAS , 0!24 Y " &!,3/ 2EPETIR %SCRIBIR 2 EN & (ACER " โ 6%2$!$%2/ Y , โ , 3I NO ES EL lN DE ARCHIVO DE & ENTONCES ,EER 2 DE & (ACER " โ &!,3/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I " &!,3/ ENTONCES %SCRIBIR 2 EN & [&IN DEL CONDICIONAL DEL PASO ] 3I " &!,3/ ENTONCES %SCRIBIR 2 EN & [&IN DEL CONDICIONAL DEL PASO ] -IENTRAS NO SEA EL lN DE ARCHIVO DE & 2EPETIR ,EER 2 DE & %SCRIBIR 2 EN & [&IN DEL CONDICIONAL DEL PASO ] -IENTRAS NO SEA EL lN DE ARCHIVO DE & 2EPETIR ,EER 2 DE & %SCRIBIR 2 EN & [&IN DEL CICLO DEL PASO ] [#ERRAR LOS ARCHIVOS & & Y & ]

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS CLAVES DEL ARCHIVO & UTILIZANDO EL Mร TODO DE MEZCLA DIRECTO & ,OS PASOS QUE SE REALIZAN SON 02)-%2! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน สน สน สน สน สน สน & สน สน สน สน สน สน สน สน สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน สน สน สน สน สน สน


03%&/"$*ร / &95&3/"

379

3%'5.$! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน สน & สน สน สน สน สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน สน 4%2#%2! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน สน สน & สน สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน สน สน #5!24! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน สน & สน &USIร N EN SECUENCIAS DE LONGITUD & สน สน 15).4! 0!3!$! 0ARTICIร N EN SECUENCIAS DE LONGITUD & สน & สน &USIร N EN SECUENCIAS DE LONGITUD &


380 >ยซย ร ร ย ย ร nร ร ร .c50%04 %& 03%&/"$*ร /

/RDENACIร N POR EL Mร TODO DE MEZCLA EQUILIBRADA %L Mร TODO DE ORDENACIร N POR MEZCLA EQUILIBRADA CONOCIDO TAMBIร N Cร MO MEZCLA NATURAL ES UNA OPTIMIZACIร N DEL Mร TODO DE MEZCLA DIRECTA ,A IDEA CENTRAL DE ESTE ALGORITMO CONSISTE EN REALIZAR LAS PARTICIONES TOMANDO SE CUENCIAS ORDENADAS DE Mร XIMA LONGITUD EN LUGAR DE SECUENCIAS DE TAMAร O lJO PREVIA MENTE DETERMINADAS ,UEGO SE REALIZA LA FUSIร N DE LAS SECUENCIAS ORDENADAS EN FORMA ALTERNADA SOBRE DOS ARCHIVOS !PLICANDO ESTAS ACCIONES EN FORMA REPETIDA SE LOGRARร QUE EL ARCHIVO ORIGINAL QUEDE ORDENADO 0ARA LA REALIZACIร N DE ESTE PROCESO DE ORDENACIร N SE NECESITARร N CUATRO ARCHIVOS %L ARCHIVO ORIGINAL & Y TRES ARCHIVOS AUXILIARES A LOS QUE SE DENOMINARร & & Y & $E ESTOS ARCHIVOS DOS SERร N CONSIDERADOS DE ENTRADA Y DOS DE SALIDA ESTO DE MANERA ALTERNADA CON EL OBJETO DE REALIZAR LA FUSIร N PARTICIร N %L PROCESO TERMINA CUANDO EN LA REALIZACIร N DE UNA FUSIร N PARTICIร N EL SEGUNDO ARCHIVO QUEDE VACร O

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS CLAVES DEL ARCHIVO & UTILIZANDO EL Mร TODO DE MEZCLA EQUILIBRADA & ,OS PASOS QUE SE REALIZAN SON 0!24)#)ยป. ).)#)!, & สน สน สน สน & สน สน สน 02)-%2! &53)ยป. 0!24)#)ยป. & สน สน & สน 3%'5.$! &53)ยป. 0!24)#)ยป. & สน & สน 4%2#%2! &53)ยป. 0!24)#)ยป. & & /BSERVE QUE AL REALIZAR LA TERCERA FUSIร N PARTICIร N EL SEGUNDO ARCHIVO QUEDA VACร O POR LO TANTO SE PUEDE AlRMAR QUE EL ARCHIVO YA SE ENCUENTRA ORDENADO ! CONTINUACIร N SE PRESENTA LA DESCRIPCIร N FORMAL DEL ALGORITMO DE MEZCLA EQUILIBRADA


03%&/"$*Î/ &95&3/"

381

!LGORITMO -EZCLA?EQUILIBRADA -EZCLA?EQUILIBRADA & & & & [%L ALGORITMO ORDENA LOS ELEMENTOS DEL ARCHIVO & POR EL MÏTODO DE MEZCLA EQUILIBRADA 5TILIZA TRES ARCHIVOS AUXILIARES & & Y & ] ["!.$ ES UNA VARIABLE DE TIPO BOOLEANO] ,LAMAR AL ALGORITMO 0ARTICIØN?INICIAL CON & & Y & ,LAMAR AL ALGORITMO 0ARTICIØN?FUSIØN CON & & & Y & (ACER "!.$ ← &!,3/ -IENTRAS & ≠ 6!#¶/ O & ≠ 6!#¶/ 2EPETIR 3I "!.$ 6%2$!$%2/ ENTONCES ,LAMAR AL ALGORITMO 0ARTICIØN?FUSIØN CON & & & Y & (ACER "!.$ ← &!,3/ SI NO ,LAMAR AL ALGORITMO 0ARTICIØN?FUSIØN CON & & & Y & (ACER "!.$ ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ]

%L ALGORITMO REQUIERE PARA SU FUNCIONAMIENTO DE DOS ALGORITMOS AUXILIARES 0ARTICIØN?INICIAL Y 0ARTICIØN?FUSIØN LOS CUALES SE PRESENTAN A CONTINUACIØN !LGORITMO 0ARTICIØN?INICIAL 0ARTICIØN?INICIAL & & & [%L ALGORITMO PRODUCE LA PARTICIØN INICIAL DEL ARCHIVO & EN DOS ARCHIVOS AUXILIARES & Y & ] [!58 Y 2 SON VARIABLES DE TIPO ENTERO "!.$ ES UNA VARIABLE DE TIPO BOOLEANO] !BRIR EL ARCHIVO & PARA LECTURA !BRIR LOS ARCHIVOS & Y & PARA ESCRITURA ,EER 2 DE & %SCRIBIR 2 EN & (ACER "!.$ ← 6%2$!$%2/ Y !58 ← 2 -IENTRAS NO SEA EL lN DE ARCHIVO DE & 2EPETIR ,EER 2 DE & 3I 2 ≥ !58 ENTONCES (ACER !58 ← 2 3I "!.$ 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN & SI NO


382 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ %SCRIBIR 2 EN & [&IN DEL CONDICIONAL DEL PASO ] SI NO (ACER !58 ← 2 3I "!.$ 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN & (ACER "!.$ ← &!,3/ SI NO %SCRIBIR 2 EN & (ACER "!.$ ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] [#ERRAR LOS ARCHIVOS & & Y & ]

!LGORITMO 0ARTICIØN?FUSIØN 0ARTICIØN?FUSIØN &! &" &# &$ [%L ALGORITMO PRODUCE LA PARTICIØN Y LA FUSIØN DE LOS ARCHIVOS &! Y &" EN LOS ARCHIVOS &# Y &$] [2 2 Y !58 SON VARIABLES DE TIPO ENTERO "!. "!. Y "!. SON VARIABLES DE TIPO BOOLEANO] !BRIR LOS ARCHIVOS &! Y &" PARA LECTURA !BRIR LOS ARCHIVOS &# Y &$ PARA ESCRITURA (ACER "!. ← 6%2$!$%2/ "!. ← 6%2$!$%2/ "!. ← 6%2$!$%2/ Y !58 ← n [!58 SE INICIALIZA CON UN VALOR NEGATIVO ALTO] -IENTRAS NO SEA EL lN DE ARCHIVO DE &! O "!. &!,3/ Y NO SEA EL lN DE ARCHIVO DE &" O "!. &!,3/ 2EPETIR 3I "!. 6%2$!$%2/ ENTONCES ,EER 2 DE &! (ACER "!. ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] 3I "!. 6%2$!$%2/ ENTONCES ,EER 2 DE &" (ACER "!. ← &!,3/ [&IN DEL CONDICIONAL DEL PASO ] 3I 2 2 ENTONCES 3I 2 ≥ !58 ENTONCES 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN &# SI NO


03%&/"$*Î/ &95&3/"

%SCRIBIR 2 EN &$ [&IN DEL CONDICIONAL DEL PASO ] (ACER "!. ← 6%2$!$%2/ Y !58 ← 2 SI NO 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN &# (ACER "!. ← &!,3/ SI NO %SCRIBIR 2 EN &$ (ACER "!. ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] (ACER "!. ← 6%2$!$%2/ Y !58 ← n [&IN DEL CONDICIONAL DEL PASO ] SI NO 3I 2 ≥ !58 ENTONCES 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN &# SI NO %SCRIBIR 2 EN &$ [&IN DEL CONDICIONAL DEL PASO ] (ACER "!. ← 6%2$!$%2/ Y !58 ← 2 SI NO 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN &# (ACER "!. ← &!,3/ SI NO %SCRIBIR 2 EN &$ (ACER "!. ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] (ACER "!. ← 6%2$!$%2/ Y !58 ← n [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!. &!,3/ ENTONCES 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN &# -IENTRAS NO SEA EL lN DE ARCHIVO DE &! 2EPETIR ,EER 2 DE &! %SCRIBIR 2 EN &# [&IN DEL CICLO DEL PASO ] SI NO %SCRIBIR 2 EN &$ -IENTRAS NO SEA EL lN DE ARCHIVO DE &! 2EPETIR ,EER 2 DE &! %SCRIBIR 2 EN &$

383


384 >ยซย ร ร ย ย ร nร ร ร .c50%04 %& 03%&/"$*ร / [&IN DEL CICLO DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] 3I "!. &!,3/ ENTONCES 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR 2 EN &# -IENTRAS NO SEA EL lN DE ARCHIVO DE &" 2EPETIR ,EER 2 DE &" %SCRIBIR 2 EN &# [&IN DEL CICLO DEL PASO ] SI NO %SCRIBIR 2 EN &$ -IENTRAS NO SEA EL lN DE ARCHIVO DE &" 2EPETIR ,EER 2 DE &" %SCRIBIR 2 EN &$ [&IN DEL CICLO DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [#ERRAR LOS ARCHIVOS &! &" &# Y &$]

%JEMPLO

3UPONGAMOS QUE SE DESEA ORDENAR LAS CLAVES DEL ARCHIVO & UTILIZANDO EL Mร TODO DE MEZCLA EQUILIBRADA & ,OS PASOS QUE SE REALIZAN SON 0!24)#)ยป. ).)#)!, & สน สน สน สน & สน สน สน 02)-%2! &53)ยป. 0!24)#)ยป. & สน สน & สน สน 3%'5.$! &53)ยป. 0!24)#)ยป. & สน & สน


03%&/"$*Î/ &95&3/"

385

4%2#%2! &53)». 0!24)#)». & &


386 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/

▼ %*%2#)#)/3 /RDENACIØN INTERNA Ê £° %N UN ARREGLO SE GUARDAN LOS APELLIDOS DE . ALUMNOS !PLIQUE EL MÏTODO DE LA BUR BUJA ORDENACIØN POR EL MÏTODO DE INTERCAMBIO DIRECTO PARA ORDENAR EL ARREGLO EN FORMA ASCENDENTE DE MANERA QUE !P ≤ !P ≤ ≤ !PN Ê Ó° 2ESUELVA EL PROBLEMA APLICANDO EL MÏTODO DE LA BURBUJA CON SE×AL Ê Î° 2ESUELVA EL PROBLEMA APLICANDO EL MÏTODO SHAKERSORT Ê {° #OMPARE EL TIEMPO DE EJECUCIØN DE LAS SOLUCIONES Y PARA DISTINTOS VALORES DE . Ê x° $ADO UN ARREGLO UNIDIMENSIONAL DE . NÞMEROS ENTEROS ORDÏNELO EN FORMA DESCEN DENTE APLICANDO A )NSERCIØN DIRECTA B )NSERCIØN BINARIA C 3ELECCIØN DIRECTA #OMPARE EL TIEMPO DE EJECUCIØN DE LAS SOLUCIONES A B Y C PARA DISTINTOS VALORES DE . Ê È° 3E TIENEN TRES ARREGLOS PARALELOS %L PRIMERO DE ELLOS ALMACENA LAS MATRÓCULAS DE . ALUMNOS EL SEGUNDO LAS CALIlCACIONES DE LOS . ALUMNOS OBTENIDAS EN UN EXAMEN lNAL Y EL TERCERO EL NÞMERO TOTAL DE MATERIAS APROBADAS POR CADA ALUMNO ,OS ELE MENTOS DE LOS ARREGLOS SE CORRESPONDEN A !PLIQUE EL MÏTODO DE INSERCIØN DIRECTA PARA ORDENAR LOS ARREGLOS DE MANERA QUE QUEDEN ORDENADOS EN FORMA ASCENDENTE POR MATRÓCULA B !PLIQUE EL MÏTODO QUICKSORT PARA ORDENAR LOS ARREGLOS DE MANERA QUE QUEDEN ORDE NADOS EN FORMA DESCENDENTE POR EL NÞMERO TOTAL DE MATERIAS APROBADAS Ê Ç° %N CIERTA EMPRESA SE MANEJA UNA LISTA DE PRECIOS DE LOS . ARTÓCULOS QUE SE VENDEN $E CADA ARTÓCULO SE TIENE LA SIGUIENTE INFORMACIØN ◗ ◗ ◗

#LAVE DEL ARTÓCULO .OMBRE DEL ARTÓCULO 0RECIO DEL ARTÓCULO

A /RDENE EL ARREGLO EN FORMA ASCENDENTE SEGÞN EL CAMPO hCLAVEv !PLIQUE EL MÏTODO QUICKSORT


&+&3$*$*04

387

B /RDENE EL ARREGLO EN FORMA DESCENDENTE SEGÞN EL CAMPO hPRECIOv !PLIQUE EL MÏTO DO DEL MONTÓCULO Ê n° 2ESUELVA EL INCISO A DEL PROBLEMA APLICANDO EL MÏTODO DE SELECCIØN DIRECTA #OMPARE EL TIEMPO DE EJECUCIØN DE ESTA SOLUCIØN CON LA OBTENIDA EN EL EJERCICIO ANTERIOR PARA DISTINTOS VALORES DE . Ê ° 5NA COMPA×ÓA PROPIETARIA DE UNA CADENA DE HOTELES QUIERE QUE SE ORDENE SU INFOR MACIØN $E CADA HOTEL SE TIENEN LOS SIGUIENTES DATOS ◗ ◗ ◗ ◗

.OMBRE DEL HOTEL #IUDAD EN LA QUE SE ENCUENTRA EL HOTEL .ÞMERO DE ESTRELLAS .ÞMERO DE CUARTOS %N UNA MISMA CIUDAD PUEDE HABER VARIOS HOTELES DE LA COMPA×ÓA %SCRIBA UN PROGRAMA QUE ORDENE EL ARREGLO SEGÞN EL CAMPO hCIUDADv EN PRIMER TÏRMINO Y LUEGO SEGÞN EL CAMPO hNOMBREv %S DECIR EL ARREGLO DEBE QUEDAR .OMBRE .OMBRE .OMBREI .OMBREN

#IUDAD #IUDAD

.ÞM ESTRELLAS .ÞM ESTRELLAS

.ÞM CUARTOS .ÞM CUARTOS

#IUDAD

.ÞM ESTRELLASI

.ÞM CUARTOSI

#IUDADK

.ÞM ESTRELLASK

.ÞM CUARTOSN

$ONDE ◗ ◗ ◗ ◗

#IUDAD #IUDAD #IUDADK .OMBRE .OMBRE .OMBREI n .OMBREI .OMBREI .OMBREJ n .OMBRET .OMBRET .OMBREN

£ä° 2ETOME EL PROBLEMA DEL CAPÓTULO /RDENE LOS ARREGLOS 352 #%.42/ Y ./2 4% APLICANDO A )NSERCIØN DIRECTA B )NSERCIØN BINARIA C 3HELL ££° 5NA ESCUELA TIENE ALMACENADOS LOS PRINCIPALES DATOS DE CADA ALUMNO ²STOS SON ◗ ◗ ◗ ◗

.OMBRE DEL ALUMNO -ATRÓCULA .ÞMERO DE MATERIAS APROBADAS 0ROMEDIO


388 >« ÌÕ ÊnÊ Ê Ê .c50%04 %& 03%&/"$*Î/ A !PLIQUE EL MÏTODO DE SELECCIØN DIRECTA PARA ORDENAR EL ARREGLO DE . ALUMNOS EN FORMA ASCENDENTE SEGÞN EL CAMPO hNOMBREv B !PLIQUE EL MÏTODO QUICKSORT PARA ORDENAR EL ARREGLO DE . ALUMNOS EN FORMA ASCEN DENTE SEGÞN EL CAMPO hNÞMERO DE MATERIAS APROBADASv £Ó° 3E TIENE UN ARREGLO DE . NÞMEROS ENTEROS A z#UÈNTAS COMPARACIONES Y CUÈNTOS INTERCAMBIOS SE DEBEN REALIZAR SI SE ORDENA EL ARREGLO CON EL MÏTODO DE LA BURBUJA B z#UÈNTAS COMPARACIONES Y CUÈNTOS INTERCAMBIOS SE DEBEN REALIZAR SI SE ORDENA EL ARREGLO CON EL MÏTODO DE SELECCIØN DIRECTA £Î° $ADO UN ARREGLO UNIDIMENSIONAL DE . NÞMEROS ENTEROS QUE DEBE SER ORDENADO EN FORMA ASCENDENTE CONTESTE LAS SIGUIENTES PREGUNTAS A #UÈNTAS COMPARACIONES E INTERCAMBIOS SE DEBEN REALIZAR APLICANDO EL MÏTODO DE INSERCIØN DIRECTA SI ◗ %L ARREGLO YA ESTÈ ORDENADO ◗ %L ARREGLO ESTÈ ORDENADO EN FORMA DESCENDENTE B #ONTESTE LA PREGUNTA DEL INCISO ANTERIOR PARA EL MÏTODO QUICKSORT C #ONTESTE LA PREGUNTA DEL INCISO ANTERIOR PARA EL MÏTODO DEL MONTÓCULO £{° 2ETOME EL PROBLEMA CONSIDERANDO QUE SE DElNIØ LA CLASE !RTÓCULO Y SE TIENE UN ARREGLO DE OBJETOS DE ESTE TIPO %SCRIBA UNA FUNCIØN QUE ORDENE EL ARREGLO DE OBJE TOS UTILIZANDO EL ALGORITMO DE QUICKSORT £x° $ElNA UNA CLASE !RREGLO SEGÞN LO VISTO EN EL CAPÓTULO %N LA CLASE DEBE INCLUIR POR LO MENOS MÏTODOS DE LOS ESTUDIADOS EN ESTE CAPÓTULO PARA ORDENAR LOS ELEMENTOS DEL ARREGLO £È° %SCRIBA UNA FUNCIØN QUE ANIME EL PROCESO DE ORDENACIØN USANDO EL ALGORITMO DE QUICKSORT %S DECIR EN LA MEDIDA EN QUE SE VA ORDENANDO EL ARREGLO EN LA PANTALLA SE DEBE IR REmEJANDO GRÈlCAMENTE SU CAMBIO DE ESTADO

/RDENACIØN EXTERNA £Ç° $ADO UN ARCHIVO DE NÞMEROS ENTEROS ORDÏNELO E IMPRÓMALO £n° %N EL ARCHIVO %-0,%!$/3 SE TIENE INFORMACIØN SOBRE LOS EMPLEADOS DE UNA EM PRESA ,OS DATOS ALMACENADOS POR CADA EMPLEADO SON ◗ ◗ ◗

.OMBRE %STADO CIVIL !NTIGàEDAD


&+&3$*$*04 ◗ ◗

389

#ATEGORÓA 3UELDO /RDENE EL ARCHIVO SEGÞN EL CAMPO hNOMBREv

A !PLIQUE MEZCLA DIRECTA B !PLIQUE MEZCLA EQUILIBRADA £ ° 3E TIENE UN ARCHIVO CON INFORMACIØN SOBRE HUÏSPEDES DE UN HOTEL ◗ ◗ ◗

.ÞMERO DE HABITACIØN .OMBRE DEL HUÏSPED &ECHA DE LLEGADA /RDENE EL ARCHIVO APLICANDO EL MÏTODO DE MEZCLA DIRECTA

A 3EGÞN EL CAMPO hNÞMERO DE HABITACIØNv B 3EGÞN EL CAMPO hNOMBREv Óä° $ADO UN ARCHIVO DE CADENAS DE CARACTERES ORDÏNELO EN FORMA DESCENDENTE APLICAN DO EL MÏTODO DE MEZCLA EQUILIBRADA Ó£° 3E TIENEN DOS ARCHIVOS ORDENADOS CON LOS NOMBRES DE LOS ESTUDIANTES DE UNA ESCUE LA .O SE HAN ACTUALIZADO DE LA MISMA MANERA LOS DOS ARCHIVOS HABIÏNDOSE DADO DE ALTA A ALGUNOS ALUMNOS EN UN ARCHIVO PERO NO EN EL OTRO %SCRIBA UN PROGRAMA QUE OBTENGA UN TERCER ARCHIVO TAMBIÏN ORDENADO INTERCALANDO LA INFORMACIØN DE LOS DOS ARCHIVOS EXISTENTES .O DEBEN QUEDAR ELEMENTOS REPETIDOS ÓÓ° 3E TIENEN TRES ARCHIVOS ! ! Y ! CON INFORMACIØN SOBRE RECITALES EFECTUADOS EN UN TEATRO A LO LARGO DE LOS TRES ÞLTIMOS A×OS #ADA REGISTRO DE LOS ARCHIVOS TIENE LOS SIGUIENTES CAMPOS ◗ ◗ ◗

.OMBRE DEL CANTANTE U ORQUESTA QUE OFRECIØ EL RECITAL .ÞMERO DE PRESENTACIONES &ECHAS DE LAS PRESENTACIONES ,OS TRES ARCHIVOS ESTÈN ORDENADOS EN FORMA ASCENDENTE SEGÞN EL PRIMER CAMPO %SCRIBA UN PROGRAMA QUE INTERCALE LOS TRES ARCHIVOS FORMANDO EL ARCHIVO 2% #)4!,%3



#APÓTULO

-³4/$/3 $% "Â315%$! ).42/$5##)¼. %STE CAPÓTULO SE DEDICA AL ESTUDIO DE UNA DE LAS OPERACIONES MÈS IMPORTANTES EN EL PRO CESAMIENTO DE INFORMACIØN LA BÞSQUEDA %STA OPERACIØN SE UTILIZA BÈSICAMENTE PARA RECUPERAR DATOS QUE SE HABÓAN ALMACENADO CON ANTICIPACIØN %L RESULTADO PUEDE SER DE ÏXITO SI SE ENCUENTRA LA INFORMACIØN DESEADA O DE FRACASO EN CASO CONTRARIO ,A BÞSQUEDA OCUPA UNA PARTE IMPORTANTE DE NUESTRA VIDA 0RÈCTICAMENTE TODO EL TIEMPO ESTAMOS BUSCANDO ALGO %L MUNDO EN QUE SE VIVE HOY DÓA ES DESARROLLADO AUTO MATIZADO Y LA INFORMACIØN REPRESENTA UN ELEMENTO DE VITAL IMPORTANCIA %S FUNDAMENTAL ESTAR INFORMADOS Y POR LO TANTO BUSCAR Y RECUPERAR INFORMACIØN 0OR EJEMPLO SE BUSCAN NÞMEROS TELEFØNICOS EN UN DIRECTORIO OFERTAS LABORALES EN UN PERIØDICO LIBROS EN UNA BIBLIOTECA ETCÏTERA

&)'52! %JEMPLO PRÉCTICO DE BÞSQUEDA


392 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" &)'52! %JEMPLO PRÉCTICO DE BÞSQUEDA

%N LOS EJEMPLOS MENCIONADOS LA BÞSQUEDA SE REALIZA GENERALMENTE SOBRE ELEMEN TOS QUE ESTÈN ORDENADOS ,OS DIRECTORIOS TELEFØNICOS ESTÈN ORGANIZADOS ALFABÏTICAMENTE LAS OFERTAS LABORALES ESTÈN ORDENADAS POR TIPO DE TRABAJO Y LOS LIBROS DE UNA BIBLIOTECA ES TÈN CLASIlCADOS POR TEMA 3IN EMBARGO PUEDE SUCEDER QUE LA BÞSQUEDA SE REALICE SOBRE UNA COLECCIØN DE ELEMENTOS NO ORDENADOS 0OR EJEMPLO CUANDO SE BUSCA LA LOCALIZACIØN DE UNA CIUDAD DENTRO DE UN MAPA 3E CONCLUYE QUE LA OPERACIØN DE BÞSQUEDA SE PUEDE LLEVAR A CABO SOBRE ELEMENTOS ORDENADOS O DESORDENADOS #ABE DESTACAR QUE LA BÞSQUEDA ES MÈS FÈCIL Y OCUPA MENOS TIEMPO CUANDO LOS DATOS SE ENCUENTRAN ORDENADOS ,OS MÏTODOS DE BÞSQUEDA SE PUEDEN CLASIlCAR EN INTERNOS Y EXTERNOS SEGÞN LA UBICACIØN DE LOS DATOS SOBRE LOS CUALES SE REALIZARÈ LA BÞSQUEDA 3E DENOMINA BÞSQUEDA INTERNA CUANDO TODOS LOS ELEMENTOS SE ENCUENTRAN EN LA MEMORIA PRINCIPAL DE LA COMPU TADORA POR EJEMPLO ALMACENADOS EN ARREGLOS LISTAS LIGADAS O ÈRBOLES %S BÞSQUEDA EXTERNA SI LOS ELEMENTOS ESTÈN EN MEMORIA SECUNDARIA ES DECIR SI HUBIERA ARCHIVOS EN DISPOSITIVOS COMO CINTAS Y DISCOS MAGNÏTICOS %N LA SIGUIENTE SECCIØN SE ESTUDIARÈN LOS MÏTODOS INTERNOS POSTERIORMENTE EN LA SECCIØN SE HARÈ LO PROPIO CON LOS EXTERNOS

"Â315%$! ).4%2.! ,A BÞSQUEDA INTERNA TRABAJA CON ELEMENTOS QUE SE ENCUENTRAN ALMACENADOS EN LA MEMORIA PRINCIPAL DE LA MÈQUINA ²STOS PUEDEN ESTAR EN ESTRUCTURAS ESTÈTICAS ARRE GLOS O DINÈMICAS LISTAS LIGADAS Y ÈRBOLES ,OS MÏTODOS DE BÞSQUEDA INTERNA MÈS IMPORTANTES SON ◗ ◗

3ECUENCIAL O LINEAL "INARIA


#Ò426&%" */5&3/" ◗ ◗

393

0OR TRANSFORMACIØN DE CLAVES «RBOLES DE BÞSQUEDA

"ÞSQUEDA SECUENCIAL ,A BÞSQUEDA SECUENCIAL CONSISTE EN REVISAR ELEMENTO TRAS ELEMENTO HASTA ENCONTRAR EL DATO BUSCADO O LLEGAR AL lNAL DEL CONJUNTO DE DATOS DISPONIBLE 0RIMERO SE TRATARÈ SOBRE LA BÞSQUEDA SECUENCIAL EN ARREGLOS Y LUEGO EN LISTAS ENLA ZADAS %N EL PRIMER CASO SE DEBE DISTINGUIR ENTRE ARREGLOS ORDENADOS Y DESORDENADOS %STA ÞLTIMA CONSISTE BÈSICAMENTE EN RECORRER EL ARREGLO DE IZQUIERDA A DERECHA HASTA QUE SE ENCUENTRE EL ELEMENTO BUSCADO O SE TERMINE EL ARREGLO LO QUE OCURRA PRIME RO .ORMALMENTE CUANDO UNA FUNCIØN DE BÞSQUEDA CONCLUYE CON ÏXITO INTERESA CONOCER EN QUÏ POSICIØN FUE HALLADO EL ELEMENTO QUE SE ESTABA BUSCANDO %STA IDEA SE PUEDE GENERALIZAR PARA TODOS LOS MÏTODOS DE BÞSQUEDA ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE BÞSQUEDA SECUENCIAL EN ARREGLOS DESOR DENADOS !LGORITMO 3ECUENCIAL?DESORDENADO

3ECUENCIAL?DESORDENADO 6 . 8 [%STE ALGORITMO BUSCA SECUENCIALMENTE EL ELEMENTO 8 EN UN ARREGLO UNIDIMENSIONAL DESOR DENADO 6 DE . COMPONENTES] [) ES UNA VARIABLE DE TIPO ENTERO] (ACER ) ← -IENTRAS ) ≤ . Y 6;)= ≠ 8 2EPETIR (ACER ) ← ) [&IN DEL CICLO DEL PASO ] 3I ) . ENTONCES %SCRIBIR h,A INFORMACIØN NO ESTÈ EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA POSICIØNv ) [&IN DEL CONDICIONAL DEL PASO ]

3ON DOS LOS POSIBLES RESULTADOS QUE SE PUEDEN OBTENER AL APLICAR ESTE ALGORITMO LA POSICIØN EN LA QUE ENCONTRØ EL ELEMENTO O UN MENSAJE DE FRACASO SI EL ELEMENTO NO SE HALLA EN EL ARREGLO 3I HUBIERA DOS O MÈS OCURRENCIAS DEL MISMO VALOR SE ENCUENTRA LA PRIMERA DE ELLAS 3IN EMBARGO ES POSIBLE MODIlCAR EL ALGORITMO PARA OBTENER TODAS LAS OCURRENCIAS DEL DATO BUSCADO ! CONTINUACIØN SE PRESENTA UNA VARIANTE DE ESTE ALGORITMO PERO UTILIZANDO RECURSI VIDAD EN LUGAR DE ITERATIVIDAD


394 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" !LGORITMO 3ECUENCIAL?DESORDENADO?RECURSIVO 3ECUENCIAL?DESORDENADO?RECURSIVO 6 . 8 ) [%STE ALGORITMO BUSCA SECUENCIALMENTE Y DE FORMA RECURSIVA AL ELEMENTO 8 EN EL ARREGLO UNIDIMENSIONAL DESORDENADO 6 DE . COMPONENTES] [) ES UN PARÈMETRO DE TIPO ENTERO QUE INICIALMENTE SE ENCUENTRA EN ] 3I ) . ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARREGLOv SI NO 3I 6;)= 8 ENTONCES %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA POSICIØNv ) SI NO 2EGRESAR A 3ECUENCIAL?DESORDENADO?RECURSIVO CON 6 . 8 E ) [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

,A BÞSQUEDA SECUENCIAL EN ARREGLOS ORDENADOS ES SIMILAR AL CASO ANTERIOR 3IN EM BARGO EL ORDEN ENTRE LOS ELEMENTOS DEL ARREGLO PERMITE INCLUIR UNA NUEVA CONDICIØN QUE HACE MÈS ElCIENTE AL PROCESO ! CONTINUACIØN ANALICEMOS EL ALGORITMO DE BÞSQUEDA SECUENCIAL EN ARREGLOS ORDENADOS !LGORITMO 3ECUENCIAL?ORDENADO 3ECUENCIAL?ORDENADO 6 . 8 [%STE ALGORITMO BUSCA SECUENCIALMENTE AL ELEMENTO 8 EN UN ARREGLO UNIDIMENSIONAL ORDENADO 6 DE . COMPONENTES 6 SE ENCUENTRA ORDENADO CRECIENTEMENTE 6; = ≤ 6; = ≤ ≤ 6;.=] [) ES UNA VARIABLE DE TIPO ENTERO] (ACER ) ← -IENTRAS ) ≤ . Y 8 6;)= 2EPETIR (ACER ) ← ) [&IN DEL CICLO DEL PASO 3I ) . O 8 6;)= ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA POSICIØNv ) [&IN DEL CONDICIONAL DEL PASO ]


#Ò426&%" */5&3/"

395

#OMO EL ARREGLO ESTÈ ORDENADO SE ESTABLECE UNA NUEVA CONDICIØN EL ELEMENTO BUS CADO TIENE QUE SER MAYOR QUE EL DEL ARREGLO #UANDO EL CICLO SE INTERRUMPE SE EVALÞA CUÈL DE LAS CONDICIONES ES FALSA 3I ) . O SI SE COMPARØ EL ELEMENTO CON UN VALOR MAYOR A SÓ MISMO 8 6;)= SE ESTÈ ANTE UN CASO DE FRACASO EL ELEMENTO NO ESTÈ EN EL ARREGLO 3I 8 6;)= ENTONCES SE ENCONTRØ AL ELEMENTO EN EL ARREGLO ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE BÞSQUEDA EN ARREGLOS ORDENADOS PERO EN FORMA RECURSIVA !LGORITMO 3ECUENCIAL?ORDENADO?RECURSIVO 3ECUENCIAL?ORDENADO?RECURSIVO 6 . 8 ) [%STE ALGORITMO BUSCA EN FORMA SECUENCIAL Y RECURSIVA AL ELEMENTO 8 EN UN ARREGLO UNIDI MENSIONAL ORDENADO 6 DE . COMPONENTES 6 SE ENCUENTRA ORDENADO DE MANERA CRECIENTE 6; = ≤ 6; = ≤ ≤ 6;.= ) INICIALMENTE TIENE EL VALOR DE ] 3I ) ≤ . Y 8 6;)= ENTONCES ,LAMAR A 3ECUENCIAL?ORDENADO?RECURSIVO CON 6 . 8 E ) SI NO 3I ) . O 8 6;)= ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA POSICIØNv ) [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%L MÏTODO DE BÞSQUEDA SECUENCIAL TAMBIÏN SE PUEDE APLICAR A LISTAS LIGADAS #ON SISTE EN RECORRER LA LISTA NODO TRAS NODO HASTA ENCONTRAR AL ELEMENTO BUSCADO ÏXITO O HASTA QUE LLEGUEMOS AL lNAL DE LA LISTA FRACASO ,A LISTA COMO EN EL CASO DE ARRE GLOS SE PUEDE ENCONTRAR ORDENADA O DESORDENADA %L ORDEN EN EL CUAL SE PUEDE RECORRER LA LISTA DEPENDE DE SUS CARACTERÓSTICAS PUEDE SER SIMPLEMENTE LIGADA CIRCULAR O DOBLE MENTE LIGADA %N ESTE CAPÓTULO SE PRESENTARÈ EL CASO DE BÞSQUEDA SECUENCIAL EN LISTAS SIMPLEMENTE LIGADAS DESORDENADAS %L LECTOR CON LOS CONOCIMIENTOS QUE TIENE SOBRE LISTAS Y BÞSQUEDA PUEDE IMPLEMENTAR FÈCILMENTE LOS OTROS ALGORITMOS !LGORITMO 3ECUENCIAL?LISTA?DESORDENADA 3ECUENCIAL?LISTA?DESORDENADA 0 8 [%STE ALGORITMO BUSCA EN FORMA SECUENCIAL AL ELEMENTO 8 EN UNA LISTA SIMPLEMENTE LIGADA QUE ALMACENA INFORMACIØN QUE ESTÈ DESORDENADA 0 ES UN APUNTADOR AL PRIMER NODO DE LA LISTA ).&/ Y ,)'! SON LOS CAMPOS DE CADA NODO] [1 ES UNA VARIABLE DE TIPO APUNTADOR]


396 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" (ACER 1 ← 0 -IENTRAS 1 ≠ .), Y 1> ).&/ ≠ 8 2EPETIR (ACER 1 ← 1> ,)'! [&IN DEL CICLO DEL PASO ] 3I 1 .), ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN LA LISTAv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ]

3I LA LISTA ESTUVIERA ORDENADA SE MODIlCARÓA ESTE ALGORITMO INCLUYENDO UNA CON DICIØN SIMILAR A LA QUE SE ESCRIBIØ EN EL ALGORITMO %STO ÞLTIMO CON EL OBJETIVO DE DISMINUIR EL NÞMERO DE COMPARACIONES ! CONTINUACIØN SE PRESENTA LA VARIANTE RECURSIVA DE ESTE ALGORITMO DE BÞSQUEDA SECUENCIAL EN LISTAS SIMPLEMENTE LIGADAS DESORDENADAS !LGORITMO 3ECUENCIAL?LISTA?DESORDENADA?RECURSIVO 3ECUENCIAL?LISTA?DESORDENADA?RECURSIVO 0 8 [%STE ALGORITMO BUSCA DE MANERA SECUENCIAL Y EN FORMA RECURSIVA AL ELEMENTO 8 EN UNA LISTA SIMPLEMENTE LIGADA QUE ALMACENA INFORMACIØN QUE ESTÈ DESORDENADA 0 ES UN APUNTADOR AL PRIMER NODO DE LA LISTA ).&/ Y ,)'! SON LOS CAMPOS DE CADA NODO] 3I 0 ≠ .), Y 0> ).&/ ≠ 8 ENTONCES 2EGRESAR A 3ECUENCIAL?LISTA?DESORDENADA?RECURSIVO CON 0> ,)'! Y 8 SI NO 3I 0 .), ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN LA LISTAv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

!NÉLISIS DE LA BÞSQUEDA SECUENCIAL %L NÞMERO DE COMPARACIONES ES UNO DE LOS FACTORES MÈS IMPORTANTES QUE SE UTILIZAN PARA DETERMINAR LA COMPLEJIDAD DE LOS MÏTODOS DE BÞSQUEDA 0ARA ANALIZAR LA COMPLEJIDAD DE LA BÞSQUEDA SECUENCIAL SE DEBEN ESTABLECER LOS CASOS MÈS FAVORABLE O DESFAVORABLE QUE SE PRESENTEN !L BUSCAR POR EJEMPLO UN ELEMENTO EN UN ARREGLO UNIDIMENSIONAL DESORDENADO DE . COMPONENTES PUEDE SUCEDER QUE ESE VALOR NO SE ENCUENTRE POR LO TANTO SE HARÈN .


#Ò426&%" */5&3/"

397

COMPARACIONES AL RECORRER TODO EL ARREGLO 0OR OTRA PARTE SI EL ELEMENTO SE ENCUENTRA EN EL ARREGLO ÏSTE PUEDE ESTAR EN LA PRIMERA POSICIØN EN LA ÞLTIMA O EN ALGUNA INTERMEDIA 3I ES EL PRIMERO SE HARÈ UNA COMPARACIØN SI SE TRATA DEL ÞLTIMO SE HARÈN . COMPARACIONES Y SI SE ENCUENTRA EN LA POSICIØN I I . ENTONCES SE REALIZARÈN I COMPARACIONES !HORA BIEN EL NÞMERO DE COMPARACIONES QUE SE LLEVAN A CABO SI TRABAJAMOS CON ARREGLOS ORDENADOS SERÈ EL MISMO QUE PARA DESORDENADOS SIEMPRE Y CUANDO EL ELEMENTO SE ENCUENTRE EN EL ARREGLO 3I NO FUERA ÏSTE EL CASO ENTONCES EL NÞMERO DE COMPARACIO NES DISMINUIRÈ SENSIBLEMENTE EN ARREGLOS ORDENADOS SIEMPRE QUE EL VALOR BUSCADO ESTÏ COMPRENDIDO ENTRE EL PRIMERO Y EL ÞLTIMO ELEMENTOS DEL ARREGLO 0OR OTRA PARTE EL NÞMERO DE COMPARACIONES EN LA BÞSQUEDA SECUENCIAL EN LISTAS SIMPLEMENTE LIGADAS ES EL MISMO QUE PARA ARREGLOS %N LA FØRMULA SE PRESENTAN LOS NÞMEROS MÓNIMO MEDIANO Y MÈXIMO DE COMPARACIONES QUE SE EJECUTAN CUANDO SE TRA BAJA CON LA BÞSQUEDA SECUENCIAL

#MÓN

#MED

N

#MÈX .

▼ &ØRMULA

,A TABLA PRESENTA PARA DISTINTOS VALORES DE . LOS NÞMEROS MÓNIMO MEDIANO Y MÈXIMO DE COMPARACIONES QUE SE REQUIEREN PARA BUSCAR SECUENCIALMENTE UN ELEMENTO EN UN ARREGLO O LISTA LIGADA

"ÞSQUEDA BINARIA ,A BÞSQUEDA BINARIA CONSISTE EN DIVIDIR EL INTERVALO DE BÞSQUEDA EN DOS PARTES COM PARANDO EL ELEMENTO BUSCADO CON EL QUE OCUPA LA POSICIØN CENTRAL EN EL ARREGLO 0ARA EL CASO DE QUE NO FUERAN IGUALES SE REDElNEN LOS EXTREMOS DEL INTERVALO SEGÞN EL ELEMENTO CENTRAL SEA MAYOR O MENOR QUE EL ELEMENTO BUSCADO DISMINUYENDO DE ESTA FORMA EL ESPACIO DE BÞSQUEDA %L PROCESO CONCLUYE CUANDO EL ELEMENTO ES ENCONTRADO O CUANDO EL INTERVALO DE BÞSQUEDA SE ANULA ES VACÓO %L MÏTODO DE BÞSQUEDA BINARIA FUNCIONA EXCLUSIVAMENTE CON ARREGLOS ORDENADOS .O SE PUEDE UTILIZAR CON LISTAS SIMPLEMENTE LIGADAS NO PODRÓAMOS RETROCEDER PARA ESTABLECER INTERVALOS DE BÞSQUEDA NI CON ARREGLOS DESORDENADOS #ON CADA ITERACIØN DEL MÏTODO EL ESPACIO DE BÞSQUEDA SE REDUCE A LA MITAD POR LO TANTO EL NÞMERO DE COM

4!",! #OMPLEJIDAD DEL MÏTODO DE BÞSQUEDA SECUENCIAL

.

#MÓN

#MED

#MÈX


398 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" PARACIONES A REALIZAR DISMINUYE NOTABLEMENTE %STA DISMINUCIØN RESULTA SIGNIlCATIVA CUANTO MÈS GRANDE SEA EL TAMA×O DEL ARREGLO ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE BÞSQUEDA BINARIA !LGORITMO "INARIA "INARIA 6 . 8 [%STE ALGORITMO BUSCA AL ELEMENTO 8 EN UN ARREGLO UNIDIMENSIONAL ORDENADO 6 DE . COM PONENTES] [):1 #%. Y $%2 SON VARIABLES DE TIPO ENTERO "!. ES UNA VARIABLE DE TIPO BOOLEANO] (ACER ):1 ← $%2 ← . Y "!. ← &!,3/ -IENTRAS ):1 ≤ $%2 Y "!. &!,3/ 2EPETIR 3I 8 6;#%.= ENTONCES (ACER "!. ← 6%2$!$%2/ SI NO [3E REDElNE EL INTERVALO DE BÞSQUEDA] 3I 8 6;#%.= ENTONCES (ACER ):1 ← #%. SI NO (ACER $%2 ← #%. n [&IN DEL CONDICIONAL DEL PASO [&IN DEL CONDICIONAL DEL PASO [&IN DEL CICLO DEL PASO 3I "!. 6%2$!$%2/ ENTONCES %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv #%. SI NO %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARREGLOv [&IN DEL CONDICIONAL DEL PASO ]

!NALICEMOS AHORA UN EJEMPLO PARA ILUSTRAR EL FUNCIONAMIENTO DE ESTE ALGORITMO

%JEMPLO

&)'52!

3EA 6 UN ARREGLO UNIDIMENSIONAL DE NÞMEROS ENTEROS ORDENADO DE MANERA CRECIENTE COMO SE MUESTRA EN LA lGURA %N LA TABLA SE PRESENTA EL SEGUIMIENTO DEL ALGORITMO CUANDO 8 ES IGUAL A 8 %N LA lGURA SE OBSERVA GRÈlCAMENTE PARA ESTE CASO EN PARTICULAR CØMO SE VA REDUCIENDO EL INTERVALO DE BÞSQUEDA


#Ò426&%" */5&3/" 4!",! "ÞSQUEDA BINARIA

399

0ASO

"!.

):1

$%2

#%.

8 6;#%.=

8 6;#%.=

&ALSO

.O

.O

&ALSO

.O

&ALSO

6ERDADERO

,A TABLA POR OTRA PARTE MUESTRA NUEVAMENTE EL SEGUIMIENTO DEL ALGORITMO PARA 8 VALOR QUE NO SE ENCUENTRA EN EL ARREGLO ,A lGURA REPRESENTA GRÈlCAMENTE CØMO SE VA REDUCIENDO EL INTERVALO DE BÞS QUEDA HASTA ANULARSE $%2 ):1 ! CONTINUACIØN SE PRESENTA UNA VARIANTE DEL ALGORITMO DE BÞSQUEDA BINARIA QUE NO UTILIZA BANDERA "!.

4!",! "ÞSQUEDA BINARIA

&)'52! 2EDUCCIØN DEL INTERVALO DE BÞSQUEDA A 0ASO B 0ASO C 0ASO DE LA TABLA

0ASO

"!.

):1

$%2

#%.

8 6;#%.=

8 6;#%.=

&ALSO

.O

&ALSO

.O

&ALSO

.O

&ALSO

.O

.O

&ALSO


400 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" &)'52! 2EDUCCIØN DEL INTERVALO DE BÞSQUEDA A 0ASO B 0ASO C 0ASO D 0ASO E 0ASO DE LA TABLA

!LGORITMO "INARIA?SIN?BANDERA "INARIA?SIN?BANDERA 6 . 8 [%STE ALGORITMO BUSCA AL ELEMENTO 8 EN EL ARREGLO UNIDIMENSIONAL ORDENADO 6 DE . COM PONENTES] [):1 $%2 Y #%. SON VARIABLES DE TIPO ENTERO] (ACER ):1 ← $%2 ← . Y #%. ← 0!24% %.4%2! ):1 $%2 -IENTRAS ):1 ≤ $%2 Y 8 ≠ 6;#%.= 2EPETIR 3I 8 6;#%.= ENTONCES (ACER ):1 ← #%. SI NO (ACER $%2 ← #%. n [&IN DEL CONDICIONAL DEL PASO ] (ACER #%. ← 0!24% %.4%2! ):1 $%2 [&IN DEL CICLO DEL PASO ] 3I ):1 $%2


#Ò426&%" */5&3/"

401

ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA POSICIØNv #%. [&IN DEL CONDICIONAL DEL PASO ]

&INALMENTE SE PRESENTA UNA VERSIØN RECURSIVA DE ESTE ALGORITMO DE BÞSQUEDA BINARIA !LGORITMO "INARIA?RECURSIVO

"INARIA?RECURSIVO 6 ):1 $%2 8 [%STE ALGORITMO BUSCA AL ELEMENTO 8 EN EL ARREGLO UNIDIMENSIONAL ORDENADO 6 DE . COMPO NENTES ):1 INGRESA INICIALMENTE AL ALGORITMO CON EL VALOR DE $%2 POR OTRA PARTE INGRESA CON EL VALOR DE .] [#%. ES UNA VARIABLE DE TIPO ENTERO] 3I ):1 ≥ $%2 ENTONCES %SCRIBIR 8 h.O SE ENCUENTRA EN EL ARREGLOv SI NO (ACER #%. ← 0!24% %.4%2! $%2 ):1 3I 8 6;#%.= ENTONCES %SCRIBIR h%L DATO BUSCADO SE ENCUENTRA EN LA POSICIØNv #%. SI NO 3I 8 6;#%.= ENTONCES 2EGRESAR A "INARIA?RECURSIVO CON 6 #%. $%2 8 SI NO 2EGRESAR A "INARIA?RECURSIVO CON 6 ):1 #%. n 8 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

!NÉLISIS DE LA BÞSQUEDA BINARIA 0ARA ANALIZAR LA COMPLEJIDAD DEL MÏTODO DE BÞSQUEDA BINARIA ES NECESARIO ESTABLECER LOS CASOS MÈS FAVORABLES Y DESFAVORABLES QUE SE PUDIERAN PRESENTAR EN EL PROCESO DE BÞSQUEDA %L PRIMERO SUCEDE CUANDO EL ELEMENTO BUSCADO ES EL CENTRAL EN DICHO CASO SE HARÈ UNA SOLA COMPARACIØN EL SEGUNDO SUCEDE CUANDO EL ELEMENTO NO SE ENCUENTRA EN EL ARREGLO ENTONCES SE HARÈN APROXIMADAMENTE LOG N COMPARACIONES YA QUE CON CADA COMPARACIØN EL NÞMERO DE ELEMENTOS EN LOS CUALES SE DEBE BUSCAR SE REDUCE EN UN FACTOR DE $E ESTA FORMA SE DETERMINAN LOS NÞMEROS MÓNIMO MEDIANO Y MÈXIMO DE COMPARACIONES QUE SE DEBEN REALIZAR CUANDO SE UTILIZA ESTE TIPO DE BÞSQUEDA


402 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

#MÓN

#MED

LOG .

#MÈX LOG .

▼ &ØRMULA

%N LA TABLA SE PRESENTAN PARA DISTINTOS VALORES DE . LOS NÞMEROS MÓNIMO ME DIANO Y MÈXIMO DE COMPARACIONES REQUERIDAS PARA BUSCAR UN ELEMENTO EN UN ARREGLO APLICANDO EL MÏTODO DE BÞSQUEDA BINARIA 3I SE COMPARAN LOS VALORES DE LA TABLA CON LOS DE LA TABLA RESULTA CLARO QUE EL MÏTODO DE BÞSQUEDA BINARIA ES MÈS ElCIENTE QUE EL MÏTODO DE BÞSQUEDA SECUENCIAL !DEMÈS LA DIFERENCIA SE HACE MÈS SIGNIlCATIVA CONFORME MÈS GRANDE SEA EL TAMA×O DEL ARREGLO 3IN EMBARGO NO HAY QUE OLVIDAR QUE EL MÏTODO DE BÞSQUEDA BINARIA TRABAJA SOLAMENTE CON ARREGLOS ORDENADOS POR LO TANTO SI EL ARREGLO ESTUVIERA DESORDENADO ANTES DE EMPLEAR ESTE MÏTODO AQUÏL DEBERÓA ORDENARSE #ABE DESTACAR SIN EMBARGO QUE LA ORDENACIØN DE UN ARREGLO TAMBIÏN IMPLICA COM PARACIONES Y MOVIMIENTOS DE ELEMENTOS ASÓ QUE SI SE VA A REALIZAR SØLO UNA BÞSQUEDA SOBRE UN ARREGLO DESORDENADO CONVIENE UTILIZAR EL MÏTODO SECUENCIAL %N CAMBIO SI SE REALIZAN BÞSQUEDAS EN FORMA CONTINUA CONVENDRÓA ORDENARLO PARA PODER APLICAR EL MÏ TODO DE BÞSQUEDA BINARIA

"ÞSQUEDA POR TRANSFORMACIØN DE CLAVES ,OS DOS MÏTODOS ANALIZADOS ANTERIORMENTE PERMITEN ENCONTRAR UN ELEMENTO EN UN ARRE GLO %N AMBOS CASOS EL TIEMPO DE BÞSQUEDA ES PROPORCIONAL A SU NÞMERO DE COMPONEN TES %S DECIR A MAYOR NÞMERO DE ELEMENTOS SE DEBE REALIZAR MAYOR NÞMERO DE COMPARA CIONES 3E MENCIONØ ADEMÈS QUE SI BIEN EL MÏTODO DE BÞSQUEDA BINARIA ES MÈS ElCIENTE QUE EL SECUENCIAL EXISTE LA RESTRICCIØN DE QUE EL ARREGLO SE DEBE ENCONTRAR ORDENADO %STA SECCIØN SE DEDICA A UN NUEVO MÏTODO DE BÞSQUEDA %STE MÏTODO CONOCIDO COMO TRANSFORMACIØN DE CLAVES O HASH PERMITE AUMENTAR LA VELOCIDAD DE BÞSQUEDA SIN NECESIDAD DE TENER LOS ELEMENTOS ORDENADOS #UENTA CON LA VENTAJA DE QUE EL TIEMPO DE BÞSQUEDA ES INDEPENDIENTE DEL NÞMERO DE COMPONENTES DEL ARREGLO 3UPONGAMOS QUE SE TIENE UNA COLECCIØN DE DATOS CADA UNO DE ELLOS IDENTIlCADO POR UNA CLAVE %S CLARO QUE RESULTA ATRACTIVO TENER ACCESO A ELLOS DE MANERA DIRECTA ES DECIR SIN RECORRER ALGUNOS DATOS ANTES DE LOCALIZAR AL BUSCADO %L MÏTODO POR TRANSFORMACIØN DE CLAVES PERMITE REALIZAR JUSTAMENTE ESTA ACTIVIDAD ES DECIR LOCALIZAR EL DATO EN FORMA

4!",! #OMPLEJIDAD DEL MÏTODO DE BÞSQUEDA BINARIA

.

#MÓN

#MED

#MÈX


#Ò426&%" */5&3/"

403

DIRECTA %L MÏTODO TRABAJA UTILIZANDO UNA FUNCIØN QUE CONVIERTE UNA CLAVE DADA EN UNA DIRECCIØN ÓNDICE DENTRO DEL ARREGLO DIRECCIØN ← ( CLAVE ,A FUNCIØN HASH ( APLICADA A LA CLAVE GENERA UN ÓNDICE DEL ARREGLO QUE PERMITE ACCEDER DIRECTAMENTE AL ELEMENTO %L CASO MÈS TRIVIAL SE PRESENTA CUANDO LAS CLAVES SON NÞMEROS ENTEROS CONSECUTIVOS 3UPONGAMOS QUE SE DESEA ALMACENAR LA INFORMACIØN RELACIONADA CON ALUMNOS CUYAS MATRÓCULAS SON NÞMEROS DEL AL %N ESTE CASO CONVIENE DElNIR UN ARREGLO DE ELEMENTOS CON ÓNDICES NUMÏRICOS COMPRENDIDOS ENTRE LOS VALORES Y ,OS DATOS DE CADA ALUMNO OCUPARÈN LA POSICIØN DEL ARREGLO QUE SE CORRESPONDA CON EL NÞMERO DE LA MA TRÓCULA DE ESTA MANERA SE PODRÈ ACCEDER DIRECTAMENTE A LA INFORMACIØN DE CADA ALUMNO #ONSIDEREMOS AHORA QUE SE DESEA ALMACENAR LA INFORMACIØN DE EMPLEADOS ,A CLAVE DE CADA EMPLEADO CORRESPONDE AL NÞMERO DE SU SEGURO SOCIAL 3I LA CLAVE ESTÈ FORMA DA POR DÓGITOS RESULTA POR COMPLETO INElCIENTE DElNIR UN ARREGLO CON ELEMENTOS PARA ALMACENAR SOLAMENTE LOS DATOS DE LOS EMPLEADOS 5TILIZAR UN ARREGLO TAN GRANDE ASEGURA LA POSIBILIDAD DE ACCEDER DIRECTAMENTE A SUS ELEMENTOS SIN EMBARGO EL COSTO EN MEMORIA RESULTA TANTO RIDÓCULO COMO EXCESIVO 3IEMPRE ES IMPORTANTE EQUILI BRAR EL COSTO DEL ESPACIO DE MEMORIA CON EL COSTO POR TIEMPO DE BÞSQUEDA #UANDO SE TIENEN CLAVES QUE NO SE CORRESPONDEN CON ÓNDICES POR EJEMPLO POR SER ALFANUMÏRICAS O CUANDO LAS CLAVES REPRESENTEN VALORES NUMÏRICOS MUY GRANDES O NO SE CORRESPONDEN CON LOS ÓNDICES DE LOS ARREGLOS SE UTILIZARÈ UNA FUNCIØN HASH QUE PERMITA TRANSFORMAR LA CLAVE PARA OBTENER UNA DIRECCIØN APROPIADA %STA FUNCIØN HASH DEBE SER SIMPLE DE CALCULAR Y ASIGNAR DIRECCIONES DE LA MANERA MÈS UNIFORME POSIBLE %S DECIR DEBE GENERAR POSICIONES DIFERENTES DADAS DOS CLAVES TAMBIÏN DIFERENTES 3I ESTO ÞLTIMO NO OCURRE ( + D ( + D Y + ≠ + HAY UNA COLISIØN QUE SE DElNE COMO LA ASIGNACIØN DE UNA MISMA DIRECCIØN A DOS O MÈS CLAVES DISTINTAS %N ESTE CONTEXTO PARA TRABAJAR CON ESTE MÏTODO DE BÞSQUEDA SE DEBE SELECCIONAR PREVIAMENTE ◗ ◗

5NA FUNCIØN HASH QUE SEA FÈCIL DE CALCULAR Y DISTRIBUYA UNIFORMEMENTE LAS CLAVES 5N MÏTODO PARA RESOLVER COLISIONES 3I ÏSTAS SE PRESENTAN SE CONTARÈ CON ALGÞN MÏTODO QUE GENERE POSICIONES ALTERNATIVAS

%STOS DOS CASOS SE TRATARÈN EN FORMA SEPARADA #OMO YA SE MENCIONØ SELECCIONAR UNA BUENA FUNCIØN HASH ES MUY IMPORTANTE PERO ES DIFÓCIL ENCONTRARLA "ÈSICAMENTE PORQUE NO EXISTEN REGLAS QUE PERMITAN DETERMINAR CUÈL SERÈ LA FUNCIØN MÈS APROPIADA PARA UN CONJUN TO DE CLAVES QUE ASEGURE LA MÈXIMA UNIFORMIDAD EN SU DISTRIBUCIØN 2EALIZAR UN ANÈLISIS DE LAS PRINCIPALES CARACTERÓSTICAS DE LAS CLAVES SIEMPRE AYUDA EN LA ELECCIØN DE UNA FUNCIØN DE ESTE TIPO ! CONTINUACIØN SE EXPLICAN ALGUNAS DE LAS FUNCIONES HASH MÈS UTILIZADAS

&UNCIØN HASH POR MØDULO DIVISIØN ,A FUNCIØN HASH POR MØDULO O DIVISIØN CONSISTE EN TOMAR EL RESIDUO DE LA DIVISIØN DE LA CLAVE ENTRE EL NÞMERO DE COMPONENTES DEL ARREGLO 3UPONGAMOS POR EJEMPLO QUE SE


404 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" TIENE UN ARREGLO DE . ELEMENTOS Y + ES LA CLAVE DEL DATO A BUSCAR ,A FUNCIØN HASH QUEDA DElNIDA POR LA SIGUIENTE FØRMULA

( + + MOD .

▼ &ØRMULA

%N LA FØRMULA SE OBSERVA QUE AL RESIDUO DE LA DIVISIØN SE LE SUMA ESTO ÞLTIMO CON EL OBJETIVO DE OBTENER UN VALOR COMPRENDIDO ENTRE Y . 0ARA LOGRAR MAYOR UNIFORMIDAD EN LA DISTRIBUCIØN ES IMPORTANTE QUE . SEA UN NÞ MERO PRIMO O DIVISIBLE ENTRE MUY POCOS NÞMEROS 0OR LO TANTO SI . NO ES UN NÞMERO PRIMO SE DEBE CONSIDERAR EL VALOR PRIMO MÈS CERCANO %N EL EJEMPLO SE PRESENTA UN CASO DE FUNCIØN HASH POR MØDULO

%JEMPLO

3UPONGAMOS QUE . ES EL TAMA×O DEL ARREGLO Y LAS DIRECCIONES QUE SE DEBEN ASIGNAR A LOS ELEMENTOS AL GUARDARLOS O RECUPERARLOS SON LOS NÞMEROS DEL AL #ONSIDEREMOS ADEMÈS QUE + Y + SON LAS DOS CLAVES A LAS QUE SE DEBEN ASIGNAR POSICIONES EN EL ARREGLO 3I APLICAMOS LA FØRMULA CON . PARA CALCULAR LAS DIRECCIONES CORRESPONDIENTES A + Y + OBTENEMOS ( + MOD ( + MOD #OMO ( + ES IGUAL A ( + Y + ES DISTINTO DE + SE ESTÈ ANTE UNA COLISIØN QUE SE DEBE RESOLVER PORQUE A LOS DOS ELEMENTOS LE CORRESPONDERÓA LA MISMA DIRECCIØN /BSERVEMOS SIN EMBARGO QUE SI APLICÈRAMOS LA FØRMULA CON UN NÞMERO PRIMO CERCANO A . EL RESULTADO CAMBIARÓA ( + MOD ( + MOD #ON . SE HA ELIMINADO LA COLISIØN

&UNCIØN HASH CUADRADO ,A FUNCIØN HASH CUADRADO CONSISTE EN ELEVAR AL CUADRADO LA CLAVE Y TOMAR LOS DÓGITOS CENTRALES COMO DIRECCIØN %L NÞMERO DE DÓGITOS QUE SE DEBE CONSIDERAR SE ENCUENTRA DETERMINADO POR EL RANGO DEL ÓNDICE 3EA + LA CLAVE DEL DATO A BUSCAR LA FUNCIØN HASH CUADRADO QUEDA DElNIDA ENTONCES POR LA SIGUIENTE FØRMULA

( + DÓGITOS?CENTRALES +

▼ &ØRMULA

,A SUMA DE UNA UNIDAD A LOS DÓGITOS CENTRALES ES ÞTIL PARA OBTENER UN VALOR COM PRENDIDO ENTRE Y . %N EL EJEMPLO SE PRESENTA UN CASO DE FUNCIØN HASH CUADRADO


#Ò426&%" */5&3/"

%JEMPLO

405

3EA . EL TAMA×O DEL ARREGLO Y SUS DIRECCIONES LOS NÞMEROS COMPRENDIDOS ENTRE Y 3EAN + Y + DOS CLAVES A LAS QUE SE DEBEN ASIGNAR POSICIONES EN EL ARREGLO 3E APLICA LA FØRMULA PARA CALCULAR LAS DIRECCIONES CORRESPONDIENTES A + Y + + + ( + DÓGITOS?CENTRALES ( + DÓGITOS?CENTRALES #OMO EL RANGO DE ÓNDICES EN NUESTRO EJEMPLO VARÓA DE A SE TOMAN SOLAMENTE LOS DOS DÓGITOS CENTRALES DEL CUADRADO DE LAS CLAVES

&UNCIØN HASH POR PLEGAMIENTO ,A FUNCIØN HASH POR PLEGAMIENTO CONSISTE EN DIVIDIR LA CLAVE EN PARTES TOMANDO IGUAL NÞMERO DE DÓGITOS AUNQUE LA ÞLTIMA PUEDE TENER MENOS Y OPERAR CON ELLAS ASIGNANDO COMO DIRECCIØN LOS DÓGITOS MENOS SIGNIlCATIVOS ,A OPERACIØN ENTRE LAS PARTES SE PUEDE REALIZAR POR MEDIO DE SUMAS O MULTIPLICACIONES 3EA + LA CLAVE DEL DATO A BUSCAR + ESTÈ FORMADA POR LOS DÓGITOS D D DN ,A FUNCIØN HASH POR PLEGAMIENTO QUEDA DElNIDA POR LA SIGUIENTE FØRMULA

( + DÓGMENSIG D DI DI DJ D DN

▼ &ØRMULA

%L OPERADOR QUE APARECE EN LA FØRMULA OPERANDO LAS PARTES DE LA CLAVE ES EL DE SUMA PERO COMO YA SE ACLARØ PUEDE SER EL DE LA MULTIPLICACIØN %N ESTE CONTEXTO LA SUMA DE UNA UNIDAD A LOS DÓGITOS MENOS SIGNIlCATIVOS DÓGMENSIG ES PARA OBTENER UN VALOR COMPRENDIDO ENTRE Y . %N EL EJEMPLO SE PRESENTA UN CASO DE FUNCIØN HASH POR PLEGAMIENTO

%JEMPLO

3EA . EL TAMA×O DEL ARREGLO Y LAS DIRECCIONES QUE DEBEN TOMAR SUS ELEMENTOS LOS NÞMEROS COMPRENDIDOS ENTRE Y 3EAN + Y + DOS CLAVES A LAS QUE SE DEBEN ASIGNAR POSICIONES EN EL ARREGLO 3E APLICA LA FØRMULA PARA CALCULAR LAS DI RECCIONES CORRESPONDIENTES A + Y + ( + DÓGMENSIG DÓGMENSIG ( + DÓGMENSIG DÓGMENSIG $E LA SUMA DE LAS PARTES SE TOMAN SOLAMENTE DOS DÓGITOS PORQUE LOS ÓNDICES DEL ARREGLO VARÓAN DE A


406 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

&UNCIØN HASH POR TRUNCAMIENTO ,A FUNCIØN HASH POR TRUNCAMIENTO CONSISTE EN TOMAR ALGUNOS DÓGITOS DE LA CLAVE Y FORMAR CON ELLOS UNA DIRECCIØN %STE MÏTODO ES DE LOS MÈS SENCILLOS PERO ES TAMBIÏN DE LOS QUE OFRECEN MENOS UNIFORMIDAD EN LA DISTRIBUCIØN DE LAS CLAVES 3EA + LA CLAVE DEL DATO A BUSCAR + ESTÈ FORMADA POR LOS DÓGITOS D D DN ,A FUNCIØN HASH POR TRUNCAMIENTO SE REPRESENTA CON LA SIGUIENTE FØRMULA

( + ELEGIRDÓGITOS D D DN

▼ &ØRMULA

,A ELECCIØN DE LOS DÓGITOS ES ARBITRARIA 3E PODRÓAN TOMAR LOS DE LAS POSICIONES IMPARES O DE LAS PARES ,UEGO SE PODRÓAN UNIR DE IZQUIERDA A DERECHA O DE DERECHA A IZQUIERDA ,A SUMA DE UNA UNIDAD A LOS DÓGITOS SELECCIONADOS ES ÞTIL PARA OBTENER UN VALOR ENTRE Y %N EL EJEMPLO SE MUESTRA UN CASO DE FUNCIØN HASH POR TRUNCAMIENTO

%JEMPLO

3EA . EL TAMA×O DEL ARREGLO Y LAS DIRECCIONES DE SUS ELEMENTOS LOS NÞMEROS ENTRE Y 3EAN + Y + DOS CLAVES A LAS QUE SE DEBEN ASIGNAR POSICIONES EN EL ARREGLO 3E APLICA LA FØRMULA PARA CALCULAR LAS DIRECCIONES CORRESPONDIENTES A + Y + ( + ELEGIRDÓGITOS ( + ELEGIRDÓGITOS %N ESTE EJEMPLO SE TOMAN EL PRIMERO Y TERCER NÞMEROS DE LA CLAVE Y SE UNEN DE IZQUIERDA A DERECHA %S IMPORTANTE DESTACAR QUE EN TODOS LOS CASOS ANTERIORES SE PRESENTARON EJEMPLOS DE CLAVES NUMÏRICAS 3IN EMBARGO EN LA PRÈCTICA LAS CLAVES PUEDEN SER ALFABÏTICAS O ALFANUMÏRICAS %N GENERAL CUANDO APARECEN LETRAS EN LAS CLAVES SE SUELE ASOCIAR A CADA UNA UN ENTERO CON EL PROPØSITO DE CONVERTIRLAS EN NUMÏRICAS !

"

#

$

:

3I POR EJEMPLO LA CLAVE FUERA !$! SU EQUIVALENTE NUMÏRICA SERÓA 3I HU BIERA COMBINACIØN DE LETRAS Y NÞMEROS SE PROCEDERÓA DE LA MISMA MANERA 0OR EJEMPLO DADA UNA CLAVE : & SU EQUIVALENTE NUMÏRICA SERÓA /TRA ALTERNATIVA SERÓA TOMAR EL VALOR DECIMAL ASOCIADO PARA CADA CARÈCTER SEGÞN EL CØDIGO !3#)) 5NA VEZ OB TENIDA LA CLAVE EN SU FORMA NUMÏRICA SE PUEDE UTILIZAR NORMALMENTE CUALESQUIERA DE LAS FUNCIONES ANTES MENCIONADAS %L EJEMPLO ILUSTRA UN CASO DE CLAVE ALFABÏTICA

3OLUCIØN DE COLISIONES ,A ELECCIØN DE UN MÏTODO ADECUADO PARA RESOLVER COLISIONES ES TAN IMPORTANTE COMO LA ELECCIØN DE UNA BUENA FUNCIØN HASH #UANDO ÏSTA OBTIENE UNA MISMA DIRECCIØN PARA DOS CLAVES DIFERENTES SE ESTÈ ANTE UNA COLISIØN .ORMALMENTE CUALQUIERA QUE SEA EL MÏTODO


#Ò426&%" */5&3/"

407

ELEGIDO RESULTA COSTOSO TRATAR LAS COLISIONES %S POR ELLO QUE SE DEBE HACER UN ESFUERZO IMPORTANTE PARA ENCONTRAR LA FUNCIØN QUE OFREZCA LA MAYOR UNIFORMIDAD EN LA DISTRIBU CIØN DE LAS CLAVES ,A MANERA MÈS NATURAL DE RESOLVER EL PROBLEMA DE LAS COLISIONES ES RESERVAR UNA CASILLA POR CLAVE ES DECIR AQUELLAS QUE SE CORRESPONDAN UNA A UNA CON LAS POSICIONES DEL ARREGLO 0ERO COMO YA SE MENCIONØ ESTA SOLUCIØN PUEDE TENER UN ALTO COSTO EN MEMO RIA POR LO TANTO SE DEBEN ANALIZAR OTRAS ALTERNATIVAS QUE PERMITAN EQUILIBRAR EL USO DE MEMORIA CON EL TIEMPO DE BÞSQUEDA %N ADELANTE SE ESTUDIARÈN ALGUNOS DE LOS MÏTODOS MÈS UTILIZADOS PARA RESOLVER COLI SIONES QUE SE PUEDEN CLASIlCAR EN ◗ ◗ ◗

2EASIGNACIØN !RREGLOS ANIDADOS %NCADENAMIENTO

2EASIGNACIØN %XISTEN VARIOS MÏTODOS QUE TRABAJAN BAJO EL PRINCIPIO DE COMPARACIØN Y REASIGNACIØN DE ELEMENTOS ! CONTINUACIØN SE ANALIZARÈN TRES DE ELLOS ◗ ◗ ◗

0RUEBA LINEAL 0RUEBA CUADRÈTICA $OBLE DIRECCIØN HASH

0RUEBA LINEAL %L MÏTODO DE PRUEBA LINEAL CONSISTE EN QUE UNA VEZ QUE SE DETECTA LA COLISIØN SE RECORRE EL ARREGLO SECUENCIALMENTE A PARTIR DEL PUNTO DE COLISIØN BUSCANDO AL ELEMENTO %L PRO CESO DE BÞSQUEDA CONCLUYE CUANDO EL ELEMENTO ES HALLADO O CUANDO SE ENCUENTRA UNA POSICIØN VACÓA %L ARREGLO SE TRATA COMO UNA ESTRUCTURA CIRCULAR EL SIGUIENTE ELEMENTO DESPUÏS DEL ÞLTIMO ES EL PRIMERO ! CONTINUACIØN SE EXPONE EL ALGORITMO DE SOLUCIØN DE COLISIONES POR MEDIO DE LA PRUEBA LINEAL !LGORITMO 0RUEBA?LINEAL 0RUEBA?LINEAL 6 . + [%STE ALGORITMO BUSCA AL DATO CON CLAVE + EN EL ARREGLO UNIDIMENSIONAL 6 DE . ELEMENTOS 2ESUELVE EL PROBLEMA DE LAS COLISIONES POR MEDIO DEL MÏTODO DE PRUEBA LINEAL] [$ Y $8 SON VARIABLES DE TIPO ENTERO] (ACER $ ← ( + ['ENERA DIRECCIØN] 3I 6;$8= ≠ 6!#¶/ Y 6;$= + ENTONCES


408 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv $ SI NO (ACER $8 ← $ -IENTRAS $8 ≤ . Y 6;$8= ≠ 6!#¶/ Y 6;$8= ≠ + Y $8 ≠ $ 2EPETIR (ACER $8 ← $8 3I $8 . ENTONCES (ACER $8 ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I 6;$8= 6!#¶/ O $8 $ ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv $8 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

,A CUARTA CONDICIØN DEL CICLO DEL PUNTO $8 ≠ 8 ES PARA EVITAR CAER EN UN CICLO INlNITO SI EL ARREGLO ESTUVIERA LLENO Y EL ELEMENTO A BUSCAR NO SE ENCONTRARA EN ÏL ,A PRINCIPAL DESVENTAJA DE ESTE MÏTODO ES QUE PUEDE HABER UN FUERTE AGRUPAMIENTO ALREDEDOR DE CIERTAS CLAVES MIENTRAS QUE OTRAS ZONAS DEL ARREGLO PODRÓAN PERMANECER VACÓAS 3I LAS CONCENTRACIONES DE CLAVES SON MUY FRECUENTES LA BÞSQUEDA SERÈ PRINCIPAL MENTE SECUENCIAL PERDIENDO ASÓ LAS VENTAJAS DEL MÏTODO HASH %L EJEMPLO ILUSTRA EL FUNCIONAMIENTO DEL ALGORITMO

%JEMPLO

3EA 6 UN ARREGLO UNIDIMENSIONAL DE ELEMENTOS ,AS CLAVES Y FUERON ASIGNADAS SEGÞN LA FUNCIØN HASH ( + + MOD %N LA lGURA SE APRECIA EL ESTADO DE ARREGLO A Y LA TABLA CON ( + PARA CADA CLAVE B %N LA TABLA SE PRESENTA EL SEGUIMIENTO DE LAS VARIABLES IMPORTANTES DEL ALGORITMO PARA EL CASO DEL EJEMPLO ANTERIOR %L DATO A BUSCAR ES IGUAL A !L APLICAR LA FUNCIØN HASH A LA CLAVE SE OBTIENE UNA DIRECCIØN $ IGUAL A 3IN EMBARGO EN ESA POSICIØN NO SE ENCUENTRA EL ELEMENTO BUSCADO POR LO QUE SE COMIENZA A RECORRER SECUENCIALMENTE EL ARREGLO A PARTIR DE LA POSICIØN $8 IGUAL A %N ESTE CASO LA BÞSQUEDA CONCLUYE CUANDO SE ENCUENTRA AL VALOR BUSCADO EN LA POSICIØN

4!",!

$

$8

3OLUCIØN DE COLISIONES POR LA PRUEBA LINEAL +


#Ò426&%" */5&3/"

409

&)'52! 3OLUCIØN DE COLISIONES POR LA PRUEBA LINEAL A !RREGLO B 4ABLA CON ( +

%N LA TABLA SE PRESENTA AHORA EL SEGUIMIENTO DE LAS VARIABLES IMPORTANTES DEL ALGORITMO PERO AHORA PARA UN CASO MÈS COMPLEJO DEL EJEMPLO ANTERIOR %L DATO A BUSCAR ES IGUAL A

0RUEBA CUADRÉTICA %L MÏTODO DE LA PRUEBA CUADRÈTICA ES SIMILAR AL ANTERIOR ,A DIFERENCIA CONSISTE EN QUE EN EL DE LA PRUEBA CUADRÈTICA LAS DIRECCIONES ALTERNATIVAS SE GENERARÈN COMO $ $ $ $ I EN VEZ DE $ $ $ I %STA VARIACIØN PERMITE UNA MEJOR DISTRIBUCIØN DE LAS CLAVES QUE COLISIONAN ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE SOLUCIØN DE COLISIONES POR MEDIO DE LA PRUEBA CUADRÈTICA

4!",!

$

$8

3OLUCIØN DE COLISIONES POR LA PRUEBA LINEAL +


410 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" !LGORITMO 0RUEBA?CUADRÈTICA 0RUEBA?CUADRÈTICA 6 . + [%STE ALGORITMO BUSCA AL DATO CON CLAVE + EN EL ARREGLO UNIDIMENSIONAL 6 DE . ELEMENTOS 2ESUELVE EL PROBLEMA DE LAS COLISIONES POR MEDIO DE LA PRUEBA CUADRÈTICA] [$ $8 E ) SON VARIABLES DE TIPO ENTERO] (ACER $ ← ( + ['ENERA DIRECCIØN] 3I 6;$8= ≠ 6!#¶/ Y 6;$= + ENTONCES %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv $ SI NO (ACER ) ← Y $8 ← $ ) ) -IENTRAS 6;$8= ≠ 6!#¶/ Y 6;$8= ≠ + 2EPETIR (ACER ) ← ) Y $8 ← $ ) ) 3I $8 . ENTONCES (ACER ) ← $8 ← Y $ ← [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I 6;$8= 6!#¶/ ENTONCES %SCRIBIR h,A INFORMACIØN NO ESTÈ EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv $8 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

! CONTINUACIØN SE PRESENTA UN EJEMPLO QUE ILUSTRA EL FUNCIONAMIENTO DEL ALGORITMO

%JEMPLO

3EA 6 UN ARREGLO UNIDIMENSIONAL DE DIEZ ELEMENTOS ,AS CLAVES Y SE ASIGNARON SEGÞN LA FUNCIØN HASH ( + + MOD %N LA lGURA SE PRESENTA EL ESTADO DEL ARREGLO A Y LA TABLA CON ( + PARA CADA CLAVE B ,A TABLA CONTIENE EL SEGUIMIENTO DE LAS VARIABLES IMPORTANTES DEL ALGORITMO PARA EL CASO DEL EJEMPLO ANTERIOR Y EL DATO A BUSCAR ES IGUAL A

4!",! 3OLUCIØN DE COLISIONES POR LA PRUEBA CUADRÉTICA +

$

)

$8


#Ò426&%" */5&3/"

411

&)'52! 3OLUCIØN DE COLISIONES POR LA PRUEBA CUADRÉTICA A !RREGLO B 4ABLA CON ( +

!L APLICAR LA FUNCIØN HASH A LA CLAVE SE OBTIENE UNA DIRECCIØN $ IGUAL A SIN EMBARGO EN ESA DIRECCIØN NO SE ENCUENTRA EL ELEMENTO BUSCADO 3E CALCULA POSTE RIORMENTE $8 COMO LA SUMA $ ) ) OBTENIÏNDOSE DE ESTA FORMA LA DIRECCIØN %L ALGORITMO DE BÞSQUEDA CONCLUYE CUANDO SE ENCUENTRA EL VALOR DESEADO EN LA DÏCIMA POSICIØN DEL ARREGLO %N LA TABLA SE PRESENTA EL SEGUIMIENTO DE LAS VARIABLES IMPORTANTES DEL ALGORITMO PARA UN CASO MÈS COMPLEJO QUE EL ANTERIOR %L DATO A BUSCAR ES

$OBLE DIRECCIØN HASH %L MÏTODO DE DOBLE DIRECCIØN HASH CONSISTE EN QUE UNA VEZ QUE SE DETECTA LA COLISIØN SE GENERA OTRA DIRECCIØN APLICANDO LA MISMA FUNCIØN HASH A LA DIRECCIØN PREVIAMENTE OBTENIDA %L PROCESO SE DETIENE CUANDO EL ELEMENTO ES HALLADO O CUANDO SE ENCUENTRA UNA POSICIØN VACÓA

4!",!

$

)

$8

3OLUCIØN DE COLISIONES POR LA PRUEBA CUADRÉTICA +


412 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" $( + $ʹ ( $ $ʹʹ ( $ʹ ,A FUNCIØN HASH QUE SE APLICA NO NECESARIAMENTE TIENE QUE SER LA MISMA QUE ORIGI NALMENTE SE APLICØ A LA CLAVE PODRÓA SER CUALQUIER OTRA 3IN EMBARGO NO EXISTE NINGÞN ESTUDIO QUE PRECISE CUÈL ES LA MEJOR FUNCIØN QUE SE DEBE UTILIZAR EN EL CÈLCULO DE LAS DIRECCIONES SUCESIVAS !NALICEMOS AHORA EL ALGORITMO DE SOLUCIØN DE COLISIONES POR MEDIO DEL MÏTODO DE LA DOBLE DIRECCIØN HASH !LGORITMO $OBLE?DIRECCIØN $OBLE?DIRECCIØN 6 . + [%STE ALGORITMO BUSCA AL DATO CON LA CLAVE + EN EL ARREGLO UNIDIMENSIONAL 6 DE . ELEMENTOS 2ESUELVE EL PROBLEMA DE LAS COLISIONES POR MEDIO DE LA DOBLE DIRECCIØN HASH] [$ Y $8 SON VARIABLES DE TIPO ENTERO] (ACER $ ← ( + 3I 6;$8= ≠ 6!#¶/ Y 6;$= + ENTONCES %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA POSICIØNv $ SI NO (ACER $8 ← (ʹ $ -IENTRAS $8 ≤ . Y 6;$8= ≠ 6!#¶/ Y 6;$8= ≠ + Y $8 ≠ $ 2EPETIR (ACER $8 ← (ʹ $8 [&IN DEL CICLO DEL PASO ] 3I 6;$8= 6!#¶/ O 6;$8= ≠ + ENTONCES %SCRIBIR h,A INFORMACIØN BUSCADA NO ESTÈ EN EL ARREGLOv SI NO %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv $8 [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%L SIGUIENTE EJEMPLO ILUSTRA EL FUNCIONAMIENTO DE ESTE ALGORITMO

%JEMPLO

3EA 6 UN ARREGLO UNIDIMENSIONAL DE DIEZ ELEMENTOS ,AS CLAVES Y FUERON ASIGNADAS SEGÞN LA FUNCIØN HASH ( + + MOD !DEMÈS SE DElNIØ UNA FUNCIØN (ʹ PARA CALCULAR DIRECCIONES ALTERNATIVAS EN CASO DE HABER COLISIØN


#ร 426&%" */5&3/"

413

&)'52! 3OLUCIร N DE COLISIONES POR EL Mร TODO DE DOBLE DIRECCIร N HASH A !RREGLO B 4ABLA CON ( + (สน $ (สน $สน (สน $สนสน

(สน $ $ L MOD L %N LA lGURA SE PRESENTA EL ESTADO DEL ARREGLO A Y LA TABLA B CON ( + PARA CADA CLAVE Y (สน $ EN CASO DE COLISIร N %N LA TABLA SE PRESENTA EL SEGUIMIENTO DEL ALGORITMO PARA EL CASO DEL EJEM PLO ANTERIOR %L DATO A BUSCAR ES IGUAL A !L APLICAR LA FUNCIร N HASH ( A LA CLAVE SE OBTUVO UNA DIRECCIร N $ IGUAL A #OMO EN ESA POSICIร N NO SE ENCUENTRA EL ELEMENTO BUSCADO SE APLICA REITERADAMENTE (สน GENERANDO DIRECCIONES HASTA LOCALIZAR EL VALOR DESEADO %N ESTE EJEMPLO FUE PRECISO APLICAR TRES VECES LA FUNCIร N (สน OBTENIร NDOSE LAS DIRECCIONES Y EN LA QUE lNAL MENTE SE ENCONTRร EL DATO BUSCADO

!RREGLOS ANIDADOS %L Mร TODO DE ARREGLOS ANIDADOS CONSISTE EN QUE CADA ELEMENTO DEL ARREGLO TENGA OTRO ARREGLO EN EL CUAL SE ALMACENEN LOS ELEMENTOS QUE COLISIONAN 3I BIEN LA SOLUCIร N PA RECE SER SENCILLA ES CLARO QUE RESULTA INElCIENTE !L TRABAJAR CON ARREGLOS SE DEPENDE DEL ESPACIO QUE SE HAYA ASIGNADO A ร STOS LO CUAL CONDUCE A UN NUEVO PROBLEMA DIFร CIL

4!",! 3OLUCIร N DE COLISIONES POR EL Mร TODO DE DOBLE DIREC CIร N HASH +

$

$8


414 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" DE SOLUCIONAR ELEGIR UN TAMA×O ADECUADO DE ARREGLO QUE PERMITA UN EQUILIBRIO ENTRE EL COSTO DE MEMORIA Y EL NÞMERO DE VALORES QUE COLISIONAN QUE PUDIERA ALMACENAR !NALICEMOS UN EJEMPLO

%JEMPLO

3EA 6 UN ARREGLO UNIDIMENSIONAL DE DIEZ ELEMENTOS ,OS ELEMENTOS CON CLAVES Y SE ALMACENARON EN EL ARREGLO UNIDIMENSIONAL 6 UTILIZANDO LA FUNCIØN HASH ( + + MOD %N LA lGURA SE PRESENTA EL ESTADO DEL ARREGLO ANIDADO A Y LA TABLA CON ( + PARA CADA CLAVE B

%NCADENAMIENTO %L MÏTODO DE ENCADENAMIENTO CONSISTE EN QUE CADA ELEMENTO DEL ARREGLO TENGA UN APUN TADOR A UNA LISTA LIGADA LA CUAL SE IRÈ GENERANDO Y ALMACENARÈ LOS VALORES QUE COLISIONAN %S EL MÏTODO MÈS ElCIENTE DEBIDO AL DINAMISMO PROPIO DE LAS LISTAS #UALQUIERA QUE SEA EL NÞMERO DE COLISIONES QUE SE PRESENTEN SE PODRÈN RESOLVER SIN INCONVENIENTES #OMO DESVENTAJAS DEL MÏTODO DE ENCADENAMIENTO SE MENCIONA EL HECHO DE QUE OCUPA ESPACIO ADICIONAL AL DE LA TABLA Y QUE EXIGE EL MANEJO DE LISTAS LIGADAS !DEMÈS SI LAS LISTAS CRECEN DEMASIADO SE PERDERÈ LA FACILIDAD DE ACCESO DIRECTO DEL MÏTODO HASH ,A lGURA MUESTRA LA ESTRUCTURA DE DATOS NECESARIA PARA RESOLVER COLISIONES POR MEDIO DEL MÏTODO DE ENCADENAMIENTO ! CONTINUACIØN SE PRESENTA EL ALGORITMO DE SOLUCIØN DE COLISIONES POR ENCADENA MIENTO

&)'52! 3OLUCIØN DE COLISIONES CON ARREGLOS ANIDADOS A !RREGLO ANIDADO B 4ABLA CON ( +


#Ò426&%" */5&3/"

415

&)'52! 3OLUCIØN DE COLISIONES POR ENCADENAMIENTO

!LGORITMO %NCADENAMIENTO %NCADENAMIENTO 6 . + [%STE ALGORITMO BUSCA AL DATO CON CLAVE + EN EL ARREGLO UNIDIMENSIONAL 6 DE . ELEMENTOS 2ESUELVE LAS COLISIONES POR MEDIO DE ENCADENAMIENTO EN LISTAS LIGADAS 3)' E ).&/ SON LOS CAMPOS DE CADA NODO DE LA LISTA] [$ ES UNA VARIABLE DE TIPO ENTERO 1 ES UNA VARIABLE DE TIPO PUNTERO] (ACER $ ← ( + ['ENERA DIRECCIØN] 3I 6;$= ≠ 6!#¶/ Y 6;$= + ENTONCES %SCRIBIR h,A INFORMACIØN ESTÈ EN LA POSICIØNv $ SI NO (ACER 1 ← 6;$= 3)' [!PUNTADOR A LA LISTA] -IENTRAS 1 ≠ 6!#¶/ Y 1> ).&/ ≠ + (ACER 1 ← 1> 3)' [&IN DEL CICLO DEL PASO ] 3I 1 6!#¶/ ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN LA LISTAv SI NO %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN LA LISTAv [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CONDICIONAL DEL PASO ]

%L FUNCIONAMIENTO DE ESTE ALGORITMO QUEDA MÈS CLARO CON EL SIGUIENTE EJEMPLO


416 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" %JEMPLO

3EA 6 UN ARREGLO UNIDIMENSIONAL DE DIEZ ELEMENTOS ,OS ELEMENTOS CON CLAVES Y SE ALMACENARON EN EL ARREGLO UNIDIMENSIONAL 6 UTILIZANDO LA SIGUIENTE FUNCIØN HASH ( + + MOD %N LA lGURA SE PRESENTA EL ESTADO DEL ARREGLO CON ENCADENAMIENTO A Y LA TABLA CON ( + PARA CADA CLAVE B 5NA VEZ DETECTADA LA COLISIØN EN UNA CIERTA POSICIØN DEL ARREGLO SE DEBE RECORRER LA LISTA ASOCIADA A ELLA HASTA ENCONTRAR EL ELEMENTO BUSCADO O LLEGAR A SU lNAL %N EL EJEMPLO SE PRESENTA OTRO CASO DE SOLUCIØN DE COLISIONES POR ENCADENA MIENTO DONDE LAS CLAVES SON ALFABÏTICAS

%JEMPLO

3EA 0 UN ARREGLO UNIDIMENSIONAL DE DIEZ ELEMENTOS EN EL CUAL SE ALMACENAN LOS DATOS DE ALGUNOS PINOS MEXICANOS 3E UTILIZA COMO CLAVE EL NOMBRE DE LOS PINOS PARA ASIGNAR A CADA UNO DE ELLOS UNA DIRECCIØN EN EL ARREGLO 0 0ARA ELLO PRIMERO SE OBTENDRÈ UN NÞMERO QUE RESULTARÈ DE SUSTITUIR CADA LETRA POR UN DÓGITO DEL AL Y A ESTE NÞMERO SE LE APLICARÈ LA FUNCIØN HASH ( DElNIDA DE LA SIGUIENTE MANERA ( CLAVE CLAVE MOD ,A TABLA CONTIENE LOS NOMBRES DE LOS PINOS EL VALOR NUMÏRICO ASOCIADO CLAVE Y LA DIRECCIØN EN 0 QUE LE CORRESPONDE #OMO SE PUEDE APRECIAR EN LA TABLA HA HABIDO COLISIONES 0ARA RESOLVERLAS SE APLICA RÈ EL MÏTODO DE ENCADENAMIENTO ,A ESTRUCTURA RESULTANTE SE MUESTRA EN LA lGURA #ABE DESTACAR QUE CUALQUIERA QUE SEA EL MÏTODO SELECCIONADO PARA RESOLVER LAS CO LISIONES SE DEBE TENER EN CUENTA EN QUÏ ESTADO QUEDA LA ESTRUCTURA AL INSERTAR Y SOBRE TODO AL ELIMINAR ELEMENTOS ,A ELIMINACIØN ES LA OPERACIØN QUE MÈS AFECTA CUANDO SE

&)'52! 3OLUCIØN DE COLISIONES POR ENCADENAMIENTO


#Ò426&%" */5&3/" 4!",!

.OMBRE

6ALOR NUMÏRICO

417

$IRECCIØN

#EMBROIDES

%DULIS

#ULMINICOLA

1UADRIFOLIA

0INSEANA

&LEXILIS

!YACAHUITE

4EOCOTE

#OOPERI

0RINGLEI

TIENEN COLISIONES POR LO QUE SE LE DEBE DEDICAR ESPECIAL ATENCIØN PARA NO PERDER ElCIEN CIA EN LA BÞSQUEDA

!NÉLISIS DEL MÏTODO POR TRANSFORMACIØN DE CLAVES 0ARA ANALIZAR LA COMPLEJIDAD DE ESTE MÏTODO ES NECESARIO REALIZAR VARIOS CÈLCULOS PRO BABILÓSTICOS QUE NO SE ESTUDIARÈN EN ESTA OBRA ,A DIlCULTAD DEL ANÈLISIS SE DEBE PRIN CIPALMENTE A QUE NO SØLO INTERVIENE LA FUNCIØN HASH SINO TAMBIÏN EL MÏTODO UTILIZADO PARA RESOLVER LAS COLISIONES 0OR LO TANTO SE DEBERÓA ANALIZAR CADA UNA DE LAS POSIBLES COMBINACIONES QUE SE PUDIERAN PRESENTAR

&)'52! 3OLUCIØN DE COLISIONES POR ENCADENAMIENTO


418 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" 3EA λ EL FACTOR DE OCUPACIØN DE UN ARREGLO DElNIDO COMO - . DONDE - ES EL NÞ MERO DE ELEMENTOS EN EL ARREGLO Y . ES SU TAMA×O 3EGÞN ,IPSCHUTZ LA PROBABILIDAD DE LLEVAR A CABO UNA BÞSQUEDA CON ÏXITO 3 Y OTRA SIN ÏXITO : QUEDAN DETERMINADAS POR LAS SIGUIENTES FØRMULAS ▼ &ØRMULAS

A "ÞSQUEDA CON ÏXITO B "ÞSQUEDA SIN ÏXITO 3 L

L

L

: L

#ABE ACLARAR QUE ESTAS FØRMULAS SON VÈLIDAS SOLAMENTE EN CASO DE FUNCIONES HASH CON EL MÏTODO LINEAL DE SOLUCIØN DE COLISIONES

­RBOLES DE BÞSQUEDA %N EL CAPÓTULO SE PRESENTARON LOS ÈRBOLES COMO UNA ESTRUCTURA PODEROSA Y ElCIENTE PARA ALMACENAR Y RECUPERAR INFORMACIØN $EBIDO AL DINAMISMO QUE CARACTERIZA A LOS ÈRBOLES EL BENElCIO DE UTILIZARLOS ES MAYOR CUANTO MÈS VARIABLE SEA EL NÞMERO DE DATOS A TRATAR

&)'52! 2EPRESENTACIØN DE TRIES


#Ò426&%" */5&3/"

419

%N ESTA SECCIØN SØLO SE HABLARÈ DE LA ESTRUCTURA TRIE QUE ES UNA VARIANTE DE LA ES TRUCTURA TIPO ÈRBOL 5N TRIE ES UNA ESTRUCTURA SIMILAR A UN ÈRBOL CON . RAÓCES CON LA PARTICULARIDAD DE QUE CADA NODO DEL ÈRBOL PUEDE SER NUEVAMENTE UN TRIE %N LA lGURA SE PRESENTA UN DIAGRAMA CORRESPONDIENTE A UN TRIE QUE CONTIENE LAS PROPOSICIONES DEL CASTELLANO 5N TRIE PUEDE REPRESENTAR UNA ESTRUCTURA SUMAMENTE ÞTIL PARA BÞSQUEDA ,AS RAÓCES DEL ÈRBOL TIENEN COMO OBJETIVO DIRIGIR EL CAMINO DE BÞSQUEDA HACIA LA META ,A PROFUNDIDAD DE UNA ESTRUCTURA DE ESTE TIPO DEPENDE DE LA DISCRIMINACIØN EN LA CLAVE DE BÞSQUEDA QUE REALI CE EL USUARIO %N LA lGURA SE PUEDE OBSERVAR UN TRIE CUYA PROFUNDIDAD ES VARIABLE PARA CADA RAÓZ $E ESTA FORMA SE LOCALIZA LA INFORMACIØN BUSCADA DIRECTAMENTE EN EL NODO TERMI NAL SIN TENER QUE REALIZAR BÞSQUEDA SECUENCIAL %N LA lGURA EL LECTOR PUEDE OBSERVAR UN TRIE CON PROFUNDIDAD TRES LA DISCRIMINACIØN EN LA CLAVE DE BÞSQUEDA ES IGUAL A #ON EL PROPØSITO DE INSTRUMENTAR ESTA ESTRUCTURA EN UN LENGUAJE DE ALTO NIVEL PODE MOS REPRESENTAR UN TRIE COMO UN BOSQUE 0OSTERIORMENTE APLICANDO LAS REGLAS NECESARIAS ANALIZADAS EN EL CAPÓTULO SE DEBE CONVERTIR ESTA ESTRUCTURA EN ÈRBOL BINARIO %N LA lGURA SE MUESTRA EL BOSQUE QUE REPRESENTA AL TRIE DE LA lGURA &INALMENTE EN LA lGURA SE MUESTRA AL ÈRBOL BINARIO QUE REPRESENTA AL BOSQUE DE LA lGURA

&)'52! 2EPRESENTACIØN DE UN TRIE CON DISCRIMINACIØN


420 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" &)'52! 2EPRESENTACIØN DEL TRIE DE LA lGURA COMO BOSQUE

"Â315%$! %84%2.! %N LA SECCIØN ANTERIOR SE ESTUDIARON LAS TÏCNICAS DE BÞSQUEDA QUE SON APLICABLES CUANDO LA INFORMACIØN RESIDE EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA %N PARTICULAR SE ANALI ZØ LA OPERACIØN DE BÞSQUEDA EN ESTRUCTURAS ESTÈTICAS ARREGLOS Y DINÈMICAS LISTAS Y ÈRBOLES DE INFORMACIØN 3IN EMBARGO EXISTEN CASOS EN LOS CUALES NO SE PUEDE MANEJAR TODA LA INFORMACIØN EN MEMORIA PRINCIPAL SINO QUE ES NECESARIO TRABAJAR CON INFORMA CIØN ALMACENADA EN ARCHIVOS %STE TIPO DE BÞSQUEDA SE DENOMINA BÞSQUEDA EXTERNA ,OS ARCHIVOS SE USAN NORMALMENTE CUANDO EL VOLUMEN DE DATOS ES SIGNIlCATIVO O CUANDO LA APLICACIØN EXIGE LA PERMANENCIA DE LOS DATOS AUN DESPUÏS DE QUE ÏSTA SE TERMINE DE EJECUTAR #OMO LOS ARCHIVOS SE ENCUENTRAN ALMACENADOS EN DISPOSITIVOS PE RIFÏRICOS CINTAS DISCOS ETC LAS OPERACIONES DE ESCRITURA Y LECTURA DE DATOS TIENEN UN ALTO COSTO EN CUANTO A TIEMPO POR LOS ACCESOS A ESTOS PERIFÏRICOS 0ARA DISMINUIR EL


#Ã’426&%" &95&3/"

&)'52! 2EPRESENTACIØN DEL BOSQUE DE LA lGURA COMO ÉRBOL BINARIO

421


422 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" TIEMPO DE ACCESO ES MUY IMPORTANTE OPTIMIZAR LAS OPERACIONES DE BÞSQUEDA INSERCIØN Y ELIMINACIØN EN ARCHIVOS 5NA FORMA DE HACERLO ES TRABAJAR CON ARCHIVOS ORDENADOS ! CONTINUACIØN SE DESCRIBEN ALGUNOS DE LOS MÏTODOS MÈS UTILIZADOS EN BÞSQUEDA EXTERNA

"ÞSQUEDA EN ARCHIVOS SECUENCIALES ,OS ARCHIVOS SECUENCIALES SON AQUELLOS CUYOS COMPONENTES O REGISTROS OCUPAN POSI CIONES RELATIVAS CONSECUTIVAS 4ODO COMPONENTE O REGISTRO DE UN ARCHIVO TIENE GENERAL MENTE UN CAMPO QUE LO IDENTIlCA LLAMADO CAMPO CLAVE ²STE SE ENCUENTRA FORMADO POR UN CONJUNTO DE CARACTERES O DÓGITOS !DEMÈS OCUPA LA MISMA POSICIØN RELATIVA EN TODOS LOS REGISTROS DE UN MISMO ARCHIVO !LGUNOS EJEMPLOS DE CAMPOS CLAVE SON EL NÞMERO DE CLIENTE ARCHIVO DE CLIENTES EL NÞMERO DE CONTRIBUYENTE ARCHIVO DE HACIENDA LA MATRÓCULA DE UN ALUMNO ARCHIVO DE ALUMNOS EL NÞMERO DE EMPLEADO ARCHIVO DE EMPLEADOS ETC 0UEDE SUCEDER QUE LA CLAVE DE UN REGISTRO ESTÏ FORMADA POR MÈS DE UN CAMPO 0OR EJEMPLO EN UN SISTEMA DE INVENTARIOS CADA PIEZA SE PODRÓA IDENTIlCAR POR UN CAMPO QUE HAGA REFERENCIA AL DEPARTAMENTO AL CUAL PERTENECE Y OTRO CAMPO PARA LA PIEZA EN SÓ %NSEGUIDA SE DESCRIBEN ALGUNOS MÏTODOS DE BÞSQUEDA EN ARCHIVOS SECUENCIALES

"ÞSQUEDA SECUENCIAL %L MÏTODO DE BÞSQUEDA SECUENCIAL CONSISTE EN RECORRER EL ARCHIVO COMPARANDO LA CLAVE BUSCADA CON LA CLAVE DEL REGISTRO EN CURSO %L RECORRIDO LINEAL DEL ARCHIVO TERMINA CUANDO SE ENCUENTRA EL ELEMENTO O CUANDO SE ALCANZA EL lNAL DEL ARCHIVO 3E PUEDEN PRESENTAR ALGUNAS VARIANTES DENTRO DE ESTE MÏTODO DEPENDIENDO SOBRE TODO DE SI EL ARCHIVO ESTÈ ORDENADO O DESORDENADO ! CONTINUACIØN SE DETALLA EL ALGORITMO DE BÞSQUEDA LINEAL EN UN ARCHIVO SECUENCIAL DESORDENADO !LGORITMO !RCHIVO?SECUENCIAL?DESORDENADO

!RCHIVO?SECUENCIAL?DESORDENADO &! + [%STE ALGORITMO BUSCA SECUENCIALMENTE EN UN ARCHIVO DESORDENADO &! UN REGISTRO CON CLAVE +] ["!. ES UNA VARIABLE DE TIPO BOOLEANO 2 ES UNA VARIABLE DE TIPO REGISTRO #,!6% ES UN CAMPO DEL REGISTRO] !BRIR EL ARCHIVO &! PARA LECTURA (ACER "!. ← &!,3/ -IENTRAS NO SEA EL lN DE ARCHIVO DE &! Y "!. &!,3/ 2EPETIR ,EER 2 DE &! 3I 2 #,!6% + ENTONCES %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN EL ARCHIVOv


#Ò426&%" &95&3/"

423

(ACER "!. ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!. &!,3/ ENTONCES %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARCHIVOv [&IN DEL CONDICIONAL DEL PASO ]

%STE ALGORITMO ES SIMILAR AL %N GENERAL TIENE LAS MISMAS CARACTERÓSTICAS QUE EL MÏTODO SECUENCIAL EN ARREGLOS DESORDENADOS %L ALGORITMO DE BÞSQUEDA EN ARCHIVOS ORDENADOS SE ESTUDIARÈ CONSIDERANDO EN PAR TICULAR ARCHIVOS ORDENADOS EN FORMA CRECIENTE !LGORITMO !RCHIVO?SECUENCIAL?ORDENADO !RCHIVO?SECUENCIAL?ORDENADO &! + [%STE ALGORITMO BUSCA SECUENCIALMENTE EN UN ARCHIVO &! ORDENADO EN FORMA CRECIENTE UN REGISTRO CON CLAVE +] ["!. ES UNA VARIABLE DE TIPO BOOLEANO 2 ES UNA VARIABLE DE TIPO REGISTRO #,!6% ES UN CAMPO DEL REGISTRO] !BRIR EL ARCHIVO &! PARA LECTURA (ACER "!. ← &!,3/ -IENTRAS NO SEA EL lN DE ARCHIVO DE &! Y "!. &!,3/ 2EPETIR ,EER 2 DE &! 3I 2 #,!6% ≥ + ENTONCES (ACER "!. ← 6%2$!$%2/ [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I 2 #,!6% + ENTONCES %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN EL ARCHIVOv SI NO %SCRIBIR h,A INFORMACIØN NO SE ENCUENTRA EN EL ARCHIVOv [&IN DEL CONDICIONAL DEL PASO ]

,A DIFERENCIA ENTRE ESTE ALGORITMO Y EL ANTERIOR CONSISTE EN QUE LA BÞSQUEDA TAMBIÏN SE DETIENE CUANDO LA CLAVE DE 2 ES MAYOR QUE + %STO ÞLTIMO SE DEBE A QUE SI EL ARCHIVO ESTÈ ORDENADO YA NO SE ENCONTRARÈ EL REGISTRO CON CLAVE + ENTRE LOS REGISTROS AÞN NO VISITADOS


424 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

"ÞSQUEDA SECUENCIAL MEDIANTE BLOQUES ,A BÞSQUEDA SECUENCIAL MEDIANTE BLOQUES CONSISTE EN TOMAR BLOQUES DE REGISTROS EN VEZ DE REGISTROS AISLADOS 5N BLOQUE ES UN CONJUNTO DE REGISTROS 3U TAMA×O ES ARBITRARIO Y DEPENDE DEL NÞMERO DE ELEMENTOS DEL ARCHIVO 'ENERALMENTE SE DElNE EL TAMA×O DEL . . BLOQUE IGUAL A DONDE ES EL NÞMERO DE REGISTROS DEL ARCHIVO LA DEMOSTRACIØN DE . POR QUÏ ES SE PRESENTA MÈS ADELANTE %L ARCHIVO DEBE ESTAR ORDENADO ,A BÞSQUEDA SE REALIZA AL COMPARAR LA CLAVE EN CUESTIØN CON EL ÞLTIMO REGISTRO DE CADA BLOQUE 3I LA CLAVE RESULTA MENOR ENTONCES SE BUSCA EN FORMA SECUENCIAL A TRAVÏS DE LOS REGISTROS SAL TEADOS EN EL BLOQUE %N CASO CONTRARIO SE CONTINÞA CON EL SIGUIENTE BLOQUE %N PROMEDIO . EL NÞMERO DE COMPARACIONES REQUERIDAS PARA ENCONTRAR UN VALOR DADO SERÈ IGUAL A ! CONTINUACIØN SE PRESENTA UN ALGORITMO DE BÞSQUEDA SECUENCIAL USANDO BLOQUES !LGORITMO !RCHIVO?SECUENCIAL?BLOQUES !RCHIVO?SECUENCIAL?BLOQUES &! . + [%STE ALGORITMO BUSCA SECUENCIALMENTE EN UN ARCHIVO ORDENADO &! DE . ELEMENTOS UN REGISTRO CON CLAVE +] [) Y 4" SON VARIABLES DE TIPO ENTERO "!. ES UNA VARIABLE DE TIPO BOOLEANO] !BRIR EL ARCHIVO &! PARA LECTURA (ACER "!. ← &!,3/ ) ← Y 4" ← 0ARTE %NTERA SQRT . [#ALCULA EL TAMA×O DEL BLOQUE COMO LA RAÓZ CUADRADA DE .] -IENTRAS 4" ) ≤ . Y "!. &!,3/ 2EPETIR ,EER 2 DE &! EN LA POSICIØN 4" ) 3I 2 #,!6% ≥ + ENTONCES (ACER "!. ← 6%2$!$%2/ SI NO (ACER ) ← ) [&IN DEL CONDICIONAL DEL PASO ] [&IN DEL CICLO DEL PASO ] 3I "!. 6%2$!$%2/ ENTONCES 3I 2 #,!6% + ENTONCES %SCRIBIR h,A INFORMACIØN SE ENCUENTRA EN EL ARCHIVOv SI NO 2EALIZAR BÞSQUEDA SECUENCIAL EN LOS REGISTROS SALTEADOS DEL REGISTRO 4" ) n AL REGISTRO 4" ) n 2EPOSICIONAR EL PUNTERO DEL ARCHIVO Y APLICAR EL ALGORITMO PARA EJECUTAR LA BÞSQUEDA ELEMENTO POR ELEMENTO [&IN DEL CONDICIONAL DEL PASO ] SI NO [3I 4" NO ES MÞLTIPLO DE . QUEDARON ELEMENTOS SIN REVISAR] 2EALIZAR BÞSQUEDA SECUENCIAL EN LOS REGISTROS COMPRENDIDOS ENTRE 4" ) n Y . [&IN DEL CONDICIONAL DEL PASO ]


#Ò426&%" &95&3/"

425

%N ESTE ALGORITMO SE LEE EL ÞLTIMO REGISTRO DE CADA BLOQUE Y DE LA COMPARACIØN DEL ELEMENTO BUSCADO CON ÏL SE DECIDE CØMO CONTINUAR CON LA BÞSQUEDA %L SIGUIENTE EJEM PLO ILUSTRA MEJOR EL FUNCIONAMIENTO DE ESTE ALGORITMO

%JEMPLO

3EA &! UN ARCHIVO ORDENADO DE REGISTROS ,OS REGISTROS OCUPAN POSICIONES CONSECU TIVAS CON DIRECCIONES RELATIVAS DEL AL ,AS CLAVES DE LOS REGISTROS ALMACENADOS EN &! SON $ADO QUE SE CONOCE . SE CALCULA EL TAMA×O DEL BLOQUE DE LA SIGUIENTE MANERA 4"

,A TABLA PRESENTA EL SEGUIMIENTO DEL ALGORITMO PARA + %N LA COLUMNA 2EGISTRO LEÓDO APARECE EL ÞLTIMO REGISTRO DEL BLOQUE PASOS Y %N EL PASO CUANDO SE CUMPLE LA CONDICIØN DE QUE 2 #,!6% ≥ + ENTONCES SE COMIEN ZA LA BÞSQUEDA SECUENCIAL A PARTIR DEL ELEMENTO 4" ) n ELEMENTO EN ESTE CASO EL HASTA QUE SE ENCUENTRA EL VALOR DESEADO ÏXITO O HASTA EL ELEMENTO 4" ) n ELEMENTO /BSERVE QUE EN EL PASO SE ENCUENTRA EL REGISTRO BUSCADO

"ÞSQUEDA SECUENCIAL CON ÓNDICES %L MÏTODO DE BÞSQUEDA SECUENCIAL CON ÓNDICES TRABAJA CON BLOQUES Y CON ARCHIVOS DE ÓNDICES %N EL ARCHIVO DE ÓNDICES SE ALMACENAN LAS CLAVES QUE HACEN REFERENCIA A CADA BLOQUE Y LA DIRECCIØN DE LOS BLOQUES EN EL ARCHIVO ,A BÞSQUEDA DE UN ELEMENTO COMIEN ZA RECORRIENDO EL ARCHIVO DE ÓNDICES COMPARANDO LAS CLAVES ALLÓ ALMACENADAS CON LA CLAVE DEL ELEMENTO EN CUESTIØN 5NA VEZ QUE SE DETERMINA EL BLOQUE EN EL CUAL SE PUEDE ENCONTRAR EL REGISTRO BUSCADO SE CONTINÞA LA BÞSQUEDA AHORA RECORRIENDO SECUENCIAL MENTE DICHO BLOQUE

4!",! "ÞSQUEDA SECUENCIAL CON BLOQUE

0ASO

)

2EGISTRO LEÓDO

#OMPARA

"ANDERA

&

&

6


426 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" ,A DESVENTAJA DE ESTE MÏTODO ES QUE REQUIERE MÈS ESPACIO DE MEMORIA YA QUE SE TRABAJA CON DOS ARCHIVOS EL PRINCIPAL EN EL CUAL SE ALMACENAN LOS REGISTROS Y EL DE ÓN DICES 5NA FORMA DE ACELERAR EL PROCESO DE BÞSQUEDA CONSISTE EN MANTENER EN MEMORIA PRINCIPAL EL ARCHIVO DE ÓNDICES %N LA lGURA SE PRESENTA UN ESQUEMA DE UN ARCHIVO CON SU CORRESPONDIENTE ARCHIVO DE ÓNDICES %L ARCHIVO DE ÓNDICES SE RECORRE SECUENCIALMENTE HASTA ENCONTRAR LA CLAVE QUE SEA MAYOR O IGUAL A LA CLAVE BUSCADA #UANDO ESTO ÞLTIMO SUCEDA SE TOMARÈ LA DIRECCIØN DEL BLOQUE APUNTADO POR DICHA CLAVE Y SE APLICARÈ BÞSQUEDA SECUENCIAL ALGORITMO EN DICHO BLOQUE

$ETERMINACIØN DEL TAMA×O DEL BLOQUE %L TAMA×O DEL BLOQUE SE DEBE ELEGIR DE TAL FORMA QUE PERMITA REDUCIR EL NÞMERO DE COM PARACIONES 3EA . EL NÞMERO DE REGISTROS EN EL ARCHIVO Y 4" EL TAMA×O DEL BLOQUE ,A PROBABILIDAD DE ENCONTRAR UN REGISTRO EN UN BLOQUE ES IGUAL PARA TODOS LOS BLOQUES POR LO TANTO EL NÞMERO MEDIO DE BLOQUES EXAMINADOS SERÈ

. 4"

¥

´

¤ ¦§ I . 4" µ¶ I

. 4"

$ONDE . 4" REPRESENTA LA PROBABILIDAD DE ENCONTRAR UN REGISTRO EN UN BLOQUE #ONSIDERE ADEMÈS QUE TODOS LOS REGISTROS TIENEN LA MISMA PROBABILIDAD DE SER EL BUS CADO POR LO TANTO EL NÞMERO MEDIO DE REGISTROS EXAMINADOS SERÈ

&)'52! "ÞSQUEDA SECUENCIAL CON ÓNDICES


#ร 426&%" &95&3/" 4"

ยฅ

ยค ยง I 4" ยดยถ I

4"

427

$ONDE 4" ES LA PROBABILIDAD DE QUE EL REGISTRO EXAMINADO SEA EL BUSCADO 3E SUMAN LAS EXPRESIONES Y PARA OBTENER EL Nร MERO TOTAL MEDIO DE COMPARACIO NES 4# QUE SE DEBEN HACER PARA ENCONTRAR UN ELEMENTO EN EL ARCHIVO 4#

. 4" 4"

/PERANDO SE OBTIENE 4#

. 4" 4"

!L MINIMIZAR 4# SE PODRร DETERMINAR CUร L ES EL TAMAร O ADECUADO PARA DElNIR LOS BLOQUES ES DECIR EL PROBLEMA SE REDUCE A ENCONTRAR UN VALOR TAL PARA 4" QUE MINIMICE EL VALOR DE 4# . D 4# D 4" 4"

3E IGUALA A CERO LA EXPRESIร N Y SE HACEN LAS OPERACIONES . 4"

. 4"

$E LA EXPRESIร N SE PUEDE AlRMAR QUE EL VALOR DE 4" QUE MINIMIZA A 4# ES

4" .

โ ผ &ร RMULA

,OS ARCHIVOS DE ร NDICES POR OTRA PARTE SE PUEDEN DElNIR A DISTINTOS NIVELES ES DECIR SE PUEDEN DElNIR ร NDICES DE ร NDICES 3I BIEN ESTE TIPO DE ORGANIZACIร N OPTIMIZA EL TIEMPO DE Bร SQUEDA TIENE EL INCONVENIENTE DE QUE OCUPA MUCHO ESPACIO DE ALMACENAMIENTO

"ร SQUEDA BINARIA %L PRINCIPIO QUE RIGE EL Mร TODO DE Bร SQUEDA BINARIA EN LA Bร SQUEDA EXTERNA ES EL MIS MO QUE SE EXPLICร EN Bร SQUEDA BINARIA INTERNA SECCIร N DE ESTE CAPร TULO %L ARCHIVO DEBE ESTAR ORDENADO Y SE DEBE CONOCER SU Nร MERO DE ELEMENTOS . PARA APLICAR ESTE Mร TODO %L LECTOR PUEDE DESARROLLARLO Fร CILMENTE YA QUE CONOCE EL Mร TODO DE Bร SQUEDA BINARIA EN MEMORIA PRINCIPAL ย INTERNAย


428 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" #ABE DESTACAR QUE UN GRAN INCONVENIENTE DE LA BÞSQUEDA BINARIA EXTERNA ES QUE REQUIERE ACCESOS A DIFERENTES POSICIONES DEL DISPOSITIVO PERIFÏRICO EN EL CUAL ESTÈ AL MACENADO EL ARCHIVO ELLO PRODUCE UN ALTO COSTO EN TIEMPO DE ACCESO QUE HACE MUY IMPRÈCTICA ESTA BÞSQUEDA

"ÞSQUEDA POR TRANSFORMACIØN DE CLAVES HASH %L MÏTODO DE BÞSQUEDA EXTERNA POR TRANSFORMACIØN DE CLAVES TIENE BÈSICAMENTE LAS MISMAS CARACTERÓSTICAS QUE EL PRESENTADO EN LA SECCIØN ,OS ARCHIVOS NORMALMENTE SE ENCUENTRAN ORGANIZADOS EN ÈREAS LLAMADAS CUBETAS ²STAS SE ENCUENTRAN FORMADAS POR CERO UNO O MÈS BLOQUES DE REGISTROS 0OR LO TANTO LA FUNCIØN HASH APLICADA A UNA CLAVE DARÈ COMO RESULTADO UN VALOR QUE HACE REFERENCIA A UNA CUBETA EN LA CUAL SE PUEDE ENCONTRAR EL REGISTRO BUSCADO 4AL COMO SE MENCIONØ EN BÞSQUEDA INTERNA LA ELECCIØN DE UNA ADECUADA FUNCIØN HASH Y DE UN MÏTODO PARA RESOLVER COLISIONES ES FUNDAMENTAL PARA LOGRAR MAYOR ElCIEN CIA EN LA BÞSQUEDA !NTES DE PRESENTAR ALGUNAS FUNCIONES HASH SE HARÈ UN COMENTARIO SOBRE LAS COLISIO NES ,OS BLOQUES CONTIENEN UN NÞMERO lJO DE REGISTROS #ON RESPECTO A LAS CUBETAS NO SE ESTABLECE UN LÓMITE EN CUANTO AL NÞMERO DE BLOQUES QUE PUEDEN ALMACENAR %STA CARAC TERÓSTICA PERMITE SOLUCIONAR AL MENOS PARCIALMENTE EL PROBLEMA DE LAS COLISIONES 3IN EMBARGO SI EL TAMA×O DE LAS CUBETAS CRECE CONSIDERABLEMENTE SE PERDERÈN LAS VENTAJAS PROPIAS DE ESTE MÏTODO %S DECIR SI EL NÞMERO DE BLOQUES QUE SE DEBEN RECORRER EN UNA CUBETA ES GRANDE EL TIEMPO NECESARIO PARA ELLO SERÈ SIGNIlCATIVO POR LO TANTO YA NO SE CONTARÈ CON LA VENTAJA DEL ACCESO DIRECTO QUE CARACTERIZA AL MÏTODO POR TRANSFORMACIØN DE CLAVES %N LA lGURA SE PRESENTA UNA ESTRUCTURA DE ARCHIVO ORGANIZADO EN CUBETAS LAS QUE A SU VEZ ESTÈN FORMADAS POR BLOQUES #OMO SE MUESTRA EN LA lGURA CADA CUBETA PUEDE TENER UN APUNTADOR A UN BLOQUE 3I UNA CUBETA TIENE DOS O MÈS BLOQUES SE ESTABLECEN LIGAS ENTRE ELLOS $ADA LA CLAVE DE UN REGISTRO BUSCADO SE APLICARÈ UNA FUNCIØN HASH LA CUAL DARÈ COMO RESULTADO UN NÞMERO DE CUBETA 5NA VEZ LOCALIZADA ÏSTA HABRÈ QUE RECORRER SUS BLOQUES HASTA EN CONTRAR EL REGISTRO O LLEGAR A UN BLOQUE CON PUNTERO NULO LO CUAL INDICARÈ QUE NO EXISTEN OTROS BLOQUES %S IMPORTANTE ELEGIR UNA FUNCIØN HASH QUE DISTRIBUYA LAS CLAVES EN FORMA HOMOGÏ NEA A TRAVÏS DE LAS CUBETAS DE MANERA QUE SE EVITE LA CONCENTRACIØN DE NUMEROSAS CLAVES

&)'52! !RCHIVO ORGANIZADO CON CUBETAS DE BLOQUES


#Ò426&%" &95&3/"

429

EN UNA CUBETA MIENTRAS OTRAS PERMANECEN VACÓAS ! CONTINUACIØN SE PRESENTAN ALGUNAS DE LAS FUNCIONES HASH MÈS COMUNES

&UNCIONES HASH 5NA FUNCIØN HASH SE PUEDE DElNIR COMO UNA TRANSFORMACIØN DE CLAVE A UNA DIRECCIØN !L APLICAR UNA FUNCIØN HASH A UNA CLAVE SE OBTIENE EL NÞMERO DE CUBETA EN LA CUAL SE PUEDE ENCONTRAR EL REGISTRO CON DICHA CLAVE ,A FUNCIØN DEBE TRANSFORMAR LAS CLAVES PARA QUE LA DIRECCIØN RESULTANTE SEA UN NÞ MERO COMPRENDIDO ENTRE LOS POSIBLES VALORES DE LAS CUBETAS 0OR EJEMPLO SI SE TIENEN CUBETAS NUMERADAS DE A LAS DIRECCIONES PRODUCIDAS POR LA FUNCIØN DEBEN SER VALORES COMPRENDIDOS ENTRE Y 3I LAS CLAVES FUERAN ALFABÏTICAS O ALFANUMÏ RICAS PRIMERO DEBERÈN CONVERTIRSE EN NUMÏRICAS TRATANDO DE NO PERDER INFORMACIØN PARA LUEGO SER TRANSFORMADAS EN UNA DIRECCIØN %S IMPORTANTE QUE LA FUNCIØN DISTRIBUYA HOMOGÏNEAMENTE LAS CLAVES ENTRE LOS NÞMEROS DE CUBETAS DISPONIBLES ,AS FUNCIONES MØDULO CUADRADO PLEGAMIENTO Y TRUNCAMIENTO PRESENTADAS ANTERIOR MENTE PARA BÞSQUEDA INTERNA SON VÈLIDAS TAMBIÏN PARA BÞSQUEDA EXTERNA /TRA FUNCIØN QUE SE PUEDE UTILIZAR PARA EL CÈLCULO DE DIRECCIONES ES LA DE CONVERSIØN DE BASES AUNQUE NO PROPORCIONA MAYOR HOMOGENEIDAD EN LA DISTRIBUCIØN $E TODAS LA FUNCIØN MØDULO ES SIN EMBARGO LA QUE OFRECE MAYOR UNIFORMIDAD

#ONVERSIONES DE BASES ,A CONVERSIØN DE BASES CONSISTE EN MODIlCAR DE MANERA ARBITRARIA LA BASE DE LA CLAVE OBTENIENDO UN NÞMERO QUE CORRESPONDA A UNA CUBETA 3I EL NÞMERO DE DÓGITOS DEL VALOR RESULTANTE EXCEDE EL ORDEN DE LAS DIRECCIONES ENTONCES SE SUPRIMIRÈN LOS DÓGITOS MÈS SIGNIlCATIVOS

%JEMPLO

3UPONGAMOS QUE SE TIENEN CUBETAS CADA UNA DE ELLAS REFERENCIADA POR UN NÞMERO ENTERO COMPRENDIDO ENTRE Y 3EA + LA CLAVE DEL REGISTRO QUE SE BUSCA 3E ELIGE EL COMO BASE A LA CUAL SE CONVIERTE LA CLAVE ( DÓGMENSIG ( DÓGMENSIG 3E TOMA ENTONCES COMO DIRECCIØN EL Y LOS DÓGITOS MÈS SIGNIlCATIVOS Y SE DESPRECIAN

3OLUCIØN DE COLISIONES #OMO SE MENCIONØ ANTERIORMENTE CUANDO SE TRATØ BÞSQUEDA INTERNA UNO DE LOS ASPECTOS QUE SIEMPRE SE DEBEN DE CONSIDERAR EN EL MÏTODO POR TRANSFORMACIØN DE CLAVES ES LA SO LUCIØN DE COLISIONES #UANDO DOS O MÈS ELEMENTOS CON DISTINTAS CLAVES TIENEN UNA MISMA DIRECCIØN SE ORIGINA UNA COLISIØN 0ARA EVITAR LAS COLISIONES SE DEBE ELEGIR UN TAMA×O ADECUADO DE CUBETAS Y DE BLO QUES #ON RESPECTO A LAS CUBETAS SI SE DElNEN MUY PEQUE×AS EL NÞMERO DE COLISIONES


430 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" AUMENTA MIENTRAS QUE SI SE DElNEN MUY GRANDES SE PIERDE ElCIENCIA EN CUANTO A ESPACIO DE ALMACENAMIENTO !DEMÈS SI SE NECESITARA COPIAR UNA CUBETA EN MEMORIA PRINCIPAL Y ÏSTA FUERA MUY GRANDE OCASIONARÓA PROBLEMAS POR FALTA DE ESPACIO /TRO INCONVENIENTE QUE SE PRESENTA EN EL CASO DE CUBETAS MUY GRANDES ES QUE SE REQUIERE MUCHO TIEMPO PARA RECORRERLAS #ON RESPECTO AL TAMA×O DE LOS BLOQUES ES IMPORTANTE CONSIDERAR LA CAPACIDAD DE ÏSTOS PARA ALMACENAR REGISTROS 5N BLOQUE PUEDE ALMACENAR UNO DOS O MÈS REGISTROS .ORMALMENTE LOS TAMA×OS DE LAS CUBETAS Y LOS BLOQUES DEPENDEN DE LAS CAPACIDADES DEL EQUIPO CON EL QUE SE ESTÏ TRABAJANDO #ABE DESTACAR QUE UTILIZANDO UNA ESTRUCTURA COMO LA DE LA lGURA NO SE TENDRÓA PROBLEMAS DE COLISIONES DEBIDO PRINCIPALMENTE A QUE POR MÈS QUE LA CUBETA ESTÏ OCU PADA ES POSIBLE SEGUIR ENLAZANDO TANTOS BLOQUES COMO FUERAN NECESARIOS %STE ESQUEMA DE SOLUCIØN SE CORRESPONDE CON EL PRESENTADO EN BÞSQUEDA INTERNA BAJO EL NOMBRE DE ENCADENAMIENTO 3IN EMBARGO NO SIEMPRE ES POSIBLE DElNIR UNA ESTRUCTURA DE ESTE TIPO #ONSIDERE POR EJEMPLO UN ARCHIVO ORGANIZADO EN CUBETAS COMO EL QUE SE MUESTRA EN LA lGURA %N ESTE ARCHIVO CADA CUBETA TIENE UN BLOQUE Y POR LO TANTO UNA CAPACIDAD MÈXIMA DETERMINADA POR EL TAMA×O DEL BLOQUE ASOCIADO CON ELLA 5NA VEZ QUE SE SATURA LA CAPA CIDAD DE LA CUBETA CUALQUIER REGISTRO ASIGNADO A ELLA PRODUCIRÈ UNA COLISIØN ! CONTINUA CIØN SE ANALIZARÈN DOS MANERAS DIFERENTES DE ENFRENTAR ESTA SITUACIØN

&)'52! 3OLUCIØN DE COLISIONES


#Ò426&%" &95&3/"

431

5SO DE ÉREAS INDEPENDIENTES PARA COLISIONES %L USO DE ÈREAS INDEPENDIENTES PARA COLISIONES CONSISTE EN DElNIR ÈREAS SEPARADAS SECUNDARIAS DE LAS ÈREAS PRIMARIAS DE ALMACENAMIENTO EN LAS QUE SE ALMACENARÈN TODOS LOS REGISTROS QUE HAYAN COLISIONADO %L ÈREA DE COLISIONES PUEDE ESTAR ORGANIZADA DE DIFERENTES MANERAS 5NA ALTERNATIVA CONSISTE EN TENER EL ÈREA COMÞN A TODAS LAS CU BETAS %N CONSECUENCIA SI SE PRODUCE UNA COLISIØN HABRÈ QUE BUSCAR A LO LARGO DEL ÈREA SECUNDARIA HASTA ENCONTRAR EL ELEMENTO DESEADO SEGÞN LA lGURA /TRA FORMA DE ORGANIZAR EL ÈREA DE COLISIONES CONSISTE EN DIVIDIRLA EN BLOQUES ASO CIANDO CADA UNO DE ELLOS A UNO DEL ÈREA PRIMARIA %STA ALTERNATIVA OPTIMIZA EL TIEMPO DE BÞSQUEDA EN EL ÈREA DE COLISIONES PERO TIENE EL INCONVENIENTE DE QUE ESTOS BLOQUES PODRÓAN A SU VEZ SATURARSE OCASIONANDO NUEVAMENTE COLISIONES %L ESQUEMA CORRESPON DIENTE A ESTA ESTRUCTURA SE MUESTRA EN LA lGURA

&)'52! 3OLUCIØN DE COLISIONES MEDIANTE UN ÉREA COMÞN DE COLISIONES


432 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

&)'52! 3OLUCIØN DE COLISIONES MEDIANTE UN ÉREA DE COLISIONES ORGANIZADA EN BLOQUES

5SO DE ÉREAS DE COLISIONES ENTRE LOS BLOQUES DE ALMACENAMIENTO PRIMARIO %L USO DE ÈREAS DE COLISIONES ENTRE LOS BLOQUES DE ALMACENAMIENTO PRIMARIO CON SISTE EN DElNIR ÈREAS DE COLISIONES ENTRE LOS BLOQUES DE ALMACENAMIENTO PRIMARIO %STE MÏTODO ES SIMILAR AL PRESENTADO EN BÞSQUEDA INTERNA BAJO EL NOMBRE DE REASIGNACIØN 5NA VEZ DETECTADA UNA COLISIØN EN UN BLOQUE SE DEBE BUSCAR EN EL ÈREA DE COLISIONES IN MEDIATA A DICHO BLOQUE 3I EL ELEMENTO NO SE ENCUENTRA Y EL ÈREA DE COLISIONES ESTÈ LLENA SE CONTINUARÈ LA BÞSQUEDA A TRAVÏS DE LAS OTRAS ÈREAS DE COLISIONES %L PROCESO TERMINA CUANDO EL ELEMENTO SE ENCUENTRA O BIEN CUANDO EXISTEN ESPACIOS VACÓOS EN UN BLOQUE EL ELEMENTO BUSCADO NO SE ENCUENTRA EN EL ARCHIVO %L ESQUEMA CORRESPONDIENTE A ESTE ESQUEMA SE MUESTRA EN LA lGURA


#Ò426&%" &95&3/"

433

&)'52! 3OLUCIØN DE COLISIONES MEDIANTE BLOQUES PARAÊ COLISIONES ENTRE LOS BLOQUES PRIMARIOS

(ASHING DINÉMICO BÞSQUEDA DINÉMICA POR TRANSFORMACIØN DE CLAVES ,A PRINCIPAL CARACTERÓSTICA DEL HASHING DINÈMICO ES SU DINAMISMO PARA VARIAR EL NÞ MERO DE CUBETAS EN FUNCIØN DE SU DENSIDAD DE OCUPACIØN 3E COMIENZA A TRABAJAR CON UN NÞMERO DETERMINADO DE CUBETAS Y A MEDIDA QUE ÏSTAS SE VAN LLENANDO SE ASIGNAN NUEVAS CUBETAS AL ARCHIVO %XISTEN BÈSICAMENTE DOS FORMAS DE TRABAJAR CON EL HASHING DINÈMICO ◗ ◗

0OR MEDIO DE EXPANSIONES TOTALES 0OR MEDIO DE EXPANSIONES PARCIALES

-ÏTODO DE LAS EXPANSIONES TOTALES %L MÏTODO DE EXPANSIONES TOTALES ES PROBABLEMENTE EL MÈS UTILIZADO #ONSISTE EN DU PLICAR EL NÞMERO DE CUBETAS EN LA MEDIDA EN QUE ÏSTAS SUPERAN LA DENSIDAD DE OCUPACIØN PREVIAMENTE ESTABLECIDA !SÓ POR EJEMPLO SI EL NÞMERO INICIAL DE CUBETAS ES . Y SE HACE UNA EXPANSIØN TOTAL EL VALOR RESULTANTE NUEVO NÞMERO DE CUBETAS SERÈ . 3I SE HACE UNA SEGUNDA EXPANSIØN TOTAL SE TENDRÈ . Y ASÓ SUCESIVAMENTE %L DINAMISMO DE ESTE MÏTODO TAMBIÏN SE DA EN SENTIDO CONTRARIO ES DECIR QUE A MEDIDA QUE LA DENSIDAD DE OCUPACIØN DE LAS CUBETAS DISMINUYE SE REDUCE EL NÞMERO DE ÏSTAS !SÓ SE GANA mEXIBILIDAD EN CUANTO A QUE SE PUEDEN INCREMENTAR LOS ESPACIOS DE AL MACENAMIENTO PERO TAMBIÏN SE PUEDEN REDUCIR SI LA DEMANDA DE ESPACIO ASÓ LO INDICA

%JEMPLO

3UPONGAMOS QUE SE TIENE UN ARCHIVO ORGANIZADO EN DOS CUBETAS . Y SE HA lJADO UNA DENSIDAD DE OCUPACIØN DE ,A DENSIDAD DE OCUPACIØN SE CALCULA COMO EL CO CIENTE ENTRE EL NÞMERO DE REGISTROS OCUPADOS Y EL DE REGISTROS DISPONIBLES #ADA CUBETA TIENE DOS REGISTROS Y LA FUNCIØN HASH QUE TRANSFORMA CLAVES EN DIRECCIONES SE DElNE DE LA SIGUIENTE MANERA ( CLAVE CLAVE -/$ .ÞMERO DE CUBETAS


434 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" &)'52! (ASH DINÉMICO . EXPANSIØN TOTAL

,OS VALORES Y SON LAS CLAVES DE LOS REGISTROS QUE SE DESEA ALMACENAR )NICIALMENTE EL ARCHIVO ESTÈ VACÓO %N LA lGURA SE PRESENTA UN ESQUEMA DE CØMO QUEDAN LAS CUBETAS DESPUÏS DE INSERTAR LAS TRES PRIMERAS CLAVES #UANDO SE QUIERE INSERTAR LA CLAVE SE SUPERA LA DENSIDAD DE OCUPACIØN ESTABLECI DA YA QUE SE ALCANZARÓA DE LLENADO 0OR LO TANTO SE DEBEN EXPANDIR Y REASIGNAR LOS REGISTROS CONSIDERANDO AHORA QUE EL NÞMERO DE CUBETAS ES IGUAL A . lGURA 3UPONGAMOS AHORA QUE SE DESEA INCORPORAR LOS REGISTROS CON CLAVES Y EN ESTE ORDEN %L RESULTADO DESPUÏS DE INSERTAR LAS DOS PRIMERAS CLAVES SE PUEDE OBSERVAR EN LA lGURA #UANDO SE INSERTA EL REGISTRO CON CLAVE LA DENSIDAD DE OCUPACIØN SUPERA EL lJADO 3E VUELVEN ENTONCES A EXPANDIR Y A REASIGNAR LOS REGISTROS ALMACENADOS lGURA A Y LUEGO SE CONTINÞA CON LA INSERCIØN DEL RESTO DE LOS ELEMENTOS ,A lGURA B PRESENTA EL ESTADO DE LAS CUBETAS LUEGO DE REALIZAR TODAS LAS INSERCIONES EXCEPTO LA ÞL TIMA #UANDO SE INSERTA LA ÞLTIMA CLAVE SE SUPERA NUEVAMENTE LA DENSIDAD DE OCUPA CIØN Y HAY QUE VOLVER A EXPANDIR LAS CUBETAS 0OR LO TANTO AHORA . SERÈ IGUAL A lGURA %S IMPORTANTE SE×ALAR QUE EN ESTE MÏTODO TAMBIÏN SE PUEDEN PRODUCIR COLISIONES LAS CUALES PODRÓAN TRATARSE SEGÞN ALGUNO DE LOS ESQUEMAS PROPUESTOS ANTERIORMENTE 0OR EJEMPLO SI EN EL CASO ANTERIOR lGURA LUEGO DE INSERTAR LOS REGISTROS CON CLAVES Y SE TRATARA DE AGREGAR EL REGISTRO CON CLAVE SE PRODUCIRÓA UNA COLISIØN YA QUE LA CUBETA ESTÈ LLENA

%JEMPLO

$ADO UN ARCHIVO ORGANIZADO EN DOS CUBETAS . DONDE CADA UNA DE ELLAS TIENE TRES REGISTROS SE QUIERE ALMACENAR LAS SIGUIENTES CLAVES Y 3E HA ESTABLECIDO UNA DENSIDAD DE OCUPACIØN MAYOR A PARA EXPANSIØN Y MENOR A PARA REDUCCIØN %S IMPORTANTE REMARCAR QUE EL PORCENTAJE DE OCUPACIØN PARA EL

&)'52! (ASH DINÉMICO . EXPANSIØN TOTAL


#Ò426&%" &95&3/"

435

&)'52! (ASH DINÉMICO . EXPANSIØN TOTAL A ,UEGO DE INSERTAR B ,UEGO DE INSERTAR

CASO DE REDUCCIØN SE CALCULA COMO EL COCIENTE ENTRE EL NÞMERO DE REGISTROS OCUPADOS Y EL NÞMERO DE CUBETAS ! CONTINUACIØN SE PRESENTA LA FUNCIØN HASH QUE SE UTILIZA ( CLAVE CLAVE -/$ .ÞMERO DE CUBETAS ,AS CLAVES SE ALMACENAN EN EL ORDEN EN QUE SE DAN ,A REPRESENTACIØN lNAL SE PUEDE OBSERVAR EN LA lGURA %N EL SIGUIENTE EJEMPLO SE ACLARA EL CONCEPTO DE REDUCCIØN DEL NÞMERO DE CUBETAS EN EL MÏTODO DINÈMICO POR TRANSFORMACIØN DE CLAVES CON EXPANSIONES TOTALES

&)'52! (ASH DINÉMICO . EXPANSIØN TOTAL A ,UEGO DE INSERTAR B ,UEGO DE INSERTAR


436 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

&)'52! (ASH DINÉMICO . EXPANSIØN TOTAL

%JEMPLO

3UPONGAMOS QUE SE TIENE EL ARCHIVO EN EL ESTADO QUE MUESTRA LA lGURA 3E DESEAN ELIMINAR AHORA LOS REGISTROS CON CLAVES Y !L ELIMINAR EL REGISTRO CON CLAVE LA DENSIDAD DE OCUPACIØN DISMINUYE DE TAL MANERA QUE PERMITE REDUCIR EL NÞMERO DE CUBETAS . ,UEGO DE LA REDUCCIØN Y DE LA REASIGNACIØN DE REGISTROS LAS CUBETAS QUEDAN COMO SE MUESTRA EN LA lGURA 5NA VEZ ELIMINADOS LOS OTROS REGISTROS LA DENSIDAD DE OCUPACIØN PERMITE REDUCIR NUEVAMENTE EL NÞMERO DE CUBETAS %N LA lGURA SE PRESENTA SU ESTADO LUEGO DE LA REDUCCIØN DE . Y DE LA REASIGNACIØN DE LOS REGISTROS

%JEMPLO

&)'52! (ASH DINÉMICO . EXPANSIØN TOTAL

$ADO EL ARCHIVO DE LA lGURA Y LAS ESPECIlCACIONES DADAS EN EL EJEMPLO ELIMI NE LAS SIGUIENTES CLAVES


#Ò426&%" &95&3/"

437

&)'52! (ASH DINÉMICO . REDUCCIØN

Y Y VERIlQUE QUE EL ESQUEMA lNAL LUEGO DE REALIZAR LAS ELIMINACIONES QUEDE IGUAL AL DE LA lGURA

-ÏTODO DE LAS EXPANSIONES PARCIALES %L MÏTODO DE LAS EXPANSIONES PARCIALES CONSISTE EN INCREMENTAR EN EL NÞMERO DE CUBETAS HACIENDO DE ESTA FORMA QUE DOS EXPANSIONES PARCIALES EQUIVALGAN A UNA TOTAL !SÓ POR EJEMPLO SI EL NÞMERO INICIAL DE CUBETAS ES . Y SE HACE UNA EXPANSIØN PARCIAL EL VALOR RESULTANTE SERÈ . 3I SE HACEN OTRAS EXPANSIONES PARCIALES SE TENDRÈ . LUEGO . Y ASÓ SUCESIVAMENTE

! CONTINUACIØN SE PRESENTA UN EJEMPLO DE HASH DINÈMICO CON EXPANSIONES PAR CIALES &)'52! (ASH DINÉMICO . REDUCCIØN


438 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" &)'52! (ASH DINÉMICO . REDUCCIØN

%JEMPLO

2ETOME EL EJEMPLO 3UPONGAMOS QUE HASTA EL MOMENTO SE HAN ALMACENADO LOS REGISTROS CON CLAVES Y #UANDO SE QUIERE INSERTAR EL REGISTRO CON CLAVE EL NÞMERO DE REGISTROS SUPERA EL MÈXIMO PERMITIDO YA QUE LA DENSIDAD DE OCUPACIØN SUPE RA POR TAL RAZØN SE REALIZA UNA EXPANSIØN PARCIAL ,A lGURA MUESTRA EL ESTADO DE LAS CUBETAS LUEGO DE EXPANDIR Y REASIGNAR LOS REGISTROS /BSERVE QUE EN ESTE CASO EL VALOR DE . NO FUE MUY ADECUADO PARA DISTRIBUIR UNI FORMEMENTE LOS REGISTROS A TRAVÏS DE LAS CUBETAS %N LA CUBETA SE TIENE UNA COLISIØN MIENTRAS QUE LA CUBETA PERMANECE VACÓA 3UPONGAMOS AHORA QUE SE DESEA INCORPORAR LOS REGISTROS CON CLAVES Y !L INSERTAR EL REGISTRO CON CLAVE SE SUPERA LA DENSIDAD DE OCUPACIØN POR LO QUE SE DEBEN EXPANDIR NUEVAMENTE LAS CUBETAS Y REASIGNAR LOS REGISTROS 3E INSERTA A CONTI NUACIØN EL REGISTRO CON CLAVE COMO SE VE EN LA lGURA !L INSERTAR EL REGISTRO CON CLAVE OTRA VEZ SE SUPERA EL PORCENTAJE DE OCUPACIØN PERMITIDO 3E VUELVEN A EXPANDIR LAS CUBETAS Y A REASIGNAR LOS REGISTROS %L RESULTADO lNAL LUEGO DE INSERTAR TODAS LAS CLAVES SE MUESTRA EN LA lGURA

%JEMPLO

$ADO UN ARCHIVO ORGANIZADO EN DOS CUBETAS . DONDE CADA CUBETA TIENE TRES REGIS TROS SE QUIERE ALMACENAR LAS SIGUIENTES CLAVES Y 0ARA ESTE EJEMPLO SE HA ESTABLECIDO UNA DENSIDAD DE OCUPACIØN MAYOR A PARA EXPANSIØN Y MENOR A PARA REDUCCIØN ! CONTINUACIØN SE PRESENTA LA FUNCIØN HASH QUE SE UTILIZA ( CLAVE CLAVE -/$ .ÞMERO DE CUBETAS

&)'52! (ASH DINÉMICO . REDUCCIØN


#Ò426&%" &95&3/"

439

&)'52! (ASH DINÉMICO . EXPANSIØN PARCIAL

/BSERVE SI LA ESTRUCTURA QUE OBTIENE ES IGUAL A LA QUE SE PRESENTA EN LA lGURA ! CONTINUACIØN SE PRESENTA UN EJEMPLO PARA ILUSTRAR LA REDUCCIØN DEL NÞMERO DE CU BETAS EN EL MÏTODO DINÈMICO POR TRANSFORMACIØN DE CLAVES CON EXPANSIONES PARCIALES

%JEMPLO

3UPONGAMOS QUE SE TIENE UN ARCHIVO EN EL ESTADO QUE MUESTRA LA lGURA B %LIMINE LOS REGISTROS CON CLAVES Y Y VERIlQUE SI LAS CUBETAS Y REGISTROS QUEDAN IGUAL A LA GRÈlCA QUE SE MUESTRA EN LA lGURA

%JEMPLO

$ADO EL ARCHIVO DE LA lGURA Y LAS ESPECIlCACIONES DADAS EN EL EJEMPLO ELIMI NE LAS SIGUIENTES CLAVES Y 6ERIlQUE SI EL ESQUEMA lNAL QUE OBTIENE ES IGUAL AL DE LA lGURA &INALMENTE ES IMPORTANTE SE×ALAR QUE EL TAMA×O DE LAS CUBETAS SE DEBE ESTABLECER DE ACUERDO CON EL PROBLEMA QUE ESTÏ INTENTANDO RESOLVER %N LOS EJEMPLOS PRESENTADOS SE HAN CONSIDERADO INICIALMENTE DOS REGISTROS POR CUBETA 3IN EMBARGO ESTE NÞMERO ES PARA QUE EL LECTOR OBSERVE EL FUNCIONAMIENTO DE LOS MÏTODOS AL REALIZAR EXPANSIONES Y REDUCCIONES 3I EL NÞMERO DE REGISTROS QUE UTILIZÈRAMOS FUERA GRANDE ENTONCES HABRÓA QUE INGRESAR GRAN CANTIDAD DE NÞMEROS PARA OBSERVAR LA EXPANSIØN DE CUBETAS )NDUDABLEMENTE EN LA PRÈCTICA SE DEBE CONSIDERAR UN NÞMERO MUCHO MÈS GRANDE DE REGISTROS POR CUBETA %L NÞMERO DEPENDERÈ PRINCIPALMENTE DEL TAMA×O DE CADA REGISTRO DE TAL FORMA QUE UNA CUBETA SE PUEDA CARGAR EN LA MEMORIA PRINCIPAL %N APLICACIONES GRANDES EL NÞMERO DE REGISTROS POR CUBETA PODRÓA VARIAR DE A 3I EL NÞMERO DE REGISTROS POR CUBETA ES PEQUE×O Y EN FORMA CONTINUA SE REALIZAN INSERCIONES Y ELIMI NACIONES ENTONCES PODRÓA OCURRIR QUE FRECUENTEMENTE SE DEBAN REALIZAR EXPANSIONES O REDUCCIONES CON LA CONSABIDA PÏRDIDA DE TIEMPO Y ALTO COSTO POR LA REASIGNACIØN DE LOS REGISTROS %S EL USUARIO QUIEN DEBE DElNIR ENTONCES EL NÞMERO DE REGISTROS POR CUBETA DEPENDIENDO DEL PROBLEMA Y DE LAS ACTUALIZACIONES QUE SE REALICEN


440 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

&)'52! (ASH DINÉMICO EXPANSIØN PARCIAL A ,UEGO DE EXPAN DIR E INSERTAR LOS REGISTROS CON CLAVES Y B ,UEGO DE EXPANDIR E INSERTAR LOS REGISTROS CON CLAVES Y

,ISTAS INVERTIDAS ,AS LISTAS INVERTIDAS TRABAJAN SOBRE ALGUNOS DE LOS ATRIBUTOS CAMPOS DE LOS REGIS TROS ,OS ATRIBUTOS PUEDEN ESTAR O NO INVERTIDOS ES DECIR PUEDEN SER O NO CAMPOS CLA VE ,OS ATRIBUTOS INVERTIDOS GENERAN LISTAS ORDENADAS DE REGISTROS LO CUAL FACILITA LAS BÞSQUEDAS QUE SE HAGAN EN ELLAS ,OS ATRIBUTOS NO INVERTIDOS GENERAN EL UNIVERSO O SEA PARA ENCONTRAR UN DETERMINADO ELEMENTO REGISTRO SE DEBERÈ REALIZAR UNA BÞSQUEDA SECUENCIAL


#Ò426&%" &95&3/"

441

&)'52! (ASH DINÉMICO . EXPANSIØN PARCIAL

,AS LISTAS INVERTIDAS SON MUY RECOMENDABLES CUANDO SE TRABAJA SOBRE COMBINACIO NES DE CAMPOS CLAVE #UANDO SE REQUIERE UNA COMBINACIØN DE ATRIBUTOS EN LA BÞSQUEDA ESTE MÏTODO RESULTA MUY CONVENIENTE YA QUE CON UNA SECUENCIA ØPTIMA DE OPERADORES !.$ Y /2 LA BÞSQUEDA SE PUEDE LLEVAR A CABO DE FORMA ElCIENTE ,A DESVENTAJA DEL MÏTODO ES QUE REQUIERE DE UNA ESTRUCTURA MUY COMPLICADA PARA OPERAR "ÈSICAMENTE TRABAJA SOBRE ÈRBOLES " CON PRElJO !NALICEMOS A CONTINUACIØN UN EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE TIENE UN ARCHIVO EN EL CUAL CADA REGISTRO ALMACENA LA SIGUIENTE IN FORMACIØN .OMBRE

0ROFESIØN

3E TIENEN LOS DATOS DE SEIS PERSONAS *UAN $ANIEL *OSÏ

&)'52! (ASH DINÉMICO . REDUCCIØN

MATEMÈTICO FÓSICO MATEMÈTICO

%DAD


442 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" &)'52! (ASH DINÉMICO . REDUCCIØN

0ASCUAL -IGUEL &ELIPE

INGENIERO INGENIERO ABOGADO

#ONSIDERANDO QUE LOS ATRIBUTOS PROFESIØN Y EDAD ESTÈN INVERTIDOS A CONTINUACIØN SE PRESENTAN ALGUNAS OPERACIONES DE BÞSQUEDA CON SUS CORRESPONDIENTES RESULTADOS PARA QUE EL LECTOR OBSERVE EL FUNCIONAMIENTO DEL MÏTODO A ,ISTA DE PERSONAS POR PROFESIØN MATEMÈTICOS FÓSICOS INGENIEROS ABOGADOS

[*UAN *OSÏ] [$ANIEL] [0ASCUAL -IGUEL] [&ELIPE]

B ,ISTA DE TODAS LAS PERSONAS CON PROFESIØN MATEMÈTICO O FÓSICO Y CON MÈS DE A×OS DE EDAD PROFESIØN MATEMÈTICO /2 PROFESIØN FÓSICO !.$ EDAD ,A LISTA FORMADA SEGÞN EL ATRIBUTO PROFESIØN ES [*UAN *OSÏ $ANIEL] 3OBRE ESTA LISTA SE APLICARÈ LA SEGUNDA CONDICIØN PLANTEADA EN LA BÞSQUEDA DE LO QUE RESULTA [*UAN $ANIEL] C ,ISTA DE TODOS LOS INGENIEROS MENORES DE A×OS Y MAYORES DE PROFESIØN INGENIERO !.$ EDAD !.$ EDAD ,A LISTA FORMADA SEGÞN EL ATRIBUTO PROFESIØN ES [0ASCUAL -IGUEL]


#Ò426&%" &95&3/"

443

! PARTIR DE ESTA LISTA SE BUSCARÈN LOS REGISTROS QUE CUMPLAN CON LAS CONDICIONES IMPUESTAS SOBRE EL ATRIBUTO EDAD ,A LISTA RESULTANTE SERÈ [-IGUEL] #ONSIDERANDO QUE SOLAMENTE EL ATRIBUTO PROFESIØN ESTÈ INVERTIDO SE PRESENTAN ALGU NAS OPERACIONES DE BÞSQUEDA CON SUS CORRESPONDIENTES RESULTADOS A ,ISTA DE TODAS LAS PERSONAS CON PROFESIØN MATEMÈTICO O FÓSICO Y CON MÈS DE A×OS DE EDAD

PROFESIØN MATEMÈTICO /2 PROFESIØN FÓSICO Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR AQUELLOS CON EDAD

[*UAN *OSÏ $ANIEL] Y SOBRE ESTA LISTA UNA BÞSQUEDA SECUENCIAL PARA ENCONTRAR A LOS INDIVIDUOS MAYORES DE A×OS

B ,ISTA DE TODOS LOS INGENIEROS MENORES DE A×OS Y MAYORES DE PROFESIØN INGENIERO Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR AQUELLOS CON EDAD Y EDAD

[0ASCUAL -IGUEL] Y BÞSQUEDA SECUENCIAL SOBRE ESTA LISTA PARA ENCONTRAR A LOS INDI VIDUOS MENORES DE Y MAYORES DE

C ,ISTA DE TODOS LOS ABOGADOS MAYORES DE A×OS

%JEMPLO

PROFESIØN ABOGADO Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR A AQUELLOS CON EDAD

[&ELIPE] Y BÞSQUEDA SECUENCIAL SOBRE ESTA LISTA PARA ENCONTRAR A LOS INDIVIDUOS MA YORES DE A×OS

%N ESTE CASO LA SOLUCIØN ES LA LISTA VACÓA .O HAY NINGÞN REGISTRO QUE TENGA LOS ATRI BUTOS PEDIDOS

,A $IRECCIØN 'ENERAL DE 2ECLUSORIOS HA DECIDIDO CREAR UNA BASE DE DATOS CON INFORMA CIØN SOBRE SUS PRESOS %L ESQUEMA QUE SE CONSIDERA ES EL SIGUIENTE NOMBRE?REO

CLAVE?REO

EDAD

,A ESCOLARIDAD ESTÈ CODIlCADA COMO !NALFABETO 0RIMARIA 3ECUNDARIA

ESCOLARIDAD

COD?DELITO

NACIONALIDAD


444 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" 0REPARATORIA 5NIVERSIDAD 0OSGRADO ,OS CØDIGOS DE DELITO COD?DELITO ESTÈN CODIlCADOS COMO

$ELITO CONTRA LA SALUD 2OBO CON ARMA DE FUEGO !COSO SEXUAL /TROS

#ONSIDERANDO QUE LOS ATRIBUTOS ESCOLARIDAD Y COD?DELITO ESTÈN INVERTIDOS SE PRE SENTAN ALGUNAS OPERACIONES DE BÞSQUEDA CON SUS CORRESPONDIENTES RESULTADOS A ,OS RECLUSOS ANALFABETOS CON MENOS DE A×OS DE EDAD

ESCOLARIDAD Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR A AQUELLOS CON EDAD

B ,OS RECLUSOS CON POSGRADO CUYA EDAD ESTÈ COMPRENDIDA ENTRE Y A×OS Y QUE COMETIERON EL DELITO CALIlCADO COMO ACOSO SEXUAL

ESCOLARIDAD !.$ COD?DELITO Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR A AQUELLOS CUYA EDAD ESTÈ COMPRENDIDA ENTRE Y A×OS DE EDAD

C ,OS REOS ESTADOUNIDENSES

BÞSQUEDA SECUENCIAL EN TODO EL ARCHIVO PARA LOCALIZAR A LOS REOS DE NACIONALIDAD ESTADOUNIDENSE

D ,OS REOS QUE COMETIERON ROBO CON ARMA DE FUEGO MENORES DE A×OS O LOS QUE COMETIERON DELITO CONTRA LA SALUD MENORES DE A×OS

COD?DELITO Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR EDAD /2 COD?DELITO Y BÞSQUEDA SECUENCIAL EN LA LISTA DE LOS REGISTROS MARCADOS PARA LOCALIZAR EDAD

3E HA MENCIONADO QUE LAS LISTAS GENERADAS POR ATRIBUTOS INVERTIDOS ESTÈN ORDENADAS POR LO TANTO EL TIEMPO DE PROCESAMIENTO ESTÈ DETERMINADO POR LA LISTA DE MAYOR TAMA×O 5NA SECUENCIA ADECUADA DE OPERADORES !.$ Y /2 PUEDE AYUDAR A DISMINUIR EL TIEMPO DE PROCESAMIENTO !NALICEMOS EL SIGUIENTE EJEMPLO

%JEMPLO

3UPONGAMOS QUE SE TIENEN LAS LISTAS , , Y , DE Y ELEMENTOS RESPECTI VAMENTE 3I SE NECESITARA UNIR LAS TRES LISTAS EL ORDEN EN EL CUAL SE HICIERA LA UNIØN SERÓA DETERMINANTE EN CUANTO AL NÞMERO TOTAL DE ELEMENTOS CON LOS CUALES SE TRABAJA


#Ò426&%" &95&3/"

445

, ∪ , ∪ , ∪ , , ∪ , ∪ , ∪ , , ∪ , ∪ , ∪ , %S FÈCIL OBSERVAR QUE LA MEJOR SECUENCIA ES LA TERCERA Y EL RESULTADO ES Y QUE LA PEOR SECUENCIA ES LA SEGUNDA Y EL RESULTADO ES

%JEMPLO

3EAN ! " # Y $ LISTAS DE Y ELEMENTOS RESPECTIVAMENTE 3I SE NECESI TARA SU UNIØN ALGUNAS DE LAS DISTINTAS SECUENCIAS QUE SE TENDRÓAN SON

! ∪ " ∪ # ∪ $ ∪ # ∪ $ ∪ $

" ∪ # ∪ ! ∪ $ ∪ ! ∪ " ∪ "

! ∪ $ ∪ " ∪ # ∪ " ∪ # ∪ #

! ∪ $ ∪ # ∪ " ∪ # ∪ " ∪ "

#ON LOS EJEMPLOS QUEDA DEMOSTRADO CØMO INmUYE EL TAMA×O DE LAS LISTAS EN EL NÞMERO TOTAL DE ELEMENTOS A PROCESAR %S POSIBLE CONCLUIR ENTONCES QUE RESULTA MUCHO MÈS ElCIENTE DEJAR LAS LISTAS DE MAYOR TAMA×O PARA UNIRLAS AL lNAL

-ULTILISTAS %L MÏTODO DE BÞSQUEDA MULTILISTAS PERMITE ACCEDER A LA INFORMACIØN QUE SE ENCUENTRA ORDENADA UTILIZANDO CAMPOS CLAVE ! UN REGISTRO SE PUEDE LLEGAR POR DIFERENTES CAMINOS #ADA CAMINO SE ESTABLECE EN FUNCIØN DEL CAMPO CLAVE SOBRE EL CUAL SE HAGA LA BÞSQUEDA


446 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" ,A FORMA MÈS ElCIENTE DE REPRESENTAR MULTILISTAS ES UTILIZANDO LISTAS ! CONTINUACIØN SE PRESENTA UN EJEMPLO DE ESTE MÏTODO

%JEMPLO

3UPONGAMOS QUE SE TIENE UN ARCHIVO EN EL CUAL CADA REGISTRO ALMACENA LA SIGUIENTE IN FORMACIØN .OMBRE *UAN $ANIEL *OSÏ 0ASCUAL -IGUEL &ELIPE

0ROFESIØN MATEMÈTICO FÓSICO MATEMÈTICO INGENIERO INGENIERO ABOGADO

#ATEGORÓA

,A lGURA REPRESENTA LAS MULTILISTAS CORRESPONDIENTES A LOS DATOS DADOS %N ESTE CASO LA INFORMACIØN DE CADA INDIVIDUO PUEDE SER ACCESADA POR MEDIO DE SU PROFESIØN Y DE SU CATEGORÓA QUE SON JUSTAMENTE LOS ATRIBUTOS QUE PERMITEN REALIZAR BÞSQUEDA DIRECTA EN EL ARCHIVO #OMO SE PUEDE OBSERVAR EN LA SIGUIENTE lGURA SE TIENE UNA LISTA POR PRO FESIØN Y OTRA POR CATEGORÓA %N GENERAL LAS MULTILISTAS SON RECOMENDABLES CUANDO LA BÞSQUEDA SE HACE SOBRE UN SOLO ATRIBUTO %N CASO DE NECESITARSE UNA COMBINACIØN DE ATRIBUTOS ES PREFERIBLE USAR LISTAS INVERTIDAS


#Ã’426&%" &95&3/"

&)'52! -ULTILISTAS

447


448 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%"

▼ %*%2#)#)/3 "ÞSQUEDA INTERNA Ê £° %SCRIBA UN PROGRAMA PARA BÞSQUEDA SECUENCIAL EN UN ARREGLO DESORDENADO QUE OBTENGA TODAS LAS OCURRENCIAS DE UN DATO DADO Ê Ó° $ADO UN ARREGLO QUE CONTIENE LOS NOMBRES DE . ALUMNOS ORDENADOS ALFABÏTICAMEN TE ESCRIBA UN PROGRAMA QUE ENCUENTRE UN NOMBRE DADO EN EL ARREGLO 3I LO ENCUENTRA DEBE DAR COMO RESULTADO LA POSICIØN EN LA QUE LO ENCONTRØ %N CASO CONTRARIO DEBE ENVIAR UN MENSAJE ADECUADO Ê Î° $ADO UN ARREGLO DE . COMPONENTES QUE CONTIENEN LA SIGUIENTE INFORMACIØN ◗ ◗ ◗

.OMBRE DEL ALUMNO 0ROMEDIO .ÞMERO DE MATERIAS APROBADAS

%SCRIBA UN PROGRAMA QUE LEA EL NOMBRE DE UN ALUMNO Y OBTENGA COMO RESULTADO EL PROMEDIO Y EL NÞMERO DE MATERIAS APROBADAS POR DICHO ALUMNO 3I EL NOMBRE DADO NO ESTÈ EN EL ARREGLO ENVÓE UN MENSAJE ADECUADO

A #ONSIDERE QUE EL ARREGLO ESTÈ DESORDENADO B #ONSIDERE QUE EL ARREGLO ESTÈ ORDENADO Ê {° %SCRIBA UN PROGRAMA PARA BÞSQUEDA SECUENCIAL EN ARREGLOS ORDENADOS DE MANERA DESCENDENTE Ê x° %SCRIBA UN PROGRAMA PARA BÞSQUEDA SECUENCIAL EN LISTAS SIMPLEMENTE LIGADAS QUE SE ENCUENTRAN DESORDENADAS 3I EL ELEMENTO SE ENCUENTRA EN LA LISTA INDIQUE EL NÞMERO DE NODO EN EL CUAL SE ENCONTRØ %N CASO CONTRARIO EMITA UN MENSAJE ADECUADO Ê È° %SCRIBA UN PROGRAMA PARA BÞSQUEDA SECUENCIAL EN LISTAS SIMPLEMENTE LIGADAS ORDE NADAS DE MANERA DESCENDENTE Ê Ç° %SCRIBA UN PROGRAMA DE BÞSQUEDA BINARIA EN ARREGLOS ORDENADOS A $E MANERA ASCENDENTE B $E MANERA DESCENDENTE Ê n° 2ESUELVA EL INCISO B DEL PROBLEMA UTILIZANDO EL ALGORITMO DE BÞSQUEDA BINARIA Ê ° $ElNA UNA CLASE !RREGLO SEGÞN LO VISTO EN EL CAPÓTULO %N LA CLASE DEBE INCLUIR POR LO MENOS DOS MÏTODOS DE LOS ESTUDIADOS EN ESTE CAPÓTULO PARA BUSCAR UN ELE MENTO ALMACENADO EN EL ARREGLO


&+&3$*$*04

449

£ä° $ADO QUE SE REQUIERE ALMACENAR LOS REGISTROS CON CLAVE Y

EN UN ARREGLO DE ELEMENTOS DElNA UNA FUNCIØN HASH QUE DISTRIBUYA LOS REGISTROS EN EL ARREGLO 3I HUBIERA COLISIONES RESUÏLVALAS APLICANDO EL MÏTODO DE REASIGNA CIØN LINEAL

££° $E UN GRUPO DE . ALUMNOS SE TIENEN LOS SIGUIENTES DATOS ◗ ◗ ◗

-ATRÓCULA VALOR ENTERO COMPRENDIDO ENTRE Y .OMBRE CADENA DE CARACTERES $IRECCIØN CADENA DE CARACTERES %L CAMPO CLAVE ES MATRÓCULA ,OS . REGISTROS HAN SIDO ALMACENADOS EN UN ARRE GLO APLICANDO LA SIGUIENTE FUNCIØN HASH ( CLAVE DÓGITOS?CENTRALES CLAVE ,AS COLISIONES HAN SIDO TRATADAS CON EL MÏTODO DE DOBLE DIRECCIØN HASH %SCRIBA UN SUBPROGRAMA QUE LEA LA MATRÓCULA DE UN ALUMNO Y REGRESE COMO RESULTADO SU NOMBRE Y DIRECCIØN %N CASO DE NO ENCONTRARLO EMITA UN MENSAJE ADECUADO

£Ó° 3E QUIERE ALMACENAR EN UN ARREGLO LOS SIGUIENTES DATOS DE . PERSONAS ◗ ◗ ◗ ◗

#LAVE DE CONTRIBUYENTE ALFANUMÏRICO DE LONGITUD .OMBRE CADENA DE CARACTERES $IRECCIØN CADENA DE CARACTERES 3ALDO REAL $ElNA UNA FUNCIØN HASH QUE PERMITA ALMACENAR EN UN ARREGLO LOS DATOS MEN CIONADOS 5TILICE EL MÏTODO DE ENCADENAMIENTO PARA RESOLVER LAS COLISIONES

£Î° 0RESENTE Y EXPLIQUE UNA FUNCIØN HASH QUE PERMITA ALMACENAR EN UN ARREGLO LOS ELEMEN TOS DE LA TABLA PERIØDICA DE LOS ELEMENTOS DE QUÓMICA Y SUS PROPIEDADES DE MANERA UNIFORME ,A CLAVE ESTÈ DADA POR EL NOMBRE DE LOS ELEMENTOS £{° 5TILICE LA FUNCIØN DElNIDA EN EL EJERCICIO ANTERIOR PARA INSERTAR Y ELIMINAR LOS ELE MENTOS QUE SE PRESENTAN A CONTINUACIØN )NSERTAR SODIO ORO OSMIO LITIO BORO COBRE PLATA RADIO %LIMINAR ORO OSMIO BORO COBRE PLATA £x° $ADOS LOS SIGNOS DEL ZODIACO CAPRICORNIO ACUARIO PISCIS ARIES TAURO GÏMINIS CÈNCER LEO VIRGO LIBRA ESCORPIØN SAGITARIO


450 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" A %SCRIBA UN SUBPROGRAMA PARA ALMACENARLOS EN UNA ESTRUCTURA DE TRIES B %SCRIBA UN SUBPROGRAMA DE BÞSQUEDA PARA LOS SIGNOS ALMACENADOS SEGÞN LO ESPE CIlCADO EN EL INCISO ANTERIOR

"ÞSQUEDA EXTERNA £È° 3E HAN ALMACENADO EN UN ARCHIVO SECUENCIAL LOS DATOS DE LOS EMPLEADOS DE UN SU PERMERCADO ◗ ◗ ◗ ◗

.OMBRE 2EGISTRO &EDERAL DE #ONTRIBUYENTES &ECHA DE INGRESO 3UELDO %SCRIBA UN PROGRAMA PARA BUSCAR SECUENCIALMENTE LOS DATOS DE UN EMPLEADO DADO SU NOMBRE COMO ENTRADA

A #ONSIDERE QUE EL ARCHIVO ESTÈ DESORDENADO B #ONSIDERE QUE EL ARCHIVO ESTÈ ORDENADO £Ç° %SCRIBA UN PROGRAMA DE BÞSQUEDA BINARIA EN ARCHIVOS SECUENCIALES ORDENADOS £n° $ElNA UNA FUNCIØN HASH QUE PERMITA ALMACENAR Y POSTERIORMENTE RECUPERAR LOS ELEMENTOS DE LA TABLA PERIØDICA DE LOS ELEMENTOS DE QUÓMICA EN UN ARCHIVO ,A CLAVE ESTÈ DADA POR EL NOMBRE DE LOS ELEMENTOS 2ESUELVA LAS COLISIONES UTILIZANDO UN ÈREA INDEPENDIENTE PARA ALMACENAR LOS ELEMENTOS COLISIONADOS £ ° 3E DESEA CREAR UN ARCHIVO CON INFORMACIØN SOBRE PINOS MEXICANOS #ADA REGISTRO CONTIENE LOS SIGUIENTES DATOS ◗ ◗ ◗

.OMBRE DEL PINO 4IPO DE HOJAS 4IPO DE CONO %L CAMPO CLAVE ES .OMBRE DEL PINO $ElNA UNA FUNCIØN HASH PARA ALMACENAR Y POSTERIORMENTE BUSCAR LOS SIGUIENTES PINOS #EMBROIDES -ONOPHYLLA .ELSONII &LEXILIS ,UMHOLTZII ,EIOPHYLLA $OUGLASIANA 4EOCOTE (ERRERAI -ONTEZUMAE #OOPERI #ONTORTA 0ONDAROSA !RIZONICA #ARIBAEA 0ATULA 2ADIATA -URICATA 2EMORATA 2ESUELVA LAS COLISIONES UTILIZANDO UN ÈREA COMÞN PARA ALMACENAR LOS ELEMENTOS COLISIONADOS

Óä° 5TILICE LA FUNCIØN DElNIDA EN EL EJERCICIO PARA INSERTAR Y ELIMINAR LOS ELEMENTOS QUE SE INDICAN A CONTINUACIØN


&+&3$*$*04

451

)NSERTAR SODIO ORO OSMIO LITIO BORO COBRE PLATA RADIO %LIMINAR ORO OSMIO BORO COBRE PLATA %L NÞMERO DE CUBETAS ES DOS . Y CADA CUBETA TIENE DOS REGISTROS ,A DENSI DAD DE OCUPACIØN PERMITIDA ES EN CASO DE SUPERAR ESTE PORCENTAJE SE APLICARÈN EXPANSIONES TOTALES A $IBUJE UN ESQUEMA DE LA ORGANIZACIØN DESPUÏS DE INSERTAR LOS ELEMENTOS OSMIO Y PLATA Y LUEGO DE ELIMINAR ORO BORO Y PLATA B $IGA QUÏ CLAVES ORIGINARON QUE EL NÞMERO DE CUBETAS SE EXPANDIERA O REDUJERA Ó£° 2ESUELVA EL PROBLEMA ANTERIOR PERO AHORA APLICANDO EXPANSIONES PARCIALES EN CASO DE TENER UN PORCENTAJE DE OCUPACIØN MAYOR AL PERMITIDO ÓÓ° 3EA . EL NÞMERO DE CUBETAS #ADA CUBETA TIENE DOS REGISTROS Y SE ESTABLECE UNA DENSIDAD DE OCUPACIØN PERMITIDA DE 5NA VEZ SUPERADA ESTA DENSIDAD SE APLI CARÈN EXPANSIONES PARCIALES ( CLAVE CLAVE -/$ . #LAVES A INSERTAR A $IBUJE UN ESQUEMA DE LA ORGANIZACIØN DESPUÏS DE INSERTAR LOS ELEMENTOS B $IGA QUÏ CLAVES ORIGINARON QUE EL NÞMERO DE CUBETAS SE EXPANDIERA Óΰ #ONSIDERE EL ARCHIVO DEL PROBLEMA ANTERIOR %LIMINE LOS REGISTROS CON CLAVES A $IBUJE UN ESQUEMA DE LA ORGANIZACIØN DESPUÏS DE ELIMINAR LOS ELEMENTOS B $IGA QUÏ CLAVES ORIGINARON QUE EL NÞMERO DE CUBETAS SE REDUJERA Ó{° 3EA . EL NÞMERO DE CUBETAS #ADA CUBETA TIENE DOS REGISTROS Y SE ESTABLECE UNA DENSIDAD DE OCUPACIØN PERMITIDA DE $ElNA UNA FUNCIØN HASH PARA )NSERTAR LAS CLAVES %LIMINAR LAS CLAVES A !PLIQUE EXPANSIONES TOTALES B !PLIQUE EXPANSIONES PARCIALES Óx° $ETERMINE CUÈL ES EL NÞMERO DE CUBETAS NECESARIO PARA ALMACENAR EN UN ARCHIVO NOMBRE APELLIDO EDAD ESCOLARIDAD Y DELITO COMETIDO POR REOS DEL 2ECLUSORIO .OR TE %L RECLUSORIO TIENE PRESOS .OTA 5TILICE EL MÏTODO DE LAS EXPANSIONES TOTALES #ADA CUBETA TIENE REGISTROS !L TENER DE LLENADO SE EXPANDE


452 >« ÌÕ Ê Ê Ê Ê .c50%04 %& #Ò426&%" ÓÈ° $ETERMINE CUÈL ES EL NÞMERO DE CUBETAS NECESARIO PARA ALMACENAR EN UN ARCHIVO LOS REGISTROS DE LOS DE CLIENTES QUE MANEJA UNA EMPRESA DE TARJETAS DE CRÏDITO .OTA 5TILICE EL MÏTODO DE LAS EXPANSIONES PARCIALES #ADA CUBETA TIENE REGIS TROS !L TENER DE LLENADO SE EXPANDE ÓÇ° 3E TIENE UN ARCHIVO CON REGISTROS QUE ALMACENAN INFORMACIØN SOBRE CLIENTES DE DIS TINTAS SUCURSALES BANCARIAS ,OS DATOS QUE SE MANEJAN POR CADA CLIENTE SON ◗ ◗ ◗ ◗ ◗ ◗

#LAVE DE LA SUCURSAL .OMBRE DEL TITULAR .ÞMERO DE CUENTA 3ALDO .ÞMERO DE PRÏSTAMO )MPORTE 3E TIENE INVERSIØN SOBRE EL CAMPO CLAVE SUCURSAL

A /BTENGA LOS REGISTROS DE LOS CLIENTES QUE TENGAN UN PRÏSTAMO MAYOR A EN LA SUCURSAL ,IMA B /BTENGA LOS REGISTROS DE LOS CLIENTES QUE TENGAN UN PRÏSTAMO MAYOR A EN LA SUCURSAL ,IMA Y UN SALDO EN SU CUENTA MAYOR A EN LA SUCURSAL 2ÓO C /BTENGA LOS REGISTROS DE LOS CLIENTES DE LA SUCURSAL 2ÓO QUE TENGAN EN SU CUENTA UN SALDO MAYOR A O LOS REGISTROS DE LOS CLIENTES DE LA SUCURSAL 1UITO QUE TENGAN UN PRÏSTAMO MENOR A Y UN SALDO EN SU CUENTA MAYOR A D /BTENGA LOS REGISTROS DE LOS CLIENTES DE LA SUCURSAL #ØRDOBA QUE TENGAN UN SALDO MAYOR A O UN PRÏSTAMO MENOR A E 3I SE QUIERE DETERMINAR SUCURSAL h,IMAv /2 SUCURSAL h1UITOv /2 SUCURSAL h2ÓOv /2 SUCURSAL h#ØRDOBAv Y LAS CORRESPONDIENTES LISTAS SON DE Y ELEMENTOS RESPECTIVAMENTE zCUÈL SERÈ LA SECUENCIA ØPTIMA PARA ALCANZAR UN COSTO MÓNIMO Ón° %N UN ARCHIVO SE HA ALMACENADO LA TABLA PERIØDICA DE LOS ELEMENTOS QUÓMICOS JUNTO CON SUS PROPIEDADES ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗

.OMBRE .ÞMERO ATØMICO 0ESO ATØMICO 0UNTO DE EBULLICIØN 0UNTO DE FUSIØN $ENSIDAD %LECTRONEGATIVIDAD #ONDUCTANCIA ELÏCTRICA #ONDUCTANCIA TÏRMICA

.! 0! 0% 0& $%. %/ #% #4


&+&3$*$*04

453

3E TIENE INVERSIØN SOBRE LOS CAMPOS PUNTO DE EBULLICIØN Y PUNTO DE FUSIØN A /BTENGA LOS REGISTROS DE LOS ELEMENTOS ALCALINOTÏRREOS ²STOS SE DETERMINAN POR LAS SIGUIENTES CARACTERÓSTICAS %/ $%. Y SU 0& ESTÈ COMPRENDIDO ENTRE LOS VALORES Y B /BTENGA LOS REGISTROS DE LOS ELEMENTOS DEL GRUPO " ²STOS SE DETERMINAN POR LAS SIGUIENTES CARACTERÓSTICAS %/ n O SU 0% ESTÈ COMPRENDIDO ENTRE LOS VALORES Y Ó ° %N UN ARCHIVO SE HAN ALMACENADO LOS DATOS DE . PROFESIONALES ◗ ◗ ◗ ◗

#LAVE DE CONTRIBUYENTE .OMBRE 0ROFESIØN .ACIONALIDAD 3E TIENE INVERSIØN SOBRE LOS CAMPOS PROFESIØN Y NACIONALIDAD

A /BTENGA LOS REGISTROS DE TODOS LOS INGENIEROS MEXICANOS B /BTENGA LOS REGISTROS DE TODOS LOS INGENIEROS MEXICANOS DE MÈS DE A×OS DE EDAD C /BTENGA LOS REGISTROS DE TODOS LOS INGENIEROS MEXICANOS DE MÈS DE A×OS DE EDAD O LOS PINTORES URUGUAYOS D /BTENGA LOS REGISTROS DE TODOS LOS ABOGADOS PERUANOS O LOS MÏDICOS CHILENOS DE MENOS DE A×OS E 3I SE QUIERE DETERMINAR PROFESIØN INGENIERO /2 PROFESIØN PINTOR /2 PROFESIØN MÏDICO Y LAS LISTAS SON DE Y CLAVES RESPECTIVAMENTE zCUÈL SERÈ LA SECUENCIA ØPTIMA PARA ALCANZAR UN COSTO MÓNIMO



")",)/'2!&·! ,A BIBLIOGRAFÓA QUE SE PRESENTA A CONTINUACIØN ES FRAGMENTARIA EN EL SENTIDO DE QUE SØLO SE INCLUYEN OBRAS QUE HAN SERVIDO DE BASE PARA ESTA EXPOSICIØN O QUE ESTÈN DIRECTAMENTE VINCULADAS CON ELLA !CKERMAN ! & 1UADRATIC 3EARCH FOR (ASH 4ABLES OF 3IZE 0 #OMM !#- !DELSON 6ELSKII ' Y ,ANDIS % !N !LGORITHM FOR THE /RGANIZATION OF )NFORMATION $OKL !KAD .AUK 3332 -ATHEMAT !HO ! (OPCROFT * Y 5LLMAN * 4HE $ESIGN AND !NALYSIS OF #OMPUTER !LGORITHMS !DDISON 7ESLEY 2EADING -ASS ˆˆˆˆ $ATA 3TRUCTURES AND !LGORITMS !DDISON 7ESLEY 0UBLISHING #OMPANY !LBIZURI - %STRUCTURAS DE DATOS %DITORIAL ,IMUSA !MBLE / Y +NUTH $ /RDERED (ASH 4ABLES #OMPUTER * !NDERSON - 2 Y !NDERSON - ' #OMMENTS ON 0ERFECT (ASHING &UNCTIONS ! 3INGLE 0ROBE 2ETRIEVING -ETHOD FOR 3TATIC 3ETS #OMM !#- !UGENSTEIN - Y 4ENENBAUM ! ! ,ESSON IN 2ECURSION AND 3TRUCTURED 0ROGRAMMING 3)'#3% "ULLETIN "AASE 3 #OMPUTER !LGORITHMS )NTRODUCTION TO $ESIGN AND !NALYSIS !DDISON 7ESLEY 2EADING -ASS "AER * Y 3CHWAB " ! #OMPARISON OF 4REE "ALANCING !LGORITHMS #OMM !#- "ARRON $ 2ECURSIVE 4ECHNIQUES IN 0ROGRAMMING !MERICAN %LSEVIER .UEVA 9ORK "ATAGELJ 6 4HE 1UADRATICE (ASH -ETHOD 7HEN THE 4ABLE 3IZE IS NOT A 0RIME .UMBER #OMM !#- "AYER 2 "INARY " TREES FOR 6IRTUAL -EMORY 0ROC !#- 3)'&)$%4 7ORKSHOP !#- .UEVA 9ORK ˆˆˆˆ 3YMMETRIC "INARY " TREES $ATA 3TRUCTURE AND -AINTENANCE !LGORITHMS !CTA )NFORMÈTICA ˆˆˆˆ Y -ETZGER * /N %NCIPHERMENT OF 3EARCH 4REES AND 2ANDOM !CCESS &ILES !#- 4RANS $ATABASE 3YST ˆˆˆˆ Y 5NTERAUER + 0RElX " TREES !#- 4RANS $ATABASE 3YST ˆˆˆˆ Y 3CHKOLNICK . #ONCURRENCY OF OPERATIONS ON " TREE !CTA )NF


456

L }À>v > "ELL * 4HE 1UADRATIC 1UOTIENT -ETHOD ! (ASH #ODE %LIMINATING 3ECONDARY #LUSTER ING #OMM !#- Y +AMAN # 4HE ,INEAR 1UOTIENT (ASH #ODE #OMM !#- "ELLMAN 2 $YNAMIC 0ROGRAMMING 0RINCETON 5NIVERSITY 0RESS 0RINCETON . * "ENTLEY * -ULTIDIMENSIONAL "INARY 3EARCH 4REES 5SED FOR !SSOCIATIVE 3EARCHING #OMM !#- Y &RIEDMAN * !LGORITHMS AND $ATA 3TRUCTURE FOR 2ANGE 3EARCHING !#- #OMPUTING 3URVEYS "ERLINER ( 4HE " TREE 3EARCH !LGORITHM ! "EST &IRST 0ROOF 0ROCEDURE 4ECH 2EP #-5 #! #OMPUTER 3CIENCE $EPT #ARNEGIE -ELLON 5NIVERSITY 0ITTS BURGH "ERZTISS ! $ATA 3TRUCTURES 4HEORY AND PRACTICE A ED !CADEMIC 0RESS .UEVA 9ORK "IRD 2 )MPROVING 0ROGRAMS BY THE )NTRODUCTION OF 2ECURSION #OMM !#- .OTES ON 2ECURSION %LIMINATION #OMM !#- "OOTHROYD * !LGORITHM 3HELLSORT #OMM !#- 3ORT OF A 3ECTION OF THE %LEMENTS OF AN !RRAY BY $ETERMINING THE 2ANK OF %ACH %LEMENT !LGORITHM #OMP * "RILLINGER 0 Y #OHEN $ )NTRODUCTION TO $ATA 3TRUCTURES AND .ON NUMERIC #OMPUTA TION 0RENTICE (ALL %NGLEWOOD #LIFFS . * "ROWN - ! 3TORAGE 3CHEME FOR (EIGHT "ALANCED 4REES )NF 0ROC ,ETT "RUNO * Y #OFFMAN % .EARLY /PTIMAL "INARY 3EARCH 4REES 0ROC )&)0 #ONGRESS .ORTH (OLLAND !MSTERDAM "URKHARD 7 (ASHING AND 4RIE !LGORITHMS FOR 0ARTIAL -ATCH 2ETRIEVAL !#- 4RANS 6OL #ARTER * Y 7EGMAN - 5NIVERSAL #LASSES OF (ASH &UNCTIONS )"- 2ESEARCH 2EPORT 2# 4HOMAS * 7ATSON 2ESEARCH #ENTER 9ORKTOWN (EIGHTS .UEVA 9ORK 5NIVERSAL #LASSES OF (ASH &UNCTIONS 0ROC .INTH !NNUAL !#- 39-0 ON 4HEORY OF #OMPUTING #LAMPETT ( 2ANDOMIZED "INARY 3EARCHING 7ITH 4REE 3TRUCTURES #OMM !#- #OMER $ 4HE 5BIQUITOUS " TREE !#- #OMPUTING 3URVEYS ! .OTE ON -EDIAN 3PLIT 4REES !#- 4RANS 0ROG ,ANG AND 3YS $IJKSTRA % 7 .OTES ON 3TRUCTURED 0ROGRAMMING 3TRUCTURED 0ROGRAMMING !CADEMIC 0RESS .UEVA 9ORK $ )MPERIO - $ATA 3TRUCTURES AND THEIR 2EPRESENTATION IN 3TORAGE !NNUAL 2EVIEW !UTOMATIC 0ROGRAMMING 0ERGAMON 0RESS %LMSFORD .UEVA 9ORK $RISCOLL * Y ,IEN 9 ! 3ELECTIVE 4RASVERSAL !LGORITHM FOR "INARY 3EARCH 4REES #OMM !#- %LSON - $ATA 3TRUCTURES 3CIENCE 2ESEARCH !SSOCIATES 0ALO !LTO #A &INKEL 2 Y "ENTLEY * 1UAD 4REES ! $ATE 3TRUCTURE FOR 2ETRIEVAL ON #OMPOSITE +EYS !CTA )NFORMÈTICA &LORES ) #OMPUTER 3ORTING 0RENTICE (ALL %NGLEWOOD #LIFFS . * Y -ADPIS ' !VERAGE "INARY 3EARCH ,ENGHTS FOR $ENSE /RDERED ,ISTS #OMM !#- &LOYD 2 !LGORITHM 4REESORT #OMM !#-


#*#-*0(3"'Ê"

457

&LOYD 2 !LGORITHM 4REESORT #OMM !#- !LGORITHM 4REESORT #OMM !#- &OSTER # )NFORMATION 3TORAGE AND 2ETRIEVAL 5SING !6, 4REES 0ROC !#- TH .A TIONAL #ONF !#- .UEVA 9ORK ! 'ENERALIZATION OF !6, 4REES #OMM !#- &RAZER 7 Y -C+ELLAR ! 3AMPLESORT ! 3AMPLING !PPROACH TO -INIMAL 3TORAGE 4REE 3ORTING * !#- 'AREY - /PTIMAL "INARY 3EARCH 4REES 7ITH 2ESTRICTED -AXIMAL $EPTH 3)!- * #OMP 'ARSIA ! Y 7ACHS - ! .EW !LGORITHM FOR -INIMUM #OST "INARY 4REES 3)!- * #OMP 'HOSH 3 Y ,UM 6 !NALYSIS OF #OLLISIONS WHEN (ASHING BY $IVISION )NF 3YST 'ILSTAD 2 0OLYPHASE -ERGE 3ORTING !N !DVANCED 4ECHNIQUE 0ROC !&)03 %ASTERN *T #OMP #ONF 'ONNET ' Y 2OGERS , 4HE )NTERPOLATION 3EQUENTIAL 3EARCH !LGORITHM )NF 0ROC ,ETT Y -UNRO * %FlCIENT /RDERING OF (ASH 4ABLES 3)!- * #OMP 'OTLIEB # Y 'OTLIEB , $ATA 4YPES AND $ATA 3TRUCTURES 0RENTICE (ALL %NGLEWOOD #LIFFS .UEVA 9ORK 'REENE $ Y +NUTH $ -ATHEMATICS FOR THE !NALYSIS OF !LGORITHMS "IRKHAUSER "OS TON -ASS 'RIMALDI 2ALPH -ATEMÈTICAS $ISCRETAS Y #OMBINATORIO !DDISON 7ESLEY )BEROAMERI CANA 'UDES % Y 4SUR 3 %XPERIMENTS WITH " TREE 2EORGANIZATION !#- 3)'-/$ 3YMPO SIUM ON -ANAGEMENT OF $ATA 'UIBAS , -C#REIGHT % 0LASS - Y 2OBERTS * ! .EW 2EPRESENTATION FOR ,INEAR ,ISTS 0ROC TH !#- 3YMP 4HEORY OF #OMP .UEVA 9ORK (AREL $ !LGORITHMICS !DDISON 7ESLEY (ARRISON - $ATA 3TRUCTURES AND 0ROGRAMMING 3COTT &ORESMAN 'LENVILLE )LL (ELD ' Y 3TONEBRAKER - " TREES 2E EXAMINED #OMM !#- (IRSCHBERG $ !N )NSERTION 4ECHNIQUE FOR /NE SIDED (EIGHT "ALANCED 4REES #OMM !#- (OARE # 0ARTITION !LGORITHM 1UICKSORT !LGORITHM &IND !LGORITHM #OMM !#- 1UICKSORT #OMP * (OARE # ! 2 .OTES ON $ATA 3TRUCTURING 3TRUCTURED 0ROGRAMMING !CADEMIC 0RESS .UEVA 9ORK Y $AHL / 3TRUCTURED 0ROGRAMMING !CADEMIC 0RESS (OPGOOD & Y $AVENPORT * 4HE 1UADRATIC (ASH -ETHOD 7HERE THE 4ABLE 3IZE IS A 0OWER OF #OMP * (OROWITZ % Y 3AHNI 3 !LGORITHMS $ESIGN AND ANALYSIS #OMPUTER 3CIENCE 0RESS -$ 3 &UNDAMENTALS OF #OMPUTER !LGORITHMS #OMPUTER 3CIENCE 0RESS )NC (U 4 Y 4UCKER ! /PTIMUM #OMPUTER 3EARCH 4REES 3)!- * !PPL -ATH *AIME ! %STRUCTURAS DE )NFORMACIØN -C'RAW (ILL


458

L }À>v > *OYANES !GUILAR , &UNDAMENTOS DE 0ROGRAMACIØN !LGORITMOS Y %STRUCTURAS DE $ATOS -C'RAW (ILL +ARLTON 0 &ULLER 3 3CROGGS 2 Y +ACHLER % 0ERFORMANCE OF (EIGHT "ALANCED 4REES #OMM !#- +NOTT ' (ASHING &UNCTIONS #OMPUTER *OURNAL +NUTH $ 4HE !RT OF #OMPUTER 0ROGRAMMING 6OL &UNDAMENTAL !LGORITHMS 2EAD ING -ASS !DDISON 7ESLEY /PTIMUM "INARY 3EARCH 4REES !CTA )NFORMÈTICA 4HE !RT OF #OMPUTER 0ROGRAMMING 6OL 3ORTING AND 3EARCHING 2EADING -ASS !DDISON 7ESLEY %L !RTE DE 0ROGRAMAR /RDENADORES 6OL !LGORITMOS FUNDAMENTALES %DI TORIAL 2EVERTÏ +OLMAN "ERNARD ET AL %STRUCTURAS DE -ATEMÈTICAS $ISCRETAS PARA LA #OMPUTACIØN 0RENTICE (ALL ,EWIS 4 Y 3MITH - !PPLYING $ATA 3TRUCTURES (OUGHTON -IFmIN "OSTON %STRUCTURAS DE $ATOS 0ARANINFO ,IPSCHUTZ 3 %STRUCTURA DE $ATOS 3ERIE 3CHAUM -C'RAW (ILL -ÏXICO ,ORIN ( ! 'UIDED "IBLIOGRAPHY TO 3ORTING )"- 3YST * ,UCCIO & Y 0AGLI , 1N THE (EIGHT OF (EIGHT "ALANCED 4REES )%%% 4RANS #OMPTRS 0OWER 4REES #OMM !#- ,UCAS 2EYRIN Y 3CHOOL !LGORÓTMICA Y 2EPRESENTACIØN DE $ATOS 6OL 3ECUENCIAS !UTØMATAS DE %STADOS &INITOS -ASSON -ARTIN 7 3ORTING #OMP 3URVEYS -AURER ( Y ,EWIS 4 (ASH 4ABLE -ETHODS #OMP 3URVEYS /TTMANN 4 Y 3IX ( )MPLEMENTING $ICTIONARIES 5SING "INARY 4REES OF 6ERY 3MALL (EIGHT )NFORM 0ROC ,ETTERS $ATA 3TRUCTURES AND 0ROGRAMMING 4ECHNIQUES 0RENTICE (ALL %NGLEWOOD #LIFFS . * Y /TTMANN 4 4REE 3TRUCTURES FOR 3ET -ANIPULATION 0ROBLEMS )N -ATHEMATI CAL &OUNDATIONS OF #OMPUTER 3CIENCE 3PRINGER 6ERLAG .UEVA 9ORK -C#REIGHT % 0AGINATION OF " TREES WITH 6ARIABLE ,ENGHT 2ECORDS #OMM !#- 0RIORITY 3EARCH 4REES 3)!- * OF #OMP -ELHORN + .EARLY /PTIMAL "INARY 3EARCH 4REES !CTA )NFORMÈTICA $YNAMIC "INARY 3EARCH 3)!- * #OMP $ATA 3TRUCTURES AND !LGORITHMS 6OL 3ORTING AND 3EARCHING 3PRINGER 6ERLAG -ILLER 2 0IPPENGER . 2OSENBERG ! Y 3NYDER , /PTIMAL 4REES )"- 2ESEARCH 2EP 2# )"- 2ESEARCH ,AB 9ORKTOWN (EIGHTS .UEVA 9ORK .IEVERGELT * Y 7ONG # /N "INARY 3EARCH 4REES 0ROC )&)0 #ONGRESS .ORTH (OL LAND Y 2EINGOLD % "INARY 3EARCH 4REES OF "OUNDED "ALANCE 3)!- * #OMP "INARY 4REES AND &ILE /RGANIZATION !#- #OMPUTING 3URVEYS 0FALTZ * #OMPUTER $ATA 3TRUCTURES -C'RAW (ILL .UEVA 9ORK 0OHL ) ! 3ORTING 0ROBLEM AND ITS #OMPLEXITY #OMM !#-


#*#-*0(3"'Ê"

459

0RATT 6 3HELLSORT AND 3ORTING .ETWORKS 'ARLAND .UEVA 9ORK 2AIHA + Y :WEBEN 3 !N /PTIMAL )NSERTION !LGORITHM FOR /NE 3IDED (EIGHT "ALANCED "INARY 3EARCH 4REES #OMM !#- 2OSENBERG ! Y 3NYDER , -INIMAL #OMPARISON 4REES 3)!- * #OMPUT 3AXE * Y "ENTLEY * 4RANSFORMING 3TATIC $ATA 3TRUCTURES TO $YNAMIC 3TRUCTURES 2E SEARCH 2EPORT #.53 #3 #ARNEGIE -ELLON 5NIVERSITY 0ITTSBURGH 3CHOOL 0 !LGORÓTMICA Y 2EPRESENTACIØN DE «RBOLES 6OL 2ECURSIVIDADES Y «RBOLES -ASSON 3COWEN 2 1UICKSORT !LGORITHM #OMM !#- 3EDGEWICK 2 1UICKSORT 2EPORT .O 34!. #3 $EPT OF #OMPUTER 3CIENCE 3TANFORD 5NIVERSITY #A 4HE !NALYSIS OF 1UICKSORT 0ROGRAMS !CTA )NFORMÈTICA )MPLEMENTING 1UICKSORT 0ROGRAMS #OMM !#- 3HELL $ ! (IGHSPEED 3ORTING 0ROCEDURE #OMM !#- /PTIMIZING /PTIMIZING THE 0OLYPHASE 3ORT #OMM !#- 3HNEIDERMAN " 0OLYNOMIAL 3EARCH 3OFTWARE 0RACTICE AND %XPERIENCE *UMP 3EARCHING ! &AST 3EQUENTIAL 3EARCH 4ECHNIQUE #OMM !#- 3INGLETON 2 !N %FlCIENT !LGORITHM FOR 3ORTING WITH -INIMAL 3TORAGE !LGORITHM #OMM !#- 3PRUNGNOLI 2 0ERFECT (ASHING &UNCTIONS ! 3INGLE 0ROBE 2ETRIEVING -ETHOD FOR 3TATIC 3ETS #OMM !#- 3TEPHENSON # ! -ETHOD FOR #ONSTRUCTING "INARY 3EARCH 4REES BY -AKING )NSERTIONS AT THE 2OOT )"- 2ESEARCH 2EPORT 2# 4HOMAS 7ATSON 2ESEARCH #ENTER 9ORK TOWN (EIGHTS .UEVA 9ORK 4ANNER 2 -INIMEAN -ERGING AND 3ORTING !N !LGORITHM 3)!- * #OMP 4ENENBAUM ! Y !UGENSTEIN - %STRUCTURAS DE $ATOS EN 0ASCAL 0RENTICE (ALL (IS PANOAMERICANA 4REMBLAY * Y 3ORENSON 0 !N )NTRODUCTION TO $ATA 3TRUCTURES WITH !PPLICATIONS -C 'RAW (ILL .UEVA 9ORK 6AN %MDEN . )NCREASING %FlCIENCY OF 1UICKSORT #OMM !#- 6UILLEMIN * ! 5NIFYING LOOK AT $ATA 3TRUCTURES #OMM !#- 7ALKER 7 Y 'OTLIEB # ! 4OP $OWN !LGORITHM FOR #ONSTRUCTING .EARLY /PTIMAL ,EX ICO GRAPHIC 4REES 'RAPH 4HEORY AND #OMPUTING !CADEMIC 0RESS .UEVA 9ORK 7ILLIAMS * (EAPSORT !LGORITHM #OMM !#- 7IRTH . !LGORITHMS $ATA 3TRUCTURES 0ROGRAMS 0RENTICE (ALL %NGLEWOOD #LIFFS . * !LGORITMOS %STRUCTURAS DE $ATOS 0ROGRAMAS %DICIONES DEL #ASTILLO !LGORITMOS Y %STRUCTURAS DE $ATOS 0RENTICE (ALL (ISPANOAMERICANA 7ULF 7 3HAW - (ILlNGER 0 Y &LON , &UNDAMENTAL 3TRUCTURES OF #OMPUTER 3CIENCE !DDISON 7ESLEY 2EADING -ASS 9AO ! 1N 2ANDOM 4REES !CTA )NFORMÈTICA



',/3!2)/ «RBOL %STRUCTURA JERÈRQUICA APLICADA SOBRE UNA COLECCIØN DE OBJETOS LLAMADOS NODOS EN LA QUE UNO DE ELLOS SE CONOCE COMO NODO RAÓZ Y CUYAS RELACIONES ENTRE NODOS SE IDENTIlCAN COMO PADRE HIJO HERMANO ETCÏTERA «RBOL ABARCADOR %S UN ÈRBOL LIBRE QUE CONECTA TODOS LOS VÏRTICES DE 6 «RBOL BALANCEADO #ONOCIDO TAMBIÏN COMO ÈRBOL !6, ES UN ÈRBOL BINARIO DE BÞS QUEDA EN EL CUAL PARA TODO NODO DEL ÈRBOL LA ALTURA DE LOS SUBÈRBOLES IZQUIERDO Y DERECHO NO DEBE DIFERIR EN MÈS DE UNA UNIDAD «RBOL BINARIO «RBOL EN EL CUAL CADA NODO PUEDE TENER HASTA DOS DESCENDIENTES DIRECTOS Y CUYAS RAMAS ESTÈN ORDENADAS «RBOL DE BÞSQUEDA 6ÏASE TRIE «RBOL MULTICAMINOS «RBOL EN EL QUE CADA NODO PUEDE TENER MÈS DE DOS DESCENDIENTES DIRECTOS Y CUYAS RAMAS ESTÈN ORDENADAS !RREGLO #OLECCIØN lNITA HOMOGÏNEA Y ORDENADA DE ELEMENTOS !RREGLO DE . DIMENSIONES !QUEL EN EL CUAL CADA UNO DE SUS ELEMENTOS DEBE IDENTIl CARSE POR N ÓNDICES QUE MARQUEN SU POSICIØN EXACTA DENTRO DEL ARREGLO !RREGLOS PARALELOS %STRUCTURA FORMADA POR DOS O MÈS ARREGLOS CUYOS ELEMENTOS SE CORRESPONDEN POR LO GENERAL EN RELACIØN DE UNO A UNO "OSQUE #ONJUNTO ORDENADO DE UNO O MÈS ÈRBOLES "ÞSQUEDA /PERACIØN QUE PERMITE RECUPERAR DATOS PREVIAMENTE ALMACENADOS AUNQUE ESTA OPERACIØN PUEDE RESULTAR EN FRACASO SI NO SE ENCUENTRA EL DATO BUSCADO "ÞSQUEDA EXTERNA !QUELLA EN LA QUE TODOS LOS DATOS SE ENCUENTRAN EN ARCHIVOS RESI DENTES EN DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO TALES COMO DISCOS CINTAS ETCÏTERA "ÞSQUEDA INTERNA ,A QUE SE REALIZA CON LOS DATOS RESIDENTES EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA #AMINO 5N CAMINO 0 DE LONGITUD N DESDE UN VÏRTICE V A UN VÏRTICE W SE DElNE COMO LA SECUENCIA DE N VÏRTICES QUE SE DEBE SEGUIR PARA LLEGAR DEL NODO ORIGEN AL NODO DESTINO #OLA ,ISTA DE ELEMENTOS EN LA CUAL LA EDICIØN DE ELEMENTOS SE LLEVA A CABO POR UN EXTRE MO Y LA ELIMINACIØN SE REALIZA POR OTRO #OLISIØN ,A QUE SE ORIGINA AL UTILIZAR UNA FUNCIØN HASH CUANDO DOS O MÈS DATOS CON DISTINTAS CLAVES TIENEN LA MISMA DIRECCIØN DE MEMORIA


462

Ã>À #ONJUNTO %S UN DATO ESTRUCTURADO INTEGRADO POR UN GRUPO DE OBJETOS DEL MISMO TIPO AUNQUE EL TIPO SØLO PUEDE SER ENTERO CARÈCTER ENUMERADO O RANGO $ATO ESTRUCTURADO %STÈ FORMADO POR VARIOS COMPONENTES CADA UNO DE LOS CUALES PUE DE SER A SU VEZ UN DATO ESTRUCTURADO 4ODOS LOS COMPONENTES DE UN DATO ESTRUCTURADO SE IDENTIlCAN CON EL MISMO NOMBRE $ATO SIMPLE !QUEL QUE HACE REFERENCIA A UN ÞNICO VALOR A LA VEZ Y QUE OCUPA UNA CASILLA DE MEMORIA %STRUCTURA DINÈMICA DE DATOS !QUELLA QUE PERMITE LA ASIGNACIØN DE ESPACIO EN ME MORIA DURANTE LA EJECUCIØN DE UN PROGRAMA CONFORME LO REQUIERAN LAS VARIABLES DE ÏSTE COMO LOS ÈRBOLES Y LAS LISTAS &)&/ )NICIALES DE LA EXPRESIØN EN INGLÏS &IRST )N &IRST /UT EL PRIMERO EN ENTRAR ES EL PRIMERO EN SALIR QUE INDICAN EL ORDEN DE INSERCIØN Y ELIMINACIØN DE LOS ELEMENTOS DE UNA COLA &UNCIØN HASH !QUELLA QUE PERMITE TRANSFORMAR UNA CLAVE EN UNA DIRECCIØN DE MEMO RIA 'RÈlCA COMPLETA 3E DICE QUE UNA GRÈlCA ES COMPLETA SI CADA VÏRTICE V DE ' ES ADYA CENTE A TODOS LOS DEMÈS VÏRTICES DE ' 'RÈlCA CONEXA 3E DICE QUE UNA GRÈlCA ES CONEXA SI EXISTE UN CAMINO SIMPLE ENTRE DOS DE SUS NODOS CUALESQUIERA 'RÈlCA DIRIGIDA 3E CARACTERIZA PORQUE SUS ARISTAS TIENEN ASOCIADA UNA DIRECCIØN 'RÈlCA ETIQUETADA 3E DICE QUE UNA GRÈlCA ' ESTÈ ETIQUETADA SI SUS ARISTAS TIENEN ASIG NADO UN VALOR 'RÈlCAS %STRUCTURAS DE DATOS QUE PERMITEN REPRESENTAR DIFERENTES TIPOS DE RELACIONES ENTRE LOS OBJETOS 'RÈlCAS NO DIRIGIDAS 3U CARACTERÓSTICA PRINCIPAL ES QUE SUS ARISTAS SON PARES NO ORDE NADOS DE VÏRTICES ¶NDICE )NDICADOR QUE SE×ALA LA POSICIØN DE UN COMPONENTE EN UN DATO ESTRUCTURADO ,)&/ )NICIALES DE LA EXPRESIØN EN INGLÏS ,AST )N &IRST /UT EL ÞLTIMO EN ENTRAR ES EL PRIMERO EN SALIR QUE INDICAN EL ORDEN DE INSERCIØN Y ELIMINACIØN DE LOS ELEMENTOS DE UNA PILA ,ISTA #OLECCIØN DE ELEMENTOS LLAMADOS NODOS CUYO ORDEN SE ESTABLECE POR MEDIO DE PUNTEROS ,ISTA CIRCULAR !QUELLA EN LA QUE SU ÞLTIMO ELEMENTO APUNTA AL PRIMERO ,ISTA DOBLEMENTE LIGADA #OLECCIØN DE ELEMENTOS LLAMADOS NODOS EN LA CUAL CADA NODO TIENE DOS PUNTEROS UNO APUNTANDO AL NODO PREDECESOR Y EL OTRO AL NODO SUCESOR ,ISTA INVERTIDA ,ISTA QUE CONTIENE LAS CLAVES DE LOS ELEMENTOS QUE POSEEN UN DETER MINADO ATRIBUTO LO CUAL FACILITA LA BÞSQUEDA DE LOS ELEMENTOS QUE POSEAN DICHO ATRIBUTO -ATRIZ %STRUCTURA DE DATOS QUE PERMITE ORGANIZAR LA INFORMACIØN EN RENGLONES Y COLUM NAS %S UN ARREGLO BIDIMENSIONAL -ÏTODO DE BÞSQUEDA 3E CARACTERIZA POR EL ORDEN EN EL CUAL SE EXPANDEN LOS NODOS -ÏTODOS DE BÞSQUEDA BREADTH lRST 3E EXPANDEN LOS NODOS EN EL ORDEN EN QUE HAN SIDO GENERADOS -ÏTODOS DE BÞSQUEDA DEPTH lRST 3E EXPANDEN LOS NODOS GENERADOS MÈS RECIENTEMEN TE -ULTIGRÈlCA 5NA GRÈlCA SE DENOMINA MULTIGRÈlCA SI AL MENOS DOS DE SUS VÏRTICES ESTÈN CONECTADOS POR DOS ARISTAS


(-04"3*0

463

-ULTILISTA %STRUCTURA QUE PERMITE ALMACENAR EN UNA O VARIAS LISTAS LAS DIRECCIONES DE LOS ELEMENTOS QUE POSEEN UNO O MÈS ATRIBUTOS ESPECÓlCOS LO CUAL FACILITA SU BÞS QUEDA .OTACIØN INlJA 3E DICE QUE UNA EXPRESIØN ARITMÏTICA TIENE NOTACIØN INlJA CUANDO SUS OPERADORES ESTÈN ENTRE LOS OPERANDOS POR EJEMPLO ! " .OTACIØN POSTlJA 3E DICE QUE UNA EXPRESIØN ARITMÏTICA TIENE NOTACIØN POSTlJA CUANDO SUS OPERADORES ESTÈN AL lNAL DE LOS OPERANDOS POR EJEMPLO !" .OTACIØN PRElJA 3E DICE QUE UNA EXPRESIØN ARITMÏTICA TIENE NOTACIØN PRElJA CUANDO SUS OPERADORES ESTÈN AL INICIO DE LOS OPERANDOS POR EJEMPLO !" /RDENACIØN EXTERNA %N ESTA FORMA DE ORDENACIØN LOS DATOS SE TOMAN DE ARCHIVOS RE SIDENTES EN DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO TALES COMO DISCOS CINTAS ETCÏTERA /RDENACIØN INTERNA 3E APLICA EN LA ORDENACIØN DE ARREGLOS Y SE REALIZA CON TODOS LOS DATOS DE ÏSTOS ALOJADOS EN LA MEMORIA PRINCIPAL DE LA COMPUTADORA /RDENAR /RGANIZAR UN CONJUNTO DE DATOS U OBJETOS EN UNA SECUENCIA ESPECÓlCA POR LO GENERAL ASCENDENTE O DESCENDENTE 0ILA ,ISTA DE ELEMENTOS A LA CUAL SE PUEDE INSERTAR O ELIMINAR ELEMENTOS SØLO POR UNO DE SUS EXTREMOS 0UNTERO $ATO QUE ALMACENA UNA DIRECCIØN DE MEMORIA EN DONDE SE ALMACENA UNA VARIABLE 2ECURSIØN (ERRAMIENTA DE PROGRAMACIØN QUE PERMITE DElNIR UN OBJETO EN TÏRMINOS DE ÏL MISMO 2EGISTRO %S UN DATO ESTRUCTURADO EN EL CUAL SUS COMPONENTES PUEDEN SER DE DIFERENTES TIPOS INCLUSO REGISTROS O ARREGLOS 4ODOS SUS COMPONENTES SE IDENTIlCAN CON UN NOMBRE 2EPRESENTACIØN LINEAL DE ESTRUCTURAS NO LINEALES 0ROCEDIMIENTO PARA CONVERTIR LOS ÓNDICES DE CADA UNO DE LOS ELEMENTOS DE ARREGLOS DE DOS O MÈS DIMENSIONES EN UNA POSICIØN ESPECÓlCA DENTRO DE UN ARREGLO DE UNA DIMENSIØN 3OLUCIØN DE COLISIONES #ONSISTE EN REUBICAR UN DATO CUYA DIRECCIØN CALCULADA POR UNA FUNCIØN HASH YA HAYA SIDO UTILIZADA POR OTRO DATO 4RIE «RBOL EN EL QUE LA INFORMACIØN DE CADA NODO ES COMÞN A TODOS SUS SUCESORES



·.$)#% !.!,·4)#/ !NÈLISIS DE ElCIENCIA DEL MÏTODO DE INSERCIØN BINARIA DE INSERCIØN DIRECTA DE INTERCAMBIO DIRECTO DE LA SACUDIDA DE SELECCIØN DIRECTA DE 3HELL DEL MONTÓCULO QUICKSORT !NÈLISIS DE LA BÞSQUEDA BINARIA SECUENCIAL !NÈLISIS DEL MÏTODO POR TRANSFORMACIØN DE CLAVES «RBOLES BALANCEADOS DE BÞSQUEDA REESTRUCTURACIØN DE BINARIOS DE BÞSQUEDA RECORRIDOS EN REPRESENTACIØN DE EN MEMORIA CARACTERÓSTICAS Y PROPIEDADES DE LOS EN GENERAL MULTICAMINOS !RISTAS !RREGLOS ACTUALIZACIØN DE LOS ASIGNACIØN DE LOS BIDIMENSIONALES DECLARACIØN DE OPERACIONES CON COMBINACIONES ENTRE REGISTROS Y DE LISTAS

DE MÈS DE DOS DIMENSIONES DElNICIØN DE DE REGISTROS USO DE DESORDENADOS DIFERENCIAS ENTRE REGISTROS Y EJEMPLOS DE ESCRITURA DE LOS MULTIDIMENSIONALES OPERACIONES CON ORDENADOS PROCESO DE LECTURA DE LOS PARALELOS CONCEPTO DE USO DE

"ÞSQUEDA ÈRBOLES DE BINARIA DINÈMICA POR TRANSFORMACIØN DE CLAVES EN ARCHIVOS SECUENCIALES EXTERNA INTERNA SECUENCIAL POR TRANSFORMACIØN DE CLAVES DINÈMICA

#OLAS APLICACIONES DE CIRCULARES DElNICIØN DE DOBLES


466

` ViÊ> > Ì V OPERACIONES CON REPRESENTACIØN DE #ONJUNTOS #ONSTRUCCIØN DEL ÈRBOL ABARCADOR DE COSTO MÓNIMO

$ATOS ESTRUCTURADOS SIMPLES BOOLEANOS CARACTERES ENTEROS ENUMERADOS REALES SUBRANGOS $ESBORDAMIENTO OVERmOW $IJKSTRA ALGORITMO DE

%SPACIO ESTADO MÏTODO DE BÞSQUEDA EN

&)&/ &IRST )N &IRST /UT &LOYD ALGORITMO DE

'RÈlCAS CONCEPTOS BÈSICOS DE LAS DElNICIØN DE DIRIGIDAS DElNICIØN DE REPRESENTACIØN DE NO DIRIGIDAS ALGUNOS CONCEPTOS SOBRE DElNICIØN REPRESENTACIØN DE

)NTERCALACIØN DE ARCHIVOS

+RUSKAL ALGORITMO DE

,)&/ ,AST )NPUT &IRST /UTPUT ,ISTAS APLICACIONES CIRCULARES DElNICIØN DE

DOBLEMENTE LIGADAS OPERACIONES CON INVERTIDAS SIMPLEMENTE LIGADAS OPERACIONES CON ,ISTAS INVERTIDAS ,ONGITUD DE CAMINO INTERNO EXTERNO

-ATRICES CUADRADAS POCO DENSAS POCO DENSAS DElNICIØN DE SIMÏTRICA Y ANTISIMÏTRICA TRIANGULAR INFERIOR TRIANGULAR SUPERIOR TRIDIAGONAL -ÏTODOS DE BÞSQUEDA EN ESPACIO ESTADO "READTH &IRST $EPTH &IRST -ÏTODOS DE ORDENACIØN -ULTILISTAS

/BTENCIØN DE CAMINOS DENTRO DE UNA DIGRÈlCA /RDENACIØN DE ARCHIVOS EXTERNA INTERNA POR EL MÏTODO DE LA SACUDIDA SHAKER SORT POR EL MÏTODO DE INSERCIØN BINARIA POR EL MÏTODO DE INTERCAMBIO DIRECTO CON SE×AL POR EL MÏTODO DE MEZCLA EQUILIBRADA POR EL MÏTODO DE 3HELL POR EL MÏTODO HEAPSORT MONTÓCULO POR EL MÏTODO QUICKSORT POR INSERCIØN DIRECTA POR INTERCAMBIO DIRECTO BURBUJA POR MEZCLA DIRECTA POR SELECCIØN DIRECTA /RDENAR


Ê/%*$& "/"-Ê5*$0 0ILAS APLICACIONES DE LAS OPERACIONES CON REPRESENTACIØN DE 0RIM ALGORITMO DE 0ROBLEMA DE LAS 4ORRES DE (ANOI EL

ACCESO A LOS CAMPOS DE UN ANIDADOS COMBINACIONES ENTRE ARREGLOS Y CON ARREGLOS DElNICIØN DE 2ESOLUCIØN DE PROBLEMAS

2ECURSIØN O RECURSIVIDAD CASOS INTERESANTES DE DElNICIØN DE DIRECTA FUNCIONAMIENTO INTERNO DE LA INDIRECTA USO DE LAS PILAS PARA SIMULAR 2EGISTROS

3UBDESBORDAMIENTO UNDERmOW

6ÏRTICES

7ARSHALL ALGORITMO DE

467



Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.