¿Cómo Thomas Cormen y sus coautores generaron el índice para su libro clásico de algoritmos?

Creé el índice para Introducción a los algoritmos . Fue por una combinación de mucho trabajo tedioso y un programa llamado windex que Ron Rivest escribió cuando estábamos escribiendo la primera edición.

Como he escrito en otra parte, produjimos el libro usando LaTeX. El programa windex de Ron organiza el índice, basado en los comandos \ index insertados en la fuente LaTeX. windex se encarga de la alfabetización, pero tiene otras cuatro características importantes:

  1. Permite un índice de dos niveles. Por ejemplo, el índice tiene una entrada “algoritmo”, y debajo de él están las entradas de segundo nivel “corrección de”, “origen de la palabra”, “tiempo de ejecución de” y “como tecnología”. El comando \ index que produjo la entrada de segundo nivel “corrección de” se parece a \ index {algoritmo / corrección de}.
  2. Permite que una entrada se alfabetice de una manera pero que se imprima de otra manera. Por ejemplo, tenemos una macro \ proc para imprimir nombres de procedimientos en minúsculas. Cuando el índice tiene una entrada para “Arriba” (imagina que lo hubiera escrito en mayúsculas), lo alfabetizamos como “Arriba” pero se imprime como \ proc {Arriba}. Obviamente, no queremos alfabetizarlo como “\ proc {Above}”.
  3. Fusiona rangos de páginas. Si hay una entrada de índice en la página 10 y en la página 11, las páginas en el índice se enumeran como “10–11” y no como “10, 11.” También permite una entrada de índice para indicar el inicio o el final de un rango, utilizando los símbolos .
  4. Ignora ciertas palabras al alfabetizar entradas de segundo nivel. Ejemplos: “a”, “por”, “para” y “de”.

Como puede imaginar, el programa windex ahorra una gran cantidad de trabajo.

Junto con el programa windex, agregué algunas macros de LaTeX para simplificar algunos de los comandos dentro de los archivos .tex.

El resto del trabajo para producir el índice fue, como dije, tedioso. En una copia impresa de cada capítulo, marqué las ubicaciones que pensé que debían indexarse. Al principio, cada ubicación se indexaba solo como una entrada de primer nivel, de modo que el índice resultante solo tenía entradas de primer nivel. Eso se conoce como una “concordancia”. Luego, volví y agregué las entradas de segundo nivel. Algunas entradas de índice aparecen en varias entradas de segundo nivel. Por ejemplo, el árbol rojo-negro aparece como una entrada de primer nivel, y los árboles rojo-negro aparece como una entrada de segundo nivel bajo la estructura de datos y el árbol de búsqueda equilibrado . También tiene una vista también para el árbol de intervalos, el árbol de estadísticas de orden , y debajo del árbol de entrada de segundo nivel / rojo-negro aparece ver árbol rojo-negro.

Si la memoria funciona, pasé seis semanas sólidas generando el índice para la primera edición. Y eso fue con la ayuda de un par de estudiantes que marcaron términos en la copia impresa para mí. Para la segunda y tercera ediciones, produje el índice completamente solo. Debido a que los comandos de índice de ediciones anteriores ya estaban en nuestros archivos, creo que pasé “solo” una semana indexando cada una de las últimas dos ediciones.

Cuando comencé a indexar la primera edición, aprendí que hay indexadores profesionales. Mencioné este hecho a un amigo de la escuela de posgrado, y su respuesta fue “Si tuviera que elegir entre ser un indexador profesional y una bala en la cabeza, elegiría la bala”. Con el debido respeto a los indexadores profesionales, después de indexar la primera edición, llegué a un acuerdo.

More Interesting

¿Cuál es la técnica para crear una solución DP iterativa a partir de su solución recursiva?

¿Qué enfoque debería usarse para resolver esta pregunta sobre hackerrank?

Cómo resolver la Tierra y los meteoritos en el Algoritmo Calificador 2 de Hackerearth

¿Cuáles son algunos algoritmos para el comercio de acciones automatizado?

¿Qué tipo de algoritmo de Machine Learning usarías para segmentar a tus clientes en múltiples grupos?

¿El aprendizaje por refuerzo está recibiendo actualmente más atención que los algoritmos genéticos?

¿Cuáles son algunos algoritmos básicos en el aprendizaje automático para que su programa aprenda de otros datos (aprendizaje supervisado)?

¿Qué esfuerzos hará para crear un gráfico de la estructura de datos básicos, que también puede ser entendido por una persona no técnica?

¿Cómo encontramos la altura de un árbol binario? ¿Cómo se relaciona con el nivel?

¿HackerRank es un buen entrenamiento para el IOI?

¿Cuáles son las condiciones previas de la búsqueda binaria y qué papel desempeñan?

¿Cuáles son los usos del algoritmo simplex en la programación competitiva? He visto muchos equipos superiores con el algoritmo simplex en sus cuadernos de equipo. ¿Hay algunos lugares específicos donde se puede usar simplex?

¿Cuáles son ejemplos de la secuencia de Fibonacci en el campo de la ciencia y las artes liberales (economía, sociología, incluso historia, etc.)?

¿Cuál es la lista de MOOC que uno debe mirar en su licenciatura para aprender estructuras y algoritmos de datos C, C ++?

Cómo fusionar dos arreglos ordenados