Introduccion Analisis Algoritmos

6,067 views
5,958 views

Published on

Investigacion sobre analisis de algoritmos
Luis Angel Moreno Baltazar
UV Fac. Admon
LSCA

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,067
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
125
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introduccion Analisis Algoritmos

  1. 1. Nombre: Moreno Baltazar Luis Ángel 1 Matrícula: S08007009 Tarea No. 2 _______________________________________________________________________________ INTRODUCCIÓN E l trabajo de investigación que a continuación presento es la introducción hacia la Experiencia Educativa Análisis de Algoritmos, impartida por la Profra LSCA Leyva Picazzo Fabiola, con la finalidad de retomar los conceptos que ya previamente en semestres pasados. Aunque para ser francos nosotros los jóvenes se nos llegan a olvidar las cosas, así que por nuestro propio bien la catedrática nos solicitó que respondiéramos unas preguntas que nos servirá de apoyo en esta E.E. ¿Qué es Algoritmo?, ¿Por qué analizarlo?, ¿Que es un análisis de algoritmo?, ¿Que es la eficiencia de un algoritmo? Son las interrogantes que se darán solución y explicación a las mismas, esta información fue extraída de la maravilla de la internet, aunque es cierto que existe infinidad de información solo fue recopilada la mejor, a mi criterio. Dentro del mismo contenido se mencionaran algunos métodos de análisis de algoritmos. Sin más preámbulos, los dejo con la primera interrogante antes mencionada, la cual encontré de donde proviene. 1 Generación 2008 Fac. Admón. LSCA Luis Ángel Moreno Baltazar
  2. 2. Historia: La palabra algoritmo proviene del nombre del matemático 2 llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al- Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al- Khowarizmi) que vivió entre los siglos VIII y IX. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el número de operaciones necesarias que formaban el cálculo. Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico. Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó. La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos. 2 http://docencia.izt.uam.mx/pece/pagina_academica/AA/Docum/alk.html Luis Ángel Moreno Baltazar
  3. 3. ¿QUÉ ES ALGORITMO3? Existe gran variedad de Definiciones en textos de libros de programación y dentro del ciberespacio que han sido transcritos tanto sencillas como complejas, de los cuales cito:  Conjunto ordenado y finito de pasos que permite hallar la solución de un problema.  Una secuencia de pasos que conducen a la realización de una tarea.  Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento.  Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa.  Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso.  Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema.  Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada.  Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.  Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos.  Un conjunto de símbolos y procedimientos usados en la realización de un cálculo. Las definiciones más completas o formales:  Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo más finito. [Donald E. Knuth, 1968]  Descripción de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomica lexico [Pierre Scholl, 1988]  Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]. 3 (del latín, dixit algorithmus). Conjunto finito de instrucciones para llevar a cabo una tarea. Constan de pasos finitos, no ambiguos y, de ser posible, eficientes. Luis Ángel Moreno Baltazar
  4. 4. ¿POR QUÉ ANALIZAR UN ALGORITMO? El análisis de algoritmos es de suma importancia ya que usualmente existen varios algoritmos disponibles para una aplicación particular y quisiéramos conocer cuál es el mejor o más apropiado. En este sentido la pregunta clave es: ¿Cuántos recursos (tiempo de ejecución y espacio en memoria) requiere un algoritmo dado? Para responder esta pregunta típicamente se siguiente los siguientes pasos: 1. Identificar las características de los datos de entrada y decidir el tipo de análisis a realizar. 2. Identificar las operaciones abstractas. 3. Efectuar el análisis matemático. Usualmente el análisis de un algoritmo incluye:  Un caso medio y su medida de dispersión (indicación cuantitativa de cuán cercano al caso promedio esperamos que trabaje nuestro algoritmo).  Un caso pesimista (peor caso).  Un caso optimista (mejor caso). Luis Ángel Moreno Baltazar
  5. 5. ¿QUÉ ES UN ANÁLISIS DE ALGORITMO? Es una parte importante de la Teoría de complejidad computacional más amplia, que provee estimaciones teóricas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante útiles en la búsqueda de algoritmos eficientes. El análisis de algoritmos estudia, desde el punto de vista teórico, los recursos computacionales que necesita la ejecución de un programa de ordenador: su eficiencia. A la hora de realizar un análisis teórico de algoritmos es corriente calcular su complejidad 4 en un sentido asintótico , es decir, para un tamaño de entrada suficientemente grande. La cota superior asintótica, y la notación omega y theta se usan con esa finalidad. La medida exacta (no asintótica) de la eficiencia a veces puede ser computada pero para ello suele hacer falta aceptar supuestos acerca de la implementación concreta del algoritmo, llamada modelo de computación. Un modelo de computación puede definirse en términos de un ordenador abstracto, como la Máquina de Turing, y/o postulando que ciertas operaciones se ejecutan en una unidad de tiempo. Por ejemplo, si al conjunto ordenado al que aplicamos una búsqueda binaria tiene n elementos, y podemos garantizar que una única búsqueda binaria puede realizarse en un tiempo unitario, entonces se requieren como mucho log2 N + 1 unidades de tiempo para devolver una respuesta. Las medidas exactas de eficiencia son útiles para quienes verdaderamente implementan y usan algoritmos, porque tienen más precisión y así les permite saber cuanto tiempo pueden suponer que tomará la ejecución. Para algunas personas, como los desarrolladores de videojuegos, una constante oculta puede significar la diferencia entre éxito y fracaso. Las estimaciones de tiempo dependen de cómo definamos un paso. Para que el análisis tenga sentido, debemos garantizar que el tiempo requerido para realizar un paso esté acotado superiormente por una constante. Hay que mantenerse precavido en este terreno; por ejemplo, algunos análisis cuentan con que la suma de dos números se hace en un paso. Este supuesto puede no estar garantizado en ciertos contextos. Si por ejemplo los números involucrados en la computación pueden ser arbitrariamente grandes, dejamos de poder asumir que la adición requiere un tiempo constante (usando papel y lápiz, compara el tiempo que necesitas para sumar dos enteros de 2 dígitos cada uno y el necesario para hacerlo con enteros de 1000 dígitos). Del idioma griego: ἀσύμπτωτος — asýmptōtos— “aquello que no cae” 4 [http://es.wikipedia.org/wiki/As%C3%ADntota] Luis Ángel Moreno Baltazar
  6. 6. ¿QUÉ ES LA EFICIENCIA DE UN ALGORITMO? La Eficiencia de un algoritmo es comprobar que dicho análisis debe ser empírico y teórico, 5 en cualquiera de los diferentes métodos de los algoritmos de ordenamiento , los cuales son:  Bubble sort  Selection sort  Insertion sort  Shell sort  Heap sort  Merge sort  Quick sort ¿Por qué estudiar la eficiencia de los algoritmos? Porque nos sirve para establecer la frontera entre lo factible y lo imposible. Ejemplo: Algoritmos de ordenación Observación El tiempo de ejecución depende del tamaño del conjunto de datos. Objetivo Parametrizar el tiempo de ejecución en función del tamaño del conjunto de datos, intentando buscar una cota superior que nos sirva de garantía. Tipos de Análisis • Peor de los Casos: Se corresponde con el peor tiempo. T(n) es el tiempo máximo sobre las entradas. • Mejor Caso: Límite inferior en el tiempo. T(n) es el menor tiempo de todas las posibles entradas • Caso Promedio: Es el tiempo medio esperado sobre todas las posibles entradas de tamaño n. Se considera una distribución de probabilidad sobre las entradas. • Análisis Probabilístico: Es el tiempo de ejecución esperado para una entrada aleatoria. Se expresa tanto el tiempo de ejecución y la probabilidad de obtenerlo. • Análisis Amortizado: El tiempo que se obtiene para un conjunto de ejecuciones, dividido por el número de ejecuciones. 5 http://www.slideshare.net/PARKANGEL/Algoritmica_ordenamiento Luis Ángel Moreno Baltazar
  7. 7. CONCLUSIONES Bueno este trabajo si me costó un poco de trabajo para poder desarrollarlo tal cual se nos pidió, al igual de comprender algunos conceptos ya que bueno en lo personal no me quedo muy claro la E.E de algorítmica y vaya que es lo esencial sobre todo en mi carrera. Pero al final retomando ciertos contenidos que vi en las clases fui reforzando y recordando las funciones básicas de algorítmica, ya que algoritmo o algorítmica son instrucciones que se escriben para que puedan ser computados dentro de una programación (Pseudocódigo), también se representan gráficamente dicha orden con diagramas de flujo. Lo interesante de esta investigación es que al indagar por la web me encontré con el primer matemático árabe que uso el sistema decimal para crear pseudocódigos, aunque también de nombre el nombre Ada Byron fue la primera mujer en crear un algoritmo para un computador. Ahora bien es importante el análisis de un algoritmo para entregar un trabajo de calidad gracias también a la ayuda de ingeniería del software entre otros, se debe ser cuidadoso para ordenar que el computador ejecute la orden que se le designa, ya que bueno las maquinas no hacen todo el trabajo, es cierto que te facilitan el trabajo, pero si nosotros le damos una instrucción equivoca por ende el proceso y el producto será erróneo. Solo espero que en el transcurso de esta E.E veamos claramente los procesos que se deben tomar en cuenta para no cometer errores. Luis Ángel Moreno Baltazar
  8. 8. REFERENCIAS WEB: http://www.rodolfoquispe.org/blog/que-es-un-algoritmo.php http://www.ica.luz.ve/juancol/eda/analisis-algoritmos/index.html http://docencia.izt.uam.mx/pece/pagina_academica/AA/indexa.html http://es.wikipedia.org/wiki/Análisis_de_algoritmos http://www.slideshare.net/PARKANGEL/eficiencia-algoritmo http://elvex.ugr.es/decsai/c/apuntes/algoritmos.pdf http://www.slideshare.net/PARKANGEL/Algoritmica_ordenamiento (falla en cargar) Luis Ángel Moreno Baltazar

×