36433532 Analisis y Diseno de Algoritmos

download 36433532 Analisis y Diseno de Algoritmos

of 127

Transcript of 36433532 Analisis y Diseno de Algoritmos

M MA AN NU UAAL L D DE E A AN N L LI IS SI IS S Y Y D DI ISSE E O O D DE E A AL LG GO OR RI IT TM MO OS S V Ve er rs si i n n 1 1. .0 0 D Di ir re ec cc ci i n n d de e r re ea a I I n nf fo or rm m t ti ic ca a w ww ww w. . i i n nf fo or rm maat ti i c ca a. .i i n na ac ca ap p. . c cl l Pgina 1 Colaboraron en el presente manual: Vctor Valenzuela Ruz [email protected] Docente Ingeniera en Gestin Informtica INACAP Copiap Pgina 2 Cop yr igh t 2003 de Instituto Nacional de Capacitacin. Todos los derechos reservados. Copiap, Chile. Estedocumentopuedeserdistribuidolibreygratuitamentebajocualquiersoportesiemprey cuando se respete su integridad. Queda prohibida su venta y reproduccin sin permiso expreso del autor. Pgina 3 P Pr r e e f fa a cci io o "Lo que debemos aprender a hacer lo aprendemos hacindolo". Aristteles, Ethica Nicomachea II (325 A.C.) Elpresentedocumentohasidoelaboradooriginalmentecomoapoyoala asignaturadeAnlisisyDiseodeAlgoritmosdelsptimosemestredela carreradeIngenieraenGestinInformtica,delInstitutoNacionalde Capacitacin (INACAP). Este documento engloba la mayor parte de la materia de este curso troncal e incluye ejemplos resueltos y algunos ejercicios que sern desarrollados en clases. El manual ha sido concebido para ser ledo en forma secuencial, pero tambin para ser de fcil consulta para verificar algn tema especfico. No se pretende que estos apuntes sustituyan a la bibliografa de la asignatura ni alasclasestericas,sinoquesirvanmsbiencomocomplementoalasnotas queelalumnodebetomarenclases.Asimismo,nodebeconsiderarseun documentodefinitivoyexentodeerrores,sibienhasidoelaboradocon detenimiento y revisado exhaustivamente. Elautorpretendequeseamejorado,actualizadoyampliadoconcierta frecuencia,loqueprobablementedesembocarensucesivasversiones,ypara ello nadie mejor que los propios lectores para plantear dudas, buscar errores y sugerir mejoras. El Autor. Copiap, Enero 2003 Pgina 4 n n d d i ic c e eG Ge en n e er r a a l l Pgina Pr e s e n t a cin7 1.I n t r od u ccin1.1.Motivacin y Objetivos8 1.2.Algunas Notas sobre la Historia de los Algoritmos 10 1.3.Fundamentos Matemticos 11 2. Algor it m osy Pr oblem a s2.1.Definicin de Algoritmo 18 2.2.Formulacin y Resolucin de Problemas19 2.3.Razones par a Estudiar los Algoritmos22 2.4. Formas de Representacin de Algoritmos23 2.5.La Mquina de Turing24 3. Efi ci e n ci ad eAlgor i t m os3.1.Introduccin25 3.2.Concepto de Eficiencia25 3.3.Medidas de Eficiencia26 3.4.Anlisis A Priori y Pr ueba A Posteriori 27 3.5.Concepto de Instancia27 3.6. Tamao de los Datos28 3.7.Clculo de Costos de Algoritmos 3.7.1.Clculo de eficiencia en anlisis iterativo29 3.7.2.Clculo de eficiencia en anlisis recursivo 29 3.8. Principio de Invarianza 31 3.9. Anlisis Peor Caso, Mejor Caso y Caso Promedio 31 4.An lis isd eAlgor it m os 4.1.Introduccin34 4.2.Tiempos de Ejecucin34 4.3.Concepto de Complejidad 36 4.4. rdenes de Complejidad 37 4.5.Notacin Asinttica4.5.1.La O Mayscula 39 4.5.2.La o Minscula39 4.5.3.Diferencias entre Oy o 42 4.5.4.Las Notaciones y 42 4.5.5.Propiedades y Cotas ms Usuales 42 4.6. Ecuaciones de Recurrencias 4.6.1.Introduccin45 4.6.2.Resolucin de Recurrecias 45 Pgina 5 4.6.3.Mtodo del Teorema Maestro45 4.6.4. Mtodo de la Ecuacin Caracterstica46 4.6.5.Cambio de Variable 48 4.7. Ejemplos y Ejercicios 49 5.Es t r a t e gia sd eDis e o d eAlgor it mos5.1.Introduccin 51 5.2.Recursin51 5.3.Dividir para Conquistar55 5.4.Programacin Dinmica57 5.5.Algoritmos vidos 58 5.6.Mtodo de Retroceso (backtracking)60 5.7.Mtodo Branch and Bound 61 6.Algor i t m osd eOr d e n a m i e n t o 6.1.Concepto de Ordenamiento 63 6.2.Ordenamiento por Insercin 63 6.3.Ordenamiento por Seleccin 64 6.4. Ordenamiento de la Burbuja (Bublesort ) 65 6.5.Ordenamiento Rpido (Quicksort)65 6.6. Ordenamiento por Montculo ( Heapsort )68 6.7. Otros Mtodos de Or denamiento 6.7.1.Ordenamiento por Incrementos Decrecientes74 6.7.2.Ordenamiento por Mezclas Sucesivas75 7.Algor it m osd e B s q u ed a7.1.Introduccin 78 7.2.Bsqueda Lineal78 7.3.Bsqueda Binaria 80 7.4. rboles de Bsqueda81 7.5.Bsqueda por Transformacin de Claves (Hashing)81 7.6. Bsqueda en Textos 7.6.1.Algoritmo de Fuerza Bruta 88 7.6.2.Algoritmo de Knuth- Morris- Pratt 88 7.6.3.Algoritmo de Boyer-Moore92 8.Teor ad e Gr a fos8.1.Definiciones Bsicas 97 8.2.Representaciones de Grafos 8.2.1.Matriz y Lista de Adyacencia101 8.2.2.Matriz y Lista de Incidencia 103 8.3.Recorridos de Grafos 8.3.1.Recorridos en Amplitud 104 8.3.2.Recorridos en Profundidad106 8.4. Grafos con Pesos 108 8.5.rboles108 Pgina 6 8.6. rbol Cobertor Mnimo 8.6.1.Algoritmo de Kruskal109 8.6.2.Algoritmo de Prim111 8.7. Distancias Mnimas en un Grafo Dirigido 8.7.1.Algoritmo de Dijkstra113 8.7.2.Algoritmo de Ford114 8.7.3.Algoritmo de Floyd- Warshall115 9.Com p lejid a dCom p u t a cion a l 9.1.Introduccin 118 9.2.Algoritmos y Complejidad 118 9.3.Problemas NP Completos118 9.4. Problemas Intratables121 9.5.Problemas de Decisin 123 9.6. Algoritmos No Determinsticos 124 Bibliogr a fa 126 Pgina 7 Pr es en t a cin ElcursodeAnlisisyDiseodeAlgoritmos(ADA)tienecomopropsito fundamentalproporcio naralestudiantelasestructurasytcnicasdemanejode datosmsusualesyloscriteriosquelepermitandecidir,anteunproblema determinado,culeslaestructuraylosalgoritmosptimosparamanipularlos datos. Elcursoestdiseadoparapropor cionaralalumnolamadurezylos conocimientosnecesariosparaenfrentar,tantounagranvariedaddelos problemas que se le presentarn en su vida profesional futura, como aquellos que se le presentarn en los cursos ms avanzados. El temario gira en torno a dos temas principales: estructuras de datos y anlisis de algoritmos.Haciendonfasisenlaabstraccin,sepresentanlasestructurasde datosmsusuales(tantoenelsentidodetilescomoeneldecomunes),sus definiciones,susespecificacionescomotiposdedatosabstractos(TDA's),su implantacin, anlisis de su complejidad en tiempo y espacio y finalmente algunas desusaplicaciones.Sepresentantambinalgunosalgoritmosdeordenacin,de bsqueda, de recorridos en grficas y para resolver problemas mediante recursin yretrocesomnimoanalizandotambinsucomplejidad,loqueconstituyeuna primeraexperienciadelalumnoconelanlisisdealgoritmosyleproporcionar herramientas y madurez que le sern tiles el resto de su carrera. Hayqueenfatizarqueelcursonoesuncursodeprogramacinavanzada,su objetivoesprepararalestudiantebrindndoleunavisinampliadelas herramientas y mtodos ms usuales para la solucin de problemas y el anlisis de laeficienciadedichassoluciones.Alterminarelcursoelalumnoposeerun nutrido"arsenal"deconocimientosdelosquepuedeecharmanocuandolo requieraensufuturavidaacadmicayprofesional.Sinembargo,dadasestas caractersticasdelcurso,marcageneralmentelafronteraentreunprogramador principianteyunomaduro,capazdeanalizar,entenderyprogramarsistemasde software ms o menos complejos. Pararealizarlasimplantacionesdelasdistintasestructurasdedatosydelos algoritmos que se presentan en el cursose har uso del lenguaje de programacin MODULA- 2, C++y J ava. Pgina 8 Ca p t u lo 1 I n t r od u ccin 1.1Mot iva ciny Objet ivos LarepresentacindeinformacinesfundamentalparalasCienciasdela Computacin. LaCienciadelaComputacin(ComputerScience) , esmuchomsqueel estudiodecmousaroprogramarlascomputadoras.Seocupade algoritmos, mtodos de calcular resultados y mquinas autmatas. Antes de las computadoras, exista la com p u t a ci n, que se refiere al uso de mtodossistemticosparaencontrarsolucionesaproblemasalgebraicoso simblicos. Losbabilonios,egipciosygriegos,desarrollaronunagranvariedadde mtodosparacalcularcosas,porejemploelreadeuncrculoocmo calcularelmximocomndivisordedosnmerosenteros(teor emade Euclides). En el siglo XIX, Charles Babbage describi una mquina que poda liberar a loshombresdeltediodelosclculosyalmismotiemporealizarclculos confiables. Lamotivacinprincipaldelacomputacinpormuchosaosfuelade desarrollarcmputonumricomspreciso.LaCienciadelaComputacin creci del inters en sistemas formales para razonar y la mecanizacin de la lgica,ascmotambindelprocesamientodedatosdenegocios.Sin embargo, el verdadero impacto de la computacin vino de la habilidad de las computadoras de representar, almacenar y transformar la informacin. Lacomputacinhacreadomuchasnuevasreascomolasdecorreo electrnico, publicacin electrnica y multimedia. Lasolucindeproblemasdelmundoreal,harequeridoestudiarmsde cerca cmo se realiza la computacin. Este estudio ha ampliado la gama de problemas que pueden ser resueltos. Por otro lado, la construccin de algoritmos es una habilidad elegante de un gransignificadoprctico.Comput adoras ms poderosasn odisminuyen el significado de algoritmos veloces. En la mayora de las aplicaciones no es el hardware el cuello de botella sino ms bien el software inefectivo. Pgina 9 Este curso trata de tres preguntas centrales que aparecen cuando uno quiere que un computador haga algo: Es posible hacerlo? Cmo se hace? y Cun rpido puede hacerse? El curso da conocimientos y mtodos para responder est aspreguntas,almismotiempointentaaumentarlacapacidadde encontraralgoritmosefectivos.Losproblemaspararesolver,sonun entrenamiento en la solucin algortmica de problemas, y para estimular el aprendizaje de la materia. Objet ivosGen er a les : 1.Introducir al alumno en el anlisis de complejidad de los algoritmos, ascomoeneldiseoeimplementacindestosconlastcnicasy mtodos ms usados. 2.Desarrollar habilidades en el uso de las tcnicas de anlisis y diseo de algoritmos computacionales. 3.Analizarlaeficienciadediversosalgoritmospararesolveruna variedad de problemas, principalmente no numricos.4.Ensear al alumno a disear y analizar nuevos algoritmos. 5.Reconocer y clasificar los problemas de complejidad polinmica y no polinmica. Met a sd el cu r s o: Al finalizar este curso, el estudiante debe estar capacitado para: analizar,diseareimplementaralgoritmositerativosyrecursivos correctos. medirlaeficienciadealgoritmositerativosyrecursivos,ydetiposo clases de datos orientados por objetos. utilizarlatcnicadediseodealgoritmosmsadecuadaparauna aplicacin en particular. definirlaaplicabilidaddelasdiferentestcnicasdebsqueday ordenamiento,delprocesamientodecadenasdecaracteres,delos mtodosgeomtricos,delusodelosalgoritmosdegrafos,delos algoritmosparalelosydelosalgoritmosdecomplejidadno polinmica. diferenciarentrelosalgoritmosdecomplejidadpolinmicayno polinmica. Pgina 10 1. 2Algu n a sNot a ss obr e laHis t or iad e losAlgor it m os EltrminoprovienedelmatemticorabeAl'Khwarizmi,queescribiun tratadosobrelosnmeros.Estetextoseperdi,perosuversinlatina, Algoritmi de Numero Indorum, s se conoce. El trabajo de Al'Khwarizmi permiti preservar y difundir el conocimiento de losgriegos(conlanotableexcepcindeltrabajodeDiofanto)eindios, pilares de nuestra civilizacin. Rescat de los griegos la rigurosidad y de los indioslasimplicidad(envezdeunalargademostracin,usarundiagrama junto a la palabraMira). Sus libros son intuitivos y prcticos y su principal contribucinfuesimplificarlasmatemticasaunnivelentendibleporno expertos.Enparticularmuestranlasventajasdeusarelsistemadecimal indio, un atrevimiento para su poca, dado lo tradicional de la cultura rabe. La exposicin clara de cmo calcular de una manera sist emtica a travs de algoritmos diseados para ser usados con algn tipo de dispositivo mecnico similar a un baco, ms que con lpiz y papel, muestra la intuicin y el poder de abstraccin deAl'Khwarizmi. Hasta se preocupaba de reducir el nmero deoperacionesnecesariasencadaclculo.Porestarazn,aunquenohaya sidolelinventordelprimeralgoritmo,merecequeesteconceptoest asociado a su nombre. LosbabiloniosquehabitaronenlaantiguaMesopotania,empleabanunas pequeasbolashechasdesemillasopequeaspiedras,amanerade "cuentas" y que eran agrupadas en carriles de caa. Ms an, en 1.800 A.C. un matemtico babilnico invent los algoritmos que le permitieron resolver problemas de clculo numrico. En 1850 A.C., un algoritmo de multiplicacin similar al de expansin binaria es usado por los egipcios. Lateoradelascienciasdelacomputacintratacualquierobjeto computacional para el cual se puede crear un buen modelo. La investigacin en modelos formales de computacin se inici en los 30's y 40's por Turing, Post,Kleene,Churchyotros.Enlos50'sy60'sloslenguajesde programacin,compiladoresysistemasoperativosestabanendesarrollo, por lo tanto, se convirtieron tanto en el sujeto como la base para la mayora del trabajo terico. Elpoderdelascomputadorasenesteperodoestabalimitadopor procesadoreslentosyporpequeascantidadesdememoria.As,se desarrollaronteoras(modelos,algoritmosyanlisis)parahacerunuso eficiente de ellas. Esto dio origen al desarrollo del rea que ahora se conoce como"AlgoritmosyEstructurasdeDatos".Almismotiemposehicieron estudiosparacomprenderlacomplejidadinherenteenlasolucinde algunos problemas. Esto di origen a lo que se conoce como la jerarqua de problemas computacionales y al rea de "Complejidad Computacional". Pgina 11 1. 3Fu n d a m en t osMa t em t icos Mon ot on icid a d Una funcinf esmontonasiescrecienteodecreciente.Escr eci en t e si rige la implicacin siguiente: n0 , n1 : (n1 = n2 )f(n1)=f(n2 ) Es d ecr eci en t esi rige la implicacin siguiente: n0 , n1 : (n1 = n2 )f(n1)=f(n2 ) Una funcinf(n) esm on ot n ica m e n t e cr e cie n t e simnimplicaque f(m) f(n). Similarmente, esm on ot n ica m e n t ed e cr e cie n t esi m n implica quef(m) f(n). Una funcinf(n) ese s t r ict a m e n t e cr e cie n t e si m0 y un nmero naturaln0tales que para todo n>=n0se verifica que T1(n)0yunaimplementacinI delalgoritmoquetarda menos que cT (n), para todo n tamao de entrada. Elcomportamientodeunalgoritmopuedevariarnotablementepara diferentessecuenciasdeentrada.Suelenestudiarsetrescasosparaun mismo algoritmo: caso mejor, caso peor, caso medio. 3. 9 An lis isPeorCa s o,MejorCa s o y Ca s o Pr om ed io Puede analizarse un algoritmo particular o una clase de ellos. Una clase de algoritmoparaunproblemasonaquellosalgoritmosquesepueden clasificar por el tipo de operacin fundamental que realizan. Ejemplo: Problema: Ordenamiento Clase: Ordenamiento por comparacin Para algunos algoritmos, diferentes entradas (inputs) para un tamao dado pueden requerir diferentes cantidades de tiempo.

Por ejemplo, consideremos el problema de encontrar la posicin particular de un valorK,dentrodeunarreglodenelementos.Suponiendoqueslo ocurre una vez. Comentar sobre el mejor, peor y caso promedio.

Culeslaventajadeanalizarcadacaso?Siexaminamoselpeordelos casos, sabemos que al menos el algoritmo se desempear de esa forma. Pgina 32

Encambio,cuandoun algoritmo se ejecuta muchas veces en muchos tipos deentrada,estamosinteresadosenelcomportamientopromediootpico. Desafortunadamente, esto supone que sabemos cmo estn distribuidos los datos. Si conocemos la distribucin de los datos, podemos sacar provecho de esto, paraunmejoranlisisydiseodelalgoritmo.Porotraparte,sino conocemosladistribucin,entonceslomejoresconsiderarelpeordelos casos. Tip osd ea n lis is : oPeor ca s o:indicaelmayortiempoobtenido,teniendoen consideracin todas las entradas pos ibles.

oMejor ca s o: indicaelmenortiempoobtenido,teniendoen consideracin todas las entradas posibles.

oMe d i a : indicaeltiempomedioobtenido,considerandotodaslas entradas posibles. Como no se puede analizar el comportamiento sobre todas las entradas posibles, va a existir para cada prob lema particular un anlisis en l: -peor caso -mejor caso -caso promedio (o medio) El caso promedio es la medida ms realista de laperformance, pero es ms dif cildecalcularpuesestablecequetodaslasentradassonigualmente probables, lo cual puede ser cierto o no. Trabajaremos especficamente con el peor caso. Pgina 33 Eje m p lo Sea A una lista de n elementos A1, A2 , A3 , ... , An . Ordenar significa permutar est oselementosdetalformaquelosmismosquedendeacuerdoconun orden preestablecido. Ascendente A1=An

Caso peor: Que el vector est ordenado en sentido inverso. Caso mejor: Que el vector est ordenado. Caso medio: Cuando el vector est desordenado aleatoriamente. Pgina 34 Ca p t u lo 4 An lis isd e Algor it m os 4 . 1I n t r od u ccin Comohemosvisto,existenmuchosenfoquespararesolverunproblema. Cmo escogemos entre ellos? Generalmente hay dos metas en el diseo de programas de cmputo: Eldiseodeunalgoritmoqueseafcildeentender,codificary depurar (Ingeniera de Software ). El diseo de un algoritmo que haga uso eficiente de los recursos de la computadora (Anlisis y Diseo de algoritmos). Ela n li s i s d e a lgor i t m osnospermitemedirladificultadinherentede un problema y evaluar la eficiencia de un algoritmo. 4 . 2Ti e m p osd eEje cu ci n Unamedidaquesuelesertilconocereselt iem p od eejecu cin de un algoritmoenfuncindeN,loquedenominaremosT(N).Estafuncinse puedemedirfsicamente(ejecutandoelprograma,relojenmano),o calcularse sobre el cdigo contando instrucciones a ejecutar y multiplicando por el tiempo requerido por cada instruccin. As, un trozo sencillo de programa como:

S1;FORi:= 1TONDOS2END; requiere: T(N):= t1 + t2*N siendo t 1 el tiempo que lleve ejecutar la serie "S1" de sentencias, y t 2 el que lleve la serie "S2". Prcticamentetodoslosprogramasrealesincluyenalgunasentencia condicional,haciendoquelassentenciasefectivamenteejecutadas dependan de los datos concretos que se le presenten. Esto hace que ms que un valor T(N) debamos hablar de un rango de valores:

Tmin(N) k , fes menor o igual a un multiplo de g, decimos que: f (x) = O ( g (x) ) La definicin formal es: f (x) = O ( g (x) ) k , N | x > N, |f (x) |k|g (x) | Ququieredecirtodoesto?Bsicamente,queunafuncinessiempre menor que otra funcin (por ejemplo, el tiempo en ejecutar tu programa es menor que x2) si no tenemos en cuenta los factores constantes (eso es lo que significa lak ) ysi no tenemos en cuenta los valores pequeos (eso es lo que significa la N). Pgina 40 PorqunotenemosencuentalosvalorespequeosdeN?Porqu para entradaspequeas,eltiempoquetardaelprogramanoessignificativoy casi siempre el algoritmo ser sufic ientemente rpido para lo que queremos. As3N3 + 5N2 9 = O (N3) no significa que existe una funcin O(N3) que es igual a 3N 3 + 5N 2 9. Debe leerse como: 3N 3+5N 2 9esO- Grande de N3 que significa: 3N 3+5N 2 9est a s in t t ica m en t edominada por N3 La notacin puede resultar un poco confusa. Veamos algunos ejemplos. Eje m p lo 1: Muestre que 3N 3 + 5N 2 9 = O (N 3). De nuestra experiencia anterior pareciera tener sentido que C = 5. Encontremosktal que: 3N 3 + 5N 2 95N 3 for N > k: 1.Agrupamos: 5N2 = 2N 3 + 92.Cul k asegura que 5N2 = N3 para N > k?3.k= 54.As que para N > 5,5N2 = N3 = 2N3 + 9.5.C = 5,k= 5(no es nico!) Eje m p lo 2: Muestre que N 4 O (3N3 + 5N2 9) . Hay que mostrar que no existen C y ktales que para N > k , C* (3N3 + 5N2 9)N4 es siempre cierto (usamos lmites, recordando el curso de Clculo). limx4 /C(3x3 + 5 x2 9)=lim x /C(3 + 5/ x 9/ x3)x x = limx /C(3 + 0 0)=(1/ 3C) . li mx = x x Pgina 41 Asquesinimpor tarcualseaelCqueseelija,N4siemprealcanzary rebasar C* (3N3 + 5N2 9). Podemosconsiderarnosafortunadosporquesabemoscalcularlmites! Lmitesserntilesparaprobarrelaciones(comoveremosenelprximo teorema). Le m a: Si el lmite cuandox del cociente | f (x)/ g (x)|existe (es finito) entonces f (x) = O ( g (x) ). Eje m p lo 3: 3N3 + 5N2 9 = O (N3 ).Calculamos:

limx3 /(3x3 + 5 x2 9)=li m 1 / (3 + 5/ x 9/ x3)= 1 / 3x x Listo! 4.5.2 Lao Min s cul a La cota superior asinttica dada por la notacinO puede o no ser ajustada asintticamente.Lacota2n=O(n )esajustadaasintticamente,perola cota 2n =O( n ) no lo es. Utilizaremos la notacin o para denotar una cota superior que no es ajustada asintticamente. Definimos formalmente o(g(n)) ("o pequea") como el conjunto: o(g(n)) = {f(n): para cualquier constante positiva c > 0, existe una constante n0> 0 tal que:0 f(n) cg(n) para toda n n0}. Por ejemplo, 2n = o(n ), pero 2nno pertenece a o(n ). Las notaciones de O y o son similares. La diferencia principal es, que en f(n) = O(g(n)), la cota 0 f(n) cg(n) se cumple paraalguna constantec > 0, peroen f(n)=o(g(n)),lacota0 f(n) cg(n)secumpleparatodas las constantes c> 0. Intuitivamente en la notacino, la funcinf(n) se vuelve insignificanteconrespectoag(n) amedidaquenseacercaainfinito,es decir: lim(f(n)/ g(n)) = 0. x Pgina 42 4.5.3Difer en ciaen t r e O y o Paraoladesigualdadsemantieneparatodaslasconstantespositivas, mientrasqueparaOladesigualdadsemantienesloparaalgunas constantes positivas. 4.5.4La sNot a cion es y Es el reverso de O. f (x ) = (g (x )) g (x ) = O (f (x )) Grande dice que asintticamente f (x )domina a g (x ). Grandedicequeambasfuncionessedominanmutuamente,enotras palabras, son asintticamente equivalentes.

f (x ) = (g (x )) f (x ) = O (g (x )) f (x ) = (g (x )) f = (g):fes de orden g 4.5.5Pr op i e d a d e sy Cot a sm sUs u a le s Pr op ied a d esd e la sn ot a cion esa s in t t ica s Rela cion esd e or d en Lanotacinasintticanospermitedefinirrelacionesdeordenentreel conjunto de las funciones sobre los enteros positivos: f O (g (x ))f g (se dice que f es asint t icamente menor o igual que g) f o (g (x ))f < g f (g (x ))f = g f (g (x ))f g f (g (x ))f > g Pgina 43 Rela cion esen t r e cot a s 1.f(n) O(f (n)) 2.f(n) O(f (n)) g(n) O(f (n )) f(n) O(h (n )) 3.f(n) O(g (n)) g(n) (h(n )) 4.lim f(n)/ g(n) = 0 O(f (n)) O(g (n)) n 5.O(f (n)) = O(g (n)) f(n) O(g (n)) g(n) O(f (n )) 6.O(f (n)) O(g (n)) f(n) O(g (n)) g(n) O(f (n )) 7.(f(n )) (g (n)) f(n) (g (n)) g(n) (f (n )) Re la cion esd e in clu s in Sonmuytilesalahoradecompararfuncionesdecosteenelcaso asinttico. x, y,a, R >0 1.logan O(logb n) 2.O(logax n) O(logax+ n) 3.O(logax n) O(n) 4.O(nx) O(nx+ ) 5.O(nx logay n) O(nx+ ) 6.O(nx) O(2n ) Pgina 44 Pr op ied a d esd e cla u s u r a El conjunto de funciones del orden def(n) es cerrado respecto de la suma y la multiplicacin de funciones: 1.f1(n) O(g1(n)) f2(n) O(g2(n)) f1(n) + f2(n) O(g1(n) + g2(n)) 2.f1(n) O(g1(n)) f2(n) O(g2(n)) f1(n) *f2(n) O(g1(n) * g2(n)) 3.f1(n) O(g1(n)) f2(n) O(g2(n)) f1(n)+f2(n) O(max(g1(n), g2( n)) como consecuencia es que los polinomios de gradokenn son exactamente del orden de nk aknk + + a1n + a0 (nk) Cot a sAs in t t ica sM sUs u a les1.c (1) c R 0 n 2.i = (n/ 2)(n+1) (n2) i=1 n 3.i2 = (n/ 3)(n+1) (n+1/ 2) (n3) i=1 n 4.ik (nk+1) k N i=1 n 5.log i ( n log n) i=1 n 6.(n-i)k (nk+1)) k N i=1 Pgina 45 4.6Ecu a cion e sd eRe cu r r e n cia s 4.6.1I n t r od u ccin Comoyahemosindicado,elanlisisdeltiempodeejecucindeun programarecursivovendrenfuncindeltiemporequeridoporla(s)llamada(s)recursiva(s)queaparezcanenl.Delamismamaneraquela verificacindeprogramasrecursivosrequierederazonarporinduccin, paratratarapropiadamenteestasllamadas,elclculodesueficiencia requiereunconceptoanlogo:eldeecuacinderecurrencia. Demostraciones por induccin y ecuaciones de recurrencia son por tanto los conceptos bsicos para tratar programas recursivos. Supongamosqueseestanalizandoelcostedeunalgoritmorecursivo, intentando calcular una funcin que indique el uso de recursos, por ejemplo el tiempo, en trminos del tamao de los datos; denominmoslaT(n) para datos de tamao n. Nos encontramos con que este coste se define a su vez en funcindelcostedelasllamadasrecursivas,esdecir,deT(m)paraotros tamaos m (usualmente menores que n). Esta manera de expresar el coste T en funcin de s misma es lo que denominaremos una ecuacin recurrente y suresolucin,esdecir,laobtencinparaTdeunafrmulacerrada (independiente de T) puede ser dificultosa. 4.6.2Res olu cind e Recu r r en cia s Lasecuacionesderecurrenciasonutilizadasparadeterminarcotas asintticas en algoritmos que presentan recursividad. Veremosdostcnicasbsicasyunaauxiliarqueseaplicanadiferentes clases de recurrencias: Mtodo del teorema maestro Mtodo de la ecuacin caracterstica Cambio de var iable Noanalizaremossudemostracinformal,sloconsideraremossu aplicacinparalasrecurrenciasgeneradasapartirdelanlisisde algoritmos. 4.6.3M t od o d e l Te or e m aMa e s t r o Se aplica en casos como: 5 si n=0 T(n) = 9T(n/ 3) + nsi n 0 Pgina 46 Teorema:Seana=1,b>1constantes,f(n)unafuncinyT(n)una recurrenciadefinidasobrelosenterosnonegativosdelaformaT(n)= aT(n/ b) + f(n), donde n/ b puede interpretarse como n/ b1on/ b]. Entonces valen: 1.Si f(n) O(mlogba - )para algn > 0 entonces T(n) (nlogba). 2.Si f(n) (nlogba) entonces T(n) (nlogbalgn). 3.Si f(n) (nlogba + )para algn > 0, y satisfaceaf(n/ b) cf(n) para alguna constante c < 1, entonces T(n) (f(n)). Ejemplos: 1.SiT(n)=9T(n/ 3)+nentoncesa=9, b=3,seaplicaelcaso1con=1 y T(n) (n2). 2.Si T(n)=T(2n/ 3)+1entoncesa=1, b=3/ 2, se aplica el caso 2 y T(n) = (lgn). 3.SiT(n)=3T(n/ 4)+nlgnentoncesa=3,b=4,f(n)(nlog43+0,2)y 3(n/ 4) lg(n/ 4) 3/ 4n lgn, por lo que se aplica el caso 3 y T(n) (n lgn) 4.6.4Mt od o d e laEcu a cinCa r a ct er s t ica Se aplica a ciertas recurrencias lineales con coeficientes constantes como: 5 si n=0 T(n) =10si n=1 5T(n-1) + 8T(n-2)+2nsi n > 0 En general, para recurrencias de la forma: T(n) = a1T(n-1) + a2T(n- 2) + + akT(n-k ) + bnp(n) donde ai , 1 i k , b son constantes y p(n) es un polinomio en n de grado s. Ejemplos: 1.En T(n)=2t(n-1)+3n, a1 =2, b=3, p(n)=1, s=0. 2.En T(n)=t (n-1)+ t (n-2)+n, a1=1, a2 =1, b=1, p(n)=n, s=1. En general, para: T(n) = a1T(n-1) + a2T(n-2) + + akT(n-k ) + bnp(n) Pgina 47 Paso 1: Encontrar las races no nulas de la ecuacin caracterstica: (xk -a1xk-1 - a2 xk-2 - -ak)(x- b)s+1 = 0 Races: ri ,1 i l k, cada una con multiplicidad mi. Paso 2: Lassolucionessondelaformadecombinacioneslinealesde estas races de acuerdo a su multiplicidad. T(n) = ----- Paso 3: Se encuentran valores para las constantes cij, tal que: 1 i l, 0 j mi -1 ydi,0is1segnlarecurrenciaoriginalylascondiciones iniciales (valores de la recurrencia para n=0,1, ). Ejemplo: Resolver la ecuacin de recurrencia siguiente: 0si n=0 T(n) = 2T(n-1) + 1si n > 0 donde b=1 y p(n)=1de grado 0. Lae cu a cin ca r a ct e r s t ica (x- 2)(x-1)0+1=0,conraces2y1de multiplicidad 1. La s olu cingen er a l es entonces de la forma: T(n)=c112n + c211n. Apartirdelascondicionesinicialesseencuentraelsiguientesistemade ecuaciones que sirve para hallar c11y c21: c11 + c21 = 0de n = 0 2c11 + c21 = 1 de n = 1 de donde c11 = 1yc21 = -1. La solu cines entonces: T(n) = 2n 1. Pgina 48 4.6.5Ca m b io d eVa r ia b le Dada la siguiente ecuacin de recurrencia: asi n=1 T(n) = 2T(n/ 2) + nlog2 nsi n = 2k No se puede aplicar el teorema maestro ni la ecuacin caracterstica. Se define una nueva recurrencia S(i) = T(2i), con el objetivo de llevarla a una forma en la que se pueda resolver siguiendo algn mtodo anterior. Entonces el caso general queda: S(i) = T(2i) = 2T(2i / 2) + 2ii = 2T(2i-1 ) + i2i = 2S(i-1) + i2i Conb=2 yp(i) = i de grado 1. La ecuacin caracterstica de esta recurrencia es: (x -2)(x - 2)i+1 = 0, con raz 2 de grado 3. La solucin es entonces S(i) = c112i + c12 i2i + c13 i22i, con lo que volviendo a la variable original queda: T(n)- 2T(n/ 2) = nlog2 n = (c12- c13)n + 2c13 n(log2 n). Se pueden obtener los valores de las constantes sustituyendo esta solucin en la recurrencia original: T(n) = c11n + c12(log2 n)n + c13(log2 n)2n. de donde c12= c13 y2c12 = 1. Por tantoT(n)(nlog2n n e sp ot e n ci ad e 2). Si se puede probar que T(n) es eventualmente no decreciente, por lar e glad ela sfu n cion e sd ecr e cim ie n t o s u a vese puede extender el resultado a todos los n (dado que nlog2n es de crecimiento suave). En este casoT(n) (nlog2n). Pgina 49 4 . 7Ejem p losy Ejer cicios Ejem p losd e c lcu lo d el t iem p o d e ejecu cind e u np r ogr a m a Veamoselanlisisdeunsimpleenunciadodeasignacinaunavariable entera: a = b;

Como el enunciado de asignacin toma tiempo constante, est en(1). Consideremos un simple ciclo for:

sum=0; for (i=1; i