Estructuras de datos y algoritmos: pack de repaso

Hojas de fórmulas, los pasos clave de los métodos de cada tema y 6 problemas de práctica, con las soluciones completas al final.

Problemas nuevosVolver a la asignatura

En la ventana de impresión, elige «Guardar como PDF» para conservar una copia en tu dispositivo.

1Fórmulas y métodos

Teoría de grafos

Lema del apretón de manos
Σ deg(v) = 2|E|
Grafos completos
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Grafo regular
|E| = n·k/2
Árbol y bosque
|E| = n − 1, |E| = n − c
Hojas de un árbol
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Euler
circuito: todos los grados pares; camino: exactamente 2 grados impares
Circuitos de Hamilton en Kn
(n − 1)!/2
Actualización de Dijkstra
d(v) = min(d(v), d(u) + w(u, v))
Recorridos de longitud L
(Mᴸ)ij

Método

  1. Anota el grado de cada vértice; los grados suman el doble del número de aristas.
  2. En las preguntas de Euler, comprueba que el grafo sea conexo y cuenta los vértices de grado impar.
  3. En los árboles, usa n − 1 aristas y el lema del apretón de manos.
  4. En Dijkstra, lleva una tabla de distancias provisionales y fija en cada ronda el vértice no fijado de menor distancia.
  5. Para un árbol generador mínimo, ordena las aristas por peso y descarta toda arista que cierre un ciclo (Kruskal), o haz crecer un único árbol desde un vértice inicial (Prim).

2Problemas de práctica

1.Algoritmos y complejidadMedia

Ordenas una vez un array de n elementos y después respondes a k consultas de pertenencia con búsqueda binaria. ¿Cuál es el coste total?

  1. AO(n + k)
  2. BO(nk)
  3. CO(n log n + k log n)
  4. DO(k n log n)
2.Algoritmos y complejidadDifícil

¿Cómo se clasifica el problema del viajante?

  1. AEs indecidible
  2. BLa versión de decisión es NP-completa y la de optimización es NP-difícil
  3. CEstá en P porque el algoritmo de Dijkstra lo resuelve visitando cada ciudad una vez
  4. DLa versión de decisión está en P, pero la de optimización es NP-completa
3.Estructuras de datosMedia

¿Cuánta memoria usa una lista de adyacencia para un grafo con V vértices y E aristas?

  1. AO(E²)
  2. BO(V + E)
  3. CO(V²)
  4. DO(V × E)
4.Estructuras de datosDifícil

La complejidad temporal de decrease-key en un montículo binario (conociendo la posición del elemento) es:

  1. AO(n)
  2. BO(1)
  3. CO(n log n)
  4. DO(log n)
5.Teoría de grafosMedia

¿Cuántos circuitos de Hamilton distintos, H, tiene el grafo completo K7? Los circuitos que solo difieren en el vértice inicial o en el sentido cuentan como el mismo.

K7
H =
6.Teoría de grafosDifícil
144110821012145ABCDEFG

El algoritmo de Dijkstra se ejecuta desde A. Haz clic en el vértice que se fija (se hace permanente) en la ronda 4; la propia A es la ronda 1.

inicio: Aronda 4
  1. 1A
  2. 2B
  3. 3C
  4. 4D
  5. 5E
  6. 6F
  7. 7G

3Disoluciones

1.Algoritmos y complejidad

Respuesta: C · O(n log n + k log n)

Por qué esta es la respuesta

Ordenar cuesta O(n log n) y cada consulta O(log n); esto supera a k recorridos lineales (O(nk)) cuando k es grande.

Respuesta

C · O(n log n + k log n)
2.Algoritmos y complejidad

Respuesta: B · La versión de decisión es NP-completa y la de optimización es NP-difícil

Por qué esta es la respuesta

«¿Hay un recorrido de longitud como mucho k?» es NP-completo; hallar el recorrido más corto es NP-difícil, porque es al menos igual de difícil.

Respuesta

B · La versión de decisión es NP-completa y la de optimización es NP-difícil
3.Estructuras de datos

Respuesta: B · O(V + E)

Por qué esta es la respuesta

Cada vértice tiene una lista y cada arista aparece una vez (dirigido) o dos veces (no dirigido), lo que da O(V + E).

Respuesta

B · O(V + E)
4.Estructuras de datos

Respuesta: D · O(log n)

Por qué esta es la respuesta

Tras disminuir la clave, el elemento sube (sift-up) como máximo la altura del montículo. Los montículos de Fibonacci logran decrease-key en O(1) amortizado.

Respuesta

D · O(log n)
5.Teoría de grafos

Respuesta: H = 360

Euler, Hamilton y árboles: un grafo conexo tiene un circuito euleriano (cada arista una vez, volviendo al inicio) cuando todos los vértices tienen grado par, y un camino euleriano que no es un circuito cuando exactamente dos vértices tienen grado impar; entonces el camino va de un vértice impar al otro. Un circuito hamiltoniano visita cada vértice una vez; Kn tiene (n − 1)!/2 de ellos. Un árbol de n vértices tiene n − 1 aristas, y un grafo conexo con m aristas conserva un árbol generador tras quitarle m − n + 1 aristas.

Contar

H = (7 − 1)!/2 = 720/2 = 360

Respuesta

H = 360
6.Teoría de grafos

Respuesta: B

Caminos mínimos y árboles generadores: el algoritmo de Dijkstra fija un vértice por ronda: el vértice no fijado con la menor distancia provisional. Su distancia es entonces definitiva, y cada vecino v recibe d(v) = min(d(v), d(u) + w(u, v)). El algoritmo de Kruskal construye un árbol generador mínimo tomando las aristas de la más ligera a la más pesada y descartando toda arista que cierre un ciclo; el algoritmo de Prim hace crecer un único árbol desde un vértice inicial añadiendo siempre la arista más ligera que sale de él. Un árbol generador de n vértices tiene n − 1 aristas.

Dijkstra ronda a ronda

1. A (0): C: 14
2. C (14): B: 18, E: 24, G: 16
3. G (16): B: 17, D: 30, E: 21
4. B (17): D: 18
5. D (18): F: 20
6. F (20)
7. E (21)

ronda 4

B

Respuesta

B

ExamProblems · examproblems.com/courses/data-structures-and-algorithms