Glosario
Los términos principales del curso, ordenados por parte.
De C a C++ y costos
| Término | English | Definición |
|---|---|---|
| Referencia | reference | Otro nombre para un objeto que ya existe. No puede ser nula ni cambiar de objeto. |
| Clase | class | Tipo con datos privados y métodos que los usan. |
Método const |
const method | Método que promete no modificar el objeto. |
| Destructor | destructor | Método que corre cuando un objeto deja de existir. |
| Owner, ownership | owner, ownership | El owner de un recurso es quien debe liberarlo, y el ownership es esa responsabilidad. |
| RAII | RAII | Adquirir un recurso en el constructor y liberarlo en el destructor. |
| Constructor de copia | copy constructor | Crea un objeto nuevo como copia independiente de otro. |
| Copia superficial | shallow copy | Copia que duplica un puntero, pero no aquello a lo que apunta. |
| Mover | move | Pasar los recursos de un objeto a otro sin copiarlos. |
| Regla de cinco | rule of five | Si una clase define destructor, copia o movimiento, normalmente debe definir los cinco. |
| Template | template | Código que el compilador genera para cada tipo con que se usa. |
| Tipo abstracto de datos | abstract data type | Las operaciones de un tipo y lo que prometen, sin decir cómo se implementan. |
| Invariante | invariant | Condición que siempre se cumple entre dos operaciones de una estructura. |
| Análisis asintótico | asymptotic analysis | Describir cómo crece el costo de un programa cuando la entrada crece. |
| O, Ω, Θ | big O, big Omega, big Theta | Cota superior, cota inferior y crecimiento exacto de una función, salvo constantes. |
| Peor caso | worst case | La entrada de un tamaño dado que más cuesta. |
| Experimento de duplicar | doubling experiment | Medir con n y 2n, y usar la razón de los tiempos para estimar el crecimiento. |
Secuencias y ordenamiento
| Término | English | Definición |
|---|---|---|
| Arreglo dinámico | dynamic array | Arreglo que cambia de capacidad al llenarse. |
| Capacidad | capacity | Cuántos elementos caben antes de tener que crecer. |
| Costo amortizado | amortized cost | Costo promedio por operación en el peor caso de una serie de operaciones. |
| Pila | stack | Tipo abstracto donde el último en entrar es el primero en salir. |
| Cola | queue | Tipo abstracto donde el primero en entrar es el primero en salir. |
| Deque | deque | Tipo abstracto que inserta y saca por los dos extremos. |
| Buffer circular | circular buffer | Arreglo cuyos índices dan la vuelta al llegar al final. |
| Lista enlazada | linked list | Secuencia de nodos unidos por punteros. |
| Nodo centinela | sentinel node | Nodo sin dato que evita casos especiales en una lista. |
| Iterador | iterator | Objeto que señala un elemento de un contenedor y avanza al siguiente. |
| Mergesort | mergesort | Ordena dividiendo en dos, ordenando cada parte y mezclándolas. |
| Quicksort | quicksort | Ordena separando los elementos alrededor de un pivote. |
| Pivote | pivot | Elemento con el que quicksort separa los menores de los mayores. |
| Ordenamiento estable | stable sort | Conserva el orden original de los elementos iguales. |
| Búsqueda binaria | binary search | Busca en un arreglo ordenado, descartando la mitad en cada paso. |
Diccionarios
| Término | English | Definición |
|---|---|---|
| Diccionario | dictionary, map | Tipo abstracto que guarda y busca valores por su clave. |
| Tabla hash | hash table | Diccionario que usa una función hash para ubicar cada clave en un arreglo. |
| Función hash | hash function | Convierte una clave en un número, siempre el mismo para claves iguales. |
| Colisión | collision | Dos claves distintas que caen en la misma casilla. |
| Factor de carga | load factor | Elementos guardados entre número de casillas. |
| Encadenamiento | chaining | Cada casilla guarda una lista con sus claves. |
| Direccionamiento abierto | open addressing | Las claves se guardan en el mismo arreglo, buscando otra casilla al chocar. |
| Probing | probing | Probar casillas, en cierto orden, hasta dar con la clave o con una vacía. |
| Linear probing | linear probing | Direccionamiento abierto que prueba la casilla siguiente. |
| Tombstone | tombstone | Marca de una casilla borrada, para no cortar las búsquedas. |
| Swiss Table | Swiss Table | Tabla con direccionamiento abierto y un byte de metadatos por casilla, que se compara por grupos. |
| Árbol binario de búsqueda | binary search tree | Árbol donde, en cada nodo, las claves menores van a la izquierda y las mayores a la derecha. |
| Altura | height | Cantidad de aristas en el camino más largo de la raíz a una hoja. |
| Recorrido en orden | in-order traversal | Visita el subárbol izquierdo, el nodo y el subárbol derecho. |
| Sucesor | successor | La menor clave mayor que una clave dada. |
| Rotación | rotation | Cambio local de forma de un árbol que conserva el orden de sus claves. |
| Árbol AVL | AVL tree | Árbol de búsqueda donde las alturas de los dos subárboles de cada nodo difieren en 1 como máximo. |
| Árbol 2-3-4 | 2-3-4 tree | Árbol de búsqueda con nodos de 2 a 4 hijos, y todas las hojas a la misma profundidad. |
| Árbol rojinegro | red-black tree | Árbol binario de búsqueda con nodos pintados, que representa un árbol 2-3-4. |
| B-tree | B-tree | Árbol balanceado con nodos de muchas claves, pensado para disco. |
Prioridades y grafos
| Término | English | Definición |
|---|---|---|
| Cola de prioridad | priority queue | Tipo abstracto que inserta y saca el elemento de mayor prioridad. |
| Heap binario | binary heap | Árbol completo guardado en un arreglo, donde cada padre es menor o igual que sus hijos. |
| Heapsort | heapsort | Ordena usando un heap, en el mismo arreglo. |
| Código de Huffman | Huffman code | Código sin prefijos comunes, con palabras más cortas para los símbolos más frecuentes. |
| Grafo | graph | Conjunto de nodos unidos por aristas. |
| Lista de adyacencia | adjacency list | Por cada nodo, la lista de sus vecinos. |
| Matriz de adyacencia | adjacency matrix | Tabla de n × n que dice si hay arista entre cada par de nodos. |
| BFS | breadth-first search | Recorrido por niveles, con una cola. |
| DFS | depth-first search | Recorrido que baja todo lo posible antes de retroceder. |
| Componente conexa | connected component | Grupo máximo de nodos conectados entre sí. |
| Union-find | union-find, disjoint sets | Estructura que une conjuntos y dice si dos elementos están en el mismo. |
| Compresión de caminos | path compression | Hacer que los nodos visitados por find apunten directo a la raíz. |
| Camino mínimo | shortest path | Camino de menor peso total entre dos nodos. |
| Relajar | relax | Actualizar la distancia a un nodo si una arista da un camino más corto. |
| Dijkstra | Dijkstra’s algorithm | Halla caminos mínimos con pesos no negativos, usando una cola de prioridad. |
| Trie | trie | Árbol donde cada camino desde la raíz representa un prefijo. |
| Filtro de Bloom | Bloom filter | Conjunto aproximado en un arreglo de bits, con falsos positivos y sin falsos negativos. |