Supongamos que quiero comunicar a un amigo un número entero entre 1 y 1000. Para pasar este mensaje utilizo un $k$ -vector cuyas entradas pueden establecerse en $0$ o $1$ . Así, por ejemplo, si $k=3$ una forma natural de expresar el número $7$ es $\langle 1,1,0\rangle$ donde esto corresponde a la representación binaria $2^2+2^1+2^0$ para $7$ .
Sin embargo, ¡hay una arruga! Antes de que mi amigo pueda ver mi vector, debe pasarlo por una función $f_i$ que es la identidad en todos los componentes que no son iguales a $i$ y que establece el $i$ -a componente a $1$ . Por ejemplo, $f_1(\langle 1,1,0\rangle) = \langle 1,1,0\rangle$ pero $f_3(\langle 1,1,0\rangle) = \langle 1,1,1\rangle$ .
Es fundamental que el valor de $i$ es desconocido tanto para mí como para mi amigo. El desafío es:
¿Cuál es el menor $k$ para que mi amigo pueda entender siempre mi número?
Mi proceso de pensamiento:
Está claro que si no hubiera ningún error $k=10$ sería suficiente. Si simplemente quisiera que mi amigo supiera si el mensaje fue cambiado $k=11$ sería suficiente, ya que estaría de acuerdo en representar todos los números utilizando un $1$ -representación uniforme (es decir, una $k$ -binario con un número par de $1$ s) y si mi amigo recibiera un número impar conocería a uno de los $1$ s se habrían modificado.
Por supuesto que debe ser capaz de recuperar un mensaje confuso. Por lo tanto, todos los $1$ -incluso vectores que podrían haber "degenerado" plausiblemente en un $1$ -El vector impar debe considerarse equivalente. Por lo tanto, creo que se puede reducir el problema a problemas más pequeños. Sea $A^k_j$ sea el conjunto de todos los $k$ -vectores con exactamente $j$ los. Para todos incluso $j<k$ ¿Cuál es el mayor subconjunto $S_j^k\subset A_j^k$ de manera que no haya dos elementos de $S_j^k$ puede degenerar en el mismo vector en $A_{j+1}^k$ . Si resolvemos esto, entonces podemos sumar estas cardinalidades máximas sobre todos los pares $j$ y obtener el resultado.
Sin embargo, ¡no está claro cómo terminar! Soy consciente de que esto parece vagamente relacionado con los códigos de corrección de errores y la distancia de Hamming - creo que el problema reducido puede reducirse plausiblemente a una pregunta sobre subconjuntos del grupo de permutación. Pero no consigo entenderlo...
Editar : Claramente puedes dejar $k=22$ y sólo repite su mensaje dos veces, restringiendo el mensaje a ser 1-par. Este es un límite superior muy burdo. Estoy seguro de que se puede hacer mucho mejor que esto...
Actualización: Actualmente se puede llegar a un precio tan bajo como $k=15$
Puedo hacer $k=15$ como sigue: Sea $\mathbf{v}$ sea su original $k$ -vectorial. Primero se codifica el mensaje como un $1$ -incluso el mensaje con la primera $11$ dígitos. Si el mensaje no está corrompido, tu amigo lo sabrá y habrás terminado. Si está corrompido, el resto de $4$ dígale a su amigo el valor de $\sum_{i=1}^{11} v_i \cdot i \ (\text{mod} 10),$ a partir de la cual se puede inferir qué dígito fue volteado.
0 votos
También hay una forma obvia de conseguir $k = 20$ simplemente duplica cada bit y envíalo (o lo que es lo mismo, envía la cadena dos veces).
0 votos
El problema es que no sabes qué número, el primero o el segundo, es el correcto si no coinciden. Por eso escribí que $22$ es un límite superior, porque entonces se pueden codificar de forma que se sepa claramente cuál degeneró.
0 votos
No de la forma en que lo has escrito arriba. Si los dos números difieren, debe ser exactamente en una posición -- y debe ser el caso de que esto se convirtió de un 0 en un 1. De lo contrario, las dos copias son iguales y ambos son el valor original.
0 votos
Ah, ¡buena observación! Por cierto, creo que puedo llegar a 15, ver nueva edición.