Descargar

Algoritmos y estructuras de datos

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Observaciones y advertencias:

    Estas transparencias pueden cambiar un poco antes o después de la clase correspondiente a cada tema.

    Las presentaciones NO INCLUYEN las demostraciones que TAMBIEN forman parte del curso y que son dadas en clase. En la mayoría de los casos se incluyen sólo los enunciados de los teoremas. (o sea esto NO es un apunte de la materia!!).

    También puede haber algún ejemplo o resultado que se de en clase y no esté las transparencias.

    .

    edu.red

    PROGRAMA

    1. ALGORITMOS:

    Definición de algoritmo. Modelos de computación: modelo RAM, Máquina de Turing. Complejidad, definición, complejidad en el peor caso, en el caso promedio. Algoritmos de tiempo polinomial y no polinomial. Límite inferior. Ejemplo: análisis de algoritmos de ordenamiento. Algoritmos recursivos. Análisis de la complejidad de algoritmos recursivos. Técnicas de diseño de algoritmos: dividir y conquistar, backtracking, algoritmos golosos, programación dinámica. Algoritmos probabilísticos. Algoritmos aproximados Algoritmos heurísticos: ejemplos. Metaheurísticas. Nociones de evaluación de heurísticas.

    2. GRAFOS:

    Definiciones básicas. Adyacencia, grado de un nodo, isomorfismos, caminos, conexión, etc. Grafos eulerianos y hamiltonianos. Grafos bipartitos. Arboles: caracterización, árboles orientados, árbol generador. Enumeración. Planaridad. Coloreo. Número cromático. Matching, conjunto independiente, recubrimiento. Recubrimiento de aristas y vértices.

    edu.red

    3. ALGORITMOS EN GRAFOS Y APLICACIONES:

    Representación de un grafo en la computadora: matrices de incidencia y adyacencia, listas. Algoritmos de búsqueda en grafos: BFS, DFS, A*. Mínimo árbol generador, algoritmos de Prim y Kruskal. Arboles ordenados: códigos unívocamente descifrables. Algoritmos para detección de circuitos. Algoritmos para encontrar el camino mínimo en un grafo: Dijkstra, Ford, Floyd, Dantzig. Planificación de procesos: PERT/CPM. . Heurísticas para el problema del viajante de comercio. Algoritmos para determinar si un grafo es planar. Algoritmos para coloreo de grafos. Algoritmos para encontrar el flujo máximo en una red: Ford y Fulkerson. Matching: algoritmos para correspondencias máximas en grafos bipartitos. Otras aplicaciones.

    4. PROBLEMAS NP-COMPLETOS:

    Problemas tratables e intratables. Problemas de decisión. P y NP. Maquinas de Turing no determinísticas. Problemas NP-completos. Relación entre P y NP. Problemas de grafos NP-completos: coloreo de grafos, grafos hamiltonianos, recubrimiento mínimo de las aristas, corte máximo, etc.

    edu.red

    BIBLIOGRAFIA

    BIBLIOGRAFÍA BÁSICA :

    Brassard,G., Bratley,P."Fundamental of Algorithmics", Prentice Hall,1996. Cormen, T.,Leiserson, C.,Rivest,R.,Stein, C.,"Introduction to Algorithms", The MIT Press, McGraw-Hill,2001. Garey M.R. and Johnson D.S.: "Computers and intractability: a guide to the theory of NP- Completeness", W. Freeman and Co., 1979. Gross,J., and Yellen, J. ,"Graph theory and its applications", CRC, 1999 Harary F., "Graph theory", Addison-Wesley, 1969.

    BIBLIOGRAFÍA DE CONSULTA : ver en la página WEB de la materia y en el el archivo de las prácticas.

    edu.red

    ALGORITMOS

    Qué es un algoritmo ? Qué es un buen algoritmo? Dados dos algoritmos para resolver un mismo problema, cuál es mejor? Cuándo un problema está bien resuelto? Cómo se hace para inventar un nuevo algoritmo?

    edu.red

    Qué es un algoritmo? Noción "informal":

    Un algoritmo es una sucesión finita de instrucciones "bien definidas" tal que:

    i) No hay ambigüedad en las instrucciones. ii) Después de ejecutar una instrucción no hay ambigüedad respecto de cual es la instrucción que debe ejecutarse a continuación. iii) Después de un número finito de instrucciones ejecutadas se llega siempre a la instrucción STOP ("Un algoritmo siempre para").

    edu.red

    PROBLEMA

    instancia de un problema datos de entrada de una instancia (E) solución (S)

    ALGORITMO:

    técnica para la resolución de un problema función f tal que f (E) = S

    edu.red

    Problema de Collatz Paso 1: z número entero positivo Paso 2: mientras z ? 1 hacer Paso 3: Si z es par poner z = : z / 2 En caso contrario poner z =: 3 z +1

    Paso 4: parar ===================================== es esto un algoritmo?

    edu.red

    Cuánto tarda un algoritmo en resolver un problema?

    Cuándo un algoritmo que resuelve un problema es mejor que otro que resuelve el mismo problema?

    Complejidad Computacional

    edu.red

    Complejidad La complejidad de un algoritmo es una función que calcula el tiempo de ejecución en función del tamaño de la entrada de un problema.

    Historia

    Complejidad en el peor caso (es siempre significativo el peor caso?) Complejidad en el caso promedio (porqué no usamos este enfoque siempre?)

    edu.red

    Cómo medir el tiempo de ejecución en función del tamaño de la entrada de los datos del problema?

    MODELOS DE COMPUTACION

    RAM MAQUINA DE TURING

    edu.red

    Maquina RAM (RANDOM ACCESS MACHINE) Es el modelo que usamos implícitamente en la práctica para evaluar la complejidad de un algoritmo.

    ================================================== unidad de memoria unidad de entrada procesador (programa) unidad de salida conjunto de instrucciones ====================================================

    Un programa RAM es una secuencia finita de estas instrucciones

    Partes: 1, 2
    Página siguiente