01 introducción

43
01. Introducción Análisis y diseño de algoritmos

Upload: dysan

Post on 09-Nov-2015

4 views

Category:

Documents


1 download

DESCRIPTION

Intriduccion al ciste dkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll

TRANSCRIPT

  • 01. IntroduccinAnlisis 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 dedesarrollar cmputo numrico ms preciso.

    La Ciencia de la Computacin creci del inters en sistemas formalespara razonar y la mecanizacin de la lgica, as cmo tambin delprocesamiento de datos de negocios.

    Sin embargo, el verdadero impacto de la computacin vino de la habilidadde las computadoras de representar, almacenar y transformar lainformacin.

  • 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 30Problemas computables y no computables.

    Aos 50 Complejidad de los problemas computables (bsqueda de algoritmos ms

    eficaces).

    Aos 70Clasificacin de los problemas computables: P y NP.

  • Clases P y NP

    Clase PProblemas 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 NP-completo, 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 notableexcepcin del trabajo de Diofanto) e indios, pilares de nuestra civilizacin.Rescat de los griegos la rigurosidad y de los indios la simplicidad (en vez deuna larga demostracin, usar un diagrama junto a la palabra Mira). Sus librosson intuitivos y prcticos y su principal contribucin fue simplificar lasmatemticas a un nivel entendible por no expertos. En particular muestranlas 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 procesadoreslentos 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 Estructurasde Datos". Al mismo tiempo se hicieron estudios para comprender la complejidadinherente en la solucin de algunos problemas.

    Esto di origen a lo que se conoce como la jerarqua de problemascomputacionales y al rea de "Complejidad Computacional".