La I2 de Estructuras de Datos y Algoritmos (IIC2133) reprueba a gente distinta que la I1. En la primera interrogación caen los que no logran que el código funcione: se enredan con punteros, con la recursión, con el árbol que había que rebalancear. En la segunda casi nadie cae por eso. Caen los que leen el enunciado, entienden perfectamente qué les están pidiendo, y no saben con qué herramienta agarrarlo.
La tesis de esta guía es corta: en la I2 el cuello de botella no es implementar, es reconocer. Si llegaste hasta acá pudiendo escribir un recorrido en profundidad sin mirar apuntes, esto te sirve. Si todavía se te caen las estructuras básicas, esta guía no es para ti todavía: vuelve a la guía de la I1 de IIC2133, porque estudiar grafos sobre una base floja es botar dos semanas.
Lo que cambia de verdad entre la I1 y la I2
La I1 es un examen de estructuras: te dan la estructura y te piden operarla. Inserta, elimina, rebalancea, recorre. El enunciado ya trae la respuesta a la pregunta “¿con qué?”, y tu trabajo es el “¿cómo?”.
La I2 invierte eso. Te dan una situación —ciudades conectadas por caminos, tareas con plazos, un tablero, una lista de precios en el tiempo— y el enunciado se calla justamente lo que en la I1 te regalaban. Tienes que decidir tú si eso es un grafo, si el grafo es dirigido, si los pesos pueden ser negativos, y recién ahí escribir. El “cómo” pesa menos porque, a esas alturas, ya lo sabes hacer.
El error de partida: estudiar algoritmos en vez de estudiar problemas
La forma más común de preparar esta interrogación es repasar la lista: Dijkstra, Prim, Kruskal, Bellman-Ford, Floyd-Warshall, mochila, subsecuencia común más larga. Al final de la semana te sabes los siete y en la prueba te quedas en blanco, porque el enunciado no dice “aplique Dijkstra”: dice que un repartidor sale de una bodega y quiere llegar rápido a cada cliente.
Da mejor resultado invertir el orden: en vez de una ficha por algoritmo, arma una ficha por señal del enunciado. Esta tabla es el mapa que conviene tener escrito a mano el día antes, y no en el computador:
| Lo que dice el enunciado | Lo que probablemente pide | Costo esperable | La trampa |
|---|---|---|---|
| “la ruta más corta desde un punto a todos los demás” | Dijkstra con cola de prioridad | O((V+E) log V) | Si hay pesos negativos, Dijkstra miente: ahí va Bellman-Ford |
| “conectar todo gastando lo mínimo” | Árbol cobertor mínimo (Prim o Kruskal) | O(E log V) | Confundirlo con caminos mínimos: el ACM no garantiza rutas cortas entre pares |
| “el máximo/mínimo eligiendo un subconjunto con una restricción” | Programación dinámica | O(n·W) típico | Intentar un voraz porque “se ve obvio” sin justificar canje |
| “ordenar tareas respetando dependencias” | Orden topológico sobre DAG | O(V+E) | No detectar el ciclo y entregar un orden que no existe |
| “cuántas formas hay de…” o “recorre y vuelve” | DFS con memorización o backtracking | Depende del podado | No podar y quedarse sin justificar la cota |
Grafos: la mitad de la prueba se decide en la primera línea
Cuando modelas mal el grafo, todo lo que viene después está perdido aunque el código sea impecable. Antes de escribir una línea, respóndete tres cosas por escrito: qué es un nodo, qué es una arista, y qué representa el peso. Suena trivial hasta que te toca un problema donde los nodos no son las ciudades sino los pares (ciudad, combustible restante).
Ese es, además, el tipo de modelamiento que más aparece en las I2 recientes: problemas donde el grafo del enunciado no es el grafo que tienes que construir. Te describen un juego con estados y tú tienes que darte cuenta de que cada estado es un nodo y cada movimiento legal una arista. Si lo ves, el resto es un BFS de tres líneas.
Y una advertencia práctica: gran parte de los puntos perdidos en grafos no son por el algoritmo, sino por la representación. Elegir lista de adyacencia cuando el grafo es denso, o matriz cuando es disperso, te cambia la complejidad final y eso se descuenta aunque el algoritmo esté correcto.
Voraz o programación dinámica: la decisión va antes del código
Esta es la pregunta que más plata cuesta en la I2, y casi siempre se responde mal por apuro. Un voraz sirve cuando puedes argumentar que la elección localmente mejor nunca te cierra la puerta a la solución óptima. Ese argumento —el de canje, en el que muestras que cualquier solución óptima se puede transformar en la tuya sin empeorar— es lo que te piden escribir, no solo intuir.
Si no logras escribir ese argumento en tres o cuatro líneas, no es voraz: es programación dinámica. Y la programación dinámica también tiene su formato de respuesta esperado, que son cuatro piezas: qué guarda el estado, cuál es la recurrencia, cuáles son los casos base, y en qué orden llenas la tabla. Si entregas la recurrencia sin el orden de llenado, entregaste media respuesta.
Un truco que ahorra tiempo real: parte siempre escribiendo la versión recursiva ingenua, aunque sea exponencial. Desde ahí se lee sola cuál es el estado, y memorizar es un paso mecánico. Mucha gente intenta escribir la tabla directamente y se equivoca en las dimensiones.
La complejidad se argumenta, no se recita
En la I1 bastaba con poner la cota correcta. En la I2 te piden de dónde sale. Si dices O(E log V) tienes que poder decir qué operación se ejecuta E veces y cuál cuesta log V, y por qué la cola de prioridad da ese costo.
El ejercicio que más rinde acá es tomar tus propias soluciones de las ayudantías y escribirles la justificación al lado, en dos líneas, sin mirar el apunte. Si no te sale, no sabías la complejidad: sabías el número.
Un plan de dos semanas que cabe en un semestre real
Nadie tiene catorce días libres para un ramo. El plan que sigue asume unas dos horas diarias y prioriza volumen de problemas leídos por sobre problemas resueltos, que es exactamente al revés de lo que hace la mayoría.
Semana 1: interrogaciones antiguas, pero sin resolverlas. Lee el enunciado, escribe en una línea qué técnica usarías y por qué, y recién después mira la pauta. Diez enunciados diarios en cuarenta minutos. Con eso entrenas justamente lo que te van a evaluar. El resto de la hora, implementa dos de esos diez completos.
Semana 2: ahora sí resolver contra reloj, con la restricción de escribir a mano. En la interrogación no tienes compilador, y el código en papel se ve distinto. Deja los últimos dos días para repasar tu tabla de señales y para revisar las demostraciones de complejidad, que son lo primero que se olvida.
Preguntas frecuentes sobre la I2 de IIC2133
¿Entra la materia de la I1?
Formalmente rara vez la preguntan sola, pero está adentro igual: los algoritmos de grafos se paran sobre colas de prioridad, y la programación dinámica sobre recursión. No la estudies aparte, pero tampoco asumas que la puedes ignorar.
¿Sirve estudiar solo con interrogaciones antiguas?
Sirve más que cualquier otra cosa, con una condición: usarlas para entrenar el reconocimiento, no para memorizar soluciones. Si te aprendes la pauta de una I2 de hace tres semestres, aprendiste un problema. Si te aprendes por qué ese enunciado pedía un ACM, aprendiste una familia.
¿Cuánto código hay que escribir a mano?
Menos del que crees, y por eso duele más. Suelen pedir pseudocódigo o fragmentos, con el peso de la nota en la justificación. Es común entregar un algoritmo correcto y perder la mitad de los puntos por no argumentar la elección ni la cota.
¿Y si me quedan cuatro días?
Salta la semana 1 y quédate solo con la tabla de señales: llénala tú con tus palabras, resuelve completas dos interrogaciones antiguas y dedica el último día a las justificaciones de complejidad. Es el subconjunto con mejor retorno por hora.
¿Conviene programar en el computador o en papel?
Las dos, pero en ese orden y no al revés. En el computador entiendes el algoritmo; en papel descubres que no lo tenías tan claro. Si solo haces una, que sea la segunda.
Si quieres ver los ejercicios resueltos
Si con esto ya sabes qué practicar, no necesitas nada más: la tabla de señales y diez enunciados diarios te alcanzan. Si prefieres ver los problemas resueltos con las decisiones explicadas en voz alta —por qué acá voraz y allá dinámica—, revisa el curso de I2 de Estructuras de Datos y Algoritmos IIC2133. Y en el hub de la UC están las guías por curso del resto de tu semestre, ordenadas por interrogación.
¿Quieres romperla en la UC?
Mira todos los cursos de preparación para tu universidad.
Ver cursos de la UC →