Está en la página 1de 54

01.01IngenieradeSoftware Definicin:Unmtododisciplinadoparaeldiseoymantenimientodelosprogramasde computadoras,utilizandoherramientasqueayudenamanejareltamaoyla complejidaddelosproductosdesoftwareresultantes. Definicin:Eselreadelacienciainformticaquetrataelanlisis,diseoe implementacindesistemasdesoftware. 01.02Elciclodevidaclsicodeunsistemadesoftware. Periododetiempoquecomienzaalconcebirlaideadeunnuevosistemadesoftware,y terminacuandoesteseretiraydejadefuncionar. 1.Definelasactividadesallevarseacaboenunproyectodedesarrollodesistemas. 2.Logracongruenciaentrelamultituddeproyectosdedesarrollodesistemasenuna organizacin. 3.Proporcionapuntosdecontrolyrevisinadministrativosdelasdecisionessobre continuaronounproyecto.

(Fasesdelciclodevidadecascada) 01.02.01AnlisisyEspecificacindeRequerimientos. Elobjetivoprimordialesrelevar,documentaryespecificarlos requerimientosdelsistemadesoftware,teniendoespecialmenteencuentaelcontextoy elenfoquedelusuario.Elresultadofinalesundetalleformalizadodelosobjetivos, prioridadesyrestriccionesdelsistemadesoftwareadesarrollar.Incluyelosestudiosde factibilidadyriesgodelproyecto,ascomoelanlisisdecostodelsistema. 01.02.02DiseoyEspecificacindelSistema. Sedefinecomollegaralosobjetivosdefinidosdurantelaetapadeanlisisy especificacinderequerimientos.Existendosnivelesdediseodelsistemade software: 1.Concepcindelaarquitecturadelsistema,queincluyeladefinicindelsoportefsico delcontextoylasubdivisinfuncionaldelsistemaenmdulos. 2.Refinamientodelaespecificacindecadaunodelosmdulosysuinterfazde comunicacinentremdulosyconelusuario. Ladocumentacindeldiseoyespecificacincombinaelementosgrficosyformales, aproximndoseaunacodificacindealtonivel.

01.02.03CodificacinyVerificacindelosmdulos.Tiposdeerrores,tratamiento ypropagacin,manejodeexcepciones Produccinefectivadelcdigodecadaunodelosmdulosylapruebafuncionaldelos mismoscondatosquerepresentanlaoperatorianormaldelsistema.

01.02.04IntegracinyPruebaGlobaldelSistema. Losmdulosdesarrolladosyprobadosindependientementedebenacoplarseenun sistemanicoyrealizarunapruebafuncional(dinmica)conelsistemaensuambiente real,afindellegaralaentregadefinitivadelsistemaalusuario. Eneldocumentoderequerimientossedefinelametodologaparaprobarqueel sistemadesarrolladosatisfacelosobjetivosdelusuario.Seestablecencondiciones contractualesenelmomentodelapruebaglobaldelsistema. 01.02.05MantenimientodelSistema. Lostresaspectos(erroresenlaconcepciny/odesarrollodelsistema,modificaciones apedidodelusuarioycrecimientodelasespecificacionesiniciales)producenun impactoimportanteenlasprestacionesyenelcostodefuncionamientodelsistema.La calidaddelametodologayherramientasempleadasparadisearydesarrollarel softwarecondicionarfuertementelafacilidadyelcostodemantenimientodelmismo. 01.02.06TiemposycostosrequeridosporlasetapasdelCiclode Vida. a.Loserroresymodificacionessehacenmscostososamedidaqueestamosms avanzadoseneldesarrollodeunsistema. b.Enlaetapatradicionaldeprogramacinyprueba,seinviertemenosdel15%del tiempoycostodedesarrollo,eslafasemsfcilmenteautomatizableyconmanode obramenosespecializada. c.Laactividadcreativaeseldiseo,seoptanporalternativasdeacuerdoalos conocimientosdelespecialistadesoftware.Representaun25%delcostoyesfuerzode desarrollo. d.Paradisminuirelnmeroycostodeerroresymodificacionesenelsistemaenun futuro,sedebecontarconunacomprensindelambienteyactividaddelusuarioenla etapadelanlisisderequerimientos. e.Elusuariodebeparticipartantoenlaespecificacinderequerimientoscomoenlas pruebasparcialesyfinalesdelsistema.Suintervencinpermiteajustarelmodelo desarrolladoalcontextorealmuchomsrpidamente. f.Laetapademantenimientodelossistemasdesoftwareescostosaydecosto crecienteeneltiempo,seestimaun35%deesfuerzoycosto.

01.03Especificacin,codificacinypruebadealgoritmos. Sedebecomprenderlosalcancesyelmodocorrectodedesarrollarprogramas eficientesyverificables.Paraverificarlacorreccindeberchequearelcumplimientode laespecificacinrealizadaapriori.Sedebetenerpresenteentodomomentolo especificadoparacadamdulodesoftwareadesarrollar. 01.04Elmtododerefinamientosucesivo. Seutilizaunametodologaquevadelogeneral(concepcindelsistema,anlisisdel

algoritmoglobal,definicindelasestructurasdedatosnecesarias)aloparticular (desarrollodecadaunodelosmdulosquecomponenelsistema,ajustedecadauno delosalgoritmos,restriccionesenlosdatos). 01.04.01Ocultacindelainformacin. Elconceptodeocultacindelainformacinseimplementaenel desarrollodealgoritmos,mediantetcnicasdediseosdescendentes,modulares.La tcnicadeldiseodescendenterefuerzalaincorporacindelaocultacindela informacinenlaaplicacin,separandolafuncindelprogramaennivelesbien definidosdeabstracciones.Definiendolafuncindeunprocedimientoabajonivelysus especificacionesdeinterface,elprogramadorpuedeolvidarsedecmoelmdulo realizasufuncinabajonivel. 01.04.02NivelesdeAbstraccin. Conlaabstraccin,elprogramadorveslolosdetallesqueson importantesenunnivelparticulardeldiseo.Laabstraccinevitalaviolacindela lgicadeldiseodelprogramayreducelasposibilidadesdeerroralolargodetodoel programa. Laabstraccinyocultacindelainformacinseimplementaneneldiseodedatos medianteelencapsulamientodedatos.Elusuariononecesitasabercmolaestructura serepresentaenmemorialoellaslonecesitantenerencuentaelconjuntode funcioneslgicasqueoperansobrelaestructura.Seutilizaunacajanegra:enel exteriordelacajanegraestelnombredeltipoyunalistadesusoperaciones.Enel interiordelacajanegraestnlosdetallesdelarepresentacindelelementodedatosy laimplementacindelasoperacionessobrel.Elusuarioslopuedeverelexteriorde lacaja. Elobjetivoesreducirlacomplejidadmediantelaabstraccin.Lostiposabstractosde datossolopuedensimularseenPascal,puestoquenohayformadehacercumplirla prohibicindeunaccesodirectoalosdatos.

01.05Nocindeparadigmadeprogramacin. Paradigmaprocedural/imperativo:codificacindealgoritmosmedianteinstrucciones queseejecutansecuencialmente,siguiendounalneadecontrolnica.Asumeuna arquitecturadeejecucindelosalgoritmosqueescapazdeseleccionarlainstruccin siguiente,interpretarlayejecutarla.SeladenominaVonNeumannenrelacinconel esquemaclsicodeloscomputadoresdigitales. Existenotrosparadigmasdeprogramacin,cadaparadigmasignificaunmododiferente deanalizaryespecificarlosalgoritmosyclasesdelenguajesdeprogramacindistintos.

01.06Aspectosimportantesdelossistemasdesoftware. Laingenieradesoftwaredebeelaborarproductosquesonsistemasdesoftware.Los

sistemasdesoftwarepuedensufrircambiosalolargodeltiempo,estoscambios provocanunimpactoenelmantenimientodelproductodesoftware.Sedebeponer nfasisenlacalidaddelsoftware. Lacalidadesmsdifcildemedirqueladeunproductoconvencional,losaspectosque hacenalacalidaddelmismoson:correccin,verificabilidad,confiabilidad,interfaz amigable,facilidaddemantenimiento,reusabilidad,portabilidad. 01.06.01Correccin. Seintentaestablecerunaequivalenciamatemticaentrelaespecificacinyel funcionamientodelsoftware.Significaquerespondeexactamentealoespecificado. 01.06.02Verificabilidad. Sedeberealizarunapruebaparademostrarlaverificabilidaddeunsoftware,mediante metodologasytcnicasadecuadas(documentacin,modularizacin,definicin correctadelosdatos,entreotras).Esunatributoquehacealacalidadinternadel producto,peropuedeserexternaalserexigidaporelusuarioparaprobardeterminadas condicionesdefuncionamiento. 01.06.03Confiabilidad. Semideeltiempomedioentrefallasdeunsistemadesoftware.Cuantomayorseaese tiempo,seconsideramsconfiable.Esunatributodecalidadimportanteparael usuario. Lacorreccinfuncionalencondicionesnormalesnoaseguraquealolargodelciclode vidanoaparezcanerroresderivadosdecambiosenlascondicionesdecontexto.Las modificacionesyampliacionesgeneralmenteestnacompaadasporuncrecimiento enlasfallasdefuncionamiento.

01.06.04Eficiencia. Serefierealusodelosrecursosdelosmdulosdelsistemadesoftware.Laeficiencia delosalgoritmossemideporeltiempodeejecucinylamemoriaquerequieren.Hay casosdondelaeficienciaescrticaparasatisfacerlosrequerimientosdelusuario. 01.06.05Interfazamigable Lacomunicacinentreelsistemayelusuariodebeserfcildecomprenderyutilizar. 01.06.06Facilidaddemantenimiento Seutilizantcnicasdeanlisisydiseodelsoftwarequehaganclaro,fcilde comprenderydemodificaralmismo.Serefieretantoalaspectocorrectivodeposibles fallascomoalmantenimientoadaptivoyperfectivo,relacionadoconnuevos requerimientossobreunsistemayaoperativo. Semideeneltiempoquerequieredelaorganizacindesoftwareelajustedelsistema amodificacionesycambios.

01.06.07Reusabilidad. Serefierealgradodegeneralidaddelasolucinysuadaptabilidadparaelresocon nuevosusuarios,mejoralarentabilidaddelaorganizacinquedesarrollasistemasde software. 01.06.08Portabilidad. Sonaquellosqueseadaptanaloscambiosdecontexto(diferentessistemas operativos,arquitecturasdemquinas,caractersticasdelasmquinas,etc.),con mnimoscambiosenelsoftware.Exigeunmayoresfuerzodedesarrolloperoaumenta larentabilidaddelaorganizacindesoftware.

02.01TiposSimples 02.01.01TipoEntero(INTEGER)TipoReal(REAL)TipoCarcter(CHAR) TipoLgico (BOOLEAN). INTEGER: Loselementossondeltipo:,3,2,1,0,1,2,3, Lacantidaddevaloresquesepuedenrepresentardependedelacantidaddebitsque seutilicenpararepresentarunentero.Pascalutilizaunrangode215. REAL: Esunaclasededatonumricoquepermiterepresentarnmerosdecimales.Los valoresfraccionariosformanunaserieordenada,desdeunvalormnimonegativo,hasta unvalormximodeterminadoporlanormaIEE754,losvaloresnoestndistribuidosde manerauniformeeneseintervalo. Tieneunarepresentacinfinitadelosnmerosreales,tieneunaprecisinfija:un nmerofijodedgitossignificativos.Larepresentacindeltipodedatorealestlimitada porelespacioenmemoriadisponible. Larepresentacinparanmerosrealessedenominacomaflotante.Esuna generalizacindelanotacincientfica,consisteendefinircadanmerocomouna mantisa(partedecimal)yunexponente(posicindelacoma). BOOLEAN: Esundatoquepuedetomarunvalorentreunconjuntopordosposibles:TrueoFalse. Seutilizapararepresentardosalternativasaunacondicin. Operacionesposibles:negacin(not),conjuncin(and),disyuncin(or). CHAR: Contieneunsoloelementocomovalor.Puedetomarunvalordentrodelconjuntode

elementosestablecidoynormalizadoporunestndarllamadoASCII(American StandardCodeforInformationInterchange),estableceelordendeprecedenciadelos mismos.Puedenserletras,nmerosysmbolosespecialesdisponibleseneltecladoy algunoselementosgraficos. Operaciones: Igual,distinto,menor,mayor,menoroigual,mayoroigual.Secomparadeacuerdocon elnumerodeordendeloscaracteres. 02.01.02Tiposordinales Cuandoloselementossonordenadosdiscretamente,esdecir,paracadaelementoque espartedeltipoexisteunelementoanterioryotroposterior,seconsiderauntipode datoordinal.Ej:CHAR,BOOLEAN,INTEGER. Puedenserutilizadascomovariabledecontrolenunaestructuradecontroldetipo for. 02.01.03Tiposdefinidosporelusuario TipoEnumerado Songruposdevaloresnombrados,ej:tipoenumeradodemeses,colores,etc. Losidentificadoresdeunenumeradosonconstantessimblicas,enPascalnopuede aparecerunamismaconstantesimbolicaendosenumeradosdistintos. LasoperacionesquesepuedenrealizarenPascalsonasignacinycomparacin,no sepuederealizarentradaysalida. LasfuncionespredefinidasenPascalsonlasmismasqueparalostiposordinales:ord, succ,pred. TipoSubrango Untipodedatosubrangoesuntipoordinal,queconsisteenunasecuenciacontiguade valoresdealgntipoordinal(llamadotipobasedelsubrango).Declaracion:subrango= inferior..superior.Eltipobasedebeserordinal. TipoConjunto Unconjuntoesunacoleccindedatossimples,todosdelmismotipo. Lasoperacionesyfuncionespredifinidassonlasmismasquelasdesutipobase.En Pascal,elnumeromximodeelementosestaacotadoa256.Declaracion:conjunto= setoftipo_ordinal. Seasignanavariablesdetipoconjunto.Ej:[el1,el2,,elM].Conjuntovacio:[].Se puedenasignarsubrangos:[a..z],encasodeespecificarvaloresdeunconjuntocomo unsubrangodondelosvaloresestnenordeninverso,seconsideravacio:[z..a] Elconjuntonopuedetenerelementosrepetidos. Lasoperacionespermitidas:unin(+),interseccin(*),diferencia(),pertenencia(in,da comoresultadounvalorboolean).

TipoString Tipodedatostringesunasucesindecaracteresquesealmacenanenunrea contiguadelamemoriayquepuedeserledooescrito.Representaundatodetamao dadoqueresultadelaconcatenacindeloscaracteresqueloforman.Declaracion: variable=string[longitud].EnPascalunStringcontieneunmximode255caracteres debidoasuimplementacin. Operaciones:asignacinyconcatenacinlosoperadoreslgicos=,<>,<,>,<=,>=. Comparanlongitudeigualdaddesmbolo,enelmismoorden,deacuerdoasu aparicin.Ej:pi>peporqueelordendeiesmayorqueeldee. 02.02TiposEstructurados. Unaestructuradedatosesunconjuntodevariables(nonecesariamentedelmismo tipo)relacionesentresidediversasformas.Unaestructuradedatoseshomogneasi losdatosquelacomponensontodosdelmismotipo,esheterogeneasilosdatosquela componensondedistintotipo.Esestaticasilacantidaddeelementosquecontienenes fija,esdecir,lacantidaddememoriaqueseutilizanovariadurantelaejecucindel programa.Esdinmicasielnumerodecomponentes(yusodememoria)puedevariar durantelaejecucindeunprograma. 02.02.01TipoRegistro(RECORD) Agrupandatosdediferentesclasesyconunaconexinlgicaenunaestructuranica. Esunconjuntodevalores,contrescaractersticasbsicas: 1.Losvalorespuedenserdedistintotipoestoconvierteaunregistroenunaestructura heterogenea. 2.Losvaloresalmacenadosenunregistrosonllamadoscampos,cadaunodeellos tieneunidentificadorloscampossonnombradosindividualmente,comovariables ordinarias. Seconstruyenidentificandoaltipocomoregistroyespecificandoelnombreytipode camposindividuales,puedensercampospredefinidosodefinidosporelusuario, simplesoestructurados. Ej: TYPE unRegistro=RECORD unCampo:String otroCampo:integer end Accesoaloscampos:Sepuedecalificarelcampo,esdecir,especificartantoelnombre delregistrocomoeldelcampoalquesedeseahacerreferencia.EnPascal: variable.campo Anidamientoderegistros:puedenhacerseanidamientos,unregistropuedeserasuvez

otroregistro,realizandotantascalificacionescomoseannecesariashastaaccederal campo. Operaciones:sepuedenrealizaraquellasdefinidassegnelcampodelregistroquese utilice.Laasignacinsepuederealizarsobretodounregistro,silasvariablesutilizadas enlaoperacinsondelmismotiporegistro.Nopuedenrealizarsecomparaciones racionalesentreregistroscompletos,sedebeevaluarcadacampoporseparado. With:permitequeunregistroseanombradounavez,yluegoseaaccedido directamente. 3.Elalmacenamientoocupadoporunregistroesfijoporesto,unregistroesuna estructuraesttica. Registrosconpartevariante Unregistro variantepermitecolocardiferentescamposdelregistroenunmismobloque dememoria,aestebloquedememoriaseleconocecomopartevariantedelregistroy siempresedebecolocaralfinaldeunregistro. Enunregistro varianteuncampodeseleccinslopuedeserdeuntipodedato:entero (exceptoint64yqword),untipodedatobooleano,enumeradoouncaracterdetipo char. Losregistrosvariantestambinsepuedenescribirsincampodeseleccin,loscampos deseleccinslosirvenparasaberporpartedelprogramadorqueesloqueseha grabadoenlapartevariantedelregistro. Eltamaoenbytesdeunregistrodeberaserlasumadelostamaosdesuscampos, peronoesmuyfcildeterminarlomanualmentedebidoalprocesodealineacininterna delosdatosoloscamposdeunregistroquerealizaelcompilador,dependiendodel microprocesadorqueseestusando.Laalineacinsehaceconelobjetivodemejorar elrendimientodelosprogramasencuantoavelocidad,yaquelosmicroprocesadores modernosmuevenlosdatosdelamemoriaenbloquesde2,4,8,16y32bytes,de acuerdoaciertasreglasdealineacindelosdatos,parasabereltamaodeunregistro serecomiendausarlafuncinSizeOf,delsiguientemodo: Writeln(sizeOf(Reg02)) Unregistrovariantetambinpuedeservirparaobtenerelordinaldeuntipodedato char,recordemosqueloscamposdeunregistrovarianteocupanelmismobloquede memoria,yporendeestebloquedememoriapuedeserinterpretadoporelcompilador dedosmodosdiferentes.Losregistrosvariantessepuedenencadenar.

02.02.02TipoArreglo(ARRAY) Sontipodedatoscompuestosindexados.Permitenoperarsobrecualquierelementode laestructura,especificandosuposicinenlamisma. Untipodedatoarregloesunacoleccinordenadaeindexadadeelementos,conlas siguientescaractersticas: 1.Todosloselementossondelmismotipoestoconvierteaunarregloenuntipode datohomogneo. 2.Loselementospuedenrecuperarseencualquierorden,simplementeindicandola posicinqueocupandentrodelaestructuraporestemotivoesunaestructura indexada. 3.Lamemoriaocupadaalolargodelaejecucindelprogramaesfijaporesto,esuna estructuradedatosestatica. Elnombredelarregloestaasociadoconunreadememoriafijayconsecutiva,el tamaoseespecificaenladeclaracin. Unndice,pertenecienteauntipoordinal,permiteaccederacadaelementodelarreglo. Ladimensindeunarregloindicalacantidaddendicesnecesariosparaaccederun elementodelarreglo. Desdeelpuntodevistadelaeficienciaenlautilizacinderecursos,nosiemprees aconsejablequelosarreglosseanenviadoscomoparmetrosporvalor,yaquecopiael contenidodelavariablealmoduloquelorecibe,porloqueseutilizaeldoblede memoriaparadosvariablesquecontienenlosmismosdatos. Vectores Esuntipodedatoarregloconunndice(unidimensional),cadaelementodeunvector ocupaunlugarenmemoriadeformaconsecutiva.Lacantidaddeespacioasignadaal vectordependedelnumerodeceldasqueelmismocontieneydeltipodedatoquese asignaacadaunadeellas. Definicion:debecontenertantoeltipodeelementoquecontendrlaestructuracomoel rangodevaloresquepuedetomarelndice. TYPE Vector=array[minimo..Maximo]oftipoDato Operaciones:

Seasignadelaforma:vector[posicin]:=valor.Posiciondebeserunliteralouna variablequecoincidaconeltipodendicedefinidooportunamenteparaelarreglo. Matrices Unamatrizesuntipodedatoarreglocondosdimensionesondices.Tambienpuede pensarseenellacomounvectordevectores.Esungrupodeelementoshomogneo, conunordeninternoyenelquesenecesitandosndicesparareferenciarunnico elementodelaestructura. Comoreferenciarunelementodeunamatriz:Matriz[indice1,indice2],dondeindice1es lafila,yindice2lacolumna.Cadaceldadelamatrizocupaposicionesconsecutivasde memoria,apartirdeladireccininicialasignada.Lacantidaddeespacioasignadoauna matrizdependedeltamaodecadaceldaydelnumerodeceldasque,enestecaso,es igualalproductoentreelnumerodefilasporelnumerodecolumnasdelamatriz. Definicion:typematriz=array[minIndice1..maxIndice1,minIndice2..maxIndice2]of tipoDato Losndicesdebenserdetipoordinal. Asignacion:matriz[indice1,indice2]:=valor.Losndicesdebenserunvalorliteralouna variabledelmismotipoordinalquelosndices. Arreglosmultidimensionales Definicion:typearreglo=array[indice1,indice2,,indicen]oftipoDato Esigualqueunvectorentodolodems. 02.03TipoArchivo(FILE) ConceptosGenerales Memoriaprincipalymemoriasecundaria: Lasprincipalescaractersticasdelamemoriaprincipalson: a.Existeunlimiteenlacantidaddisponible,noexisteunacantidadinfinita. b.Esmemoriavoltil:paraconservarlainformacinnecesitaelectricidad,alapagarla computadoraoanteuncortedeenergasucontenidosepierde. c.Velocidaddeaccesoelevada,debidoaqueeselectrnica. Memoriasecundaria:

SonmediosdealmacenamientoqueestnubicadosfueradelamemoriaRAM,son capacesderetenerinformacinluegoqueelprogramafinalizaoseapagala computadora.Ej:discospticos,discosrigidos,etc.Almacenanlainformacinenun mediomagnticooenunmedioptico,quehacemaslentasuoperacin. TiemposdeAcceso: Elalmacenamientosecundariotienelacaractersticadesermaslentoenelaccesoque lamemoriaRAM.LamemoriaRAMesdelordencienmilvecesmasrpidoquela memoriaauxiliar.EltiempodeaccesodelamemoriaRAMsemideennanosegundos 109,mientrasquelamemoriaauxiliarsemideenmilisegundos103. Archivos: Unarchivoesunacoleccinderegistrossemejantes,guardadosendispositivosde almacenamientosecundario.Esunaestructuradedatosqueguardaenundispositivo dealmacenamientosecundariodeunacomputadoraunacoleccindeelementosdel mismotipo. Administracindearchivos Elprogramadeaplicacinseapoyaenelsistemaoperativoparaobtenerdetallesde almacenamiento:lugardentrodeldispositivofsico,cantidaddeespacioquevaautilizar, tiposdeaccesopermitidos(leer,escribir,etc),usuariosquetienenaccesoalosdatos delarchivo,etc.Elprogramareferenciaindirectamentealarchivofsicoutilizandopara ellounnombrelgico,sedenominaarchivolgico. Sevinculaunarchivofsicoconunenlacelgico. Operacionesbsicassobrearchivos. Lasoperacionesbsicasson: 1.Vincularorelacionarelarchivofsico(queestaenmemoriasecundaria)conel nombrelgicoqueseutilizaradentrodelprograma. 2.Abrirunarchivoparasuprocesamiento. 3.Cerrarunarchivo,luegodeoperarconelmismo. 4.Leerloselementoscontenidosenunarchivo. 5.Escribirnuevoselementosenunarchivoomodificaralgunosexistentes. ASIGNACION: EnPascal,lasintaxises:assign(nombreFisico,nombreLogico).Ej:

assign(C:\archivo.dat,archivoDatos) Elnombrefisicodefineexactamenteelnombreconelqueelsistemaoperativo encontraraalarchivodentrodelalmacenamientosecundario.Elnombrelgicose correspondeconunavariabledefinidaporelprograma.Dichavariabledebeserdetipo archivo(file). ABRIR: EnPascal,lasintaxises: Rewrite(archivoDatos)dondearchivoDatoseselnombrelgicodelarchivo.Este procedimientocreaunarchivovaciosinoexisteyloabre.Encasodeexistir,elarchivo pasaaestarvacioyloabre. Reset(archivoDatos)dondearchivoDatoseselnombrelgicodelarchivo.Este procedimientoabreelarchivoqueidentificaarchivoDatos. Lasoperacionesquepuedenrealizarsealabrirunarchivopuedenserdesololecturao lecturayescritura.Laaperturadeunarchivoestableceunaposicincorrienteenel mismo,indicaeldatoquevaaserledooellugarsobreelquevaaserescrito. CERRAR: SintaxisenPascal:close(archivoDatos) Unafinalizadoeltrabajoenunarchivodebecerrarse.Laoperacindecierredetermina ladesaparicindelaposicincorrienteenelarchivoyagregaalfinaldelmismouna marcaconocidacomofindearchivo(eof,endoffile). LEERYESCRIBIR: SintaxisdelecturaenPascal: Read(archivoDatos,variableDatos)DondevariableDatosesdelmismotipodedatoque estaalmacenadoenelarchivo. SintaxisdeescrituraenPascal: Write(archivoDatos,variableDatos) Lasoperacionesseefectansobrelaposicincorrienteenelarchivo.Seleeoescribe desdeohaciaellugarindicado. TcnicasdeorganizacinyAccesoaunarchivo. Unarchivopuedeestarorganizadoprincipalmentededosformas: Accesosecuencial:permiteaccederalosregistrosoelementosunotrasotroyenel ordenfsicoqueestnguardados. Accesodirecto:permiteobtenerunregistrodeterminadosinnecesidaddehaber

accedidoasuspredecesores. Deacuerdoalaorganizacindelarchivo,elcualdefinelamaneraenquelosregistros sedistribuyensobreelalmacenamientosecundario,puedeclasificarsecomo: Secuencial:conjuntoderegistrosalmacenadosconsecutivamente,demaneraquepara accederalregistrondelmismosedebe,previamente,accederalasn1registros anteriores.Losregistrossegrabanenformaconsecutiva,amedidaqueseingresan,y serecuperanenelmismoorden. Directo:conjuntoderegistrosdondeelordenamientofsicononecesariamente correspondeconelordenamientolgico.Losregistrosserecuperanaccediendoporsu posicindentrodelarchivo.Esposibleaccederalnlugarsinhaberaccedidoalosn1 registrosanteriores.Presentalaventajaquesepuedeobtenercualquierelementodel archivoencualquierorden,eseficienteencuantoatiempodeaccesopararecuperar informacin.Presentanelinconvenienteparadeterminarlaposicindondeseencuentra cadaelementoadems,dentrodelarchivo,sedebecontarconespaciodisponiblepara poderingresarnuevoselementos. Secuencialindexado:utilizaestructurasdedatosauxiliaresparapermitirunacceso pseudodirectoalosregistrosdeunarchivo.Ej:guatelefnica.Tienenlaventajade tenerunaccesomuchomasrpidoquelossecuenciales,necesitanmasespaciopara mantenerlaestructuradelosndices.Lasestructurasdendicesesuelendenominar directoriosdelarchivo.

3TIPOSDEABSTRACTOSDEDATOS. Abstracciondedatos. Estacaracterizacionsignificareconocerlosobjetosdelmundorealyabstraerus aspectosfundamentalesysucomportamiento,demododerepresentarlossobreuna computadora. Lautilidadfundamentaldelaabstraccinylamodelizacindeobjetosdelmundoreales laposibilidaddereusarsolucionesquerespondanadichomodeloendiferentes problemas. EncapsulamientodeDatos Sedefineunnuevotipoyseintegranenunmodulotodaslasoperacionesquese puedenhacerconel.Siademsellenguajepermitesepararlapartevisible(interfaz)de laimplementacin,setendrocultamientodedatos(datahiding). ConceptodetipoAbstractodedato(TDA) Elconceptodetipoabstractodedatoesuntipodedatodefinidoporelprogramador queincluye:

Especificaciondelarepresentacindeloselementosdeltipo. Especificaciondelasoperacionespermitidasconeltipo Encapsulamientodetodoloanteriordemaneraqueelusuarionopuedamanipularlos datosdelobjeto,exceptoporelusodelasoperacionesdefinidasenelpuntoanterior. Laformadeprogramacinutilizadaenloscaptulosanteriorescorrespondealaclsica educacinWirth(Wirth,1984). Diferenciaentretipodedatoytipoabstractodedato. Unobjetodelmundorealesalgomascomplejoquelasrepresentacionesdenmeroso caracteresquesehanvistoenlostiposdedatossimples. Noalcanzaconpensarenlaestructuraderegistro(tipo)quesirvepararepresentarlos paracaracterizarestosobjetos:esnecesarioagregaraltipolasoperacionesque caracterizansucomportamiento. RequerimientosydiseodeuntipoAbstractodedato(TDA) DisponerdeunTDAbrindalaposibilidaddetenercdigoreusable,dondeserepresente nosololaestructuradedatos,sinotambinsucomportamiento.Estorequiere: Poderencapsulardentrodeunmodulodellenguaje(porejemplo,elPACKAGEdeAda) tantolaespecificacinvisiblecomolaimplementacindelasoperaciones. Poderdeclarartiposprotegidos(porejemplo,elPRIVATEdeAda)demodoquela representacininternaesteocultadelapartevisibledelmodulo. PoderheredarelTDA,esdecir,crearinstanciasapartirdeesemolde,dondeserepitan omodifiquenlasfuncionalidadesdeltipo,respetandosuscaractersticasbsicas. Eldiseodeuntipodedatoabstractollevaconsigolaseleccinde: Unarepresentacininterna,loqueimplicaescogerlasestructurasdedatosadecuadas pararepresentarlainformacin.Dichaseleccinestaestrechamenterelacionadaconla complejidaddelaimplementacindelasoperaciones. Lasoperacionesaproveerparaelnuevotipoyelgradodeparametrizaciondelas mismas. Estasoperacionespuedenclasificarseen: Operacionesparacrearoinicializarobjetosquepermiteninicializarlaestructuradedatos ogenerarlasituacininicialnecesariaparacrearunobjetonuevo. OperacionesparamodificardelTDAquepermitenagregaroquitarelementosdelTDA. OperacionesquepermitenanalizarloselementosdelTDA. Abstraccinyocultamientoenpascal. ElprogramadordecideculesprocedimientossenecesitanparamanipularunTDA,y definesuinterrelacin.Unusuariodeltipodedatos"TDA"nonecesitarentonces conocercmoseinterrelacionan(aniveldeimplementacin)losdatosnilos procedimientosquemanipulanlistaspueslebastarusarlasoperacionesdelaLista paramanejarla.

4ESTRUCTURASDEDATOSPILA. EltipoPila Comosesabequepascalnodisponeentresustiposprimitivosdeltipodedatopilapor

lotanto,sedeclaraunaformageneraldeltipodedatopilasyluegoseimplementa. Typenombre_tipo_pila=tipo_de_pila Definicionyejemplos UnaPilaesunacoleccinordenadadeelementoscontrescaractersticas: 1Loselementossondelmismotipo.Estoconviertealapilaenunaestructura homognea. 2Loselementospuedenrecuperarseenordeninversoalquefueronalmacenados.Por esto,laformadeaccesoalaestructurasedenominaLIFO(LastInFirstOut),loque significaqueelultimoelementoqueentroeselprimerodisponibleparasalir. 3Lacantidaddeelementosquecontieneunapilapuedevariaralolargodelaejecucin delprograma.Porestaraznesunaestructuradinmica. DefinicionformaldelTDAPila Laestructuradedatospila(stack)esunadelasformasmassencillasdeorganizacin dedatoscompuestos:apartirdeunadireccindememoria,losdatossealmacenan sucesivamentecomosifueranunasuperposicinordenadadeelementos(cartas, platos,libros,camisas,etc.),yencualquiermomentosepuederecuperarelobjetoque seencuentraaltopedelapila,esdecir,elultimoquefueguardado. ImplementaciondeunaPILA. UnTDAPilasellevaacaboconunaestructuracapazdeguardardatos,comoya sabemos,elprimeroqueentraenlapilaeselultimoensalir,yelultimoenentrarala pilaeselprimeroensalir.Ademsposeeunacabezaconlacualsellevaelcontroldel ultimodatoqueingresoalapila. LasoperacionesqueserealizanconelTDAPilasonlassiguientes. 1Pilallena 2Pilavaca 3Meterpila 4Sacarpila 5Limpiarpila Implementacionestaticamediantetiposdedatosestructurados. LaimplementacindeunTDAPilaenpascalsellevaatravesdeunregistroquetiene unacabezadetipobyteyunelementodetipoarray. type tpila=record cab:byte{0..255=2^8} elem:array[1..N]ofinteger end Lasoperacionesqueserealizaconlapilaseimplementanatravesdeprocedimientosy funciones. procedurelimpiarpila(varpila:tpila) begin pila.cab:=0 end

functionpilavacia(constpila:tpila):boolean begin pilavacia:=pila.cab=0 end functionpilallena(constpila:tpila):boolean begin pilallena:=pila.cab=N end proceduremeterpila(varpila:tpilaElemento:integer) begin withpilado begin cab:=cab+1 elem[cab]:=Elemento end end proceduresacarpila(varpila:tpilavarElemento:integer) begin withpilado begin Elemento:=elem[cab] cab:=cab1 end end

5 ESTRUCTURASDEDATOSCOLA
EltipoCola Laformageneraldedeclaracindeuntipodedatocolaes: Typenombre_tipo_cola=tipo_de_cola Unavezdefinidountipocola,puedendeclararsevariablesdeesetipo. Definicionyejemplos Unacolaesunacoleccinordenadadeelementos,contrescaractersticas: 1Loselementossondelmismotipo.Estoconviertealacolaenunaestructura homognea. 2Loselementospuedenrecuperarseenelordenenquefueronalmacenados.Poresto, laformadeaccesoalaestructurasedenominafifo(firstinfirstout),loquesignificael primerelementoqueentroeselprimerodisponibleparasalir.

3Lacantidaddeelementosquecontieneunacolapuedevariaralolargodelaejecucin delprograma.Porestaraznesunaestructuradinmica. DefinicionformaldelTDACOLA Laestructuradedatoscola(queue)esotradelasformasmassencillasde organizacindedatoscompuestos.Apartirdeunadireccindememoria,losdatosse almacenanconsecutivamentecomounasucesindeelementosyencualquier momentosepuederecuperarelobjetoqueseencuentraprimeroenlacola,esdecir,el primeroquefuegrabado. Implementaciondeunacola UnTDAColasellevaacaboconunaestructuradedatosheterogenea,capazde guardarlosdatosdeformaqueelprimeroqueentraeselprimeroquesale.Paraesto poseeunfrenteyunfinalparacontrolarelprimerdatoqueentro(frente)ycontrolarlos ltimosdatosquevanentrando(final).Lasoperacionesquesepuedenrealizarconuna colasonlassiguientes. 1Crearcola 2Siguiente 3Encolar 4Desencolar 5Colavacia 6Colallena Implementacionestaticamediantetiposdedatosestructurados. LaimplementacindeunTDAColaenpascalserealizaatravsdeuntipobase:char quevaasereltipodeelementosqueguarda,untipocola=registro,unelemento tipoarrayquevaaserdetipobase,yunfrenteyunfinalquevaserelrangodel vectorquealmacenaloselementos. Type TipoBase=char TipoCola=Record Elementos:array[1..MAX]ofTipoBase frente,final:1..MAX End ProcedureCrearCola(varq:TipoCola) Begin q.frente:=max q.final:=max End FunctionSiguiente(i:integer):integer Begin Siguiente:=(imodMAX)+1 End ProcedureEncolar(varq:TipoColavare:TipoBase) Begin q.final:=Siguiente(q.final)

q.Elementos[q.final]:=e End ProcedureDesencolar(varq:TipoColavare:TipoBase) Begin q.frente:=Siguiente(q.frente) e:=q.Elementos[q.frente] End FunctionColaVacia(varq:TipoCola):boolean Begin ColaVacia:=q.frente=q.final End FunctionColaLlena(varq:TipoCola):boolean Begin ColaLlena:=q.frente=Siguiente(q.final) End

06.01Gestindinmicadememoria 06.02Conceptodevariabledinmica Lacreacindeunespaciodealmacenamientoparaunavariableenmemoriadurantela ejecucin(envezdedurantelacompilacin)delprograma.Puedencrearseodestruirse encualquiermomentodurantelaejecucindelprograma.Puedendefinirsedecualquier tiposimpleoestructurado. 06.02.01ImplementacindevariablesDinmicas EnPascalseimplementanlasvariablesdinmicasmediantepunteros.Unpunteroes untipodedatovariable,enelcualsealmacenaladireccindeundatoypermite manejardirecciones,apuntandoaunelementodeterminado.Unpunteroocupauna cantidaddememoriafija,independientementedeltipodedatoalqueapunte.Undato referenciado,noposeeexistenciainicial,noexisteinicialmenteespacioreservadoen memoriaparael. 06.02.02GeneracinydestruccindevariablesDinmicas Paragenerarunavariabledinmica,sesolicitaespacioenlamemoriadondese almacenaralainformacin,mediantelainstruccin:new(variablePuntero)ladireccin delamemoriaasignadaquedacargadaenvariablePuntero.Lasvariablesdetipo punteropuedenserusadascomoenganchealsiguienteelementode,porejemplo, unalista.

Paradestruirunavariabledinmica,seutilizalainstruccindispose(variablePuntero) liberalamemoriaasociadaalavariablereferida,dejndolalibreparaotrosfines.Deja indefinidoelvalordelpuntero. 06.02.03OperacionesbsicasconPunteros Asignacion: Seasignandireccionesentresi,noloscontenidosdelosdatosapuntados.Ej: Puntero1:=puntero2 Comparacion: Secomparanlasdirecciones,noloscontenidosdelosdatosapuntados: Puntero1=puntero2 Lectura: Paraleerunvalordeltipoapuntado,sepuedehacerreferenciaalcontenidoapuntado (puntero^)oaunodesuscamposencasodeserunregistro(puntero^.nombreCampo). punteroserefierealadireccindememoria,puntero^alcontenidoapuntado. Escritura: Paraescribirunvalordeltipoapuntado,seutilizalasintaxis: Puntero^:=tipoApuntado O: Puntero^.campo:=tipoCampo Encasodeserunregistro. Maslasoperacioneslegalesquesepuedanrealizarconeltipoapuntado. 07.01Principiosdelarecursin. Esunaherramientaquepermiteexpresarlaresolucindeproblemasevolutivos,donde esposiblequeunmodulodesoftwareseinvoqueasimismoenlasolucindel problema. Permitedisearlasolucindeunproblemaporresolucindeinstanciasmaspequeas delmismoproblema.Subdivideunproblemaenotrosmassimples. Cuandoseobtienensolucionesaproblemasenlosquelafuncinoprocedimientose llamaasimismopararesolverelproblema,setienensubprogramasrecursivos. 07.02Funcionamientodelarecursin. Sellamaasimismo,hacequeelprocedimientosearecursivo.Subdivideelproblema hastallegarauncasobase.

Porlogeneral,losalgoritmosrecursivosseescribendelaforma: If(condicindeterminacin)then Tomaralgunaaccinfinalyterminar Else Tomaraccinqueseacerquealasolucinyhacerunallamada recursiva Unasolucinrecursivadebeasegurarelcasobase. 07.03Funcionesyprocedimientosrecursivos. Funcionesrecursivas,ejemplos: Factorial: Functionfactorial(numero:integer):integer Begin Ifnumero=0then Factorial:=1 Else Factorial:=numero*factorial(numero1) End 07.04Ventajasydesventajasdelosalgoritmosrecursivos. Paraunmismoalgoritmo,larecursividadpermiteunaexpresinmasclaraysintetica,lo quesimplificalacomprensinyelmantenimientodelmismo.Porotraparte,las solucionesrecursivassonmenoseficientes,yaqueconsumenmastiempoymemoria. Larecursividadesapropiadacuandolosdatosinvolucradosenelproblemaestn organizadosenestructurasquepuedendefinirserecursivamente,comolistas,arboles, etc. 07.05TiposdeDatosRecursivos Listas Consisteenunasecuenciadenodos,enlosqueseguardancampos,yunoomas punterosqueactancomoengancheanodosanterioresoposteriores.Elbeneficiode laslistasrespectoalosvectoresesqueelordendeloselementosenlazadospuedeser diferentealordendealmacenamientoenlamemoriaoeldisco,permitiendoqueel ordenderecorridodelalistaseadiferentealdealmacenamiento. Esuntipodedatorecursivoporquecontieneunpunteroqueactuadeenlaceaotrodato delmismotipo.Permiteninsercionesyeliminacindenodosencualquierpuntodela listaentiempoconstante,nopermitenaccesoaleatorio.Tiposdelistas:enlazadas simples,doblementeenlazadas,circulares,doblementecirculares. Arboles Enunrbol,unnodoeslaunidadsobrelaqueseconstruyeelrbolypuedetenercero omasnodoshijosconectadosael.Seaaunnodo,espadredeunnodobsiexisteun enlacedeahastabbeshijodea.Larazeselniconodosinpadres.Unnodosin hijosseconocecomohoja,losdemsnodosseconsideranramas. Comodefinirunrbol: Casobase:unsolonodo(esalavezrazdelrbolehija).

Unnuevorbolapartirdeunnodoyrbolesderacesconelementoscadauno,puede construirseestableciendounarelacinpadrehijoentreycadaunadelasracesdelos rboles.Elrbolresultantedenodostienecomorazelnodo,losnodossonloshijosde yelconjuntodenodoshojaestformadoporlaunindelosconjuntoshojasiniciales.A cadaunodelosrbolesselesdenotaahorasubrbolesdelaraz. Selellamarecorridocuandoentrecadadosnodosconsecutivosdelasucesinhaya unarelacindeparentesco. Recorridoenprofundidadselistanlosnodosexpandiendoelhijoactualdecadanodo hastallegaraunahoja,dondesevuelvealnodoanteriorprobandoporelsiguienteyasi sucesivamente. Recorridoenanchuraantesdelistarlosnodosdenivel(adistanciaaristasdelaraz), sedebenhaberlistadotodoslosdenivel. Recorridopreordenordenprevio,consisteenrecorrerenprimerlugarlarazyluego cadaunodeloshijosenordenprevio. Recorridoinorden,tambinllamadoordensimtrico(aunqueestenombreslocobra significadoenlosrbolesbinarios)consisteenrecorrerenprimerlugar,luegolarazy luegocadaunodeloshijosenordensimtrico. Recorridoenpostorden,tambinllamadoordenposteriorconsisteenrecorreren primerlugarcadaunodeloshijosenordenposterioryporltimolaraz.

8ESTRUCTURASDEDATOSLISTA
EltipoLista

Definicinyejemplos Unalistadinmicaesunconjuntodeelementosdetipohomogneo,dondelosmismos noocupanposicionessecuencialesocontiguasdememoria,esdecir,loselementoso componentesdeunalistapuedenaparecerfsicamentedispersosenlamemoria,si bienmantienenunordenlgicointerno. DefinicinformaldelTDALISTA Enprogramacinunalistaesunacoleccindeelementoshomogneos,conuna relacinlinealquelosvincula.Estosignificaquecadaelementomenoselprimerotiene unnicopredecesorycadaelementomenoselultimotieneunsucesorenlalista.El ordendevinculacindeloselementosdelalistaafectaasufuncindeacceso. Implementacindeltipolista,estaticaydinmica

Implementacindepilasycolasutilizandolistaenlazadas Implementacindelistasordenadas

Necesitaremosobtenerunnodoparaponerenlelvalor,NUEVOVALOR.Llamaremos alpunteroaestenodoNUEVONODO. Obtenernodo(nuevonodo) Info(nuevonodo)<nuevovalor InsertarNodo(nuevonodo)(encontrarellugardondeinsertarconectarlospunteros) LaprimeratareaimplicalacomparacindelnuevovalorconelcampoINFOdelos sucesivosnodosdelalista(usandounpunterotemporalPpararecorrerlalista)hasta queNUEVOVALOR<INFO(P).estatareapuedeversecomounbucleWHILE. P<LISTA WhileNUEVOVALOR>=INFO(P)DO AvanzarP Sinembargo,cuandoseencuentraellugarcorrecto,Pestaapuntandoalnodoque seguiraalnuevonodo.Nopodemosaccederalnodoqueleprecedeparacambiarsu puntero.

Listasdoblementeenlazadas,circularesymultilista Laslistasenlazadasnopermitenapartirdeunelementoaccederdirectamentea cualquieradeloselementosquelapreceden.Enlugardealmacenarunpunteronulose hacequeelltimoelementoapuntealprimerooprincipiodelalista,estetipode estructurasellamalistacircular. Ventajascircular: 1Cadanododelalistacircularesaccesibledesdecualquierotronododeella. 2Lasoperacionesdeconcatenacinydivisindelaslistassonmaseficacesconlistas circulares. Ennumerosasocasionessenecesitarecorrerlalistaenambossentidos.Laslistasque sepuedenrecorrerenambasdireccionessellamanlistasdoblementeenganchadas oenlazadas.Enestetipodelistas,ademsdelcampodeinformacinsecuentacon dosvariablesdeltipopunteroqueapuntanalnodoanteriorysiguiente.Obviamente,una listadoblementeenlazadaocupamasespaciodememoriaqueunalistasimplepara lamismacantidaddeinformacin. LasMultilistassepuedendefinircomolistasdelistasesdecir,listasquetienenuna listacomopartedelainformacinquealmacenan.Cadaunodesusnodosguarda ciertainformacin,unapuntadoralsiguientenodoyunapuntadoralnododeuna segundalista.

09.01TerminologaFundamentalydefiniciones.

Unrbolesunaestructurajerarquicaporqueloscomponentesestnadistintonivel organizadaporqueimportalaformaenqueestedispuestoelcontenidodinmica porquesuforma,tamaoycontenidopuedenvariardurantelaejecucinunrbolpuede servacioounaraz+subrboles. 09.02ElTDArbol. Unrbolesunaestructuradedatosquesatisfacetrespropiedades:cadaelementodel rbol(nodo)sepuederelacionarconceroomaselementos,loscualesllamahijos.Si elrbolnoestavacio,hayunnicoelementoalcualsellamarazyquenotienepadre (predecesor),esdecir,noeshijodeningnotrotodootroelementodelrbolposeeun nicopadreyesundescendiente(hijodelhijodelhijo,etc.)delaraz. SihayuncaminodeAhastaB,sedicequeAesantecesordeB,BessucesordeA padreeselantecesorinmediatodeunnodohijosoncualquieradesusdescendientes inmediatosdescendientedeunnodoescualquiersucesordedichomodohermanode unnodoesotronodoconelmismopadregeneracinesunconjuntodenodosconla mismaprodundidad. Raizeselnodoquenotieneningnpredecesor(sinpadre)hojaeselnodoquenotiene sucesores(sinhijos)(terminal).Losquetienenpredecesorysucesorsellamannodos interioresRamaescualquiercaminodelrbolBosqueesunconjuntodearboles desconectadosniveloprofundidaddeunnodoeslalongituddesdelarazhastaese nodolosnodosdelamismageneracintienenelmismonivelelgradodeunnodoes elnumerodeflechasquesaledeesenodo(hijo).Elnumerodelasqueentransiempre esunogradodeunrboleselmayorgradoquepuedehallarseensusnodoslongitud delcaminoentre2nodos:eselnumerodearcosquehayentreellos. 09.03ImplementacindeunrbolBinario. Esunrbolbinarioysusnodossonsubrbolesdebsquedabinariosycontienen informacinordenadadetalformaquetodosloselementosalaizquierdadelarazson menoresalarazytodosloselementosaladerechadelarazsonmayoresalaraz. Todoslosnodosalaizquierdasonmenoresalpadre.Todoslosnodosaladerechason mayoresalpadre,solopuedentenerdoshijoscomomucho. 09.03.01Implementacinestticamediantetipoestructuradodedatos. Unarbolbinariopuedeimplementarsedeformaestaticamediantematricesde3xn elementos,dondelaprimerfilaeslaclavedecadaelemento,lasegundafilaeselhijo izquierdo,latercerfilaeselhijoderechoylascolumnassonlaclaveutilizadapara identificaraloshijos. Ej: Sealamatriz: 0 Clave HijoIzquierdo 15 3 1 20 5 2 5 4 3 25 4 45 5 10

HijoDerecho Elarbolquegeneraes:

09.03.02Implementacindinmicamediantepunteros. Unarbolpuedeimplementarsedeformadinamicamedianteelusodepunteros,los cualesindicanlasubicacionesdelosnodoshijoizquierdoehijoderecho. Ej: Seaelarbolanterior,suimplementacindinmicaes:

09.04RecorridosenunrbolBinario. Seentiendeporrecorridoeltratamientorealizadoparaaccederalosdiferentesnodos deunrbol.Elrecorridopuedeafectaralatotalidaddelosnodosdelrbol(recorrido completo),porejemplosisedeseaconocerelnmerodenodos,ofinalizar anticipadamenteenfuncindedeterminada/scircunstancia/s,porejemploalencontrar elvalordeunaclavedeterminada. Encualquiercaso,elrecorridosepuederealizarbasndoseenlassiguientes modalidades: Enprofundidad.Seprogresaverticalmentedesdelarazhacialashojasy,enprincipio, deizquierdaaderecha.Seplanteantresposibilidadesatendiendoalmomentoenque seprocesalaclave. Preorden.Laclaveseprocesaenprimerlugar.Posteriormenteserealizanlas llamadasrecursivas(porlaizquierdayporladerecha).Laexploracinen preordendelrboldelafigura4.3.a.daraelsiguienteresultado:15,25,20,10,5, 45. Estetipoderecorridoeselmsutilizadopuesatiendealaestructurade organizacinjerrquicadelrbol.Tambineselmseficientecuandosetrata

debuscarclaves. Engeneral,elalgoritmoderecorridoenpreordeneselsiguiente / /E s c r i b el a sc l a v e sd e l r b o lb i n a r i od er a i z a e np r e o r d e n . s t a t i cv o i dp r e O r d e n( N o d o A r b o la r b o l ){ i f( a r b o l! =n u l l ){ S y s t e m . o u t . p r i n t( a r b o l . c l a v e+"" );/ /N o d o p r e O r d e n( a r b o l . i z ) ;/ /I z q u i e r d a p r e O r d e n( a r b o l . d e ) ;/ /D e r e c h a } } p u b l i cv o i dp r e O r d e n( ){ p r e O r d e n( r a i z ) ; } Ordencentral.Sedescienderecursivamenteporlaramaizquierda.Alalcanzar lacondicindefinalizacin(arbol==null)seretornayseprocesalaclave,ya continuacinseprogresaporlaramaderecha.Laexploracinenordencentral delrboldelafigura4.3.a.daraelsiguienteresultado:25,15,10,20,45,5. Estetipoderecorridoesespecialmentetilentodosaquellosprocesosenlos queseanecesariorecorrerlosnodosdeacuerdoalordenfsicodelosmismos. Engeneral,elalgoritmoderecorridoenordencentraleselsiguiente:

/ /E s c r i b el a sc l a v e sd e l r b o lb i n a r i oe no r d e nc e n t r a l . s t a t i cv o i do r d e n C e n t r a l( N o d o A r b o la r b o l ){ i f( a r b o l! =n u l l ){ o r d e n C e n t r a l( a r b o l . i z ) ;/ /I z q u i e r d a S y s t e m . o u t . p r i n t( a r b o l . c l a v e+"" );/ /N o d o o r d e n C e n t r a l( a r b o l . d e ) ;/ /D e r e c h a } } p u b l i cv o i do r d e n C e n t r a l( ){ o r d e n C e n t r a l( r a i z ) ; } Postorden.Sedescienderecursivamenteporlaramaizquierda,alalcanzarel finaldedicharama,seretornaysedesciendeporlaramaderecha.Cuandose alcanzaelfinaldelaramaderecha,seprocesalaclave.Laexploracinen postordendelrboldelafigura4.3.a.daraelsiguienteresultado:25,10,45,5, 20,15. Esterecorridoeselmenosutilizado.Seutilizaparaliberarmemoria,obien cuandolainformacindelosnivelesmsprofundosdelrbolafectaala informacinbuscada. Engeneral,elalgoritmoderecorridoenpostordeneselsiguiente:

/ /E s c r i b el a sc l a v e sd e l r b o lb i n a r i oe np o s t o r d e n . s t a t i cv o i dp o s t O r d e n( N o d o A r b o la r b o l ){ i f( a r b o l! =n u l l ){ p o s t O r d e n( a r b o l . i z ) ;/ /I z q u i e r d a p o s t O r d e n( a r b o l . d e ) ;/ /D e r e c h a S y s t e m . o u t . p r i n t( a r b o l . c l a v e+"" );/ /N o d o } } p u b l i cv o i dp o s t O r d e n( ){ p o s t O r d e n( r a i z ) ; } Recorridoenamplitud.Implicaunaccesoalasclavesrecorriendocadanivelde izquierdaaderechaydescendiendoalsiguiente.Porejemplo,laexploracinen amplituddelrboldelafigura4.3.a.daraelsiguienteresultado:15,25,20,10,5, 45. Paralaimplementacindelrecorridoenamplitudserequierelautilizacindela tcnicaiterativaascomodeladisponibilidaddeunaestructuradedatosauxiliar: TADcoladenodosderbol:

c l a s sN o d o C o l a{

N o d o A r b o ld a t o ; N o d o C o l as i g u i e n t e ; / /C o n s t r u c t o r e s N o d o C o l a( N o d o A r b o le l e m e n t o ,N o d o C o l an ){ d a t o=e l e m e n t o ; s i g u i e n t e=n ; } } Ejemploderecorridoenamplitud: s t a t i cv o i dl i s t a r A m p l i t u d( N o d o A r b o la r b o l ){ N o d o A r b o lp ; C o l ac=n e wT a d C o l a( ) ; p=a r b o l ; i f( p! =n u l l ) c . e n c o l a r( p ) ; w h i l e( !c . c o l a V a c i a( ) ){ p=c . d e s e n c o l a r( ) ; S y s t e m . o u t . p r i n t( p . c l a v e+"" ) ; i f( p . i z! =n u l l ) c . e n c o l a r( p . i z ) ; i f( p . d e! =n u l l ) c . e n c o l a r( p . d e ) ; } } p u b l i cv o i dl i s t a r A m p l i t u d( ){ l i s t a r A m p l i t u d( r a i z ) ; } Laidea,bsicamente,consisteenencolarenlacoladepunteroslasdirecciones (referencias)delosposibleshijosdecadanodoprocesado(sudireccinseencuentra enlavariablep). Acontinuacin,encadaiteracinseextraeelprimerelementodelacolaquese correspondeconelnodoactualdelrbol.Sisuhijoizquierdoy/osuhijoderechoson distintosdenullseencolan,yelprocesoterminarcuandolacolaseencuentrevaca. 09.05rbolesBinariosdeBsqueda. Unrbolbinariodebsquedaesuntipoderbolbinarioenelqueseverificaparatodo nodoquelasclavesdesusubrbolizquierdosonmenoresquelasdedichonodoylas clavesdesusubrbolderechosonmayores. 09.05.01Bsqueda. Enlabsquedabinaria,elencaminamientoatravsdelrbolseproducedeforma dirigida(porladerechasiarbol.clave<datoyporlaizquierdasiarbol.clave>dato).La

condicindefinalizacinpesimistaesalcanzarunextremodelrbol(arbol==null)que encasodealcanzarse(unasolavez,novariascomopodrasucederpararboles binariosgenricos)implicaraquenosehaencontradolaclavebuscadayelproceso finalizara. Laterminacinanticipada(noesnecesariohacermsllamadasrecursivas)seproduce cuandoseencuentralaclavebuscada(arbol.clave==dato). Ejemplo: s t a t i cb o o l e a nb u s q u e d a( N o d o A r b o la r b o l ,i n td a t o ){ b o o l e a nr e s u l=f a l s e ; i f( a r b o l! =n u l l ) i f( a r b o l . c l a v e= =d a t o ) r e s u l=t r u e ; e l s ei f( a r b o l . c l a v e>d a t o ) r e s u l=b u s q u e d a( a r b o l . i z ,d a t o ) ; e l s er e s u l=b u s q u e d a( a r b o l . d e ,d a t o ) ; r e t u r nr e s u l ; } p u b l i cb o o l e a nb u s q u e d a( i n td a t o ){ r e t u r nb u s q u e d a( r a i z ,d a t o ) ; } 09.05.02Inserciones. Setratadecrearunnuevonodoenlaposicinquelecorrespondasegnelcriteriode rbolbinariodebsqueda.Ejemplo: s t a t i cN o d o A r b o li n s e r t a r( N o d o A r b o la r b o l ,i n td a t o ){ N o d o A r b o lr e s u l=a r b o l ; i f( a r b o l! =n u l l ) i f( a r b o l . c l a v e<d a t o ) a r b o l . d e=i n s e r t a r( a r b o l . d e ,d a t o ) ; e l s ei f( a r b o l . c l a v e>d a t o ) a r b o l . i z=i n s e r t a r( a r b o l . i z ,d a t o ) ; e l s eS y s t e m . o u t . p r i n t l n( " l ac l a v ey ae x i s t e " ) ; e l s er e s u l=n e wN o d o A r b o l( d a t o ) ; r e t u r nr e s u l ; } p u b l i cv o i di n s e r t a r( i n td a t o ){ r a i z=i n s e r t a r( r a i z ,d a t o ) ; } 09.05.03Supresiones Laeliminacindeunnodoenunrbolbinariodebsquedaimplicaunareorganizacin posteriordelmismoconelobjetodequeunavezeliminadoelnodoelrbolmantenga sunaturalezadebsqueda. Primerolocalizamoselnodoaeliminar.Unavezencontrado,tenemostresposibles casos:

1.Tenemosqueborrarunnodohoja:procedemosaborrarlodirectamente. 2.Hayqueborrarunnodoconunnicodescendiente:ascendemosasudescendiente. 3.Elnodoquequeremosborrartienedoshijos.Enestecaso,sustituimoslaclavea borrarporlaclavedelmayordesusdescendientesmenores(elnodomsaladerecha delsubrbolizquierdo),yborramoselnodoquetenaanteriormentedichaclave.Para poderhaceresto: Nossituamosenlarazdelsubrbolizquierdodedichonodo. Sedesciendeporladerechadedichosubrbolhastaencontrarunnodo(n)sin descendientederecho. Sesustituyelaclaveaeliminarporladelnodon.Seeliminaelnodon6. Ejemplodeimplementacin: s t a t i cc l a s sE l i m i n a r{ s t a t i cN o d o A r b o le l i m i n a r 2 H i j o s( N o d o A r b o la r b o l ,N o d o A r b o lp ){ N o d o A r b o lr e s u l ; i f( a r b o l . d e! =n u l l ){ r e s u l=a r b o l ; a r b o l . d e=e l i m i n a r 2 H i j o s( a r b o l . d e ,p ) ; } e l s e{ p . c l a v e=a r b o l . c l a v e ; r e s u l=a r b o l . i z ; } r e t u r nr e s u l ; }

s t a t i cN o d o A r b o le l i m i n a r E l e m e n t o( N o d o A r b o la r b o l ,i n te l e m ){ N o d o A r b o lp ; i f( a r b o l! =n u l l ) i f( a r b o l . c l a v e>e l e m ) a r b o l . i z=e l i m i n a r E l e m e n t o( a r b o l . i z ,e l e m ) ; e l s ei f( a r b o l . c l a v e<e l e m ) a r b o l . d e=e l i m i n a r E l e m e n t o( a r b o l . d e ,e l e m ) ; e l s e{ p=a r b o l ; i f( a r b o l . i z= =n u l l ) a r b o l =a r b o l . d e ; e l s ei f( a r b o l . d e= =n u l l ) a r b o l=a r b o l . i z ; e l s ea r b o l . i z=e l i m i n a r 2 H i j o s( a r b o l . i z ,p ) ; } e l s eS y s t e m . o u t . p r i n t l n( " l ac l a v eb u s c a d an oe x i s t e " ) ; r e t u r na r b o l ; } } p u b l i cv o i de l i m i n a r( i n te l e m ){ r a i z=E l i m i n a r . e l i m i n a r E l e m e n t o( r a i z ,e l e m ) ; } 09.05.04rbolesAVL UnrbolAVLesunrbolbinariodebsquedaquecumpleconlacondicindequela diferenciaentrelasalturasdelossubrbolesdecadaunodesusnodoses,como mucho1. LadenominacinderbolAVLvienedadaporloscreadoresdetalestructura (AdelsonVelskiiyLandis). LapropiedaddeequilibrioquedebecumplirunrbolparaserAVLaseguraquela profundidaddelrbolseaO(log(n)),porloquelasoperacionessobreestasestructuras nodebernrecorrermuchoparahallarelelementodeseado.Eltiempodeejecucinde lasoperacionessobreestosrboleses,alosumoO(log(n))enelpeorcaso,donden eslacantidaddeelementosdelrbol. LapropiedaddeequilibriodelosrbolesAVLimplicaunadificultadalahoradeinsertar oeliminarelementos:estasoperacionespuedennoconservardichapropiedad.

DeclaracionenPascal: TYPE puntero=^nodo nodo=RECORD dato:tipoDato izq,der:puntero altura:integer end Calcularalturadelosnodos: Senecesitarteneraccesoalaalturacadanododelrbolentiempoconstante.Dado queunafuncinparahallarlaalturadeunnododadoenunrboltendruntiempode ejecucindeO(log(n))peorcaso,nonosquedaotraalternativaquealmacenaruna variablealturaencadanodoeirlaactualizandoenlasinsercionesyeliminacionesque seefectensobreelrbol. Funcionparacalcularaltura: f u n c t i o na l t u r a ( a r b o l : p u n t e r o ) : i n t e g e r ; b e g i n i fa r b o l V a c i o ( a r b o l )t h e n a l t u r a : = 1 e l s e a l t u r a : = a r b o l ^ . a l t u r a ; e n d ; Procedimientoparaactualizaraltura: p r o c e d u r ea c t u a l i z a r A l t u r a( a r b o l : p u n t e r o ) ; b e g i n i fa r b o l V a c i o ( a r b o l )=f a l s et h e n a r b o l ^ . a l t u r a : = m a x ( a l t u r a ( a r b o l ^ . i z q ) , a l t u r a ( a r b o l ^ . d e r ) ) + 1 ; e n d ;

ROTACIONESSIMPLES: Esunaoperacionqueconservaelrdenensusnodosyquenosayudararestaurarla propiedaddeequilibriodeunrbolAVLalefectuaroperacionessobreelmismoque puedanperturbarla. Implementacionderotacionsimple: procedurerotacionSimple(vararbol:puntero,booleanesIzquierda) var arbolAuxiliar:puntero begin //esIzquierda=rotacionporizquierda //esIzquierda=false=rotacionporderecha //Precondiciones: //SiesIzquierdaesverdadero,entoncesarbol^.izqnoesnil //SiesIzquierdaesfalso,entoncesarbol^.dernoesnil ifesIzquierdathen//rotacionizquierda begin arbolAuxiliar:=arbol^.izq arbol^.izq:=arbolAuxiliar^.der arbolAuxiliar^.der:=arbol end else//rotacionderecha begin arbolAuxiliar:=arbol^.der arbol^.der:=arbolAuxiliar^.izq arbolAuxiliar^.izq:=arbol end //actualizaralturas actualizarAltura(arbol) actualizarAltura(arbolAuxiliar) //asignarnuevaraiz arbol:=arbolAuxiliar end ROTACIONDOBLE: Seutilizaparasolucionardesequilibriosenzigzag,rotaporizquierdaoderechasegun elcaso,constadedosrotacionessimples. Implementacion: procedurerotacionDoble(vararbol:puntero,booleanesIzquierda) begin

ifesIzquierdathen//rotacionizquierda begin rotacionSimple(arbol^.izq,false) rotacionSimple(arbol,true) end else//rotacionderecha begin rotacionSimple(arbol^.der,true) rotacionSimple(arbol,false) end //laactualizaciondealturasserealizaenlasrotacionessimples end BALANCEO: AlutilizareliminareinsertarnodossobreunarbolAVL,sedebe: Efectuarlosalgoritmosdeigualformaquelosarbolesbinariosdebusqueda,peroen cadarecursionsedebeactualizarlasalturasysedeberebalancearelarbolencasode sernecesario. ElnumeromaximoderotacionesparaequilibrarunarbolAVLluegodeunainserciones 2,yluegodeunaeliminacioneslog(n),dondeneselnumerodenodos.

Implementacion: p r o c e d u r eb a l a n c e a r ( v a ra r b o l : p u n t e r o ) ; b e g i n i fe s V a c i o ( a r b o l )=f a l s et h e n b e g i n / /d e s e q u i l i b r i oh a c i al ai z q u i e r d a i f( ( a r b o l ^ . i z q ^ . a l t u r a-a r b o l ^ . d e r ^ . a l t u r a )=2 )t h e n b e g i n / /d e s e q u i l i b r i os i m p l eh a c i al ai z q u i e r d a i f( a r b o l ^ . i z q ^ . i z q ^ . a l t u r a> =a r b o l ^ . i z q ^ . d e r ^ . a l t u r a ) t h e n r o t a c i o n S i m p l e ( a r b o l , t r u e ) ; / /d e s e q u i l i b r i od o b l eh a c i al ai z q u i e r d a e l s e r o t a c i o n D o b l e ( a r b o l , t r u e ) ; e n d e l s e / /d e s e q u i l i b r i oh a c i al ad e r e c h a b e g i n i f( ( a r b o l ^ . d e r ^ . a l t u r a-a r b o l ^ . i z q ^ . a l t u r a )=2 )t h e n b e g i n / /d e s e q u i l i b r i os i m p l eh a c i al ad e r e c h a i f( a r b o l ^ . d e r ^ . d e r ^ . a l t u r a> =a r b o l ^ . d e r ^ . i z q ^ . a l t u r a ) t h e n r o t a c i o n S i m p l e ( a r b o l , f a l s e ) ; / /d e s e q u i l i b r i od o b l eh a c i al ad e r e c h a e l s e r o t a c i o n D o b l e ( a r b o l , f a l s e ) ; e n d ; e n d ; e n d ; e n d ; INSERCION: ElalgoritmodeinsercionenunarbolAVLesanalogoaldeunarbolbinariodebusqueda, exceptoqueverificaycorrigeelequilibriodelarbol,ademasdeactualizarlasalturasde losnodos,segunlasinserciones,rotacionesyeliminacionesocurridas. Implementacion: p r o c e d u r ei n s e r t a r ( v a ra r b o l : p u n t e r o ,u n D a t o : t i p o D a t o ) ; b e g i n

i fe s V a c i o ( a r b o l )t h e n / /s ec r e ae la r b o l b e g i n n e w ( a r b o l ) ; a r b o l ^ . d a t o : = u n D a t o ; a r b o l ^ . i z q : = n i l ; a r b o l ^ . d e r : = n i l ; a r b o l ^ . a l t u r a : = 0 ; e n d e l s e b e g i n i fu n D a t o<a r b o l ^ . d a t ot h e n i n s e r t a r ( a r b o l ^ . i z q , u n D a t o ) e l s e i n s e r t a r ( a r b o l ^ . d e r , u n D a t o ) ; b a l a n c e a r ( a r b o l ) ; a c t u a l i z a r A l t u r a ( a r b o l ) ; e n d ; e n d ; ELIMINACION: Seutilizaelmismoalgoritmoquesobrerbolesbinariosde bsqueda,peroencadarecursinsedetectanycorrijenerrorespormediode balancear()yseactualizalaalturadelnodoactual.

Implementacion:
p r o c e d u r ee l i m i n a r ( v a ra r b o l : p u n t e r o ,u n E l e m e n t o : t i p o D a t o ) ; v a r a r b o l A u x i l i a r : p u n t e r o ; b e g i n i fu n E l e m e n t o<a r b o l ^ . d a t ot h e n e l i m i n a r ( a r b o l ^ . i z q , u n E l e m e n t o ) e l s e i fu n E l e m e n t o>a r b o l ^ . d a t ot h e n e l i m i n a r ( a r b o l ^ . d e r , u n E l e m e n t o ) e l s e/ /s ee n c o n t r oe le l e m e n t oae l i m i n a r b e g i n / /e su n ah o j a i f( e s V a c i o ( a r b o l ^ . i z q )A N De s V a c i o ( a r b o l ^ . d e r ) )t h e n d i s p o s e ( a r b o l ) e l s e / /s u b a r b o li z q u i e r d ov a c i o i fe s V a c i o ( a r b o l ^ . i z q )t h e n b e g i n a r b o l A u x i l i a r : = a r b o l ; a r b o l : = a r b o l ^ . d e r ; d i s p o s e ( a r b o l A u x i l i a r ) ; e n d e l s e / /s u b a r b o ld e r e c h ov a c i o i fe s V a c i o ( a r b o l ^ . d e r )t h e n b e g i n a r b o l A u x i l i a r : = a r b o l ; a r b o l : = a r b o l ^ . i z q ; d i s p o s e ( a r b o l A u x i l i a r ) ; e n d / /c a s om a sc o m p l i c a d o e l s e a r b o l ^ . d a t o : = e l i m i n a r M i n i m o ( a r b o l ^ . d e r ) ; e n d ; b a l a n c e a r ( a r b o l ) ; a c t u a l i z a r A l t u r a ( a r b o l ) ; e n d ;

f u n c t i o ne l i m i n a r M i n i m o ( v a ra r b o l : p u n t e r o ) : t i p o D a t o ; v a r d a t o A u x i l i a r : t i p o D a t o ; a r b o l A u x i l i a r : p u n t e r o ; b e g i n i fe s V a c i o ( a r b o l )t h e n w r i t e l n ( E r r o r ) e l s e i fe s V a c i o ( a r b o l ^ . i z q )=f a l s et h e n b e g i n d a t o A u x i l i a r : = e l i m i n a r M i n i m o ( a r b o l ^ . i z q ) ; b a l a n c e a r ( a r b o l ) ; a c t u a l i z a r A l t u r a ( a r b o l ) ; e l i m i n a r M i n i m o : = d a t o A u x i l i a r ; e n d e l s e b e g i n a r b o l A u x i l i a r : = a r b o l ; d a t o A u x i l i a r : = a r b o l A u x i l i a r ^ . d a t o ; a r b o l : = a r b o l ^ . d e r ; d i s p o s e ( a r b o l A u x i l i a r ) ; b a l a n c e a r ( a r b o l ) ; a c t u a l i z a r A l t u r a ( a r b o l ) ; e l i m i n a r M i n i m o : = d a t o A u x i l i a r ; e n d ; e n d ;

10GRAFOS Definicionesfundamentales

Ungrafoesunconjuntosdeobjetosllamadosvrticesonodosunidosporenlacesllamados aristasoarcos,quepermitenrepresentarrelacionesbinariasentreelementosdeunconjunto. UngrafoG=(V,A)estaformadoporunconjuntodevrticesV,yunconjuntodearcos,Acada arcosepresentamedianteunpar(v,w)dondevywpertenecenaV. Sedicequeelvrticewesadyacenteavsiysolosi(v,w)pertenecenA.Enungrafonodirigido conarco(v,w)y,porconsiguiente,(w,v)wesadyacenteavyviceversa. Uncaminoenungrafoesunasecuenciadevrtices,w1,w2wn,talque(wi,wi+1)pertenecenA, para1<=j<n.Lalongituddeuncaminoeslacantidaddearcosquecontiene.Esposibleobtener uncaminoquecomienceytermineenelmismovrtice.Siestecaminotienelongitud1,esdecir elgrafotienearcosdeltipo(v,v),sedicequeelgrafotieneunloop.Engeneralsetrabajaracon grafosdondeestaultimasituacinnoocurre. Uncaminosimpleesaqueldondetodossusvrticessondistintos.Soloelprimeroyelultimo puedencoincidir. Unciclo,esungrafodirigido,esuncaminodelongitudmayoroigualque1dondeelprimeryel ultimovrticeeselmismoW1=Wn.Esteciclosellamaraciclosimplesielcaminoessimple. Encasodegrafosnodirigidos,esnecesarioquelosarcosseandistintos.Laideaesqueel caminou,v,uenungrafonodirigidonopuedeserconsideradouncicloyaquesetratadeunsolo arco(v,u).enungrafodirigidosetratadedistintosarcos. Ungrafoesacclicosinotieneciclos. Ungrafonodirigidoestaconectadosiparacualquierparadevrticesexisteuncaminoquelos une.Ungrafodirigidoconestapropiedadsedicequeestafuertementeconectado.Siungrafo dirigidonoestfuertementeconectado,peroelgrafosubyacente(sindireccinenlosarcos)esta conectado,sedicequeesdbilmenteconectado. Representacinyuso Unamanerasimplederepresentarungrafoesutilizarunamatriz.Estaestructuraesconocida comomatrizdeadyacencia. Paracadaarco(u,v),seasignaM[u,v]:=1(comoformadeindicarqueelarcoexiste)yencaso contrario,elvalordelamatrizescero.Sielarcotieneunpesoasiociado,puedeasignarseM[u,v] :=pesoyutilizarunvalorcentinela,muygrandeomuychicoparaindicarquenoexistearco. Estarepresentacintieneelmeritodeserextremadamentesimple,sinembargo,elespacio necesarioparaguardarlaenmemoria,esproporcionalaN2,siendoNlacantidaddevrtices. Ntesequeeltamaodememoriaesindependientedelacantidaddearcos.Estopuederedundar

enuntamaototalmenteprohibido. Supongamos1000destinosNxN=N=10^6posicionesenmemoria. Unamatrizdeadyacenciaeslarepresentacinadecuadaencasodetenerungrafodenso,es decir,cuandolacantidaddearcosseacercaaN2.Pero,engeneral,estonosecumple.Figura 9.12 Cuandoelgrafoesesparcido,esdecir,quetienepocosarcos,lamejorsolucinesusarunalista deadyacencias.Enestarepresentacin,paracadavrticesemantieneunalistacontodossus adyacentes.Porlotanto,elespaciorequeridoserlasumadeltotaldearcosyeltotaldevrtices. Figura9.13 Lalistadeadyacenciaeslamaneranormalizadaderepresentarungrafo.Losgrafosnodirigidos puedenrepresentarsedelamismaforma,soloquecadaarco(u,v)aparecerendoslistas,conlo cual,elespacioutilizadosereldoble. OPERACIONES. 1Sabersiexisteuncaminoqueunadosvrticesdados. 2Sabercualeselmejorcamino,engeneral.Utilizandoarcosconpeso,dondeeltrminomejor puedeser:mascorto,msbarato,masrpido,etc.

Recorridosdeungrafo

Recorrerungrafosignificatratardealcanzartodoslosnodosqueestnrelacionados conunoquellamaremosnododesalida.existenbsicamentedostcnicaspara recorrerungrafo:anchurayprofundidad. PROFUNDIDAD: Tratadebuscarloscaminosquepartendesdeelnododesalidahastaqueyanoes posibleavanzarms.cuandoyanopuedeavanzarsemassobreelcaminoelegido,se vuelveatrsenbuscadecaminosalternativosquenoseestudiaronpreviamente. ANCHURA Suponerecorrerelgrafo,apartirdeunnododado,enniveles,esdecir,primerolosque estanaunadistanciadeunarcodelnododesalida,despueslosqueestanadosarcos dedistancia,yasisucesivamentehastaalcanzartodoslosnodosalosquepudiese llegardesdeelnodosalida.

11.01MtodosdeOrdenacinelementales:Insercin,SelecccinyBurbuja. Unalgoritmodeordenacineselprocesoporelcual,ungrupodeelementossepuede ordenar. Seleccin: Paraordenarunvectordenelementos,buscarelelementomenorsegnelcriterio adoptadoyloubicaalcomienzo.Paramantenerladimensindelvector,seintercambia cona[1].Acontinuacinsebuscaelsegundoelementomenordelvectoryse intercambiacona[2],yassucesivamentehastaquetodosloselementosestn ordenados. Esnecesariorealizarn1pasadasporelvectorparaordenarlo.Enlaiesimapasada, tomaeliesimomenorylointercambiacona[i].Luegoden1pasadas,elelementon1 hasidoubicadoensulugaryelelementomasgrandequedaacomodado automaticamente. ImplementacionenPascal: p r o c e d u r es e l e c c i o n ( v a rv : t v e c t o r ;n : i n d i c e ) ; v a r i , j , p : i n d i c e ; i t e m : t i p o E l e m e n t o ; b e g i n f o ri : = 1t on 1d o b e g i n / /b u s c ae lm i n i m ov [ p ]e n t r ev [ i ]av [ N ] p : = i ; f o rj : = i + 1t ond o i f( v [ j ]<v [ p ] )t h e n p : = j ; / /i n t e r c a m b i av [ i ]yv [ p ] i t e m : = v [ p ] ; v [ p ] : = v [ i ] ; v [ i ] : = i t e m ; / /i t e r as u c e s i v a m e n t e e n d ; e n d ;

Burbuja(Intercambio): Realizan1pasadassobrelosdatosparaordenarunvectordenitems.Nomuevelos elementosagrandesdistancias,realizacorreccioneslocalesdedistancia1,compara itemsadyacentesylosintercambiasiestandesordenados.Alfinaldelaprimera pasada,sehabrancomparadon1paresyelelementomasgrandehabrasido arrastradohaciaelfinaldelvector.Alfinaldelasegundapasada,elsegundomaximo habrasidoubicadoenlaposicionn1,yasisucesivamente. Enlaiesimapasada,seposicionaraelmaximoentrelosiprimeroselementosdel vector,comparandoi1pareseintercambiandoencadacomparaciondesernecesario. Realizalascomparacioneshastaterminar,auncuandonohayacambios,realizandoun trabajoinnecesario. ImplementacionenPascal: p r o c e d u r eb u r b u j a ( v a rv : t V e c t o r ;n : i n d i c e ) ; v a r i , j , p : i n d i c e ; i t e m : t i p o E l e m e n t o ; b e g i n f o ri : = nd o w n t o2d o / /p o n e re lm a y o re l e m e n t od ev [ 1 ]av [ i ]e nv [ i ] b e g i n f o rj : = 1t oi 1d o i f( v [ j ]>v [ j + 1 ] )t h e n b e g i n / /i n t e r c a m b i a re l e m e n t o s i t e m : = v [ j ] ; v [ j ] : = v [ j + 1 ] ; v [ j + 1 ] : = i t e m ; e n d ; / /i t e r a r e n d ; e n d ;

Segundaimplementacion,cortalapasadasinohubocambios: p r o c e d u r eb u r b u j a 2( v a rv : t V e c t o r ;n : i n d i c e ) ; v a r i , j , p : i n d i c e ; i t e m : t i p o E l e m e n t o ; h u b o C a m b i o : b o o l e a n ; b e g i n i : = n ; r e p e a t / /p o n e re lm a y o re l e m e n t od ev [ 1 ]av [ i ]e nv [ i ] / /c a m b i a rh u b o C a m b i oat r u es ih u b oc a m b i o s h u b o C a m b i o : = f a l s e ; f o rj : = 1t oi 1d o i f( v [ j ]>v [ j + 1 ] )t h e n b e g i n / /i n t e r c a m b i a re l e m e n t o s i t e m : = v [ j ] ; v [ j ] : = v [ j + 1 ] ; v [ j + 1 ] : = i t e m ; h u b o C a m b i o : = T r u e ; e n d ; / /i t e r a r u n t i l( ( i<2 )o rn o th u b o C a m b i o ) ; e n d ; Insercion: Ordenaelvectordeentradainsertandocadaelementoa[i]entrelosi1anterioresqueya estanordenados.Comienzaapartirdelsegundoelemento,suponequeelprimeroya estaordenado.Silosdosprimeroselementosestandesordenados,losintercambia. Tomaeltercerelementoybuscasuposicioncorrectaconrespectoalosdosprimeros. Paracadaelementoi,buscasuposicionconrespectoalosi1elementosanterioresy desernecesarioloinsertaadecuadamente.

Implementacion:
p r o c e d u r ei n s e r c i o n ( v a rv : t V e c t o r ;n : i n d i c e ) ; v a r i , j : i n d i c e ; i t e m : t i p o E l e m e n t o ; h u b o C a m b i o : b o o l e a n ; b e g i n f o ri : = 2t ond o b e g i n i t e m : = v [ i ] ; j : = i 1 ;/ /a p u n t aa lp r i m e re l e m e n t oac o m p a r a r w h i l e( ( j > 0 )A N D( v [ j ]>i t e m ) )d o b e g i n v [ j + 1 ] : = v [ j ] ;/ /s ec o r r e1l u g a ral ad e r e c h a j : = j 1 ; e n d ; v [ j + 1 ] : = i t e m ;/ /i n s e r t ae li t e m e n d ; e n d ;

11.02ComplejidadyOrdendemagnituddeunalgoritmo. Alestudiarelrendimientodeunalgoritmo,tambiensesuelehablardecomplejidad computacional,tratandodeestablecerunafuncionmatematicaqueacoteeltiempode ejecucion(uotrorecursodeinteres),independientementedelconjuntodedatosdeuna corridaespecifica.Ej:MergeSortestaacotadoporunafuncionO(n*log2(n)). Laeficienciarequieredeunusominimodetiempodeprocesamientoydememoria utilizada. Elparametroprimarioparaanalizarlamayoriadelosalgoritmoseselnumerodedatos aserprocesados:N.Interesarelacionareltiempodeejecuciondeunalgoritmoen funciondeN. Clasificaciondealgoritmossegunsutiempodeejecucion: Constante:cadainstruccionseejecutaunavezounnumerofijodeveces, independientementedelosdatos,eltiempodeejecucionseraconstante.Estasituacion noeshabitualencasosreales. LogN:Cuandoeltiempodeejecuciondelalgoritmocreceenformalogaritmicaconla cantidaddedatos.Eselcasodealgoritmosquedividenelespaciodedatosdel problemaensubespaciosdemenormagnitud,disminuyendoeltamaodelproblema originalaunafraccionconstantedelmismo(porejemplo,labusquedadicotomica). N:cuandohayunpequeonumerodeaccionesdeprocesamientosobrecadadato(ej: lectura,multiplicacionpordoseimpresion)yeltiempodeejecucioncrecelinearlmente porN.

N*(logN):eselcasodelosalgoritmosquedividenelespaciodedatosdelproblemaen subespaciodemenortamao,yluegorequierencombinarresultadosparciales.Por ejemplo,elalgoritmomergeSortounprocesamientodedatosdeunaimagenquese tratanporsectoresyluegoseunenparavolveraformarlaimagen. N2:cuandoeltiempodeejecuciondelalgoritmocreceenformacuadratica(ej: solucioneselementalesdeordenaciondevectores),normalmentesignificaquelos datossontratadosdeaparesenundoblelazorepetitivo.Esunlimitanteparala implementacionrealcongrandesvolumenesdedatos. N3oNn:Cuandoeltiempodeejecuciondelalgoritmocreceenformacubicao exponencial,setratadesolucionesqueinsumenmuchotiempoyquesondificilmente aplicablesusandounnumeroimportantededatos.Sedenominansolucionesdirectaso defuerzabruta.Enestoscasosesimportantepoderoptimizarelalgoritmoyreducirla complejidadcomputacional,cambiarlaleycubicaoexponencialenunasolucionlinealo linealalgoritmica. 11.03Anlisisdelosmtodosdeordenacinelementales. Parapodermedirlosdiferentesalgoritmosdeordenacionesnecesariocalcularla cantidaddetrabajoquerealizacadauno.Sedebecontarlacantidaddecomparaciones (C)ydeintercambios(I)queserealizan.Sedenominaintercambioalmovimientoeun itemdentrodelvector. Seleccion: Durantelaprimerapasada,cuandoseleccionaelmenorelementodentrodelvector, realizan1comparaciones.Sobrelasegundapasada,realizan2comparacionespara hallarelsegundominimo.Enlaiesimapasadarealizanicomparacionesparahallarel iesimominimo.Eltotaldecomparacioneses: C : =( n 1 )+( n 2 )+ +2+1 s e l e c c i o n Parahallarlacantidaddecomparacionesrealizadas,seutilizalasiguientefrmula: C : =( n 1 )+( n 2 )+ +2+1 s e l e c c i o n [ C : =1+2+ +( n 2 )+( n 1 )]+2 C : =n+n+ +n+n s e l e c c i o n s e l e c c i o n Porlotanto: C : =n*( n 1 ) / 2 esdeordenn2. s e l e c c i o n Lacantidaddeintercambiosdelmtododeselecciones3 * ( n 1 ) ,yaquesenecesitan n1pasadasparaordenarelvectoryporcadaunadeellasseintercambiandos elementosdelvector,loqueimplica3movimientos.

Burbuja: Paralaprimerapasadarealizan1comparaciones,paralasegunda,n2,engeneral, paralaiesimapasadarealizanicomparaciones.Sepuedeafirmarque: C : =n * ( n 1 ) / 2 b u r b u j a Dadoqueencadacomparacionseintercambiandoselementosdelvector,serealizan tresmovimientoscadavez(enelpeorcaso): Lacantidaddeintercambiosdelmetodoburbujaes:3*n*(n1)/2 Insercion: Realizaenelmejorcasounasolacomparacion(soloconelelementoanterioryveque estaordenado),enelpeorcaso,tantascomparacionescomoelementosanteriores tenga(elpeorcasoesquelotengaqueinsertaralcomienzodelvector). n 1< =C =n * ( n 1 ) / 2 i n s e r c i o n< Enelmejorcaso,elelementoanalizadodebequedardondeesta,estoimplicados movimientos.Enelpeorcaso,deberealizarademasdeestosdosmovimientos,un movimientomasporcadaelementoquedebadesplazarhacialaderechaparagenerar ellugarenelvectordondeinsertarycomoelpeorcasoeslainsercionenelprimer lugar,estenumerodemovimientosseraigualalacantidaddecomparaciones realizadasenelpeorcaso.Porlotanto: 2 * ( n 1 )< =I =2 * ( n 1 )+n * ( n 1 ) / 2=( n + 4 ) * ( n 1 ) / 2 i n s e r c i o n <

11.04Mtodosdeordenacineficientes. Estosalgoritmostienenuntiempopromediodeejecucionproporcionalan * l o g ( n ) , 2 hacenusodelarecursividad. 11.04.01Ordenamientopormezcla. Merging: Aplicalatecnicadivideyvenceras,divideelproblemadeordenarunvectorden elementosendossubproblemas: Ubicarelelementomenorenlaprimeraposicion. Ordenarelrestodeloselementos,apartirdelsegundoenadelante.

Laideadeestatecnicaesqueladivisiondetareasnorepresentandostareasdeigual complejidad,esdecir,sisedividedeformaequitativaseriaposibleobtenerunalgoritmo maseficiente. Porlotanto,sedebe: Dividirelvectorendospartesigualesden/2elementos. Ordenarcadasubvector. Hacerunmergedelosdossubvectoresparaobtenerelresultadofinal. Implementacion:


/ /u n i rv e c t o r e s p r o c e d u r em e r g e ( v a ra : t V e c t o r ;i n i c i o , m e d i o , f i n : i n d i c e ) ; v a r v : t V e c t o r ;/ /v e c t o ra u x i l i a rp a r ai ra r m a n d ol am e z c l a j , k : i n d i c e ;/ /i n d i c e sp a r ar e c o r r e rl o ss u b v e c t o r e s b e g i n j : =i n i c i o ; k : =m e d i o + 1 ;/ /m e d i os e a l ae lf i n a ld e lp r i m e rs u b v e c t o r i : =0 ;/ /v e c t o rd es a l i d aa c t u a l m e n t ev a c i o w h i l e( j< =m e d i o )A N D( k< =f i n )d o/ /m i e n t r a sh a y ae l e m e n t o se na m b o s b e g i n i: =i + 1 ; / /c o p i aal as a l i d ae le l e m e n t om a sc h i c o i fa [ j ]<a [ k ]t h e n b e g i n v [ i ]: =a [ j ] ; j: =j+ 1 ; e n d e l s e b e g i n v [ i ]: =a [ k ] ; k: =k+1 ; e n d ; e n d ; / /a lm e n o su n od el o ss u b v e c t o r e sh at e r m i n a d o ,h a yq u ec o p i a r / /l oq u eq u e d ad e lo t r o . w h i l e( j< =m e d i o )d o/ /m i e n t r ah a y ae l e m e n t o se ne lp r i m e rs u b v e c t o r b e g i n i: =i+1 ; v [ i ]: =a [ j ] ; j: =j+1 ; e n d ; w h i l e( k< =f i n )d o/ /m i e n t r ah a y ae l e m e n t o se ne ls e g u n d os u b v e c t o r b e g i n i: =i+1 ; v [ i ]: =a [ k ] ; k: =k+1 ; e n d ; / /f a l t aa s i g n a rva lv e c t o rd es a l i d aa a: =v ; e n d ;

/ /o r d e n a c i o n p r o c e d u r em e r g e S o r t ( v a ra : t V e c t o r ;i n i c i o , f i n : i n d i c e ) ; v a r m e d i o : i n d i c e ; b e g i n i fi n i c i o<f i nt h e n b e g i n m e d i o : =( i n i c i o+f i n )d i v2 ; m e r g e S o r t ( a , i n i c i o , m e d i o ) ; m e r g e S o r t ( a , m e d i o + 1 , f i n ) ; m e r g e ( a ,i n i c i o ,m e d i o ,f i n ) ; e n d ; e n d ;

Senecesitanlog2(n)procesosdemergeparaordenarelvector:elprimeroordenando unsubvectorde2elementos,elsegundode4elementosyasisucesivamente. Cadaunodeestosmergesrequierenncomparacionescomomaximo,mergeSort requieren*[log2(n)]comparaciones. OtraventajadelmergeSortesquecadaunodelosprocesosdeordenacionparciales podrianejecutarsealmismotiempoendiferentesprocesadores,incrementandola eficienciaencuantoaltiempo. UnadesventajadelmergeSortesquerequierememoriaauxiliarparamezclarlosdatos ordenadamente.Silaestructuraaordenaresmuygrande,puederesultarprohibitivo utilizarotraestructuradeigualtamaopararealizarlamezcla. 11.04.02Ordenamientorpido. Requiereunnumerodecomparacionesproporcionalanlog2(n)enpromedio,para ordenarunvectordenelementos.AdiferenciaquemergeSort,nonecesitaun almacenamientoauxiliar. Esunmetododeordenamientorecursivo,trabajaordenandodossubvectoresdela mitaddetamaoqueeloriginaldondetodosloselementosqueseencuentranenla primeramitadsonmenoresalosdelasegundamitad,luegodeordenarambaspartes, elvectorcompletoquedaraordenadodirectamente. Serequierenn1comparacionesycomomuchon+1intercambiosparadividirelvector denelementosendospartes.Enpromedio,elvectorquedasubdivididoendosdeigual tamao,dondealusarQuickSortserequiereenpromedio,unnumerode comparacioneseintercambiosproporcionalan*log2(n).QuickSortresultamaseficiente queMergeSortporqueelalgoritmoutilizadoparadividirelvectorrealizamenos intercambios. ElpeorcasodeQuickSortresultasermuyineficiente.Estepeorcasoocurrecuandola listayaseencuentraordenada,porlotanto,elitemqueseencuentraaladerechaya estaensulugarylarecursion,enlugardeordenarsubvectorescadavezmaschicos, trabajasobreunsubvectordeununicoelementoyotromuygrande.Siempreexistiran casosdondeelQuickSortempleeunacantidaddecomparacionesproporcionalan2.

Implementacion:
p r o c e d u r eQ u i c k S o r t ( v a ra : t V e c t o r ;n : i n d i c e ) ; p r o c e d u r ed i v i d i r( v a ra : t V e c t o r ;p r i , u l t : i n d i c e ;v a rm e d i o : i n d i c e ) ; / /R e o r d e n aa [ p r i m e r o ] , . . . , a [ u l t i m o ]ys e t e ae lv a l o rd em e d i od em a n e r aq u e / /a [ i n i c i o ] , . . . , a [ m e d i o 1 ]< =a [ m e d i o< =a [ m e d i o + 1 ] , . . . , a [ u l t i m o ] v a r i z q , d e r : i n d i c e ; x : t i p o E l e m e n t o ; b e g i n / /s ee l i g eu nxe ne lv e c t o rys em a r c ai z qyd e rd em o d oq u e : / /1 .a [ i ]< = xs ii n i< =i<i z q / /2 .x< =a [ j ]s id e r<j< =u l t / /3 .E x i s t eu nl u g a rp a r axe na [ d e r ] x: =a [ u l t ] ; i z q: =p r i ; d e r: =u l t ; / /s em u e v ei z qyd e rp r e s e r v a n d ol a sp a u t a s1 .y3 . w h i l ei z q<d e rd o b e g i n / /s em u e v el am a r c ai z qh a c i al ad e r e c h a w h i l e( i z q<d e r )A N D( a [ i z q ]< =x )d o i z q: =i z q+1 ; i fi z q<d e rt h e n b e g i n a [ d e r ]: =a [ i z q ] ; d e r: =d e r-1 ; e n d ; / /s em u e v el am a r c ad e rh a c i al ai z q u i e r d a w h i l e( i z q<d e r )A N D( x< =a [ d e r ] )d o d e r: =d e r1 ; i fi z q<d e rt h e n b e g i n a [ i z q ]: =a [ d e r ] ; i z q: =i z q+1 ; e n d ; e n d ; m e d i o: =d e r ; a [ m e d i o ]: =x ; e n d ;/ /f i nd ep r o c e d u r eD i v i d i r p r o c e d u r es o r t( v a ra : t V e c t o r ;i n i ,u l t : i n d i c e ) ; / /o r d e n aa [ i n i c i o ] , . . . , a [ u l t i m o ]d em a n e r ar e c u r s i v a v a r m e d i o : i n d i c e ; b e g i n i fi n i<u l tt h e n b e g i n d i v i d i r ( a , i n i , u l t , m e d i o ) ; s o r t ( a , i n i , m e d i o 1 ) ; s o r t ( a , m e d i o , u l t ) ; e n d ; e n d ;/ /f i ns o r t b e g i n s o r t ( a , 1 , n ) ;e n d ;/ /f i nQ u i c k S o r t ;

11.05Anlisisdelosmtodosdeordenacineficientes. 11.06MtodosdeBsqueda Losalgoritmosdebusquedasonlosprocesosqueubicaninformacionenparticularen unacolecciondedatos. 11.06.01BsquedaSecuencial Comienzadesdeelprincipiodelaestructura,analizandoloselementosquecontiene unoaunohastaencontrarloohastallegaralfinal. Implementacion:


p r o c e d u r es e c u e n c i a l ( v a ra : t V e c t o r ;v a rn : i n d i c e ;x : t i p o E l e m e n t o ;v a rj : i n d i c e ) ; b e g i n a [ n + 1 ]: =x ; j: =1 ; w h i l e( x< >a [ j ] )d o j: =j+1 ; i f( j>n )t h e n n: =n+1 ; e n d ;

11.06.02BsquedaBinaria. Sebasaenlaestrategiadivideyvenceras,aplicaelmismocriterioutilizadopara encontrarel0deunafuncioncontinua.Secomparaelitembuscadoconelquesehalla enelmediodelvector.Silosdoselementossoniguales,labusquedahaterminado.Si elelementobuscadoesmenorqueelseencuentraenelpuntomediodelvector,se continualabusquedaenlaprimeramitaddelvector,sinoenlasegundamitad.Comoel vectorestaordenado,permiteignorarel50%delosdatosconunaunicacomparacion. Seiteraestemetodo,restringiendoelanalisisaporcionescadavezmaspequeasdel vector.Elprocesoterminacuandoseencuentraelelementobuscado(puntomedio coincidente)ocuandolaporciondelvectorseatanpequeaqueyanocontenga elementos,porloquenoseencontroelelemento.

Implementacion:
p r o c e d u r eb i n a r i a ( v a ra : t V e c t o r ;n : i n d i c e ;x : t i p o E l e m e n t o ;v a rj : i n d i c e ) ; v a r p r i , u l t : i n d i c e ; m e d i o : i n d i c e ; b e g i n j: =0 ; p r i: =1 ; u l t: =n ; m e d i o: =( p r i+u l t )d i v2 ; w h i l e( p r i< =u l t ) A N D( x< >a [ m e d i o ] )d o b e g i n i fx<a [ m e d i o ]t h e n u l t: =m e d i o-1 e l s e p r i: =m e d i o+ 1 ; m e d i o: =( p r i+u l t )d i v2 ; e n d ; i fp r i< =u l tt h e n j: =m e d i o e l s e j: =0 ; e n d ;

11.06.03Hashing. Sonestructurasdedatosqueseusanparamanejarunasecuenciadeelementos,detal formaquecadaelementotieneunvalorclavequeperteneceaunrangodevalores. Tienenlafinalidadderealizarunabusquedaoeliminaciondeunregistroconuna complejidadconstante. Laorganizacionidealdeunatablaesaquellaenlacualelcampollavedeloselementos correspondedirectamenteconelindicedelatabla. 11.06.03.01Colisiones. Ocurreunacolisioncuandodosclavesdiferentesdanlamismadireccion. 11.06.03.02FuncionesdeHashing. Lafunciondehashingseaplicacuandonoserequiereordenenlosdatos.Lafuncionde hashtienedosfunciones:primerodeterminaellugardondeseinsertaraelelemento, segundodetectarellugarparaaccederalelemento.Seutilizaelhashpararealizar busquedasrapidasynonecesitaprocesarloselementosenformaordenada. Ordenaenfunciondelafunciondehash,nosirvesiesnecesarioquelosdatosesten ordenados. Paraevitarlascolisionesseutilizaeldireccionamientocerradoodireccionamiento

abierto. 11.06.03.03Direccionamientoabiertoycerrado. Direccionamientocerrados:Enlatcnicamssimpledeencadenamiento,cadacasilla enelarrayreferenciaunalistadelosregistrosinsertadosquecolisionanenlamisma casilla.Lainsercinconsisteenencontrarlacasillacorrectayagregaralfinaldelalista correspondiente.Elborradoconsisteenbuscaryquitardelalista. Latcnicadeencadenamientotieneventajassobredireccionamientoabierto.Primeroel borradoessimpleysegundoelcrecimientodelatablapuedeserpospuestodurante muchomstiempodadoqueelrendimientodisminuyemuchomslentamenteincluso cuandotodaslascasillasyaestnocupadas.Dehecho,muchastablashash encadenadaspuedennorequerircrecimientonunca,dadoqueladegradacinde rendimientoeslinealenlamedidaquesevallenandolatabla.Porejemplo,unatabla hashencadenadacondosveceselnmerodeelementosrecomendados,serdos vecesmslentaenpromedioquelamismatablaasucapacidadrecomendada. Lastablashashencadenadasheredanlasdesventajasdelaslistasligadas.Cuandose almacenancantidadesdeinformacinpequeas,elgastoextradelaslistasligadas puedesersignificativo.Tambinlosviajesatravsdelaslistastienenunrendimientode cachmuypobre.

Direccionamientoabierto: Eneldireccionamientoabiertosepuedenalmacenarlosregistrosdirectamenteenel arreglo.Lascolisionesseresuelvenmedianteunsondeodelarreglo,enelquese buscanlocalidadesdelarreglohastaqueelregistroesencontradoosellegaauna casillavacia,indicandoquenoexisteesallaveenlatabla. Laestructuratienelamismacantidaddeloselementosquevanatener,porej:de1a 10,en1estalacabezadelalistadetodosloselementosquecolisionaroncon1,etc.

11.07AnlisisdelosalgoritmosdeBsqueda. Alanalizarunalgoritmodebusqueda,esdeinteresconocerelcasomejoryelcaso peor. Siempretendramayorrelevanciaelcasopeorqueelcasomejor.Nointeresatantoel mejorcaso(datospreviamenteordenados),sinoelpeorcaso(maximodesordendelos datos).

EltiempodeejecucionT(n)deunalgoritmosedicedeordenf(n)cuandoexisteuna funcionmatematicaf(n)queacotaaT(n)delaforma: T(n)=O(f(n))siexistenconstantescynon0talesqueT(n)cf(n)cuandonn0. Buscar:mejorypeorcasoparabinariaysecuencial. BusquedaSecuencial: Enelpeorcasoelelementoseencuentraenlaultimaposiciononoseencuentra.Esto daeltiempo:


n1 i=0

1 = n

Luego,labusquedalinealesdeO(n)yT(n). BusquedaBinaria: EltiempodelprogramadentrodelloopesdeO(1),luegoelanalisisrequieredeterminar cuantasvecesseejecutaelloop.Elloopcomienzaconderizq=n1yterminacon izq>der(enelpeorcaso).Alolargodelloopelvalorderizqsedividealmenosala mitaddesuvaloranterior,luegolacantidaddeiteracionesseradelaformalog2n. Paracalculareltiempodeejecucion: T(n)=T( n 2 )+c n T( 2 )=T( n 4 )+c yasisucesivamente T(2)=T(1)+c T(1)=c T(0)=c Seac=1yaquelasoperacionesdentrodelloopsonO(1).Simplificamosyobtenemos T(n)=T(0)+k=(k+1).Tenemosquehallarelvalordekquecoincideconlacantidadde vecesquedividimosentre2comenzandoennyterminandoen1. Supongamosnesdelaforma2k(parahallareltiempoconsideramosaquelktalque2k esunacotasuperiorden).Luegodividiremosentre2alosumokveces.Perosin=2k, log2n=k.Luego,eltiempodeejecucionesdelaformalog2n+1. ParademostrarqueesO(log2n),tenemosqueencontrarunaconstantec1talquelog2n +1c1*log2n.Tomamosc1=2luegolog2n+1log2n+log2ncuando1log2nquees ciertoparan2. Mejorcaso=elementoenelmediodelarray.Peorcaso=elementonoseencuentra.El tiempoquecalculamoscorrespondealacotasuperiordelpeorcaso.Lacotainferioren elpeorcasocoincide(realizamoslasmismasoperaciones).

También podría gustarte