Comparación (ordenamiento)

El proceso de comparación permite ordenar la información escrita de forma estándar. Desde el punto de vista matemático, se trata de una operación que, dados dos datos de un mismo tipo, permite dilucidar cuál de ellos debe colocarse antes que el otro dentro de la secuencia de una sucesión, lo que posibilita formar listas de datos organizadas de acuerdo con un criterio predeterminado. Muchos sistemas de comparación se basan en un orden alfabético o numérico, o en extensiones y combinaciones de ambos tipos. La comparación es un procedimiento fundamental empleado implícitamente en la clasificación bibliográfica, en el proceso de crear catálogos de bibliotecas y para la compilación de obras de referencia.
Se diferencia de la clasificación en que las clases en sí no están necesariamente ordenadas. Sin embargo, incluso si el orden de las clases es irrelevante, sus identificadores pueden pertenecer a un conjunto ordenado, lo que permite utilizar algoritmos de ordenamiento para organizar los elementos por clases.
Formalmente, un método de comparación suele definir un orden total a partir de un conjunto de posibles identificadores, denominados claves de ordenación, lo que a su vez produce un preorden total a partir del conjunto de elementos de información (los elementos con el mismo identificador no se colocan en un orden definido).
Un procedimiento de comparación como el algoritmo de comparación Unicode define un orden mediante la comparación de dos cadenas de caracteres dadas y la decisión de cuál debe preceder a la otra. Cuando se define un orden de esta manera, se puede usar un algoritmo de ordenación para organizar cualquier número de elementos en una lista.
La principal ventaja de la comparación es que permite al usuario encontrar un elemento en una lista ordenada de forma rápida y sencilla, o confirmar su ausencia. En sistemas automáticos, esto se puede hacer usando búsqueda binaria o búsqueda por interpolación. La búsqueda manual se puede realizar mediante un procedimiento similar, aunque a menudo se realiza de forma inconsciente. Otras ventajas son que se puede encontrar fácilmente el primer o el último elemento de una lista (lo cual es muy útil en el caso de datos ordenados numéricamente), o elementos en un rango determinado (también muy útil en el caso de datos numéricos, y en el caso de los datos ordenados alfabéticamente, cuando solo se puede estar seguro de las primeras letras de un elemento o elementos buscados).
Ordenamiento
Orden numérico y cronológico
Las cadenas que representan números pueden ordenarse según los valores de los números que representan. Por ejemplo, "-4", "2.5", "10", "89" o "30,000". La aplicación pura de este método puede proporcionar solo una ordenación parcial de las cadenas, ya que diferentes cadenas pueden representar el mismo número (como con "2" y "2.0" o, cuando se usa notación científica, "2e3" y "2000").
Se puede adoptar un enfoque similar con cadenas que representan fechas u otros elementos que pueden ordenarse cronológicamente o de alguna otra forma natural.
Orden alfabético
El orden alfabético es la base de muchos sistemas de comparación donde los elementos de información se identifican mediante cadenas compuestas principalmente por letras de un alfabeto. La ordenación de las cadenas se basa en la existencia de un orden estándar para las letras del alfabeto en cuestión. El sistema no se limita a los alfabetos en sentido estricto; los idiomas que usan sistemas silábicos o alfasilábicos, como por ejemplo, el edioma cheroqui, pueden usar el mismo principio de ordenación siempre que exista un orden establecido para los símbolos utilizados.
Para decidir cuál de las dos cadenas objeto de comparación va primero en orden alfabético, se comparan inicialmente sus primeras letras. La cadena cuya primera letra aparece antes en el alfabeto va primero en orden alfabético. Si las primeras letras son iguales, se comparan las segundas, y así sucesivamente, hasta que se decide el orden. Si una cadena se queda sin letras para comparar, se considera que va primero; por ejemplo, "cart" va antes que "carhorse". El resultado de ordenar un conjunto de cadenas en orden alfabético es que las palabras con la misma primera letra se agrupan, y dentro de este grupo, las palabras con las mismas dos primeras letras se agrupan, y así sucesivamente.
Las letras mayúsculas suelen considerarse equivalentes a sus letras minúsculas correspondientes. Para tratamientos alternativos en sistemas informáticos, véase comparación automática más adelante.
Ciertas limitaciones, complicaciones y convenciones especiales pueden presentarse al usar el orden alfabético:
- Cuando las cadenas contienen espacios en blanco u otros separadores de palabras, se debe decidir si se ignoran estos separadores o se tratan como símbolos que preceden a todas las demás letras del alfabeto. Por ejemplo, si se utiliza el primer método, "car park" irá después de "carbon" y "carp" (como si se escribiera "carpark"), mientras que en el segundo método, "car park" irá antes de esas dos palabras. La primera regla se utiliza en muchos (pero no en todos) los diccionarios, la segunda se solía utilizar en las guías telefónicas (de modo que "Wilson, Jim K" aparece con otras personas llamadas "Wilson, Jim", y no después de "Wilson, Jimbo").
- Las abreviaturas pueden tratarse como si estuvieran escritas completas. Por ejemplo, los nombres que contienen "St." (abreviatura de la palabra inglesa "Saint (Santo)") a menudo se ordenan como si estuvieran escritos como "Saint". También existe una convención tradicional en inglés según la cual los apellidos que empiezan con "Mc" y "M" se enumeran como si esos prefijos se escribieran "Mac".
- Las cadenas que representan nombres personales suelen ordenarse por orden alfabético del apellido, incluso si el nombre de pila aparece primero. Por ejemplo, "Juan Hernández" y "Brian O'Leary" deben ordenarse como "Hernández, Juan" y "O'Leary, Brian", incluso si no se escriben así.
- Palabras iniciales muy comunes, como "The", en inglés suelen ignorarse para la ordenación. Por lo tanto, "The Shining" se ordenaría simplemente como "Shining" o "Shining, The".
- Cuando algunas cadenas contienen números (u otros caracteres no alfabéticos), existen varios enfoques. A veces, estos caracteres se tratan como si estuvieran antes o después de todas las letras del alfabeto. Otro método consiste en ordenar los números alfabéticamente como se escribirían: por ejemplo, el nombre de la película "1776" se ordenaría en inglés como si se escribiera "seventeen seventeen-six" y "24 Heures du Mans" como si se escribiera "vingt-quatre..." (veinticuatro en francés). Cuando se utilizan números u otros símbolos como formas gráficas especiales vinculadas a letras, como el uso del número "1337" para referirse a la escritura leet, o de la grafía "Se7en" para mencionar el título de la película "Seven", se pueden ordenar como si fueran esas letras.
- Los idiomas tienen diferentes convenciones para tratar los signos diacríticos y ciertas combinaciones de letras. Por ejemplo, en español, la letra "ñ" se considera una letra básica después de la "n", y las letras "ch" y "ll" se consideraban anteriormente como dígrafos (hasta 1994), de manera que se colocaban respectivamente después de la "c" y después de la "l", como cualquier otra letra representada por un único carácter. Posteriormente, se ha adoptado el criterio de tratar estos dígrafos como dos letras separadas a los efectos de ordenar alfabéticamente las palabras en las que aparecen. Se puede encontrar una lista de estas convenciones para varios idiomas en Convenciones específicas de los idiomas.
En varios idiomas, las reglas han cambiado con el paso del tiempo, por lo que los diccionarios antiguos pueden usar un orden diferente al de los modernos. Además, la comparación puede depender del uso. Por ejemplo, los diccionarios y las guías telefónicas editados en Alemania emplean enfoques diferentes.
Ordenamiento por raíces
Algunos diccionarios bilingüe del idioma árabe, como la obra A Dictionary of Modern Written Arabic de Hans Wehr, agrupan y ordenan las palabras árabes según sus raíces.[1] Por ejemplo, las palabras kitaba (كتابة 'escritura'), kitab (كتاب 'libro'), katib (كاتب 'escritor'), maktaba (مكتبة 'biblioteca'), maktab (مكتب 'oficina'), maktub (مكتوب 'destino' o 'escrito'), se agrupan bajo la raíz triliteral k-t-b (ك ت ب), que denota 'escritura'.[2]
Ordenamiento por radicales y trazos
- Véase también caracteres chinos y orden de los caracteres chinos
Otra forma de comparación es el ordenamiento por radicales y trazos', utilizado para sistemas de escritura no alfabéticos como los ideogramas del chino y los kanji del japonés, cuyos miles de símbolos desafían la ordenación por convención. En este sistema, se identifican los componentes comunes de los caracteres, que se denominan radicales en chino y en los sistemas logográficos derivados del chino. Los caracteres se agrupan por su radical principal y luego se ordenan según el número de trazos dentro de los radicales. Cuando no hay un radical obvio o hay más de uno, la convención determina cuál se utiliza para la comparación. Por ejemplo, el carácter chino 妈 (que significa "madre") se clasifica como un carácter de seis trazos bajo el radical principal de tres trazos 女 (que significa "mujer").
El sistema de radicales y trazos es complejo en comparación con un sistema alfabético, en el que hay pocos caracteres, todos inequívocos. La elección de qué componentes de un logograma comprenden radicales separados y cuál es el principal no es del todo clara. Como resultado, los lenguajes logográficos a menudo complementan la ordenación por radicales y trazos con la clasificación alfabética de una conversión fonética de los logogramas. Por ejemplo, la palabra kanji "Tokyo" (東京) puede ordenarse como si estuviera escrita en los caracteres japoneses del silabario hiragana como "to-u-ki-yo-u" (とうきょう), utilizando el orden de clasificación convencional para estos caracteres.
Además, los caracteres chinos también pueden ordenarse mediante la clasificación basada en trazos. En la Gran China, el uso de orden de trazos del apellido es una convención en algunos documentos oficiales donde los nombres de las personas se enumeran sin jerarquía.
Automatización
Cuando la información se almacena en sistemas digitales, la comparación puede convertirse en un proceso automatizado. Es entonces necesario establecer un algoritmo de comparación adecuado que permita ordenar la información de forma satisfactoria para la aplicación en cuestión. A menudo, el objetivo será lograr una ordenación alfabética o numérica que siga los criterios estándar descritos en las secciones anteriores. Sin embargo, no todos estos criterios son fáciles de automatizar.[3]
El tipo más simple de comparación automatizada se basa en los códigos numéricos de los símbolos en una codificación de caracteres, como ASCII (o cualquiera de sus subconjuntos, como Unicode). Los símbolos se ordenan según el orden numérico creciente de sus códigos, y este orden se extiende a cadenas de acuerdo con los principios básicos del orden alfabético (matemáticamente hablando, el orden lexicográfico). Por lo tanto, un programa de computadora podría tratar los caracteres a, b, C, d y $ como si estuvieran ordenados $, C, a, b, d (los códigos ASCII correspondientes son $ = 36, a = 97, b = 98, C = 67 y d = 100). Por lo tanto, las cadenas que empiezan por "C", "M" o "Z" se ordenarían antes que las cadenas con "a", "b", etc., en minúscula. Esto a veces se denomina "orden ASCIIbético". Esto se desvía del orden alfabético estándar, sobre todo debido a que las mayúsculas se ordenan antes que las minúsculas (y posiblemente, al tratamiento de los espacios y otros caracteres no alfabéticos). Por lo tanto, se suele aplicar con ciertas modificaciones, la más obvia de las cuales es la conversión de mayúsculas y minúsculas en mayúsculas, un uso habitual por razones históricas,[nota 1] anterior a la aparición de la comparación de valores ASCII.
En muchos algoritmos, la comparación no se basa en los códigos numéricos de los caracteres, sino en la «secuencia de comparación» (una secuencia en la que se supone que se encuentran los caracteres para la comparación), así como en otras reglas de ordenación apropiadas para la aplicación. Esto puede servir para aplicar las convenciones correctas de ordenación alfabética en el idioma en cuestión, gestionando adecuadamente letras con mayúsculas y minúsculas, signos diacríticos, dígrafos, abreviaturas específicas y otras particularidades, ctal omo se mencionó anteriormente en la sección dedicada al orden alfabético, y con más detalle, en el artículo orden alfabético. Estos algoritmos son potencialmente bastante complejos y posiblemente requieran realizar varias pasadas sobre un texto.[3]
No obstante, los problemas siguen siendo comunes cuando el algoritmo debe abarcar más de un idioma. Por ejemplo, en los diccionarios de alemán, la palabra "ökonomisch" se encuentra entre "offenbar" y "olfaktorisch", mientras que los diccionarios turcos tratan "o" y "ö" como letras diferentes, colocando "oyun" antes de "öbür".
Una rutina estándar para cotejar cualquier conjunto de cadenas compuestas por cualquier símbolo estándar del tipo Unicode es el algoritmo de comparación Unicode. Este algoritmo puede adaptarse para utilizar la secuencia de comparación adecuada para un idioma determinado, adaptando su tabla predeterminada. Varias de estas adaptaciones se recopilan en CLDR.
Claves de ordenación
En algunas aplicaciones, las cadenas mediante las que se cotejan los elementos pueden diferir de los identificadores que se muestran. Por ejemplo, "The Shining" podría ser ordenado como "Shining, The", pero aun así podría desearse mostrarlo como "The Shining". En este caso, se pueden almacenar dos conjuntos de cadenas: uno para la visualización y otro para la comparación. Las cadenas utilizadas de esta manera para la ordenación se denominan "claves de ordenación".
Problemática de los números intercalados con el texto
A veces, se desea ordenar texto con números incrustados utilizando el orden numérico correcto. Por ejemplo, "Figura 7b" va antes de "Figura 11a", aunque "7" va después de "1" en Unicode. Esto se puede extender a los números romanos. Este comportamiento no es particularmente difícil de lograr siempre que solo se ordenen números enteros, aunque puede ralentizar considerablemente la ordenación. Por ejemplo, Microsoft Windows hace esto al ordenar los nombre de archivo.
Ordenar decimales correctamente es un poco más difícil, ya que las diferentes configuraciones regionales utilizan símbolos diferentes para el separador decimal, y a veces el mismo carácter usado como punto decimal también se usa como separador, por ejemplo, "Sección 3.2.5". No existe una respuesta universal para ordenar estas cadenas; y las reglas dependen de la aplicación.
Etiquetado de elementos ordenados
En algunos contextos, los números y las letras se utilizan no tanto como base para establecer un orden, sino como medio para etiquetar elementos ya ordenados. Por ejemplo, las páginas, secciones, capítulos, etc., así como los elementos de las listas, se numeran frecuentemente de esta manera. Las series de etiquetado que pueden utilizarse incluyen cifras arábigas (1, 2, 3, ...), numeración romana (I, II, III, ... o i, ii, iii, ...) o letras (A, B, C, ... o a, b, c, ...). Un método alternativo para indicar elementos de una lista, sin numerarlos, es separarlos empleando guiones o círculos).
Cuando se utilizan letras de un alfabeto para este propósito de enumeración, existen ciertas convenciones específicas del lenguaje respecto a qué letras se utilizan. Por ejemplo, se omiten las letras rusas, Ъ y Ь (que en la escritura solo se usan para modificar la letra consonante precedente), y generalmente también Ы, Й y Ё. Además, en muchos lenguajes que usan el alfabeto latino extendido, las letras con signos diacríticos| no suelen usarse en la enumeración.
Véase también
Notas
- ↑ Históricamente, las computadoras sólo manejaban texto en mayúsculas (esto se remonta a las convenciones de la telegrafía).
Referencias
- ↑ Abu-Haidar, J. A. (1983). «Review of A Dictionary of Modern Written Arabic (Arabic-English)». Bulletin of the School of Oriental and African Studies, University of London 46 (2): 351-353. ISSN 0041-977X. JSTOR 615409. doi:10.1017/S0041977X00079040.
- ↑ «Hans Wehr Arabic-English Dictionary». ejtaal.net. Consultado el 4 de junio de 2023.
- ↑ a b M Programming: A Comprehensive Guide, Richard F. Walters, Digital Press, 1997
Enlaces externos
- Algoritmo de comparación Unicode: Estándar Técnico Unicode n.° 10
- comparación de los nombres de los Estados miembros de las Naciones Unidas (enlace roto disponible en este archivo).
- comparación tipográfica para varios idiomas, como se propone en el módulo Lista de CSSs.
- Gráficos de comparación: Gráficos que muestran los órdenes de ordenación específicos de cada idioma en varios sistemas operativos y sistemas de gestión de bases de datos.
- Explorador de configuraciones regionales de ICU (enlace roto disponible en este archivo).: Demostración en línea de ordenación en diferentes idiomas que utiliza Unicode Collation Algorithm con International Components for Unicode.