Considere el siguiente problema de decisión. Deje y deje que sea adecuado enumeración de aquellos subconjuntos de que tienen como máximo elementos.
Entrada de membresía del subconjunto trimestral : tupla de enteros no negativos representados en binario Pregunta: ¿ es ?
Al elegir una enumeración "agradable" , ¿puede la Membresía de un Subconjunto de Cuartos ser decidida por una máquina de Turing determinista que utiliza no más de bits de espacio de trabajo, para todos los suficientemente grandes ?
Discusión
Deje . Es fácil enumerar todos los subconjuntos de, como máximo, elementos elegidos de mediante el seguimiento de índices de tamaño bits cada uno. (Consulte también la discusión en la sección 7.2.1.3 de TAOCP de Knuth.) Cuando es constante, esto es solo bits. Sin embargo, si dejamos para algún constante , entonces dichos esquemas de enumeración usan el espacio . También se puede usar un vector característico de n bits junto con una verificación del número de bits establecidos. Estoy interesado en esquemas que superan n bits.k n k ⌈ log n ⌉ k O ( log n ) kc ≤ 1 / 4 Ω ( n log n ) n n
Una pregunta estrechamente relacionada es entonces:
Para positivo que satisface la desigualdad , ¿hay un código que represente subconjuntos de a lo sumo elementos elegidos de que use bits para alguna constante , y puede ser decodificado de manera eficiente?c log ( e ( 1c n n d n d < 1
Tenga en cuenta que para suficientemente grande , y dado que cuando entonces la información teóricamente se deduce que se lograría con un código perfecto. (Esto es menos de si .) Por lo tanto, estoy buscando un código razonablemente limpio que pueda manipularse sin utilizar mucho espacio.k ∑ i = 0 ( nlog ( n+k-1
Para obtener un código perfecto, uno podría elegir alguna enumeración de los subconjuntos, ejecutar un índice a través de la enumeración en orden creciente y luego obtener cada combinación decodificando el índice. Sin embargo, decodificar dicho código cuando parece requerir el uso de al menos bits de espacio para las enumeraciones que he visto, como a través de vectores característicos ordenados aumentando el peso de Hamming y luego lexicográficamente o mediante los códigos Gray.n
Puede haber una manera de hacer esto con espacio, pero creo que es más probable que sea factible. ( 1 - ε ) n
Tenga en cuenta que dado que , el límite inferior teórico de la información ya es bits, por lo que realmente se trata de si se puede lograr para algunos . Un código que sea lo suficientemente bueno (pero no necesariamente perfecto) parecería ser suficiente para responder a mi pregunta afirmativamente. También podría darse el caso de que la Membresía de un subconjunto de trimestres se pueda decidir eficientemente sin construir explícitamente un código. Por otro lado, tal enumeración puede no existir: por ejemplo, cada secuencia de enumeraciones para valores deΩ ( n ) ( 1 - ε ) n ε > 0 n ( 1 - ε ) n podría ser intrínsecamente no uniforme, o podría ser el caso de que cualquier límite de bit deba romperse infinitamente a menudo.
fuente
Respuestas:
Asumo por la discusión que no está realmente interesado en el espacio de trabajo como se afirma, sino en el espacio total, incluido el tamaño de la entrada. (De lo contrario, el esquema de codificación trivial de bits puede decodificarse en espacio logarítmico).n
Sea una constante suficientemente grande y considere el siguiente esquema de codificación para . Divida en bloques , , de tamaño cada uno, y ponga . La codificación de consiste en la secuencia de los siguientes números (escritos en binario) para cada :X ⊆ { 0 , ... , n - 1 } { 0 , ... , n - 1 } k B u u < k n / k Xk X⊆{0,…,n−1} {0,…,n−1} k Bu u<k n/k X u < kXu=X∩Bu X u<k
el tamaño;su=|Xu|
el número correspondiente a en el sistema de números combinatorios para los subconjuntos de tamaño .s uXu su
En cuanto al tamaño de la codificación, suponga . Los números toman bits, que serán insignificantes. Tenemos para al menos de las 's, en cuyo caso la codificación de toma aproximadamente bits; los restantes toman como máximo bits cada uno. El total es como máximo bits.s u|X|≤n/4 su s u ≤ n / ( 3 k ) k / 4 uO(klog(n/k)) su≤n/(3k) k/4 u H ( 1 / 3 ) nXu H(1/3)nk≈0.92n/k n / k 0 . 98 nXu n/k 0.98n
La decodificación de cantidades a decidir qué bloque entra en, y luego averiguar ; esto último se puede hacer fácilmente en el espacio , y se puede reutilizar el espacio ocupado por las codificaciones de los bloques restantes (siempre que el espacio total sea al menos , lo cual está bien para lo suficientemente grande).X u n / k + Oi Xu 2 n / k kn/k+O(logn) 2n/k k
Un mejor análisis muestra que este esquema logra el espacio esencialmente : let . Como , el promedio de sobre es como máximo . La codificación de toma aproximadamente bits. Ahora, la función de entropía es cóncava, por lo tanto, el promedio de sobre es como máximo , y el espacio total es . Esto es óptimo hasta el .H(1/4)n≈0.812n | X | / N ≤ 1 / 4pu=su/(n/k) |X|/n≤1/4 u < k 1 / 4 X u H ( p u ) n / k H ( p u ) u < k H ( 1pu u<k 1/4 Xu H(pu)n/k H(pu) u<k H ( 1 / 4 ) n + O ( log n ) O ( log n )H(1/4) H(1/4)n+O(logn) O(logn)
Por supuesto, no hay nada especial sobre . El mismo argumento muestra que para cualquier constante , hay un esquema de codificación para -size subconjuntos de que toma bits, y se pueden decodificar en el lugar. Hasta cierto punto, incluso puede usarse para subconjuntos de tamaño donde , tomando un número no constante de bloques ( o menos), pero luego la sobrecarga de vuelve más pronunciada y supera el término principal cuando cae por debajo de aproximadamente .1/4 ≤ c n { 0 , ... , n - 1 } H0<c<1/2 ≤cn {0,…,n−1} ≤ s ( n ) s ( n ) « n k ≥ 2 /H(c)n+O(logn) ≤s(n) s(n)≪n O ( k logk≥2/H(s(n)/n) s ( n ) √O(klog(n/k)) s(n) n−−√
fuente