You are on page 1of 3

Informalmente, un algoritmo es cualquier procedimiento de clculo bien definido que tiene algn valor, o conjunto de

valores, como entrada y produce un cierto valor, o conjunto de valores, como salida. Un algoritmo es por lo tanto una
secuencia de pasos de clculo que transforman la entrada a la salida.
Tambin podemos ver un algoritmo como herramienta para la solucin de un problema computacional bien especificado.
El planteamiento del problema especifica en trminos generales la relacin entrada / salida deseada. El algoritmo se
describe un procedimiento de clculo especfico para lograr que la relacin de entrada / salida. Por ejemplo, puede ser que
tenga que ordenar una secuencia de nmeros en orden no decreciente. Este problema se presenta con frecuencia en la
prctica y proporciona un terreno frtil para la introduccin de muchas normas tcnicas de diseo y herramientas de
anlisis. Aqu es cmo definimos formalmente el problema de clasificacin:

Debido a que muchos programas lo utilizan como un paso intermedio, la clasificacin es una operacin fundamental en la
informtica. Como resultado, tenemos un gran nmero de buenos algoritmos de ordenacin a nuestra disposicin. Qu
algoritmo es el mejor para una aplicacin determinada depende -entre otros factores- el nmero de elementos a clasificar,
el grado en que los artculos ya estn ordenados tanto, las posibles restricciones en los valores de los elementos, la
arquitectura de la computadora, y el tipo de almacenamiento de los dispositivos a utilizar: memoria principal, discos, o
incluso cintas.
Un algoritmo se dice que es correcto si, para cada instancia de entrada, se detiene con la salida correcta. Decimos que un
algoritmo correcto resuelve el problema computacional dado. Un algoritmo incorrecto podra no frenar en absoluto en
algunos casos de entrada, o puede detener con una respuesta incorrecta. Contrariamente a lo que cabra esperar, los
algoritmos incorrectos pueden a veces ser til, si podemos controlar su tasa de error. Vamos a ver un ejemplo de un
algoritmo con una tasa de error controlable en el captulo 31 cuando estudiamos algoritmos para encontrar nmeros
primos grandes. Normalmente, sin embargo, nos ocuparemos slo con algoritmos correctos. Un algoritmo se puede
especificar en Ingls, como un programa de ordenador, o incluso como un diseo de hardware. El nico requisito es que
la especificacin debe proporcionar una descripcin precisa del procedimiento de clculo a seguir.
QU TIPO DE PROBLEMAS SE RESUELVEN POR MEDIO DE ALGORITMOS?

La clasificacin es de ninguna manera el nico problema computacional para el que se han desarrollado algoritmos.
(Probablemente sospechado cuando viste el tamao de este libro.) Aplicaciones prcticas de algoritmos son omnipresentes
e incluyen los siguientes ejemplos:
El Proyecto Genoma Humano ha hecho grandes progresos hacia los objetivos de la identificacin de todos los 100.000
genes en el ADN humano, la determinacin de las secuencias de los 3 mil millones de pares de bases qumicas que
componen el ADN humano, el almacenamiento de esta informacin en bases de datos, y el desarrollo de herramientas
para el anlisis de datos. Cada uno de estos pasos requiere algoritmos sofisticados. Aunque las soluciones a los diversos
problemas que estn ms all del alcance de este libro, muchos mtodos para resolver estos problemas biolgicos utilizan
las ideas de varios de los captulos de este libro, lo que permite a los cientficos realizar tareas durante el uso de los
recursos de manera eficiente. Los ahorros son en el tiempo, tanto humanos como mquina, y en dinero, a medida que ms
informacin se puede extraer de las tcnicas de laboratorio. La Internet permite a la gente de todo el mundo para acceder
y recuperar grandes cantidades de informacin de forma rpida. Con la ayuda de algoritmos inteligentes, sitios en Internet
son capaces de gestionar y manipular este gran volumen de datos. Ejemplos de problemas que hacen uso esencial de
algoritmos incluyen encontrar buenas rutas en las que los datos van a viajar (tcnicas para resolver tales problemas
aparecen en el captulo 24), y el uso de un motor de bsqueda para encontrar rpidamente las pginas en los que reside la
informacin en particular (tcnicas relacionadas estn en Captulos 11 y 32).

El comercio electrnico permite a los bienes y servicios a ser negociadas e intercambiadas por va electrnica, y que
depende de la privacidad de la informacin personal, como nmeros de tarjetas de crdito, contraseas y estados de
cuenta bancarios. Las principales tecnologas utilizadas en el comercio electrnico incluyen criptografa y las firmas
digitales de clave pblica (incluidos en el captulo 31), que se basan en algoritmos numricos y la teora de nmeros.

Fabricacin y otras empresas comerciales a menudo tienen que asignar los escasos recursos de la manera ms
beneficiosa. Una compaa petrolera puede desear saber dnde colocar sus pozos con el fin de maximizar su beneficio
esperado. Un candidato poltico puede querer determinar dnde gastar dinero en la compra de publicidad de campaa con
el fin de maximizar las posibilidades de ganar una eleccin. Una lnea area podra asignar tripulaciones a los vuelos de la
manera menos costosa posible, asegurndose de que cada vuelo se cubre y que se cumplan las regulaciones del gobierno
con respecto a la programacin de la tripulacin. Un proveedor de servicios de Internet puede desear determinar dnde
colocar los recursos adicionales con el fin de atender a sus clientes de forma ms eficaz. Todos estos son ejemplos de
problemas que pueden ser resueltos mediante la programacin lineal, que estudiaremos en el captulo 29.

Aunque algunos de los detalles de estos ejemplos estn ms all del alcance de este libro, nos damos tcnicas subyacentes
que se aplican a estos problemas y las reas problemticas. Tambin mostramos cmo resolver muchos de los problemas
especficos, incluyendo las siguientes: Se nos da una hoja de ruta en la que se marca la distancia entre cada par de
intersecciones adyacentes, y se desea determinar la ruta ms corta de una interseccin a otra. El nmero de posibles rutas
puede ser enorme, incluso si desactivamos rutas que cruzan sobre s mismos. Cmo elegimos cul de todas las rutas
posibles es la ms corta? Aqu, modelamos la hoja de ruta (que es en s mismo un modelo de los caminos reales) como un
grfico (que nos reuniremos en la Parte VI y el apndice B), y queremos encontrar el camino ms corto desde un vrtice a
otro en el grfico . Veremos cmo resolver este problema de manera eficiente en el Captulo 24.
Se nos ha dado un diseo mecnico en trminos de una biblioteca de partes, donde cada parte podr incluir casos de otras
partes, y tenemos que enumerar las partes en orden para que cada parte aparece antes de cualquier parte que lo utiliza. Si
el diseo comprende n partes, entonces hay rdenes posibles NS NS, donde denota la funcin factorial.
Debido a que la funcin factorial crece ms rpido que incluso una funcin exponencial, no podemos generar
factiblemente cada orden posible y luego verificar que, dentro de ese orden, cada parte se presenta ante las partes de
usarlo (a menos que tengamos pocas piezas). Este problema es una instancia de clasificacin topolgica, y veremos en el
captulo 22 de la forma de resolver este problema de manera eficiente.
Se nos ha dado n puntos en el plano, y deseamos encontrar el casco convexo de estos puntos. La envolvente convexa es
el polgono convexo ms pequeo que contiene los puntos. Intuitivamente, podemos pensar en cada punto como est
representado por un clavo que sobresala de un tablero. El casco convexo estara representada por una banda de goma
apretada que rodea todos los clavos. Cada clavo alrededor de la cual la banda de goma hace un giro es un vrtice de la
envolvente convexa. (Vea la figura 33.6 en la pgina 1029 para un ejemplo.) Cualquiera de los subconjuntos 2n de los
puntos podra ser los vrtices de la envolvente convexa. Saber qu puntos son los vrtices de la envolvente convexa no es
suficiente, ya sea, ya que tambin tenemos que saber el orden en el que aparecen. Hay muchas opciones, por lo tanto, de
los vrtices de la envolvente convexa.
Captulo 33 da dos buenos mtodos para encontrar el casco convexo.
Estas listas estn lejos de ser exhaustiva (como usted otra vez probablemente ha conjeturado de peso de este libro), pero
presentan dos caractersticas que son comunes a muchos problemas algortmicos interesantes:
1. Tienen muchas soluciones candidatas, la inmensa mayora de los cuales no resolver el problema en cuestin. Encontrar
uno que lo haga, o uno que es "mejor", puede presentar todo un reto.
2. Tienen aplicaciones prcticas. De los problemas de la lista anterior, encontrar el camino ms corto ofrece los ejemplos
ms fciles. Una empresa de transporte, como una compaa de camiones o ferrocarril, tiene un inters financiero en la
bsqueda de caminos ms cortos a travs de una red de carreteras o ferrocarril porque tomar ms cortas resultados
caminos en menores costos de mano de obra y combustible. O un nodo de enrutamiento en Internet puede necesitar para
encontrar el camino ms corto a travs de la red con el fin de encaminar un mensaje rpidamente. O una persona que
desee viajar de Nueva York a Boston posible que desee encontrar instrucciones sobre cmo llegar de un sitio Web
adecuado, o ella puede usar su GPS mientras se conduce.
No todos los problemas resueltos por algoritmos tiene un conjunto fcilmente identificado de soluciones candidatas. Por
ejemplo, supongamos que se nos da un conjunto de valores numricos que representan muestras de una seal, y queremos
calcular la transformada de Fourier discreta de estas muestras. La transformada discreta de Fourier convierte el dominio
del tiempo al dominio de la frecuencia, produciendo un conjunto de coeficientes numricos, de modo que se puede
determinar la fuerza de varias frecuencias en la seal muestreada. Adems de tumbado en el centro de procesamiento de
seales, transformadas de Fourier discretas tienen aplicaciones en la compresin de datos y multiplicando grandes
polinomios y nmeros enteros. Captulo 30 da un algoritmo eficiente, la transformada rpida de Fourier (comnmente
llamado el FFT), para este problema, y el captulo esboza tambin el diseo de un circuito de hardware para calcular la
FFT.
Las estructuras de datos Este libro tambin contiene varias estructuras de datos. Una estructura de datos es una manera de
almacenar y organizar los datos con el fin de facilitar el acceso y modificaciones. Ninguna estructura de datos nica que
funciona bien para todos los efectos, y por lo que es importante conocer las fortalezas y limitaciones de varios de ellos.

Tcnica

Aunque puede utilizar este libro como un "libro de cocina" para los algoritmos, es posible que algn da encontrar un
problema para el que no se puede encontrar fcilmente un algoritmo publicado (muchos de los ejercicios y problemas de
este libro, por ejemplo). Este libro le ensear tcnicas de diseo de algoritmos y anlisis para que pueda desarrollar
algoritmos por su cuenta, mostrar que dan la respuesta correcta, y comprender su eficiencia. Los diferentes captulos
abordan diferentes aspectos de la resolucin de problemas algortmicos. Algunos captulos se refieren a problemas
especficos, tales como la bsqueda de las medianas y los estadsticos de orden en el captulo 9, el clculo de rboles de

expansin mnimos en el captulo 23, y determinar un flujo mximo en una red en el captulo 26. Otros captulos abordan
tcnicas, como la de divide y vencers en Captulo 4, programacin dinmica en el captulo 15, y el anlisis amortizado
en el Captulo 17.

Problemas duros

La mayor parte de este libro se trata de algoritmos eficientes. Nuestra medida habitual de la eficiencia es la velocidad, es
decir, cunto tiempo un algoritmo necesita para producir su resultado. Hay algunos problemas, sin embargo, para los que
se conoce ninguna solucin eficiente. Captulo 34 estudios de una interesante subconjunto de estos problemas, que son
conocidos como NP-completo. Por qu son interesantes problemas NP-completo? En primer lugar, aunque se ha
encontrado ningn algoritmo eficiente para un problema NP-completo jams, nadie ha demostrado nunca que no puede
existir un algoritmo eficiente para uno. En otras palabras, no se sabe si existen algoritmos eficientes para los problemas
NP-completos. En segundo lugar, el conjunto de problemas NP-completos tiene la notable propiedad de que si existe un
algoritmo eficiente para cualquiera de ellos, a continuacin, existen algoritmos eficientes para todos ellos. Esta relacin
entre los problemas NP-completos hace que la falta de soluciones eficientes tanto ms tentadora. , Varios problemas NPcompletos terceros son similares, pero no idnticos, a los problemas para los que s sabemos de algoritmos eficientes. Los
informticos estn intrigados por cmo un pequeo cambio en el planteamiento del problema puede causar un gran
cambio para la eficiencia del algoritmo ms conocido.

Usted debe saber acerca de los problemas NP-completos porque algunos de ellos surgen con sorprendente frecuencia en
aplicaciones reales. Si usted est llamado a producir un algoritmo eficiente para un problema NP-completo, es probable
que pasar mucho tiempo en una bsqueda infructuosa. Si usted puede demostrar que el problema es NP-completo, en su
lugar puede pasar su tiempo en desarrollar un algoritmo eficiente que le da una buena, pero no es la mejor posible,
solucin.
Como ejemplo concreto, considere una empresa de mensajera con un depsito central. Cada da, se carga hasta cada
camin de reparto en el depsito y lo enva alrededor de entregar bienes a varias direcciones. Al final del da, cada camin
debe terminan de vuelta en el depsito de modo que est listo para ser cargado para el da siguiente. Para reducir los
costos, la empresa quiere seleccionar un orden de las paradas de entrega que produce la distancia total ms bajo recorrida
por cada camin. Este problema es el conocido "problema del vendedor ambulante", y es NP-completo. Se no ha
conocido algoritmo eficiente. Bajo ciertos supuestos, sin embargo, sabemos de algoritmos eficientes que dan una
distancia total que no est demasiado lejos por encima de la ms pequea posible. Captulo 35 discute tales "algoritmos de
aproximacin."

Paralelismo

Durante muchos aos, pudimos contar con velocidades de reloj del procesador cada vez a un ritmo constante. Las
limitaciones fsicas presentan un obstculo fundamental a la cada vez mayor velocidad de reloj, sin embargo, porque
aumenta la densidad de potencia superlinearly con velocidad de reloj, fichas corren el riesgo de fusin una vez que sus
velocidades de reloj se vuelven lo suficientemente alta. Con el fin de realizar ms clculos por segundo, por lo tanto, los
chips estn siendo diseados para contener no slo una, sino varias procesamiento Podemos comparar estos ordenadores
multincleo a varias computadoras secuenciales en un solo chip "ncleos."; en otras palabras, son una especie de "equipo
paralelo." Con el fin de obtener el mejor rendimiento de los ordenadores multincleo, necesitamos disear algoritmos con
paralelismo en mente. Captulo 27 se presenta un modelo para los algoritmos "multiproceso", que se aprovechan de
mltiples ncleos. Este modelo tiene ventajas desde el punto de vista terico, y que constituye la base de varios
programas informticos exitosos, incluyendo un programa de ajedrez campeonato.

You might also like