Glosario
Los términos principales del curso, ordenados por parte.
Demostrar y dividir
| Término | English | Definición |
|---|---|---|
| Correctitud | correctness | Un algoritmo es correcto si termina y da la respuesta pedida con toda entrada válida. |
| Invariante de ciclo | loop invariant | Condición que se cumple antes de cada vuelta de un ciclo y que, al salir, da el resultado. |
| Contraejemplo | counterexample | Una entrada en la que una afirmación falla. Basta uno para refutarla. |
| Matching estable | stable matching | Asignación de dos grupos con preferencias en la que ningún par preferiría estar junto antes que con lo que le tocó. |
| Gale-Shapley | Gale-Shapley | Algoritmo de matching estable: un lado propone y el otro se queda con la mejor oferta hasta ahora. |
| Instancia | instance | Una entrada concreta de un problema. |
| Prueba de estrés | stress test | Comparar un programa con una solución lenta pero evidente, en miles de entradas pequeñas al azar. |
| Par inestable | unstable pair | Dos personas que no están juntas y que se prefieren entre sí antes que a su pareja actual. |
| Aceptación diferida | deferred acceptance | Otro nombre de Gale-Shapley: quien recibe propuestas acepta solo hasta que llegue una mejor. |
| Tabla de rangos | rank table | Tabla que da en O(1) la posición de cada opción en una lista de preferencias. |
| Divide y vencerás | divide and conquer | Dividir el problema en partes más pequeñas, resolverlas y combinar los resultados. |
| Recurrencia | recurrence | Ecuación que da el costo de un algoritmo en función de su costo en entradas más pequeñas. |
| Árbol de recursión | recursion tree | Dibujo de las llamadas de un algoritmo, para sumar su trabajo por nivel. |
| Teorema maestro | master theorem | Regla que da la solución de T(n) = a·T(n/b) + f(n) comparando f(n) con n^(log_b a). |
| Condición de regularidad | regularity condition | En el caso 3 del teorema maestro, exigir a·f(n/b) ≤ d·f(n) con d < 1. |
| Sustitución | substitution method | Comprobar la solución de una recurrencia por inducción, con la constante explícita. |
| Inversión | inversion | Par de elementos que está en el orden contrario al esperado. |
| Quickselect | quickselect | Halla el k-ésimo menor partiendo como quicksort y siguiendo solo por un lado. |
| Mediana de medianas | median of medians | Elección de pivote que garantiza una partición suficientemente pareja, y selección en tiempo lineal. |
| Karatsuba | Karatsuba | Multiplicación de números con tres productos en vez de cuatro, en Θ(n^1,585). |
| Par más cercano | closest pair | Los dos puntos de un conjunto que están a menor distancia. |
| Franja | strip | Puntos a menos de δ de la línea que divide, los únicos que pueden formar un par mejor que cruce. |
Greedy y grafos
| Término | English | Definición |
|---|---|---|
| Cota inferior | lower bound | Costo mínimo que cualquier algoritmo de un cierto tipo debe pagar en el peor caso. |
| Árbol de decisiones | decision tree | Modelo de un algoritmo por comparaciones: cada nodo es una comparación y cada hoja, un resultado. |
| Adversario | adversary | Forma de ver una cota inferior: quien responde las comparaciones para obligar al algoritmo a hacer muchas. |
| Counting sort | counting sort | Ordena enteros de un rango pequeño contando cuántas veces aparece cada valor, sin comparar elementos. |
| Greedy | greedy | Técnica que toma en cada paso la mejor opción del momento, sin volver atrás. |
| Argumento de intercambio | exchange argument | Demostración que transforma una solución óptima en la del greedy, sin empeorarla. |
| Intervalo semiabierto | half-open interval | [s, f) incluye a s y no a f: una clase que termina a las 10 no se cruza con una que empieza a las 10. |
| Profundidad | depth | Mayor número de intervalos que contienen un mismo instante. Es el mínimo de aulas necesarias. |
| Grafo de estados | state graph | Grafo cuyos nodos guardan, además del lugar, lo que el problema necesita recordar. |
| Árbol de expansión mínima | minimum spanning tree | Conjunto de aristas de costo mínimo que conecta todos los nodos. |
| Propiedad del corte | cut property | La arista más barata que cruza un corte está en un árbol de expansión mínima. |
| DAG | directed acyclic graph | Grafo dirigido sin ciclos. |
| Orden topológico | topological order | Orden de los nodos de un DAG en el que toda arista va de un nodo a otro posterior. |
| Componente fuertemente conexa | strongly connected component | Grupo máximo de nodos en el que todos pueden llegar a todos. |
| Plazo | deadline | Instante en que una tarea debería estar terminada. |
| Retraso | lateness | Lo que una tarea termina después de su plazo; si termina antes, es negativo. El retraso máximo es el mayor de un horario. |
| Código sin prefijos comunes | prefix-free code | Código en el que ninguna palabra es el inicio de otra. |
| Árbol binario lleno | full binary tree | Árbol en el que todo nodo interno tiene exactamente dos hijos. |
| Nodo fijado | settled node | En Dijkstra, nodo cuya distancia ya no cambia. |
| Borrado perezoso | lazy deletion | Dejar en el heap las entradas viejas y descartarlas cuando salen. |
| Grafo de estados | state graph | Grafo cuyos nodos llevan, además del lugar, lo que hace falta recordar para decidir. Cada valor de eso forma una capa. |
| Corte | cut | Partición de los nodos en dos conjuntos no vacíos. Una arista lo cruza si tiene un extremo en cada uno, y lo respeta un conjunto de aristas al que ninguna lo cruza. |
| Bosque | forest | Grafo sin ciclos: un árbol por cada componente. |
| Separación | spacing | En una partición, el menor peso entre las aristas con extremos en grupos distintos. |
| Agrupamiento por enlace simple | single-linkage clustering | Agrupar quitando las aristas más caras de un árbol de expansión mínima. |
| Tiempos de inicio y de fin | discovery and finish times | Momentos en que DFS empieza y termina cada nodo. |
| Lema del camino libre | white-path lemma | Si al empezar u hay un camino hasta x por nodos sin visitar, x empieza y termina dentro del intervalo de u. |
| Arista de árbol, hacia atrás, hacia adelante, de cruce | tree, back, forward, cross edge | Las cuatro clases de arista según el estado de su destino cuando DFS la mira. |
| Grafo de componentes | component graph | DAG con un nodo por cada componente fuertemente conexa. Una fuente no tiene aristas de entrada, y un sumidero no tiene de salida. |
| Grafo invertido | reversed graph | El mismo grafo con todas las aristas en sentido contrario. |
Programación dinámica
| Término | English | Definición |
|---|---|---|
| Programación dinámica | dynamic programming | Resolver un problema guardando las respuestas de subproblemas que se repiten. |
| Subproblema | subproblem | Versión más pequeña del problema, descrita con unos pocos parámetros. |
| Subestructura óptima | optimal substructure | Una solución óptima se compone de soluciones óptimas de sus subproblemas. |
| Memoización | memoization | Guardar el resultado de una función recursiva para no volver a calcularlo. |
| Mochila | knapsack | Elegir objetos con peso y valor que quepan en una capacidad, con el máximo valor total. |
| Pseudopolinomial | pseudo-polynomial | Costo polinomial en el valor de un número de la entrada, pero exponencial en la cantidad de bits que lo escriben. |
| Distancia de edición | edit distance | Mínimo de inserciones, borrados y cambios para convertir una cadena en otra. |
| Subsecuencia común más larga | longest common subsequence | La secuencia más larga que aparece en dos cadenas en el mismo orden, no necesariamente seguida. |
| Intervalos con pesos | weighted interval scheduling | Elegir intervalos compatibles con la mayor suma de valores. |
| Subsecuencia | subsequence | Elementos en el mismo orden, no necesariamente contiguos. |
| Subcadena | substring | Elementos contiguos. |
| Alineamiento | alignment | Dos secuencias escritas en dos filas, con huecos y sin cambiar el orden. |
| De arriba hacia abajo, de abajo hacia arriba | top-down, bottom-up | Recursión con memoización, y tabla llenada en orden. |
| Mochila sin límite de copias | unbounded knapsack | Variante de la mochila en la que cada objeto se puede tomar varias veces. |
| Bellman-Ford | Bellman-Ford | Caminos mínimos desde un nodo con pesos negativos permitidos, en O(VE). |
| Ciclo negativo | negative cycle | Ciclo cuyos pesos suman menos que cero. Con él, puede no existir un camino mínimo. |
| Floyd-Warshall | Floyd-Warshall | Caminos mínimos entre todos los pares, en Θ(V³). |
| Grafo de subproblemas | subproblem graph | DAG con un nodo por subproblema y una arista por cada dependencia. |
| Camino más largo | longest path | Camino de mayor peso. Fácil en un DAG; difícil en un grafo general. |
| Subsecuencia creciente más larga | longest increasing subsequence | La subsecuencia estrictamente creciente de mayor largo. |
| Cadena de matrices | matrix chain multiplication | Elegir el orden de multiplicar matrices que minimiza las multiplicaciones de números. |
| Árbol binario de búsqueda óptimo | optimal binary search tree | Árbol con la menor suma de frecuencia × profundidad. |
| Relajación | relaxation | Mejorar la distancia a un nodo si pasar por otro da un valor menor. |
| Predecesor | predecessor | Nodo desde el que se mejoró por última vez la distancia a otro. |
| Vector de distancias | distance vector | Enrutamiento en el que cada router comparte con sus vecinos las distancias que conoce. |
| Nodo intermedio | intermediate node | Nodo de un camino que no es ni el inicio ni el final. |
| Arbitraje | arbitrage | Cadena de cambios de moneda que termina con más dinero del inicial. |
| Máscara de bits | bitmask | Un subconjunto escrito como un entero, con un bit por elemento. |
| Held-Karp | Held-Karp | Programación dinámica sobre subconjuntos para el viajero, en O(n²·2ⁿ). |
Flujo e intratabilidad
| Término | English | Definición |
|---|---|---|
| Flujo máximo | maximum flow | La mayor cantidad que se puede enviar de una fuente a un sumidero respetando las capacidades. |
| Corte mínimo | minimum cut | La partición de nodos, con la fuente a un lado y el sumidero al otro, de menor capacidad cruzada. |
| Red residual | residual network | Red con la capacidad que queda en cada arista y las aristas inversas para deshacer flujo. |
| Camino de aumento | augmenting path | Camino de la fuente al sumidero en la red residual. |
| Ford-Fulkerson | Ford-Fulkerson | Empujar flujo por caminos de aumento hasta que no quede ninguno. |
| Edmonds-Karp | Edmonds-Karp | Ford-Fulkerson con el camino de aumento de menos aristas, en O(VE²). |
| Valor de un flujo | flow value | Lo que sale de la fuente menos lo que entra en ella. |
| Conservación | conservation | En cada nodo, salvo la fuente y el sumidero, entra tanto como sale. |
| Saturada | saturated | Arista cuyo flujo es igual a su capacidad. |
| Capacidad residual | residual capacity | Cuánto más se puede empujar por un arco de la red residual. |
| Corte s-t | s-t cut | Partición de los nodos con la fuente en un lado y el sumidero en el otro. |
| Integralidad | integrality | Con capacidades enteras, existe un flujo máximo entero, y Ford-Fulkerson lo encuentra. |
| Matching bipartito | bipartite matching | Conjunto de aristas de un grafo de dos lados, sin nodos en común. |
| Reducción | reduction | Resolver un problema con un algoritmo de otro, transformando la entrada y leyendo la salida. |
| Caminos disjuntos | disjoint paths | Caminos sin aristas en común, o sin nodos en común salvo los extremos. |
| Teorema de Menger | Menger’s theorem | La mayor cantidad de caminos disjuntos es igual al menor conjunto que los separa. |
| Condición de Hall | Hall’s condition | Todos entran si ningún grupo tiene menos lugar del que necesita. Con cupos, el lugar es la suma de cupos. |
| Eliminación en un campeonato | baseball elimination | Decidir si un equipo ya no puede quedar primero. |
| Selección de proyectos | project selection | Elegir proyectos con ganancias, costos y prerrequisitos para maximizar el total. |
| Conjunto cerrado | closed set | Conjunto de proyectos que incluye los prerrequisitos de cada uno. |
| Problema de decisión | decision problem | Problema cuya respuesta es sí o no. |
| P | P | Los problemas de decisión que se resuelven en tiempo polinomial. |
| NP | NP | Los problemas de decisión cuyas respuestas “sí” tienen un certificado verificable en tiempo polinomial. |
| Certificado | certificate | Dato corto que permite verificar que la respuesta es “sí”. |
| Reducción polinomial | polynomial-time reduction | Transformación en tiempo polinomial de instancias de A en instancias de B, que conserva la respuesta. |
| NP-difícil | NP-hard | Al menos tan difícil como todo problema de NP. |
| NP-completo | NP-complete | Está en NP y es NP-difícil. |
| SAT | SAT | Decidir si una fórmula booleana, en este curso escrita en CNF, se puede hacer verdadera. |
| CNF | conjunctive normal form | Fórmula escrita como un Y de cláusulas, cada una un O de literales. |
| Literal | literal | Una variable o su negación. |
| Cláusula | clause | Un O de literales. |
| Solucionador SAT | SAT solver | Programa que decide si una fórmula en CNF se puede satisfacer, y da una asignación si es así. |
| Principio del palomar | pigeonhole principle | Si hay más palomas que nidos, algún nido tiene al menos dos. |
| 3-SAT, 2-SAT | 3-SAT, 2-SAT | SAT con a lo sumo 3 o 2 literales por cláusula. El primero es NP-completo; el segundo se resuelve en tiempo lineal. |
| Teorema de Cook-Levin | Cook-Levin theorem | SAT es NP-completo. |
| Gadget | gadget | Pieza de una reducción que representa una variable o una regla del problema original. |
| Grafo de implicaciones | implication graph | Grafo con un nodo por literal y aristas ¬a → b, ¬b → a por cada cláusula a ∨ b. |
| Suma de subconjuntos | subset sum | Decidir si algunos números de una lista suman exactamente un objetivo. |
| Ciclo euleriano, hamiltoniano | Eulerian, Hamiltonian cycle | Ciclo que usa cada arista exactamente una vez; ciclo que pasa por cada nodo exactamente una vez. |
| Problema de la parada | halting problem | Decidir si un programa termina con una entrada dada. Es indecidible. |
| Conjunto independiente | independent set | Nodos entre los cuales no hay ninguna arista. |
| Cobertura de vértices | vertex cover | Nodos que tocan a todas las aristas. |
| Algoritmo de aproximación | approximation algorithm | Algoritmo rápido cuya respuesta está, con garantía demostrada, a un factor del óptimo. |
| Matching maximal | maximal matching | Matching al que no se le puede agregar ninguna arista. No es necesariamente el más grande. |
| Viajero métrico | metric traveling salesman | Viajero con distancias que cumplen la desigualdad triangular. |
| Desigualdad triangular | triangle inequality | d(a, c) ≤ d(a, b) + d(b, c). |
| Ramificación y acotamiento | branch and bound | Búsqueda exacta que descarta las ramas cuya cota no puede mejorar la mejor solución conocida. |
| 2-opt | 2-opt | Mejora local: quitar dos aristas de un recorrido y reconectarlo, si baja el largo. |
| Óptimo local | local optimum | Solución que ningún movimiento permitido mejora. No es necesariamente la mejor. |
| Heurística | heuristic | Método que suele dar buenas respuestas, sin garantía demostrada. |
| Programación lineal | linear programming | Optimizar una función lineal sujeta a restricciones lineales. |
| Programación lineal entera | integer linear programming | Programación lineal con variables que deben ser enteras. Es NP-difícil. |