Matematica Discreta III Lezione del giorno 31 marzo 2008 Richiami sulla teoria dei campi e degli spazi vettoriali. Ricordiamo che un campo F è un insieme non vuoto dotato di 2 operazioni (indicate formalmente con somma x+y e prodotto xy) tali che 1) F sia un gruppo commutativo rispetto alla somma (valgono la proprietà associativa x+(y+z)=(x+y)+z x,y,zF e la proprietà commutativa x+y=y+x x,yF; esiste un elemento neutro 0FF tale che x+0F=x xF; per ogni elemento xF esiste un elemento opposto -xF tale che x+(-x)= 0F) 2) F sia un monoide commutativo rispetto al prodotto (valgono la proprietà associativa x(yz)=(xy)z x,y,zF e la proprietà commutativa xy=yx x,yF; esiste un elemento neutro 1FF tale che x1F=x xF) 3) vale la proprietà distributiva x(y+z)=xy+xz x,y,zF 4) per ogni elemento xF, x≠0F esiste un elemento inverso x-1F tale che xx-1=1F (se sono verificate solo 1),2),3) si dice che F è semplicemente un anello commutativo con unità). Esempi di campi sono il campo Q dei numeri razionali e il campo R dei numeri reali rispetto alle usuali operazioni di somma e prodotto. Per ogni intero n>1, l’insieme Zn = {[0], [1],…., [n-1]} delle classi di congruenza modulo n è un anello commutativo con unità rispetto alle operazioni di somma e prodotto di classi: [x]+[y] = [x+y] [x][y] = [xy] L’anello Zn è un campo (finito di cardinalità n) se e solo se n è un numero primo. Se F è un campo, un F-spazio vettoriale è un insieme non vuoto V (i cui elementi sono detti vettori, mentre gli elementi di F sono detti scalari) in cui è definita un’operazione interna di somma di vettori v+wV (con v,wV) rispetto a cui V è un gruppo commutativo (l’elemento neutro 0V è detto vettore nullo), e in cui è definita un’operazione di prodotto esterno αvV (con αF, vV) che soddisfa le seguenti proprietà: - (α+β)v=αv+βv α,βF, vV - α(v+w)=αv+αw αF, v,wV - (αβ)v=α(βv) α,βF, vV - 1Fv=v vV E’ facile verificare che per ogni vettore vV si ha 0Fv=0V . Per ogni numero naturale n ed ogni campo F, l’insieme Fn = {(α1,….., αn) / αiF} delle n-uple di elementi di F è un F-spazio vettoriale rispetto alle operazioni: (α1,…..,αn)+(β1,…..,βn)=(α1+β1,…..,αn+βn) α(α1,….., αn)=(αα1,…..,ααn). Se V è un F-spazio vettoriale e se SV è un sottoinsieme non vuoto, una combinazione lineare di vettori di S a coefficienti in F è un vettore della forma α1v1+…..+ αkvk con αiF, viS (gli αi sono detti coefficienti della combinazione lineare). Un sottoinsieme non vuoto SV è un insieme di vettori linearmente indipendenti se l’unica combinazione lineare di vettori di S a coefficienti in F che dà come risultato il vettore nullo 0V è quella con coefficienti tutti nulli; se invece esiste una combinazione lineare di vettori di S a coefficienti in F non tutti nulli che dà come risultato il vettore nullo 0V, si dice che S è un insieme di vettori linearmente indipendenti. Un sottoinsieme non vuoto SV è un insieme di vettori generatori di V se ogni vettore di V è combinazione lineare di vettori di S a coefficienti in F. Il sottoinsieme non vuoto SV è una base di V se è un insieme di vettori linearmente indipendenti e generatori. In ogni F-spazio vettoriale V esiste una base, e tutte le basi di V hanno la stessa cardinalità (detta dimensione di V su F e indicata con dimFV): ci limiteremo sempre al caso di spazi vettoriali di dimensione finita. Se B={vi}i=1,…,n è una base di V, ogni vettore vV si scrive come combinazione lineare dei vettori vi a coefficienti in F e tali coefficienti sono univocamente determinanti da v: infatti se v= α i v i = β i v i allora (α i - β i )v i =0V da cui αi=βi per ogni i=1,…,n, essendo i vettori i 1,.., n i 1,.., n i 1,.., n {vi}i=1,…,n linearmente indipendenti. Per ogni numero naturale n ed ogni campo F, un esempio di base dell’F- spazio vettoriale Fn è costituita dagli n vettori ei=(0F,0F,…,1F,…..,0F) con tutti gli elementi nulli tranne l’elemento di posto i che è uguale a 1F : in particolare dimFFn=n. Se V è un F-spazio vettoriale e se WV è un sottoinsieme non vuoto, W è un F-sottospazio vettoriale di V se W è esso stesso un F-spazio vettoriale rispetto alle operazioni di V. Se V è un F-spazio vettoriale e se WV è un sottoinsieme non vuoto, W è un F-sottospazio vettoriale di V se e solo se: - v+wW v,wW - αvW vW, αF Ogni sottospazio contiene il vettore nullo 0V . Se WV è un sottospazio di V si ha sempre dimFW≤ dimFV e inoltre l’eguaglianza dimFW= dimFV vale solo per V=W. Per ogni numero naturale n ed ogni campo F, considerato l’F- spazio vettoriale Fn, e due vettori v=(α1,…..,αn), w=(β1,…..,βn)Fn, si definisce prodotto scalare di v e w il seguente elemento del campo F: vw=α1β1+…….+αn βn Valgono le seguenti proprietà: - vw=wv v,wV - (αv)w=v(αw) αF, v,wV - (v+z)w=vw+zw v,w,zV Se F é un campo, considerata una matrice nxm (n righe , m colonne) ad elementi in F: M = (αij) i=1,…,n; j=1,….m si può identificare ognuna delle n righe: Ri = (αi1 ………. αim) i=1,….,n m con un vettore dello spazio F , ed ognuna delle m colonne: α 1j . Cj = j=1,….,m . α nj con un vettore dello spazio Fn. Con tale identificazione, date due matrici ad elementi in F: M = (αij) i=1,…,n; j=1,….m (matrice nxm) T = (βij) i=1,…,m; j=1,….r (matrice mxr) in cui il numero delle colonne della prima coincide con il numero delle righe della seconda, si definisce il prodotto righe per colonne di M per T uguale alla matrice nxr in cui il generico elemento ij di riga i e colonna j coincide con il prodotto scalare della riga i di M per la colonna j di T: MT = (ij) dove ij= αi1β1j+…….+αimβmj i=1,…,n; j=1,…..,r In particolare se M=(α1,…..,αm) è una matrice 1xm (quindi un vettore riga di Fm), e T è una matrice mxr (con r generico) allora si verifica facilmente che il prodotto righe per colonne MT (che è una matrice 1xr dunque un vettore riga di Fr) coincide con la seguente somma: MT = α1R1+….. αmRm dove R1,….. , Rm sono i vettori riga della matrice T (quindi coincide con la combinazione lineare dei vettori riga di M avente per coefficienti gli elementi dell’unica riga di M). Spazi vettoriali sul campo Z2 . Se rappresentiamo le classi del campo F=Z2={[0], [1]} delle classi di congruenza modulo 2 con i numeri 0, 1, le operazioni di somma e prodotto in tale campo seguono le seguenti regole: 0+0=0, 0+1=1+0=1, 1+1=0, 00=10=01=0, 11=1 In particolare se V è un qualunque Z2-spazio vettoriale, per ogni vettore wV si ha: w+w =1w+1w=(1+1)w=0w=0V dunque w= -w per ogni vettore w. Inoltre una combinazione lineare dei vettori v1,…..,vkV a coefficienti in Z2 sarà (essendo 0,1 gli unici valori possibili dei coefficienti) semplicemente una somma di alcuni dei vettori v1,…..,vkV (quelli il cui coefficiente è =1), eccetto nel caso in cui tutti i coefficienti siano nulli. Se V è uno Z2-spazio vettoriale e se WV è un sottoinsieme non vuoto, W è un F-sottospazio vettoriale di V se e solo se è chiuso rispetto alla somma: v+wW v,wW perché la seconda proprietà (αvW vW, αF) è certamente verificata da W per α=0,1. Codici lineari. Nello studio dei codici (binari) di lunghezza n come sottoinsiemi di {0,1}n, converremo da ora in poi di identificare l’insieme delle cifre dell’alfabeto binario {0,1} con gli elementi del campo Z2 e le parole di lunghezza n di {0,1}n con i vettori dello spazio vettoriale Z2n sul campo Z2. Dunque due parole di lunghezza n in Z2n si sommano bit per bit seguendo le regole dell’operazione di somma in Z2. Un codice CZ2n è detto codice lineare se C è uno Z2-sottospazio vettoriale di Z2n, e dunque (secondo quanto osservato sopra) se C è chiuso rispetto alla somma di parole: v+wC v,wC In particolare ogni codice lineare contiene la parola nulla 0=(00….0) . Per quanto premesso sugli spazi vettoriali sul campo Z2, per ogni parola wZ2n si ha w= -w . Esempio: il codice di ripetizione di lunghezza n: C={00….0, 11….1}{0,1}n è un codice lineare perché si verifica facilmente essere chiuso rispetto alla somma. Il codice C={ 00000, 01101, 10110, 11011 } è un codice lineare per gli stessi motivi. Il codice C={ 00000, 00111, 00100, 11111 } non è un codice lineare perché per esempio: 00111+00100=00011C Se CZ2n è un codice lineare, essendo C un sottospazio di V=Z2n, si può considerare la sua dimensione come spazio vettoriale su Z2 , detta dimensione del codice : si ha sempre k≤dimFZ2n=n, e k=n se e solo se C= Z2n. Se k=dimFC, esiste una base di C di cardinalità k: B = {v1,…..,vk} ed ogni parola vC si rappresenta come combinazione lineare dei vettori vi a coefficienti in F univocamente determinati: v=α1v1+…..+ αkvk con αi=0,1 (come visto sopra, in pratica ogni parola di C, tranne la parola identicamente nulla, è somma di alcune delle parole della base). Poiché ogni coefficiente assume 2 valori possibili, il numero di parole in C è 2 k: dunque se k=dimFC, si ha necessariamente C=2k (in particolare ogni codice lineare ha sempre cardinalità uguale ad una potenza di 2). Se CZ2n è un codice lineare e se k=dimFC, si ha sempre 1≤k≤n (perché studiamo solo codici di cardinalità >1). Esempio: il codice di ripetizione di lunghezza n: C={00….0, 11….1}{0,1}n è un codice lineare di cardinalità 21 dunque di dimensione k=1: una base è B={11….1}. Il codice C={ 00000, 01101, 10110, 11011 } è un codice lineare di cardinalità 22 dunque di dimensione k=2: una base è per esempio B={01101, 10110}. Poiché in un codice lineare la dimensione è strettamente legata alla cardinalità, per un codice lineare C si considerano 3 parametri: lunghezza n, dimensione k, distanza . In tale caso diremo che C è un [n, k, ]-codice lineare (notare che C é anche un (n, 2k, )-codice nella terminologia dei codici generici) . In particolare il rateo di informazione di un [n, k, ]-codice lineare è (log22k)/n=k/n , quindi il rateo di informazione di un codice lineare si ottiene dividendo la dimensione per la lunghezza. Vedremo ora che in un codice lineare è computazionalmente più semplice il calcolo della distanza . Data una parola wZ2n definiamo peso di w il numero (w) dei bits non nulli di w. E’ ovvio che il peso di una parola coincide con la sua distanza dalla parola nulla: (w)=(w,0), e che l’unica parola di peso 0 è la parola nulla. Teorema. 1) Se v, wZ2n si ha (v,w)=(v+w) 2) Se C è un [n, k, ]-codice lineare, la distanza di C coincide con il peso minimo di una parola non nulla di C. Dimostrazione: 1) Il bit in posizione j di v+w si ottiene sommando i corrispondenti bits in posizione j di v, w, dunque è non nullo (cioè =1) se e solo se i corrispondenti bits di v, w sono diversi: si conclude che il numero di bits non nulli di v+w coincide con il numero di bits in cui v, w differiscono, da cui la tesi 2) Sia A l’insieme dei pesi delle parole non nulle di C, e sia B l’insieme delle distanze di parole distinte di C. Dimostriamo che A=B. Se xA, si ha x=(w) dove wC, w≠0: ma (w)=(w,0)B. Viceversa se xB, si ha x=(v,w), con v,wC, v≠w, e per la 1) (v,w)=(v+w)B (perché v+wC essendo C lineare, e v+w≠0 essendo v≠w= -w). Poiché gli elementi minimali di A, B sono rispettivamente il peso minimo di una parola non nulla di C e la distanza di C, si ottiene la tesi. Dunque, per un [n, k, ]-codice lineare C di cardinalità m=2k, il calcolo della distanza si può effettuare calcolando il peso minimo delle m-1 parole non nulle di C, invece di calcolare la distanza minima fra m(m-1)/2 parole distinte di C. Esempio: nel codice lineare C={ 00000, 01101, 10110, 11011 } la distanza è 3, come si vede esaminando i pesi delle 3 parole non nulle (2 di peso 3, e 1 di peso 4).