|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Codice di sorgente a prefisso?!
Caio a tutti scrivo qui perché non riesco a trovare una sezione più adatta
, anche se sono certo che nessuno risponderà In ogni caso ho un dizionario delle parole di codice così fatto, semplice semplice: Codice:
W = {0, 001, 101, 11}
Nell'esempio W sembra non essere a prefisso, poiché evidentemente la parola 0 è prefisso della parola 001. Ma il metodo di Sardinas-Patterson dimostra il contrario. Dove sbaglio? E mi è confermato dal fatto che un ipotetico decodificatore mostrerebbe del ritardo, esempietto: Codice:
- Arriva 0 -> non posso decidere se si tratta di 'a' o è l'inizio di 'b' - (RITARDO) - Arriva di nuovo 0 -> non posso decidere se è 'aa' oppure l'inizio di 'b' (RITARDO). Se arriva 1 allora ho terminato la prima parola. - Arriva 0 | 1 -> posso finalmente decidere: se è zero, allora ho 'aa' e continuo, altrimenti ho 'b' e continuo.
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 07-05-2010 alle 20:12. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
se è prefisso, è univocamente decodificabile.. in generale non vale l'implicazione inversa, ma in casi particolari (come il tuo) sì.. non capisco il punto, e neanche cosa intendi per "ritardo" finché puoi leggere usando una finestra di dimensione costante (3 nel tuo caso) non credo si possa parlare di ritardo
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Quote:
Ritardo nella decodifica, perchè non puoi sapere all'arrivo dello 0 iniziale, di quale parola si tratti...tu cosa intendi per finestra di dimensione costante? Questo codice è B-LV...quindi a lunghezza variabile!
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 07-05-2010 alle 21:35. |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
intendo dire che se la parola di codice più lunga è di 3 bit, al massimo dovrai leggere 3 bit per decodificare (quindi per decodificare devi mantenere una "finestra" di lunghezza 3 sulla stringa che sposti avanti man mano che decodifichi), e la decodifica, fissato un codice, rimane lineare rispetto alla lunghezza della stringa (sempre che il tuo problema sia la complessità della decodifica).. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
L'essere u.d. è necessaria ma non sufficiente, il contrario di quello che dici tu. Ossia per un codice, l'essere u.d. è una proprietà che deve essere necessariamente presente se il codice è a prefisso, ma da sola non è sufficiente a garantirne quest'ultima.
Sostanzialmente: u.d. -> a-prefisso o non-a-prefisso prefisso -> u.d Baglio? In ogni caso, W è o non è a prefisso? Altro esempietto, questa volta provate a rispondere: 0, 2, 03, 011, 104, 341, 11234 è a prefisso?
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 07-05-2010 alle 23:28. |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
il tuo libro dice che W2 è univocamente decodificabile, ma non è scritto da nessuna parte che è a prefisso (e infatti non lo è).. dice che W3 è un codice prefisso
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Quote:
W3 = 0, 2, 03, 011, 104, 341, 11234: posto x = 0, sia ha che 03 = x 3, e inoltre 011 = x 11. Sono diventato stupido?
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
non l'avevo nemmeno guardato W3, visto che parlavi di W2.. non saprei che dirti, sembrerebbe sbagliato anche a me, ma non è che sia un grande esperto di queste cose.. ti tocca aspettare qualcun altro
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2785
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
In questa pagina, viene usato il metodo di Sardinas-Patterson per capire se un codice è u.d. oppure no... se in una di quelle colonne R1...RN (R0 è il codice in sè) vedi qualche parola presente in R0, allora non è u.d., viceversa lo è. Inoltre, se l'ultimo insieme RN finisce con l'insieme vuoto, il codice è a prefisso.
Secondo te W3 è a prefisso oppure no?! Quote:
|
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2785
|
Quote:
Secondo la definizione che conosco io, che poi è anche quella che hai ripetuto qualche post fa, no. |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Detto semplice semplice:
1) Poni R0 = W Codice:
R0 = {10, 010, 1, 1110}
Codice:
R1 = {0, 110}
Codice:
R2 = {10}
Quote:
|
|
|
|
|
|
|
#16 | ||
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2785
|
Mi sono documentato su wikipedia:
http://en.wikipedia.org/wiki/Sardina...rson_algorithm http://en.wikipedia.org/wiki/Prefix_code Evidentemente nel tuo libro c'è un errore, ma bello grosso. Sto tentando di immaginare come possa l'autore aver sbagliato così... Forse l'autore intende qualcos'altro per codice a prefisso (ma immagino che tu la definizione l'abbia presa da quel libro). Il problema è la frase in alto: Quote:
Quote:
Esempio: 0011111111111... Ricordando che W2={0,001,101,11} finché la sequenza di 1 non termina non possiamo sapere se 001 è la parola 001 oppure la concatenazione di due 0 e 11 Credo quindi che l'autore volesse sottolineare questa caratteristica ma si è confuso ed ha usato un termine errato. Personalmente non so come è definita questa caratteristica. PS: come vedi ho cambiato opinione nel corso del messaggio, ho preferito comunque lasciare anche la prima parte, così è possibile ripercorrere completamente il mio pensiero. |
||
|
|
|
|
|
#17 | ||
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Quote:
E l'errore a me sembra MOLTO grosso...insomma non è un termine con un altro, è sbagliata l'affermazione ("se l'ultimo insieme è vuoto..."), la citazione, nonché affermare che W3 è a prefisso... In effetti tra le dispense online non ho trovato questo tipo di relazione tra insieme vuoto e codice a prefisso, occorrerebbe leggere quello scritto del 1990. Quote:
In quest'ottica, W3 però sembrerebbe istantaneo (pur ammettendo ritardi di decodifica finiti), mentre W2 no (sono potenzialmente infiniti, almeno credo, visto il tuo esempio). Purtroppo il libro (un libro universalmente adottato dalle università) anche in questo caso non specifica cosa intende precisamente per "istantaneo": ammettere nessun ritardo o un piccolo ritardo finito? Perchè un codice W = { 00, 01, 11 } è sicuramente istantaneo (appena finisce la parola, sappiamo qual è), mentre W3 dell'esempio dovrebbe mostrare un ritardo piccolo (non riesco a trovare un buon esempio...). In ogni caso, in settimana chiederò direttamente al prof. e vi farò sapere. Inutile dire che ti ringrazio enormemente per le tue ricerche e il tuo sforzo! |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:50.










, anche se sono certo che nessuno risponderà 









