You are on page 1of 10

Estructura

de Datos I
Presentacin 01
Tipo de Datos

Estructura de Datos I
Notacin Asntota
TDA
Pilas y Colas
Listas
Grafos
Arboles
Graficas Grafos

Estructura de Datos I
Algoritmos y Problemas
El concepto intuitivo de algoritmo, lo tenemos prcticamente todos: Un
algoritmo es una serie finita de pasos para resolver un problema. Hay que
hacer nfasis en dos aspectos para que un algoritmo exista:
1. El nmero de pasos debe ser finito. De esta manera el algoritmo debe
terminar en un tiempo finito con la solucin del problema,
2. El algoritmo debe ser capaz de determinar la solucin del problema.
De este modo, podemos definir algoritmo como un "conjunto de reglas
operacionales inherentes a un cmputo". Se trata de un mtodo sistemtico,
susceptible de ser realizado mecnicamente, para resolver un problema
dado.

Estructura de Datos I
Algoritmos y Problemas
Carctersticas de un algoritmo
1. Entrada: definir lo que necesita el algoritmo
2. Salida: definir lo que produce.
3. No ambiguo: explcito, siempre sabe qu comando ejecutar.
4. Finito: El algoritmo termina en un nmero finito de pasos.
5. Correcto: Hace lo que se supone que debe hacer. La solucin es correcta
6. Efectividad: Cada instruccin se completa en tiempo finito. Cada
Instruccin debe ser lo suficientemente bsica como para que en principio
pueda ser ejecutada por cualquier persona usando papel y lpiz.
7. General: Debe ser lo suficientemente general como para contemplar todos
los casos de entrada.

Estructura de Datos I
Concepto de Eficiencia
Un algoritmo es eficiente cuando logra llegar a sus objetivos planteados
utilizando la menor cantidad de recursos posibles, es decir, minimizando el
uso memoria, de pasos y de esfuerzo humano.
Un algoritmo es eficaz cuando alcanza el objetivo primordial, el anlisis de
resolucin del problema se lo realiza prioritariamente. Puede darse el caso de
que exista un algoritmo eficaz pero no eficiente, en lo posible debemos de
manejar estos dos conceptos conjuntamente.
La eficiencia de un programa tiene dos ingredientes fundamentales: espacio y
tiempo.

Estructura de Datos I
Concepto de Eficiencia
La eficiencia en espacio es una medida de la cantidad de memoria requerida
por un programa.
La eficiencia en tiempo se mide en trminos de la cantidad de tiempo de
ejecucin del programa.
Ambas dependen del tipo de computador y compilador, por lo que no se
estudiar aqu la eficiencia de los programas, sino la eficiencia de los
algoritmos. Asimismo, este anlisis depender de si trabajamos con mquinas
de un solo procesador o de varios de ellos. Centraremos nuestra atencin en
los algoritmos para mquinas de un solo procesador que ejecutan una
instruccin y luego otra.

Estructura de Datos I
Concepto de Instancia
Un problema computacional consiste en una caracterizacin de un conjunto
de datos de entrada, junto con la especificacin de la salida deseada en base
a cada entrada.
Un problema computacional tiene una o ms instancias, que son valores
particulares para los datos de entrada, sobre los cuales se puede ejecutar el
algoritmo para resolver el problema.
Ejemplo: el problema computacional de multiplicar dos nmeros enteros
tiene por ejemplo, las siguientes instancias: multiplicar 345 por 4653,
multiplicar 2637 por 10000, multiplicar -32341 por 12, etc.

Estructura de Datos I
Clculo de Costos de Algoritmos
Queremos saber la eficiencia de los algoritmos, no del computador. Por ello,
en lugar de medir el tiempo de ejecucin en microsegundos o algo por el
estilo, nos preocuparemos del nmero de veces que se ejecuta una operacin
primitiva (de tiempo fijo).
Para estimar la eficiencia de este algoritmo, podemos preguntarnos, "si el
argumento es una frase de N nmeros, cuntas multiplicaciones
realizaremos?" La respuesta es que hacemos una multiplicacin por cada
nmero en el argumento, por lo que hacemos N multiplicaciones. La cantidad
de tiempo que se necesitara para el doble de nmeros sera el doble.

Estructura de Datos I
Concepto de Complejidad
La complejidad (o costo) de un algoritmo es una medida de la cantidad de
recursos (tiempo, memoria) que el algoritmo necesita. La complejidad de un
algoritmo se expresa en funcin del tamao (n) del problema.
La funcin de complejidad tiene como variable independiente el tamao del
problema y sirve para medir la complejidad (espacial o temporal). Mide el
tiempo/espacio relativo en funcin del tamao del problema.
El comportamiento de la funcin determina la eficiencia. No es nica para un
algoritmo: depende de los datos. Para un mismo tamao del problema, las
distintas presentaciones iniciales de los datos dan lugar a distintas funciones
de complejidad.

Estructura de Datos I
rdenes de Complejidad
Se dice que O(f(n)) define un "orden de complejidad". Escogeremos como
representante de este orden a la funcin f(n) ms sencilla del mismo. As
tendremos:
O(1)
O(log n)
O(n)
O(n2)
O(nc)
O(cn)
O(n!)

orden constante
orden logartmico
orden lineal
orden cuadrtico
orden polinomial (c > 2)
orden exponencial (c > 2)
orden factorial