Si la longitud de la cadena no tiene que permanecer igual, entonces podemos crear números arbitrariamente grandes de ceros en nuestra codificación. Por ejemplo, reemplace cualquier 0 en la cadena de entrada por 1000 ceros. La asignación inversa es solo para reemplazar cualquier bloque de ceros de 1000 por un solo cero. Pero no hay razón para detenerse allí, podríamos usar un millón o mil millones de ceros en su lugar.
Si la longitud de la cadena debe permanecer igual, entonces no es posible hacerlo mejor que la función de identidad. (El ejemplo que da no parece reversible, ya que 010010 también es una cadena inicial válida). Suponga que crea una tabla que enumera todas las secuencias de entrada 2 ^ N a la izquierda y todas las secuencias de salida 2 ^ N a la derecha. Si el mapeo es reversible, cada secuencia aparece a cada lado de la tabla exactamente una vez. Por lo tanto, los lados izquierdo y derecho tienen exactamente el mismo número de ceros. Cualquier mapeo que reduzca el número de ceros en algunas cadenas debe aumentar el número de ceros en otras cadenas (si la longitud debe permanecer constante).
- Encontré los términos suma de verificación, MD5, SHA, etc. ¿Qué son la suma de verificación, MD5, SHA y la firma de código? ¿Cómo están relacionados y cómo funcionan?
- ¿Por qué la programación de Erlang aún no ha penetrado en el plan de estudios de ciencias de la computación como cabría esperar?
- ¿Las matemáticas detienen a un programador o son las restricciones del lenguaje, o posiblemente un problema de eficiencia?
- ¿Qué es el análisis p delta?
- Cómo implementar esto en Python: dada una matriz, encuentre tres números a, byc de modo que a ^ 2 + b ^ 2 = c ^ 2