Está en la página 1de 28

Análisis de algoritmos

Tema 01: Presentación de la unidad de aprendizaje

M. en C. Edgardo Adrián Franco Martínez 1


http://www.eafranco.com
edfrancom@ipn.mx
@edfrancom edgardoadrianfrancom
Contenido

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Introducción
• Antecedentes
• Resolver un problema computable
• Objetivo de la unidad de aprendizaje
• Temario
• Forma de evaluación y asistencia
• Entrega de tareas, ejercicios y practicas
• Herramientas computacionales
• Bibliografía
• Avisos y actividades
• Actitudes y valores
2
Introducción

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Una computadora es una máquina capaz de
procesar información digital a gran
velocidad.

• Una computadora esta compuesta por un conjunto de


componentes electrónicos, mecánicos e interfaces para
interactuar con el exterior (usuarios u otros dispositivos) y
por un conjunto de programas que determinan que
operaciones llevar a cabo.

• Los datos ordenados (información) que constituyen una


3
entrada (input) a la computadora se procesan mediante una
lógica (programa) para producir una salida (output).
• Una computadora es una máquina capaz de
procesar información digital a gran

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
velocidad.

Computadora (hardware)

Entrada Conjunto de programas Salida


(software)

Una computadora esta formada por un parte física y otra lógica (hardware &
software), la primera de estas esta conformada por los elementos físicos que la 4
conforman (dispositivos electrónicos y mecánicos), la parte lógica es aquella que
determina que procesos se van a realizar con la información de entrada.
• La persona responsable de indicar a la computadora la lógica
de procesamiento recae en el que lleva a cabo la

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
construcción del software (programador).

• La razón de ser de una computadora es poder resolver


problemas capaces de ser modelados y representados en
datos coherentes y ordenados (información), apoyándose de
su gran velocidad y capacidad de seguir una serie de pasos
programados con anterioridad y dependientes de la
información que se maneja.

Computadora (hardware)

Entrada Conjunto de programas Salida


Algoritmo (s)
(software)
5
• Algoritmo, es un conjunto ordenado y finito de operaciones
que permiten encontrar la solución a un problema.

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• P.g. una receta de cocina, las instrucciones para armar una
bicicleta, un mueble, etc.

• Los primeros algoritmos registrados datan de Babilonia,


originados en las matemáticas como un método para
resolver un problema usando una secuencia de cálculos más
simples. Esta palabra tiene su origen en el nombre de un
famoso matemático y erudito árabe del siglo IX, Al-
Khorezmi.

• En el contexto de la computación algoritmo se usa para


denominar a la secuencia de pasos a seguir para resolver un
problema usando una computadora. Por esta razón, la 6
algoritmia o ciencia de los algoritmos, es uno de los pilares
de la computación.
• El análisis de algoritmos es una parte importante de la
Teoría de complejidad computacional, que provee

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
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.

• Los temas de mayor interés son el análisis teórico de


algoritmos lo que permite, calcular su complejidad en un
sentido asintótico, así como el análisis de problemas
comunes que requieren una cantidad de procesamiento alta
de los datos para poder ser resueltos con exactitud o
aproximación a la respuesta optima.

7
Antecedentes

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Programación estructurada y/o orientada a objetos
• Estructuras de datos
• Conocimiento de teoría de conjuntos y lógica
• Matemáticas discretas y grafos
• Conocimiento del sistema binario y hexadecimal
• Manejo de sistemas operativos y manejo de su consola o terminal.
• Capacidades de diseño e implementación de solución a problemas

8
Resolver un problema computable

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Para resolver un problema computable primeramente este debe
de quedar claro para el programador.
• Posteriormente es necesario abstraerlo según el paradigma de
programación a una solución clara.
• Para finalmente implementar la solución en un lenguaje que
soporte el paradigma empleado.
Análisis de
algoritmos

Análisis y Diseño de la Implementación


entendimiento del la solución
del problema solución

Abstracción del 9
problema al paradigma
de programación a
emplear
Objetivo de la unidad de aprendizaje

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Evaluar e implementar la solución a problemas algorítmicos, con
base en las técnicas de análisis y estrategias de diseño.

10
Temario

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Unidad I. Técnicas de análisis
• Unidad II. Estrategias de diseño
• Unidad III. Completitud NP

11
1. Técnicas de análisis
1. El rol de los algoritmos en la Computación

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
2. Notación asintótica
1. Notación Theta
2. Notación O mayúscula
3. Notación Omega
4. Notación o minúscula
3. Ecuaciones de recurrencia
1. Método de sustitución
2. Método de iteraciones
3. Método maestro
4. Análisis probabilístico y algoritmos aleatorizados
12
2. Estrategias de diseño
1. Divide y vencerás

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
1. Multiplicación entera
2. Ordenamiento por mezcla
3. La Transformada rápida de Fourier
2. Programación dinámica
1. Elementos de programación dinámica
2. Multiplicación de una secuencia de matrices
3. Cálculo de la sub-secuencia común más larga
4. El problema de la mochila entera
3. Algoritmos ávidos
1. Elementos de la estrategia ávida
2. El problema de selección de actividades
3. Códigos de Huffman
4. El problema de la mochila faccionaria
4. Algoritmos de empate de cadenas
1. Algoritmo ingenuo 13
2. Algoritmo con Autómata Finito
3. Algoritmo de Knuth-Morris-Pratt
3. Completitud NP
1. Tiempo polinomial
1. Problemas abstractos

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
2. Codificaciones
3. Definición a través de un lenguaje formal
2. Verificación de tiempo polinomial
1. Ciclos hamiltonianos
2. Algoritmos de verificación
3. La clase de complejidad NP
3. Completitud NP y reductibilidad
1. Problemas de decisión y problemas de optimización
2. Reductibilidad
3. Completitud NP
4. Pruebas de completitud NP
1. Problemas NP completos
2. Problemas sobre grafos
5. Algoritmos de aproximación
1. Cotas de rendimiento de algoritmos de aproximación
2. Algoritmo de aproximación para el problema de la cubierta de vértices 14
3. Algoritmo de aproximación
Forma de evaluación

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• 10 % Tareas (Mapas mentales, resúmenes, investigación, etc.) *
• 20 % Ejercicios (Escritos, programas, y simulaciones)*
• 40 % Practicas **
• 30 % Evaluaciones en clase (Escritas y/o prácticas)*

*Individuales
**En equipo

• Exposiciones 10% Extra Final


• Digitalización de apuntes, ejercicios y documentos de
interés (Gráficos en formato PNG) ?% Extra
15
• Asistencias
• Las inasistencias injustificadas a clases equivalen a no aprovechar tu

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
educación, estamos en nivel licenciatura no existe la necesidad de
justificar tus inasistencias, pero si hay una actividad o practica a
evaluar en clase y no te encuentras no habrá otra fecha para
recuperar la actividad.
• Participaciones en clase
• Cada participación fomenta tu aprendizaje y el de tus compañeros
participa.
• Extraordinario (Practicas totales)
• Para tener posibilidad de aprobar o mejorar calificación en
extraordinario, por experiencia puedo asegurar que solo lo logra
quién tienen una calificación final mayor a 4.5 durante el curso.
• Extraordinario (Presentación de la totalidad de las practicas de
manera individual, evaluación escrita y practica )
• Tareas, ejercicios y practicas que hayan sido copiadas no se
consideraran en su totalidad y al que haya permitido que su 16
trabajo fuera copeado se le penalizará en su calificación.
Entrega de tareas, ejercicios y prácticas

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• La entrega de las tareas, ejercicios y practicas se realizará a través
de la página:
http://www.eafranco.com

17
• Grupo y contraseña

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
Grupo Contraseña
3CM2 analisis3cm2

• Escribir y almacenar las claves de confirmación, para


aclaraciones a con respecto a la evaluación.

18
Ejercicios y tareas

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Personales.
• Tareas copiadas de otros serán anuladas.
• La fecha de entrega se acordará al momento de su asignación.
• Portada con fotografía del alumno
• Encabezado en cada pagina con el nombre del alumno, materia,
grupo, nombre del trabajo y número de página.
• Bibliografía en formato IEEE.

19
• Tareas y ejercicios en formatos PDF, DOC & DOCX u otro
si así se indica en su asignación.

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Si se incluyen códigos fuente, incluir las instrucciones de
compilación y capturas de pantalla de muestra del
funcionamiento.
• En el caso de tareas y ejercicios con varios archivos
comprimirlos en un único archivo en formato ZIP, RAR,
TAR, JAR o GZIP, sin contraseña.

• Códigos, scripts, gráficos, archivos auxiliares


• Documentados (Nombre del alumno, versión, sinopsis del archivo)
• En el caso de código el nombre de las variables deberá ser
adecuado y entendible (En español)
• Documentación de funciones y partes importantes de los códigos 20
según el objetivo del programa y la teoría vista en clase.
Practicas
• Equipos de 2 a 3 integrantes.

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Las práctica se plantean en clases y se entregan una sesión de
laboratorio acordada, la fecha de entrega del reporte vía Web
se dará una vez entregada la práctica.

• Los programas siempre deberán de estar documentados


antes de entregar la práctica.

• Practicas copiadas de otros equipos o grupos serán anuladas.

La calificación de la sesión de laboratorio es


promediada con la del reporte, si el reporte 21
no cumple con lo establecido o es deficiente
esta disminuirá.
Formato de los reportes de practica

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Portada (*Fotografía del equipo)
• Introducción
• Planteamiento del problema
• Diseño y funcionamiento de la solución (Descripción de la abstracción
del problema y su solución, apoyándose de diagramas y figuras en un lenguaje
claro)
• Implementación de la solución (Según la solución diseñada como se
implemento en el lenguaje de programación)
• Funcionamiento (Resumen de verificación de la solución, pruebas y resultados
de salida *Pantallazos *Tablas *Graficos)
• Errores detectados (Si existe algún error detectado, el cuál no fue posible
resolver o se desconoce el motivo y solo ocurre con ciertas condiciones es
necesario describirlo)
• Posibles mejoras (Describir posibles disminuciones de código en la
implementación o otras posibles soluciones)
• Conclusiones (Por cada integrante del equipo) 22
• Anexo (Códigos fuente *con colores e instrucciones de compilación)
• Bibliografía (En formato IEEE)
¿Qué se envía por la página Web en una práctica?

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• En un solo archivo (ZIP, RAR, TAR, JAR o GZIP)
• Archivo de observaciones*
• Reporte (DOC, DOCX o PDF)
• Códigos fuente (.C, .H, etc.)
• Código documentado: Titulo, descripción, fecha, versión, autor.
• (Funciones y Algoritmos: ¿Qué hace?, ¿Cómo lo hace?, ¿Qué
recibe?, ¿Qué devuelve?, ¿Causa de errores?).

• OBSERVACIONES
• *NO enviar ejecutables o archivos innecesarios, las instrucciones
de compilación van en el anexo del reporte. (Enviar los archivos
necesarios para la generación de ejecutables)
23
Herramientas computacionales

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Lenguaje C estandarizado (ANSI C)
• No depender de la versión del compilador
• No depender del sistema operativo

• Lenguajes interpretados (Python, Perl)


• Utilizar estructuras de datos ya implementadas

• Programación Visual (Visual C#)


• Aumentar la usabilidad

• Se usará Windows & LINUX según se requiera


24
Bibliografía

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Baase, S. Van Gelder, A. (2001). Algoritmos Computacionales (3ª
Ed.).México: Editorial Pearson. ISBN-13: 978-0201612448.

• Brassard, G. (1997). Fundamentos de Algoritmia. España: Prentice Hall.


ISBN: 848966000X.

• Cormen, T. Leiserson, Ch. Rivest R. (2003). Introduction to algorithms


(2nd. Ed.) Estados Unidos de América: MIT press. ISBN-13: 978-
0072970548.

• Harel, D. (2004). Algorithmics: The spirit of Computing (3rd. Ed). Estados


Unidos de América: Addison Wesley. ISBN-13: 978-0321117847.

• Oram A. (2007). Beautiful Code: Leading Programmers Explain How They 25


Think. Estados Unidos de América: Ed. O'Reilly. ISBN-13: 978-
0596510046.
Avisos y actividades

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Cualquier tipo de aviso y actividades planeadas durante el
semestre serán notificadas en la página Web del curso, vía Twitter.

@edfrancom
http://www.eafranco.com

• Contacto por email: edfrancom@ipn.mx


26
Actitudes y valores

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Mis valores éticos fundamentales
• Responsabilidad
• Habilidad para responder a nuestros actos, ideales, compromisos,
conocimientos, valores éticos, a la familia, al mundo en el que vivimos y a
la sociedad. ¿Como ser responsable? Disciplina, trabajo, esfuerzo,
paciencia.

• Respeto
• Reconocer que todo tiene un valor (persona, ser vivo, idea, opinión, etc.) y
aunque para mi una cosa no tenga el mismo valor que para el resto, todos
mis actos nunca deben de afectar a lo que los demás valoran. ¿Como ser
respetoso? Tolerancia, Empatía, Humildad.

• Honestidad
• Consiste en comportarse y expresarse con coherencia y sinceridad (decir
la verdad), y de acuerdo con los valores éticos propios. ¿Como ser 27
honesto? Arraiga valores y principios éticos y morales, conócete a ti
mismo.
• Actitudes de una persona feliz
• Amable
• Amoroso (Con las personas que te rodean y con las actividades que realices)

Análisis de algoritmos

Prof. Edgardo Adrián Franco Martínez


01 Presentación de la unidad de aprendizaje
• Optimista
• Tolerante Tener un propósito de vida es
• Cortes importante, este nace del
interior de la gratitud y la
• Que necesito para lograr mis objetivos inconformidad.
• Salud
• Esfuerzo Si no eres feliz no encuentras el
• Dedicación propósito en la vida. (Se feliz
• Trabajo bajo cualquier circunstancia)
• Propósito de vida

• Cuales deberían ser los principales objetivos de un buen profesionista


• Siempre anteponer mi ética antes de actuar No seas apático a esto elige
• Aprender en todo momento mejorar cada día como persona,
• Ayudar en todo momento a quien lo necesite nunca pases por encima de los
demás para alcanzar tus metas.
• Compartir el conocimiento
• Desempeñar mi trabajo con gusto por ello y siempre de la mejor manera posible
sin condicionarlo a una ganancia económica. (Todo viene por añadidura no seas
ambicioso) 28
• Ser feliz (Es una decisión no es el resultado de un evento)
• Gusto y pasión por lo que se desempeña y vive ¿Qué te gustaba de niño?

También podría gustarte