Trova sequenze sequenziali randomizzate per comprimere i file statisticamente

0

Mi chiedevo se ciò che avevo in mente esistesse già in qualsiasi programma / algoritmo di compressione noto o meno. Sappiamo che Seed ci dà una sequenza costante di numeri casuali. quindi se riusciamo a trovare i semi che dicono generano quei byte, allora possiamo comprimere i file in un solo seme magico che riproduce i nostri byte di dati!

In altre parole possiamo assumere la sequenza di byte di un numero generato a caso, se troviamo un seme per quella sequenza possiamo impacchettare quei byte in un singolo numero di seme.

Ovviamente la probabilità di trovare seme per byte di dati di grandi dimensioni è molto bassa o addirittura impossibile a causa delle dimensioni del seme e dell'uso di PRNG, ma possiamo farlo in blocchi, ad es. 10 byte per seme per aumentare la possibilità di trovare buoni semi.

C'è un altro modo, potremmo mescolare byte di dati di file compresso con seme casuale, e provare a comprimere di nuovo. i dati mescolati possono contenere più schemi ripetuti se i byte dati non sono tutti diversi. (questo potrebbe essere fatto anche in pezzi per aumentare la possibilità di trovare buoni semi)

Un altro modo, potremmo aggiungere / sottrarre numeri casuali (salt?) nel nostro byte di dati usando un buon seme in modo da ottenere una maggiore ridondanza, e poi comprimerlo di nuovo. (questo potrebbe essere fatto anche in pezzetti)

Potremmo avere una matrice matrice di byte per distribuire i byte in un intervallo più ampio.

Potremmo avere un mix di modi che ho fornito. potremmo avere l'intelligenza artificiale che sceglie il miglior mix di questi approcci.

potremmo farlo più e più volte, comprimere, randomizzare, comprimere randomize fino a raggiungere dimensioni molto ridotte. ovviamente è necessario mantenere l'intestazione del file da qualche parte che registra queste azioni, ma la dimensione dell'intestazione dovrebbe essere minore del file compresso.

Penso che questo sconfiggerà il principio di pigeonhole semplicemente trovando buoni semi, anche se è costoso, volevo solo condividere questa idea e mi chiedevo se tale cosa è già considerata da qualche parte o è ancora implementata ancora? E 'anche considerato pratico?

Apprezzo i commenti degli esperti in questo campo perché non ne ho esperienza. quindi portami con me. Grazie in anticipo.

    
posta M.kazem Akhgary 26.08.2017 - 11:41
fonte

1 risposta

4

Questo non funzionerà. Un dato seme n bit può produrre solo al massimo 2 ^ n sequenze distinte. Cioè per dati m-bit dove m > n, ci saranno modelli di bit di dati prodotti da nessun seme. Aggiungere ulteriori informazioni al seme come offset, mischiare, ecc. Richiederà bit aggiuntivi e non può portare a più sequenze di dati possibili rispetto alla semplice scelta di un seme più grande. In generale, la dimensione del seme deve essere uguale alla dimensione dei dati.

Ti invito a consultare la Teoria delle informazioni di base, in particolare il concetto di entropia . In pratica, la maggior parte delle sequenze di dati che vogliamo comprimere non sono casuali, cioè i dati contengono meno bit di "informazioni" rispetto a quelli usati per la memorizzazione di tali informazioni. La compressione riguarda la distillazione dei dati fino a queste informazioni incomprimibili.

Un approccio generale è che i pattern frequenti hanno codifiche più piccole rispetto ai pattern poco frequenti. Ciò potrebbe anche significare che la forma "compressa" di dati che non può essere ulteriormente compressa potrebbe essere più grande dei dati originali! Non c'è nulla nell'usare semi casuali che si prestino a trovare e rimuovere schemi frequenti.

    
risposta data 26.08.2017 - 12:30
fonte

Leggi altre domande sui tag