Secuencia ordenada de pasos exentos de ambigüedad
Secuencia ordenada de pasos exentos de ambigüedad
tal que, al llevarse a cabo con fidelidad, dará como
tal que, al llevarse a cabo con fidelidad, dará como
resultado que se realice la tarea para la que se ha
resultado que se realice la tarea para la que se ha
resultado que se realice la tarea para la que se ha
resultado que se realice la tarea para la que se ha
diseñado en un tiempo finito.
diseñado en un tiempo finito.
Un algoritmo nos permite obtener
Un algoritmo nos permite obtener
Precisión::
Precisión
Cada etapa ha de estar especificado rigurosamente.
Cada etapa ha de estar especificado rigurosamente.
La ejecución de un algoritmo no ha de dejar espacio
La ejecución de un algoritmo no ha de dejar espacio
para la interpretación, la intuición o la creatividad.
para la interpretación, la intuición o la creatividad.
22
33
Concepto de algoritmo
Concepto de algoritmo
CaracterÃsticas de un algoritmo
CaracterÃsticas de un algoritmo
Entradas::
Entradas
Un algoritmo tiene cero o más entradas
Un algoritmo tiene cero o más entradas
(cantidades que se le dan inicialmente antes de que comience su ejecución).
(cantidades que se le dan inicialmente antes de que comience su ejecución).
Salidas::
Salidas
Un algoritmo tiene una o más salidas
Un algoritmo tiene una o más salidas
(cantidades que tienen una relación especÃfica con las entradas).
(cantidades que tienen una relación especÃfica con las entradas).
Resolución de problemas
Resolución de problemas
Resolución de problemas con ordenador:
Resolución de problemas con ordenador:
Diseñar un algoritmo para el problema.
Diseñar un algoritmo para el problema.
Expresar el algoritmo como un programa.
Expresar el algoritmo como un programa.
Expresar el algoritmo como un programa.
Expresar el algoritmo como un programa.
Ejecutar el programa.
Ejecutar el programa.
44
55
Resolución de problemas
Resolución de problemas
Clasificación de problemas
Clasificación de problemas
Años 30
Años 30
Problemas computables y no computables.
Problemas computables y no computables.
Años 50
Años 50
Años 50
Años 50
Complejidad de los problemas computables
Complejidad de los problemas computables
(búsqueda de algoritmos más eficaces).
(búsqueda de algoritmos más eficaces).
Años 70
Años 70
Clasificación de los problemas computables: P y NP.
Clasificación de los problemas computables: P y NP.
66
77
Clasificación de problemas
Clasificación de problemas
Clases P y NP
Clases P y NP
Clase P
Clase P
Problemas resolubles en tiempo polinómico
Problemas resolubles en tiempo
polinómico
con una máquina de
con una máquina de Turing
con una máquina de
con una máquina de Turing
Turing determinÃstica
Turing determinÃstica
determinÃstica
determinÃstica
(esto es, el tiempo de ejecución del algoritmo en un
(esto es, el tiempo de ejecución del algoritmo en un
ordenador viene descrito por una fórmula
ordenador viene descrito por una fórmula polinómica
polinómica).).
Clase NP
Clase NP [Non
[Non--Deterministic
Polynomial--time]
time]
polinómico
Problemas resolubles en tiempo
Problemas resolubles en tiempo polinómico
determinÃstica..
Turing no no determinÃstica
con una máquina de
con una máquina de Turing
Deterministic Polynomial
Clasificación de problemas
Clasificación de problemas
Clase P ⊆⊆⊆⊆⊆⊆⊆⊆ Clase NP
Clase P
Clase NP
88
99
Clasificación de problemas
Clasificación de problemas
Reducción de problemas y complejidad
Reducción de problemas y complejidad
Si reducimos un problema (A) a otro (B), podemos
Si reducimos un problema (A) a otro (B), podemos
obtener una solución con un algoritmo para el
obtener una solución con un algoritmo para el
problema B y transformar esa solución para convertirla
problema B y transformar esa solución para convertirla
problema B y transformar esa solución para convertirla
problema B y transformar esa solución para convertirla
en una solución para el problema A.
en una solución para el problema A.
¿P=NP?
polinómico. .
Si encontráramos un algoritmo polinómico
polinómico
¿P=NP? Si encontráramos un algoritmo
para un problema NP
para un problema NP--completo, sabrÃamos que todos
completo, sabrÃamos que todos
los problemas de la clase NP se pueden resolver en
los problemas de la clase NP se pueden resolver en
tiempo
tiempo polinómico
AlgorÃtmica
AlgorÃtmica
La algorÃtmica, como disciplina de estudio de los
La algorÃtmica, como disciplina de estudio de los
algoritmos, ha de considerar:
algoritmos, ha de considerar:
El diseño de algoritmos.
El diseño de algoritmos.
El diseño de algoritmos.
El diseño de algoritmos.
La validación de algoritmos.
La validación de algoritmos.
El análisis de algoritmos.
El análisis de algoritmos.
1010
1111
AlgorÃtmica
AlgorÃtmica
Diseño de algoritmos
Diseño de algoritmos
Creación de algoritmos (parte creativa).
Creación de algoritmos (parte creativa).
Validación de algoritmos
Validación de algoritmos
Demostración de que las respuestas dadas por el
Demostración de que las respuestas dadas por el
algoritmo son correctas para todas las posibles
algoritmo son correctas para todas las posibles
entradas.
entradas.
entradas.
entradas.
Determinación de los recursos (espacio, tiempo) que
Determinación de los recursos (espacio, tiempo) que
consumen los algoritmos en la resolución de
consumen los algoritmos en la resolución de
problemas.
problemas.
problemas.
problemas.
El análisis de algoritmos permite comparar algoritmos
El análisis de algoritmos permite comparar algoritmos
alternativos con criterios cuantitativos (y elegir el
alternativos con criterios cuantitativos (y elegir el
algoritmo más adecuado para resolver un problema).
algoritmo más adecuado para resolver un problema).
1414
Análisis de la eficiencia
Análisis de la eficiencia
Problema
Problema: :
Determinar las caracterÃsticas del algoritmo que sirvan
Determinar las caracterÃsticas del algoritmo que sirvan
para evaluar su rendimiento.
para evaluar su rendimiento.
Ejemplo: Problema del viajante de comercio (TSP)
Ejemplo:
Problema del viajante de comercio (TSP)
Si tenemos N ciudades e intentamos solucionar el
Si tenemos N ciudades e intentamos solucionar el
problema por fuerza bruta (comprobando todas las
problema por fuerza bruta (comprobando todas las
soluciones posibles), tendremos que comprobar N!
soluciones posibles), tendremos que comprobar N!
soluciones posibles), tendremos que comprobar N!
soluciones posibles), tendremos que comprobar N!
posibles soluciones.
posibles soluciones.
Comentarios de: Análisis y Diseño de Algoritmos - Introducción (1)