¿Cuál es la mejor manera de transformar una secuencia de 0 y 1 en otra secuencia que tenga el mayor número posible de 0 y exista una forma de revertir la nueva secuencia?

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).

No creo que sea posible (su ejemplo no funciona, como se señala en los comentarios).

Para que una transformación sea reversible, no debe haber ninguna pérdida de información. Puede ver la información en términos de entropía, que es básicamente el número de cadenas posibles que puede tener. Con n dígitos, cada 0 o 1, tiene 2 ^ n cadenas posibles (descritas como n “bits” de información). Para que una transformación sea reversible, cada una de esas 2 ^ n cadenas debe transformarse en algo único (es decir, la transformación debe ser “inyectiva” o “uno a uno”). Sin embargo, si todavía tiene n 0 o 1, eso significa que cada una de las cadenas posibles debe tener una cadena que se transforme en ella (es decir, la transformación es “sobreyectiva” o “sobre”).

Si se utilizan todas las cadenas posibles, no es posible minimizar el número de 1. Por cada cadena que se transforma en una cadena con menos 1, habrá una cadena que se transforma en una con más 1.

La única forma en que podría hacerlo sería alargar la cadena cuando la transforma. Eso significa que no necesitaría usar todas las cadenas posibles, por lo que podría omitir aquellas con muchos 1. Como un ejemplo extremo, podría interpretar una cadena como un número binario y luego escribir tantos 0, de esa manera nunca tendrá ningún 1.

Toma una secuencia
0,1,0,1,0,1,0,1,0,1, ……
Y multiplicar por uno negativo
0, -1,0, -1,0, -1,0, -1,0, -1, ……
¡El número más grande es cero y puedes multiplicar por uno negativo para obtener la secuencia original nuevamente!
Ta-Da!

More Interesting

¿Cuál es el enfoque más fácil para abordar los problemas de programación dinámica?

¿Cómo sabe la CPU que estamos usando el complemento de uno o el complemento de dos para representar números negativos?

¿Cuál es un ejemplo de un montón que requiere exactamente n * log (n) pasos? Sé que el límite superior de un montón es O (n log n), pero ¿cómo hago para mostrar un ejemplo donde requiera exactamente n * log (n) pasos?

Cómo ser bueno en matemáticas para la programación competitiva

¿Dónde puedo obtener un código para la entrada y salida rápida de enteros, enteros largos largos, flotante, doble, caracteres y cadenas para C?

¿Cuál es el problema del bandido multi-brazo? ¿Cuáles son algunas de sus implicaciones?

¿Cómo se puede determinar y mostrar la velocidad de un algoritmo (complejo) en notación Big O?

¿Cuáles son algunas ideas geniales para una presentación del día pi?

¿Cuáles son todas las aplicaciones conocidas de las técnicas de optimización de colonias de hormigas?

¿Cuáles son algunos ejemplos de principios teóricos?

Cómo hacer una forma generalizada a partir de un conjunto dado de expresiones (pasos / algoritmo de deseo)

Trabajo como desarrollador de software para una startup. Si sé que nuestro producto es falso, ¿debería cambiarme a otro trabajo?

¿Cuál es la banda de transición máxima permitida del filtro de paso bajo utilizado en el núcleo de reconstrucción para un CD con una frecuencia de voz máxima de 4 kHz?

¿Cómo explicaría las diferencias subyacentes entre álgebra lineal, establecer álgebra teórica y álgebra relacional (especialmente desde una perspectiva CS / base de datos)?

¿De qué sirve encontrar el complemento de uno y dos?