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

¿Cuál es la solución de la recurrencia T(n) = 2T(n − 1) + O(1)?

  1. AO(n)
  2. BO(2ⁿ)
  3. CO(n log n)
  4. DO(n²)
2.Algoritmos y complejidadDifícil

¿Qué afirmación sobre P y NP es correcta?

  1. ATodo problema de P también está en NP
  2. BSe ha demostrado que P ≠ NP
  3. CLas soluciones de los problemas NP no se pueden verificar rápidamente
  4. DNP significa «no polinómico»
3.Estructuras de datosMedia

Una tabla hash de tamaño 7 usa h(k) = k mod 7 y sondeo lineal. Después de insertar 10, ¿dónde se almacena 17?

  1. AEn el índice 4
  2. BEn el índice 3
  3. CEn el índice 6
  4. DEn el índice 0
4.Estructuras de datosDifícil

Un arreglo dinámico duplica su tamaño cuando está lleno. ¿Por qué muchas implementaciones solo lo reducen cuando está lleno en una cuarta parte, y no en la mitad?

  1. APorque el asignador de memoria solo puede liberar memoria en cuartos de bloque
  2. BPorque reducirlo a la mitad al llegar a la mitad perdería elementos
  3. CPara mantener el arreglo ordenado
  4. DPara evitar redimensionamientos repetidos cuando se alternan push y pop cerca del límite
5.Teoría de grafosMedia

Un grafo conexo tiene 14 vértices y 22 aristas. ¿Cuántas aristas, k, hay que quitar para obtener un árbol generador?

|V| = 14|E| = 22
k =
6.Teoría de grafosDifícil
118814154738ABCDEFG

Usa el algoritmo de Dijkstra para hallar la longitud d(F) del camino más corto de A a F en el grafo ponderado.

inicio: Afin: F
d(F) =

3Disoluciones

1.Algoritmos y complejidad

Respuesta: B · O(2ⁿ)

Por qué esta es la respuesta

El número de llamadas se duplica en cada nivel y hay n niveles, así que el total es de unos 2ⁿ, como en las torres de Hanói.

Respuesta

B · O(2ⁿ)
2.Algoritmos y complejidad

Respuesta: A · Todo problema de P también está en NP

Por qué esta es la respuesta

P ⊆ NP: si puedes resolver un problema rápidamente, puedes verificar una solución rápidamente. Si P = NP sigue siendo una cuestión abierta.

Respuesta

A · Todo problema de P también está en NP
3.Estructuras de datos

Respuesta: A · En el índice 4

Por qué esta es la respuesta

10 mod 7 = 3 y 17 mod 7 = 3; el índice 3 está ocupado, así que el sondeo lineal prueba la posición siguiente, el índice 4.

Respuesta

A · En el índice 4
4.Estructuras de datos

Respuesta: D · Para evitar redimensionamientos repetidos cuando se alternan push y pop cerca del límite

Por qué esta es la respuesta

Reducirlo al llegar a la mitad podría provocar un redimensionamiento en cada operación de esa secuencia; el margen entre 1/4 y lleno mantiene el coste amortizado en O(1).

Respuesta

D · Para evitar redimensionamientos repetidos cuando se alternan push y pop cerca del límite
5.Teoría de grafos

Respuesta: k = 9

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.

Aristas de un árbol generador

14 − 1 = 13

Aristas que quitar

k = 22 − 13 = 9

Respuesta

k = 9
6.Teoría de grafos

Respuesta: d(F) = 33

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

Cada línea: el vértice fijado, su distancia definitiva y los vecinos cuya distancia mejora.

A (0): B: 11, C: 8
C (8): G: 15
B (11)
G (15): D: 18, E: 23
D (18): F: 33
E (23)
F (33)

Camino más corto

A → C → G → D → F
d(F) = 33

Respuesta

d(F) = 33

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