Está en la página 1de 12

Anlisis y Diseo de Algoritmos

Introduccin

Anlisis y Diseo de Algoritmos


Concepto de algoritmo Resolucin de problemas Clasificacin de problemas Algortmica Anlisis de la eficiencia de los algoritmos Tcnicas de diseo de algoritmos

Concepto de algoritmo
Definicin de algoritmo Secuencia ordenada de pasos exentos de 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. Un algoritmo nos permite obtener la solucin del problema para el que est diseado.

Concepto de algoritmo
Propiedades de un algoritmo Finitud: La ejecucin de un algoritmo ha de terminar 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.

Concepto de algoritmo
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
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.

Clasificacin de problemas
Clases P y NP Clase P Problemas resolubles en tiempo polinmico con una mquina de Turing determinstica (esto es, el tiempo de ejecucin del algoritmo en un ordenador viene descrito por una frmula polinmica). polinmica). Clase NP [Non[Non-Deterministic PolynomialPolynomial-time] Problemas resolubles en tiempo polinmico con una mquina de Turing no determinstica.
8

Clasificacin de problemas
Clase P Clase NP

Clasificacin de problemas
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 NPNP-completo, sabramos que todos los problemas de la clase NP se pueden resolver en tiempo polinmico. polinmico.
10

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.

11

Algortmica
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).

12

Algortmica
Validacin de algoritmos Demostracin de que las respuestas dadas por el algoritmo son correctas para todas las posibles entradas. nico mtodo vlido: Demostracin formal.

13

Algortmica
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).

14

Anlisis de la eficiencia
Problema: 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


15

Tcnicas de diseo
Ejemplo: Problema del viajante de comercio (TSP)
532 ciudades 532! soluciones posibles Solucin ptima: 27.686 millas

16

Tcnicas de diseo
Ejemplo: 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. Se necesitan tcnicas que nos permitan disear algoritmos eficientes.

Tcnicas de diseo
Ejemplo: Problema del viajante de comercio (TSP)

17 ciudades Solucin ptima = 226.64 Soluciones posibles = 17! = 355 687 428 096 000

11

Tcnicas de diseo
Solucin aproximada con un algoritmo iterativo:

Iteracin 0: Mejor solucin = 403.7

Iteracin 25: Mejor solucin = 303.86

17 ciudades Solucin ptima = 226.64 Soluciones posibles = 17! = 355 687 428 096 000

19

Tcnicas de diseo
Solucin aproximada con un algoritmo iterativo:

Iteracin 50: Mejor solucin = 293.6

Iteracin 100: Mejor solucin = 256.55

17 ciudades Solucin ptima = 226.64 Soluciones posibles = 17! = 355 687 428 096 000

20

Tcnicas de diseo
Solucin aproximada con un algoritmo iterativo:

Iteracin 200: Mejor solucin = 231.4

Iteracin 250: Mejor solucin = 226.64

17 ciudades Solucin ptima = 226.64 Soluciones posibles = 17! = 355 687 428 096 000

21

Tcnicas de diseo
Tcnicas de diseo de algoritmos Divide y vencers Algoritmos greedy Programacin dinmica Exploracin de grafos Branch & Bound (ramificacin y poda) Backtracking (vuelta atrs) Algoritmos probabilsticos Metaheursticas
22

También podría gustarte