You are on page 1of 32
CAPITULO Los fundamentos: algoritmos, ntiimeros enteros y matrices blema mas general, Por ejemplo, encontrar cl mayor de los nimeros 101, 12, 144. 212,98 5 un caso especifico de localizacidn del mayor valor de una sucesién de miimeros ente- Tos, Para resolver un problema como éste debemos dar un algoritmo que especifique una secuencia de pasos que conduzea a una solucién en el caso general. En este libro estudiaremos alyoritmos para resolver muchos tipos de problemas diferentes. Por ejemplo, se desarrollaran alvoritios para en- CContrar ef maximo comin divisor de dos enteros, para generar todas las ordenaciones de-un conjunto finito, para bisquedas en lista, para ordenar clementos ie una sucesi6n 0 para encontrar el camino ‘mis eorto entre nodos de una red, ‘Una consideracidn importante en relaci6n con un algoritmo es su complejad computacional. Esto £8, qué recursos eomputacionales se necesitan para usar este algoritmo en la resolucién de un problema dein tamuiio espectfico, Para medir la complejidad de un algoritme uilizaremios las notaciones O y ©, {que presentaremos en este capitulo, También ilust el anlisis de 1a complefidad de algoritmos, Discutiremos el significado de la complejidad de un algoritmo en téeminos pricticos ¥ tedricos, El conjunto de fos niimeros enteros desempeita un papel fundamental en matemética discreta En particular, el conccpto de divisiGn de enteros es fundamental en aritmetica computacional. Re- pasaremos brevemente algunos de los Conceptos importantes en teoria dé miimerns, el estudio de los enteros y sus propiedades. Estudiaremos algunos algoritmos importantes relacionados con los ‘eros, entre los que se incluyen el algoritmo de Euclides para calcular el miximo comin divisor, que Jue descrito por primera vez hace miles de aftos. Los enteros se pueden representar usando custquier entero positivo mayor que 1 como base. Las expresiones binarias, que se utilizan con mucha fre ‘cuencia en ciencias de la computacion, se representan en base 2. Discutiremas en este capitulo las re presentaciones de enteros en base b y proporcionarems algoritmos para encontrar estas represen- taciones. También describiremos los algoritmos para aitmética entera, que fueron los primeros Procedimientos Hamados algoritmos. Asimismo, se presentan varias aplicaciones importantes de la teoria de nimeros, Por ejemplo, utlizaremos la teorfa de mimeros para construir mensajes secretos, generar nlimeros pseudoaleatorios y asignar posiciones le memoria a ficheros en un ortenador. La teorfa de ndmeros, considerada hace tiempo como ja més pura de lus disciplinas mateméticas, se ha convertido en una herramienta esencial para proporcionar seguridad en computacién y en Intemet. En matematica discreta se utilizan las matrices para representar una gran variedud de os. tructuras diseretas, Repasaremos el material hésico sobre matrices y aritmética matricial que se ne- cesita para representar las relaciones y los gratfos. La aritmética matricial se utilizar en numero- 80s algoritmos relacionados con estas estructura. M= problemas pueden resolverse considerindolos como casos especiales de wn pro- Algoritmos INTRODUCCION En matemuitica discreta aparecen muchas clases de problemas genéricos. Por ejemplo, dada una su- ccesiGn de némeros enteros, encontrar ef mayor, dado un conjunto, enumerar todos sus subcon. juntos; dado un conjunto de enteros, ponerlos en orden creciente; dada una red de ordenadores, en- Ccontrar el camino més corto entre dos nodos. Cuando se presentan fales problemas, lo primero que ‘debemos hacer es construir un modelo que traduzca el problema aan contexto matemético, Las es- 109 110 Matemstcacisreta y sus aplicaciones DEFINICION 1 EJEMPLO | Bes ales tructuras discretas utilizadas en estos modelos incluyen conjuntos, sucesiones y funciones —es- ‘ructuras que comentamos en el Capitulo I—, asf como otras estructuras como permutaciones, re- laciones, grafos, arboles, redes y miiquinas de estados finitos —conceptos que se discutiran en ca- tulos posteriores. Pi irl model ratemdhco people Slane pre suc, Paes completarla se necesita un método que resuelva el problema general utilizando el modelo. Idealmente, lo que se requiere es un procedimiento que siga una secuencia de pasos que conduzca a la respuesta de- seada, Tal secuencia de pasos se denomina algoritmo, Un algoritmo es un conjunto finito de instrucciones precisas que sirve para realizar un céleu- loo resolver un problema. El término algoritmo es una degeneracién del nombre al-Jowarizmi, un matematico del siglo 1x cuyo libro sobre numnerales hinds («Algoritmi de Numero Indorum», en su versién en latin) es la base de la notacién decimal modema, Originalmente, se us6 una variante dela palabra algoritmo para de- finir las reglas usalas para hacer aritmétics usando notacin decimal. El término evolucioné a la pa labra algoritmo cn el siglo xvm. Con el interés ereciente sobre méquinas de computacién, el con- cepto de algoritmo adquiri6 un significado mids general, pasando de inclu s6lo procedimientos para llevar a cabo célculos aritméticos a definit procedimientos utilizados para resolver problemas, (Comentaremos algoritmos para llevar a cabo Ta aritmética de los enteros en la Seccidn 2.5) En este libro discutiremos algoritmos que restelven tna gran variedad de problemas. En esta seecién usaremos el problema de encontrar e] mayor de una sucesién finita de enteros para ilustrar el concepto de algoritmo y sus propiedades. También describiremos algoritmos para localizar un elemento particular de un conjunto, En secciones posteriores se describirain, entre otros, procedi- :mientos para hallar ef méximo comin divisor de dos enteros, para hallar el recorrido mis corto en- tre dos puntos de una red o para multiplicar matrices. Describe un algoritmo para encontrar el maximo valor de una sucesién finita de enteros. Aunque encontrar el mayor de una sucesi6n de enteros es relativamente trivial, este problema proporeiona una buena ilustracién del concepto de algoritmo. Ademis, hay muchos casos en los que se requiete el mayor de los enteros de una sucesién finita. Por ejemplo, una universidad pue- de necesitar encontrar al estudiante con mayor puntuacién entre los miles que han realizado un examen, O una organizacién deportiva puede querer identificar cada mes al participante con ma- yor puntuacién. Queremos desarrollar un algoritmo que se pueda usar siempre que aparezca un problema de biisqueda del mayor elemento de una sucesin finita de enteros, Posdemos especificur un provedimiento para resolver este problema de varias formas. Un mé- todo consiste simplemente en utilizar el lenguaje natural para describir la sucesién de pasos utili zada, Esta es la solucin que proporciona este método: Solucién det Ejemplo 1: Realizamos los siguientes pasos. 1. Fijamos provisionalmente el maximo igual al primer elemento de la sucesién. (EL maximo provisional seré el mayor entero examinado hasta esa etapa del procedimiento). Comparamos el siguiente entero de la sucesidn con el méximo provisional, y si es m grande que el méximo provisional, fijamos el maximo provisional como este entero, 3. Se repite el paso anterior si hay més enteros en la sucesiGn. MOHAMED BEN MUSA AL-JOWARIZMI(c. 780-¢. 850) al Jowarizmi,astnomo y matemsiico, fa miembro 4e fa Casa deta Sabiduria, una academia de cientficos en Bagdad, El nombre al-lowari significa we la ciudad de Jowarzizm, que ahora se lama Jva (Khiva y es parte de Ustekistin.al-Fowarizmi escribi Wbros de malemticas ‘wonomia y geografa. Los europeos occidentalesaprenuieon Sgebra por primera vez través de sus textos, La palabra. scbraproviene deol jab, pare del itlo del Ubeo Hiab ajar wal muah. Este io se ado al latin y Fue un ex ‘© ampliamente wad. St iro sobre los numerals hndes describe provedimients para realizar operaciones atntcas usando estos numerals. Los autofes europeos utizaron una devituacin desu nombre. que mis tae evolicion ala pa labra agoritmo, para deseribir la dseiplina de la artmetica com numerals hinds [Los fundamentosalgovitmos,nimerosemterasy matrices 111 4. Paramos ctiando no queden ms enteros en Ia sucesién por comparar. Llegado este Punto, el maximo provisional es el mayor entero de Ta sucesién, < Un algoritmo se puede deseribir empleando un lenguaje informtico. Cuando se usa un len _2uaje informatico, sélo podemos utilizar para deseribir el algoritmo las instrucciones permitidas en se lenguaje particular. Esto a veces conduce a una descripcién del algoritmo dificil de entender. ‘Como comiinmente se witizan varios lenguajes de programacién distintos en vez. de usar uno en par ticular para especificar algoritmos, en este libro utilizaremos una forma de pseudocédigo. (Todos los algoritmos se deseribirén también en lenguaje natural). El pseudocddigo proporciona un paso in termedio entre una descripcién de este algoritmo en lenguaje natural y en lenguaje de programacién, Los pasos del algoritmo se especifican usando instrucciones que nos recordaran a aquellas que se uti lizan en programacién. No obstante, en pseudocddigo, las instrucciones wtiizadas pueden incluir ‘cualquier operacién o sentencia bien definida. Un programa informético se puede generar en cual- quier lenguaje de programacién utilizando como punto de partida una descripeidn en pseudocddigo, El pseudocédigo que utilizamos en este libro es una aproximacidn al lenguaje de programacién Pascal. No obstante, no se seguir la sintaxis del Pascal ni de ningtin otro lenguaje de programacién, Adem, se podri utilizar cualquier instrucci6n bien definida. Los detalles del pseudocsidigo utiliza do se dan en el Apéndice 2. El lector deberi consultar este apéndice cuando le surja alouna dud A continuacién se da una descripcién en pseudocédigo del algoritmo para encontrar el maximo elemento de una sucesién finita. ALGORITMO 1 Basqueda del elemento maximo en una suet ion Fini procedure mutn(ay, dy... enteros) max =a, for i= 2 ton if max

You might also like