Está en la página 1de 2

Tabla Hash

• Una tabla Hash es una forma de implementar en Arreglo

• Se puede implementar en memoria principal o secundaria

• Tiene las ventajas de la TUAD, ya que aprovecha el acceso directo de los arreglos

• Se aplica cuando el tamaño esperado para el conjunto de datos es pequeño, pero el universo
del conjunto es muy grande.

Cuando utilizar la tabla Hash ?


Cuando se requiere organizar datos en memoria tenemos una serie de estructuras para elegir:
• Listas enlazadas, Listas de Listas, arboles, etc. cada una de las cuales tienes sus ventajas y sus
inconvenientes.

•Tomando en cuenta la eficiencia en tiempo y en espacio

•Las tablas hash son una forma de obtener un rendimiento promedio constante siempre y
cuando el tamaño esperado para el conjunto de datos sea pequeño

Ej. Registrar los datos de 500 empleados: nombre, teléfono, salario. Se desea poder acceder a
esta información a partir del CI

Grafos
Aquí se pueden resolver muchos problemas de la vida cotidiana por ejemplo:

Algoritmo de Kruskal
Es un algoritmo que trata de unir todos los vértices sin desperdiciar caminos y
también no repetirlos

Complejidad del Algoritmo


m el número de aristas del grafo y n el número de vértices, el algoritmo de Kruskal
muestra una complejidad O(m log m) o, equivalentemente, O(m log n), cuando se
ejecuta sobre estructuras de datos simples.

Ej: Indicar la ruta a un cartero que pase por todas las calles para que pueda
repartir el correo a todas ellas sin tener que repetir ninguna
Ej: Se quiere unir todos los caminos de Bolivia sin tener que repetir ninguno
Algoritmo de Dijkstra
Algoritmo de Dijkstra. También llamado algoritmo de caminos mínimos, es un
algoritmo para la determinación del camino más corto dado un vértice origen al
resto de vértices en un grafo con pesos en cada arista. Su nombre se refiere
a Edsger Dijkstra, quien lo describió por primera vez en 1959.

Complejidad del Algoritmo

 Cada vértice se puede conectar a vértices (V-1), por lo tanto, el número de bordes
adyacentes a cada vértice es V - 1. Digamos que E representa los bordes V-1
conectados a cada vértice.
 Encontrar y actualizar el peso de cada vértice adyacente en el montón mínimo es
O(log(V)) + O(1) o O(log(V)).
 Por lo tanto, desde el paso 1 y el paso 2 anteriores, la complejidad de tiempo para
actualizar todos los vértices adyacentes de un vértice es E * (logV). o E*logV.
 Por lo tanto, la complejidad temporal para todos los vértices V es V * (E * logV), es
decir, O(VElogV).

El algoritmo de ruta más corta de Dijkstra es O(ElogV) donde:

V es el número de vértices

E es el número total de aristas

Dado un grafo G=(V,E) y dos nodos s y t – Problemas:


¿Existe un camino para llegar de s a t?
¿A qué distancia están? – Concepto de distancia entre dos nodos s y t como  (s, t)
• Mínimo número de aristas entre s y t.
– Breadth-First Search (BFS)
• Recorrido en amplitud. Dado un nodo s, primero visita todos los nodos a distancia 1 (L1) de s,
luego a distancia 2 (L 2), y así sucesivamente. • Li ( s) Conjunto de nodos a distancia i de s
– Depth -First Search (DFS)
• Recorrido en profundidad. Dado un nodo s, visita el primer nodo conectado a conectado a s y
después el primer nodo conectado al último y después el primer nodo conectado al último
visitado

También podría gustarte