Professional Documents
Culture Documents
Bibliografa:AlgoritmosyEstructurasdedatosdeAguilaryMartinez.Unidad1,2y8 Autor:IngRolandoSimonTitiosky.
TiposdeDatos
UnTipodeDatoesunconjuntode valoresyoperacionesasociadas
ProporcionadosporlosLenguajes(C,C++, Pascal,etc)paraclasificardiversasclasesde datos.Ayudanen: Prevencinydeteccindeerrores ComprensinyOrganizacindelasideas acercadelosdatos Identificacinydescripcindelaspropiedades nicasdeciertosdatos.
Ej:6+5+Aire:Error,sesumantiposdisimiles.
TiposdedatosPrimitivos
Sonlosmassimples,ATOMICOS Noseconstruyendesdeotros. Nosondescomponibles Ej:Entero,flotante,real,carcter,lgico. TipoEntero:
Valores:4,3,2,1,0,1,2,3,4 Operaciones:*,+,,/,++,.
Susformasderepresentacininternavarande SistemaaSistema.
TiposCompuestosyAgregados
LosTIPOSCOMPUESTOSsepueden descomponerenSubcampos.
Ej:NmerodeTelfono:CodPais,CodArea, NumeroLocal.
LosTIPOSAGREGADOSson coleccionesdedatosdelmismotipo.
Tiposagregadosbsicos:Arrays,Cadenasy registros.
LaNecesidaddelas EstructurasdeDatos
UnaEstructuradedatos esunaOrganizacin oAgregacindedatosCompuestosy Atmicos
Secreanentiempodediseo Sepuedenanidarentreellas. Requierenespacioenmemoriaparaalmacenarlas
Objetivo:resolverproblemaseficientemente.
Eficiente:resuelveelproblemadentrodelas restriccionesderecursos. Costo:cantidadderecursosquelasolucin consume.
Abstraccin
[Wulft]:LaAbstraccinesunatcnicaparatratarla complejidad:Permiterepresentarlascaractersticas
esencialesdeunobjetoreal,sinpreocuparsedesus restantescaractersticas.
EsEsencialdelfuncionamientonormaldelamentehumana.
UnaAbstraccin(ModeloMental)debesermassencillo queelsistemaalcualimita.
Elmapacomomodelodelacarretera:indicasutopografa, altura,distancias,etc,mientrasignoradetallesirrelevantes (flores,materialdelacarretera,etc.)
LaHistoriainiciaconlosProcedimientos,continacon losMdulos,pasaporelTADyterminaconlosObjetos.
Historiadela AbstraccindelSoftware
Lahistoriaevolucionadesdeunnivelmnimode
Abstraccin,construyendonuevas,apoyndosepara elloenlasAbstraccionesdenivelesanteriores.
EstasAbstracciones,listadasensecuencia,fueron:
InstruccinBinarias:LosProgramadoresmanipulaban directamenteinterruptoresdelComputador. Ensamblador:NemotcnicasqueeranAbstracciones diseadasparaqueelProgramadornotuvieraquerecordarlas largassecuenciasde1sy0sdelasinstrucciones MacroInstrucciones:AgrupacinLgicadeoperaciones. LenguajesdeProgramacindeAltoNivel:permitialos programadoresdistanciarsedelasArquitecturasespecficasde lamquinadondecorrerasusprogramas.
AparecieronlosProgramasdePropsitoGeneral. SentenciasdeControl.
AbstraccinenProgramacin
Loslenguajessonherramientaspara implementarmodelosabstractos .
LasAbstraccionespuedenser: AbstraccindeControl:DescribeelOrdenen queseejecutanlasSentenciasoProcedimientos.
LenguajedeControl:Sentencia,IteracinySeleccin AbstraccionesdeProcedimiento:Sebasaenla utilizacindefuncionessinsabercmoseimplementan.
AbstraccindeDatos:Permiteinventartiposde datosparamejorarlarepresentacindelproblema.
Redundaenprogramasmascortos,flexiblesylegibles. LosNuevosTipossellamanTADs
Historia:
ProcedimientosoFunciones
Conjuntodetareascomunesyrepetitivas, reunidasunasolaentidadparaserReutilizada. Seevitaduplicarcdigoporlanecesidadde correccinyverificacin. 1eraformadeOcultamientodelaInformacin (muyprecaria):
LosprogramadoresqueusanelProcedimiento(yno lohicieron)nosabencomoesthecho,sabencomo usarlo. Nohacebuenmanejodelasvariables:debanser globalesynosepodalimitarelaccesoaellasporlo quelosprogramadoresdebanconocerlas.
Historia:Mdulos
ConjuntodeFuncionesCoherentesaUna Abstraccin,compartendatosyfunciones. Constade2partes:
Interfaz:CompuestaporPRIMITIVASpblicas. Implementacin:PrivadaalMdulo.
2daformadeOcultalaInformacin:Encapsula
Mejorala1eraForma:sinosenecesitaalgndato, nosepermiteelacceso. C/MduloeslomsIndependienteposible,as Intentaevitarqueanteuncambioensu Implementacin,seafectensusInterfaces.
NoPermitenInstanciar:capacidaddehacer mltiplescopiasdelazonadedatos.
Modularidad
SubdividirunaAplicacinenpiezasms pequeasProduceProgramasModularesdemenor complejidadc/uqueelProgramaCompleto. [Booch]LaModularidadeslaPropiedaddeun
Sistemaquehasidodescompuestoenunconjunto deMduloscohesivosydbilmenteacoplados.
Acoplamiento:EntreMdulos Mdulon Mduloi Mduloj Cohesin: IntraMdulo
Acoplamiento
EselGradodeInterdependenciaentremdulos.
Comolaestructurainternadeunmoduloafectaaotrodiferente.
Estegradosirveparaevaluarlacalidaddeldiseo Objetivo:MINIMIZARelAcoplamiento
FacilitarLasustitucindeunMduloporotro:Solounpequeo grupodemdulosseverafectadoporelcambio Facilitarelseguimientodeunerrorporelaislamientodelmdulo defectuoso.
Grado de Acoplamiento Grado de Mantenibilidad Alto (fuerte) Gamaintermedia Bajo (dbil) Bajo Gamaintermedia Alto
Cohesin
DescribelasInteraccionesdentrodeun Modulo.
EsunaextensindelconceptodeOcultamientodela informacin
ReglasdeModularizacin
AlconstruirMdulos,selasdeberespetar: 1. UnidadesModulares:ElLenguajedeprogramacin debesercapazdecrearlasymanipularlas.
Ej:EnC,lainclusin.hysu.c
2. InterfacesAdecuadas:PartedelMdulovisible desdeelexterior.
EsbuenopocasinterfaceshaciafuerayentreMdulos.
4. Ocultamientodelainformacin:CadaMdulodebe representaralmenos,UnaAbstraccin.
TAD
Tipoabstractodedatodefinidoporun programador.Estacompuestode
UnaEstructuradeDatos Operacionesquemanipulanesasestructuras.
TAD:Ventajas
EnGral.Mejora Laconceptualizacindelproblema LaRobustez:permitelacomprobacindetipos queevitarerroresentiempodeejecucin EltiempodeCompilacin:Engrandesproyectos deSWexistirnmdulosprecompilados. SeparalaImplementacindelaespecificacin: permitemodificarsinalterarlaespecificacin ElgradodeReutilizacindelSoftware LaSemnticadelTipo:agrupaoperaciones
PartesdeunTAD
Especificacin:DescribequehaceelTAD, independientedecmolohace.
Sintaxis:definelosformatosdelasoperacionesyel tipoderesultados,sunombre,susparmetros. Semntica:defineparacadaoperacincualessu posiblesalida.
Implementacin
Representacin:especificacomosealmacenael TADenmemoria
archivo.h :interfacesylostiposdedatoscreados.
Algoritmo:especificanlospasosdentrodecada operacindelTAD
archivo.c :implementalainterfazysusfunciones auxiliares.
TAD:Especificacin
DescribeelComportamientodelTAD ConstadeladefinicindelosDatosylas Operaciones. Puedetenerunenfoque
Informal:DescripcinenLenguajeNatural. Formal:conjuntodeaxiomasquedescribenla semnticaylasintaxis.
EjemplodeEspecificacinInformal
TADConjunto:coleccindeElementossinduplicados, encualquierorden.(ElementopuedeserunTADprevio obienuntipobase) Operaciones
ConjuntoVacio: Creaunconjuntovaco
Retorna1sinopudocrearlo.
Union(Conjunto,Conjunto):realizalaUninentrelosdos conjuntossindejarduplicados.
RetornaunpunteroaConjunto.
EspecificacindeTADenC: conjunto.h
typedefstructConjunto { TipoDato*cto/*PtroaunalistadeelementosTipoDatodelconjunto*/ intcardinal /*Cantidaddeelementosdelconjunto*/ intcapacidad/*Cantidadmaximadeelementosdelconjunto*/ } voidconjuntoVacio(Conjunto*c) intesVacio(Conjuntoc) voidaadir(Conjunto*c,TipoDatoelemento) voidretirar(Conjunto*c,TipoDatoelemento) intpertenece(Conjuntoc,TipoDatoelemento) intcardinal(Conjuntoc) ConjuntounionC(Conjuntoc1,Conjuntoc2)
ImplementacindelTAD:conjunto.c
#includeconjunto.h voidconjuntoVacio(Conjunto*c) { c>cardinal=0 c>capacidad=M c>cto=(TipoDato*)malloc(M*sizeof(TipoDato)) } intesVacio(Conjuntoc) { return(c.cardinal==0)} intpertenece(Conjuntoc,TipoDatoelemento) { intk,encontrado for(k=encontrado=0,k<c.cardinal&&!encontrado,k++) encontrado=iguales(c.cto[k],elemento) returnencontrado } voidaadir(Conjunto*c,TipoDatoelemento) { if(!pertenece(*c,elemento)).. }
AlgoritmosyProgramas
Algoritmo:conjuntodeinstruccionesordenadas,que resuelvenunproblemaespecifico.
Nosonnicos,porloquepuedentenerdiferenteEficiencia. SelosescribeenSeudocdigo. esunarepresentacinidentada,enunidiomabase.
Nopuedeserejecutadoporunacomputadora.
Unbuenalgoritmodebetenerlaspropiedadesde:
ExactitudyCorreccin. Especificarclaramentesusentradasyc/instruccinsinambigedad. Etapasbiendefinidasyfinitas Descripcinderesultadooefecto. Fcildeentender,codificarydepurar. Eficienteusodelcomputador.
Programas:EslarepresentacinconcretadeunAlgoritmo (sutraduccin)codificadoenunlenguajedeprogramacin.
DebeserVerificableyEficiente
Verificacin
Eslaevaluacindelasolucinysupotencial usocomoherramienta.
UnAlgoritmoesCorrecto:siseobtienela respuestaparalacualfuecreado.
Eficiencia
LaEficiencianosladaelAnlisisdeAlgoritmos:
DimensinTemporal:Medidadeltiempoempleado. DimensinEspacial:medidadelosrecursosinvertidos.
Eficiencia=F(n)
siendonlacantidaddeelementosaserprocesados
Eficiencia(OrdenesdeMagnitud)
BuclesLineales:
E=F(n)=n
i=0 Mientrasi<n Cdigo i++ FinM i=1 Mientrasi<n Cdigo i*=2 FinM
Bucleslogartmicos:avancei*=a
E=F(n)=Log 2 n E=F(n)=Log a n
BuclesAnidados:paraybuclesdeniteracionesc/u
y E=F(n)=n *n *..n =n 1 2 y
Recursividad:seinvocaKvecesasimismoconun loteinicialn
n E=F(n)=k
MedicindelaEficiencia
Laestimacindebeserindependientedela plataformaylaLenguajeconquesecodificar perodebereflejarsusdiferencias. UsamoselOrdendeMagnitud(Ogrande)de laEficienciadelTiempoydelosRecursos.
SelocomplementaconlaTasadecrecimientodel programaparaevaluarsucomportamientoFuturo.
CmocompararlaEficienciaRealde2 Algoritmos?
Programndolos,implementndolosymidiendopara elmismoLotedePrueba:eltiempodeejecuciny losrecursosutilizados.
Suelesercaro,yunavezrealizadonosuelesersencillo volveratrsycorregir
AnlisisdeRendimiento
MediantelacomplejidadenelTiempoyenel Espacio
ComplejidadenelTiempo:cantidaddetiempo necesarioparalaejecucin ComplejidadenelEspacio:cantidaddememoria necesariaparalaejecucin
TiempodeEjecucin:dependerdelprograma ydesuentrada(cargadetrabajo).
Eltiempomediosuelesermasrealista.Parausarlo todoslostiposdeentradassonequiprobables. ElTiempoMximodependedelaCargaMxima:y nosiempresepuedeestablecerconclaridadoes estadsticamentevariable
TiempodeEjecucin
EltiempototalparaunaFuncinsepuede determinarporeltiemporequeridopara cadainstruccin,multiplicadasporlas vecesqueseejecutan.
i=0 Mientrasi<n
i++
t1 t2
t3
FinM
t4
T(n)=t1+n*t2+n*t3+t4=n(t2+t3)+t1+t4 EficienciaF(n)=n
Complejidadespacial
Cantidaddememoriaparaalcanzarlasolucin.
Dependerdellenguajeelegido.
Enelejemplolasvariablesi,nvariables positivasyenteras.
EnlenguajeC,siendoChar,usa1bytesc/u
M=2bytes
EnLenguajePascal,usandoCharoInteger,usar 2bytescadaUno.
M=4bytes.
ElAlgoritmoimplementadoenLenguaje CtienemenorcomplejidadEspacial.
TrabajosPrcticosUnidad1
COMOMINIMO,REALIZAR: DelaBibliografa
DelCapitulo1:Ejercicios:1.1,1.2,1.3,1.4, 1.5,1.6,1.8,1.9,1.12,1.13,1.15 DelCapitulo2:Ejercicios:2.5,2.7,2.8 DelCapitulo8:
Ejercicios:8.1,8.4,8.5 Problemas:8.3