Encuadre de la unidad de aprendizaje
1
Análisis de algoritmos
M. en C. Edgardo Adrián Franco Martínez http://[email protected]
@edfrancom edgardoadrianfrancom
Contenido• Introducción
• Antecedentes• Resolver un problema computable
• Objetivo de la unidad de aprendizaje
• Temario
• Forma de evaluación y asistencia
• Horarios de asesoría y pagina Web de la UA
• Avisos y actividades
• Entrega de tareas, ejercicios y practicas
• Herramientas computacionales
• Bibliografía
• Actitudes y valores 2
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Introducción• Una computadora es una máquina capaz de
procesar información digital a granvelocidad.
• Una computadora esta compuesta por un conjunto decomponentes electrónicos, mecánicos e interfaces parainteractuar con el exterior (usuarios u otros dispositivos) ypor un conjunto de programas que determinan queoperaciones llevar a cabo.
• Los datos ordenados (información) que constituyen unaentrada (input) a la computadora se procesan mediante unalógica (programa) para producir una salida (output).
3
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
4
Conjunto de programas(software)
Computadora (hardware)
Entrada Salida
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 laconforman (dispositivos electrónicos y mecánicos), la parte lógica es aquella quedetermina que procesos se van a realizar con la información de entrada.
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Una computadora es una máquina capaz deprocesar información digital a granvelocidad.
• La persona responsable de indicar a la computadora la lógicade procesamiento recae en el que lleva a cabo laconstrucción del software (programador).
• La razón de ser de una computadora es poder resolverproblemas capaces de ser modelados y representados endatos coherentes y ordenados (información), apoyándose desu gran velocidad y capacidad de seguir una serie de pasosprogramados con anterioridad y dependientes de lainformación que se maneja.
5
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Conjunto de programas(software)
Computadora (hardware)
Entrada SalidaAlgoritmo (s)
• Algoritmo, es un conjunto ordenado y finito de operacionesque permiten encontrar la solución a un problema.
• P.g. una receta de cocina, las instrucciones para armar unabicicleta, un mueble, etc.
• Los primeros algoritmos registrados datan de Babilonia,originados en las matemáticas como un método pararesolver un problema usando una secuencia de cálculos mássimples. Esta palabra tiene su origen en el nombre de unfamoso matemático y erudito árabe del siglo IX, Al-Khorezmi.
• En el contexto de la computación algoritmo se usa paradenominar a la secuencia de pasos a seguir para resolver unproblema usando una computadora. Por esta razón, laalgoritmia o ciencia de los algoritmos, es uno de los pilaresde la computación.
6
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• El análisis de algoritmos es una parte importante de laTeoría de complejidad computacional, que proveeestimaciones teóricas para los recursos que necesitacualquier algoritmo que resuelva un problemacomputacional dado. Estas estimaciones resultan serbastante útiles en la búsqueda de algoritmos eficientes.
• Los temas de mayor interés son el análisis teórico dealgoritmos lo que permite, calcular su complejidad en unsentido asintótico, así como el análisis de problemascomunes que requieren una cantidad de procesamiento altade los datos para poder ser resueltos con exactitud oaproximación a la respuesta optima.
7
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Antecedentes• 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
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
9
• Para resolver un problema computable primeramente este debede quedar claro para el programador.
• Posteriormente es necesario abstraerlo según el paradigma deprogramación a una solución clara.
• Para finalmente implementar la solución en un lenguaje quesoporte el paradigma empleado.
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Análisis y entendimiento del problema
Diseño de la solución
Implementación del la solución
Abstracción del problema al paradigma
de programación a emplear
Análisis de algoritmos
Resolver un problema computable
Objetivo 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
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Temario• Unidad I. Técnicas de análisis
• Unidad II. Estrategias de diseño
• Unidad III. Completitud NP
11
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
1. Técnicas de análisis
1. El rol de los algoritmos en la Computación
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 aleatorizados12
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
2. Estrategias de diseño
1. Divide y vencerás
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
2. Algoritmo con Autómata Finito
3. Algoritmo de Knuth-Morris-Pratt
13
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
3. Completitud NP1. Tiempo polinomial
1. Problemas abstractos
2. Codificaciones
3. Definición a través de un lenguaje formal
2. Verificación de tiempo polinomial1. Ciclos hamiltonianos
2. Algoritmos de verificación
3. La clase de complejidad NP
3. Completitud NP y reductibilidad1. Problemas de decisión y problemas de optimización
2. Reductibilidad
3. Completitud NP
4. Pruebas de completitud NP1. Problemas NP completos
2. Problemas sobre grafos
5. Algoritmos de aproximación1. Cotas de rendimiento de algoritmos de aproximación
2. Algoritmo de aproximación para el problema de la cubierta de vértices
3. Algoritmo de aproximación
14
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Forma de evaluación
15
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Trabajos de clase y de tarea• 30 % Ejercicios (Resolución de problemas, programas,
simulaciones, mapa conceptual, cuadro sinóptico, nube depalabras, línea del tiempo, infografía, mural interactivo, etc.)*
• 40 % Practicas **
• 30 % Exámenes (Escritos y/o prácticos)*
*Individuales
**En equipo • Hasta 30% Extra Final• Exposiciones• Aportes personales: Digitalización de apuntes,
ejercicios y documentos de interés. *Material de estudio y didáctico.
• Participación en clase • Aportaciones digitales (Videos, Wikis, Blogs,
Podcast, Web, Simulaciones graficas)
• Asistencias
• Las inasistencias injustificadas a clases equivalen a no aprovechar tueducación, estamos en nivel licenciatura no existe la necesidad dejustificar tus inasistencias, pero si hay una actividad o practica aevaluar en clase y no te encuentras no habrá otra fecha pararecuperar la actividad.
• Participaciones en clase
• Cada participación fomenta tu aprendizaje y el de tus compañerosparticipa.
• Extraordinario (Practicas totales)
• Para tener posibilidad de aprobar o mejorar calificación enextraordinario, por experiencia puedo asegurar que solo lo lograquién tienen una calificación final mayor a 4.5 durante el curso.
• Extraordinario (Presentación de la totalidad de las practicas demanera individual, evaluación escrita y practica )
• Tareas, ejercicios y practicas que hayan sido copiadas no seconsideraran en su totalidad y al que haya permitido que sutrabajo fuera copiada se le penalizará en su calificación.
16
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Horarios de asesoría y página Web de la UA
17
Horarios de Asesoría
• Miércoles de 13:30-15:00 hrs.
• Viernes de 12:00-13:30 hrs.
Ubicación
• Departamento de Ciencias e Ingeniería de la Computación(Edificio de laboratorios, 1er. piso, ala derecha *Al final del lado derecho
arriba de la biblioteca)
Pagina Web
• http://www.eafranco.com
Estr
uct
ura
s d
e d
ato
sP
rese
nta
ció
n d
e la
un
idad
de
apre
nd
izaj
eP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Avisos y actividades• 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: [email protected]
18
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Entrega de tareas, ejercicios y prácticas• La entrega de las tareas, ejercicios y practicas se realizará a través
de la página:
http://www.eafranco.com
19
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Grupo y contraseña
• Escribir y almacenar las claves de confirmación, paraaclaraciones a con respecto a la evaluación.
Grupo Contraseña
3CM1 analisis3cm1
3CM3 analisis3cm3
20
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Ejercicios y tareas• 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.
21
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Tareas y ejercicios en formatos PDF, DOC & DOCX u otrosi así se indica en su asignación.
• Si se incluyen códigos fuente, incluir las instrucciones de
compilación y capturas de pantalla de muestra delfuncionamiento.
• En el caso de tareas y ejercicios con varios archivoscomprimirlos 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 según el objetivo del programa y la teoría vista en clase.
22
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Practicas• Equipos de 2 a 3 integrantes.
• Las práctica se plantean en clases y se entregan una sesión delaboratorio acordada, la fecha de entrega del reporte vía Webse dará una vez entregada la práctica.
• Los programas siempre deberán de estar documentadosantes de entregar la práctica.
• Practicas copiadas de otros equipos o grupos serán anuladas.
23
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
La calificación de la sesión de laboratorio espromediada con la del reporte, si el reporteno cumple con lo establecido o es deficienteesta disminuirá.
Formato de los reportes de practica• Portada (*Fotografía del equipo)
• Introducción
• Planteamiento del problema
• Diseño y funcionamiento de la solución (Descripción de la abstraccióndel problema y su solución, apoyándose de diagramas y figuras en un lenguajeclaro)
• Implementación de la solución (Según la solución diseñada como seimplemento en el lenguaje de programación)
• Funcionamiento (Resumen de verificación de la solución, pruebas y resultadosde salida *Pantallazos *Tablas *Graficos)
• Errores detectados (Si existe algún error detectado, el cuál no fue posibleresolver o se desconoce el motivo y solo ocurre con ciertas condiciones esnecesario describirlo)
• Posibles mejoras (Describir posibles disminuciones de código en laimplementación o otras posibles soluciones)
• Conclusiones (Por cada integrante del equipo)
• Anexo (Códigos fuente *con colores e instrucciones de compilación)
• Bibliografía (En formato IEEE)
24
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
¿Qué se envía por la página Web en una práctica?
• 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 instruccionesde compilación van en el anexo del reporte. (Enviar los archivosnecesarios para la generación de ejecutables)
25
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Herramientas computacionales• 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
26
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Bibliografía• 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). EstadosUnidos de América: Addison Wesley. ISBN-13: 978-0321117847.
• Oram A. (2007). Beautiful Code: Leading Programmers Explain How They Think. Estados Unidos de América: Ed. O'Reilly. ISBN-13: 978-0596510046.
27
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Actitudes y valores• 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 ala 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, todosmis actos nunca deben de afectar a lo que los demás valoran. ¿Como serrespetoso? 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 serhonesto? Arraiga valores y principios éticos y morales, conócete a timismo.
28
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Actitudes de una persona feliz• Amable• Amoroso (Con las personas que te rodean y con las actividades que realices)• Optimista• Tolerante• Cortes
• Que necesito para lograr mis objetivos• Salud• Esfuerzo• Dedicación• Trabajo• Propósito de vida
• Cuales deberían ser los principales objetivos de un buen profesionista• Siempre anteponer mi ética antes de actuar• Aprender en todo momento• Ayudar en todo momento a quien lo necesite• 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 seasambicioso)
• 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?
No seas apático a esto elige mejorar cada día como persona, nunca pases por encima de los demás para alcanzar tus metas.
29
Tener un propósito de vida esimportante, este nace delinterior de la gratitud y lainconformidad.
Si no eres feliz no encuentras elpropósito en la vida. (Se felizbajo cualquier circunstancia)
An
ális
is d
e al
gori
tmo
sEn
cuad
re d
e la
Un
idad
de
Ap
ren
diz
aje
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Top Related