Un código superpuesto como Zatocoding es un tipo de código hash que era popular en los sistemas marginales de tarjetas perforadas .
Muchos nombres, algunos de ellos registrados, se han utilizado para los sistemas de tarjetas perforadas marginales: tarjetas con muescas en el borde, tarjetas ranuradas, EZ Sort, Zatocards, McBee, McBee Keysort, Flexisort, Velom, Rocket, etc. El centro de cada tarjeta contenía la información relevante, generalmente el nombre y el autor de un libro, un artículo de investigación o un artículo de revista en un estante cercano; y una lista de temas y palabras clave. Algunos juegos de tarjetas contenían toda la información requerida por el usuario en la propia tarjeta, escrita a mano, mecanografiada o en microfilm ( tarjeta de apertura ). Cada tarjeta en una pila tenía el mismo conjunto de agujeros preperforados. El usuario encontraría las tarjetas particulares relevantes para una búsqueda alineando los agujeros en el juego de tarjetas (usando un soporte de tarjetas o una bandeja de tarjetas), insertando una o más varillas similares a agujas de tejer a lo largo de la pila, de modo que las tarjetas deseadas (que habían sido muescadas o cortadas) cayeran de las tarjetas irrelevantes en la colección (que se dejaron sin muescas), que permanecieron en la(s) aguja(s). Un usuario podría repetir esta selección muchas veces para formar una consulta de búsqueda booleana compleja . Una tarjeta que fuera relevante para 2 o más sujetos tendría los espacios para cada uno de esos sujetos recortados, de modo que esa tarjeta se eliminaría cuando se seleccionara uno u otro o ambos sujetos. Los sistemas de codificación de "código superpuesto", como Zatocoding, ahorraban espacio al ingresar varios o todos los sujetos en el mismo campo; un "código superpuesto" de este tipo almacena mucha más información en menos espacio, pero a costa de selecciones "falsas" ocasionales. [1]
Una vez que se tiene una colección de fichas, una por libro, artículo de investigación o artículo de revista en una biblioteca, con una lista de palabras clave (temas) discutidos en un libro en particular escrita en la ficha de ese libro, la "forma obvia" de codificar esos temas es contar el número total de temas utilizados en toda la colección R, hacer una fila de agujeros R cerca de la parte superior de cada ficha y, para cada tema realmente discutido en un libro en particular, cortar una ranura en el agujero correspondiente a ese tema en la ficha correspondiente a ese libro. [2] Naturalmente, esto también requiere una lista separada de cada tema utilizado en la colección que indique qué agujero se perfora para cada tema. Desafortunadamente, puede haber miles de temas distintos en la colección y es poco práctico perforar miles de agujeros en cada ficha. Si bien puede parecer imposible usar menos de 1 agujero por tema, los sistemas de códigos superpuestos pueden resolver este problema.
El sistema de recuperación de información Zatocoding fue desarrollado por Calvin Mooers en 1947. [3]
Calvin Mooers inventó Zatocoding en el MIT, un sistema mecánico de recuperación de información basado en códigos superpuestos, y formó la Compañía Zator en 1947 para comercializar sus aplicaciones. [4] El código superpuesto particular utilizado en ese sistema se llama Zatocoding , mientras que el sistema de recuperación de información de tarjetas perforadas marginales en su conjunto se llama " Zator ". [5]
La configuración de un código superpuesto para una biblioteca en particular se realiza de la siguiente manera:
Más tarde, cuando necesitamos encontrar libros sobre algún tema en particular, buscamos ese tema en nuestra lista de todos los temas R, encontramos el patrón de ranuras correspondiente de n ranuras y colocamos n agujas a través de toda la pila en ese patrón. Todas las cartas que han sido cortadas con ese patrón se caerán. Es posible que también caigan algunas otras cartas no deseadas: cartas que tienen varios temas cuyos patrones de agujeros se superponen de tal manera que imitan el patrón deseado. La probabilidad F de que alguna carta no deseada con v ranuras cortadas caiga cuando seleccionamos algún patrón de n agujas es aproximadamente . La mayoría de los sistemas tienen un N lo suficientemente grande y r lo suficientemente pequeño como para que, v < N/2 (es decir, la carta está perforada menos de la mitad), por lo que la probabilidad de que caiga una carta no deseada es menor que . [2]
Hay varias formas diferentes de elegir qué agujeros se realizarán para cada sujeto.
(Se desarrollaron varias variaciones de Zatocoding. Bourne describe una variante "para sistemas de recuperación más nuevos que requieren un alto rendimiento del sistema de codificación superpuesto", [6] utilizando un enfoque que Mooers publicó en 1959. [7] )
La configuración de un Zatocode para una lista particular de sujetos R se realiza de la siguiente manera: [2]
Un Zatocode requiere un libro de códigos que enumere todos los temas y un código de notch generado aleatoriamente asociado con cada uno. Otros códigos superpuestos "directos" tienen una función hash fija para transformar las letras de (una ortografía de) un tema en un código de notch. Tales códigos requieren un libro de códigos mucho más corto que describa la traducción de las letras de una palabra al código de notch correspondiente y, en principio, pueden agregar fácilmente nuevos temas sin cambiar el libro de códigos. [5]
Un filtro Bloom puede considerarse un tipo de código superpuesto. [8]