Ordini Parziali - Reticoli
Insiemi parzialmente ordinati Nell’analisi di programmi ordini parziali e reticoli giocano un ruolo importantissimo Dato un insieme L, un ordine parziale su L è una relazione £: L ´ L ® {vero, falso} che gode delle proprietà: riflessiva: " l Î L : l £ l transitiva: " l1, l2, l3 Î L : l1£ l2 Ù l2£ l3 Þ l1£ l3 antisimmetrica: " l1, l2 Î L : l1£ l2 Ù l2£ l1 Þ l1= l2 Un insieme parzialmente ordinato (L, £) è un insieme L sul quale è definito un ordine parziale £. Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio a b c d e f g L= {a,b,c,d,e,f,g} £ ={(a,c), (a,e), (b,d), (b,f), (c,g), (d,g), (e,g), (f,g)}T (L, £) è un insieme parzialmente ordinato (finito) Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio N ´ N a £N ´ N c b c b £N ´ N c a (x1,y1) £N ´ N (x2,y2) Û x1£N x2 Ù y1£N y2 (N ´ N, £N ´ N) è un insieme parzialmente ordinato (infinito) Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio Tutti i possibili insiemi ordinati con tre elementi: Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi lub e glb Dato un insieme parzialmente ordinato (L, £), un insieme Y di L ha un elemento l come upper bound se " l’ Î Y : l’ £ l un insieme Y di L ha un elemento l come lower bound se " l’ Î Y : l £ l’ Un least upper bound (lub) di Y è un upper bound l0 di Y che soddisfa la seguente proprietà: l’ è un upper bound di Y Þ l0 £ l’ Un greatest lower bound (glb) di Y è un lower bound l0 di Y che soddisfa la seguente proprietà: l’ è un lower bound di Y Þ l’ £ l0 Se un sottoinsieme Y di L ha un least upper bound, questo è unico (per la proprietà antisimmetrica dell’ordine parziale £) Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio N ´ N upper bounds di Y Y lub(Y) glb(Y) lower bounds di Y (x1,y1) £N ´ N (x2,y2) Û x1£N x2 Ù y1£N y2 Tino Cortesi Tecniche di Analisi di Programmi
Esempio ^ c d b a g j i h f e T lub({b,c})= ? Gli upper bounds dell’insieme {b,c} sono {h,i,T} T i h e questo insieme non ha un minimo elemento: Il lub non c’è ! Tino Cortesi Tecniche di Analisi di Programmi
Esempio ^ lub({a,b})= ? c d b a g j i h f e T Gli upper bounds dell’insieme {a,b} sono {T,h,i,f} i h f T e questo insieme ha un f come minimo elemento: lub({a,b})= f Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Reticoli Un reticolo è un insieme parzialmente ordinato (L, £) tale che per ogni coppia di elementi di L esiste il least upper bound ed il greatest lower bound. Se L è un insieme parzialmente ordinato non vuoto, e x£y, allora lub({x,y}) = y glb({x,y}) = x. Per dimostrare che L è un reticolo basterà quindi verificare che per ogni coppia di elementi incomparabili esistano sia lub che glb. Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio Rivediamo tutti i possibili insiemi ordinati con tre elementi: sono reticoli? SI NO NO NO NO Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio a b c d e f g Y L= {a,b,c,d,e,f,g} £ ={(a,c), (a,e), (b,d), (b,f), (c,g), (d,g), (e,g), (f,g)}T (L,£) non è un reticolo: sia a che b sono lower bounds di Y, ma a e b sono incomparabili Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Catene Dato un insieme parzialmente ordinato (L,£), un sottoinsieme Y di L è una catena se " l1, l2 Î Y : (l1£ l2) Ú (l2£ l1) ovvero una catena è un sottoinsieme di L totalmente ordinato. Un insieme parzialmente ordinato (L,£) ha altezza finita se e solo se tutte le catene di L sono finite Una sequenza (ln)nÎN di elementi di L è una catena ascendente se n £ m Þ ln£ lm Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio: catene c d b a g j i h f e T ^ c d b a g j i h f e T ^ Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Insiemi Diretti Sia (P,£P) un insieme parzialmente ordinato. Un sottoinsieme S di P si dice diretto se per ogni sottoinsieme finito F di S esiste un elemento di S che appartiene all’insieme degli upper bounds di F. Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio 2 3 4 1 -1 -2 -3 -4 ^ T F S L= Z È {T,^} " n Î Z : ^ £ n £ T S non è un insieme diretto: non esiste un elemento di S che appartiene all’insieme degli upper bounds di F Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio S 2 3 4 1 -1 -2 -3 -4 ^ T F L= Z È {T,^} " n Î Z : ^ £ n £ T S è un insieme diretto: per ogni F finito esiste un elemento di S che appartiene all’insieme degli upper bounds di F Tino Cortesi Tecniche di Analisi di Programmi
Insiemi diretti e catene b a g j i h f e T ^ Sia (P,£P) un insieme parzialmente ordinato. Ogni catena non vuota di P è un insieme diretto. 6 5 4 3 2 1 Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Insiemi diretti In (Ã(N),Í) l’insieme S={X Í N | X è finito} è diretto? In (Ã(N),Í) l’insieme S={X Í N | N-X è finito} è diretto? Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi CPO Un insieme parzialmente ordinato (P,£P) si dice CPO (insieme completo parzialmente ordinato) se: Esiste un elemento minimo (bottom) Per ogni sottoinsieme diretto S di P esiste lub(S). Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Reticoli completi Un reticolo completo è un insieme parzialmente ordinato (L, £) tale che tutti i sottoinsiemi di L hanno least upper bound e greatest lower bound. Se (L, £) è un reticolo completo, si denotano: ^ = lub(Æ) bottom element T = glb(L) top element Ogni reticolo finito è un reticolo completo Ogni reticolo completo è un CPO Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio {1,2,3} {1,2} {1,3} {2,3} {1} {2} {3} L= Ã({1,2,3}) £ = Í lub(Y) = ÈY glb(Y) = ÇY Æ Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio {1,2,3} lub(Y) {1,2} {1,3} {2,3} Y {1} {2} {3} L= Ã({1,2,3}) £ = Í lub(Y) = ÈY glb(Y) = ÇY Æ glb(Y) Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio T -4 -3 -2 -1 1 2 3 4 ^ L= Z È {T,^} " n Î Z : ^ £ n £ T Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio L= Z+ £ ordine totale su Z+ lub = max glb = min E’ un reticolo, ma non completo: Ad es. l’insieme dei pari non ha lub 6 5 4 3 2 1 Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio T L= Z+ È {T} £ ordine totale su Z+ È {T} lub = max glb = min E’ un reticolo completo 6 5 4 3 2 1 Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempi L=R (numeri reali) con £ ordine totale (R, £ ) non è un reticolo completo: ad esempio {x Î R | x > 2} non ha lub Per ogni x<y in R, ([x,y], £ ) è un reticolo completo L=Q (numeri razionali) con £ ordine totale (Q, £ ) non è un reticolo completo E non basta aggiungere un top ed un bottom per ottenere la completezza: l’insieme {x Î Q | x2 < 2} ha upper bounds ma non ha un least upper bound. Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Teorema: Se (L, £) è un insieme parzialmente ordinato, sono equivalenti: L è un reticolo completo ogni sottoinsieme di L ha un least upper bound ogni sottoinsieme di L ha un greatest lower bound Dimostrazione: 1 Þ 2 e 1 Þ 3 seguono immediatamente dalla definizione Per mostrare che 2 Þ 1, basta definire per ogni Y Í L glb(Y) = lub({lÎ L | " l’ Î Y : l £ l’}) Tutti gli elementi dell’insieme a destra sono lower bounds dell’insieme Y. Quindi lub({...}) definisce un lower bound di Y. Poiché tutti i lower bound di Y appartengono all’insieme a destra, lub({...}) definisce il greatest lower bound di Y. Tino Cortesi Tecniche di Analisi di Programmi
Tecniche di Analisi di Programmi Esempio upper bounds di Z {1,2,3} glb(Y)= lub({lÎ L | " l’ Î Y : l £ l’}) Y {1,2} {1,3} {2,3} lub(Z) {1} {2} {3} Z= {lÎ L | " l’ Î Y : l £ l’} Æ Tino Cortesi Tecniche di Analisi di Programmi