Utente:Aubrey/Biblioteca babele

Numeri

  • possibili caratteri (22 lettere + spazio, virgola, punto)
  • 410 pagine
  • 40 righe
  • 40 caratteri per riga
  • lettere totali
  • pagine totali
  • libri totali
  • lettere per ogni titolo

Se una parola è di 8 bit, e può generare i 256 caratteri ASCII, l'intero libro peserà ...


Probabilmente sarebbe comodo non utilizzare tutta l'architettura ASCII, dato che ci sarebbe uno spreco di risorse e di memoria. Con 25 bit ho 32 possibilità, quindi 32 possibili caratteri.

La cosa più complicata mi sembra la generazione intelligente, senza troppo spreco di risorse e potenza, dei testi. Credo sia possibile e relativamente facile creare un algoritmo che generi un testo con numero predefinito di caratteri, ma credo sia difficile confrontare ciascun testo con un altro per vedere se sono diversi. La cosa si potrebbe risolvere direttamente alla fonte: generando cioè i testi in maniera che siano sicuramente diversi.

Se un algoritmo a "forza bruta", il più elementare possibile, dovrebbe generare un testo per volta, e poi confrontare tutti i testi generati con il nuovo, la sue prestazioni sarebbero insostenibili.

Se assumiamo un secondo di tempo per generare un testo, ed un secondo per confrontare il testo con i precedenti per vedere se sono differenti, avremo

LEGENDA:

  • [] : costo dei confronti
  • +1 : costo della generazione del nuovo testo

 
1
+
[1]+1
+
[1+1]+1
...

Molto semplicemente, avremo un costo di n(n-1)/2. Il nostro n da solo è già al di là di ogni possibilità. Dunque, costo O(n2).

Per ottimizzare, si potrebbe pensare di creare, per ogni testo (inteso come singola stringa, oppure pattern), tutte le variazioni possibili, generando automaticamente tutti i 25 testi simili, cambiando per esempio solo il primo carattere, oppure traslando il testo...

Per esempio:

  • se io genero un libro formato da tutte le lettere a, poteri generare automaticamente tutti gli altri libri che hanno un solo carattere, poi potrei modificare il primo carattere e ripetere l'operazione, genrando nuovamente tutte le possibili alternative...

Il problema di un approccio del genere è che non c'è un algoritmo esatto per farlo.


Non so se esista un algoritmo esatto pe esaurire tute le possibilità, e soprattutto evitare di dover fare i confronti, cioè poter generare uno per uno tutti e sole le stringhe giuste'. Potrebbe essere utile l'argomento diagonale di Cantor.


Semplificando, da 26 caratteri a soltanto 0 e 1, avrei stringhe di numeri che sarebbe esattamente l'una diversa dall'altra. Basta far contare il computer da 0 a n, con n = numero totale di libri. La cosa interessante è che sarebbe una biblioteca di Babele comunque, dato che le stringhe binarie possono essere interpretate con un significato, e quindi possono generare qualsiasi tipo di dato. In questo senso, ogni file sul Web, ogni video, ogni oggetto digitale potrebbe essere visto come un libro di questa Biblioteca, oppure una successione di libri.

Sarebbe semplice: il costo di tutta l'operazione in termini di prestazioni sarebbe n, ed in termini di memoria sarebbe il numero totale delle celle (m bit, e m è maggiore di n, ovviamente. )

Un altro approccio ancora è più semplice. Si parte dalla generazione di una pagina, come quella descritta da Borges, e si riproducono tutte le variazioni possibili. Non bisogna mai dimenticare che Borges utilizza un libro di una lunghezza predefinita, e che in linea di principio si può applicare lo stesso concetto ad una pagina, e poi permutare tutte le pagine, mettendole in sequenza. In questo modo, se sono formate da 0 e 1, si possono avere anche file che occupano più di una pagina, in termini di sequenza binaria.

Per una pagina ipotetica, 30 celle * 30 righe, avrei 900 caratteri in tutto. Questo significa 2900 possibilità, per una singola pagina.

Se penso soltanto alla riga (stesso concetto, a livello più piccolo), sono 230. Minchia. Capisco perchè nessuno ci ha ancora pensato. E' inimmaginabile. La cosa interessante è che con 0 e 1 dovrei poter avere tutti i caratteri possibili (anche gli unicode), ma, attenzione, ammesso e non concesso che una stringa di 0 ed 1 sia inecquivocabile, che ci sia una corrispondenza biunivoca fra la stringa e la lettura della stringa da parte dell'elaboratore.

In teoria, dunque, basta contare da qui a 25656000, in binario. Ogni stringa sarebbe semplicemente un libro (senza ovviamente il titolo sulla copertina).

Potrei addirittura creare un sistema venticinquenario (con i 25 simboli) e contare fino all'ultimo libro, direttamente. I libri sarebbero generate in ordine, dal primo all'ultimo. Ovviamente bisogna dare un significato artimetico alle lettere e ai simboli. (E' godelizzazione questa?)