Вы находитесь на странице: 1из 32

El Algoritmo

Prof. D. Antonio Moratilla Ocaa


Departamento de Ciencias de la Computacin. rea de Lenguajes y Sistemas Informticos. Universidad de Alcal

El Algoritmo ndice de la conferencia

Introduccin

Ejemplos en la vida real...

Orgenes del trmino Utilizacin

Compresin de datos en ficheros ZIP - LZW Compresin de imgenes JPEG - DCT Encriptacin de comunicaciones (SSL/RSA) Reconocimiento de matrculas, formas... Estabilizacin de imgenes en movimiento Buscando datos en una base de datos: Cmo lo hace?

Clasificacin Complejidad algoritmica Los algoritmos y las estructuras de datos Algoritmos comunes

Ordenacin Bsqueda

El Algoritmo Introduccin

Los algoritmos son operaciones, funciones o conjuntos de pasos finitos, ordenados, bien definidos y no ambiguos, que permiten llegar a un fin. La importancia de los algoritmos radica en que son la gua para poder entender y resolver problemas

El Algoritmo Orgenes del trmino

El trmino algoritmo proviene del nombre del matemtico musulmn Abu Abdallah Muammad ibn Ms al-Jwrizm. En el 825 escribi el libro fundamental de las matemticas actuales: Hisab al yabr ua al muqabala, donde se describen lo procesos matemticos del lgebra, siendo considerado el padre de nuestro sistema numrico.

El Algoritmo Orgenes en la poca moderna

Actualmente utilizamos coloquialmente el trmino algoritmo como conjuntos de pasos para lograr objetivos mediante un ordenador. La formalizacin de los algoritmos viene dada por la utilizacin de las mquinas de Turing. Una mquina de Turing computa una determinada funcin parcial de carcter definido, y unvoca, definida sobre las secuencias de posibles cadenas de smbolos de su alfabeto. En este sentido se puede considerar como equivalente a un programa de ordenador, o lo que es lo mismo, a un algoritmo.

El Algoritmo Turing y sus ideas

Inglaterra: Grupo Ultra, Sala 40. Criptoanalistas aliados. Alan Turing: Desarrolla la mquina universal de turing: una especie de autmata programable matemtico. Empieza la guerra:

Se incorpora Alan Turing a la Sala 40. Utilizan bombas, pequeos (casi una habitacin) sistemas que se dedican a sondear las posibilidades de la enigma. Rompen Enigma y confunden a sus adversarios Comunica a Hitler con sus generales. Los ingleses desarrollan COLOSSUS, para romper el cifrado COLOSSUS: Primer computador programable: 1500 vlvulas electrnicas. Lo desmontaron al terminar la guerra, y destruyeron los planos.

Cifra de Lorenz

El Algoritmo Utilizacin

Actualmente se desarrollan algoritmos pensados principalmente para ser ejecutados en ordenadores. Estos algoritmos no son sino secuencias de operaciones que se pueden programar de forma sencilla en un ordenador Abarcan cualquier campo de la vida actual Pese a estar pensados para ordenadores, no tienen por qu limitarse a eso...

Hacemos un algoritmo para FREIR UN HUEVO?

El Algoritmo Clasificacin

La utilizacin clsica de los algoritmos indica que se clasifican en dos grandes grupos:

Algoritmos de ordenacin Algoritmos de bsqueda

Se suele indicar que los algoritmos de ordenacin son aquellos que alteran de alguna manera los datos con los que trabajan. Los algoritmos de bsqueda son algoritmos que recuperan informacin sin alterarla.

El Algoritmo Clasificacin

Esta clasificacin es demasiado simplista, pues hay algoritmos que mezclan ambos conceptos. A da de hoy podemos encontrar algoritmos de agrupacin, algoritmos genticos, algoritmos de heursticas, algoritmos de aprendizaje, etc... Cada uno de estos algoritmos tiene su propia idiosincrasia, y es difcil clasificarlos en los grupos clsicos.

El Algoritmo Clasificacin

Pese a las diferencias entre los distintos algoritmos, todos tienen un punto en comn, y es su estrategia de trabajo: DIVIDE Y VENCERS!

A menudo los problemas a los que hay que enfrentarse son complicados, as que se opta por partirlos en problemas ms pequeos, que pueden ser abordados por distintos algoritmos especializados.

El Algoritmo Clasificacin

Segn la tcnica que aplica cada algoritmo, se pueden clasificar en varios tipos generales:

Algoritmos voraces: seleccionan los elementos ms prometedores del conjunto de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelizables/distribuibles: permiten la divisin de un problema en subproblemas de forma que se puedan ejecutar de forma simultnea en varios procesadores.

El Algoritmo Clasificacin

El problema de la distribucin del clculo Ganancia


Ampliabilidad Rendimiento Datos curiosos

Evolucin

Rotura Triple-DES

El futuro

El Algoritmo Clasificacin

Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseudoaleatorios. Algoritmos determinsticos: sus pasos estn perfectamente definidos y aportan una solucin exacta. Algoritmos no determinsticos Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo.

El Algoritmo Clasificacin

Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.

El Algoritmo Clasificacin

Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones. Vuelta Atrs: se construye el espacio de soluciones del problema en un rbol que se examina completamente, almacenando las soluciones menos costosas.

El Algorimo Complejidad Algoritmica

Supongamos que tengo que ordenar un fichero con carpetillas...


A Juan se le ocurre un mtodo... A Eva se le ocurre otro mtodo...

Cul de los dos mtodos es mejor? La teora de la complejidad computacional se encarga de indicar cul es ms eficiente.

El Algoritmo Complejidad Algoritmica

La teora de la complejidad computacional es la rama de la teora de la computacin que estudia, de manera terica, los recursos requeridos durante el clculo para resolver un problema. Los recursos comnmente estudiados son:

el tiempo (nmero y tipo de pasos de ejecucin de un algoritmo para resolver un problema) el espacio (cantidad de memoria utilizada para resolver un problema).

El Algoritmo Complejidad Algortmica

Los problemas que tienen una solucin con orden de complejidad lineal son los problemas que se resuelven en un tiempo que se relaciona linealmente con su tamao. Hoy en da las mquinas resuelven problemas mediante algoritmos que tienen como mximo una complejidad o coste computacional polinmico, stos son problemas agrupados en el conjunto P. Los problemas con coste factorial o combinatorio estn agrupados en NP. Estos problemas no tienen una solucin prctica, es decir, una mquina no puede resolverlos en un tiempo razonable.

El Algoritmo
Los Algoritmos y las Estructuras de Datos

Hasta aqu, slo hemos pensado en los algoritmos como operaciones que se realizan en un determinado orden para conseguir llegar a un fin. Sin embargo, esas operaciones trabajan sobre algn tipo de datos... Las estructuras de datos con las que trabajan los algoritmos estn muy ligadas a la implementacin concreta del algoritmo que se va a utilizar

El Algoritmo
Los Algoritmos y las Estructuras de Datos

Vectores Arrays n-dimensionales rboles Listas


Simplemente enlazadas Doblemente enlazadas

Colas Pilas ....

El Algoritmo
Algoritmos comunes: Ordenacin y Bsqueda

Ya est bien de blah blah blah... El movimiento se demuestra andando!! http://www.brian-borowski.com/Sorting/

El Algoritmo Ejemplos en la vida real...

Compresin de datos

Algoritmo LZW

Trata de aumentar la Entropa Utilizado en ficheros ZIP, RAR... Se basa en la utilizacin de un diccionario de apariciones... Permite ratios de compresin sin prdida elevados.

Existen otros algoritmos: RLE...

El Algoritmo Ejemplos en la vida real...

Compresin de imgenes

Con prdida

JPEG: Basado en la transformada discreta del coseno. RLE GIF BMP


Sin prdida

El Algoritmo Ejemplos en la vida real...

Compresion de imgenes: La DCT

El Algoritmo Ejemplos en la vida real...

Encriptacin y seguridad: Cmo se firma digitalmente un mensaje?


CLAVE PRIVADA Message Digest (MD5) Encriptado [TimeStamp+ + info +MD5] Firma Digital

Cmo se verifica un mensaje firmado?


Message Digest (MD5) Firma Digital Descifado con CLAVE PBLICA Si: Correcto Son IGUALES? No: Manipulado

Datos MD5 origen -info - TimeStamp

El Algoritmo Ejemplos en la vida real...

Como asegurar que dos ordenadores tienen el mismo dato sin que ese dato viaje por la red ni por un disquete?

Algoritmo de Diffie-Hellman
Texto en claro (Clave) Estacin A G za zb G Estacin B Clculo de (za)b Se elige un valor b

Se elige un valor a Clculo de (zb)a

Desencriptado
CRIPTOANALISTA

Valores interceptados G, za y zb Equivale al problema del Logaritmo Discreto y=gn

El Algoritmo Ejemplos en la vida real...

Certificados electrnicos y comunicaciones seguras: RSA [(me)d]


INFORMACIN CIFRADA CIFRADO CON CLAVE PBLICA CLAVE PBLICA Texto Cifrado DESTINO DE INFORMACIN DESCIFRADO CON CLAVE PRIVADA

RECEPCIN CON FIRMA VERIFICACIN CON CLAVE PBLICA

CLAVE PRIVADA

FIRMA DIGITAL CON CLAVE PRIVADA Texto claro del mensaje Y firma digital

El Algoritmo Ejemplos en la vida real...

Reconocimiento de matrculas, formas...

Extraccin de caractersticas mediante operaciones matemticas. Videos adjuntos.

El Algoritmo Ejemplos en la vida real...

Estabilizacin de imgenes en movimiento:

Robot

El Algoritmo Ejemplos de la vida real...

Buscando datos en un base de datos


Algoritmos de ordenacin especficos Algoritmos de bsqueda especficos Indexacin de contenidos Asociacin dinmica: Funciona modificando la

Ejemplo:

funcin de asociacin dinmicamente para acomodarse al aumento o disminucin de la base de datos

El Algoritmo Ejemplos de la vida real...

Ejemplo de ndice asociativo dinmico

El Algoritmo Conclusiones

Los algoritmos no son algo tan lejano como se podra pensar (recordemos el huevo frito) Se utilizan para prcticamente cualquier tarea, no slo para los ordenadores Existen multitud de algoritmos, adaptados para cada situacin especfica. Cada da se inventan nuevos algoritmos para cubrir nuevos problemas.

Вам также может понравиться