En matemáticas y ciencias de la computación , el predicado BIT , a veces escrito como , es un predicado que prueba si el bit n.º del número (empezando por el dígito menos significativo ) es 1, cuando se escribe como un número binario . Sus aplicaciones matemáticas incluyen el modelado de la relación de pertenencia de conjuntos finitos hereditarios y la definición de la relación de adyacencia del grafo de Rado . En ciencias de la computación, se utiliza para representaciones eficientes de estructuras de datos de conjuntos utilizando vectores de bits , en la definición del problema de recuperación de información privada a partir de la complejidad de la comunicación y en la teoría de la complejidad descriptiva para formular descripciones lógicas de clases de complejidad .
Historia
El predicado BIT fue introducido por primera vez en 1937 por Wilhelm Ackermann para definir la codificación de Ackermann , que codifica conjuntos finitos hereditarios como números naturales . [1] [2] El predicado BIT se puede utilizar para realizar pruebas de pertenencia para los conjuntos codificados: es verdadero si y solo si el conjunto codificado por es un miembro del conjunto codificado por . [1]
Ackermann denotó el predicado como , usando una fuente Fraktur para distinguirlo de la notación que usó para la pertenencia a un conjunto (abreviatura de " es un elemento de " en alemán). [1] La notación , y el nombre "el predicado BIT", provienen del trabajo de Ronald Fagin y Neil Immerman , quienes aplicaron este predicado en la teoría de la complejidad computacional como una forma de codificar y decodificar información a fines de la década de 1980 y principios de la de 1990. [a]
Descripción e implementación
La representación binaria de un número es una expresión para como una suma de potencias distintas de dos , donde cada bit en esta expresión es 0 o 1. Se escribe comúnmente en notación binaria como simplemente la secuencia de estos bits, . Dada esta expansión para , el predicado BIT se define como igual a . Se puede calcular a partir de la fórmula donde es la función base y mod es la función módulo . [6] El predicado BIT es una función recursiva primitiva . [2] [7] Como una relación binaria (que produce valores verdaderos y falsos en lugar de 1 y 0 respectivamente), el predicado BIT es asimétrico : no existen dos números y para los cuales tanto y sean verdaderos. [b]
En lenguajes de programación como C , C++ , Java o Python que proporcionan un operador de desplazamiento a la derecha >> y un operador booleano y bit & a bit , el predicado BIT se puede implementar mediante la expresión
. La subexpresión desplaza los bits en la representación binaria de de modo que el bit se desplaza a la posición 0, y la subexpresión enmascara los bits restantes, dejando solo el bit en la posición 0. Al igual que con la fórmula aritmética modular anterior, el valor de la expresión es 1 o 0, respectivamente, ya que el valor de es verdadero o falso. [9](i>>j)&1i>>j&1
Aplicaciones
Establecer estructuras de datos
Para un conjunto representado como una matriz de bits , el predicado BIT se puede utilizar para probar la pertenencia al conjunto. Por ejemplo, los subconjuntos de los números enteros no negativos se pueden representar mediante una matriz de bits con un uno en la posición cuando es un miembro del subconjunto y un cero en esa posición cuando no es un miembro. Cuando dicha matriz de bits se interpreta como un número binario, el conjunto para distinct se representa como el número binario . Si es un conjunto, representado de esta manera, y es un número que puede o no ser un elemento de , entonces devuelve un valor distinto de cero cuando es un miembro y cero cuando no lo es. [c]
La misma técnica puede utilizarse para probar la pertenencia a subconjuntos de cualquier secuencia de valores distintos, codificada utilizando potencias de dos cuyos exponentes son las posiciones de los elementos en esta secuencia, en lugar de sus valores. Por ejemplo, en el marco de colecciones de Java , se utiliza esta técnica para implementar una estructura de datos de conjunto para tipos enumerados . [11] La codificación de Ackermann de los conjuntos finitos hereditarios es un ejemplo de esta técnica, para la secuencia generada recursivamente de conjuntos finitos hereditarios. [d]java.util.EnumSet
Recuperación de información privada
En el estudio matemático de la seguridad informática , el problema de recuperación de información privada se puede modelar como uno en el que un cliente, que se comunica con una colección de servidores que almacenan un número binario , desea determinar el resultado de un predicado BIT sin divulgar el valor de a los servidores. Chor et al. (1998) describen un método para replicar entre dos servidores de tal manera que el cliente puede resolver el problema de recuperación de información privada utilizando una cantidad sustancialmente menor de comunicación de la que sería necesaria para recuperar el valor completo de . [13]
Complejidad y lógica
El predicado BIT se examina a menudo en el contexto de la lógica de primer orden , donde los sistemas de lógica resultan de añadir el predicado BIT a la lógica de primer orden. En la complejidad descriptiva , la clase de complejidad FO describe la clase de lenguajes formales que se pueden describir mediante una fórmula en lógica de primer orden con una operación de comparación sobre variables totalmente ordenadas (interpretadas como los índices de caracteres en una cadena ) y con predicados que prueban si esta cadena tiene un carácter dado en un índice numérico dado. Una fórmula en esta lógica define un lenguaje que consiste en sus modelos finitos . [e] Sin embargo, con estas operaciones, solo se puede describir una clase muy restringida de lenguajes, los lenguajes regulares sin estrellas . [15] Añadir el predicado BIT al repertorio de operaciones utilizadas en estas fórmulas lógicas da como resultado una clase de complejidad más robusta, FO[BIT] , lo que significa que es menos sensible a variaciones menores en su definición. [f]
La clase FO[BIT] es la misma que la clase FO[+,×] , de lógica de primer orden con predicados de adición y multiplicación. [14] También es la misma que la clase de complejidad de circuito DLOGTIME - uniforme AC 0 . Aquí, AC 0 describe los problemas que pueden ser calculados por circuitos de puertas AND y puertas OR con tamaño polinomial, altura acotada y abanico de salida ilimitado. "Uniforme" significa que los circuitos de todos los tamaños de problemas deben ser descritos por un único algoritmo. Más específicamente, debe ser posible indexar las puertas de cada circuito por números de tal manera que el tipo de cada puerta y la adyacencia entre dos puertas cualesquiera puedan ser calculadas por un algoritmo determinista cuyo tiempo sea logarítmico en el tamaño del circuito (DLOGTIME). [6] [16]
Construcción del gráfico de Rado

En 1964, el matemático germano-británico Richard Rado utilizó el predicado BIT para construir el grafo infinito de Rado . La construcción de Rado es simplemente la simetrización de la construcción de Ackermann de 1937 de los conjuntos finitos hereditarios a partir del predicado BIT: dos vértices numerados y son adyacentes en el grafo de Rado cuando o es distinto de cero. [17]
El gráfico resultante tiene muchas propiedades importantes: contiene cada gráfico finito no dirigido como un subgráfico inducido , y cualquier isomorfismo de sus subgráficos inducidos puede extenderse a una simetría de todo el gráfico. [8]
Notas
- ^ Un uso temprano del nombre de predicado BIT es el de Immerman (1989). [3] En un artículo de 1990, David Mix Barrington atribuye la notación y su aplicación en la complejidad descriptiva a Fagin; Barrington le atribuye a Fagin el mérito de haber inspirado a Immerman a trabajar en esta área. [4] Sin embargo, Ajtai y Fagin (1990) hacen referencia a la "relación BIT de Immerman ". [5]
- ^ Para la asimetría de la relación de pertenencia al conjunto que codifica el predicado BIT, véase Cameron (2001). [8]
- ^ Arndt (2011). Arndt implementa el predicado BIT con
S&(1<<i)en lugar de(S>>i)&1, pero el resultado es cero o distinto de cero por igual para ambas implementaciones. [10] - ^ Tarau (2010). La implementación de Tarau de la prueba de pertenencia (como
inSeten la sección "Derivación de operaciones de conjuntos") equivale a probar siS&(1<<i) == 1<<ien lugar de(S>>i)&1, similar a lo que hizo Arndt (2011). [12] - ^ En algunas fuentes esta clase se escribe FO[<] , para indicar la operación de comparación; sin embargo, al definir clases de complejidad a partir de la lógica de esta manera, la operación de comparación no se puede omitir, [14] por lo que no es necesario indicar que está presente.
- ^ Immerman (1999), p. 13: "Agregar BIT... convierte el conjunto de consultas booleanas definibles de primer orden en una clase de complejidad más robusta".
Referencias
- ^ abc Ackermann, Wilhelm (1937). "Die Widerspruchsfreiheit der allgemeinen Mengenlehre". Mathematische Annalen (en alemán). 114 : 305–315. doi :10.1007/bf01594179. S2CID 120576556 . Consultado el 9 de enero de 2012 .
- ^ ab Kirby, Laurence (2009). "Teoría de conjuntos finitarios". Notre Dame Journal of Formal Logic . 50 (3): 227–244. doi : 10.1215/00294527-2009-009 .
- ^ Immerman, Neil (1989). "Expresibilidad y complejidad paralela". Revista SIAM de Computación . 18 (3): 625–638. doi :10.1137/0218043. MR 0996841.
- ^ Mix Barrington, David A. (1990). "Extensiones de una idea de McNaughton". Teoría de sistemas matemáticos . 23 (3): 147–164. doi :10.1007/BF02090772. MR 1062347. S2CID 198177167.
- ^ Ajtai, Miklós ; Fagin, Ronald (1990). "La alcanzabilidad es más difícil para grafos finitos dirigidos que para los no dirigidos". The Journal of Symbolic Logic . 55 (1): 113–150. doi :10.2307/2274958. JSTOR 2274958. MR 1043548. S2CID 14177866.
- ^ ab Lindell, Steven (1992). "Una caracterización puramente lógica de la uniformidad de circuitos" (PDF) . Actas de la Séptima Conferencia Anual de Teoría de la Estructura en la Complejidad, Boston, Massachusetts, EE. UU., 22-25 de junio de 1992. IEEE Computer Society. págs. 185–192. doi :10.1109/SCT.1992.215393. Archivado desde el original el 2017-08-30 . Consultado el 2023-07-04 .
{{cite conference}}: CS1 maint: bot: estado de URL original desconocido ( enlace ) - ^ Rautenberg, Wolfgang (2010). Una introducción concisa a la lógica matemática (3.ª ed.). Nueva York : Springer Science+Business Media . pág. 261. doi :10.1007/978-1-4419-1221-3. ISBN. 978-1-4419-1220-6.
- ^ ab Cameron, Peter J. (2001). "El gráfico aleatorio revisitado" (PDF) . Congreso Europeo de Matemáticas , vol. I (Barcelona, 2000) . Progr. Math. Vol. 201. Basilea: Birkhäuser. págs. 267–274. doi :10.1007/978-3-0348-8268-2_15. MR 1905324.
- ^ Venugopal, KR (1997). Dominando C++. Tata McGraw-Hill Publishing Company. pág. 123. ISBN 9780074634547..
- ^ Arndt, Jörg (2011). "1.9.2: Probar si un elemento está en un conjunto dado". Matters Computational: Ideas, Algorithms, Source Code (PDF) . Springer. pág. 24.
- ^ Bloch, Joshua (2008). "Elemento 32: Utilizar enumSet en lugar de campos de bits". Effective Java (2.ª ed.). Addison-Wesley Professional. págs. 159-160. ISBN 9780132778046.
- ^ Tarau, Paul (2010). "Una descripción formal unificada de los tipos de datos aritméticos y teóricos de conjuntos". En Autexier, Serge; Calmet, Jacques; Delahaye, David; Ion, Patrick DF; Rideau, Laurence; Rioboo, Renaud; Sexton, Alan P. (eds.). Intelligent Computer Mathematics, 10.ª Conferencia Internacional, AISC 2010, 17.º Simposio, Calculemus 2010 y 9.ª Conferencia Internacional, MKM 2010, París, Francia, 5-10 de julio de 2010, Actas . Lecture Notes in Computer Science. Vol. 6167. Springer. págs. 247-261. arXiv : 1006.5768 . doi :10.1007/978-3-642-14128-7_21.
- ^ Chor, Benny ; Kushilevitz, Eyal; Goldreich, Oded ; Sudan, Madhu (1998). "Recuperación de información privada". Revista de la ACM . 45 (6): 965–981. doi : 10.1145/293347.293350 . S2CID 544823..
- ^ ab Immerman, Neil (1999). Complejidad descriptiva . Nueva York: Springer-Verlag. págs. 13-16. ISBN 0-387-98600-6.
- ^ Perrin, Dominique ; Pin, Jean-Éric (1986). "Lógica de primer orden y conjuntos sin estrellas". Revista de Ciencias de la Computación y de Sistemas . 32 (3): 393–406. doi : 10.1016/0022-0000(86)90037-1 . MR 0858236.
- ^ Mix Barrington, David A.; Immerman, Neil ; Straubing, Howard (1990). "Sobre la uniformidad dentro de NC 1 ". Revista de Ciencias de la Computación y de Sistemas . 41 (3): 274–306. doi :10.1016/0022-0000(90)90022-D. MR 1079468.
- ^ Rado, Richard (1964). "Gráficos universales y funciones universales" (PDF) . Acta Arith . 9 (4): 331–340. doi : 10.4064/aa-9-4-331-340 ..