+ All Categories
Home > Documents > El arte de programar ordenadores

El arte de programar ordenadores

Date post: 26-Mar-2022
Category:
Upload: others
View: 69 times
Download: 8 times
Share this document with a friend
30
Transcript

El arte de programar ordenadores

Volumen 3

Clasificación y búsqueda DONALD E. KNUTH

Stanford University

EDITORIAL REVERT~

Barce lona· Bogotá-Buenos Aires-México

Título de la obra original: The Art of Computer Programming.Volume 3. Sorting and Searching

Edición original en lengua inglesa publicada por: Addison-Wesley Publishing Company, Reading, Massachusetts

Copyright © Addison-Wesley Publishing Company, Inc.

“Este volumen es una traducción al español de THE ART OF COMPUTER PROGRAMMING VOLUME III

SORTING AND SEARCHING, por Donald E. Knuth, publicado y vendido en todo el mundo en español por

concesión de Addison-Wesley Publishing Company, Reading, Massachussets, EE.UU., que es la compañía

propietaria de todos los derechos para publicar y vender la misma.”

En la versión española han colaborado Jaime de Argila y de Chopitea (Traducción del capítulo 5)

Ramón Puigjaner Trepat (Traducción del capítulo 6)

Revisión general por Ramón Puigjaner Trepat

Profesores de la Facultad de Informática de Barcelona

Propiedad de: EDITORIAL REVERTÉ, S. A. Loreto, 13-15, Local B

08029 Barcelona

Tel: (34) 93 419 33 36

E-mail: [email protected] Internet: http://www.reverte.com

Reservados todos los derechos. La reproducción total o parcial de esta obra, por cual-

quier medio o procedimiento, comprendidos la reprografía y el tratamiento informático,

y la distribución de ejemplares de ella mediante alquiler o préstamo públicos, queda

rigurosamente prohibida sin la autorización escrita de los titulares del copyright, bajo

las sanciones establecidas por las leyes.

Edición en español

© EDITORIAL REVERTÉ, S. A., 1987

ISBN: 978-84-2912-664-8 Obra completa

ISBN: Volumen 3 978-84-2912-664-8

Edición en papel:

Edición e-book (PDF): ISBN 978-84-291-9019-9

Prólogo

La cocina se ha convertido en un arte, en ciencia noble; los cocineros son caballeros. TITO L/V/0, Ab Urbe Condita XXXIX. VI

( Robert Burton, Anatomy of Melancholy 1 .2.2.2)

Este libro forma una secuela natural al material sobre Estructuras de la informa­ción del capítulo 2, porque añade el concepto de datos ordenados linealmente a las otras ideas estructurales básicas. El título «Clasificación y búsqueda» puede sonar como si este libro fuera solamente para aquellos programadores de sistemas que se dedican a la preparación de rutinas de clasificación generales o aplicaciones de recu­peración de información. Pero en realidad, el campo de la clasificación y búsqueda proporciona un marco ideal para discutir una amplia variedad de cuestiones generales importantes: ·

¿Cómo se descubren los buenos algoritmos? ¿Cómo pueden mejorarse unos algoritmos y programas dados? ¿Cómo puede analizarse matemáticamente la eficacia de los algoritmos? ¿Cómo se puede elegir racionalmente entre distintos algoritmos para la misma aplicación? ¿En qué sentido pueden ser los algoritmos «lo mejor posible»? ¿Cómo se relaciona la teoría del cálculo con las consideraciones prácticas? ¿Cómo pueden usarse eficazmente las memorias externas como cintas, tambores o discos con bases de datos grandes? Evidentemente, creo que virtualmente todo aspecto importante de la programa­

ción surge en alguna parte en el contexto de la clasificación y búsqueda. Este volumen comprende los capítulos 5 y 6 de la serie completa. El capítulo 5 se

dedica a la clasificación en orden; es un tema más bien extenso, que se ha dividido principalmente en dos partes: clasificación interna y clasificación externa; hay tam-

V

vr Prólogo

bién secciones suplementarias que desarrollan teorías auxiliares sobre permutaciones (sección 5.1) y sobre algoritmos de clasificación óptimos (sección 5.3 ). El capítulo 6 trata del problema de la búsqueda de datos específicos en tablas o filas; se subdivide en métodos de búsqueda secuencial, de comparación de claves, de propiedades de los dígitos y de «desmenuzamiento» y se considera el problema más difícil de la recupe­ración clave secundaria. Hay una cantidad sorprendente de reciprocidades entre am­bos capítulos, con grandes analogías que unen a los temas. Además de las considera­das en el capítulo 2 se discuten también dos variedades importantes de estructuras de información, es decir, las colas de prioridad (sección 5.2.3) y las listas lineales repre­sentadas como árboles equilibrados (sección 6.2.3 ).

El lector que no esté familiarizado con el volumen 1 de esta serie tendrá que con­sultar el índice de notaciones (apéndice B }, ya que algunas de las notaciones conven­cionales que se encuentran aquí no son de uso común.

He empleado este libro como texto con estudiantes de segundo curso de Estructu­ras de datos del primer ciclo omitiendo casi toda la parte matemática, que forma un material apropiado para alumnos más avanzados, para Análisis de algoritmos, sobre todo las secciones 5.1, 5.2.2, 6.3 y 6.4. Las secciones 4.3.3, 4.6.3, 4.6.4, 5.3 y 5.4.4 también pueden servir de base para un curso avanzado sobre Complejidad de cálculo.

El rápido adelanto de la ciencia de los ordenadores ha retrasado casi tres años la publicación de este libro, ya que han sido muchos los aspectos de clasificación y bús­queda que han evolucionado en alto grado. Estoy muy agradecido al continuo apoyo en la investigación que me ha proporcionado la National Science Foundation, la Offi­ce oj Naval Researclz, el Institute for Defense Analysis, la lnternational Business Machines Corporation y el Norges Almenvitenskapelige Forskningrad.

Muchas personas me ayudaron a preparar para imprenta este volumen, especial­mente Edward A. Hender, Clark A. Crane, David E. Ferguson. Robert W. Floyd, Ronald L. Graham, Leonidas Guibas, John Hoperoft, Richard M. Karp, Gary D. Knott, Rudolph A. Krutar, Shen Lin, Vaughan R. Pratt, Stephan O. Rice, Richard P. Stanley, J. A. van der Pool y John W. Wrench, Jr., además de los estudiantes de Stanford y Berkeley qu~ tuvieron que corregir los errores del manuscrito.

Oslo, Noruega D. E. K.

Hay algunos privilegios que son comunes a los escritores, cuyo provecho, espero, no hay ra­zón para dudar; sobre todo que si no se me entiende se concluirá que algo muy útil y pro­fundo se esconde debajo.

JONATHAN SW/FT (Cuento de la cuba, prólogo, 1704)

Notas sobre los ejercicios

Los ejercicios de este conjunto de libros se han preparado tanto para estudio individual como para estudio en clase. Es difícil, si no imposible, aprender un tema tan sólo leyéndolo, sin aplicar la información a problemas específicos que estimulen al lector a pensar en lo que ha leído. Además, se aprenden mejor las cosas que uno descubre por sí mismo. Por lo tanto, los ejercicios constituyen la mayor parte de este trabajo; se ha intentado hacerlos lo más informativos posible seleccionando los problemas de agradable resolución.

En muchos libros, se encuentran ejercicios fáciles junto con otros extremada­mente difíciles. Esto no suele ser conveniente ya que el lector debería tener cierta idea del tiempo que le ha de llevar un problema antes de empezarlo(de no ser así puede saltarse todos los problemas). Un ejemplo clásico de esta situación es el libro Dynamic Programming de Richard Bellman; se trata de un libro pionero e importante en el que una serie de problemas se recojen al final de algunos capítulos bajo el título «Ejercicios y Problemas de Investigación», apareciendo cuestiones triviales en medio de profundos problemas sin resolver. Se rumorea que alguien le preguntó una vez al Dr. Bellman cómo saber cuándo se trataba de un ejercicio y cuando de un problema de investigación, a lo que contestó, «si lo puede resolver, es un ejercicio y si no, es un problema de investigación».

Pueden darse buenos argumentos para incluir en un mismo libro ejercicios muy fáciles y problemas de investigación; por lo tanto, para evitar que el lector tenga que determinar si se trata de uno u otro, se han colocado números que indican el nivel de dificultad. Dichos números tienen el significado general siguiente:

Número Interpretación

00 Un ejercicio muy fácil que puede contestarse inmediatamente" si el material del texto se ha entendido, y que puede casi siempre resolverse «mental­mente».

10 Un problema sencillo que hace pensar sobre la materia que se acaba de leer, pero que no es difícil en absoluto. Puede ser posible hacerlo en un

Vll

VIII Notas sobre /os ejercicios

minuto como máximo; papel y lápiz pueden ser de utilidad en la obtención de la solución.

20 Un problema meoio que verifica la comprensión básica del material del texto pero que puede tomar entre quince y veinte minutos dar una res­puesta completa.

30 Un problema de dificultad moderada yfo complejo que puede tomar alre­dedor de dos horas W: trabajo su resolución satisfactoria.

40 Un problema realmente difícil o largo, conveniente quizá como trabajo a largo plazo para una clase. Se supone que el estudiante es capaz de resolver el problema en un período de. tiempo razonable, pero la solución no es trivial.

50 Un problema de investigación que (según sabe el autor mientras lo es­cribe) no ha sido aún resuelto satisfactoriamente. s• el lector halla una respuesta a este problema, se le suplica que lo comunique para su publi­cación; además, el autor de este libro agradecería saber la solución cuanto antes (¡siempre que sea correcta!).

Por interpolación en esta escala «logarítmica», el significado de otros números es obviamente clara. Por ejemplo, el 17 indicaría un ejercicio un poco más sencillo que el término medio. Un problema con un 50 que resuelva algún lector puede aparecer con un 45 en ediciones posteriores del libro.

El autor ha intentado asignar los números del modo más preciso, pero es difícil para una persona saber hasta qué punto otra tendrá dificultades con un ejercicio; además cada persona tiene más aptitudes para cierto tipo de problemas que para otros. Esperemos que dichos números representen una buena previsión del nivel de dificultad, pero deberán tomarse como guía general y no como indicadores absolutos.

Este libro se ha escrito para lectores con diferentes grados de entrenamiento y sofisticación matemáticos; algunos de los ejercicios se consideran sólo para lec­tores con inclinación matemáti~a. Por consiguiente los números precedidos por una M representan ejercicios sobre conceptos matemáticos o para lectores moti· vados matemáticamente y no para aquéllos que se interesan primordialmente en la programación de algoritmos. Los ejercicios marcados con las letras «H M» re­quieren para su resolución éonocimientos de cálculo o de matemática superiores que no se desarrollan en este libro. La designación ((HM» no implica necesaria­mente dificultad.

Algunos ejercicios están precedidos por una punta de flecha "•"; con ella se designan problemas realmente instructivos y recomendables. Naturalmente, no se espera que ·el lector/estudiante haga todos los ejercicios, por ello se han señalado quizá los más valiosos. ¡Lo cual no debe ir en detrimento de los otros ejercicios! Cada lector debería resolver por lo menos todos los problemas cuyo número sea

Notas sobre /os ejercicios IX

10 o menos; las flechas pueden ayudar a decidir los problemas de número elevado a los que debería darse prioridad.

Las soluciones de muchos de Jos ejercicios aparecen en el apartado de respuestas. Se ruega se utilicen correctamente; no ir a la respuesta hasta haber hecho un autén­tico esfuerzo para la resolución del problema, salvo quizá si no se tiene tiempo para un problema en particular. Después de obtener su propia solución o de haber intentado suficientemente el problema, la respuesta puede resultar instructiva y útil. La solución dada será a menudo bastante corta, esbozando los detalles puesto que se considera que el lector lo ha intentado resolver primero por sí mismo. A veces la solución proporciona menos información de lo que se preguntaba; ~ me­nudo da más. Es muy posible que se obtenga una respuesta mejor a la aquí publi­cada, o que se halle un error en la solución publicada; en tal caso, el autor agra­decería se le comunicasen los detalles cuanto antes. Las ediciones posteriores de este libro darán las soluciones mejoradas junto con el nombre del autor cuando convenga.

Cuando se trabaja en un ejercicio puede utilizarse en general las respuestas a ejercicios anteriores, salvo si se prohibe explícitamente. Los números asignados lo han sido teniendo esto presente; por tanto, es posible que d ejercicio n + 1 tenga un número menor que el del ejercicio n, incluso aunque contenga el resultado del ejercicio n como caso particular.

Resumen de códigos : 00 Inmediato 10 Sencillo (un minuto) 20 Medio (un cuarto de hora)

... Recomendable SO Moderadamente difícil M HM

De orientación matemática 40 Proyecto a largo plazo Requiere «matemáticas 60 Problema de investigación

~---------s_u~pe __ ri_o_re __ s~--------------------------------------------~

EJERCICIOS

1> l. [00) ¿Qué significa «M20»? 2. ['10) ¿De qué valor pueden ser los ejercicios de un libro de te11:to para el lector? 3. [M50) Probar que cuando n es un entero, n > 2, la ecuación x" +y" = z" no tiene solución para valores enteros y positivos de x, y, z.

Índice analítico

Capítulo S. Clasificación

*5.1. Propiedades combinatorias de las permutaciones 11 *5.1.1. Inversiones 11 *5.1.2. Permutaciones de un conjunto múltiple 23 *5.1.3. Monotonías 36 *5.1.4. Cuadros e involuciones 51

5.2. Clasificación interna 77 5.2.1. Clasificación por inserción 85 5.2.2. Clasificación por intercambio 112 5.2.3. Clasificación por selección 149 5.2.4. Clasificación por intercalación 171 5.2.5. Clasificación por distribución 183

5.3. Clasificación óptima . ... ..... 195 5.3.1 Clasificación con mínimo de comparaciones 195

*5.3.2. Intercalación con mínimo de comparaciones 214 *5.3.3. Selección con mínimo de comparaciones 225 *5.3.4. Redes para clasificar 237

5.4. Clasificación externa 266 5.4. 1. Intercalación multivía y selección por reemplazamiento 270 5.4.2. Intercalación polifásica 287 5.4.3. Intercalación en cascada 312 5.4.4. Lectura de cintas hacia atrás 325 5.4.5. La clasificación oscilante 339 5.4.6. Consideraciones prácticas para la intercalación en cinta 345

XI

XII

•s.4.7. Clasificación radix externa •s.4.8. Clasificación con dos cintas

S.4.9. Discos y tambores S.S. Resumen, historia y bibliografía

Capítulo 6. Búsqueda

6.1. Búsqueda secuencial . . . . . 6.2. Búsqueda por comparación de claves

6.2.1. Búsqueda en una tabla ordenada 6.2.2. Búsqueda en un árbol binario 6.2.3. Árboles equilibrados 6.2.4. Árboles multivía

6.3. Búsqueda digital . . . . . . 6.4. Desmenuzamiento (Hashing) 6.5. Recuperación por claves secundarias

Respuestas a los ejercicios

fndice analítico

376 383 392 413

42S

430 434 444 462 494 Sl6 S26 553 602

62S

Apéndice A. Tablas de cantidades numéricas 753

l. Constantes fundamentales (decimal) 7S3 2. Constantes fundamentales (octal) 7S4 3. Números armónicos, números de Bernoulli y números de Fibonacci 755

Apéndice B.lndice de notas 7S7

fndice y glosario 759

Capítulo 5

Clasificación

No existe nada más dificil de emprtmder, más peligroso de dirigir, ni de más incierto éxito que

la iniciatÑa de la introducción de un nuevo orden de las cosas.

NICCOLO MACHIAVELLI (E/ Prlncipe, 1613)

·«Pero no puedes consultar todos estos números dE licencias rápidamente» objetó Drake.

«No lo haremos Paul. Simplemente ordenaremos la lista y buscaremos los duplicados."

E. STANLEY GARNER (Perry Mason en El caso de la enlutada irascible, 1951)

«Clasificación en árbol» por ordenador Con esta nueva solución-ordenador de estudio de

la naturaleza se puede identificar rápidamente cerca de 260 árboles diferentes de los EE.UU .. Alaska y

Canadá, incluso palmeras, ¿rbo/es del desierto y otros exóticos.

Para clasifica! se inserta simplemente la aguja.

- Catálogo de la Edmund Scientific Company, (1964)

En este capítulo estudiaremos un tema que aparece frecuentemente en progra­mación: el reordenamiento de elementos en orden ascendente o descendente. Ima­ginar lo duro que sería el uso de un diccionario si sus palabras no estuvieran dis­puestas en orden alfabético; de forma similar, el orden en que los registros están almacenados en la memoria de un ordenador tiene frecuentemente una profunda influencia en la velocidad y simplicidad de los algoritmos que Jos tratan.

Aunque los diccionarios definen «Clasificación» como el proceso de separación u ordenación de cosas de acuerdo con su clase o tipo, es tradicional para Jos pro­gramadores de ordenadores utilizar la palabra en el sentido mucho más especial de clasificar cosas en un orden ascendente o descendente. El proceso quizás debería llamarse ordenación y no clasificación pero cualquier intento de llamarlo «orde­nación» conducía pronto a confusiones debido a los diferentes significados ligados a dicha palabra. Considérese, por ejemplo, la siguiente sentencia: «Puesto que

2 Clasificación

únicamente dos de nuestras unidades -de cinta estaban bajo órdenes de trabajo, había ordenado hacer una orden de pedido, en orden a ordenar rápidamente los datos según varios órdenes de magnitud». La terminología matemática abunda en todavía más sentidos de or$n (el orden de un grupo, el orden de una permutación, el orden de un punto de bifurcación, relaciones de orden, etc.). Así concluimos que la palabra «ordenar» puede conducir al caos.

Varias personas sugirieron la palabra <~secuenciaciónn, como nombre apropiado para un proceso de ordenación; pero, frecuentemente, esta palabra parece carecer de connotación correcta, especialmente cuando están presentes elementos iguales y, oca­sionalmente, es conflictiva con otra terminología. Es totalmente cierto que la palabra clasificación tiene otros significados, pero dentro delleng.uaje informático se ha im­puesto firmemente. Así utilizaremos la palabra ((clasificaciónn mayoritariamente en el sentido de «clasificar en un orden)) sin nuevas apologías.

Algunas de las principales aplicaciones de la clasificación son:

a) Resolución de problemas ci<! «reunión», donde todos los elementos de igual identificación se tratan juntos. f 11r•óngase que tenemos 1 O 000 elementos en orden aleatorio, algunos de los cuales denen valores idénticos y que deseamos reordenar este fichero de forma que aquellos registros de idéntico valor aparezcan en posi­ciones consecutivas. Esencialmente este es el problema de «clasificación» en el sentido clásico de la palabra, de forma que los valores estén en orden ascendente, v1 s: v2 s: ... s: v10000. (La eficacia que es posible en este procedimiento, explica porque ha cambiado el sentido original de «clasificación>>.)

b) Si dos o más ficheros se han clasificado en el mismo orden, es posible obtener en un solo paso secuencial de los ficheros, todos los emparejamientos. Este es el principio que Perry Mason utiliza para ayudarle a solucionar el caso del crimen (ver la cita al principio de este capítulo). Normalmente es mucho más económico acceder a una lista de información en secuencia desde el principio al fin, que acceder al azar saltando de un punto a otro, excepto que la lista sea lo suficiente pequeña para almacenarla en una memoria de acceso directo de alta velocidad. Efectuando clasificaciones, es posible utilizar un acceso secuencial en grandes ficheros, como sustitución factible del direcci-::.namiento directo.

e) La clasificación también es una ayuda para problemas de búsqueda, como veremos en el capítulo 6, y p·.1r consiguiente, ayuda a obtener las salidas del orde­nador más convenientes para la utilización humana. De hecho, una lista que se ha clasificado en orden alfabético parece frecuentemente bastante fiable, aunque la información numérica asociada se haya calculado incorrectamente.

Aunque la clasificación tradicionalmente se ha utilizado generalmente para el proceso de datos en aplicaciones de gestión, actualmente es una herramienta básica que un programador debe tener 'en cuenta para usarla en una amplia variedad de

Clasifjcación 3

situaciones. Hemos discutido su utilización en la simplificación de fórmulas algé­bricas en el ejercicio 2.3.2-17. Los ejercicios posteriores ilustran la diversidad de aplicaciones típicas.

Uno de los primeros sistemas de software de gran capacidad que demostraba la versatilidad de la clasificación, fue el Larc Scientific Compiler desarrollado por la Computer Sciences Corporation en 1960. Este compilador optimizado para un lenguaje FORTRAN extendido, hacía uso abundante de clasificaciones de forma que los distintos algoritmos de compilación aparecían junto con las pertinentes partes del programa fuente en la secuencia conveniente. El primer paso era un examen léxico que dividía el programa fuente en elementos, representando cada uno un identificador (por ejemplo, el nombre de una variable), una constante, un operador, etc. Se asignaban varios números de secuencia a cada elemento; clasi­ficados por el nombre y un número de secuencia apropiado, se procesaban con­juntamente todos los usos de un identificador determinado. A las «definiciones de referencias de entrada>> que especificaban, por ejemplo, que el identificador era un nombre de función, parámetro o una variable dimensionada, se les asignaba el menor número de secuencia, de forma que aparecieran primero entre los elementos que tuvieran un identificador determinado; ello facilitaba la verificación de uso conflictivo de un identificador, y asignación de memoria en declaraciones EQUIVA­

LENTE, etc. La información de cada identificador reunida de este modo se ligaba a cada elemento; de esta forma la «tabla de símbolos» de identificadores no era necesario mantenerla en la memoria de alta velocidad. Los elementos actualizados se clasificaban según otro número de secuencia, con lo que se obtenía esencialmente el programa fuente de nuevo en su orden original, con la excepción de que la se­cuencia estaba diseñada especialmente para colocar las expresiones aritméticas en una forma «prefija polaca>> más idónea. También se usaban clasificaciones en fases posteriores para facilitar la optimización de bucles, intercalar mensajes de error en el listado, etc. Resumiendo, el compilador estaba diseñado de forma que virtual­mente todo el proceso se podía efectuar secuencialmente desde ficheros que estaban almacenados en una memoria auxiliar sobre tambor.

Otra, más evidente, aplicación de clasificación se encuentra en las rutinas de edición de ficheros, donde cada linea se identifica por un número clave. Mientras un usuario está introduciendo adiciones y cambios, no es necesario mantener todo el fichero en memoria Las líneas modificadas pueden clasificarse a continuación (usualmente están desordenadas), y se intercalan con el fichero original Ello con­du<:e a una forma razonablemente eficiente de utilización de la memoria en situa­ciones de multiprogramación (cf. C. C. Foster, Comp. J. 11 (1968), 134-137.]"

Los fabricantes de ordenadores estiman que más de un 25 por ciento del tiempo de utilización de sus ordenadores se gasta en clasificaciones. Existen muchas insta­laciones en las que las clasificaciones ocupan más de la mitad del tiempo del orde­nador. Según estas estadísticas podemos sacar la conclusión que o bien (i) existen muchas aplicaciones importantes de la clasificacion, o (ii) muchas personas clasifican

4 Clasificación

cuando no debieran, o (iii) se utilizan comúnmente algoritmos de clasificación ineficientes. La verdad real probablemente incluye algo de las tres alternativas. En cualquier caso podemos observar que la clasificación es digna de serios estudios, como una materia práctica.

Pero incluso si la clasificáción fuera inútil, la recompensa que obtendríamos sería suficiente razón para estudiarla de todas formas. Los algoritmos ingeniosos, que se han descubierto, muestran que la clasificación es, por derecho propio un tema interesante de investigar. Existen muchos problemas fascinantes no resueltos en esta área (así como bastantes resueltos).

Desde una perspectiva más amplia, podremos encontrar también que los algo­ritmos de clasificación constituyen un interesante caso de estudio de como abordar en general problemas de programación de ordenadores. Se ilustrarán muchos prin­cipios importantes de manipulación de estructuras de datos. Examinaremos la evolución de varias técnicas de clasificación, en un intento de indicar como el lector puede ir descubriendo las mismas ideas por sí mismo (si ha afrontado el problema previamente). Por. extrapolación de este caso de estudio, podemos aprender bas­tante acerca del propósito que ayuda a diseñar buenos algoritmos para otros pro­blemas.

Las técnicas de clasificación suministran también una excelente ilustración de las ideas generales implicadas en el análisis de algoritmos, o sea, las ideas usadas para determinar las características de rendimiento de algoritmos para poder elegir inteligentemente entre métodos en competencia. Los lectores con inclinaciones · matemáticas encontrarán en este capítulo algunas técnicas para estimar la rapidez de algoritmos de cálculo y para resolver relaciones de recurrencia complicadas. Por otra parte, el material se ha ordenado de forma que los lectores sin una propensión matemática puedan fácilmente saltarse estos cálculos.

Antes de continuar, debemos definir nuestro problema con más claridad, e introducir alguna terminología. Tomemos N elementos

para clasificar; a cada elemento lo denominaremos registro, y al conjunto de N registros fichero. Cada registro R1 tiene una clave K1, que gobierna el proceso de clasificación. Puede existir en el registro además de la clave información adicional; esta «información satélite» extra no tiene ningún efecto en el proceso de clasifi­cación, excepto que permanece con el mismo registro.

Se especifica entre las claves una relación de ordenación «<» de forma que, para tres valores a, b, e, se cumplen las siguientes condiciones:

i) Exactamente una de las posibilidades a < b, a = b, b < a es cierta. (Ley de la tricotomía.)

ti) Si a< b y b < e, entonces a< c. (Ley de la transitividad.)

Clasificación 5

Estas dos propiedades caracterizan el concepto matemático de ordenación lineal, llamado también ordenación total. Cualquier relación «< >> que satisfaga (i) e (ii) puede clasificarse por la mayor parte de los métodos mencionados en este capítulo, aunque algunas técnicas de clasificación requieren claves numéricas o alfabéticas con la ordenación usual.

El objetivo de la clasificación es determinar una permutación p(l)p(2) ... p(N) de los registros, que coloque las claves en orden no decreciente:

(1)

Una clasificación se llama estable, si además exigimos que los registros con igual clave retengan su orden relativo original, o sea, si

p(i) < p(j) cuando e i < j. (2)

En algunos casos desearemos que los registros estén fisicamente ordenados en memoria de forma que sus claves estén en orden, mientras que en otros casos será suficiente tener una tabla auxiliar que especifique de alguna forma la permutación, de modo que pueda accederse a los registros en el orden de sus claves.

Algunos métodos de clasificación suponen la existencia de uno o ambos valores « = » y «- = », que se definen como mayor que o menor que todas las claves, res­pectivamente:

-oo < Ki < oo, 1:::; j:::; N. (3)

Estos valores se sustituyen por claves artificiales y pueden usarse también como marcas indicadoras. El caso de igualdad está excluido en (3); si la igualdad pudiera ocurrir, los algoritmos deberían modificarse de forma que fueran operativos, pero normalmente a costa de algo de elegancia y eficiencia.

Pueden distinguirse dos tipos de clasificaciones, clasificación interna, en donde los registros se mantienen en memorias de acceso al azar de alta velocidad; y cla­sificación externa cuando el número de registros excede a la capacidad de memoria en <:ualquier momento. La clasificación interna permite una mayor flexibilidad en la estructura y acceso a los datos, mientras que la clasificación externa nos muestra como tratar con cierto rigor las restricciones de acceso.

El tiempo requerido para clasificar N registros, utilizando un algoritmo de clasificación de uso general aceptable, es aproximadamente proporcional a N log N; efectuaremos cerca de log N «pasadas» sobre los datos. Este es el tiempo mínimo posible, como veremos en el apartado 5.3.1. Así, si doblamos el número de regis­tros, su clasificación exigirá algo más del doble de tiempo, permaneciendo igual el resto. (Realmente, cuando N tiende a infinito, una mejor estimación del tiempo necesario para clasificar es N(log N)2, si las claves son distintas, ya que el tamaño

6 Clasificación

de las claves crece por lo menos como log N ; pero para usos prácticos, en reali­dad N nunca tiende a infinito.)

EJERCICIOS- Primer conjunto

1. [M20] Demostrar, a partir de las leyes de tricotomía y transitividad, que la permutación p(l)p(2) ... p(N) está unlvocamente determinada cuando se supone una clasificación estable.

2. [21] Se supone que cada registro R1 en un cierto fichero contiene dos claves, una «clave prin­cipal» K1 y una ((Clave secundaria», k¡, con una ordenación lineal < definida en cada conjunto de claves. Por tanto, podemos definir en la forma usuM un ((Orden lexicográfico» entre pares de claves (K, k)

(K;, k;) < (K ¡, k¡) si K ; < K¡ o si K; = K 1 y k; < k¡.

Un hombre llamado señor A tomó el fichero y primeramente Jo clasificó por las claves prin­cipales, obteniendo n grupos de registros de igual clave principal en cada uno de ellos,

donde in = N. Después, clasificó cada uno de los n grupos R p{;,_.+l), ... , Rp~.;1> por las claves se­cundarias.

El señor B tomó el mismo fichero original y lo clasificó por las claves secundarias; después tomó el fichero resultante y lo clasificó por las claves principales.

El señor C tomó el mismo fichero original y efectuó una simple operación de clasificación, utilizando un orden lexicográfico por las claves principal y secundaria (K1, k1).

¿Obtuvieron los tres hombres el mismo resultado? 3. [M25] Sea < una relación entre K¡, ... , KN que cumple la ley de tricotomía pero no la ley

transitiva. Demostrar que incluso sin la ley transitiva es posible clasificar los registros en una forma estable, cumpliendo las condiciones (1) y (2); de hecho, ¡existen como mínimo tres ordenaciones que cumplen las condiciones! 4. [15) El señor B. C. Dull (un programador de MIX) deseaba conocer si el número almacenado

en la posición A es mayor, menor o igual que el número almacenado en la posición B. Para ello escribió

LDA A SUB B

y comprobó si el registro A era positivo, negativo, o cero. ¿Qué error importante cometió y qué deberia haber hecho 7

S. (17) Excribir una subrutina MIX para comparación de claves teniendo las siguientes espe-cificaciones :

Secuencia de llamada: JMP COMPARE

Condiciones de entrada: rll = n; coÑTI!NTS(A +k)= a, , CONTENTS(B +k)= bt, para 1 ~ k ~ n; suponiendo n :<:. l.

Clasificación 7

Condiciones de salida: CJ! = MAYOR, si (a,., ..• , a1) > (b,., ... , bJ; Cl = IGUAL, si (a,., ..• , aJ = (b,., . . . , b1);

Cl = MENOR, si (a,., ... , a1) < (b,., ... , bJ; rX y rll posiblemente afectados.

Aquí la relación (a,., . . . , aJ < (b11, ••• , b1) indica una ordenación lexicográfica de izquierda a derecha; es decir, existe un índice j tal que a,. = b,. para n ¿k> j, pero a¡< b¡.

• 6. (30] Las posiciones A y B contienen dos números a y b, respectivamente. Mostrar que es posible escribir un programa MIX que calcule y almacene mln (a, b) en la posición e, sin utilizar ninguna operación de bifurcación. (Nota: puesto que no podrá examinar si se ha producido o no un exceso de capacidad aritmético, se garantiza que cualquiera que sean los valores de a y b es imposible que se produzca exceso de capacidad.) 7. (M27] Después de clasificar en orden no decreciente N variables aleatorias independientes

y uniformemente distribuidas entre O y 1 , ¿cuál es la probabilidad de que la r-ésima menor va­riable sea S: x?

EJERCICIOS-Segundo conjunto

Cada uno de los siguientes ejercicios plantea un problema con los que un programador de ordenadores se podría enfrentar. Sugerir una «buena» forma de resolver el problema, suponiendo que se dispone únicamente d'e una cantidad de memoria interna relativamente pequeña, comple­mentada por cerca de media docena de unidades de cinta (número suficiente de unidades de cinta para clasificar). 8. [15] Le entregan una cinta que contiene un millón de palabras de datos. ¿Cómo determinarla

cuántas palabras distintas hay en la· cinta? 9 •. [/8] Suponga que es el Servicio Nacional de Recaudación de Impuestos; recibe millones de

documentos de «información» de organizaciones comunicando las cantidades pagadas a su per­sonal y millones.de declaraciones de impuestos de gente indicando los ingresos que ha tenido. ¿Cómo podría detectar aquellas personas que no han declarado todos sus ingresos? 10. [M25] (Transposición de una matriz.) Le entregan una cinta magnética que contiene un millón de palabras, conteniendo los elementos de una matriz de 1000 x 1000, almacenada por filas: a1,1 a,2 • • • a1o1000a2,~. • •• a2,1000 •• • a1000,1000• ¿Cómo crearía una cinta en la que los elementos estén almacenados por columnas a,1 a2,1 ••• a1000,1 a"2 ••• a1000,2 • •• a1oolh!ooo? (Intentar efectuarlo con un máximo de 10 pasadas sobre los datos.) 11. [M26] Dado un gran fichero de N palabras, ¿cómo podria «desclasificarlo» ·en un orden aleatorio?

•12. [24) Determinada universidad tiene cerca de 1000 profesores y 500 comités; se supone que cada profesor es miembro de dos comités como minimo. El problema consiste en preparar una relación maestra impresa de todos los comités. Para eHo se les suministran 1500 fichas en orden aleatorio, perforadas como se muestra a continuación : Fichas de profesor. Columna l, blanco; columnas 2-18, apellido seguido de blanco; columnas 19-20, iniciales del nombre; columnas 21-23, número del primer comité; columnas 24-26, número del segundo comité; ... ; columna 78-80, vigésimo número de comité (si es necesario), o blanco. Fichas de comité. Columna l, «•»; columnas 2-77, nombre del comité; columnas 78-80, número del comité. ¿Cómo precederla? (Expresar el método con cierto detalle.) 13. [20] Está trabajando con dos ordenadores que tienen diferentes convenciones para la «se­cuencia de colación» (o sea, relación de orden) de caracteres alfanuméricos. ¿Cómo efectuarla clasificaciones alfanuméricas de ficheros en un ordenador en el orden que utiliza el otro?

8 Clasificación

14. [18] Le entragan una lista de un gran número de personas nacidas en los EE.UU., junto con el nombre del estado donde nacieron. ¿Cómo contaría el número de personas nacidas en cada estado? (Suponga que nadie aparece más de una vez en la lista.) lS. [20] Para poder efectuar cambios a programas FORTRAN largos, desea diseí'lar una rutina de «referencias cruzadaS>>: esta rutina toma programas FORTRAN como entrada e imprime con­juntamente con un indice que muestra cada uso de cada identificador (o sea cada nombre) en el programa. ¿Cómo podría diseí'larse esta rutina? 16. (JJ) (Clasificación de tarjetas de biblioteca.) La forma de alfabetizar las fichas. del catálogo varia algo de una biblioteca a otra; el siguiente listado <<alfabético)) indica muchos de los proce­dimientos recomendados en las American Lihrary Association Rules for Filing Catalog Cards (Cbicago 1942) ( Normas de la Asociación Americana de Bibliotecas para Archivar las Fichas del Catálogo):

Texto de la ficha

R. Accademia nazionale dei Lincei, Rome 1812; ein historischer roman. Bibliotheque d'histoire révolutionnaire. Bibliotheque des curiosités. Brown, Mrs. J. Crosby Brown, John Brown, John, mathematician Brown, John, of Boston Brown, John, 1715-1766 BROWN, JOHN, 1715-1766 Brown, John, d. 1811 Brown, Dr. John, 1810-1882 Brown-Williams, Reginald Makepeace Brown America

Brown & Dallison's Nevada directory. Brownjohn, AJan Den', Vladimir Éduardovich, 1867-The den. Den lieben süssen Mli.deln Dix, Morgan, 1827-1908 1812 ouverture. Le XIXe siecle fran~is. The 1847 issue of U. S. stamps. 1812 overture. 1 am a matbernatician. . mM journal of researcb and development. ha-1 ha-chad. la; a love story. lntemational Business Machines Corporation al-Khuwariznü, Muhammad ibn Müsa,

fl. 813-846 Labour; a magazine for all workers. Labor research association Labour, see Labor McCatl's cookbook McCarthy, Jobo, 1927-

Obsuvaclones

Despreciar las designaciones extranjeras Mil ochocientos doce Considerar la tilde como un espacio en francés Despreciar los acentos Despreciar tratamientos Los nombres con fechas siguen a los que no

tienen, éstos se ordenan por palabras des­criptivas

Los nombres idénticos se ordenan por fechas Las obras <<acerca de>> siguen a las de «poP> Fechas de nacimiento interesan a veces Despreciar títulos Guión como espacio Los títulos de las obras siguen a los nombres

compuestos & equivale a «y»

Despreciar las tildes en los nombres Despreciar el articulo inicial . . . siempre que esté en nominativo Nombres delante de palabras Mil ochocientos doce Diecinueve Mil ochocientos cuarenta y siete Mil ochocientos doce (por Norbert Wiener) Iniciales como palabras de una letra Despreciar el articulo inicial Despreciar la puntuación en los tltulos

Despreciar el «al» inicial en los nombres árabes Entrecomillar el «Labor»

Ficha de referencia cruzadas Despreciar la tilde en inglés Me = Mac

Clasificflción Texto de la ficha

Machine-independent computer programming.

MacMahon, Maj, Percy Alexander, 1854-1929

Mrs. Dalloway. Mistress of mistresses. Royal society of London St. Petersburger Zeitung. Saint-Saens, Camille, 1835-1921 Ste. Anne des Monts, Quebec SeminumericaJ algorithms. Uncle Tom's cabin. U. S. Bureau of the census. Vandermonde, Alexander Théopbile,

1735-1796 Van Valkenburg, Mac Elwyn, 1921-Von Neumann, John, 1903-1957 The whole art of legerdemain. Who's afraid of Virginia Woolf? Wijngaarden, Adriaan van, 1916-

Observaciones

Guión como un espacio

Despreciar tratamientos <<Mrs» = Mistress = Señora

«St.» = Santo (incluso en alemán) Guión como espacio Santa

«U. S.» = «United States»

9

Despreciar espacio después de prefijo- en nom­bre de pila

Despreciar tilde en inglés . Los nombres de pila no deben empezar con

letras más pequeñas

(La mayoría de las reglas están sujetas a determinadas excepciones y hay muchas otras normas que no aparecen aquí.)

Si tuviera el trabajo de clasificar grandes cantidades de fichas de biblioteca en ordenador y de mantener, eventualmente, un archivo muy grande de tales tarjetas y si no fuera posible cambiar estas políticas largo tiempo establecidas de cumplimentar las tarjetas, ¿cómo dispondría los datos de forma que se facilitaran las operaciones de clasificación y de intercalación? 17. [M2J] (Logaritmos discretos.) Se sabe que p es un número primo (suficientemente grande), y que a es una raíz simple de módulo p. Por consiguiente, para todo b en el ámbito 1 ::;;: b < p, existe un único n iaJ que an mod p = b, 1 ::;;: n < p. ¿Cómo hallaría n, dado b, en menos de O(n) pasos? [Observación; Hacer m = ryp1 e intentar resolver amnl;s ba-112 (módulo p) para O::;;: n1 , n2 < m.] 18. [M25] (E. T. Parker.) Euler conjeturó que no existlan soluciones de la ecuación

para valores enteros no negativos de u, v, w, x, y, z, excepto para la solución trivial cuando como mlnimo, cuatro variables son nulas. Al mismo tiempo conjeturó que '

no tenia soluciones no triviales, para todo n 2 3, pero dicha conjetura se refutó por el desc!Jbri­miento de la identidad 275 + 845 + 1105 + 1335 = 1445

; véase L. J. Lander, T . R. Parkin y J. L. Sel­fridge, Math. Comp. 21 (1967), 446-459. ¿Podría pensar la forma en que la clasificación puede ayu­dar en la búsqueda de cont*jemplos de la conjetura de Euler, cuando n = 6?

• 19. [24] Dado un fichero que contiene un gran número de palabras de 30 bits distintas X ¡, .•. , XN.

¿Cuál es una buena forma para encontrar todos los pares complementarios (x" x1) que existan? (Dos palabras son complementarias cuando una tiene O en los lugares donde la otra tiene 1, y

10 Clasificación

viceversa; as.l son complementarios si y sólo si su suma es (11 . . . 1)2, cuando se tratan como nú­meros binarios.)

• 20. [25] Dado un fichero que contiene 1000 palabras binarias de 30 bits X¡, • •. , x l000 ¿Cómo prepararla una lista de todos los pares (x, x,) tal que x1 = x1, excepto en dos bits como máximo? 21. [22] ¿Cómo se podrían busca.r ana_gramas de cinco letras con sentido, como, en inglés, CARET,

CARTB, CATE!\, CRATE, JUACT, TRACE; CRUEL, LUCRE, ULCER; DOWRY, llOWDY, WORDY? (A todo el mundo le gustaría saber si en castellano·hay algún conjunto de diez o más anagramas de cinco letras, junto con el remarcable conjunto inglés

APERS, ASPER, PARES, PARSE, PEARS, PRASE, PRESA, RAPES, REAPS, SPARE, SPEAR,

al que se podrían añadir la ¡palabra francesa APRts y la castellana PERSA.]

22. [M28] Dadas las especificaciones de un gran número de grafos orientados, ¿qué método será útil para agrupar juntos los grafos isomorfos? (Los grafos orientados son isomorfos si existe una correspondencia univoca entre sus vértices e igualmente entre sus arcos, donde 'las correspondencias conservan las incidencias entre vértices y arcos.) 23. [JO] En un cierto grupo de 4096 personas, cada una tiene cerca de 100 conocidos. Se ha pre­parado una relación de pares de personas que se conocen. (La relación es simétrica; o sea si x conoce a y, entonces y conoce a x. Por consiguiente, el fichero contiene aproximadamente 200 000 entradas). ¿Cómo se podrla diseñar un algoritmo para listar todas las· k personas de una pefla de este grupo de gente, dado k '1 (Una pefta es un caso de conocimiento mutuo: cada persona de una peña conoce a todos los demás.) Suponer qu.e no existen peñas numerosas. 24. [30] Tres millones de personas con distinto nombre formaban una cadena desde Nueva York hasta California. Cada partic.ipante recibió una papeleta en la que debla poner por escríto su propio nombre y el de la persona siguiente de la cadena hacia el Oeste. La persona que finalizaba la ca­dena en el extremo occidental, al no saber qué hacer, arrojó su papeleta; las restantes 2 999 999 papeletas se colocaron en un inmenso cesto y se remitieron a los Archlvos Nacionales en Wash­inghton, D.C. Alli se mezcló el contenido del cesto y se traspasó sobre cintas magnéticas.

En aquel momento un técnico en información resaltó que existía información suficiente en las cintas para reconstruir la lista de personas en su orden original. Y un técnico en ordenadores descubrió una forma para la reconstrucción con menos de 1000 pasadas sobre las cintas de datos, utilizando únicamente un tratamiento secuencial de las cintas y una pequeña cantidad de memoria de acceso directo. ¿Cómo lo efectuó?

[En otras palabras, dados los pares (X¡, x1 + 1), para 1 :S: i < N, en un orden aleatorio, donde las x; son distintas. ¿Cómo puede obtenerse la secuencia x1, x2, • •• , XN, estando restringidas todas las operaciones a técnicas secuenciales apropiadas para la utilización de cintas magnéticas? Este es el problema de clasificar en un orden, cuando no existe una forma fácil de indicar cuál de las dos claves dadas precede a la otra; anteriormente hemos planteado este problema como parte del ejercicio 2.2.3-25.)

5.1.1 Inversiones

*5.1 . PROPIEDADES COMBINATORIAS DE LAS PERMUTACIONES

11

Una permutación de un conjunto finito es un ordenamiento de sus elementos en una fila. Las permutaciones tienen especial importancia en el estudio de los algoritmos de clasificación, ya que representan los datos de entrada desclasificados. Para estudiar la eficiencia de los diferentes métodos de clasificación, necesitaremos poder contar el número de permutaciones que origina ejecutar un determinado paso de un procedimiento de clasificación un cierto número de veces.

Naturalmente, nos hemos encontrado muchas veces con permutaciones en los capítulos 1, 2 y 3. Por ejemplo, en el apartado 1.2.5, hemos discutido dos métodos teóricos para la construcción den! permutaciones den objetos; en el apartado 1.3.3. hemos analizado algunos algoritmos que tratan sobre la estructura del ciclo y las propiedades multiplicativas de las permutaciones; en el apartado 3.3.2. hemos estudiado sus subsecuencias monótonas crecientes y decrecientes. El propósito del presente apartado es estudiar otras propiedades de las permutaciones, y considerar el caso general en donde se permite la aparición de elementos iguales. En el curso de este estudio aprenderemos bastante acerca de matemática combinatoria.

Las propiedades de las combinaciones son suficientemente agradables para ser interesantes por derecho propio, y es conveniente estudiarlas en conjunto en vez de desglosar la materia a lo largo del capitulo. Pero los lectores que no tengan inclinaciones matemáticas y aquéllos que estén ansiosos de introducirse en las técnicas de clasificación pueden pasar directamente al apartado 5.2, ya que el pre­sente apartado tiene realmente poco contacto directo con la clasificación.

*5.1.1. Inversiones

Sea a1 a2 ••• a. una permutación del conjunto {1, 2, ... , n}. Si i < j y a, > a1,

el par (a" a1) recibe el nombre de «inversión» de la permutación; por ejemplo, la permutación 3 1 4 2 tiene tres inversiones: (3, 1), (3, 2), y (4, 2). Cada inversión es un par de elementos que están fuera de secuencia, así la única permutación sin inversiones es la permutación clasificada 1 2 .. . n. Este contacto con la clasifica­ción es la razón principal por la que deberemos estar interesados en las permu­taciones, si bien anteriormente hemos usado el concepto para analizar el algoritmo de asignación dinámica de memoria (ver ejercicio 2.2.2-9).

El concepto de inversión fue introducido por G. Cramer en 1750 [Intr. al' Analyse des Lignes Courbes algébriques (Ginebra, 1750), 657-659 cf. Thomas Muir, Theory of Determinants 1 (1906), 11-14] en conexión con su famosa regla para la resolución de ecuaciones lineales. Esencialmente, definió el determinante de una matriz de n x n de la siguiente forma:

12 Clasificación

(X! 1 X!2 · ••

det : : Xnl Xn2 • • •

sumatorio de todas las permutaciones a¡~ ... a,., donde /(a¡~ ... a,.) es el nú­mero de inversiones de la permutación.

La tabla de inversión b1 b2 ••• b,. de la permutación a1 ~ ••• an se obtiene ha­ciendo que b, sea el número de elementos a la izquierda de j que sean mayores que j. (En otras palabras, b1 es el número de inversiones cuyo segundo componente es j.) Por ejemplo, la permutación

5 9 1 8 2 6 4 7 3 (1)

tiene la tabla de inversión

2 3 6 4 o 2 2 1 o, (2)

ya que 5 y 9 están a la izquierda de 1; 5, 9, 8 están a la izquierda de 2; etc., en total 20 inversiones. Por definición tendremos siempre

O :::; b1 :::; n - 1, O :::; b2 :::; n - 2, . . . , O :::; bn- 1 :::; 1, bn = O. (3)

Quizás el hecho más importante acerca de las inversiones es la observación de Marshall Hall de que una tabla de inversión determina unívocamente la permutación correspondiente. [Ver Proc. Symp. App/ied Math. 6 (American Math. Society, 1956), 203.] Podemos retroceder a partir de cualquier tabla de inversión b1 b2 ••• b,. que cumpla (3) hasta la única permutación que la produce, determinando sucesivamente la situación relativa de Jos elementos n, n - 1, ... , 1 (en este orden). Por ejemplo, podemos construir la permutación correspondiente a (2) de la forma siguiente: escribir primeramente el número 9: como b8 = 1, 8 sigue a 9. Como b7 = 2, 7 se sitúa después de 8 y 9. Como b6 = 2, 6 está colocado después de los dos primeros números escritos; a~í tendremos

9 8 6 7

hasta ahora. Se continúa situando 5 a la izquierda, ya que b5 = O; colocar 4 des­pués de los 4 primeros números; colocar 3 después de los 6 primeros (o sea a la derecha); así tendremos

5 9 8 6 4 7 3.

Insertando 2 y 1 en forma análoga se obtiene (1). Esta correspondencia es importante, pues a menudo podremos transformar un

problema planteado en términos de permutaciones en otro equivalente planteado en términos de tablas de inversión, siendo este último quizás más sencillo de resol­ver. Por ejemplo, consideremos la pregunta más sencilla de todas: ¿Cuántas per-

5.1.1 Inversiones 13

mutaciones de {1, 2, ... , n} son posibles? La respuesta debe ser el número de tablas de inversión posibles, y son fáciles de contar ya que existen n alternativas • para b1 , independientemente n -1 para b2, ••• , 1 alternativa para b,., haciendo n(n -1) ... 1 = n! alternativas en total. Las inversiones· son fáciles de contar, porque las b son completamente independientes entre sí, mientras que las a deben ser mutuamente distintas.

En el apartado 1.2.10 hemos analizado un problema que trataba sobre el nú­mero de máximos locaie·s de una permutación, cuando se leía de derecha a izquierda; en otras palabras, deseábamos contar cuantos elementos eran mayores que todos los que le sucedían. (Por ejemplo, los máximos de derecha a izquierda en (1) son 9, 8, 7 y 3.) Es el número de veces en que j cumple que b, = n - j . Ya que b, será igual a n - 1 con una probabilidad 1/n, e (independientemente) b2 será igual a n- 2 con una probabilidad de 1/(n - 1), etc., por consideración de las inversiones es evidlente que el promedio del número de máximos de derecha a izquierda es

1 . 1 H - +--+ ···+1 = . n n - 1 n

La correspondiente función generatriz también se obtiene fácilmente en forma similar.

Otras aplicaciones de las tablas de inversión aparecen posteriormente en este capítulo, con referencia a algoritmos de clasificación específicos.

~¡ intercambiamos dos elementos adyacentes de una permutación, es fácilmente observable que el número total de inversiones aumentará o disminuirá en una unidad. La figura 1 muestra las 24 permutaciones de {1 , 2, 3, 4}, en donde las líneas unen permutaciones que únicamente difieren por el intercambio de dos ele­mentos adyacentes; siguiendo una línea descendente se incrementa el número de inversiones en una unidad. Por lo tanto el número de inversiones de una permu­tación :n es la longitud del camino descendente desde 1 2 3 4 hasta :n en la figura l ; todos los caminos semejantes deben tener la misna longitud.

Nótese que el diagrama puede observarse como un sólido de tres dimensiones, el «octaedro truncado», que tiene 8 caras hexagonales y 6 caras cuadradas. Es uno de los poliedros uniformes tratados por Arquímedes (véase ejercicio 10).

El lector no debe confundir las «inversiones» de una permutación con la «in­versa» de una permutación. Recordemos que podemos representar una permutación en dos lineas según la forma

(1 2 3 .. . n)

a1 a2 as . . . an ;

la inversa a~ ~ a; ... a: de esta permutación es la permutación obtenida intercam-

14

Fig.l.

Clasificación

1234

4321

El octaedro truncado, que muestra el cambio en las inversiones cuando se intercambian ele­mentos adyacentes de una permutación.

biando las dos :fHas y clasificando las columnas en orden creciente según la nueva fila superior

... a..) - (1 2 3 - 1 ' 1 . . . n a1 a2 as

.. . ~)·

. . . a;.

Por ejemplo, la inversa de 5 9 1 8 2 6 4 7 3 es 3 5 9 7 1 6 8 4 2, puesto que,

(5 9 1 8 2 6 4 7 3) (1 2 3 4 5 6 7 8 9) 123456789 = 359716842.

Otra forma de definir la inversa es hacer a; = k si y sólo si ak = j.

(5)

La inversa de una permutación fue definida por primera vez por H. A. Rothe [en K. F. Hinderburg (ed.), Sammlung combinatorisch-analytischer Abhandlungen 2 (Leipzig, 1800), 263-305], el cual observó una relación importante entre inversa:. e inversiones: La inversa de una permutación tiene exactamente tantas inversiones como la permutación misma. La demostración de Rothe no era de hecho la más sencilla posible, pero es instructiva y bastante elegante pese a todo. Construyamos

5.1.1 Inversiones 75

un tablero de n x n que tenga un punto en la columna j de la fila i siempre que a, = j. Luego coloquemos una X en todos los cuadros que tengan puntos situados por debajo (en la misma columna) y a su derecha (en la misma fiJa). Por ejemplo, el diagrama para 5 9 1 8 2 6 4 7 3 es

X X X X • X X X X X X X • •

X X X X X • •

X X • X • X • •

El número de X es el número de inversiones, puesto que se observa fácilmente que b1 es el número de X en la columna j. Ahora, si transponemos el diagrama (intercambiando filas y columnas), obtenemos el diagrama correspondiente a la inversa de la permutación original; podemos observar que el número de X (número de inversiones) es el mismo en ambos casos. Rothe utilizó este hecho para demos­trar que el determinante de una matriz permanece invariable cuando se transpone la matriz.

El análisis de algunos algoritmos de clasificación implica el conocimiento de cuantas permutaciones de n elementos tienen exactamente k inversiones. Desig­nemos este número por In(k); la tabla 1 muestra los primeros valores de esta función.

Tabla 1

PERMUTACIONES CON k INVERSIONES

1 ,.(O) 1 ,.(1) 1,.(2) 1,.(3) 1,.(4) 1,.(5) 1,.(6) 1 ,.(7) 1 ,.(8) 1 ,.(9) 1 ,.(10) 1 ,.(11)

1 o o o o o o o o 1 o o o o o o o o 1 o o o o o o o o 1 o o o o o 1 4 9 15 15 9 4 o

5 14 29 101 101 90 71 49

16 Clasificación

Considerando la tabla de inversión b1 b2 ••• b,., es evidente que I,.(O) = 1, /,.(1) = n -1, y existe una propiedad de simetría

(6)

Además, puesto que cada b puede elegirse independientemente de las otras, no es difícil de ver que la función generatriz

G,.(z) = 1.,.(0) + l,(I)z + J.,.(2)z2 + · · · (7)

satisface G,(z) = (1 + z + ... + z"-1)G,.-1(z); de aquí se obtiene la forma com­parativamente siimple

) + z + · · · + z"-1) . •• (1 + z)(1)

= (1 - z") .. . (1 - z2)(1 - z)/(1 - z)". (8)

De esta función generatriz, podemos ampliar fácilmente la tabla 1, y verificar que los números debajo de la linea en zigzag en la tabla satisfacen

l.,.(k) = I.,.(k- 1) + l,._1 (k), para k< n. (9)

(Esta relación no es válida sobre la línea en zigzag.) Un argumento más complejo (ver ejercicio 14) muestra que, de hecho, tenemos las fórmulas,

1.,.(2) = G) - 1,

1.,.(3) = (n t 1) - (~)'

1.,.(4) = (n! 2) _ (n ~ 1), !,.(5) = (n t 3)- (n t 2) + 1,

n 2:: 2;

n 2:: 3;

n 2:: 4;

n 2:: 5¡

en general, la fórmula para /,.(k) contiene alrededor de l ,6 V7' términos:

S. J .1 Inversiones 17

donde u1 = (3j2-j)/2 se denomina «número pentagonal>>. Si dividimos G,.(z) por n! obtendremos la función generatriz gn(z) para la dis­

tribución de probabilidad del número de inversiones en una permutación aleatoria de n elementos. Ésta es el producto

(11)

donde h~(z) = (1 + z + ... + ~-1)/k es la función generatriz para la distribución uniforme de un número aleatorio no negativo menor que k. Resulta que

media (gn) = media (hJ + media (hJ + ... + media (h,.)

o

var (gn) - var (h1)

o

+

+ +

1 2

var (h2 )

1 4

+ ... + n - 1 n(n - 1) - 2- = 4; (12)

+·· ·+ var (hn)

+···+ n 2- 1 _ n(2n + 5)(n - 1)

_1_2_ 72

(13)

Como el número medio de inversiones es bastante grande, alrededor de ! n~; la desviación tipo también es bastante grande, alrededor de j;lfl/2•

Para conducir nuestro estudio de las inversiones hacia una conclusión intere­sante, vamos a tratar un descubrimiento notable hecho por P. A. MacMahon [Amer. J. Math. 35 (1913), 281-322}. Definamos el índice de una permutación a1 az ... a,. como la suma de los subíndices j en que a1 > a1+1, 1 ;s; j < n. Por ejemplo, el índice de 5 9 1 8 2 6 4 7 3 es 2 + 4 + 6 + 8 = 20. Por casualidad, en este caso, el índice es igual al número de inversiones. Si relacionamos las 24 permutaciones de {1, 2, 3, 4}, o sea

Permutaciones Índices Inversiones Permutaciones Índices Inversiones

1 2 3 4 o o 311 2 4 1 2 1 2 413 3 1 311 412 4 3 1 312 4 2 1 31211 4 3 3 1 3 412 3 2 312 4 11 4 4 1 412 3 2 2 3 411 2 2 4 1 41312 5 3 3 41211 5 5 211 3 4 1 1 4 11 2 3 1 3 211 413 4 2 411 312 4 4 2 311 4 2 2 41211 3 3 4 2 3 411 3 3 412 311 4 5 2 411 3 2 3 41311 2 3 5 2 41311 5 4 41:31211 6 6

18 Clasificación

vemos que el número de permutaciones que tienen un índice dado k, es igual al nú­mero de las que tienen k inversiones.

A primera vista este hecho podría parecer que es casi evidente, pero un examen más detenido lo hace muy misterioso, y no es evidente una sencilla demostración directa. MacMahon dio una ingeniosa demostración indirecta, como sigue: Sea J(a1 a2 ••• an) el índice de la permutación a1 a2 ••• a11, y sea

(14)

suma para todas las permutaciones de {1, 2, ... , n}, la función generatriz. De­seamos demostrar que H 11(z) = G,.(z). Para ello definiremos una correspondencia uniunívoca entre los n-tuplos (q1 , q2, • • • , q11) de enteros no negativos, por una parte, y los pares ordenados de los n-tuplos,

por otra, donde a1 ~ ••• a,. es una permutación de {1, 2, ... , n} y p 1 ~ p2 ~ ••• ~ ¿ p,. ¿ O. Esta correspondencia cumple la condición

ql + q2 + · · · + q,. = J(a¡ a2 ... a,.) + (p¡ + pz + · · · + p,.). (15)

La función generatriz L:zq,+q•+···Hn, suma para todos los n-tuplos enteros no negativos·(q1, q2 , ••• , q.,.), es Q,.(z) = 1/{1 - z)", y la función generatriz 2:zP•+P•+···+Pn,

suma para todos los n-tuplos enteros {p1, p2, ••• , p.,.) de forma que p 1 ¿ p2 ¿ ... ¿ ¿ p,. ¿ O, es

P,.(z) = 1/(1 - z)(l - z2) ... (1 - z"), (16)

como se mostraba en el ejercicio 15. Según (15), la correspondencia uniunivoca que estableceremos demostrará que Q11(z) = H 11(Z)P11(z), o sea,

H.,.(z) = Q,.(z) j P ,.(z) = G.,.(z).

La correspondencia deseada se define mediante un algoritmo de «clasificación>>. Partiendo de una lista vacía, y para k = 1, 2, ... , n (en este orden) se inserta q~; en la lista de la siguiente forma: la lista después de k - 1 pasos contiene p 1, p2 , ••• ,

p~-¡, donde p1 ¿ p2 ¿ ... ¿ p~:-¡, y suponiendo que se ha definido la permutación a1 ~ •.• a~<-1 sobre {n, n - 1, ... , n-k + 2}. Sea j el único entero tal que p1 > q~ ¿ P1+1 ; si q~; ¿ p1, hagamos j = O, y si h-1 > qk> hagamos j = k - 1. Ahora se inserta qk en la lista entre p1 y p1+¡ y el entero (n - k + 1) en la permu­tación entre a1 y a1+¡. Cuando se haya efectuado para todas las k, tendremos una permutación a1 ~ ••. a,. de {1, 2, ... , n} y n elementos {p1,p2, •• • ,p,.) en donde P1 ¿ Pz ¿ · · · ¿ p,. ¿ O; Y


Recommended