Simplemente hazlo en múltiples partes dividiendo en n partes. Suponiendo que su cadena es A, n partes pueden ser A1, A2 … Un
Ahora reverso de A = Rev (A) = Rev (A1 + A2 + A3 + A4 +… An) = Rev (An) +… .Rev (A2) + Rev (A1)
Leer A1, invertirlo y volver a escribirlo en algún archivo. Haz lo mismo para todos los trozos.
Al final, agréguelos a todos en orden inverso.
- La mayoría de las definiciones / teoremas / ejemplos de privacidad diferencial que he encontrado son para consultas que devuelven un solo número por columna, como un promedio. ¿Existen mecanismos diferencialmente privados para otros tipos de consultas, como los que subconjustan filas en función de algún criterio?
- ¿Se puede usar la GPU para optimizar los algoritmos gráficos?
- ¿Cuál es la altura, el tamaño y la profundidad de un árbol binario?
- ¿Por qué obtengo el índice de cadenas fuera de rango?
- ¿Es la estructura de datos y el conocimiento del algoritmo un requisito previo para los problemas en Topcoder?
Solo para aclarar más mi respuesta, supongo que si la cadena no puede estar en la memoria, debe leerse desde un archivo. Tomemos el tamaño de la cadena para que sea de 1 GB y el tamaño de la memoria ram para que sea de 256 MB.
Lea los primeros 128 MB de cadena (¿por qué no 256 MB? Porque el inverso también necesitará la misma memoria para almacenarlo), inviértalo y escriba en un archivo. Ahora lea los siguientes 128 MB de cadena y repita los mismos pasos 8 veces para invertir la cadena completa. Ahora tiene 8 subcadenas invertidas de 128 MB cada una.
Lea las subcadenas (128 MB) en orden inverso y escríbalas en el archivo de salida.
Otro enfoque puede ser comenzar a leer el archivo de entrada en reversa un carácter a la vez y escribirlo en el archivo de salida.