La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Anno accademico 2010-2011 1 Algoritmi e complessità

Presentazioni simili


Presentazione sul tema: "Anno accademico 2010-2011 1 Algoritmi e complessità"— Transcript della presentazione:

1 Anno accademico Algoritmi e complessità

2 Anno accademico Sommario La complessitàLa complessità Complessità in tempo e spazio Complessità in tempo e spazio Complessità asintotica Complessità asintotica Algoritmi e complessitàAlgoritmi e complessità Strutture dati: array, liste, alberi, tabelle hash Strutture dati: array, liste, alberi, tabelle hash Ricerca e ordinamento Ricerca e ordinamento La macchina di Turing e le classi di complessitàLa macchina di Turing e le classi di complessità Ai limiti del calcolo: i problemi intrinsecamente difficiliAi limiti del calcolo: i problemi intrinsecamente difficili

3 Anno accademico La complessità

4 Anno accademico Lanalisi di complessità definisce le risorse teoricamente consumate da un algoritmoLanalisi di complessità definisce le risorse teoricamente consumate da un algoritmo Complessità temporale Complessità temporale: tempo necessario allesecuzione del- lalgoritmo Complessità spaziale Complessità spaziale: memoria necessaria allesecuzione del- lalgoritmo Poiché ad ogni algoritmo corrispondono più implementazioni (più programmi), lo studio della complessità non definisce esattamente il tempo e la memoria usata: si concentra sulle proprietà che sono indipendenti dallimplementazione, for- nendo unidea di quanto sia efficiente un algoritmo 4 La complessità

5 Anno accademico Complessità temporaleComplessità temporale Si contano le istruzioni eseguite dallalgoritmo Poiché le istruzioni potrebbero essere di natura diversa, si individuano quelle che incidono principalmente sul tempo di esecuzione Le operazioni in virgola mobile Le operazioni in virgola mobile: le più lente da eseguire per una CPU; sono predominanti se il loro numero è paragonabile al numero delle altre istruzioni Le istruzioni di controllo if le istruzioni più frequenti Le istruzioni di controllo (gli if ) e le istruzioni più frequenti (sono predominanti se sono in numero molto superiore rispetto alle altre istruzioni) Le istruzioni di accesso alla memoria secondaria e alle periferiche: sono decine di migliaia di volte più lente delle istruzioni svolte nella memoria principale Le istruzioni di accesso alla memoria secondaria e alle periferiche: sono decine di migliaia di volte più lente delle istruzioni svolte nella memoria principale; se unapplicazione ne richiede molte, queste potrebbero essere predominanti (ad es., nei database, lanalisi di complessità è concentrata sugli accessi al disco) 5 Che cosa si misura? 1

6 Anno accademico Complessità spazialeComplessità spaziale Si misurano le posizioni di memoria occupate dai dati necessari allo svolgimento dellalgoritmo La complessità spaziale sarà misurata relativamente alla memoria principale se i dati dellalgoritmo possono essere allocati in memoria principale, in base alloccupazione di memoria secondaria quando le strutture dati dellalgoritmo sono troppo grandi per poter risiedere nella memoria centrale 6 Che cosa si misura? 2

7 Anno accademico Lo studio della complessità si concentra su i casi in cui il problema è grande: non importa se un programma di contabilità impiega 1 o 100 millisecondi a calcolare il bilancio cambia molto se il programma della segreteria impiega 1 o 10 secondi a trovare i dati di uno studente nellarchivio Complessità asintoticaComplessità asintotica Definisce le risorse usate da un algoritmo al crescere della dimensione del problema affrontato Ad esempio: come cambia il tempo di accesso ai dati quando cresce il numero degli studenti nellarchivio della segreteria 7 Complessità asintotica

8 Anno accademico ordine di grandezzaFormalmente, si usa il concetto matematico di ordine di grandezza dimensione sia n la dimensione del problema, cioè la dimensione dellinput dellalgoritmo tempo sia T ( n ) il tempo impiegato per lesecuzione dellalgoritmo quando lingresso ha dimensione n sia f ( n ) una qualsiasi funzione di n, ad esempio 3, n, n 2, n 5, 2 n è dellordine di f ( n ) O ( f ( n )) T ( n ) f ( n ) Si dice che la complessità asintotica dellalgoritmo è dellordine di f ( n ) e si scrive O ( f ( n )) se esiste una costante tale che T ( n ) f ( n ) Osservazione importante:Osservazione importante: in base alla definizione data, algoritmi che differiscono solo per una costante moltiplicativa hanno lo stesso ordine di complessità Esempio: O ( n )Esempio: due algoritmi che richiedono 4n e 7n operazioni sono entrambi O ( n ) 8 Complessità temporale asintotica 1

9 Anno accademico Informalmente… Lordine O ( f ( n )) fornisce una misura della complessità tempo- rale di ogni programma che implementa lalgoritmo Esempio:Esempio: Calcolare la somma degli elementi di un array n : numero di elementi dellarray complessità: O ( n ) 9 Complessità temporale asintotica 2

10 Anno accademico Un algoritmo può richiedere un numero di operazioni diverse per ingressi di dimensione uguale: Complessità media Complessità media: complessità valutata su tutti i possibili ingressi Complessità nel caso peggiore Complessità nel caso peggiore: complessità dellalgoritmo per lingresso che richiede più operazioni Di solito, quando si parla di complessità, ci si riferisce alla complessità nel caso peggiore 10 Complessità media e relativa al caso peggiore

11 Anno accademico Algoritmi e complessità

12 Anno accademico ArrayArray n : numero degli elementi dellarray Ricerca/inserimento/cancellazione di un elemento Complessità O ( n ) Liste sempliciListe semplici n : numero delle posizioni nella lista Ricerca/cancellazione di un elemento Complessità O ( n ) Inserimento di un elemento allinizio della lista (in testa) Complessità O ( 1 ) 12 Complessità asintotica: array e liste

13 Anno accademico Albero binarioAlbero binario, cio è tale che da ogni nodo si dipartono al pi ù due archi, che soddisfa le seguenti propriet à : ogni nodo v contiene un elemento elem ( v ) cui è associata una chiave chiave ( v ) presa da un dominio totalmente ordinato le chiavi nel sottoalbero sinistro di v sono tutte chiave ( v ) le chiavi nel sottoalbero destro di v sono tutte chiave ( v ) 13 Complessità asintotica: alberi binari di ricerca 1 Albero binario di ricerca Albero binario non di ricerca

14 Anno accademico Alberi binari di ricercaAlberi binari di ricerca n : numero dei nodi dellalbero Inserire, eliminare o ricercare un elemento in un albero binario bilanciato Complessità media pari allaltezza dellalbero: O ( h ) O (log 2 n ) Complessità nel caso peggiore pari a O ( n ) (alberi molto sbilan- ciati e profondi) Complessità asintotica: alberi binari di ricerca 2

15 Anno accademico Si traccia un cammino nellalbero partendo dalla radice e, su ogni nodo, si usa la proprietà di ricerca per decidere se proseguire nel sottoalbero sinistro o destro 15 Alberi binari di ricerca: Ricerca

16 Anno accademico A partire dalla radice, confronta la chiave k con chiave ( v ) In caso di coincidenza, lelemento da inserire è già presente nellalbero (che non deve contenere duplicati) Altrimenti, si prosegue ricorsivamente nel sottoalbero sinistro o destro in base al risultato del confronto fino a trovare un nodo foglia o un nodo dotato di un solo figlio relativamente al quale lelemento con chiave k possa opportunamente occupare il posto del figlio mancante 16 Alberi binari di ricerca: Inserimento

17 Anno accademico Sia u il nodo contenente lelemento da cancellare: Se u è una foglia, viene direttamente rimosso Se u è un nodo dotato di un solo figlio w, il sottoalbero con radice w va ad occupare il posto di u 17 Alberi binari di ricerca: Cancellazione 1

18 Anno accademico Se u ha due figli, deve essere sostituito dal suo predecessore v (che ha un solo figlio e) che deve essere fisicamente rimosso 18 Alberi binari di ricerca: Cancellazione 2

19 Anno accademico Alberi binari di ricerca: Cancellazione 3

20 Anno accademico ProblemaProblema Memorizzare in maniera opportuna un insieme di dati tipicamente sotto forma di record in modo da poter reperire un qualsiasi elemento dellinsieme con un numero piccolo di tentativi Cosa significa piccolo ? Indipendente (o quasi) dalla dimensione della tabella su cui si effettua la ricerca, quindi con una complessità in tempo pari ad O ( 1 ) 20 Complessità asintotica: tabelle hash

21 Anno accademico h : K {0, 1, 2, …, m 1} K : insieme dei valori distinti che possono essere assunti dalle chiavi dei record m : dimensione del vettore in cui si intende memorizzare la tabella Ipotesi:Ipotesi: K sottoinsieme dei numeri naturali Possibile funzione di accesso: h ( k ) k MOD m, k K Valore della funzione sempre compreso fra 0 e m 1 21 Funzioni hash 1

22 Anno accademico Se K non è un sottoinsieme dei numeri naturali Esempio: Esempio: insieme di stringhe alfanumeriche Problema: Problema: la funzione hash si applica a numeri Per utilizzarla in corrispondenza di una chiave non numerica occorre associare alla chiave un valore numerico Necessità di definire funzioni hash generali Associazione di un valore numerico ad una chiave di qualunque tipo Applicazione della funzione hash a tale valore Esempio: Esempio: si utilizza la somma dei codici ASCII dei caratteri che costituiscono la stringa Comunque… metodo non adatto a reperire sottoinsiemi di dati con chiave che soddisfi una data relazione 22 Funzioni hash 2

23 Anno accademico Associazione, da parte di una trasformazione, della stessa posizione a chiavi distinte SinonimiSinonimi k 1 k 2, ma h ( k 1 ) h ( k 2 ) Esempio:Esempio: [10,12,20,23,27,30,31,39,42,44,45,49,53,57,60] h (chiave) (chiave MOD 15) Posizione 0 30, 45, 60 Posizione 8 23, 53 Posizione 12 12, 27, 42, 57 Ciascuna posizione dellarray può contenere al più un elemento; occorre… Ridurre al massimo le collisioni Gestirle quando si verificano 23 Collisioni 1

24 Anno accademico hashing perfettoFunzioni di hashing perfetto (che evitano i duplicati) sono difficili da trovare, anche per tabelle grandi Esempio:paradosso del compleannoEsempio: paradosso del compleanno Dato un gruppo di 23 persone, ci sono più del 50% di probabilità che due di esse siano nate nello stesso giorno dellanno In altre parole, se scegliamo una funzione aleatoria (a valori casuali) che trasforma 23 chiavi in un indirizzo di una tabella di 365 elementi, la probabilità che due chiavi NON collidano è solo (meno della metà) Individuare una funzione di accesso che porti ad un numero ridotto di collisioni è un problema complesso 24 Collisioni 2

25 Anno accademico Tuttavia… numero di collisioni ridotto drasticamente se accettiamo uno spreco del 25% di memoria Esempio:Esempio: array di 19 elementi (indicizzati da 0 a 18) Posizione 0 57 Posizione 8 27 Posizione 1 20, 39 Posizione Posizione 3 60 Posizione 11 30, 49 Posizione 4 23, 42 Posizione 12 12, 31 Posizione 6 44 Posizione Posizione 7 45 Collisioni non eliminate del tutto h(chiave) (chiave MOD 19) 25 Collisioni 3

26 Anno accademico Diminuire il fattore di carico n/m, con n numero degli oggetti da inserire ed m dimensione della tabella, garantisce un minor numero di collisioni Lo spazio utilizzato è proporzionale ad m, non al numero n di elementi: può esserci grande spreco di memoria! Inoltre… per ridurre la probabilità di collisioni, una buona funzione hash dovrebbe essere in grado di distribuire in modo uniforme le chiavi nello spazio degli indici della tabella Ipotesi:uniformità sempliceIpotesi: la funzione hash gode della proprietà di uniformità semplice 26 Collisioni 4

27 Anno accademico Sia P ( k ) la probabilità che la chiave k sia presente nellinsieme delle chiavi da allocare e sia: la probabilità che la cella i sia occupata Una funzione hash h gode della proprietà di uniformità semplice se: 27 Collisioni 5

28 Anno accademico Esempio:Esempio: Se U è linsieme dei numeri reali in [0,1] e ogni chiave in U ha la stessa probabilità di essere scelta, allora si può dimostrare che la funzione hash: soddisfa la proprietà di uniformità semplice 28 Collisioni 6

29 Anno accademico liste concatenateUso di liste concatenate destinate alla memorizzazione degli elementi che, in inserimento, hanno portato ad una collisione; gli elementi sono contenuti in liste esterne alla tabella: t [ i ] punta alla lista degli elementi tali che h ( k ) i Indirizzamento apertoIndirizzamento aperto: tutti gli elementi sono contenuti nella tabella; se una cella è occupata, se ne cerca unaltra libera 29 Gestione delle collisioni

30 Anno accademico Ricerca di un elemento di chiave k Si calcola h ( k ): se si verifica una collisione allora si accede alla lista associata alla posizione h ( k ) e la si scandisce 30 Liste concatenate 1

31 Anno accademico Il costo delloperazione di ricerca realizzata in modo lineare relativamente alle liste di elementi in collisione si mantiene pressoché indipendente da n (numero degli elementi contenuti nella tabella) Inserimento/cancellazione costano O (1) 31 Liste concatenate 2

32 Anno accademico Supponiamo di voler inserire un elemento con chiave k e che la sua posizione naturale h ( k ) sia già occupata Lindirizzamento aperto consiste nelloccupare unaltra cella, anche se potrebbe spettare di diritto ad una chiave diversa scansione lineareSi cerca la cella vuota (se cè) scandendo le celle secondo una sequenza di indici, per esempio utilizzando una tecnica di scansione lineare t ( k, i ) ( h ( k ) i ) mod m, per 0 i m Per i 1 la ricerca parte dalla cella indicizzata e procede a scandire le successive (ad una ad una) fino alla prima cella libera 32 Indirizzamento aperto 1

33 Anno accademico La scansione lineare provoca effetti di agglomerazione, cioè lunghi gruppi di celle consecutive occupate, che rallentano la scansione 33 Indirizzamento aperto 2

34 Anno accademico hashing doppioLhashing doppio riduce il problema delle agglomerazioni e produce funzioni hash che sono quasi semplicemente uniformi: t ( k, i ) h 1 ( k ) i h 2 ( k ) mod m per 0 i m, con h 1 e h 2 funzioni hash distinte Lidea sottesa allhashing doppio è quella di partire da un valore hash ed esaminare le posizioni successive saltando di una quantità pari a multipli di un valore determinato da una altra funzione hash In questo modo la prima posizione esaminata è h 1 ( k ) mentre le successive sono distanziate di h 2 ( k ) 34 Indirizzamento aperto 3

35 Anno accademico Esempio:Esempio: m =13 h 1 ( k )= k mod 13 h 2 ( k )=1 + ( k mod 11) Si consideri linserimento della chiave 14 nella seguente tabella: h 1 (14) = 14 mod 13 = 1 h 2 (14) = 1+(14 mod 11) = 1+3 = 4 t (14, i ) = ( h 1 ( k )+ i h 2 ( k )) mod m = (1+ i 4) mod m 35 Hashing doppio 1

36 Anno accademico i =0 1° posizione esaminata t (14,0) = 1 i =1 2° posizione esaminata t (14,1) = 1+4 = 5 i =2 3° posizione esaminata t (14,2) = = 9 36 Hashing doppio 2

37 Anno accademico Si deve porre attenzione a far sì che h 2 ( k ) sia primo rispetto alla dimensione della tabella m..infatti, se m e h 2 ( k ) hanno un massimo comune divisore d, allora si esaminerebbero solo m / d elementi della tabella (invece di m ) Esempio:Esempio: m 10 e h 2 ( k ) 2, partendo da 0 si ha la sequenza … Per garantire che h 2 ( k ) sia primo rispetto a m si può: prendere m =2 p e scegliere h 2 ( k ) in modo che produca sempre un numero dispari prendere m primo e scegliere h 2 ( k ) in modo che produca sempre un intero positivo minore di m 37 Hashing doppio 3

38 Anno accademico Sia dato un programma che prende in ingresso i partecipanti ad una competizione e genera (ad esempio per stamparle) tutte le possibili classifiche finali n : numero di partecipanti Complessità: O ( n !) Si osservi che n ! è un numero molto grande anche per n relativamente piccoli 20! Complessità asintotica fattoriale

39 Anno accademico ab ija[i]b[j]Sia dato un programma che ha come ingresso due array a, b e cerca tutte le coppie ( i, j ) tali che a[i] b[j] a n : dimensione di a b m : dimensione di b Complessità: O ( n m ) void search(int a[], int b[], int alength, int blength) { … for(i 0;i alength;i ){ for(j 0;j blength;j ){ if(a[i] b[j]) printf(Trovata corrispondenza: a[%d] b[%d] %d,i,j,a[i]); } 39 Complessità asintotica polinomiale

40 Anno accademico In base alla loro complessità temporale asintotica, gli algoritmi sono tipicamente divisi in classi complessità costante O ( 1 ) lineare O ( n ) Algoritmi a complessità costante O ( 1 ) o lineare O ( n ) Molto veloci, scalabili complessità polinomiale O ( n a ) Algoritmi a complessità polinomiale O ( n a ) per un qualche valore a Usabili se lesponente a è piccolo complessità esponenziale O ( a n ) Algoritmi a complessità esponenziale O ( a n ) per un qualche valore a ( 1) Usabili solo per n molto piccoli 40 Algoritmi facili e difficili

41 Anno accademico Fondamentale:Fondamentale: perché gli algoritmi a complessità esponen- ziale sono considerati quasi inusabili? Perché richiedono talmente tante operazioni che probabilmente anche i calcolatori futuri non saranno in grado di eseguire in tempi ragionevoli le loro possibili implementazioni (programmi) per dati in ingresso ad alta dimensionalità 41 Algoritmi a complessità esponenziale

42 Anno accademico Si consideri il programma che genera tutte le classifiche finali di una competizione con n partecipanti, complessità O ( n !) (è esponenziale, perché n ! n sqrt( n ) ) Con 20 concorrenti le classifiche sono 20! Un computer che generi 1 miliardo di classifiche al secondo, circa lanno, impiegherebbe circa 79 anni per generare tutte le classifiche richieste Tendenzialmente, i computer diverranno sempre più veloci e fra dieci anni forse saranno abbastanza veloci da realizzare in un mese quello per cui adesso occorrono 79 anni ma… …comunque, fra dieci anni per risolvere il problema con 21 partecipanti occorreranno ancora 21 mesi e per 25 partecipanti circa anni!! 42 Esempio

43 Anno accademico ordinato ricerca binaria dicotomicaPer cercare un elemento in un vettore ordinato esiste un metodo detto ricerca binaria o dicotomica val A[length/2] Si confronta il valore val da ricercare con lelemento centrale del vettore A[length/2] val Se val è minore dellelemento mediano, si ripete la ricerca sulla metà sinistra del vettore, altrimenti si ricerca nella metà destra 43 La ricerca dicotomica 1

44 Anno accademico Esempio:Esempio: ricerca del numero Si confronta 23 con 13 Ci si concentra sulla metà destra (da ind. 8 a ind. 14): si confronta 23 con Ci si concentra sulla metà sinistra (da ind. 8 a ind. 10): si confronta 23 con 20 Ci si concentra sulla metà destra (da ind. 9 a ind. 9): trovato!! 44 La ricerca dicotomica 2

45 Anno accademico int search(int val, int A[], int from, int to) { int center (from to)/2; if (from to) return 1; if (from to) { if (A[from] val) {return from;} return 1;} // si esegue solo se A[from]! val //si esegue solo se (from to) if (val A[center]){ return search(val,A,from,center 1); } if (val A[center]){ return search(val,A,center 1,to); } return center; } 45 La ricerca dicotomica 3

46 Anno accademico La ricerca dicotomica divide il vettore in due ad ogni passo: dopo p passi la dimensione del vettore è n /2 p nel caso peggiore, la ricerca si ferma quando n /2 p è 1, cioè quando p log 2 n Quindi la ricerca dicotomica è O (log 2 n ) 46 Complessità della ricerca dicotomica

47 Anno accademico Mergesort divide et imperaIl Mergesort è un algoritmo basato sul paradigma del divide et impera divide et imperaUna strategia divide et impera consiste nel suddividere un problema in sottoproblemi, nel risolvere i sottoproblemi, e nel ricomporre le soluzioni parziali per ottenere la soluzione del problema originale Il Mergesort è composto da due fasi: una fase di divisione del vettore da ordinare in sottovettori una fase di ricomposizione dei risultati (merge) 47 Mergesort 1

48 Anno accademico Idea:Idea: Dato un vettore da ordinare, lo si divide in due sottovettori di ugual dimensione, si ordinano i sottovettori e poi si fondono insieme Fusione Ordinamento Ordinamento Divisione 48 Mergesort 2

49 Anno accademico Come si ordinano i due sottovettori ? ricorsivamente Applicando ricorsivamente la divisione fino a quando il vettore contiene un solo elemento: in tal caso lordinamento è banale Divisione Mergesort: la divisione ricorsiva

50 Anno accademico I sottovettori ordinati verranno poi ricorsivamente fusi Fusione Mergesort: la fusione ricorsiva 1

51 Anno accademico La fusione viene realizzata utilizzando due indici che scorrono i due sottovettori da fondere: 1.Ad ogni passo si confrontano i due elementi indicati dagli indici i e j, A[ i ], A[ j ] 2.Si copia lelemento minore in un vettore dappoggio e si incrementa lindice corrispondente 3.Si torna al passo 1. fino a quando i due vettori non sono stati completamente visitati ij k 51 Mergesort: la fusione ricorsiva 2

52 Anno accademico Il Mergesort ha complessità O ( n log 2 n ) sia nel caso medio che nel caso pessimo ottimoMergesort è un algoritmo ottimo! La sua complessità asintotica è la migliore possibile Comunque… …esistono algoritmi che per alcuni ingressi fanno meglio di n log 2 n (ad es., Bubblesort su vettori ordinati) Heapsort …esistono altri algoritmi con complessità n log 2 n anche nel caso pessimo Heapsort 52 Complessità del Mergesort

53 Anno accademico Quicksortdivide et imperaQuicksort, come Mergesort, è un algoritmo divide et impera IdeaIdea perno Si divide il vettore A in due sottovettori, che contengono rispettivamente tutti gli elementi minori e maggiori di (per esempio) A[0], cioè il primo elemento del vettore detto perno Si ripete ricorsivamente la divisione… 53 Quicksort 1

54 Anno accademico Si ripartisce il vettore rispetto ad A[1] 4 Si divide rispetto a Si divide rispetto a Quicksort 2

55 Anno accademico Come si divide il vettore? Si usano due indici i, j che scorrono il vettore da sinistra e da destra, rispettivamente Lindice i scorre fino a quando A[ i ] A[1] Lindice j scorre fino a quando A[ j ] A[1] Si effettua lo scambio fra A[ i ] e A[ j ] e quindi si procede come sopra i j Si scorrono i, j confrontando con ij Si scambiano gli elementi i j Si scorrono i, j confrontando con 4 55 Quicksort: loperazione perno 1

56 Anno accademico Alla fine si scambia il perno con lelemento in posizione j ij Si scambiano gli elementi Si scambia A[ j ] con il perno j Quicksort: loperazione perno 2

57 Anno accademico void perno(int A[], int from, int to) { int i from 1, j to; while(i j){ while(A[i] A[from]) i ; while(A[j] A[from]) j ; if(i j) scambia(A,i,j); } scambia(A,from,j); } 57 Implementazione

58 Anno accademico Il Quicksort ha complessità media O ( n log 2 n ) Il caso pessimo si verifica quando il perno finisce in fondo o in testa al vettore In tal caso, Quicksort ha complessità pari ad O ( n 2 ) 58 Complessità del Quicksort

59 Anno accademico Mergesort ha il vantaggio di avere sempre complessità pari a O ( n log n ) Quicksort ha il vantaggio di non richiedere un vettore di appoggio: ordina il vettore in loco (minore complessità spaziale) In media, Quicksort si comporta bene e, per questo motivo, in pratica spesso è preferito a Mergesort 59 Mergesort vs Quicksort

60 Anno accademico Ospita gli elementi dellinsieme A di cardinalità n, su cui è definita una relazione dordine totale heapLo heap (mucchio) è un albero binario Proprietà 1 Proprietà 1 Lalbero è quasi perfettamente bilanciato: è completo fino al livello k 1, cioè contiene il numero massimo di nodi, 2 k 1, mentre al livello k contiene un numero di nodi (foglie) compreso tra 1 e 2 k ; i nodi a livello massimo sono tutti addossati a sinistra Proprietà 2 Proprietà 2 Ogni nodo contiene un elemento dellelemento contenuto nel padre 60 Heap 1

61 Anno accademico Proprietà 1Noto il valore di n, la forma del- lalbero è fissata dalla Proprietà 1 Proprietà 2Lallocazione degli elementi nei nodi può variare, nel rispetto della Proprietà 2 Lelemento massimo dellinsieme è allocato nella radice I sottoalberi di ciascun nodo sono ancora heap Lo heap può essere allocato in un array Heap 2

62 Anno accademico Con lallocazione lineare… A[1] è lelemento contenuto nella radice dello heap Per ogni A[ i ], gli elementi corrispondenti ai figli sinistro e destro, se esistono, sono memorizzati in A[ 2 i ] e A[ 2 i 1 ] Se 2 i n e/o 2 i 1 n il figlio sinistro e/o destro di A[ i ] non esiste nellalbero A[ 2 i ] A[ i ] e A[ 2 i 1 ] A[ i ], quando tali elementi sono definiti 62 Heap 3

63 Anno accademico HeapsortLo heap trova la sua applicazione più elegante nel metodo di ordinamento noto come Heapsort Si estrae lelemento massimo dallo heap (quello nella radice, o in prima posizione nella rappresentazione lineare) Si ricostruisce lo heap …fino a quando non ci sono più elementi nello heap (ovvero gli elementi del vettore sono ordinati) 63 Heapsort 1

64 Anno accademico Come si ricostruisce lo heap, dopo lestrazione della radice? Continua… 64 Heapsort 2

65 Anno accademico Si considera il massimo fra i due figli della radice e, se max{A[2],A[3]} A[1], si effettua lo scambio Si scambia A[1] con A[2] 65 Heapsort 3 Continua…

66 Anno accademico Si considera il massimo fra i due figli di A[2] e, se max{A[4],A[5]} A[2], si effettua lo scambio Si scambia A[2] con A[5] 66 Heapsort 4 Continua…

67 Anno accademico Si estrae A[1] che è lelemento più grande… e si ricomincia il procedimento di ricostruzione Heapsort 5

68 Anno accademico Poiché ogni estrazione e ricostituzione dello heap richiede tempo O (log 2 n ' ), se n è il numero di elementi attualmente contenuti nello heap… Heapsort ha complessità O ( n log 2 n ) Lalgoritmo di ordinamento può essere realizzato facilmente sulla rappresentazione sequenziale dello heap 68 Heapsort 6

69 Anno accademico void heapsort(int a[], int left, int right) { int k, temp, size right left 1, *p a left 1; /* si costruisce lo heap */ for (k size 2; k 1; k ) heap(p, k, size); /* si scambia lelemento più grande con quello finale * e si ricostruisce lo heap */ while (size 1) { temp p[1]; p[1] p[size]; p[size] temp; heap(p, 1, size); } exit(0); } 69 Heapsort 7

70 Anno accademico /* Costruzione top down di uno heap */ #define LESS(A,B)((A) (B)) void heap(int a[], int k, int size) { int j, temp; while(2 k size) { j 2 k; if (j size && LESS(a[j],a[j 1])) j ; if (!LESS(a[k],a[j])) break; temp a[k]; a[k] a[j]; a[j] temp; k j; } 70 Heapsort 8

71 Anno accademico Ancora sulla complessità

72 Anno accademico Anche per i problemi si parla di complessità Tipicamente non si riesce a definire univocamente la complessità di un problema, perché......lo stesso problema può essere risolto con algoritmi diversi che hanno diversa complessità …anche se si riesce a stabilire qual è il miglior algoritmo per la risoluzione di un dato problema, tale stima ha comunque un valore non assoluto, ma limitato nel tempo, in quanto non è dato prevedere se in futuro potrà esistere un metodo risolutivo migliore limite inferiore superiorePer questi motivi, si parla solo di limite inferiore e superiore alla complessità di un problema 72 Problemi e algoritmi

73 Anno accademico In alcuni casi è possibile dimostrare che nessun algoritmo che risolve un dato problema può/potrà impiegare meno risorse di un certo limite inferiore Esempi banaliEsempi banali Nessun algoritmo che genera tutte le classifiche possibili per n concorrenti può farlo in meno di n ! operazioni (il limite inferiore alla complessità è O ( n !) ) Nessun algoritmo può effettuare la somma fra vettori n dimensionali in meno di n operazioni (il limite inferiore alla complessità è O ( n ) ) Esempio non banaleEsempio non banale Nessun algoritmo può ordinare un vettore di n elementi in meno di n log 2 n operazioni, nel caso peggiore 73 Complessità di un problema

74 Anno accademico ottimoUn algoritmo si dice ottimo, quando ha complessità pari al limite inferiore EsempiEsempi Mergesort e Heapsort sono ottimi Si consideri il problema di sommare gli elementi di un vettore: un algoritmo che scorre tutti gli elementi e li somma uno ad uno richiede O ( n ) operazioni: tale algoritmo è ottimo perché la sua complessità corrisponde con quella minima Si consideri il problema di inserire un elemento in un albero binario di ricerca, bilanciato, che contiene n elementi: Abbiamo visto una soluzione algoritmica che impone O (log 2 n ) operazioni log 2 n è un limite superiore per tale problema Si può dimostrare che tale complessità corrisponde con il limite inferiore e che lalgoritmo proposto è ottimo 74 Algoritmi ottimi

75 Anno accademico Dubbi:Dubbi: La complessità è indipendente dal computer su cui gira il programma? Ad esempio, se si inventasse un calcolatore in grado di generare contemporaneamente tutte le classifiche di n concorrenti, allora quel problema non avrebbe più complessità n ! Oppure… potrebbe esistere in futuro un computer in grado di ordinare un vettore di qualsiasi lunghezza per mezzo di una sola istruzione macchina di TuringNessuno conosce la risposta ma, fino ad ora, nessuno è riuscito a progettare un computer con queste capacità: tutti i calcolatori conosciuti sono equivalenti, in termini di capacità di calcolo, ad un computer semplicissimo la macchina di Turing 75 Algoritmi e computer

76 Anno accademico Alan Turing ( ) è considerato uno dei padri dellinformatica On computable numbers with an application to the EntscheidungsproblemNel 1936 propose lidea di una macchina immaginaria che fosse capace di eseguire ogni tipo di calcolo su numeri e simboli (nellarticolo On computable numbers with an application to the Entscheidungsproblem) problema della decisione Il problema della decisione era stato proposto da David Hilbert nel suo programma di fondazione formalista della matematica La macchina di Turing è una macchina formale, cioè un sistema formale che può descriversi come un meccanismo ideale, ma in linea di principio realizzabile concretamente 76 La macchina di Turing 1

77 Anno accademico macchina a statiÈ una macchina a stati, può cioè trovarsi in stati ben determinati, opera su stringhe in base a regole precise e costituisce un modello di calcolo È retta da regole molto semplici, ovvero la sua modalità operativa può essere descritta mediante meccanismi elementari Si presume abbia il massimo potere computazionale e si dimostra che è equivalente, ovvero in grado di effettuare le stesse elaborazioni, ai modelli di calcolo di più ampia portata (formali e implementati) 77 La macchina di Turing 2

78 Anno accademico teoria della calcolabilità complessità degli algoritmiPer le sue caratteristiche, la macchina di Turing è un efficace strumento teorico che viene largamente usato nella teoria della calcolabilità e nello studio della complessità degli algoritmi Inoltre, per definire in modo formalmente preciso la nozione di algoritmo, oggi si sceglie preferenzialmente di ricondurlo al concetto di elaborazione effettuabile da una macchina di Turing a registri counter machineEsistono varie versioni (computazionalmente equivalenti) della macchina di Turing, quella più simile ai nostri calcolatori è quella cosiddetta a registri (o counter machine, Minsky Lambek, 1961) 78 La macchina di Turing 3

79 Anno accademico È costituita da un insieme di registri di lavoro R 1, R 2, R 3,… e di registri di ingresso I 1, I 2, I 3,… Ogni registro contiene un intero non negativo I programmi sono costituiti da tre semplici tipi di istruzioni: incremento: R i incremento: R i Il registro i viene incrementato di 1 decremento: R i decremento: R i Il registro i viene decrementato di 1; se il registro ha già valore 0, listruzione non ha effetto salto condizionato: IF R i GOTO L1 salto condizionato: IF R i GOTO L1 Se il registro i contiene un valore mag- giore di 0, si salta allistruzione L 1 IF I 1 GOTO ciclo I 3 IF I 3 GOTO fine ciclo: I 2 I 1 IF I 1 GOTO ciclo fine: Programma che somma i contenuti di I 1 e I 2 in I 2 79 La macchina di Turing a registri

80 Anno accademico tesi di Church TuringLa tesi di Church Turing afferma che: Ogni problema intuitivamente calcolabile (risolubile) da un qualsiasi elaboratore è calcolabile da una macchina di Turing, purché dotata di memoria (e tempo di elaborazione) sufficiente Nessuno è mai riuscito a confutare la tesi di Church Turing La maggior parte dei ricercatori ritiene che sia vera 80 La tesi di Church Turing

81 Anno accademico haltSupponiamo che esista un programma halt in grado di risolvere il problema della terminazione halt(P,I) restituisce: true se P con ingresso I termina false se P con ingresso I non termina Consideriamo il programma Q Cosa succede se si applica Q a Q ? Q(Q) termina o no ? Se Q(Q) termina allora halt(Q,Q) dovrebbe essere vero… ma allora Q(Q) non dovrebbe terminare Se Q(Q) non termina allora halt(Q,Q) dovrebbe essere falso … ma allora Q(Q) dovrebbe terminare Quindi il programma halt non esiste!!Quindi il programma halt non esiste!! void Q(Program P){ while (halt(P,P)) {} } 81 Il problema della terminazione

82 Anno accademico Esistono problemi molto difficili… problemi non calcolabili con una macchina di Turing e se la tesi di Church Turing è vera con nessun calcolatore!! EsempiEsempi Problema della terminazione Problema della terminazione Dato un programma e un suo ingresso, dire se il programma terminerà (o entrerà in un ciclo indefinito) Problema di Post Problema di Post Dato un programma e due stati (uno stato è definito da un certo valore delle variabili), dire se a partire dal primo stato si potrà raggiungere il secondo 82 Problemi impossibili

83 Anno accademico Nella macchina non deterministica, i programmi includono anche altre istruzioni scelta casuale: FORK scelta casuale: FORK prende in ingresso un insieme di istruzioni e ne esegue una a caso istruzione di accettazione: ACCEPT istruzione di accettazione: ACCEPT quando viene eseguita, il programma termina correttamente Un problema è risolubile se esiste un programma e una scelta casuale per cui il programma termina con ACCEPT e fornisce la risposta desiderata 83 La macchina di Turing non deterministica 1

84 Anno accademico R 4 FORK{ R 1, R 1 } FORK{ R 2, R 2 } IF R 1 GOTO cont IF R 4 GOTO no cont:IF R 2 GOTO ok IF R 4 GOTO no ok: ACCEPT no: 84 La macchina di Turing non deterministica 2 Esempio:Esempio: Programma che assegna a caso valori in {0, 1} a R 1 e R 2 e termina solo se R 1 R 2 1

85 Anno accademico La macchina non deterministica non calcola più di quella deterministica Si può dimostrare che tutto ciò che è calcolabile sulla macchina di Turing non deterministica è calcolabile anche sulla macchina deterministica La macchina non deterministica è però più efficiente di quella deterministica Il non determinismo può essere pensato infatti come una forma di parallelismo: FORK FORK è unistruzione che genera più programmi paralleli Il parallelismo permette di risolvere i problemi velocemente: ad esempio, si può cercare un elemento in un vettore guardando contemporaneamente a tutti i suoi elementi 85 La macchina di Turing non deterministica 3

86 Anno accademico problemi decisionaliI problemi decisionali richiedono solo una risposta binaria (sì/no), correlata in genere allesistenza di una soluzione (es., problema della terminazione) Nella teoria della complessità, i problemi decisionali si dividono in due classi P problemi risolubili in tempo polinomiale sulla macchina di Turing deterministica P problemi risolubili in tempo polinomiale sulla macchina di Turing deterministica NP problemi risolubili in tempo polinomiale sulla macchina di Turing non deterministica NP problemi risolubili in tempo polinomiale sulla macchina di Turing non deterministica Includono sia i problemi facili, sia anche la quasi totalità dei problemi che si incontrano nelle situazioni pratiche Ovviamente vale P NP, ma non è noto se P NPOvviamente vale P NP, ma non è noto se P NP 86 Problemi P ed NP

87 Anno accademico Problema decisionale della soddisfattibilità:Problema decisionale della soddisfattibilità: Data una forma normale congiuntiva F ( x 1, x 2,…, x n ) stabilire se esiste un assegnamento di valori delle variabili booleane x 1, x 2,…, x n che soddisfi F Qualunque problema della classe NP si riduce, in tempo polinomiale, al problema della soddisfattibilità P S P S è il più difficile fra i problemi di NP 87 Problemi NP-completi 1

88 Anno accademico NP completoUn problema P è detto NP completo se P NP e P S si riduce a P I problemi NP completi sono tutti equivalenti fra loro: Sarebbe sufficiente trovare un algoritmo polinomiale per uno solo di essi ed avremmo trovato un algoritmo polinomiale per risolvere tutti i problemi Inoltre, tutti i problemi in NP sarebbero risolubili in tempo polinomiale sulla macchina di Turing deterministica, cioè avremmo dimostrato che NP P! 88 Problemi NP-completi 2

89 Anno accademico Problema decisionale del commesso viaggiatoreProblema decisionale del commesso viaggiatore Dato un insieme di n città con le relative distanze, trovare, se esiste, un cammino di lunghezza k che, partendo da una città, le visiti tutte tornando in quella di partenza NP arduoUn problema NP arduo (non decisionale) Programmazione lineare intera Programmazione lineare intera Data una matrice A e due vettori b, c, calcolare un vettore di interi x che soddisfi Ax b e minimizzi f(x) cx Problemi di programmazione lineare Problemi di programmazione lineare definire lorario dei treni e degli autobus definire lorario delle lezioni … 89 Problemi NP-completi: esempi

90 Anno accademico Attualmente si pensa che NP P …ma nessuno è ancora riuscito a dimostrarlo Si pensa anche che la tesi di Church Turing sia vera: ovviamente questo non si può dimostrare ma è, eventualmente, solo confutabile Talvolta, problemi con complessità proibitiva sono utili: Ad esempio, gli algoritmi crittografici sono basati sul fatto che decrittare una chiave è molto complesso e richiederebbe un tempo troppo lungo Se la tesi di Church Turing non fosse vera o se P NP, tali metodi non sarebbero più efficaci 90 P NP e tesi di Church Turing

91 Anno accademico Ai limiti del calcolo: I problemi intrinsecamente difficili

92 Anno accademico problema del commesso viaggiatoreIl problema del commesso viaggiatore è uno dei più celebri tra i problemi di «soddisfacimento di vincoli» non calcolabili Una sua versione piuttosto diffusa è la seguente: È possibile stimare il percorso più breve per un commesso viaggiatore che deve fare visita ai suoi clienti in tutte le città indicate sulla mappa? A prima vista, sembra facile, ma allaumen- tare del numero delle città, il problema diventa esponenzialmente più difficile, mettendo nei guai anche i più potenti computer 92 Il problema del commesso viaggiatore

93 Anno accademico Ma dove sta scritto che tutti i problemi si devono risolvere facilmente e che la loro soluzione deve essere calcolabile in modo efficiente? Eppure lascia perplessi il fatto che alcuni calcoli siano tanto più complessi di altri… moltiplicazione scomposizione in fattoriLesempio classico è quello della moltiplicazione e della scomposizione in fattori Se vengono dati due numeri primi grandi moltiplicarli è semplice… …ma cercare, una volta dato il prodotto, di ritrovare i due fattori sconosciuti è un problema molto difficile …fino al punto che una delle tecniche crittografiche più diffuse (RSA) si basa sulla difficoltà di risoluzione di questo «problema inverso» 93 I problemi difficili 1

94 Anno accademico E dunque, dove sono i problemi difficili? In matematica, in informatica, in fisica Il tema comune che lega strettamente queste tre discipline è infatti la presenza di problemi con transizioni improvvise da un tipo di comportamento ad un altro 94 I problemi difficili 2

95 Anno accademico Il filo matematico comincia negli anni 60 con lo studio dei grafi aleatori, iniziato da Paul Erdós e Alfred Rényi grafo verticiarchiUn grafo è una struttura matematica astratta: un insieme di vertici e archi, disegnato in genere come uno schema di punti (i vertici) e linee che li uniscono (gli archi) Per disegnare un grafo aleatorio si inizia distribuendo n vertici sul foglio, sce- gliendo casualmente, per ogni coppia e con probabilità p, se tracciare o no un arco che connetta i due vertici 95 In matematica… 1 Costruzione di un grafo aleatorio

96 Anno accademico Quando p è vicino a 0, gli spigoli sono pochi e il grafo è composto di molti piccoli pezzi, o componenti connesse, separate le une dalle altre Al crescere di p, il grafo comincia a essere dominato da una singola componente connessa «gigante», che comprende la maggior parte dei vertici Lesistenza di questa componente gigante non è certo una sorpresa, ma il modo in cui essa si sviluppa non è ovvio: La componente non evolve gradualmente al crescere di p, bensì emerge allimprovviso quando viene superata una certa soglia La soglia è definita in termini di un parametro che chiameremo : il rapporto fra numero dei lati e numero dei vertici La componente gigante nasce quando è circa 1/2 96 In matematica… 2

97 Anno accademico In campo informatico un simile fenomeno di soglia attirò molta attenzione nei primi anni 90 In questo caso la soglia determina la probabilità che certi problemi computazionali abbiano soluzione Uno di questi problemi, che deriva dalla teoria dei grafi, è il problema della k colorazione, che richiede di dipingere ogni vertice di un grafo con uno di k colori, con la regola che due vertici adiacenti non possano avere lo stesso colore Trovare una colorazione corretta diventa sempre più difficile al crescere di, perché più sono i lati più sono anche i vincoli imposti su ogni vertice 97 In informatica… 1 Problema di 3-colorazione

98 Anno accademico Di nuovo, la soglia è netta: al di sotto di un certo valore del rapporto quasi tutti i grafi sono k colorabili, mentre al di sopra di questa soglia non lo è quasi nessuno Inoltre, la soglia non solo influisce sullesistenza di soluzioni, ma anche sulla difficoltà di trovarne: lo sforzo computazionale necessario per decidere se un grafo è k colorabile ha un picco significativo vicino al valore critico di Il problema della colorazione dei grafi è strettamente correlato al problema della colorazione delle carte geografiche politiche, nelle quali regioni adiacenti devono avere colori distinti Se i nodi del grafo rappresentano regioni, collegate da un arco se adiacenti… il gioco è fatto ed il grafo è un RAG, per «Region Adjacency Graph» 98 In informatica… 2

99 Anno accademico transizioni di faseAnche i fisici sanno qualcosa dei problemi di soglia: li chiamano transizioni di fase Ma i cambiamenti di stato osservati nei grafi aleatori sono veramente analoghi ad eventi fisici come il congelamento dellacqua e la comparsa della magnetizzazione nel ferro? O la somiglianza è una semplice coincidenza? Per qualche tempo largomento è stato controverso, ma ora è chiaro che i fenomeni di soglia nei grafi e in altre strutture matematiche sono autentiche transizioni di fase e, quindi, gli strumenti e le tecniche della fisica statistica sono adattissimi a studiarli Il problema della k colorazione è in corrispondenza esatta con un modello di sistema magnetico nella fisica dello stato solido 99 In fisica…

100 Anno accademico La 3­colorazione è un problema complesso, ma non impossibile La domanda «Questo grafo è 3-colorabile?» ha sempre risposta, almeno in linea di principio: visto che a ogni vertice può essere assegnato un colore qualunque e che ci sono n vertici, ci devono essere esattamente 3 n modi di colorare il grafo 100 Il problema della 3-colorazione 1

101 Anno accademico Per decidere se uno specifico grafo è 3-colorabile, basta prendere in esame, una per una, tutte le possibilità Se si trova unassegnazione di colori che soddisfa il vincolo, cioè in cui nessun arco congiunge vertici dello stesso colore, allora la risposta alla domanda è sì Se si esauriscono tutte le possibilità senza trovare una colorazione appropriata, si può essere certi che non esiste Questo algoritmo è semplice e sicuro, ma anche inutile, perché enumerare 3 n colorazioni è al di là di ciò che si può fare in pratica per qualsiasi n maggiore di 15 o Il problema della 3-colorazione 2

102 Anno accademico Procedure più sofisticate possono garantire una ricerca esatta ed esaustiva pur riducendo il numero di operazioni a meno di 1,5 n è un miglioramento significativo, ma si tratta sempre di una funzione esponenziale che innalza il limite a n 50 brute force Per grafi grandi, con migliaia di vertici, tutti i metodi brute force non offrono speranze Daltro canto, se si potesse in qualche modo sbirciare la soluzione di un problema di 3-colorazione su molti vertici, se ne potrebbe controllare la correttezza facendo assai meno fatica: tutto quello che si dovrebbe fare sarebbe verificare che i vertici alle estremità di ciascun lato abbiano colori diversi 102 Il problema della 3-colorazione 3

103 Anno accademico Il numero di lati in un grafo non può essere maggiore di n 2, che è una funzione polinomiale anziché esponenziale, e quindi cresce molto più lentamente nondeterministic polynomialNPI problemi con risposte che sono difficili da trovare ma facili da verificare sono (nondeterministic polynomial) NP e, a meno di un miracolo, non si avranno mai algoritmi in tempo polinomiale per risolverli Avendo appurato le credenziali della 3-colorazione come problema ufficialmente difficile, possiamo rivelare che la maggior parte dei problemi di 3-colorazione su grafi aleatori è in realtà piuttosto semplice 103 Il problema della 3-colorazione 4

104 Anno accademico Dato un grafo tipico, si hanno buone probabilità di trovare rapidamente una 3-colorazione o di dimostrare che non esiste Questa curiosa situazione non è veramente paradossale: la classificazione della 3-colorazione come problema NP si basa sullanalisi del «caso peggiore» Esistono infatti molti algoritmi che hanno, nella maggior parte dei casi, un tempo di elaborazione rapido, a patto di accettare un occasionale fallimento 104 Il problema della 3-colorazione 5

105 Anno accademico Una strategia diffusa per algoritmi che colorano grafi è il backtracking (letteralmente: «tornare sui propri passi») ed assomiglia al modo in cui la maggior parte delle persone affronterebbe il problema se dovesse cercare di colorare il grafo a mano: si inizia assegnando un colore arbitrario a un vertice arbitrario poi si passa ai vertici vicini, assegnando loro colori che non causino un conflitto proseguendo così si può arrivare a un vertice per cui non cè un colore lecito; a questo punto si torna sui propri passi annullando alcune scelte precedenti, e si riprova 105 Il problema della 3-colorazione 6

106 Anno accademico Per mostrare che un grafo non può essere 3-colorato occorre un altro tipo di algoritmo Lapproccio fondamentale consiste nel cercare un sottoin- sieme di vertici che, anche se fosse isolato dal resto del grafo, non potrebbe essere 3-colorato cricca Per esempio, una cricca costituita da quattro vertici ognuno dei quali sia collegato con tutti gli altri ha questa proprietà Se si trova anche solo una di queste strutture, la questione è risolta per lintero grafo 106 Il problema della 3-colorazione 7

107 Anno accademico Algoritmi come questi sono molto diversi dai metodi di ricerca esaustiva La semplice enumerazione di tutte le 3 n colorazioni può essere inammissibilmente lenta, ma almeno è prevedibile Ciò non è vero per il backtracking e per altri algoritmi inesatti o incompleti; le loro prestazioni variano notevolmente a seconda della natura del grafo 107 Il problema della 3-colorazione 8

108 Anno accademico In particolare, questi algoritmi sono sensibili al valore di il rapporto tra il numero di lati e il numero di vertici che è di nuovo il parametro che controlla la transizione tra fasi colorabili e non colorabili Molto al di sotto del valore critico di, dove gli spigoli sono radi, cè un numero tale di modi di colorare il grafo che qualsiasi strategia ragionevole ha buone probabilità di trovarne uno Allestremo opposto, molto al di sopra della soglia, i grafi sono densamente interconnessi, ed è facile trovare un sottografo che renda impossibile la 3-colorazione La regione problematica è situata tra questi estremi, vicino alla soglia; in questa zona intermedia possono esserci pochissime colorazioni o nessuna: distinguere tra queste due situazioni può rendere necessario controllare quasi ogni possibile assegnazione di colori 108 Il problema della 3-colorazione 9

109 Anno accademico Il valore critico di è circa 2.35 In altre parole, se un grafo aleatorio con n vertici ha meno di 2.35 n archi, può essere quasi sicuramente 3-colorato; se ne ha di più, una 3-colorazione è improbabile Inoltre si sa che la transizione tra questi due regimi è netta: è una vera discontinuità, un salto improvviso anziché un passaggio graduale lampiezza della regione di transizione tende a zero quando n tende allinfinitoPer esprimere più formalmente questa idea si dice che lampiezza della regione di transizione tende a zero quando n tende allinfinito 109 Dove sono le soluzioni? 1

110 Anno accademico La nettezza della transizione di fase può essere considerata una notizia incoraggiante Se gli algoritmi per decidere la colorabilità si impantanano solo nella regione di transizione, e se essa è tanto ristretta da essere quasi trascurabile, allora la probabilità di incontrare un grafo difficile da classificare è proporzionalmente piccola Tuttavia, la nettezza della transizione è garantita solo per grafi infinitamente grandi; se n è finito, gli angoli della curva di transizione sono arrotondati Inoltre, sebbene la fase non colorabile non inizi fino ad 2.35, gli esperimenti hanno mostrato che gli algoritmi cominciano a rallentare un po prima, a valori di attorno a Dove sono le soluzioni? 2

111 Anno accademico Per capire la causa, giova visualizzare tutte le possibili 3- colorazioni di un grafo distese su una curva: laltezza della curva in ogni punto rappresenta il numero di conflitti nella colorazione corrispondente Così le colorazioni perfette (quelle senza conflitti) si trovano tutte al livello del mare, mentre le colorazioni peggiori creano picchi o altipiani ad alta quota Naturalmente la topografia di questo paesaggio dipende dal particolare grafo che stiamo esaminando 111 Dove sono le soluzioni? 3

112 Anno accademico Si consideri come evolve la superficie via via che cresce gradualmente Per piccoli valori di ci sono ampi bacini e vallate, che rappresentano i molti modi di colorare perfettamente il grafo Per grandi valori di il paesaggio è alpino, e anche il punto più basso è molto al di sopra del livello del mare, denotando una completa assenza di colorazioni perfette Il valore di transizione 2.35 segna il momento in cui scompaiono le ultime aree estese che si trovano al livello del mare 112 Dove sono le soluzioni? 4

113 Anno accademico Che cosa avviene nello «spazio delle soluzioni» per 2.2? Si è scoperto che questo è il momento in cui unampia distesa di terreno a livello zero si frammenta in piccoli bacini isolati Al di sotto di 2.2, quasi tutte le colorazioni perfette formano ununica gigantesca regione connessa (fatta di tante soluzioni vicine) Al di sopra di 2.2, ogni bacino rappresenta un insieme isolato di soluzioni Le colorazioni che si trovano in bacini separati sono sostanzialmente diverse e per trasformarne una in unaltra si dovrebbe scalare una catena montuosa formata da colorazioni che presentano un alto numero di conflitti È improbabile che gli algoritmi che funzionano conducendo una ricerca locale riescano a valicare queste catene montuose, e quindi rimangono confinati a lungo nel primo bacino in cui capitano 113 Dove sono le soluzioni? 5

114 Anno accademico Al crescere di α sopra 2.2, il numero di colorazioni perfette allinterno di ogni bacino decresce fino a zero e quindi gli algoritmi possono non riuscire a trovare una soluzione anche se esistono ancora molte colorazioni valide in altre parti della superficie delle soluzioni 114 Dove sono le soluzioni? 6

115 Anno accademico Dove sono le soluzioni? 7 Grafi identici con 100 nodi e 218 archi (poco al di sotto della soglia di trattabilità). La disposizione circolare dei vertici, a destra nella figura, rende più facile verificare che nessuno spigolo connette vertici dello stesso colore

116 Anno accademico Alcuni problemi richiedono un tempo di calcolo semplicemente troppo lungo, nei casi peggiori addirittura esponenziale Ma forse risposte rapide e semplici a problemi computazionalmente complessi non sono qualcosa che abbiamo il diritto di aspettarci in questo mondo… …e forse non è un «baco», è una caratteristica voluta: impedisce che luniverso si esaurisca troppo rapidamente 116 Quanti problemi difficili! Che fare?


Scaricare ppt "Anno accademico 2010-2011 1 Algoritmi e complessità"

Presentazioni simili


Annunci Google