Registro delle lezioni Matematica Discreta, F. Battaglia, Anno Accademico 2013-14

Indico con s.d. i risultati enunciati senza dimostrazione.

  1. 23.09.12 (ore 2).
    Introduzione al corso: informazioni pratiche, programma, motivazioni, collegamenti, testi di riferimento.
    Introduzione al sistema crittografico RSA-- sistema di crittografia a chiave pubblica--per la trasmissione di dati. Essenzialmente le chiavi pubbliche sono un numero naturale N (prodotto di due numeri primi molto grandi) e un numero naturale e scelto opportunamente; la chiave privata e' un altro numero d, segreto, che si utilizza per la decrittazione. Per iniziare a curiosare: algoritmo RSA e anche elliptic curve cryptography; elementary theory and practice of elliptic curves cryptography, the new generation of public key systems.
    Vedere anche la sezione 4.1 qui At risk - Public key encryption.
    Teoria dei codici: si spiega, attraverso alcuni esempi banali, di cosa si occupa la teoria dei codici autocorrettivi e cosa significa autocorrettivo. Distanza di Hamming ed esempi di decodifica a minima distanza. Come aumentare l'efficienza di correzione a scapito della velocita' di trasmissione (ridondanza dei dati).

  2. 26.09.12 (ore 3).
    Numeri naturali, numeri interi, definizione di gruppo, gruppo commutativo, anello, anello commutativo, campo. Esempi, tra cui F2. Divisione con resto (teorema s.d.). Definizione di divisore. Congruenze: definizione di congruenza modulo un intero positivo d. La congruenza e' una relazione di equivalenza. Ogni numero e' congruo, modulo d, al suo resto quando viene diviso per d. Due numeri sono congrui tra loro modulo d se e solo se hanno lo stesso resto quando vengono divisi per d. La congruenza conserva somma e prodotto. L'insieme delle classi di resto modulo d e' un anello commutativo con d elementi. Esempi e relative tabelle additive e moltiplicative. L'importante identita' [xy]d=[[x]d[y]d]d con x,y numeri interi. Su questa si basa l'algoritmo dei quadrati ripetuti per calcolare il resto con dividendi molto grandi. Esempio svolto: calcolo del resto della divisione di 1211 per 21. Sia div(n) l'insieme dei divisori di un intero n. Nota che div(0)={0,1,2,3,...}=N Lemma (Euclide): Siano m,n in Z. Allora esiste unico d in N tale che div(m) intersecato div(n) e' uguale a div(d). Dimostrazione unicita'.
  3. 30.09.2013 (ore 2)
    Massimo comun divisore: esistenza e unicita' (Lemma di Euclide (Euclide (300 a.C.))). Algoritmo Euclideo (Euclide (300 a.C.)) per determinare il massimo comun divisore, gcd(m,n), tra due interi m e n. Algoritmo Euclideo esteso per determinare interi x e y tali che xm+yn=gcd(m,n). Definizione: m e n sono primi tra loro se gcd(m,n)=1.
  4. 03.10.2013 (ore 3).
    Proposizione: m e n sono primi tra loro se e solo se esistono x e y tali che xm+yn=1.
    Proposizione: Se a divide bc e a e b sono primi tra loro, allora a divide c.
    Proposizioni: Se gcd(a,b)=1, a divide c e b divide c, allora ab divide c; Se gcd(a,b)=1 e gcd(a,c)=1 allora gcd(a,bc)=1.
    Teorema cinese del resto: l'applicazione resto r da Z/NZ a Z/n1Z x ... Z/nrZ, con n=n1...nr e gcd(ni,nj)=1 è biunivoca (è infatti un isomorfismo di anelli (dimostrata solo la biunivocita').
    Dimostrazione del teorema cinese del resto mediante algoritmo esplicito per determinare una soluzione, basato sull'algoritmo euclideo esteso. Esempio di applicazione del teorema cinese del resto: caso semplice del Shamir secret sharing.
    Per iniziare a curiosare: Secret sharing.
    Definizione della funzione φ di Eulero (1707-1783) sui naturali.
  5. 07.10.2013 (ore 2).
    Proposizione: Se n e m sono primi tra loro, allora φ(mn)=φ(m)φ(n).
    (Z/nZ)* e' un gruppo, il gruppo degli invertibili dell'anello Z/nZ. Z/nZ e' un campo se e solo se n e' primo. Teorema di Eulero: siano a,n interi primi tra loro, n naturale. Allora aφ(n)≡ 1(mod n).
    Algoritmo RSA in dettaglio.
  6. 10.10.2013 (ore 3) Algoritmo RSA in dettaglio (continuazione).
    Numeri primi: definizione; crivello di Eratostene; Lemma: ogni naturale non nullo e' prodotto di primi; Teorema (Euclide): ci sono infiniti numeri primi; Lemma: se un primo p divide il prodotto di due interi ab, allora o p divide a oppure o divide b. Teorema: ogni naturale non nullo si scompone univocamente (a meno dell'ordine) nel prodotto di numeri primi; massimo comun divisore e minimo comune multiplo a partire dalla scomposizione in fattori primi; il calcolo della funzione di Eulero nota la scomposizione in fattori primi di un naturale.
    Introduzione alla teoria della complessita' computazionale: definizione grossolana di algoritmo, algoritmi polinomiali. Diciamo che un problema e' facile (feasible) se e solo se ammette un algoritmo polinomiale (The Cobham-Edmond thesis (1964-65)). Diciamo che un problema e' non trattabile (intractable) se NON ammette un algoritmo polinomiale. Differenza qualitativa tra algoritmi polinomiali ed esponenziali. Esempio di problema decisionale: determinare se un grafo ammette un circuito Euleriano.

    Tra il materiale utilizzato per l'introduzione alla teoria della complessita' : Conferenza di Vijaya Ramachandran: P vs NP problem, tenuta al Clay Mathematics Institute e i capitoli 17 e 18 del libro A walk through combinatorics, Miklos Bona, sia la seconda che la terza edizione contengono i capitoli sulla teoria della complessita'.
    Per la teoria dei grafi vedere, ad esempio: Corso di teoria dei grafi, Carlo Casolo e il libro di Bona succitato.

    Per iniziare a curiosare: The largest known primes; Great internet Mersenne (1588-1648) prime search; a brief survey of integer factorization algorithms; Peter Shor, Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer (1995) ; M. Agrawal, N. Kayal, N. Saxena, Primes is in P, Annals of Mathematics, 160 (2004) 781-793: We present an unconditional deterministic polynomial-time algorithm that determines whether an input number is prime or composite. Un articolo molto bello sul risultato precedente, di A. Graville, sul Bull. of AMS. Un survey interessante Numbers at work and Play, IE Shparlinski pubblicato nel volume AMS Notices, Febuary 2010 Volume 57 Issue 03 tutto dedicato alla crittografia. Ancora sull'algoritmo di Shor: The Mathematics Behind Quantum Computing: Part I Part II ; The discovery of the Pentium division flaw, from Thomas Nicely home page; Randomness and pseudorandomnes, di Avi Wigderson, scarica il file Summer 2009 da qui

  7. 14.10.2013 (ore 2)
    Definizione di problema decisionale. Il problema del circuito di Eulero e' decisionale. Enunciato del teorema di Eulero: un grafo connesso ha un circuito Euleriano se e solo se tutti i suoi nodi hanno grado pari. Questo ci permette di affermare che esiste un algoritmo che esegue in tempo polinomiale (infatti O(n)) che risolve il problema del circuito di Eulero. Altri esempi di problemi decisionali (rimetto nella lista anche quello del circuito Euleriano):
    CE: problema del circuito Euleriano Pr: un numero intero assegnato e' primo?
    SAT: problema di soddisfacibilita' di formule booleane "and of or's" (forma normale congiuntiva (CNF))
    HC: problema del circuito Hamiltoniano; TSP: problema del commesso viaggiatore (circuito Hamiltoniano con peso minore di un peso assegnato.
    Cenno alla macchina di Turing per misurare l'efficienza di un algoritmo. Un passo e' un movimento della testina, il tempo di esecuzione e' il numero di passi.
    Un linguaggio L e' l'insieme di tutti gli oggetti per cui la risposta a un dato problema e' SI'. Con riferimento ai problemi succitati avremo: LCE, LPr, LSAT, LHC, LTSP.
    Una macchina di Turing T accetta il linguaggio L se dato un input x, T si ferma nello stato SI' se x e' in L e T si ferma nello stato NO se x NON e' in L.
    Classe di complessita' P (polinomiale): Un linguaggio L e' in P se esistono una macchina di Turing T e un intero positivo k tali che T accetta L in O(nk) passi, dove n e' la taglia nell'input.
    Ossia l'appartenenza a L puo' essere testata da un algoritmo che esegue in tempo polinomiale.
    Per la classe NP diamo la seguente definizione, che NON utilizza la macchina di Turing non deterministica, con la quale si puo' dare una definizione equivalente ed alternativa a quella che segue e da cui deriva la denominazione della classe.
    Classe di complessita' NP (non deterministic polynomial time verification algorithm): Un linguaggio L e' in NP se esistono una macchina di Turing T e un intero positivo k tali che:
    --per ogni x in L esiste un testimone (detto anche certificato) W(x) tale che, quando a T viene fornito l'input (x,T(x)), T riconosce che x e' in L in O(nk) passi.
    --per ogni x non in L tale testimone non esiste. Ossia comunque si prenda W'(x), l'input (x,W'(x)) non determinera' la falsa risposta x in L.
    Tutti i linguaggi citati sono in NP. Per ognuno forniamo il certificato, in particolare per LPr, la cui appartenenza a NP risale al '75 (certificato di Pratt). I linguaggi LCE e LPr sono anche in P (per LPr in P vedi articolo del 2004, citato nella lezione precedente)
    Quindi brevemente NP e' la classe dei linguaggi per cui, per ogni input nel linguaggio, la prova di appartenenza puo' essere verificata in tempo polinomiale.
    Classe di complessita' coNP: Un linguaggio L e' in coNP se esistono una macchina di Turing T e un intero positivo k tali che:
    --per ogni x non in L esiste un testimone (detto anche certificato) W(x) tale che, quando a T viene fornito l'input (x,T(x)), T riconosce che x e' non in L in O(nk) passi.
    --per ogni x in L tale testimone non esiste. Ossia comunque si prenda W'(x), l'input (x,W'(x)) non determinera' la falsa risposta x non in L.
    Si prenda ad esempio il linguaggio LPr: e' banale mostrare che e' nella classe coNP--il certificato W(n) di un naturale n non in LPr e' un divisore di n-- mentre non e' affatto banale mostrare che e' nella classe NP.
    P e' contenuto nell'intersezione di NP e coNP.
    Il problema P vs NP. Un linguaggio L' e' riducibile a L se ogni input per L' puo' essere trasformato da una macchina di Turing deterministica, in tempo polinomiale, in un input per L (scriviamo L'≤pL). Esempio: LHCpLTSP.
    Un linguaggio L si dice NP-completo se:
    -- L e' in NP
    -- ogni linguaggio L' in NP e' riducibile a L in tempo polinomiale
    Teorema (Cook, 1961): SAT e' NP completo. Proposizione: Se L e' NP completo e L≤pL', allora L' e' NP completo. Ad ora si conoscono migliaia di linguaggii NP completi.
    Fatto: P=NP se e solo se un linguaggio completo e' in P (segue dalla definizione di NP completezza).

    Ulteriore bibliografia:
    -- Notes on Complexity Theory, Jonathan Katz (2011)
    -- Il problema P vs NP, pagina del Clay Mathematics Institute
    --S. Cook, The complexity of theorem proving procedures, Proceedings of the Third Annual ACM Symposium on Theory of Computing, (1971) pp. 151-158.
    --L. Levin, Universal search problems (in russo), Problems of Information Transmission, 9 (3): (1973) 115-116, translated into English by Trakhtenbrot, B. A. A survey of Russian approaches to perebor (brute-force searches) algorithms, Annals of the History of Computing 6 (4) (1984).

  8. 17.10.2013 (ore 3)
    Struttura della macchina di Turing. Campi finiti: l'anello delle classi di resto modulo un naturale n e' un campo se e solo se n e' primo. Esempio: costruzione del campo dei numeri complessi C come campo quoziente dell'anello dei polinomi a coefficienti in R, modulo l'ideale generato dal polinomio irriducibile x2+1. Tale esempio fornisce una motivazione per lo studio dei polinomi. L'anello dei polinomi, A[x], nell'indeterminata x a coefficienti in un anello A. Grado di un polinomio. Sia d un polinomio a coefficienti in un campo K. Dato f in K[x] esistono unici q e r in K[x] tali che f=qd+r, con deg(r)< deg(d) o r=0.
    Siano f,g sono in K[x], allora deg(fg)=def(f)+deg(g). Gli elementi invertibili di K[x] sono tutti e soli i polinomi costanti non nulli.
    Definizione di radice di un polinomio. Denotiamo con V(p) l'insieme delle radici del polinomio p. Un elemento a in K e' una radice del polinomio p se e solo se (x-a) divide p. Definizione di molteplicita', νa(p) di una radice a del polinomio p. Si ha V(fg)=V(f)UV(g). Teorema: Sia F in K[x]. Se V(f)={a1,...,ar} allora f=q(x-a1)νa1(p)...(x-ar)νar(p), con q in K[x] e V(q) vuoto. Inoltre νa1+...+νar≤deg(f). Derivata di un polinomio e sue proprietà . Lemma: Siano f,g due polinomi in K[x]. Se f2 divide g, allora f divide Dg; l'elemento a in K e' una radice del polinomio f con molteplicità maggiore di 1 se e solo se e' una radice di f e di Df.
  9. 21.10.2013 (2 ore)
    Radici di 1 in C: definizione, radici n-esime primitive di 1 in C (caratterizzazione e proprieta'). Polinomi ciclotomici: definizione, esempi e proprieta'.
  10. 24.10.2013 (3 ore)
    Definizione di sottogruppo H di un gruppo G; definizione di classe laterale sinistra; G/H=insieme delle classi laterali sinistre (se H e' normale, in particolare se G e' commutativo, G/H e' un gruppo). Prop: sia H un sottogruppo di un gruppo finito G, allora la cardinalita' di H divide la cardinalita' di G. Definizione di potenza intera di un elemento g in un gruppo G. Definizione di ordine di un elemento di G: ord(g). Sia G finito, allora ord(g) divide cardinalita' di G per ogni g in G. Sia g in G di ordine finito e sia r un intero tale che gr=1, allora ord(g) divide r. Sia A un anello e sia I un ideale di A. Allora A/I e' un anello. Z e' un anello a ideali principali. L'esempio di Z/(n)=Z/nZ, anello delle classi di resto modulo n. Sia f: A ---> B un omomorfismo di anelli. Allora Ker(f) e' un ideale di A e l'applicazione naturale da A/Ker(f) in B indotta da f e' un omomorfismo iniettivo.
    Caratteristica di un campo. Radici n-esime primitive di 1 in un campo K. Criterio per determinare se un elemento a di K e' una radice n-esima primitiva utilizzando i polinomi ciclotomici.
  11. 28.10.2013 (2 ore)
    Definizione di gruppo ciclico. Esempi. Teorema di Gauss: sia G un sottogruppo FINITO del gruppo moltiplicativo di un campo, allora G e' ciclico.
    Si considera l'anello Fp[x]/(f), con f in Fp[x]. Esempi. Cardinalita' di Fp[x]/(f). Definizione di polinomio irriducibile. Prop. L'anello Fp[x]/(f) e' un campo se e solo se f e' un polinomio irriducibile. Si osserva che il campo Fp[x]/(f) ha caratteristica p.
  12. 31.10.2013 (3 ore)
    Lezione seminariale tenuta da Guido Cocchi, attualmente studente del secondo anno del corso di Laura Magistrale in Ingegneria Informatica (presente la docente): il problema del logaritmo discreto, l'algoritmo Diffie-Hellman, l'algoritmo di Shanks.
    Sia A un anello commutativo e I un ideale di A, il quoziente A/I e' un campo se e solo se I e' un ideale massimale. Un polinomio irriducibile in K[x] non ha radici in K, un polinomio di grado due o tre senza radici in K e' irriducibile in K[x]. Lemma: Sia F un campo finito. Allora esistono un naturale p, primo, e un polinomio irriducibile f in Fp[x], tali che Fp[x]/(f) e' isomorfo a F. Corollario: un campo finito F ha cardinalita' uguale alla potenza di un primo. Teorema di esistenza e unicita': Siano P un primo e n un naturale, n>0.
    a) Allora esiste un polinomio irriducibile f in Fp[x] di grado n (si ottiene quindi il campo Fp[x]/(f) di cardinalita' pn).
    b) Siano F e F' due campi con la stessa cardinalita' finita, allora F e F' sono isomorfi.
    Per dimostrare a) dimostriamo: Teorema: Sia p un primo e sia f un fattore irriducibile di Phipn-1 in Fp[x], allora f ha grado n.
  13. 04.11.2013 (2 ore)
    Completamento della dimostrazione del Teorema di esistenza e unicita'. Teorema: Il polinomio Xpn-1-X in Fp[x] e' il prodotto di tutti e soli i polinomi monici irriducibili di Fp di grado d, con di compreso tra 0 e n e d che divide n. Inoltre ogni fattore ha molteplicita' 1.
    Corollario: Sia Nd il numero dei polinomi monici irriducibili di grado d in Fp, allora pn=&sumd | nd Nd.
    Da cui la formula diretta per Nn scritta utilizzando la funzione di Moebius (vedere ad esempio in questo file l'esempio numero 3).
    Caso particolare della formula nel caso in cui n sia primo.
  14. 07.11.2013 (3 ore)
    Dimostrazione del teorema enunciato la lezione precedente. Definizione della mappa di Frobenius (1849-1917) dall'anello Fp[x]/< f > in se. Fp[x]/< f > e' uno spazio vettoriale su Fp di dimensione uguale al grado di f. La mappa di Frobenius e' un omomorfismo di anelli e una applicazione lineare.
    Teorema: Un polinomio f e' irriducibile se e solo se Ker(F)=0 e Ker(F-I)= Fp.
    Prima parte della dimostrazione: f irriducibile implica Ker(F)=0 e Ker(F-I)=Fp. La dimostrazione da' un algoritmo per la fattorizzazione di polinomi (algoritmo di Berlekamp). Esempio di applicazione dell'algoritmo. Esempio di applicazione dell'algoritmo di Berlekamp.
    Seconda parte della dimostrazione: Ker(F)=0 e Ker(F-I)=Fp implica f irriducibile.
  15. 11.11.2013 (2 ore)
    Teoria dei codici, definizioni preliminari: alfabeto di taglia/cardinalita' q, parola q-aria, codice q-ario di lunghezza n, taglia o cardinalita' M di un codice, codici di tipo (n,M)q, information rate di un codice. Canale di comunicazione: dato da un alfabeto (diamo la definzione con lo stesso alfabeto in entrata e in uscita) e da una matrice di probabilita' di trasmissione in avanti. Canale senza memoria. Canale simmetrico. Canale fortemente simmetrico. BSC=binary simmetric channel. Criterio di decodifica a massima probabilita' (MPD). Criterio di decodifica a massima probabilita' incompleto (IMPD). Criterio di decodifica a massima probabilita' completo (CMPD). Esempio con BSC. Distanza di Hamming, definizione e proprieta'. Criterio di decodifica a minima distanza (DMD). Il procedimento di decodifica a minima distanza e' detto anche nearest neighbour decoding.
    Proposizione: Per un canale senza memoria e fortemente simmetrico le decodifiche a massima probabilita' e minima distanza coincidono. Per curiosare: "probably no single work in this century has more profoundly altered man's understanding of communication than Shannon's 1948 paper A mathemathical theory of communication" (David Slepian (editor) in Key papers in the Development of Information Theory, IEEE Press, NY, 1974).
  16. 14.11.2013 (3 ore)
    Distanza di Hamming di un codice. Distanza d(x,C) di una parola w in An da un codice C. Definizione di sfera aperta e chiusa di centro x e raggio s, denotate (in questo registro) rispettivamente con Bs(x) e Bs(x). Un codice C segnala al piu' s errori in DMD se per ogni x in C Bs(x)∩C={x}. Un codice C corregge al piu' s errori in DMD se per ogni w in An tale che d(w,C)≤s esiste un'unica parola x in C tale che w appartiene a Bs(x). Lemma: Sia C un codice in Anq. Allora d(C)≥2s+1 se e solo se Bs(x)∩Bs(y)=∅ per ogni x e y in C, x diverso da y.
    Proposizione:(i) un codice C segnala al piu' s errori se e solo se d(C)≥s+1; (ii) un codice C corregge al piu' s errori se e solo se d(C)≥2s+1
    Un codice C si dice di tipo (n,M,d)q se C e' contenuto in An, la cardinalita' di A, |A|, e' q, la cardinalita' di C, |C|, e' M e d=d(C). La capacita' di rilevare/correggere errori con la decodifica a minima distanza dipende dal parametro d, precisamente:un codice (n,M,d)q rileva al piu' d-1 errori e corregge al piu' [(d-1)/2] errori (il numero [(d-1)/2] indica la parte intera inferiore di (d-1)/2). Denotiamo con e=[(d-1)/2]. Teorema di Hamming (limitazione superiore per M in funzione di n, q ed e). Lemma: formula per il numero di parole di An contenute in una palla chiusa di raggio r. Definizione di codice perfetto. Esercizio: dimostrare che se (n,M,d)q e' perfetto allora d e' dispari. Codici lineari: definizione. Esempi. Prodotto scalare in Fqn. Ortogonale di un codice lineare. La somma delle dimensioni di C e del suo ortogonale e' n. L'ortogonale dell'ortogonale di C e' C. Definizione di matrice generatrice G e matrice di controllo di parita' H di un codice lineare. Caratterizzazione di un codice e del suo ortogonale a partire rispettivamente dalla matrice di controllo di parita' e dalla matrice generatrice.
  17. 18.11.2013 (2 ore)
    Peso di Hamming di un elemento in Fqn. Peso di Hamming di un codice lineare. Dato C codice lineare per e distanza di C sono uguali. Proposizione: sia C un codice lineare in Fqn di dimensione k. Sia H una matrice di controllo di parita' di C. Allora:
    (i) d(C)≥l se e solo se non ci sono l-1 colonne di H linearmente dipendenti
    (ii) d(C)≤l se e solo se esistono l colonne di H linearmente dipendenti.
    (iii) d(C)=l se e solo se non ci sono l-1 colonne di H linearmente dipendenti ed esistono l colonne di H linearmente dipendenti.
    Esempi di operazioni sulla matrice generatrice di un codice. Definizione di matrice generatrice in forma standard. Definizione di matrice di controllo di parita' in forma standard.
  18. 21.11.2013 (3 ore)
    Definizione: una applicazione lineare f da Fqn in se' conserva la distanza di Hamming se per ogni coppia di elementi x,y in Fqn si ha d(f(x),f(y))=d(x,y) (equivalentemente: se per ogni x in Fqn si ha wt(f(x)=wt(x)). Osservazione: ogni applicazione lineare da Fqn in se'che conserva la distanza di Hamming e' un isomorfismo. Chiamiamo un isomorfismo che conserva la distanza Hamming un'isometria.
    Definizione del gruppo delle permutazioni generalizzate, GP(n,Fq): e' il sottogruppo del gruppo degli isomorfismi, GL(n,Fq), di Fqn, generato dalle permutazioni e dagli isomorfismi del tipo diag(l1,...,ln). Proposizione: GP(n,Fq) coincide con il sottogruppo degli isomorfismi di Fqn che conservano la distanza di Hamming (isometrie). Definizione: due codici lineari C e C' in Fqn si dicono equivalenti se esiste f: Fqn ---> Fqn in GP(n,Fq) tale che f(C)=C'.
    Teorema (Florence MacWlliams) Siano C e C' due codici linearin in Fqn, se C e C' sono isometrici, ossia, se esiste f:C--->C' isomorfismo che conserva la distanza, allora C e C' sono equivalenti, ossia f estende a un'isometria di Fqn. S.D. Per una dimostrazione vedi qui, il pdf e' disponibile.
    Proposizione: due codici equivalenti hanno lo stesso peso e la stessa distanza. Osservazione: sia G la matrice generatrice di un codice C, le seguenti operazioni sulle righe di G producono una nuova matrice generatrice di C: scambiare due righe tra loro, moltiplicare una riga per uno scalare diverso da zero, sostituire una riga con la riga stessa sommata a una combinazione lineare delle altre. Le seguenti operazioni sulle colonne producono una matrice, che definisce, come matrice generatrice, un codice C' equivalente a C. Teorema: ogni codice lineare C e' equivalente a un codice C' che ha una matrice generatrice in forma standard. Dim: applicare la riduzione di Gauss e l'osservazione precedente. Proposizione: Sia G=(Ik|X) matrice generatrice di un codice C in forma standard, allora la matrice H=(-Xt|In-k) e' una matrice di controllo di parita' per C. Processo di codifica per un codice lineare. Message digits, check digits. Processo di decodifica a minima distanza (DMD) per un codice lineare. Sia C un codice lineare in Fqn di dimensione k. Si considera lo spazio vettoriale quoziente Fqn/C. Tale spazio ha dimensione n-k e ha qn-k elementi, ognuno di questi e', come sappiamo, una classe laterale (coset). Osservazione importante: nella decodifica a minima distanza di una parola ricevuta w con una parola x in C, la parola w-x e' una parola della classe di w. Poiche' d(w,x)=wt(w-x), la parola w-x e' una parola nella classe di w di peso minimo. Siamo quindi interessati a individuare, in ogni classe, le parole di peso minimo. In ogni classe scegliamo una parola di peso minimo, questa e' per definizione il coset leader della classe. La tabella standard (standard array) e' costituita in questo modo: la prima colonna, ai1, di qn-k elementi, da' la lista dei coset leader, con a11=0. Per ogni coset leader la riga corrispondente da' la lista degli elementi della classe, ossia fissato i, per ogni j, aij=a1j+ai1. Si segnalano con un asterisco le classi che hanno piu' di un elemento minimo. Il procedimento di decododifica a minima distanza e' il seguente: ricevo w. Controllo la tabella e individuo il capoclasse err(w) corrispondente a w. Decodifico con x=w-err(w), che e' la prima parola della colonna di w. Se w appartiene a una riga asteriscata o richiedo la trasmissione (decodifica incompleta) e procedo come sopra (decodifica completa).
    Decodifica a sindrome. Sia C un codice lineare [n,k,d]q, con matrice generatrice G e matrice di controllo di parita' H. Definiamo l'applicazione lineare SH:Fqn--->Fqn-k come SH(w)=wHt. L'elemento SH(w) si dice sindrome di w. L'applicazione lineare SH e' suriettiva, il suo nucleo e' C. Proposizione: L'applicazione SH induce un'isomorfismo da Fqn/C in Fqn-k. Dim: immediata utilizzando quanto fatto in precedenza. Costruiamo una tavola detta syndrome look-up table nel modo seguente: la prima colonna coincide con la prima colonna dello standard array, da' quindi una lista di coset leader, con primo elemento 0. La seconda colonna associa ad ogni coset leader u la sua sindrome SH(u). Anche qui indichiamo con asterisco le righe (classi) in cui non c'e' un'unica parola di peso minimo. Miglioriamo questa tabella. Proposizione: l'applicazione SH e' iniettiva su Be(0), dove e e' come al solito la parte intera inferiore di d-1/2 e rappresenta la capacita' correttiva del codice.
    Corollario: ogni parola in Be(0) e' l'unica parola di peso minimo nella propria classe.
    Costruiamo la syndrome look-up table mettendo, per prime nella prima colonna, tutte le parole in Be(0), partendo da 0. Le righe (classi) corrispondenti NON saranno asteriscate. Completiamo con i rimanenti coset leaders.
    Procedimento di decodifica a sindrome (sempre DMD): ricevo la parola w. Passo 1: calcolo SH(w). Passo 2: mediante la tabella syndrome look-up table individuo il coset leader corrispondente err(w). Passo 3: decodifico con x=w-err(w). Osservazione: se SH(w) appartiene a SH(Be(0))--ossia se w sta sulla riga corrispondente a un coset leader in Be(0)--la decodifica e' esatta, ossia x e' l'unica parola di C tale che d(w,x)= d(w,C). Esempi.
  19. 25.11.2013 (ore 2)
    Lemma[versione del bound di Singleton per codici lineari] sia C un codice lineare [n,k,d]q. Allora d≤ n-k+1.
    Denotiamo con Vnq(s) il numero dei punti contenuti in una palla chiusa Bs(x) in An, che abbiamo determinato in precedenza e ricordiamo il seguente limite superiore: per un codice di tipo (n,M,d)q si ha M≤ qn/ Vnq(e), dove e e' la parte inferiore intera di (d-1)/2 (Hamming bound, e' un esempio di upper bound per M). Costruiamo i codici di Hamming, che sono un esempio di codici linerari perfetti:
    definizione di spazio proiettivo P(Fqr); P(Fqr); contiene esattamente s=(qr-1)/(q-1) punti; definizione di un codice Ham(r,q) mediante la matrice di controllo di parita'. I parametri di Ham(r,q) sono [s,s-r,3]q e vale l'uguaglianza nell'Hamming bound.
    I codici Ham(r,q) sono tutti equivalenti come codici lineari (per esercizio).
    Proposizione: Sia C un codice lineare [n,k,d]q (ricordiamo che k≤ n e d≤ n-k+1). Allora:
    (i) [costruzione per allungamento] per ogni r≥ 1 esiste un codice lineare [n+r,k,d]q;
    (ii)[estrazione di un sottocodice]per ogni 1 ≤ r≤ k-1 esiste un sotto-codice lineare [n,k-r,d]q di C;
    (iii)[puncturing] per ogni 1 ≤ r≤ d-1 esiste un sotto-codice lineare [n-r,k,d-r]q di C;
    (iv) per ogni 1 ≤ r≤ d-1 esiste un codice lineare [n,k,d-r]q di C;
    (v) per ogni 1 ≤ r≤ k-1 esiste un codice lineare [n-r,k-r,d]q di C;
    (vi) siano C1 e C2 codici lineari con parametri rispettivamente [n1,k1,d1]q e [n2,k2,d2]q. Si definisce il codice C1⊕C2 con parametri [n1+n1,k1+k2,min{d1,d2}]q.
  20. 28.11.2014 (ore 3) Codici MDS (maximum distance separable): un codice [n,k,d]q si dice MDS se d=n-k+1. Teorema di unisolvenza: Siano a1,...,am elementi distinti in un campo K. Sia n≤ m. Allora l'applicazione eva:k[x]≤n-1---> Km cosi' definita: eva(p)=(p(a1),...,p(am)) e' lineare e iniettiva. Se n=m e' un isomorfismo di spazi vettoriali. Prima costruzione dei codici di Reed-Solomon RS(k,q); parametri [q-1,k,n-k+1]q. Bounds: definiamo Aq(n,d) la taglia massima raggiungibile da un codice di lunghezza n e distanza d; definiamo Bq(n,d) la taglia massima raggiungibile da un codice lineare di lunghezza n e distanza d.
    Si ha: Bq(n,d)≤ Aq(n,d)≤ qn;
    Bq(n,1)≤ Aq(n,1)=qn;
    Bq(n,n)≤ Aq(n,n)=q.
    Teorema: fissata la potenza di un primo q, siano n,k,d interi tali che: 2 ≤ d ≤ n, 1 ≤ k ≤ n e Vn-1q(d-2)≤ n-k. Allora esiste un codice lineare [n,k,d']q, con d' ≥ d. Corollario [Gilbert-Varshamov lower bound]: Fissato q, per d,n tali che 2 ≤ d ≤ n si ha;
    Bq(n,d)≥ qn-⌈ logq( Vn-1q(d-2)+1)⌉ ≥ qn-1/ Vn-1q(d-2).
    Introduzione ai bounds asintotici.
    Per iniziare a curiosare: l'introduzione del seguente articolo di M. Cheraghchi, A. Shokrollahi, A. Wigderson presenta in modo preciso ed estremamente chiaro i bounds e cosa significa costruire codici con parametri estremali, anche per bounds asintotici: Computational Hardness and Explicit Constructions of Error Correcting Codes .
    Nelle seguenti note di Y. Lindell si trova il passaggio dal bound di Gilbert-Varshamov alla sua versione asintotica, con notazioni compatibili con quelle del libro di testo.
    In questa pagina si trova l'aggioramento continuo dei bounds sui parametri di vari tipi di codici, la pagina e' esaustiva.
  21. 2.12.2013 (ore 2)
    Bounds asintotici; versione asintotica del bound di Gilbert-Varshamov. Note sintetiche su quanto trattato in questa lezione e nella precedente.
  22. 5.12.2013 (ore 3)
    Codici ciclici: definizione e teorema di classificazione: i codici lineari ciclici in Fqn sono in corrispondenza biunivoca con i divisori monici del polinomio xn-1 in Fq[x]. Questo deriva dal fatto che i codici ciclici in Fqn sono in corrispondenza biunivoca con gli ideali dell'anello Fqn[x]/(xn-1) e quindi con gli ideali di Fqn[x] che contengono il polinomio xn-1.
    Sia g di grado n-k in Fq[x] il polinomio generatore del codice ciclico C in Fqn, allora la dimensione di C e' k. Matrice generatrice di un codice ciclico a partire dal polinomio generatore. Esempi di codici ciclici. Esempio di codici ciclici in Fqn equivalenti e generati da polinomi diversi. Introduzione alla decodifica dei codici ciclici e alla costruzione di una matrice di controllo di parita' a partire dal polinomio generatore g. L'argomento verra' ripreso nella prossima lezione.
  23. 9.12.2013 (ore 2)
    Proposizione: l'ortogonale di un codice ciclico e' ciclico. Sia C un codice ciclico in Fqn con polinomio generatore g di grado (n-k). Si definisce il polinomio di controllo di parita' di C. Matrice di controllo di parita' di un codice ciclico. Per un codice ciclico e' sempre possibile determinare una matrice H di controllo di parita' della forma (In-k|A). Utilizzando H, una parola s in Fqn-k e' la sindrome di una parola w in Fqn se e solo se per i polinomi corrispondenti si ha che s(x) e' il resto della divisione del polinomio w(x) per g. Si ha quindi che s e w, come elementi di Fqn, appartengono alla stessa classe laterale in Fqn/C e quindi, se wt(s) non supera la capacita' correttiva del codice, la decodifica di w a minima distanza e' w-s. Esempi.
    Un articolo utile sui codici ciclici: An introduction to linear and cyclic codes di D. Augot, E. Betti e E. Orsini.
  24. 12.12.2013 (ore 3)
    Decodifica di codici ciclici: algoritmo di decodofica error trapping ; esempi (Sezione 7.4 del testo di riferimento).
  25. 16.12.2013 (ore 2)
    Lezione seminariale tenuta da Tomaso Trinci, attualmente studente del primo anno del corso di Laura Magistrale in Matematica (presente la docente): presentazione di uno schema di rintracciamento traditori interno al sistema di protezione Advanced Access Content System (AACS), utilizzato per Blu-ray e HD DVD. Tale schema di rintracciamento e' costruito utilizzando due codici Reed-Solomon concatenati (per approfondimenti vedere ad esempio Traitor Tracing for Prerecorded and Recordable Media e relativa bibliografia).
    Errori di tipo burst e codici ciclici correttori di errori di tipo burst; descrizione dell'algoritmo di decodifica, senza dimostrazione (Sezione 7.5 del testo di riferimento).
AVVISI:

ATTENZIONE: il giorno giovedi' 29 ottobre 2013 e i giovedi' successivi la lezione iniziera' alle ore 14.30.

Il corso termina il 16 dicembre 2013.