Conceptos y Motivación
-
¿Qué es un Algortimo?
-
¿Qué es una Estructura de datos?
-
Impacto en el tiempo de ejecución de un algoritmo: Crecimiento de
funciones O(n), O(n2). Comparar 30 minutos versus 30 ln (30)
minutos (= 1 hora 42 minutos) versus 302 minutos (= 15 horas)
La situación es más crítica aún cuando aumenta
el tamaño del problema.
-
Consideraciones de tiempo real. Evaluación de polinomios.
-
Algoritmo de ordenamiento
-
Algoritmo de ordenamiento en tiempo lineal.
-
Algoritmo de orden polinomial
-
Algoritmo NP: Minimo numero de rectangulos (disjuntos, no disjuntos)
-
Grafos. Ruteamiento de lineas en un PCB. Minimizar largo de líneas,
minimizar número de pasadas de una cara a la otra.
-
Algoritmos distribuidos calculo de ruta "minima" en redes de computadores.
-
Aplicaciones distribuidas Ej. Uso de canal de audio en conferencia en la
Internet.
-
¿Cómo podemos buscar la mediana de entre un conjunto de puntos?
Aplicacion en filtrado de imagenes.
-
En sistemas operativos es importante detectar ciclos de espera. Si los
hay se produce una espera indefinida (deadlock). Se pueden usar grafos
para reconocer ciclos.
-
Como hay un numero de solicitudes de algun recurso (por ejemplo una sala
de clases), cual es un buen algoritmo para asignar el recurso y satisfacer
el mayor numero de usuarios?
-
Veremos variadas estructuras de datos y algoritmos, en ocasiones es no
trivial es darse cuenta que algoritmo resuelve nuestro problema. Problema:
Como reconocemos si una secuencia de parentesis esta balanceada? Ej.: (())()
(()()) Puedo usar un contador simplemente? Que pasa si hay mas tipos
de parentesis ({[]{}})?