Está en la página 1de 13

RELACIONES

MDULO 1 CONCEPTUALES. IDEAS


CATEGORAS CONCEPTUALES
ENLAZADAS

1.1 / 1.2 Anlisis de algoritmos: Ejemplos:

Ests aqu - Hay diferentes funciones


Algoritmo: conjunto de que representan tiempos de
instrucciones para resolver un ejecucin, por ejemplo:
problema.
Anlisis de algoritmos: Funcin lineal: K*N.
determinar la cantidad de Funcin cuadrtica:
recursos que un algoritmo K*N2.
Unidad 1. Anlisis de requiere, medido en Funcin cbica:
algoritmos o tiempo; K*N3:
o espacio. o Ejemplo: N3 +
El tiempo de ejecucin es 10 N2 + 40N
funcin del tamao de la + 80.
1.1 Introduccin entrada, aunque el valor exacto o Ejemplo: N3 +
depende de muchos factores 10 N2 + 40N
tales como: + 80 + 12 N
1.2 Ejemplos de tiempo o velocidad del procesador; log N
de ejecucin de o memoria de la maquina;
algoritmos Funcin N log N: K*
o calidad del compilador; N log N.
o calidad del programa.
En estos casos, para un N
1.3 Notacin O: grande, el valor de la
1.3 Notacin O funcin est determinado
por su trmino dominante.
1.4 Logaritmos
La notacin O permite establecer
un orden relativo entre
1.5 Problema de la funciones. - El tiempo de ejecucin de
bsqueda esttica Captura el trmino dominante de un bucle est dado por el
una funcin. nmero de iteraciones
multiplicado por el tiempo
1.6 Limitaciones del de ejecucin de las
anlisis O instrucciones en el cuerpo
Funcin Nombre
del bucle. En general, la
c Constante inicializacin y
comprobacin de la
log N Logartmica
condicin del bucle son
2
log N Logartmica al cuadrado irrelevantes.
N Lineal Ejemplo, para el siguiente
bucle; su tiempo de
N log N N log N ejecucin es O(N):
N2 Cuadrtica
for ( int i = 0; i < N; i++ )
N3 Cbica suma += i;

2N Exponencial - Cuntos bits se necesitan


para representar N enteros
consecutivos?
Existen otras notaciones menos
usadas, como por ejemplo: B bits pueden representar
o Notacin , que sirve 2B enteros diferentes.
para delimitar una cota
inferior. Entonces, B debe ser tal que
o Notacin , donde la cota 2B N.
inferior es del mismo
orden que la cota O, dicho de otro modo, B
superior, por lo que es log N.
ms precisa que la
notacin O. Por lo tanto, el nmero de
bits mnimo es [log N].

- Empezando con X=1,


cuntas veces se debe
1.4 Logaritmos:
duplicar X para que sea
mayor que N?

La definicin de un logaritmo es duplico 1 -> 2;


K
B N>0, logB N = K si B =N duplico 2 > 4;
o B es la base del logaritmo. duplico 3 > 8;
En computacin, la base por duplico 4 > 16;
defecto es 2. duplico 5 > 32;
Cuando hablamos de notacin O, duplico K > 2 K.
la base no es importante:
o B>1, logB N = O(log N) Entonces, debo encontrar
menor K, tal que 2K N. Es
decir, K= [log N].
Los logaritmos son importantes
porque crecen lentamente: -Empezando con X=N,
o log 1.000.000 = 20. cuntas veces se debe
o log 1.000.000.000.000 = dividir X por la mitad para
40. que sea menor que 1?
o O(N log N) es ms cercano Esto es similar al problema
a O(N) que O(N2). anterior de las
Cmo aparecen los logaritmos duplicaciones, pero en
en el clculo de tiempos de los sentido opuesto.
algoritmos? Una manera clsica
de resolver problemas es La respuesta es [log N]
dividirlos sucesivamente por la veces.
mitad:
o Tiempo O(log N) si tarda
O(1) en dividir el tamao
del problema.
o O(log N) iteraciones en el
bucle.

1.5 Problema de la bsqueda esttica:

Una bsqueda esttica accede a


datos estticos (datos q no
cambian, p. ej.: un CD [Compact
Disc]).
o Por ejemplo, dado un
entero X y un vector A,
devolver N tal que A[N]=X
o N=-1 si X A. A[N]=X o
N=-1 si X A.
o A nunca se modifica.
o Si X aparece varias veces
en A, se debe devolver
cualquiera de ellas.
Ejemplo: bsqueda de una
persona en una gua telefnica.
La eficiencia de la bsqueda
depende de si el vector est
ordenado.
Si el vector no est ordenado, se
debe hacer una bsqueda de
secuencial lineal:
o bsqueda sin xito: O(N);
o bsqueda con xito;
o peor caso: O(N);
o caso promedio: O(N).
Si el vector de entrada est
ordenado, se puede utilizar una
bsqueda binaria:
o Por el principio de
divisiones sucesivas por la
mitad, haremos O(log N)
iteraciones.
o Bsqueda sin xito: [log
N] + 1;
o Bsqueda con xito:
peor caso: [log N];
caso medio: [log
N]-1.
o Si N es grande, la
bsqueda binaria es ms
eficiente que la bsqueda
secuencial:
Ejemplo: N=1000
(binaria = 8 vs.
secuencial = 500).
La bsqueda interpolada se
utiliza cuando el acceso es
costoso (p. ej.: datos en disco) y
los datos estn ordenados y
uniformemente distribuidos (p.
ej.: gua telefnica):
o {1,2,4,8,16,} no est
uniformemente
distribuido.
o La idea bsica es invertir
ms tiempo en anlisis de
elemento prximo:
Ejemplo: si
buscamos lvarez,
no tiene sentido
mirar en el medio.

1.6 Limitaciones del anlisis O


No es apropiado para pequeas
cantidades de datos.
La constante implcita en la
notacin puede resultar
demasiado grande en la prctica.
El anlisis supone una memoria
infinita.
No diferencia accesos a memoria
versus accesos a disco.
El caso peor es, en general, poco
representativo.
El anlisis del caso medio es casi
siempre mucho ms difcil que el
del peor caso.

RELACIONES
MDULO 2 CATEGORAS CONCEPTUALES CONCEPTUALES.
IDEAS ENLAZADAS
2.1 Estructuras de datos: Ejemplos:

Ests aqu - Ejemplos de pilas de


la vida real:
Estructuras de datos:
o Representacin de datos Pila de platos:
+ usualmente uno
saca los platos del
o Operaciones permitidas sobre
tope de la pila.
esos datos.
Unidad 2. Estructuras Caja de libros: si
Por qu necesitamos estructuras de
de datos los libros estn en
datos?
una caja, para
o permiten reutilizar
saber cul es el
componentes;
libro que est en el
1.7 Introduccin o permiten abstraernos de la
fondo de esta, se
implementacin.
deben sacar todos
los libros del tope
1.8 Pilas
2.2/2.3 Pilas primero.

1.9 Las pilas y los Los compiladores


lenguajes de usan pilas para
programacin Estructura de datos lineal: comprobar la sintaxis
o Acceso limitado al elemento de los programas.
ms recientemente insertado.
1.10 Colas La insercin y el borrado de elementos Ejemplo: si falta el
se realizan en un extremo de la cierre de un
estructura (tope o cima). comentario */,
1.11 Listas enlazadas
El ltimo elemento en entrar a la pila entonces se lanzan
es el primero en salir: errores.
1.12 rboles o LIFO (Last In, First Out).
Son las estructuras ms empleadas. El compilador debe
Operaciones para manipular una pila: comprobar que los
1.13 rboles binarios o Creacin: crea una pila vaca. distintos smbolos
de bsqueda o Insercin: agrega un nuevo estn equilibrados:
elemento en la cima:
apilar(x). [()] es correcto
1.14 Tablas hash o Borrado: elimina el elemento de [(]) es incorrecto
la cima si la pila no est vaca
x = desapilar(). Por ejemplo, si
1.15 Colas de o Consulta: usamos una pila para
prioridad pila vaca; comprobar
elemento en la cima. parntesis, usamos el
siguiente algoritmo:
La interfaz pila puede tener varias Cada vez que
implementaciones, que usan otra encontremos (, lo
estructura como base, tales como: metemos en la
o array o vector; pila;
o lista enlazada. Cada vez que
encontremos ),
sacamos el ( de la
cima de la pila.

La cadena de
2.4 Colas parntesis es correcta
si la pila es vaca al
terminar de recorrer
Estructura de datos lineal. la cadena.
La insercin se realiza en un extremo
de la estructura y el borrado se realiza
por el otro extremo.
- Ejemplos de colas en
El primer elemento en entrar a la cola
la vida real:
es el primero en salir:
o FIFO (First In, First Out).
cola del banco;
Son una de las estructuras de datos
cola de la
ms empleadas.
impresora.
Operaciones sobre colas:
o Creacin: crea una cola vaca. En estos casos,
o Insercin: agrega un nuevo siempre el ltimo en
elemento en la cola: llegar es el ltimo en
insertar(x). ser atendido.
o Borrado: elimina el elemento
ms antiguo si la cola no est
vaca:
x = quitarPrimero(). - Los rboles son
o Consulta: muy usados en la
cola vaca; estructura de
elemento ms antiguo. directorios en
Las implementaciones de colas sistemas
tambin se pueden hacer sobre otras operativos,
estructuras bsicas. Cuando se usan donde:
vectores, se suele emplear una
implementacin de cola circular. los directorios son
nodos internos;
los archivos son
hojas.
2.5 Listas enlazadas
- Todo rbol con N
nodos tiene N-1
Una lista enlazada consta de: aristas, ya que a
o Una coleccin de nodos cada nodo,
situados en la memoria excepto la raz, le
dinmica conectados entre s llega una arista.
+

o Operaciones de insercin,
eliminacin y consulta - Hay varios
arbitrarias de un elemento. ejemplos de
Cada nodo se compone de rboles binarios;
o un dato; por ejemplo: los
o una referencia al siguiente nodo rboles de
de la lista. expresiones,
Al primer nodo de la lista se accede a donde las hojas
travs de un puntero especial. son operandos y
Los elementos se buscan comenzando el resto son
en el primer nodo y siguiendo la operadores.
cadena de punteros. - (a+b)*(c-d)
El ltimo nodo de la lista contiene una
referencia siguiente vaca o null. *
Insercin en listas: consiste en
+ -
introducir un nodo dentro de la lista:
o debemos determinar dnde va
a tener lugar la insercin; a b c d
o insertar en la primera posicin
no es costoso; Los rboles binarios
o si no, deberemos primero se utilizan tambin en
buscar la posicin de insercin la codificacin de
(p. ej: lista ordenada). Huffman para la
Borrado o eliminacin en listas: se compresin de datos.
ejecuta con un simple cambio de Cada smbolo del
referencia: alfabeto se guarda en
o necesitamos una referencia al una hoja, y el cdigo
nodo anterior; se obtiene siguiendo
o este mtodo asume que el camino desde la
siempre hay un nodo anterior al raz al smbolo:
nodo por eliminar;
o la eliminacin del primer la arista izquierda
elemento es un caso especial. es un 0;
Implementacin con nodos cabecera: la arista derecha es
o Un nodo cabecera es un nodo un 1.
extra de la lista enlazada:
no guarda ningn dato;
permite que cada nodo
tenga un nodo anterior. a
o Evitan tener que tratar casos
especiales:
d
Eliminacin o insercin
del primer elemento.
Listas doblemente enlazadas: b c
o No se usa null para delimitar el
fin de la lista: a=0;
El final de la lista lo
b=100;
marca el nodo final.
c=101;
o El mtodo retroceder() se
d=10.
puede implementar fcilmente:
actual = actual.anterior.
o La insercin y eliminacin
implican el doble de cambios de
- Un ejemplo de
punteros.
uso de las tablas
hash son las
tablas de smbolos
de un compilador:

el compilador
2.6 rboles guarda todos los
nombres de
identificadores;
esto se usa para la
Los rboles son una estructura de datos comprobacin de
muy utilizada: mbito, tipos,
o conjunto de nodos; asignacin de
o conjunto de aristas que memoria,
conectan pares de nodos. etctera.
Un nodo es distinguido como raz.
Todo nodo que no sea raz tiene un y
solo un padre.
Hay un nico camino de la raz a cada
nodo.
Los nodos q no tienen hijos se
denominan hojas.
Algunas propiedades de los rboles:
o la longitud de un camino es el
nmero de aristas atravesadas;
o la profundidad de un nodo es la
longitud del camino que va
desde la raz al nodo;
o la altura de un nodo es la
longitud del camino que va
desde el nodo hasta la hoja ms
profunda bajo l;
o el tamao de un nodo es el
nmero de descendientes que
tiene (incluido el propio nodo).
Implementacin primer hijo/siguiente
hermano:
o Cada nodo contiene:
datos;
una referencia a cada
uno de sus hijos.
o El nmero de hijos puede variar
y no se conoce a priori.
o Los hijos se mantienen en una
lista enlazada.
o Cada nodo tiene dos
referencias:
hermano a la derecha;
hijo ms a la izquierda.
Recorridos de un rbol:
o Preorden:
el trabajo se realiza
primero sobre el nodo;
luego se procesan los
hijos.
o Postorden:
primero se procesan los
hijos;
luego se procesa el
nodo.

2.7 rboles binarios

Los rboles binarios son rboles cuyo


nmero de hijos est limitado a 2:
o hijo izquierdo e hijo derecho.
Definicin recursiva: un rbol binario
es:
o vaco;
o o una raz, un hijo izquierdo y
otro derecho, donde los hijos
pueden ser a su vez rboles
vacos.
Operaciones de ABM (alta, baja y
modificacin):
o aadir un nodo;
o buscar un nodo;
o eliminar un nodo.
Recorrido del rbol de manera
ordenada:
o preorden;
o inorden (simtrico);
o postorden;
o por niveles.
Arboles binarios de bsqueda:
o Permiten realizar bsquedas en
tiempo logartmico.
o Para cada nodo:
los nodos con clave
menor estn en el
subrbol izquierdo;
los nodos con clave
mayor estn en el
subrbol derecho.
o No permiten elementos
duplicados.
Bsqueda en un rbol binario de
bsqueda:
o Comenzar en la raz.
o Seguir en hijo izquierdo o
derecho dependiendo de las
comparaciones:
seguir hasta llegar al
elemento (bsqueda
exitosa);
o hasta llegar a null
(bsqueda sin xito).
o La bsqueda tiene costo
logartmico en promedio.
o Cmo se realiza la bsqueda
del mnimo o mximo
elemento?
Ir siempre a la izquierda
o derecha.
El costo es logartmico
en promedio.
El costo en el caso peor
es O(N).

2.8 Tablas hash

Las tablas hash permiten acceso en tiempo


constante:
o El tiempo de acceso es
independiente del nmero de
elementos en la tabla (idealmente).
Las tablas hash tambin se conocen como
tablas de localizacin.
Implementacin: se usa un arreglo al cual
podemos mapear las claves en uso.
Esta funcin de mapeo es la funcin hash:
o la funcin hash convierte una clave
en un entero, el que se usa para
indexar el vector en el que el
elemento se almacena;
o una buena funcin hash debera
satisfacer la suposicin de hash
uniforme (donde cualquier
elemento es igualmente probable
de caer en cualquiera de las M
listas posiciones del vector).
Una funcin hash no es inyectiva, esto
causa colisiones. Una colisin se
produce cuando dos claves conducen al
mismo mapeo, es decir, al mismo
elemento del codominio o rango (en
trminos matemticos, f(x1) = f(x2) =
y).
o hashing cerrado: almacena las
claves en las mismas entradas del
arreglo o tabla hash.
o hashing abierto: existe una lista
asociada a cada entrada del
arreglo.

2.9 Colas de prioridad

Las colas de prioridad o montculos son


estructuras de datos que permiten acceder
solo al mnimo elemento.
Soportan solo dos operaciones de acceso:
o buscarMin();
o eliminarMin().
El resto de operaciones permiten insertar
un elemento, vaciar la cola, etctera.
Los montculos maximales soportan acceso
al mximo elemento.
Los elementos se atienden en el orden
indicado por una prioridad asociada a cada
uno.
Un montculo binario es un rbol binario
completo:
o el nivel inferior se llena de
izquierda a derecha;
o al ser un rbol equilibrado, tiene un
costo logartmico por operacin;
o en un montculo binario cada nodo
es menor o igual que sus
descendientes.

También podría gustarte