Sei sulla pagina 1di 43

01.

Introduccin
Anlisis y diseo de algoritmos

Motivacin y Objetivos
La representacin de informacin es fundamental para las Ciencias
de la Computacin.

La Ciencia de la Computacin (Computer Science), es mucho ms que el


estudio de cmo usar o programar las computadoras. Se ocupa de
algoritmos, mtodos de calcular resultados y mquinas
autmatas.

Motivacin y Objetivos

Antes de las computadoras, exista la computacin, que se


refiere al uso de mtodos sistemticos para encontrar soluciones
a problemas algebraicos o simblicos.

Motivacin y Objetivos

Los babilonios, egipcios y griegos, desarrollaron una gran variedad de


mtodos para calcular cosas, por ejemplo el rea de un crculo o
cmo calcular el mximo comn divisor de dos nmeros enteros (teorema
de Euclides).

Motivacin y Objetivos

En el siglo XIX, Charles Babbage describi una mquina que poda


liberar a los hombres del tedio de los clculos y al mismo tiempo
realizar clculos confiables.

Motivacin y Objetivos
La

motivacin principal de la computacin por muchos aos fue la de


desarrollar cmputo numrico ms preciso.

La Ciencia de la Computacin creci del inters en sistemas formales


para razonar y la mecanizacin de la lgica, as cmo tambin del
procesamiento de datos de negocios.

Sin embargo, el verdadero impacto de la computacin vino de la habilidad


de las computadoras de representar, almacenar y transformar la
informacin.

Motivacin y Objetivos

La solucin de problemas del mundo real, ha requerido estudiar ms de 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
gran significado prctico. Computadoras ms poderosas no disminuyen 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.

Cuando uno quiere que un computador haga


algo
Es posible hacerlo?
Cmo se hace?
Cun rpido puede hacerse?

El curso da conocimientos y mtodos para responder estas preguntas


Intenta aumentar la capacidad de encontrar algoritmos efectivos.

Algoritmo?
Pasos
Ambigedad
Fidelidad
Resultado
Tarea
Tiempo finito

Algoritmo

Secuencia ordenada de pasos sin ambigedad tal que, al llevarse a cabo


con fidelidad, dar como resultado que se realice la tarea para la que se
ha diseado en un tiempo finito.

Recuerda

Un algoritmo nos permite obtener la solucin del problema para el que


est diseado

Notas sobre la Historia de los Algoritmos


El trmino proviene del matemtico rabe Al'Khwarizmi.
Escribi un tratado sobre los nmeros.
Este texto se perdi, pero su versin latina, Algoritmi de Numero
Indorum, s se conoce.

Propiedades de un algoritmo

Finitud: La ejecucin de un algoritmo termina despus de un nmero


finito de etapas.

Precisin: Cada etapa ha de estar especificado rigurosamente. La


ejecucin de un algoritmo no ha de dejar espacio para la interpretacin, la
intuicin o la creatividad.

Caractersticas de un algoritmo

Entradas:
Un algoritmo tiene cero o ms entradas (cantidades que se le dan
inicialmente antes de que comience su ejecucin).

Salidas:

Un algoritmo tiene una o ms salidas (cantidades que tienen una


relacin especfica con las entradas).

Resolucin de problemas con ordenador:

Disear un algoritmo para el problema.


Expresar el algoritmo como un programa.
Ejecutar el programa.

Resolucin de problemas

Clasificacin de problemas
Aos 30
Problemas computables y no computables.

Aos 50

Complejidad de los problemas computables (bsqueda de algoritmos ms


eficaces).

Aos 70

Clasificacin de los problemas computables: P y NP.

Clases P y NP

Clase P
Problemas resolubles en tiempo polinmico con una mquina de
Turing determinstica (el tiempo de ejecucin del algoritmo en un
ordenador viene descrito por una frmula polinmica)

Clases P y NP

Clase NP [Non-Deterministic Polynomial-time]


Problemas resolubles en tiempo polinmico con una mquina

Turing no determinstica.

Reduccin de problemas y complejidad


Si reducimos un problema (A) a otro (B), podemos obtener una solucin
con un algoritmo para el problema B y transformar esa solucin para
convertirla en una solucin para el problema A.

P=NP? Si encontrramos un algoritmo polinmico para un problema NPcompleto, sabramos que todos los problemas de la clase NP se pueden
resolver en tiempo polinmico.

Algortmica
La algortmica, como disciplina de estudio de los algoritmos, ha de
considerar:

El diseo de algoritmos.
La validacin de algoritmos.
El anlisis de algoritmos.

Diseo de algoritmos

Creacin de algoritmos (parte creativa).


El diseo de algoritmos no se puede dominar si no se conocen las tcnicas
de diseo de algoritmos (mtodos y heursticas que han demostrado
ser tiles en la prctica).

Validacin de algoritmos

Demostracin de que las respuestas dadas por el algoritmo son correctas


para todas las posibles entradas.

nico mtodo vlido: Demostracin formal.

Anlisis de algoritmos
Determinacin de los recursos (espacio, tiempo) que consumen los
algoritmos en la resolucin de problemas.

El anlisis de algoritmos permite comparar algoritmos alternativos


con criterios cuantitativos (y elegir el algoritmo ms adecuado para
resolver un problema).

Anlisis de la eficiencia

Determinar las caractersticas del algoritmo que sirvan Determinar las


caractersticas del algoritmo que sirvan para evaluar su rendimiento.
p.ej. Tiempo requerido para la ejecucin del algoritmo en trminos del
nmero de veces que se ejecuta cada etapa del algoritmo.

Alternativas (complementarias)

Enfoque emprico
Enfoque terico
Enfoque hbrido

Problema del viajante de comercio (TSP)

Problema del viajante de comercio (TSP)

Si tenemos N ciudades e intentamos solucionar el problema por fuerza


bruta (comprobando todas las soluciones posibles), tendremos que
comprobar N! posibles soluciones.

Problema del viajante de comercio (TSP)

Solucin aproximada con un algoritmo iterativo:

Solucin aproximada con un algoritmo iterativo:

Solucin aproximada con un algoritmo iterativo:

Tcnicas de diseo de algoritmos


Divide y vencers
Algoritmos greedy
Programacin dinmica
Exploracin de grafos

Branch Branch & & Bound Bound (ramificacin y poda) (ramificacin y poda)
Backtracking Backtracking (vuelta atrs) (vuelta atrs)

Algoritmos probabilsticos
Metaheursticas

Tarea
Averiguar acerca de los siguientes problemas, elaborar una breve descripcin (con
sus propias palabras), luego indicar las referencias que utilizo:
Hamiltonian cycle problem (HCP)
Asymmetric traveling salesman problem (ATSP)

Sequential ordering problem (SOP)


Capacitated vehicle routing problem (CVRP)

Grupos de 4 alumnos. Prepararse para presentar el caso la proxima clase [10 min]
por sorteo. 26 Ago

Mas tarea
Descargar el software JFLAP
http://www.jflap.org/
Quin es Harald Andrs Helfgott?

Esta diapositiva en

https://sites.google.com/site/analisisydisenodealgoritmos/

Anexos

El trabajo de Al'Khwarizmi
Permiti preservar y difundir el conocimiento de los griegos (con la notable
excepcin del trabajo de Diofanto) e indios, pilares de nuestra civilizacin.
Rescat de los griegos la rigurosidad y de los indios la simplicidad (en vez de
una larga demostracin, usar un diagrama junto a la palabra Mira). Sus libros
son intuitivos y prcticos y su principal contribucin fue simplificar las
matemticas a un nivel entendible por no expertos. En particular muestran
las ventajas de usar el sistema decimal indio, un atrevimiento para su poca,
dado lo tradicional de la cultura rabe.

La abstraccin de Al'Khwarizmi
La exposicin clara de cmo calcular de una manera sistemtica 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 de Al'Khwarizmi. Hasta se preocupaba de reducir
el nmero de operaciones necesarias en cada clculo. Por esta razn,
aunque no haya sido l el inventor del primer algoritmo, merece que este
concepto est asociado a su nombre.

Los babilonios

Que habitaron en la antigua Mesopotamia, empleaban unas pequeas bolas


hechas de semillas o pequeas piedras, a manera de "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.

Los egipcios

En 1850 A.C., un algoritmo de multiplicacin similar al de expansin binaria


es usado por los egipcios.

La teora de las ciencias de la computacin


Trata cualquier objeto 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, Church y otros.

En los 50's y 60's los lenguajes de programacin, compiladores y


sistemasoperativos estaban en desarrollo, por lo tanto, se convirtieron tanto
en el sujeto como la base para la mayora del trabajo terico.

El poder de las computadoras

El poder de las computadoras en este perodo estaba limitado por procesadores


lentos y por pequeas cantidades de memoria. As, se desarrollaron teoras
(modelos, algoritmos y anlisis) para hacer un uso eficiente de ellas. Esto di origen
al desarrollo del rea que ahora se conoce como "Algoritmos y Estructuras
de Datos". Al mismo tiempo se hicieron estudios para comprender la complejidad
inherente en la solucin de algunos problemas.
Esto di origen a lo que se conoce como la jerarqua de problemas
computacionales y al rea de "Complejidad Computacional".

Potrebbero piacerti anche