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

¿Qué algoritmo de ordenación es estable?

  1. AQuicksort (versión in situ habitual)
  2. BHeap sort
  3. COrdenamiento por selección (versión habitual)
  4. DMerge sort
2.Algoritmos y complejidadDifícil

¿Qué afirmación sobre la notación o pequeña es correcta?

  1. An = o(n²), pero n no es o(n)
  2. Bn = o(n), porque toda función es o pequeña de sí misma
  3. Cn² = o(n)
  4. D2n = o(n), porque 2n crece despacio
3.Estructuras de datosMedia

¿Cuánta memoria utiliza una matriz de adyacencia para un grafo con V vértices?

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

¿Por qué las bases de datos suelen usar árboles B+ en lugar de árboles B simples para los índices?

  1. ALos árboles B+ usan nodos internos binarios, lo que reduce el número de lecturas de disco
  2. BLos árboles B+ almacenan los datos solo en la raíz
  3. CTodos los registros están en hojas enlazadas, lo que hace eficientes los recorridos por rangos
  4. DLos árboles B+ no necesitan estar balanceados
5.Teoría de grafosMedia
ABCDECircuito eulerianoCamino euleriano, sin circuitoninguna de las dos

¿Tiene el grafo conexo un circuito euleriano, un camino euleriano que no es un circuito, o ninguno de los dos? Haz clic en tu respuesta.

|V| = 5|E| = 6
  1. 1Circuito euleriano
  2. 2Camino euleriano, sin circuito
  3. 3ninguna de las dos
6.Teoría de grafosDifícil
171118915782014ABCDEF

Halla el peso total W de un árbol generador mínimo del grafo ponderado.

|V| = 6|E| = 9
W =

3Disoluciones

1.Algoritmos y complejidad

Respuesta: D · Merge sort

Por qué esta es la respuesta

Merge sort es estable si, en caso de empate, la mezcla toma primero de la mitad izquierda. Quicksort in situ, heap sort y el ordenamiento por selección no suelen ser estables.

Respuesta

D · Merge sort
2.Algoritmos y complejidad

Respuesta: A · n = o(n²), pero n no es o(n)

Por qué esta es la respuesta

f = o(g) significa que f(n) / g(n) tiende a 0; n / n² tiende a 0, pero n / n = 1 no.

Respuesta

A · n = o(n²), pero n no es o(n)
3.Estructuras de datos

Respuesta: B · O(V²)

Por qué esta es la respuesta

Una matriz de adyacencia almacena V × V entradas, lo cual es eficiente para grafos densos; las listas de adyacencia usan O(V + E), mejor para grafos dispersos.

Respuesta

B · O(V²)
4.Estructuras de datos

Respuesta: C · Todos los registros están en hojas enlazadas, lo que hace eficientes los recorridos por rangos

Por qué esta es la respuesta

En un árbol B+ los nodos internos solo guían la búsqueda y las hojas están enlazadas en orden de clave, así que una consulta por rango encuentra la primera clave y luego avanza por las hojas.

Respuesta

C · Todos los registros están en hojas enlazadas, lo que hace eficientes los recorridos por rangos
5.Teoría de grafos

Respuesta: ninguna de las dos

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.

Grados

deg(A) = 2, deg(B) = 3, deg(C) = 3, deg(D) = 1, deg(E) = 3

Vértices impares

B, C, D, E → 4
ninguna de las dos

Respuesta

ninguna de las dos
6.Teoría de grafos

Respuesta: W = 50

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.

Algoritmo de Kruskal

DE (7): tomar
DF (8): tomar
BD (9): tomar
AC (11): tomar
BE (14): descartar, cierra un ciclo
CE (15): tomar

Peso total

W = 7 + 8 + 9 + 11 + 15 = 50

Respuesta

W = 50

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