Alberto Montresor Università di Trento

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Alberto Montresor Università di Trento"

Transcript

1 !! Algoritmi e Strutture Dati! Capitolo 1 - Greedy!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 53 Howard Street, 5th Floor, San Francisco, California, 105, USA. Alberto Montresor 1

2 Introduzione Gli algoritmi per problemi di ottimizzazione Eseguono una sequenza di decisioni La programmazione dinamica In maniera bottom-up, valuta tutte le decisioni possibili Evitando però di ripetere sotto-problemi (decisioni) già percorse Un algoritmo greedy (ingordo, goloso) Seleziona una sola delle possibili decisioni quella che sembra ottima (ovvero, è localmente ottima) Sperabilmente, si ottiene così un ottimo globale Alberto Montresor

3 Introduzione Quando applicare la tecnica greedy? Quando è possibile dimostrare che esiste una scelta ingorda Fra le molte scelte possibili, ne può essere facilmente individuata una che porta sicuramente alla soluzione ottima Quando il problema ha sottostruttura ottima Fatta tale scelta, resta un sottoproblema con la stessa struttura del problema principale Non tutti i problemi hanno una scelta ingorda Nota: in alcuni casi, soluzioni non ottime possono essere comunque interessanti Alberto Montresor 3

4 Insieme indipendente di intervalli Problema: Siano dati n intervalli distinti [ai, bi[ della retta reale trovare un insieme indipendente massimo un sottoinsieme di massima cardinalità formato da intervalli tutti disgiunti tra loro Definizioni: S={ 1,,, n } un insieme di intervalli Ad ogni intervallo i in S sono associati: ai tempo di inizio bi tempo di fine Che relazione c è con Insieme indipendente di intervalli pesati? i ai bi Alberto Montresor

5 Attività Alberto Montresor Tempo

6 Attività Alberto Montresor Tempo

7 Come affrontare il problema! Cerchiamo innanzitutto di risolverlo tramite programmazione dinamica (PD):! Individuiamo una sottostruttura ottima! Scriviamo una definizione ricorsiva per la dimensione della soluzione ottima! Scriviamo una versione iterativa bottom-up dell'algoritmo! Passiamo poi alla tecnica greedy! Cerchiamo una possibile scelta ingorda! Dimostriamo che la scelta ingorda porta alla soluzione ottima! Scriviamo un algoritmo ricorsivo o iterativo che effettua sempre la scelta ingorda Alberto Montresor 7

8 Sottostruttura ottima Si assuma che le attività siano ordinate per tempo di fine: Aggiungiamo due attività fittizie : b1 b bn 0 b0 = 0 Sottoproblema S[i,j] n+1 an+1 = + S[i,j] = { k bi ak < bk aj } Il sottoinsieme di attività che iniziano dopo che i ha finito finiscono prima che j abbia iniziato Così S[0, n+1] corrisponde al problema completo S Domanda Dimostrare che se i j, allora S[i,j] è vuoto bi ak bk aj Alberto Montresor

9 Sottostruttura ottima: caratterizzazione Se A[i,j] è una soluzione ottimale di S[i,j], e l'attività k è inclusa in A[i,j], allora Il problema S[i,j] viene suddiviso in due sottoproblemi: S[i,k]: le attività di S[i,j] che finiscono prima di k S[k,j]: le attività di S[i,j] che iniziano dopo di k A[i,j] contiene le soluzioni ottimali di S[i,k] e S[k,j] A[i,j] S[i,k] è la soluzione ottimale di S[i,k] A[i,j] S[k,j] è la soluzione ottimale di S[k,j] Dimostrazione: Utilizzando il metodo cut-and-paste Alberto Montresor

10 Definizione ricorsiva Descrizione ricorsiva della soluzione: A[i,j] = A[i,k] { k } A[k, j] Come determinare k? Analizzando tutte le possibilità... Definizione: D[i, j] La dimensione del più grande sottoinsieme A[i,j] S[i,j] di attività mutualmente compatibili Come si calcola? D[i, j] = ( 0 S[i, j] =; max {D[i, k]+d[k, j]+1} ks[i,j] S[i, j] 6= ; Alberto Montresor 10

11 Verso una soluzione greedy La definizione precedente: Ci permette di scrivere un algoritmo basato su programmazione dinamica o su memoization Complessità: θ(n 3 ) Devo risolvere tutti i sottoproblemi con i j, nel caso peggiore tempo O(n) per un sottoproblema Possiamo fare di meglio? Avevamo visto una soluzione O(n log n) Richiedeva pre-elaborazione Questa soluzione è peggiore, ma... Siamo sicuri che sia necessario analizzare tutti i possibili valori per k? Alberto Montresor 11

12 Teorema: Greedy choice Sia S[i,j] un sottoproblema non vuoto, e m l'attività di S[i,j] con il minor tempo di fine; allora m è compresa in qualche soluzione ottima di S[i,j] Il sottoproblema S[i,m] è vuoto Dimostrazione Conseguenze: Non è più necessario analizzare tutti i possibili valori di k Faccio una scelta ingorda, ma sicura: seleziono l'attività m con il minor tempo di fine Non è più necessario analizzare due sottoproblemi: Elimino tutte le attività che non sono compatibili con la scelta ingorda Mi resta solo un sottoproblema da risolvere: S[m,j] Alberto Montresor 1

13 già inclusi. Il sottoinsieme di intervalli selezionati è un insieme indipendente massimo. La complessità Realizzazione è O(niterativa log n), dovuta all ordinamento. SET independentset(integer[]a, integer[]b) { ordina a e b in modo che b[1] b[] b[n] } SET S Set() S.insert(1) integer ultimo 1 for integer i to n do if a[i] b[ultimo] then S.insert(i) ultimo i return S % Ultimo intervallo inserito % Controllo indipendenza Complessità Inserisce la prima attività: è sempre compatibile 1.3 Minimo albero di copertura Se l'input è già ordinato: θ(n) Si consideri Altrimenti, il seguente è necessario problema un di passo ottimizzazione di ordinamento: su grafi θ(n pesati. log n) Alberto Montresor 13

14 i= Alberto Montresor Attività Tempo

15 i= Alberto Montresor Attività Tempo

16 i= Alberto Montresor Attività Tempo

17 i= Alberto Montresor Attività Tempo

18 1 3 i= Alberto Montresor Attività Tempo

19 1 3 i= Alberto Montresor Attività Tempo

20 1 3 i= Alberto Montresor Attività Tempo

21 1 3 i= Alberto Montresor Attività Tempo

22 i= Alberto Montresor Attività Tempo

23 i= Alberto Montresor Attività Tempo

24 i= Alberto Montresor Attività Tempo

25 Attività i=11 Alberto Montresor Tempo

26 Tecnica greedy approccio a partire da PD Abbiamo cercato di risolvere il problema della selezione delle attività tramite programmazione dinamica: Abbiamo individuato una sottostruttura ottima Abbiamo scritto una definizione ricorsiva per la dimensione della soluzione ottima Abbiamo dimostrato la proprietà della scelta greedy: Per ogni sottoproblema, esiste almeno una soluzione ottima che inizia con la scelta greedy Abbiamo scritto un algoritmo iterativo che effettua sempre la scelta ingorda Alberto Montresor 6

27 Problema del resto Input Output Un numero intero positivo n Il più piccolo numero intero di pezzi per dare un resto di n centesimi utilizzando monete da 50c, 10c, 5c e 1c. Esempi n = 7, 7 pezzi: n = 1, 5 pezzi: Seguiamo la stessa procedura precedente: Programmazione dinamica approccio greedy Alberto Montresor 7

28 Problema del resto Domanda Descrivere un alg. goloso per dare il resto con le monete specificate Sottostruttura ottima Scelta ingorda Provare che tale algoritmo fornisce sempre una soluzione ottima Domanda Supponete di avere un insieme di monete i cui valori siano potenze di c: c 0, c 1, c,..., c k L'algoritmo visto in precedenza funziona ancora? Domanda Trovare un insieme di pezzature per cui la scelta golosa non è applicabile Alberto Montresor

29 Tecnica greedy approccio senza passare per PD Evidenziare i passi di decisione Trasformare il problema di ottimizzazione in un problema di scelte successive Evidenziare una possibile scelta ingorda Dimostrare che tale scelta rispetto il principio della scelta ingorda Evidenziare la sottostruttura ottima Dimostrare che la soluzione ottima del problema residuo dopo la scelta ingorda può essere unito a tale scelta Scrittura codice: top-down, anche in maniera iterativa Nota: può essere necessario pre-processare l'input Alberto Montresor

30 Algoritmo di scheduling Definizione: 1 processore, n job p1, p,..., pn Ogni job pi ha un tempo di esecuzione t[i] Minimizzare il tempo di completamento medio Domanda: Risolvere il problema tramite la tecnica greedy Shortest job first ( )/ = 3/ (1+++1)/ = 7/ Alberto Montresor 30

31 Zaino Input Un intero positivo C - la capacità dello zaino n oggetti, tali che l oggetto i-esimo è caratterizzato da: un profitto pi e un volume vi, entrambi interi positivi Zaino (o Zaino 0/1) trovare un sottoinsieme S di {1,..., n} di oggetti tale che il volume totale non superi la capacità massima e il profitto totale sia massimo Zaino reale (o Zaino frazionario) E' possibile prendere frazioni di oggetti Alberto Montresor 31

32 p[] 60 v[] C 55 Scegli per primo l oggetto che ha profitto più alto = 5 Alberto Montresor 3

33 p[] 60 v[] C 55 Scegli per primo l oggetto che ha profitto più alto = 5 30 Scegli per primo l oggetto che ha volume più alto = 5 Alberto Montresor 33

34 p[ ] v[ ] per litro 5 per litro per litro C 55 Scegli per primo l oggetto che ha profitto più alto = 5 Scegli per primo l oggetto che ha volume più alto = 5 Scegli per primo l oggetto che ha il più alto profitto specifico / = 65 Alberto Montresor 3

35 Problema dello zaino Domanda: Dimostrare che il problema dello Zaino Reale gode della scelta greedy Dimostrare che il problema dello Zaino 0-1 non gode di scelta greedy In altre parole: Risolvere il problema dello Zaino Reale con programmazione dinamica è inutile e costoso Risolvere il problema dello Zaino 0-1 con tecnica greedy è scorretto Alberto Montresor 35

36 dell oggetto immediatamente successivo, ed i rimanenti oggetti non saranno scelti. Il tempo di calcolo è O(n log n), dominato dal costo dell ordinamento. Zaino reale zaino(integer[]p, integer[]v, integer C, integer n, integer[]x)!!!!!!! { ordina p e v in modo che p[1]/v[1] p[]/v[] p[n]/v[n]} integer i 1 while i n and C>0 do if v[i] C then x[i] C/v[i] C 0; else x[i] 1 C C v[i] i i +1 for integer j i to n do x[j] 0 Complessità O(n log n) per l ordinamento O(n) per la scelta dei valori Alberto Montresor 36

37 Problema della compressione Rappresentare i dati in modo efficiente Impiegare il numero minore di bit per la rappresentazione Goal: risparmio spazio su disco e tempo di trasferimento Una possibile tecnica di compressione: codifica di caratteri Tramite funzione di codifica f: f(c) = x c è un possibile carattere preso da un alfabeto Σ x è una rappresentazione binaria c è rappresentato da x Alberto Montresor 37

38 Codici di Huffman Supponiamo di avere un file di n caratteri Composto dai caratteri: a!! b!! c!! d!! e!! f Con le seguenti frequenze: 5% 13% 1% 16% % 5% Codifica tramite ASCII ( bit per carattere) Dimensione totale: n bit Codifica basata sull'alfabeto (3 bit per carattere) Codifica: Dimensione totale: 3n bit Possiamo fare di meglio? Alberto Montresor 3

39 Codici di Huffman Codifica a lunghezza variabile Caratteri: a!! b!! c!! d!! e!! f Codifica: Costo totale: ( ) n=.n Codice a prefisso (meglio, senza prefissi ): Nessun codice è prefisso di un altro codice Condizione necessaria per permettere la decodifica Esempio: ADDAABCA Considerate questo codice: f(a) = 1, f(b)=10, f(c)=11 Alberto Montresor 3

40 Codici di Huffman! Alcune domande! E' possibile che il testo codificato sia più lungo della rappresentazione con 3 bit?! Esistono testi difficili per una rappresentazione di questo tipo?! Come organizzare un algoritmo per la decodifica?! Come organizzare un algoritmo per la codifica è il tema dei lucidi seguenti! Cenni storici! David Huffman, 15! Algoritmo ottimo per costruire codici prefissi! Utilizzato in PKZIP Alberto Montresor 0

41 Rappresentazione ad albero per la decodifica Rappresentazione come alberi binari Figlio sinistro: 0 Figlio destro: 1 Caratteri dell'alfabeto sulle foglie 1 0 Algoritmo di decodifica:! 1. parti dalla radice. leggi un bit alla volta percorrendo l'albero: 0: sinistra 1: destra 3. stampa il carattere della foglia. torna a 1 a b c 0 d 0 1 e a: 00 b: 010 c: 011 d: 100 e: 101 Alberto Montresor 1

42 Rappresentazione ad albero per la decodifica Non c'è motivo di avere un nodo interno con un solo figlio Il figlio unico può essere sostituito al proprio genitore Sia che sia una foglia che un nodo interno 0 1 a Spazio sprecato a: 00 b: 010 c: 011 d: 100 e: 101 b c d e Alberto Montresor

43 Rappresentazione ad albero per la decodifica! Non c'è motivo di avere un nodo interno con un solo figlio! Il figlio unico può essere sostituito al proprio genitore! Sia che sia una foglia che un nodo interno 1 0 a: 00 b: 010 c: 011 d: 100 e: 101 a b c 0 d 1 e In questo albero ogni nodo interno ha due figli a: 00 b: 010 c: 011 d: 10 e: 11 Alberto Montresor 3

44 Definizione formale del problema Definizione: codice ottimo Nota: Nota: Dato un file F, un codice C è ottimo per F se non esiste un altro codice tramite il quale F possa essere compresso impiegando un numero inferiore di bit. Il codice ottimo dipende dal particolare file Possono esistere più soluzioni ottime I codici a prefisso ottimi sono rappresentati da un albero in cui tutti i nodi interni hanno due figli Alberto Montresor

45 Definizione formale del problema Supponiamo di avere: un file F composto da caratteri nell alfabeto Σ un albero T che rappresenta la codifica Quanti bit sono richiesti per codificare il file? Per ogni c Σ, sia dt(c) la profondità della foglia che rappresenta c Il codice per c richiederà allora dt(c) bit Se f [c] è il numero di occorrenze di c in F, allora la dimensione della codifica è C[F, T] = X c f[c] d T (c) Alberto Montresor 5

46 Algoritmo di Huffman Principio del codice di Huffman Minimizzare la lunghezza dei caratteri che compaiono più frequentemente Assegnare ai caratteri con la frequenza minore i codici corrispondenti ai percorsi più lunghi all interno dell albero Un codice è progettato per un file specifico Si ottiene la frequenza di tutti i caratteri Si costruisce il codice Si rappresenta il file tramite il codice Si aggiunge al file una rappresentazione del codice Alberto Montresor 6

47 Costruzione del codice Passo 1: Costruire una lista ordinata di nodi foglia per ogni carattere, etichettato con la propria frequenza f : 5 e : c : 1 b : 13 d : 16 a : 5 Alberto Montresor 7

48 Costruzione del codice Passo : Rimuovere i due nodi più piccoli (con frequenze minori) Passo 3: Collegarli ad un nodo padre etichettato con la frequenza combinata (sommata) 1 c : 1 b : 13 d : 16 a : 5 f : 5 e : Alberto Montresor

49 Costruzione del codice Passo : Aggiungere il nodo combinato alla lista. c : 1 b : 13 1 d : 16 a : 5 f : 5 e : Alberto Montresor

50 Costruzione del codice Ripetere i passi - fino a quando non resta un solo nodo nella lista 1 d : 16 5 a : 5 f : 5 e : c : 1 b : 13 Alberto Montresor 50

51 Costruzione del codice Ripetere i passi - fino a quando non resta un solo nodo nella lista 5 30 a : 5 c : 1 b : 13 1 d : 16 f : 5 e : Alberto Montresor 51

52 Costruzione del codice Ripetere i passi - fino a quando non resta un solo nodo nella lista a : c : 1 b : 13 1 d : 16 f : 5 e : Alberto Montresor 5

53 Costruzione del codice Al termine, si etichettano gli archi dell'albero con bit a c b d f e Alberto Montresor 53

54 Algoritmo in pseudo-codice max k S[i,j] {D[i, k]+d[k, j]+1} S[i, j] = TREE huffman(integer[]f, integer[]c, integer n) PRIORITYQUEUE Q MinPriorityQueue() for i 1 to n do Q.insert(f[i], Tree(f[i], c[i])) for i 1 to n 1 do z 1 Q.deleteMin() z Q.deleteMin() z Tree(z 1.f + z.f, nil) z.left z 1 z.right z Q.insert(z.f,z) return Q.deleteMin() Tree:! f // frequenza (key) c // carattere left // figlio sinistro right // figlio destro Complessità θ(n log n) Alberto Montresor 5

55 Dimostrazione di correttezza Teorema: L'output dell'algoritmo Huffman per un dato file è un codice a prefisso ottimo Schema della dimostrazione: Proprietà della scelta greedy Scegliere i due elementi con la frequenza più bassa conduce sempre ad una soluzione ottimale Sottostruttura ottima Dato un problema sull'alfabeto Σ, è possibile costruire un sottoproblema con un alfabeto più piccolo Alberto Montresor 55

56 Scelta greedy Sia Σ un alfabeto, f un vettore di frequenze x, y i due caratteri che hanno frequenza più bassa Allora Esiste un codice prefisso ottimo per Σ in cui x,y hanno la stessa profondità massima e i loro codici differiscono solo per l'ultimo bit (sono foglie sorelle) Dimostrazione Al solito, basata sulla trasformazione di una soluzione ottima Supponiamo che esistano due caratteri a,b con profondità massima e questi siano diversi da x,y Alberto Montresor 56

57 Scelta greedy Assumiamo (senza perdere in generalità): f[x] f[y] f[a] f[b] Poiché le frequenze di x e y sono minime: f[x] f[a] f[y] f[b] Scambiamo x con a: otteniamo T' Scambiamo y con b: otteniamo T" T T' T" x a a y y b a b x b x y Alberto Montresor 57

58 Scelta greedy Dimostriamo che: C(f,T '') C(f, T ') C(f,T) Ma poiché T è ottimo, sappiamo anche che: C(f,T) C(f,T '') Quindi T è anch'esso ottimo Alberto Montresor 5

59 Sottostruttura ottima Sia Σ un alfabeto, f un array di frequenze x, y i due caratteri che hanno frequenza più bassa Σ' = Σ - { x, y } { z } f[z] = f[x] + f[y] O un albero che rappresenta un codice a prefisso ottimo per Σ' Allora: L'albero T ottenuto da O sostituendo il nodo foglia z con un nodo interno con due figli x, y rappresenta un codice a prefisso ottimo per Σ Alberto Montresor 5

60 Sottostruttura ottima Esprimiamo la relazione fra il costo di T e O Per ogni c Σ - { x, y } f[c] dt(c) = f[c] do(c) Quindi tutte queste componenti sono uguali dt(x) = dt(y) = do(z)+1 da cui concludiamo f[x] dt(x) + f[y] dt(y) = (f[x] + f[y])( do(z)+1 ) = f[z] do(z) + f[x] + f[y] da cui concludiamo C(f, T) = C(f, O) + f[x] + f[y] C(f, O) = C(f, T) - f[x] - f[y] Alberto Montresor 60

61 Sottostruttura ottima Per assurdo: supponiamo T non sia ottimo Allora esiste un albero T' tale che C(f, T') < C(f, T) Senza perdere in generalità, sappiamo che T' ha x e y come foglie sorelle (proprietà della scelta greedy) Sia T'' l'albero ottenuto da T' sostituendo il padre di x, y con un nodo z tale che f[z] = f[x] + f[y] Allora C(f, T'') = C(f, T') f[x] f[y] < C(f, T) f[x] f[y] = C(f, O) Il che è assurdo, visto che O è ottimo Alberto Montresor 61

62 Albero di copertura di peso minimo Un problema di notevole importanza: determinare come interconnettere diversi elementi fra loro minimizzando certi vincoli sulle connessioni Esempio classico: progettazione dei circuiti elettronici dove si vuole minimizzare la lunghezza delle connessioni fra i diversi componenti Questo problema prende il nome di: albero di copertura (di peso) minimo albero di connessione (di peso) minimo minimum spanning tree Alberto Montresor 6

63 Definizione del problema Input: G=(V,E) un grafo non orientato e connesso w: V V R una funzione di peso (costo di connessione) se [u,v] E, allora w(u,v) è il peso dell'arco [u,v] se [u,v] E, allora w(u,v) = Poiché G non è orientato, w(u,v) = w(v,u) Alberto Montresor 63

64 Definizione del problema Albero di copertura (spanning tree) Dato un grafo G=(V,E) non orientato e connesso, un albero di copertura di G è un sottografo T=(V, E T ) tale che T è un albero E T E T contiene tutti i vertici di G 7 b c d a 11 7 i 6 h g f e Alberto Montresor 6

65 Definizione del problema Output: albero di copertura minimo (minimum spanning tree) L'albero di copertura il cui peso totale X w(u, v) [u,v]e T sia minimo! Nota: L albero di copertura di peso minimo non è unico b c d 7 7 b c d a 11 7 i 6 1 e a 11 7 i 6 1 e h g f 1 10 h g f 1 10 Alberto Montresor 65

66 Differenze con cammini minimi Calcolare un albero dei cammini minimi da singola sorgente a un albero di copertura minima coincidono? a b 1 c 1 d Alberto Montresor 66

67 Algoritmo generico Vediamo Un algoritmo di tipo goloso generico Due istanze di questo algoritmo: Kruskal e Prim L'idea è di accrescere un sottoinsieme A di archi in modo tale che venga rispettata la seguente condizione: A è un sottoinsieme di qualche albero di connessione minimo Un arco [u,v] è detto sicuro per A se A {[u,v]} è ancora un sottoinsieme di qualche albero di connessione minimo. Alberto Montresor 67

68 Algoritmo generico SET mst-generico(graph G, integer[]w) SET A while A non forma un albero di copertura do trova un arco sicuro [u, v] A A {[u, v]} return A Alberto Montresor 6

69 Definizioni Per caratterizzare gli archi sicuri dobbiamo introdurre alcune definizioni: Un taglio (S,V-S) di un grafo non orientato G=(V,E) è una partizione di V in due sottoinsiemi disgiunti Un arco [u,v] attraversa il taglio se u S e v V-S Un taglio rispetta un insieme di archi A se nessun arco di A attraversa il taglio Un arco che attraversa un taglio è leggero nel taglio se il suo peso è minimo fra i pesi degli archi che attraversano un taglio Alberto Montresor 6

70 Esempio 7 b c d Arco leggero che attraversa il taglio a 11 7 i 6 h g f e S Taglio V-S Insieme A: archi in grigio Il taglio rispetta A Alberto Montresor 70

71 Archi sicuri La regola per riconoscere gli archi sicuri è data dal seguente Teorema: Sia G=(V,E) un grafo non orientato e connesso Sia w una funzione peso a valori reali definita su E Sia A E contenuto in un qualche albero di copertura minimo per G Sia (S,V-S) un qualunque taglio che rispetta A Sia [u,v] un arco leggero che attraversa il taglio. Allora l arco [u,v] è sicuro per A Alberto Montresor 71

72 Esempio: arco non sicuro perché il taglio non rispetta A 7 b c d a 7 b c d 11 7 i 6 h g f e a 11 7 i 6 1 h g f 10 1 Arco sicuro 7 b c d a 11 7 i 6 1 h g f 10 1 Arco non sicuro e e Alberto Montresor 7

73 Esempio: arco non sicuro perché non leggero 7 b c d a 7 b c d 11 7 i 6 h g f e a a 11 7 i 6 1 h g f 10 1 Arco sicuro 7 b c d 11 7 i 6 1 h g f 10 1 e e Arco non sicuro Alberto Montresor 73

74 Archi sicuri Corollario: Sia G=(V,E) un grafo non orientato e connesso Sia w una funzione peso a valori reali definita su E Sia A E contenuto in un qualche albero di copertura minimo per G Sia C una componente connessa (un albero) nella foresta G A =(V,A) Sia [u,v] un arco leggero che connette C a qualche altra componente in G A Allora l arco [u,v] è sicuro per A Alberto Montresor 7

75 Algoritmo di Kruskal Idea Ingrandire sottoinsiemi disgiunti di un albero di copertura minimo connettendoli fra di loro fino ad avere l albero complessivo Si individua un arco sicuro scegliendo un arco [u,v] di peso minimo tra tutti gli archi che connettono due distinti alberi (componenti connesse) della foresta L algoritmo è greedy perché ad ogni passo si aggiunge alla foresta un arco con il peso minore Implementazione Utilizziamo una struttura dati Merge-Find Alberto Montresor 75

76 return T Algoritmo di Kruskal SET kruskal(edge[]e, integer n, integer m) SET A MFSET M Set() Mfset(n) { ordina E[1,...,m] in modo che E[1].peso apple apple E[m].peso } integer c 0 integer i 1 while c<n 1 and i apple m do % Termina quando l albero è costruito if M.find(E[i].u) 6= M.find(E[i].v) then M.merge(E[i].u, E[i].v) A.insert(E[i]) c c +1 i i +1 return A Alberto Montresor 76

77 Visualizzazione 7 b c d 7 b c d a 11 7 i 6 1 e a 11 7 i 6 1 e h g f 1 10 h g f b c d 7 b c d a 11 7 i 6 1 e a 11 7 i 6 1 e h g f 1 10 h g f 1 10 Alberto Montresor 77

78 Visualizzazione 7 b c d 7 b c d a 11 7 i 6 1 e a 11 7 i 6 1 e h g f 1 10 h g f b c d 7 b c d a 11 7 i 6 h g f e a 11 7 i 6 h g f e Alberto Montresor 7

79 Visualizzazione 7 b c d 7 b c d a 11 7 i 6 h g f e a 11 7 i 6 h g f e a 7 b c d 11 7 i 6 1 h g f 10 1 e a 7 b c d 11 7 i 6 1 h g f 10 1 e Alberto Montresor 7

80 Analisi Il tempo di esecuzione per l algoritmo di Kruskal dipende dalla realizzazione della struttura dati per insiemi disgiunti Utilizziamo la versione con euristica sul rango + compressione L inizializzazione richiede O(n) L'ordinamento richiede O(m log m) = O(m log n ) = O(m log n) Vengono eseguite O(m) operazioni sulla foresta di insiemi disgiunti, il che richiede un tempo O(m) Totale: O(n+m log n + m) = O(m log n) Alberto Montresor 0

81 Algoritmo di Prim L algoritmo di Prim procede mantenendo in A un singolo albero L albero parte da un vertice arbitrario r (la radice) e cresce fino a quando non ricopre tutti i vertici Ad ogni passo viene aggiunto un arco leggero che collega un vertice in V A con un vertice in V-V A dove V A è l'insieme di nodi raggiunti da archi in A Correttezza (V A,V-V A ) è un taglio che rispetta A (per definizione) Per il corollario, gli archi leggeri che attraversano il taglio sono sicuri Alberto Montresor 1

82 Implementazione Una struttura dati per i nodi non ancora nell'albero Durante l'esecuzione, i vertici non ancora nell'albero si trovano in una coda con priorità Q ordinata in base alla seguente definizione di priorità: La priorità del nodo v è il peso minimo di un arco che collega v ad un vertice nell'albero, o + se tale arco non esiste Come mantenere l'albero Ogni nodo v mantiene un puntatore al padre p[v] A è mantenuto implicitamente: A = { [v, v.p] v V-Q-{r} } Terminazione: Quando la coda Q è vuota Tutti i nodi tranne la radice conoscono il proprio padre Alberto Montresor

83 Algoritmo di Prim prim(graph G, integer r, integer[]p) PRIORITYQUEUE Q MinPriorityQueue() PRIORITYITEM[]pos new PRIORITYITEM[1...G.n] foreach u G.V() {r} do pos[u] Q.insert(u, + ) pos[r] Q.insert(r, 0) p[r] 0 while not Q.isEmpty() do u Q.deleteMin() pos[u] nil foreach v G.adj(u) do if pos[v] = nil and w(u, v) < pos[v].priorità then Q.decrease(pos[v],w(u, v)) p[v] u Alberto Montresor 3

84 Algoritmo di Prim: Esempio 7 b c d 7 b c d a 11 7 i 6 h g f e a 11 7 i 6 h g f e a 7 7 b c d 11 7 i 6 1 h g f 10 1 e a 7 7 b c d 11 7 i 6 1 h g f e Alberto Montresor

85 Algoritmo di Prim: Esempio a 7 7 b c d 11 7 i 6 1 h g f e 10 a 7 7 b c d 11 7 i 6 1 h g f e a 7 7 b c d 11 7 i 6 1 h g f 10 1 e 10 a 7 b c d 11 7 i 6 h g6 f e Alberto Montresor 5

86 Algoritmo di Prim: Esempio 7 b c d a 11 7 i 6 1 e h g f 1 10 Alberto Montresor 6

87 Algoritmo di Prim: Analisi L efficienza dell algoritmo di Prim dipende dalla coda Q Se Q viene realizzata tramite uno heap binario: Inizializzazione: O(n log n) Il ciclo principale viene eseguito n volte ed ogni operazione extractmin() è O(log n) Il ciclo interno viene eseguito O(m) volte L'operazione decreasekey() sullo heap che costa O(log n) Tempo totale: O(n+n log n + m log n)=o(m log n) asintoticamente uguale a quello di Kruskal Cosa succede se la coda con priorità è implementata tramite vettore non ordinato? Alberto Montresor 7

88 Esercizi Vero o falso L arco con peso minimo è sicuro L arco con il secondo peso minimo è sicuro L arco con il terzo peso minimo è sicuro Albero di copertura minima in un piano Dati n punti nel piano La distanza euclidea fra due punti è il peso di una connessione fra di essi Trovare un insieme di connessioni di peso minimo Alberto Montresor

89 Conclusioni Prospettiva storica Primo algoritmo: Boruvka 16 Kruskal 156 Prim 157 (ma anche Jarnik nel 130) Utilizzando gli heap di Fibonacci Prim viene eseguito in tempo O(m + n log n) Sviluppi recenti Karger, Klein, Tarjan (algoritmo randomizzato): O(n+m) Fredman, Willard (algoritmo non basato su confronti): O(n+m) Alberto Montresor

90 Algoritmi greedy Vantaggi Semplici da programmare Molto efficienti Quando è possibile dimostrare la proprietà di scelta ingorda, danno la soluzione ottima La soluzione sub-ottima può essere accettabile Svantaggi Non sempre applicabili se si vuole la soluzione ottima Alberto Montresor 0

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera L. De Giovanni AVVERTENZA: le note presentate di seguito non hanno alcuna pretesa di completezza, né hanno lo scopo di sostituirsi

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultimo Aggiornamento: 25 giugno 2014 Copyright Copyright 2012, 2013, 2014 Moreno Marzolla. Quest'opera è stata rilasciata

Dettagli

IL PROBLEMA DELLO SHORTEST SPANNING TREE

IL PROBLEMA DELLO SHORTEST SPANNING TREE IL PROBLEMA DELLO SHORTEST SPANNING TREE n. 1 - Formulazione del problema Consideriamo il seguente problema: Abbiamo un certo numero di città a cui deve essere fornito un servizio, quale può essere l energia

Dettagli

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente Minimo sottografo ricoprente Minimo sottografo ricoprente Dato un grafo connesso G = (V, E) con costi positivi sugli archi c e, un minimo sottografo ricoprente è un insieme di archi E E tale che: G = (V,

Dettagli

Alberi binari. Ilaria Castelli castelli@dii.unisi.it A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Alberi binari. Ilaria Castelli castelli@dii.unisi.it A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione Alberi binari Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Alberi binari, A.A. 2009/2010 1/20 Alberi binari

Dettagli

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Introduzione Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Il problema del massimo flusso è uno dei fondamentali problemi nell ottimizzazione su rete. Esso è presente

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12 A / A / Seconda Prova di Ricerca Operativa Cognome Nome Numero Matricola Nota: LA RISOLUZIONE CORRETTA DEGLI ESERCIZI CONTRADDISTINTI DA UN ASTERISCO È CONDIZIONE NECESSARIA PER IL RAGGIUNGIMENTO DELLA

Dettagli

A i è un aperto in E. i=1

A i è un aperto in E. i=1 Proposizione 1. A è aperto se e solo se A c è chiuso. Dimostrazione. = : se x o A c, allora x o A = A o e quindi esiste r > 0 tale che B(x o, r) A; allora x o non può essere di accumulazione per A c. Dunque

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

2 Formulazione dello shortest path come problema di flusso

2 Formulazione dello shortest path come problema di flusso Strumenti della Teoria dei Giochi per l Informatica A.A. 2009/10 Lecture 20: 28 Maggio 2010 Cycle Monotonicity Docente: Vincenzo Auletta Note redatte da: Annibale Panichella Abstract In questa lezione

Dettagli

DESMATRON TEORIA DEI GRAFI

DESMATRON TEORIA DEI GRAFI DESMATRON TEORIA DEI GRAFI 0 Teoria dei Grafi Author: Desmatron Release 1.0.0 Date of Release: October 28, 2004 Author website: http://desmatron.altervista.org Book website: http://desmatron.altervista.org/teoria_dei_grafi/index.php

Dettagli

Flusso a costo minimo e simplesso su reti

Flusso a costo minimo e simplesso su reti Flusso a costo minimo e simplesso su reti La particolare struttura di alcuni problemi di PL può essere talvolta utilizzata per la progettazione di tecniche risolutive molto più efficienti dell algoritmo

Dettagli

ALGEBRA I: CARDINALITÀ DI INSIEMI

ALGEBRA I: CARDINALITÀ DI INSIEMI ALGEBRA I: CARDINALITÀ DI INSIEMI 1. CONFRONTO DI CARDINALITÀ E chiaro a tutti che esistono insiemi finiti cioè con un numero finito di elementi) ed insiemi infiniti. E anche chiaro che ogni insieme infinito

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

Dispense del Corso di Algoritmi e Strutture Dati

Dispense del Corso di Algoritmi e Strutture Dati Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo Edoardo Bontà Università degli Studi di Urbino Carlo Bo Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Applicata Versione

Dettagli

Minimizzazione di Reti Logiche Combinatorie Multi-livello

Minimizzazione di Reti Logiche Combinatorie Multi-livello Minimizzazione di Reti Logiche Combinatorie Multi-livello Maurizio Palesi Maurizio Palesi 1 Introduzione Obiettivo della sintesi logica: ottimizzazione delle cifre di merito area e prestazioni Prestazioni:

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Esercizi sull Association Analysis

Esercizi sull Association Analysis Data Mining: Esercizi sull Association Analysis 1 Esercizi sull Association Analysis 1. Si consideri il mining di association rule da un dataset T di transazioni, rispetto a delle soglie minsup e minconf.

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE 1 DIPENDENZA E INDIPENDENZA LINEARE Se ho alcuni vettori v 1, v 2,, v n in uno spazio vettoriale V, il sottospazio 1 W = v 1,, v n di V da loro generato è

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Esame di Ricerca Operativa del 20/12/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa del 20/12/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare: Esame di Ricerca Operativa del 0// (Cognome) (Nome) (Corso di laurea) Esercizio. Completare la seguente tabella considerando il problema di programmazione lineare: max x x x + x x +x x x x x x x 0 x x

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Esame di Ricerca Operativa del 18/12/12. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa del 18/12/12. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare: Esame di Ricerca Operativa del 8// (Cognome) (Nome) (Corso di laurea) Esercizio. Completare la seguente tabella considerando il problema di programmazione lineare: max x x x x x x x + x x x + x 8 x Base

Dettagli

DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE

DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE Il problema Un computer è usato per risolvere dei problemi Prenotazione di un viaggio Compilazione e stampa di un certificato in un ufficio comunale Preparazione

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Attività 9. La città fangosa Minimal Spanning Trees

Attività 9. La città fangosa Minimal Spanning Trees Attività 9 La città fangosa Minimal Spanning Trees Sommario la nostra società ha molti collegamenti in rete: la rete telefonica, la rete energetica, la rete stradale. Per una rete in particolare, ci sono

Dettagli

Appunti di Logica Matematica

Appunti di Logica Matematica Appunti di Logica Matematica Francesco Bottacin 1 Logica Proposizionale Una proposizione è un affermazione che esprime un valore di verità, cioè una affermazione che è VERA oppure FALSA. Ad esempio: 5

Dettagli

Ricerca non informata in uno spazio di stati

Ricerca non informata in uno spazio di stati Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi A5_2 V2.4 Ricerca non informata in uno spazio di stati Il contenuto del documento è liberamente utilizzabile dagli

Dettagli

Ricorsione. Corso di Fondamenti di Informatica

Ricorsione. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Esercizi su lineare indipendenza e generatori

Esercizi su lineare indipendenza e generatori Esercizi su lineare indipendenza e generatori Per tutto il seguito, se non specificato esplicitamente K indicherà un campo e V uno spazio vettoriale su K Cose da ricordare Definizione Dei vettori v,,v

Dettagli

3. TEORIA DELL INFORMAZIONE

3. TEORIA DELL INFORMAZIONE 3. TEORIA DELL INFORMAZIONE INTRODUZIONE MISURA DI INFORMAZIONE SORGENTE DISCRETA SENZA MEMORIA ENTROPIA DI UNA SORGENTE NUMERICA CODIFICA DI SORGENTE 1 TEOREMA DI SHANNON CODICI UNIVOCAMENTE DECIFRABILI

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Funzioni in più variabili

Funzioni in più variabili Funzioni in più variabili Corso di Analisi 1 di Andrea Centomo 27 gennaio 2011 Indichiamo con R n, n 1, l insieme delle n-uple ordinate di numeri reali R n4{(x 1, x 2,,x n ), x i R, i =1,,n}. Dato X R

Dettagli

STRUTTURE (O COSTRUTTI) DI CONTROLLO

STRUTTURE (O COSTRUTTI) DI CONTROLLO Le strutture di controllo Le strutture di controllo STRUTTURE (O COSTRUTTI) DI CONTROLLO determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni

Dettagli

CALCOLO DEL MASSIMO COMUN DIVISORE

CALCOLO DEL MASSIMO COMUN DIVISORE CALCOLO DEL MASSIMO COMUN DIVISORE Problema: "calcolare il Massimo Comun Divisore (M.C.D.) di due numeri naturali, A e B, secondo l'algoritmo cosiddetto delle sottrazioni successive". L'algoritmo "delle

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice . Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice Ordinamento di osservazioni: PROC SORT PROC SORT DATA=fa il sort è numerico

Dettagli

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Istruzioni per il controllo di ciclo - ciclo a condizione generica Istruzioni per il controllo di ciclo - ciclo a condizione generica Permette di ripetere l esecuzione di un blocco di istruzioni finchè non viene verificata una condizione logica. Sintassi istruzione_1...

Dettagli

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Albero semantico. Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni.

Albero semantico. Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni. Albero semantico Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni. A differenza dell albero sintattico (che analizza la formula da un punto di vista puramente

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

+ P a n n=1 + X. a n = a m 3. n=1. m=4. Per poter dare un significato alla somma (formale) di infiniti termini, ricorriamo al seguente procedimento:

+ P a n n=1 + X. a n = a m 3. n=1. m=4. Per poter dare un significato alla somma (formale) di infiniti termini, ricorriamo al seguente procedimento: Capitolo 3 Serie 3. Definizione Sia { } una successione di numeri reali. Ci proponiamo di dare significato, quando possibile, alla somma a + a 2 +... + +... di tutti i termini della successione. Questa

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Convessità e derivabilità

Convessità e derivabilità Convessità e derivabilità Definizione 1 (convessità per funzioni derivabili) Sia f : (a, b) R derivabile su (a, b). Diremo che f è convessa o concava su (a, b) se per ogni 0 (a,b) il grafico di f sta tutto

Dettagli

ALCUNE APPLICAZIONI DEL CALCOLO DIFFERENZIALE

ALCUNE APPLICAZIONI DEL CALCOLO DIFFERENZIALE ALCUNE APPLICAZIONI DEL CALCOLO DIFFERENZIALE Sia I un intervallo di R e siano a = inf(i) R { } e b = sup(i) R {+ }; i punti di I diversi dagli estremi a e b, ( e quindi appartenenti all intervallo aperto

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

Dettagli

Permutazione degli elementi di una lista

Permutazione degli elementi di una lista Permutazione degli elementi di una lista Luca Padovani padovani@sti.uniurb.it Sommario Prendiamo spunto da un esercizio non banale per fare alcune riflessioni su un approccio strutturato alla risoluzione

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

METODI ITERATIVI PER SISTEMI LINEARI

METODI ITERATIVI PER SISTEMI LINEARI METODI ITERATIVI PER SISTEMI LINEARI LUCIA GASTALDI 1. Metodi iterativi classici Sia A R n n una matrice non singolare e sia b R n. Consideriamo il sistema (1) Ax = b. Un metodo iterativo per la soluzione

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti 4. Insiemi numerici 4.1 Insiemi numerici Insieme dei numeri naturali = {0,1,,3,,} Insieme dei numeri interi relativi = {..., 3,, 1,0, + 1, +, + 3, } Insieme dei numeri razionali n 1 1 1 1 = : n, m \{0}

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

Dettagli

I Numeri Complessi. Si verifica facilmente che, per l operazione di somma in definita dalla (1), valgono le seguenti

I Numeri Complessi. Si verifica facilmente che, per l operazione di somma in definita dalla (1), valgono le seguenti Y T T I Numeri Complessi Operazioni di somma e prodotto su Consideriamo, insieme delle coppie ordinate di numeri reali, per cui si ha!"# $&% '( e )("+* Introduciamo in tale insieme una operazione di somma,/0"#123045"#

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi. 1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati Tipologie di pianificatori Pianificazione Intelligenza Artificiale e Agenti II modulo Pianificazione a ordinamento parziale (POP) (HTN) pianificazione logica (SatPlan) Pianificazione come ricerca su grafi

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Matlab: Funzioni. Informatica B. Daniele Loiacono

Matlab: Funzioni. Informatica B. Daniele Loiacono Matlab: Funzioni Informatica B Funzioni A cosa servono le funzioni? 3 x = input('inserisci x: '); fx=1 for i=1:x fx = fx*x if (fx>220) y = input('inserisci y: '); fy=1 for i=1:y fy = fy*y A cosa servono

Dettagli

DAL PROBLEMA AL PROGRAMMA

DAL PROBLEMA AL PROGRAMMA 1. I PROBLEMI E LA LORO SOLUZIONE DAL PROBLEMA AL PROGRAMMA L'uomo, per affrontare gli innumerevoli problemi postigli dallo sviluppo della civiltà, si è avvalso della scienza e della tecnica, i cui destini

Dettagli

ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA

ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA 1. RICHIAMI SULLE PROPRIETÀ DEI NUMERI NATURALI Ho mostrato in un altra dispensa come ricavare a partire dagli assiomi di

Dettagli

VC-dimension: Esempio

VC-dimension: Esempio VC-dimension: Esempio Quale è la VC-dimension di. y b = 0 f() = 1 f() = 1 iperpiano 20? VC-dimension: Esempio Quale è la VC-dimension di? banale. Vediamo cosa succede con 2 punti: 21 VC-dimension: Esempio

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

1 Definizione: lunghezza di una curva.

1 Definizione: lunghezza di una curva. Abstract Qui viene affrontato lo studio delle curve nel piano e nello spazio, con particolare interesse verso due invarianti: la curvatura e la torsione Il primo ci dice quanto la curva si allontana dall

Dettagli

QUADERNI DI DIDATTICA

QUADERNI DI DIDATTICA Department of Applied Mathematics, University of Venice QUADERNI DI DIDATTICA Tatiana Bassetto, Marco Corazza, Riccardo Gusso, Martina Nardon Esercizi sulle funzioni di più variabili reali con applicazioni

Dettagli

FUNZIONI CONVESSE. + e x 0

FUNZIONI CONVESSE. + e x 0 FUNZIONI CONVESSE Sia I un intervallo aperto di R (limitato o illimitato) e sia f(x) una funzione definita in I. Dato x 0 I, la retta r passante per il punto P 0 (x 0, f(x 0 )) di equazione y = f(x 0 )

Dettagli

Anello commutativo. Un anello è commutativo se il prodotto è commutativo.

Anello commutativo. Un anello è commutativo se il prodotto è commutativo. Anello. Un anello (A, +, ) è un insieme A con due operazioni + e, dette somma e prodotto, tali che (A, +) è un gruppo abeliano, (A, ) è un monoide, e valgono le proprietà di distributività (a destra e

Dettagli

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Autori: M. Di Ianni, A. Panepuccia

Autori: M. Di Ianni, A. Panepuccia AR Analisi di Reti 2010/2011 M.Di Ianni Assegnazioni di ruoli Autori: M. Di Ianni, A. Panepuccia In questa dispensa verrà trattato il problema dell assegnazione dei ruoli in un grafo. Tale problema è stato

Dettagli

Analisi Matematica I

Analisi Matematica I Analisi Matematica I Fabio Fagnani, Gabriele Grillo Dipartimento di Matematica Politecnico di Torino Queste dispense contengono il materiale delle lezioni del corso di Analisi Matematica I rivolto agli

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

Dettagli

Equazioni non lineari

Equazioni non lineari Dipartimento di Matematica tel. 011 0907503 stefano.berrone@polito.it http://calvino.polito.it/~sberrone Laboratorio di modellazione e progettazione materiali Trovare il valore x R tale che f (x) = 0,

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

10. Insiemi non misurabili secondo Lebesgue.

10. Insiemi non misurabili secondo Lebesgue. 10. Insiemi non misurabili secondo Lebesgue. Lo scopo principale di questo capitolo è quello di far vedere che esistono sottoinsiemi di R h che non sono misurabili secondo Lebesgue. La costruzione di insiemi

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

STUDIO DI UNA FUNZIONE

STUDIO DI UNA FUNZIONE STUDIO DI UNA FUNZIONE OBIETTIVO: Data l equazione Y = f(x) di una funzione a variabili reali (X R e Y R), studiare l andamento del suo grafico. PROCEDIMENTO 1. STUDIO DEL DOMINIO (CAMPO DI ESISTENZA)

Dettagli

Esistenza di funzioni continue non differenziabili in alcun punto

Esistenza di funzioni continue non differenziabili in alcun punto UNIVERSITÀ DEGLI STUDI DI CAGLIARI FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI CORSO DI LAUREA IN MATEMATICA Esistenza di funzioni continue non differenziabili in alcun punto Relatore Prof. Andrea

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli