Algoritmi e Strutture Dati. Grafi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi e Strutture Dati. Grafi"

Transcript

1 Algoritmi e Strutture Dti Grfi Alberto Montresor Università di Trento 2019/01/13 This work is licensed under Cretive Commons Attribution-ShreAlike 4.0 Interntionl License.

2 Sommrio 1 Introduzione Esempi Definizioni Specific Memorizzzione 2 Visite dei grfi 3 BFS Cmmini più brevi 4 Componenti connesse Grfi ciclici non orientti Clssificzione degli rchi Grfi ciclici orientti Ordinmento topologico Componenti fortemente connesse

3 Introduzione Esempi Esempi Esempi di grfi Alberto Montresor 2 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 1 / 101

4 Introduzione Esempi Problemi reltivi i grfi Problemi in grfi non pesti Ricerc del cmmino più breve (misurto in numero di rchi) Componenti (fortemente) connesse, verific ciclicità, ordinmento topologico Problemi in grfi pesti Cmmini di peso minimo Alberi di copertur di peso minimo Flusso mssimo Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 2 / 101

5 Introduzione Esempi Problemi reltivi i grfi Moltissimi problemi possono essere visti come problemi su grfi. Sebbene i problemi bbino form strtt, le loro ppliczioni si trovno poi negli mbiti più disprti Esempi Qundo cercte qulcuno su LinkedIn, vi restituisce un "grdo di conoscenz": e.g., l lunghezz del più breve cmmino fr me e Bill Gtes nell rete socile di LinkedIn è pri 3. L ordinmento topologico viene utilizzto per stbilire un ordine di zioni in un grfo di dipendenze. Gli lgoritmi di model checking utilizzti per l verific formle del softwre sono bsti sull identificzione delle componenti fortemente connesse. Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 3 / 101

6 Introduzione Esempi Un esempio di ppliczione Wtson e Holmes indgno sull morte del duc McPollock Wtson: Ci sono novità, Holmes: pre che il testmento, ndto distrutto nell esplosione, fosse stto fvorevole d un delle sette miche del duc. Holmes: Ciò che è più strno, è che l bomb si stt fbbrict ppositmente per essere nscost nell rmtur dell cmer d letto, il che f supporre che l ssssino bbi necessrimente ftto più di un visit l cstello. Wtson: Ho interrogto personlmente le sette donne, m ciscun h giurto di essere stt nel cstello un sol volt nell su vit. Dgli interrogtori risult che: Ann h incontrto Betty, Chrlotte, Felici e Georgi; Betty h incontrto Ann, Chrlotte, Edith, Felici e Helen; Chrlotte h incontrto Ann, Betty e Edith; Edith h incontrto Betty, Chrlotte, Felici; Felici h incontrto Ann, Betty, Edith, Helen; Georgi h incontrto Ann e Helen; Helen h incontrto Betty, Felici e Georgi. Vedete, Holmes, che le testimoninze concordno. M chi srà l ssssino? Holmes: Elementre, mio cro Wtson: ciò che mi vete detto individu inequivocbilmente l ssssino! Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 4 / 101

7 Introduzione Esempi Un esempio di ppliczione f e h b c g h g b b h g h g b Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 5 / 101

8 Introduzione Definizioni Grfi orientti e non orientti: definizioni Grfo orientto (directed) È un coppi G = (V, E) dove: V è un insieme di nodi (node) o vertici (vertex) E è un insieme di coppie ordinte (u, v) di nodi dette rchi (edge) V = {,b,c,d,e,f } E = { (,b), (,d), (b,c), (d,), (d,c), (d,e), (e,c) } b d c e f Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 6 / 101

9 Introduzione Definizioni Grfi orientti e non orientti: definizioni Grfo non orientto (undirected) È un coppi G = (V, E) dove: V è un insieme di nodi (node) o vertici (vertex) E è un insieme di coppie non ordinte (u, v) dette rchi (edge) V = {,b,c,d,e,f } E = { (,b), (,d), (b,c), (c,d), (d,e), (c,e) } b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 7 / 101

10 Introduzione Definizioni Terminologi Un vertice v è detto dicente u se esiste un rco (u, v) Un rco (u, v) è detto incidente d u v In un grfo indiretto, l relzione di dicenz è simmetric b d c e f (, b) è incidente d b (, d) è incidente d d (d, ) è incidente d d b è dicente d è dicente è dicente d Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 8 / 101

11 Introduzione Definizioni Dimensioni del grfo Definizioni n = V : numero di nodi m = E : numero di rchi Alcune relzioni fr n e m In grfo non orientto, m n(n 1) 2 = O(n 2 ) In grfo orientto, m n 2 n = O(n 2 ) Complessità di lgoritmi su grfi L complessità è espress in termini si di n che di m (d es. O(n + m)) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 9 / 101

12 Introduzione Definizioni Alcuni csi specili Un grfo con un rco fr tutte le coppie di nodi è detto completo Informlmente (non c è ccordo sull definizione) Un grfo si dice sprso se h "pochi rchi"; grfi con m = O(n), m = O(n log n) sono considerti sprsi Un grfo si dice denso se h "tnti rchi"; e.g., m = Ω(n 2 ) b c b c d e d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 10 / 101

13 Introduzione Definizioni Alcuni csi specili Un lbero libero (free tree) è un grfo connesso con m = n 1 Un lbero rdicto (rooted tree) è un grfo connesso con m = n 1 nel qule uno dei nodi è designto come rdice. Un insieme di lberi è un grfo detto forest b c b c d e f root d e f g h i Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 11 / 101

14 Introduzione Definizioni Definizioni: Grdo Grfi non orientti Il grdo (degree) di un nodo è il numero di rchi incidenti su di esso. Grfi orientti Il grdo entrnte (in-degree) di un nodo è il numero di rchi incidenti su di esso. Il grdo uscente (out-degree) di un nodo è il numero di rchi incidenti d esso. 2 2 b d 3 3 c e 2 0 f in 1 out 2 in 1 out 1 b d in 1 out 3 in 3 out 0 c e in 1 out 1 f in 0 out 0 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 12 / 101

15 Introduzione Definizioni Definizioni: Cmmino Cmmino (Pth) In un grfo G = (V, E) (orientto oppure no), un cmmino C di lunghezz k è un sequenz di nodi u 0, u 1,..., u k tle che (u i, u i+1 ) E per 0 i k 1. b d c e Esempio:, b, c, e, d è un cmmino nel grfo di lunghezz 4 Not: un cmmino è detto semplice se tutti i suoi nodi sono distinti Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 13 / 101

16 Introduzione Definizioni Definizioni: Cmmino Cmmino (Pth) In un grfo G = (V, E) (orientto oppure no), un cmmino C di lunghezz k è un sequenz di nodi u 0, u 1,..., u k tle che (u i, u i+1 ) E per 0 i k 1. b d c e Esempio:, b, c, e, d è un cmmino nel grfo di lunghezz 4 Not: un cmmino è detto semplice se tutti i suoi nodi sono distinti Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 13 / 101

17 Introduzione Specific Specific Grfi dinmici Nell versione più generle, il grfo è un struttur di dti dinmic che permette di ggiungere/rimuovere nodi e rchi. Grph Grph( ) Set V() int size() Set dj(node u) insertnode(node u) insertedge(node u, Node v) deletenode(node u) deleteedge(node u, Node v) % Cre un nuovo grfo % Restituisce l insieme di tutti i nodi % Restituisce il numero di nodi % Restituisce l insieme dei nodi dicenti u % Aggiunge il nodo u l grfo % Aggiunge l rco (u, v) l grfo % Rimuove il nodo u dl grfo % Rimuove l rco (u, v) dl grfo Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 14 / 101

18 Introduzione Specific Specific ridott (senz rimozioni) Grph Grph( ) Set V() int size() In lcuni csi, il grfo è dinmico m sono possibili solo inserimenti Il grfo viene cricto ll inizio e poi non viene modificto Questo h riflessi sull implementzione sottostnte Set dj(node u) insertnode(node u) insertedge(node u, Node v) % Cre un nuovo grfo % Restituisce l insieme di tutti i nodi % Restituisce il numero di nodi % Restituisce l insieme dei nodi dicenti u % Aggiunge il nodo u l grfo % Aggiunge l rco (u, v) l grfo Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 15 / 101

19 Introduzione Memorizzzione Memorizzre grfi Due possibili pprocci Mtrici di dicenz Liste di dicenz Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 16 / 101

20 Introduzione Memorizzzione Mtrice di dicenz: grfi orientti m uv = { 1 (u, v) E 0 (u, v) E Spzio = n 2 bit Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 17 / 101

21 Introduzione Memorizzzione Liste di dicenz: grfi orientti G.dj(u) = {v (u, v) E} Spzio = n + bm bit b Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 18 / 101

22 Introduzione Memorizzzione Mtrice di dicenz: grfi non orientti m uv = { 1 (u, v) E 0 (u, v) E Spzio = n 2 oppure n(n 1)/2 bit Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 19 / 101

23 Introduzione Memorizzzione Liste di dicenz: grfo non orientto G.dj(u) = {v (u, v) E} Spzio = n + 2 bm b Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 20 / 101

24 Introduzione Memorizzzione Mtrice di dicenz: grfi pesti Grfi pesti Gli rchi possono vere un peso (costo, profitto, etc.) Il peso è dto d un funzione di peso w : V V R Se non esiste rco fr due vertici, il peso ssume un vlore che dipende dl problem - e.g. w(u, v) = 0 oppure Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 21 / 101

25 Introduzione Memorizzzione Liste di dicenz: grfi pesti Grfi pesti Gli rchi possono vere un peso (costo, profitto, etc.) Il peso è dto d un funzione di peso w : V V R Se non esiste rco fr due vertici, il peso ssume un vlore che dipende dl problem - e.g. w(u, v) = + oppure b 1(3) 3(1) 1 0(3) 2(4) (4) 0(1) 3(4) 2(4) 4(7) 4(8) (7) 3(8) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 22 / 101

26 Introduzione Memorizzzione Liste di dicenz - vrizioni sul tem Si il concetto di list di djcenz che il concetto di list dei nodi possono essere declinti in molti modi: Struttur Jv C++ Python List collegt LinkedList list Vettore sttico [] [] [] Vettore dinmico ArryList vector list Insieme HshSet set set TreeSet Dizionrio HshMp TreeMp mp dict Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 23 / 101

27 Introduzione Memorizzzione Vettore di dicenz: grfo orientto G.dj(u) = {v (u, v) E} Spzio = n + bm bit b Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 24 / 101

28 Introduzione Memorizzzione Dettgli sull implementzione Se non diversmente specificto, nel seguito: Assumeremo che l implementzione si bst su vettori di dicenz, sttici o dinmici Assumeremo che l clsse Node si equivlente int (quindi l ccesso lle informzioni vrà costo O(1)) Assumeremo che le operzioni per ggiungere nodi e rchi bbino costo O(1) Assumeremo che dopo l inizilizzzione, il grfo si sttico Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 25 / 101

29 Introduzione Memorizzzione Implementzione (pest) con dizionri Python clss Grph: def init (self): self.nodes = { } def V(self): return self.nodes.keys() def size(self) return len(self.nodes) def insertnode(self,u): if u not in self.nodes: self.nodes[u] = { } def insertedge(self, u, v, w=0): self.insertnode(u) self.insertnode(v) self.nodes[u][v] = w def dj(self, u): if u in self.nodes: return self.nodes[u] Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 26 / 101

30 Introduzione Memorizzzione Implementzione (pest) con dizionri Python 1 grph = Grph() for u,v in [ (, b ), (, d ), ( b, c ), ( d, ), ( d, c ), ( d, e ), ( e, c ) ]: grph.insertedge(u,v) for u in grph.v(): print(u, "->", grph.dj(u)) f -> {} b -> { c : 0} e -> { c : 0} -> { b : 0, d : 0} d -> { e : 0, c : 0, : 0} c -> {} b d c e f 1 Guido vn Rossum Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 27 / 101

31 Introduzione Memorizzzione Iterzione su nodi e rchi Iterzione su tutti i nodi del grfo forech u G.V() do { Esegui operzioni sul nodo u } Iterzione su tutti i nodi e rchi del grfo forech u G.V() do { Esegui operzioni sul nodo u } forech v G.dj(u) do { Esegui operzioni sull rco (u, v) } Costo computzionle O(m + n) con liste di dicenz O(n 2 ) con mtrici di dicenz Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 28 / 101

32 Introduzione Memorizzzione Rissumendo Mtrici di dicenz Spzio richiesto O(n 2 ) Verificre se u è dicente v richiede tempo O(1) Iterre su tutti gli rchi richiede tempo O(n 2 ) Idele per grfi densi Liste di dicenz Spzio richiesto O(n + m) Verificre se u è dicente v richiede tempo O(n) Iterre su tutti gli rchi richiede tempo O(n + m) Idele per grfi sprsi Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 29 / 101

33 Visite dei grfi Visite dei grfi Definizione del problem Dto un grfo G = (V, E) e un vertice r V (rdice, sorgente), visitre un e un volt sol tutti i nodi del grfo che possono essere rggiunti d r Visit in mpiezz (Bredth-first serch) (BFS) Visit dei nodi per livelli: prim si visit l rdice, poi i nodi distnz 1 dll rdice, poi distnz 2, etc. Appliczione: clcolre i cmmini più brevi d un singol sorgente Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 30 / 101

34 Visite dei grfi Visite dei grfi Definizione del problem Dto un grfo G = (V, E) e un vertice r V (rdice, sorgente), visitre un e un volt sol tutti i nodi del grfo che possono essere rggiunti d r Visit in profondità (Depth-First Serch) () Visit ricorsiv: per ogni nodo dicente, si visit ricorsivmente tle nodo, visitndo ricorsivmenti i suoi nodi dicenti, etc. Appliczione: ordinmento topologico Appliczione: componente connesse, componenti fortemente connesse Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 30 / 101

35 Visite dei grfi Visit: leggermente più difficile di qunto sembri Un pproccio ingenuo ll visit di un grfo potrebbe essere il seguente: visit(grph G) forech u G.V() do { visit nodo u } forech v G.dj(u) do { visit rco (u, v) } L struttur del grfo non è tenut in considerzione Si iter su tutti i nodi e gli rchi senz nessun criterio Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 31 / 101

36 Visite dei grfi Visit: leggermente più difficile di qunto sembri Un possibile pproccio: utilizzre le visite degli lberi Chimre un BFS prtire d un nodo I nodi dicenti sono trttti come figli BFSTrversl(Grph G, int r) Queue Q = Queue() Q.enqueue(r) while not Q.isEmpty() do Node u = Q.dequeue() { visit il nodo u } forech v G.dj(u) do Q.enqueue(v) c d e b f g h Queue = { } j l k Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 32 / 101

37 Visite dei grfi Esempio: Visit errt c d e k b f g h l Queue = { e,b,,d,,b,d,g } j Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 33 / 101

38 Visite dei grfi Algoritmo generico di ttrversmento grphtrversl(grph G, Node r) Set S = Set() S.insert(r) { mrc il nodo r } while S.size() > 0 do Node u = S.remove() { visit il nodo u } forech v G.dj(u) do { visit l rco (u, v) } if v non è ncor stto mrcto then { mrc il nodo v } S.insert(v) % Insieme generico % D specificre % D specificre % D specificre Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 34 / 101

39 BFS Bredth-first serch - Obiettivi Visitre i nodi distnze crescenti dll sorgente Visitre i nodi distnz k prim di visitre i nodi distnz k + 1 Clcolre il cmmino più breve d r tutti gli ltri nodi Le distnze sono misurte come il numero di rchi ttrversti Generre un lbero bredth-first Generre un lbero contenente tutti i nodi rggiungibili d r, tle per cui il cmmino dll rdice r l nodo u nell lbero corrisponde l cmmino più breve d r u nel grfo. Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 35 / 101

40 BFS Bredth-first serch bfs(grph G, Node r) Queue Q = Queue( ) S.enqueue(r) boolen[ ] visited = new boolen[1... G.size()] forech u G.V() {r} do visited[u] = flse visited[r] = true while not Q.isEmpty() do Node u = Q.dequeue() { visit il nodo u} forech v G.dj(u) do { visit l rco (u, v) } if not visited[v] then visited[v] = true Q.enqueue(v) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 36 / 101

41 BFS Cmmini più brevi Appliczione BFS: Cmmini più brevi Pul Erdös ( ) Mtemtico rticoli, 500+ co-utori Numero di Erdös Erdös h vlore erdos = 0 I co-utori di Erdös hnno erdos = 1 Se X è co-utore di qulcuno con erdos = k e non è coutore con qulcuno con erdos < k, llor X h erdos = k + 1 Le persone non rggiunte d quest definizione hnno erdos = + Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 37 / 101

42 BFS Cmmini più brevi Alberto Montresor, erdos = 4 Alberto Montresor, erdos = 4 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 38 /

43 BFS Cmmini più brevi Clcolre il numero di Erdös erdos(grph G, Node r, int[ ] erdős, Node[ ] prent) Queue Q = Queue() Q.enqueue(r) forech u G.V() {r} do erdős[u] = erdős[r] = 0 prent[r] = nil while not Q.isEmpty() do Node u = Q.dequeue() forech v G.dj(u) do if erdős[v] == then % Se il nodo v non è stto scoperto erdős[v] = erdős[u] + 1 prent[v] = u Q.enqueue(v) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 39 / 101

44 BFS Cmmini più brevi Esempio: Erdös 0 2 b 1 c 2 d 1 e k f g h l Queue = { } j 3 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 40 / 101

45 BFS Cmmini più brevi Albero BFS (BFS Tree) L visit BFS può essere ust per ottenere il cmmino più breve fr due nodi (misurto in numero di rchi) "Albero di copertur" con rdice r Memorizzto in un vettore dei pdri prent erdos([...], Node[ ] prent) [... ] while not S.isEmpty() do Node u = S.dequeue() forech v G.dj(u) do if erdős[v] == then erdős[v] = erdős[u] + 1 prent[v] = u S.enqueue(v) printpth(node r, Node s, Node[ ] prent) if r == s then print s else if prent[s] == nil then print error else printpth(r, prent[s], prent) print s Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 41 / 101

46 BFS Cmmini più brevi Albero BFS (BFS Tree) 0 2 b 1 c 2 d 1 e k f g h l Queue = { } j 3 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 42 / 101

47 BFS Cmmini più brevi Complessità BFS Complessità: O(m + n) Ognuno degli n nodi viene inserito nell cod l mssimo un volt Ogni volt che un nodo viene estrtto, tutti i suoi rchi vengono nlizzti un volt sol Il numero di rchi nlizzti è quindi m = u V out d (u) dove out d (u) è l out-degree del nodo u Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 43 / 101

48 Depth-First Serch () Depth-First Serch Spesso un subroutine dell soluzione di ltri problemi Utilizzt per esplorre un intero grfo, non solo i nodi rggiungibili d un singol sorgente Output Invece di un lbero, un forest depth-first G f = (V, E f ) Formt d un collezione di lberi depth-first Struttur dti Stck implicito, ttrverso l ricorsione Stck esplicito Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 44 / 101

49 Depth-First Serch (Ricorsiv, stck implicito) dfs(grph G, Node u, boolen[ ] visited) visited[u] = true { visit il nodo u (pre-order) } forech v G.dj(u) do if not visited[v] then { visit l rco (u, v) } dfs(g, v, visited) { visit il nodo u (post-order) } Complessità: O(m + n) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 45 / 101

50 If you do not dd unit, you will get th Alberto Montresor (UniTN) ASD - Grfi None 2019/01/13 46 / 101 BFS vs Eseguire un bst su chimte ricorsive può essere rischioso in grfi molto grndi e connessi È possibile che l profondità rggiunt si troppo grnde per l dimensione dello stck del linguggio In tli csi, si preferisce utilizzre un BFS oppure un bst su stck esplicito Defult Vlue Xss defult vlues re pltform specif Stck size in Jv Tble 2 9 Xss Defult Vlues Pltform Defult Windows IA32 64 KB Linux IA KB Windows x86_ KB Linux x86_ KB Windows IA KB Linux IA KB (1 MB) Solris Sprc 512 KB Flgs or Other Options A

51 (Itertiv, stck esplicito, pre-order) dfs(grph G, Node r) Stck S = Stck( ) S.push(r) boolen[ ] visited = new boolen[1... G.size()] forech u G.V() do visited[u] = flse while not S.isEmpty() do Node u = S.pop() if not visited[u] then { visit il nodo u (pre-order) } visited[v] = true forech v G.dj(u) do { visit l rco (u, v) } S.push(v) Note Un nodo può essere inserito nell pil più volte Il controllo se un nodo è già stto visitto viene ftto ll estrzione, non ll inserimento Complessità O(m + n) O(m) visite degli rchi O(m) inserimenti, estrzioni O(n) visite dei nodi Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 47 / 101

52 (Itertiv, stck esplicito, post-order) Visit post-order Qundo un nodo viene scoperto: viene inserito nello stck con il tg discovery Qundo un nodo viene estrtto dll cod con tg discovery: Viene re-inserito con il tg finish Tutti i suoi vicini vengono inseriti Qundo un nodo viene estrtto dll cod con tg finish: Viene effettut l post-visit Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 48 / 101

53 Componenti connesse Componenti (fortemente) connesse Motivzioni Molti lgoritmi che operno sui grfi inizino decomponendo il grfo nel sue componenti connesse. Tli lgoritmi sono eseguiti su ognun delle componenti I risultti sono ricomposti ssieme. Definizioni Componenti connesse, definite su grfi non orientti (Connected components, CC) Componenti fortemente connesse, definite su grfi orientti (Strongly connected components, SCC) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 49 / 101

54 Componenti connesse Definizioni: Rggiungibilità Definizione Un nodo v è rggiungibile d un nodo u se esiste lmeno un cmmino d u v. Il nodo d è rggiungibile dl nodo e vicevers Il nodo d è rggiungibile dl nodo, m non vicevers b c b c d e d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 50 / 101

55 Componenti connesse Grfi connessi e componenti connesse Definizioni Definizioni: Grfi connessi e componenti connesse Un grfo non orientto G = (V, E) è connesso ogni suo In un grfo non orientto G nodo è rggiungibile d ogni ltro suo nodo Un grfo G = (V, E ) è un componente conness di G G Un grfo G = (V, E ) è un componente conness di G è un è un sottogrfo connesso di G connesso e e mssimle di G G è un sottogrfo di G (G G) V V e E E G è mssimle G è mssimle non esiste un sottogrfo G di G che si nessun ltro sottogrfo G di connesso G tle che G e più grnde di G, ovvero tle è connesso e più grnde di G per cui G G G (i.e. G G G) Alberto Montresor G è connesso esiste un cmmino d ogni vertice d ogni ltro vertice Definizioni G è un sottogrfo di G (G G) se e solo se V V e E E Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 51 / 101 A

56 Componenti connesse Appliczione : Componenti connesse Problem Verificre se un grfo è connesso oppure no Identificre le sue componenti connesse Soluzione Un grfo è connesso se, l termine dell, tutti i nodi sono mrcti Altrimenti, l visit deve ricomincire d cpo d un nodo non mrcto, identificndo un nuov componente del grfo Strutture dti Un vettore id, che contiene gli identifictori delle componenti id[u] è l identifictore dell c.c. cui pprtiene u Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 52 / 101

57 Componenti connesse Appliczione : Componenti connesse int[ ] cc(grph G) int[ ] id = new int[1... G.size()] forech u G.V() do id[u] = 0 int counter = 0 forech u G.V() do if id[u] == 0 then counter = counter +1 ccdfs(g, counter, u, id) ccdfs(grph G, int counter, Node u, int[ ] id) id[u] = counter forech v G.dj(u) do if id[v] == 0 then ccdfs(g, counter, v, id) return id Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 53 / 101

58 Componenti connesse Esempio: Componenti connesse 1 1 b 1 c 2 e 2 f 2 i d g h j 3 k v Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 54 / 101

59 Grfi ciclici non orientti Definizioni: Ciclo Ciclo (cycle) In un grfo non orientto G = (V, E), un ciclo C di lunghezz k > 2 è un sequenz di nodi u 0, u 1,..., u k tle che (u i, u i+1 E) per 0 i k 1 e u 0 = u k. b c k > 2 esclude cicli bnli composti d coppie di rchi (u, v) e (v, u), che sono onnipresenti nei grfi non orientti. d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 55 / 101

60 Grfi ciclici non orientti Definizioni: Grfo ciclico Grfo ciclico Un grfo non orientto che non contiene cicli è detto ciclico. b d c e f Problem Dto un grfo non orientto G, scrivere un lgoritmo che restituisc true se G contiene un ciclo, flse ltrimenti. Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 56 / 101

61 Grfi ciclici non orientti Appliczione : Grfo non orientto ciclico boolen hscyclerec(grph G, Node u, Node p, boolen[ ] visited) visited[u] = true forech v G.dj(u) {p} do if visited[v] then return true else if hscyclerec(g, v, u, visited) then return true return flse Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 57 / 101

62 Grfi ciclici non orientti Appliczione : Grfo non orientto ciclico boolen hscycle(grph G) boolen[ ] visited = new boolen[1... G.size()] forech u G.V() do visited[u] = flse forech u G.V() do if not visited[u] then if hscyclerec(g, u, null, visited) then return true return flse Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 58 / 101

63 Grfi ciclici non orientti Definizioni: Ciclo Ciclo (cycle) In un grfo orientto G = (V, E), un ciclo C di lunghezz k 2 è un sequenz di nodi u 0, u 1,..., u k tle che (u i, u i+1 E) per 0 i k 1 e u 0 = u k. b c Esempio:, b, c, e, d, è un cmmino nel grfo di lunghezz 5 Note: un ciclo è detto semplice se tutti i suoi nodi sono distinti (d esclusione del primo e dell ultimo) d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 59 / 101

64 Grfi ciclici non orientti Definizioni: Grfo orientto ciclico (DAG) DAG b c Un grfo orientto che non contiene cicli è detto DAG (directed cyclic grph). d e f Grfo ciclico b c Un grfo è ciclico se contiene un ciclo. f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 60 / 101

65 Grfi ciclici non orientti Appliczione : Grfo orientto ciclico Problem Dto un grfo orientto G, scrivere un lgoritmo che restituisc true se G contiene un ciclo, flse ltrimenti. Problem Riuscite concepire un grfo orientto per cui l lgoritmo ppen visto non si comport correttmente? Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 61 / 101

66 Clssificzione degli rchi Clssificzione degli rchi Albero di copertur Ogni volt che si esmin un rco d un nodo mrcto d un nodo non mrcto, tle rco viene rco dell lbero Gli rchi (u, v) non inclusi nell lbero possono essere divisi in tre ctegorie Se u è un ntento di v in T, (u, v) è detto rco in vnti c b d Se u è un discendente di v in T, (u, v) è detto rco ll indietro b d Altrimenti, viene detto rco di ttrversmento c Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 62 / 101

67 Clssificzione degli rchi Schem dfs-schem(grph G, Node u, int &time, int[ ] dt, int[ ] ft) { visit il nodo u (pre-order) } time = time + 1; dt[u] = time forech v G.dj(u) do { visit l rco (u, v) (qulsisi) } if dt[v] == 0 then { visit l rco (u, v) (lbero) } dfs-schem(g, v, time, dt, ft) else if dt[u] > dt[v] nd ft[v] == 0 then { visit l rco (u, v) (indietro) } else if dt[u] < dt[v] nd ft[v] 0 then { visit l rco (u, v) (vnti) } else { visit l rco (u, v) (ttrversmento) } time: conttore dt: discovery time (tempo di scopert) ft: finish time (tempo di fine) { visit il nodo u (post-order) } time = time + 1; ft[u] = time Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 63 / 101

68 Clssificzione degli rchi Schem dfs-schem(grph G, Node u, int &time, int[ ] dt, int[ ] ft) time = time + 1; dt[u] = time forech v G.dj(u) do if dt[v] == 0 then { visit l rco (u, v) (lbero) } dfs-schem(g, v, time, dt, ft) else if dt[u] > dt[v] nd ft[v] == 0 then { visit l rco (u, v) (indietro) } else if dt[u] < dt[v] nd ft[v] 0 then { visit l rco (u, v) (vnti) } else { visit l rco (u, v) (ttrversmento) } time = time + 1; ft[u] = time [1, 8] e [9, 10] [2, 5] [6, 7] d b c [3, 4] Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 64 / 101

69 Clssificzione degli rchi Clssificzione degli rchi Perchè clssificre gli rchi? Possimo dimostrre proprietà sul tipo degli rchi e usre queste proprietà per costruire lgoritmi migliori Teorem Dt un visit di un grfo G = (V, E), per ogni coppi di nodi u, v V, solo un delle condizioni seguenti è ver: Gli intervlli [dt[u], ft[u]] e [dt[v], ft[v]] sono non-sovrpposti; u, v non sono discendenti l uno dell ltro nell forest DF L intervllo [dt[u], ft[u]] è contenuto in [dt[v], ft[v]]; u è un discendente di v in un lbero DF L intervllo [dt[v], ft[v]] è contenuto in [dt[u], ft[u]]; v è un discendente di u in un lbero DF Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 65 / 101

70 Grfi ciclici orientti Teori Teorem Un grfo orientto è ciclico non esistono rchi ll indietro nel grfo. Dimostrzione se: Se esiste un ciclo, si u il primo nodo del ciclo che viene visitto e si (v, u) un rco del ciclo. Il cmmino che connette u d v verrà prim o poi visitto, e d v verrà scoperto l rco ll indietro (v, u). solo se: Se esiste un rco ll indietro (u, v), dove v è un ntento di u, llor esiste un cmmino d v u e un rco d u v, ovvero un ciclo. Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 66 / 101

71 Grfi ciclici orientti Appliczione : DAG boolen hscycle(grph G, Node u, int &time, int[ ] dt, int[ ] ft) time = time + 1; dt[u] = time forech v G.dj(u) do if dt[v] == 0 then if hscycle(g, v, time, dt, ft) then return true else if dt[u] > dt[v] nd ft[v] == 0 then return true time = time + 1; return flse ft[u] = time Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 67 / 101

72 Grfi ciclici orientti Appliczione : DAG b [2, 5] [1, 6] c [3, 4] Arco dell lbero dt[v] == 0 Arco ll indietro: dt[u] > dt[v] nd ft[v] = 0 Arco in vnti: dt[u] < dt[v] nd ft[v] 0 Arco ttrversmento: ltrimenti Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 68 / 101

73 Grfi ciclici orientti Appliczione : DAG Non viene individuto nessun rco ll indietro, quindi tutte le chimte ricorsive rrivernno l termine e ritornernno flse. boolen hscycle(grph G, Node u, int &time, int[ ] dt, int[ ] ft) time = time + 1; dt[u] = time forech v G.dj(u) do if dt[v] == 0 then if hscycle(g, v, time, dt, ft) then return true else if dt[u] > dt[v] nd ft[v] == 0 then return true time = time + 1; return flse ft[u] = time Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 69 / 101

74 Grfi ciclici orientti Appliczione : DAG b [2, ] [1, ] dt[u] > dt[v], ft[v] = 0 c [3, ] Arco dell lbero dt[v] == 0 Arco ll indietro: dt[u] > dt[v] nd ft[v] = 0 Arco in vnti: dt[u] < dt[v] nd ft[v] 0 Arco ttrversmento: ltrimenti Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 70 / 101

75 Grfi ciclici orientti Appliczione : DAG Viene individuto un rco ll indietro, che cus l restituzione di true in un chimt e l conseguente restituzione di true d prte di tutte le chimte ricorsive precedenti. boolen hscycle(grph G, Node u, int &time, int[ ] dt, int[ ] ft) time = time + 1; dt[u] = time forech v G.dj(u) do if dt[v] == 0 then if hscycle(g, v, time, dt, ft) then return true else if dt[u] > dt[v] nd ft[v] == 0 then return true time = time + 1; return flse ft[u] = time Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 71 / 101

76 Ordinmento topologico Ordinmento topologico rdinmento topologico Dto un Definizione DAG G (direct cyclic grph), un ordinmento topologico su G è un ordinmento linere dei suoi vertici tle per cui: Dto un DAG G, un ordinmento topologico di G è un ordinmento se linere G contiene dei l rco suoi nodi (u,v), llor tle che u compre se (u, prim v) di E, v nell ordinmento llor u ppre prim di Per v nell ordinmento. trnsitività, consegue che se v è rggiungibile d u, llor u compre prim di v nell'ordinmento Esistono più ordinmenti topologici Not: possono esserci più ordinmenti topologici Se il grfo contiene un ciclo, non esiste un ordinmento topologico lberto Montresor 74 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 72 / 101

77 Ordinmento topologico Ordinmento topologico Problem Scrivere un lgoritmo che prende in input un DAG e ritorn un ordinmento topologico per esso. Nive solution Trovre un nodo senz rchi entrnti Aggiungere questo nodo nell ordinmento e rimuoverlo, insieme tutti i suoi rchi Ripetere quest procedur fino qundo tutti i nodi sono stti rimossi Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 73 / 101

78 Ordinmento topologico Ordinmento topologico - Algoritmi nive Soluzione dirett Output: Output: 1 Output: Output: Output: Output: Alberto Montresor 76 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 74 / 101

79 Ordinmento topologico Ordinmento topologico bsto su Algoritmo Eseguire un nel qule l operzione di visit consiste nell ggiungere il nodo in test d un list, "t finish time" (post-ordine) Restituire l list così ottenut. Output L sequenz dei nodi, ordinti per tempo decrescente di fine. Perchè funzion? Qundo un nodo è "finito", tutti i suoi discendenti sono stti scoperti e ggiunti ll list. Aggiungendolo in test ll list, il nodo è in ordine corretto. Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 75 / 101

80 Ordinmento topologico Ordinmento topologico - L lgoritmo Stck topsort(grph G) Stck S = Stck() boolen[ ] visited = boolen[1... G.size()] forech u G.V() do visited[u] = flse forech u G.V() do if not visited[u] then ts-dfs(g, u, visited, S) return S ts-dfs(grph G, Node u, boolen[ ] visited, Stck S) visited[u] = true forech v G.dj(u) do if not visited[v] then ts-dfs(g, v, visited, S) S.push(u) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 76 / 101

81 Ordinmento topologico Ordinmento topologico Esempio [6, 9] b [7, 8] b [1, 10] [2, 5] c [7, 8] d [3, 4] c d [9, 10] [5, 6] e e [3, 4] [1, 2] Stck = {, b, d, c, e } Stck = {, b, d, c, e } Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 77 / 101

82 Ordinmento topologico Relity check Appliczioni dell ordinmento topologico Ordine di vlutzione delle celle in uno spredsheet Ordine di compilzione in un Mkefile Risoluzione delle dipendenze nei linker Risoluzione delle dipendenze nei gestori di pcchetti softwre Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 78 / 101

83 Componenti fortemente connesse Grfi e componenti fortemente connessi Definizioni Un grfo orientto G = (V, E) è fortemente connesso ogni suo nodo è rggiungibile d ogni ltro suo nodo Un grfo G = (V, E ) è un componente fortemente conness di G G è un sottogrfo connesso e mssimle di G Repetit iuvnt G è un sottogrfo di G (G G) V V e E E G è mssimle non esiste un ltro sottogrfo G di G tle che: G è connesso G è più grnde di G (i.e. G G G) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 79 / 101

84 Componenti fortemente connesse Connessione forte Domnd Questo grfo è fortemente connesso? No b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 80 / 101

85 Componenti fortemente connesse Componenti fortemente connesse Domnd Quli sono le componenti fortemente connesse di questo grfo? b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 81 / 101

86 Componenti fortemente connesse Componenti fortemente connesse Domnd Quli sono le componenti fortemente connesse di questo grfo? b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 81 / 101

87 Componenti fortemente connesse Soluzione "ingenu" (e non corrett) Si pplic l lgoritmo cc() l grfo Purtroppo, il risultto dipende dl nodo di prtenz 2 b 1 c 3 1 f d 1 e 1 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 82 / 101

88 Componenti fortemente connesse Soluzione "ingenu" (e non corrett) Si pplic l lgoritmo cc() l grfo Purtroppo, il risultto dipende dl nodo di prtenz 1 b 1 c 2 1 f d 1 e 1 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 82 / 101

89 Componenti fortemente connesse Soluzione "ingenu" (e non corrett) Si pplic l lgoritmo cc() l grfo Purtroppo, il risultto dipende dl nodo di prtenz 1 b 1 c 1 1 f d 1 e 1 Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 82 / 101

90 Componenti fortemente connesse Algoritmo di Kosrju Kosrju Algorithm (1978) Effettu un visit del grfo G Clcol il grfo trsposto G t Esegui un visit sul grfo G t utilizzndo cc, esminndo i nodi nell ordine inverso di tempo di fine dell prim visit Le componenti connesse (e i reltivi lberi DF) rppresentno le componenti fortemente connesse di G int[ ] scc(grph G) Stck S = topsort(g) G T = trnspose(g) return cc(g T, S) % First visit % Grph trnsposl % Second visit Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 83 / 101

91 Componenti fortemente connesse Ordinmento topologico su grfi generli Ide generle Applicndo l lgoritmo di ordinmento topologico su un grfo generle, simo sicuri che: se un rco (u, v) non pprtiene d un ciclo, llor u viene listto prim di v nell sequenz ordint gli rchi di un ciclo vengono listti in qulche ordine, ininfluente Utilizzimo quindi topsort() per ottenere i nodi in ordine decrescente di tempo di fine Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 84 / 101

92 Componenti fortemente connesse Esecuzione 1: Ordinmento topologico [2, 11] b [3, 10] c [1, 12] d [7, 8] e [4, 9] f [5, 6] Stck = {, b, c, e, d, f } Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 85 / 101

93 Componenti fortemente connesse Clcolo del grfo trsposto Grfo trsposto (Trnspose grph) Dto un grfo orientto G = (V, E), il grfo trsposto G t = (V, E T ) h gli stessi nodi e gli rchi orientti in senso opposto.: E T = {(u, v) (v, u) E} int[ ] trnspose(grph G) Grph G T = Grph() forech u G.V() do G T.insertNode(u) forech u G.V() do forech v G.dj(u) do G T.insertEdge(v, u) Costo computzionle: O(m+n) O(n) nodi ggiunti O(m) rchi ggiunti Ogni operzione cost O(1) return G T Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 86 / 101

94 Componenti fortemente connesse Esecuzione 1: Grfo trsposto b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 87 / 101

95 Componenti fortemente connesse Clcolo delle componenti connesse Invece di esminre i nodi in ordine rbitrrio, quest versione di cc() li esmin nell ordine LIFO memorizzto nello stck. cc(grph G, Stck S) int[ ] id = new int[1... G.size()] forech u G.V() do id[u] = 0 int counter = 0 while not S.isEmpty() do u = S.pop() if id[u] == 0 then counter = counter +1 ccdfs(g, counter, u, id) ccdfs(grph G, int counter, Node u, int[ ] id) id[u] = counter forech v G.dj(u) do if id[v] == 0 then ccdfs(g, counter, v, id) return id Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 88 / 101

96 Componenti fortemente connesse Esecuzione 1: Componenti connesse [3, 4] b [5, 12] c [1, 2] [6, 9] f [10, 11] d e [7, 8] Stck = {, b, c, e, d, f } Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 89 / 101

97 Componenti fortemente connesse SCC: The lgorithm int[ ] scc(grph G) Stck S = topsort(g) G T = trnspose(g) return cc(g T, S) % First visit % Grph trnsposl % Second visit Costo computzionle: O(m + n) Ogni fse richiede O(m + n) Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 90 / 101

98 Componenti fortemente connesse Esecuzione 2: Ordinmento topologico [10, 11] b [2, 7] c [9, 12] d [4, 5] e [3, 6] f [1, 8] Stck = {, b, f, c, e, d } Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 91 / 101

99 Componenti fortemente connesse Esecuzione 2: Grfo trsposto b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 92 / 101

100 Componenti fortemente connesse Esecuzione 2: Componenti connesse [3, 4] b [7, 10] c [1, 2] [5, 12] f [6, 11] [8, 9] d e Stck = {, b, f, c, e, d } Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 93 / 101

101 Componenti fortemente connesse Dimostrzione di correttezz Grfo delle componenti C(G) = (V c, E c ) V c = {C 1, C 2,..., C k }, dove C i è l i-esim SCC of G E c = {(C i, C j ) (u i, v i ) E : u i C i u j C j } b c f d e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 94 / 101

102 Componenti fortemente connesse Dimostrzione di correttezz b c b c f f d e d e Qul è l relzione fr il grfo delle componenti di G e il grfo delle componenti di G T? C(G T ) = [C(G)] T Il grfo delle componenti è ciclico? SI Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 95 / 101

103 Componenti fortemente connesse Dimostrzione di correttezz Discovery time e finish time del grfo delle componenti dt(c) = min{dt(u) u C} ft(c) = mx{ft(u) u C} Questi discovery/finish time corrispondono i discovery/finish time del primo nodo visitto in C Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 96 / 101

104 Componenti fortemente connesse Dimostrzione di correttezz Teorem Sino C e C due distinte SCCs nel grfo orientto G = (V, E). Se c è un rco (C, C ) E c, llor ft(c) > ft(c ). [2, 11] [10, 11] b c [3, 10] b c [2, 7] [1, 12] [5, 6] [9, 12] f [1, 8] f [7, 8] d [4, 9] e [4, 5] d [3, 6] e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 97 / 101

105 Componenti fortemente connesse Dimostrzione di correttezz Corollrio Sino C u e C v due SCC distinte nel grfo orientto G = (V, E). Se c è un rco (u, v) E t tle che u C u e v C v, llor ft(c u ) < ft(c v ). (u, v) E t [10, 11] (v, u) E b c [2, 7] (C v, c u ) E c ft(c v ) > ft(c u ) [9, 12] [1, 8] f ft(c u ) < ft(c v ) [4, 5] d [3, 6] e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 98 / 101

106 Componenti fortemente connesse Dimostrzione di correttezz Corollrio Sino C u e C v due SCC distinte nel grfo orientto G = (V, E). Se c è un rco (u, v) E t tle che u C u e v C v, llor ft(c u ) < ft(c v ). (b, ) E t [10, 11] (, b) E b c [2, 7] (C, C b ) E c 12 = ft(c ) > ft(c b ) = 11 [9, 12] [1, 8] f 11 = ft(c b ) < ft(c ) = 12 [4, 5] d [3, 6] e Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 98 / 101

107 Componenti fortemente connesse Dimostrzione di correttezz Se l componente C u e l componente C v sono connesse d un rco (u, v) E t, llor: Dl corollrio, ft(c u ) < ft(c v ) Dll lgoritmo, l visit di C v inizierà primm dell visit di C u Non esistono cmmini tr C v e C u in G t (ltrimenti il grfo srebbe ciclico) Dll lgoritmo, l visit di C v non rggiungerà C u, In ltre prole, cc() ssegnerà correttmente gli identifictori delle componenti i nodi. Alberto Montresor (UniTN) ASD - Grfi 2019/01/13 99 / 101

108 Componenti fortemente connesse Relity check Algoritmo di Trjn (1972) Trjn, R. E. "Depth-first serch nd liner grph lgorithms", SIAM Journl on Computing 1(2): (1972) Algoritmo con costo O(m + n) come Kosrju È preferito Kosrju in qunto necessit di un sol visit e non richiede il grfo trsposto Appliczioni Gli lgoritmi per SCC possono essere utilizzti per risolvere il problem 2-stisfibility (2-SAT), un problem di soddisfcibilità boolen con clusole composte d coppie di letterli. Alberto Montresor (UniTN) ASD - Grfi 2019/01/ / 101

109 Componenti fortemente connesse Conclusioni 113 Pges in ctegory "Grph lgorithms" A B C D A* serch lgorithm Algorithmic version for Szemerédi regulrity prtition Alph bet pruning Aperiodic grph B* Brbási Albert model Belief propgtion Bellmn Ford lgorithm Binconi Brbási model Bidirectionl serch Borůvk's lgorithm Bottleneck trveling slesmn problem Bredth-first serch Bron Kerbosch lgorithm Bully lgorithm Centrlity Chitin's lgorithm Christofides lgorithm Clique percoltion method Closure problem Color-coding Contrction hierrchies Courcelle's theorem Cuthill McKee lgorithm D* Degenercy (grph theory) Depth-first serch Dijkstr Scholten lgorithm Dijkstr's lgorithm Dinic's lgorithm Disprity filter lgorithm of weighted network Double pushout grph rewriting Dulmge Mendelsohn decomposition Dynmic connectivity Dynmic link mtching E Edmonds Krp lgorithm Edmonds' lgorithm Blossom lgorithm Euler tour technique F FKT lgorithm Flooding lgorithm Floyd Wrshll lgorithm Force-directed grph drwing Ford Fulkerson lgorithm Fringe serch G Girvn Newmn lgorithm Gol node (computer science) Gomory Hu tree Grph bndwidth Grph edit distnce Grph embedding Grph isomorphism Grph isomorphism problem Grph kernel Grph reduction Grph trversl H Hvel Hkimi lgorithm Hierrchicl closeness Hierrchicl clustering of networks Hopcroft Krp lgorithm I Prllel ll-pirs shortest pth lgorithm Pth-bsed strong component lgorithm Itertive deepening A* Pre-topologicl order Initil ttrctiveness Prim's lgorithm Itertive compression Proof-number serch Itertive deepening depth-first serch Push relbel mximum flow lgorithm J R Johnson's lgorithm Reverse-delete lgorithm Journl of Grph Algorithms nd Applictions Roch Thtte cycle detection lgorithm Jump point serch Junction tree lgorithm S K Sethi Ullmn lgorithm Shortest Pth Fster Algorithm K shortest pth routing SMA* Krger's lgorithm Spectrl lyout Kleitmn Wng lgorithms Spreding ctivtion Knight's tour Stoer Wgner lgorithm Knuth's Simpth lgorithm Subgrph isomorphism problem Kosrju's lgorithm Suurblle's lgorithm Kruskl's lgorithm L T Trjn's off-line lowest common ncestors Lexicogrphic bredth-first serch lgorithm Longest pth problem Trjn's strongly connected components lgorithm M Thet* Topologicl sorting MxCliqueDyn mximum clique lgorithm Trnsitive closure Minimx Trnsitive reduction Minimum bottleneck spnning tree Trvelling slesmn problem Misr & Gries edge coloring lgorithm Tree trversl N W Nerest neighbour lgorithm Widest pth problem Network flow problem Wiener connector Network simplex lgorithm Nonblocking miniml spnning switch Y P Yen's lgorithm PgeRnk Alberto Montresor (UniTN) ASD - Grfi 2019/01/ / 101

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 9 - Grafi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this

Dettagli

ESERCIZIO DI ASD DEL 27 APRILE 2009

ESERCIZIO DI ASD DEL 27 APRILE 2009 ESERCIZIO DI ASD DEL 27 APRILE 2009 Dimetro Algoritmi. Ricordimo che un grfo non orientto, ciclico e connesso è un lero. Un lero può essere pensto come lero rdicto un volt che si si fissto un nodo come

Dettagli

Grafi Stessa distanza

Grafi Stessa distanza Grafi Stessa distanza In un grafo orientato G, dati due nodi s e v, si dice che: v è raggiungibile da s se esiste un cammino da s a v; la distanza di v da s è la lunghezza del più breve cammino da s a

Dettagli

G è 2-colorabile se ogni nodo può essere colorato di bianco o di nero in modo che nodi connessi da archi siano colorati con colori distinti.

G è 2-colorabile se ogni nodo può essere colorato di bianco o di nero in modo che nodi connessi da archi siano colorati con colori distinti. Grafi Grafi bipartiti Un grafo non orientato G è bipartito se l insieme dei nodi può essere partizionato in due sottoinsiemi disgiunti tali che nessun arco del grafo connette due nodi appartenenti allo

Dettagli

Grafi Tutte le strade portano a Roma

Grafi Tutte le strade portano a Roma Grafi Tutte le strade portano a Roma Un vertice v in un grafo orientato G si dice di tipo Roma se ogni altro vertice w in G può raggiungere v con un cammino orientato che parte da w e arriva a v. 1 Descrivere

Dettagli

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 14, 2016 Elementi Fondamentali Rappresentazione n = V numero di vertici (nodi) m = E numero di archi Matrice di adiacenza:

Dettagli

UNIVERSITÁ DEGLISTUDIDISALERNO C.d.L. in INGEGNERIA GESTIONALE Ricerca Operativa 12 Gennaio 2009 Prof. Saverio Salerno. Compito A

UNIVERSITÁ DEGLISTUDIDISALERNO C.d.L. in INGEGNERIA GESTIONALE Ricerca Operativa 12 Gennaio 2009 Prof. Saverio Salerno. Compito A 1. Risolvere i seguenti problemi: 12 Gennio 2009 Compito A () stbilire se il vettore (3, 2, 0) è combinzione convess i u 1 =(3, 0, 6) e u 2 =(3, 3, 3); (b) per il poliero S = (x 1,x 2 ) R 2 :0 x 1 1, 0

Dettagli

SPAZI VETTORIALI. 1. Spazi e sottospazi vettoriali

SPAZI VETTORIALI. 1. Spazi e sottospazi vettoriali SPAZI VETTORIALI 1. Spzi e sottospzi vettorili Definizione: Dto un insieme V non vuoto e un corpo K di sostegno si dice che V è un K-spzio vettorile o uno spzio vettorile su K se sono definite un operzione

Dettagli

Algoritmi e Strutture Dati. Scelta della struttura dati

Algoritmi e Strutture Dati. Scelta della struttura dati Algoritmi e Strutture Dati Scelta della struttura dati Alberto Montresor Università di Trento 2019/01/1 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Dettagli

Algoritmi e Strutture Dati. Scelta della struttura dati

Algoritmi e Strutture Dati. Scelta della struttura dati Algoritmi e Strutture Dati Scelta della struttura dati Alberto Montresor Università di Trento 2018/06/11 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Dettagli

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Secondo Modulo di Ricerca Operativa Prova in corso d anno 12 giugno 2000

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Secondo Modulo di Ricerca Operativa Prova in corso d anno 12 giugno 2000 A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneri Informtic Secondo Modulo di Ricerc Opertiv Prov in corso d nno giugno Nome: Cognome: Brrre l csell corrispondente: Diplom t Lure t Esercizio

Dettagli

Determinanti e caratteristica di una matrice (M.S. Bernabei & H. Thaler

Determinanti e caratteristica di una matrice (M.S. Bernabei & H. Thaler Determinnti e crtteristic di un mtrice (M.S. Bernbei & H. Thler Determinnte Il determinnte può essere definito solmente nel cso di mtrici qudrte Per un mtrice qudrt 11 (del primo ordine) il determinnte

Dettagli

Esercizi svolti a lezione

Esercizi svolti a lezione Esercizi svolti lezione Sistemi Informtivi T Versione elettronic: 0.esercizi.pdf NB: Questo file viene ggiornto periodicmente Versione del 27/09/2017 02.1 Normlizzzione in 1NF (1) Not: l numerzione (es.

Dettagli

CORSO ANALISI MATEMATICA 1 A.A. 2015/2016. Testo consigliato

CORSO ANALISI MATEMATICA 1 A.A. 2015/2016. Testo consigliato Università degli studi di Cgliri CORSO ANALISI MATEMATICA 1 A.A. 2015/2016 Docente: Monic Mrrs 1 Anlisi Mtemtic 1 Testo consiglito con elementi di geometri e lgebr linere. M. Brmnti, C.D. Pgni, S. Sls

Dettagli

Algoritmi e Strutture Dati. Alberi

Algoritmi e Strutture Dati. Alberi Algoritmi e Strutture Dati Alberi Alberto Montresor Università di Trento 2017/10/19 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione

Dettagli

Dimostriamo innanzitutto una limitazione sull altezza degli alberi

Dimostriamo innanzitutto una limitazione sull altezza degli alberi Alberi di ricerc 161 3 5 2 4 8 10 11 2 3 4 5 8 10 11 15 25 30 31 45 47 50 Figur 6.20 Esempio di lbero Inodiinterniconduefiglimntengonoil mssimo del sottolbero sinistro ( ); i nodi interni con tre figli

Dettagli

Laurea triennale in Scienze della Natura a.a. 2009/2010. Regole di Calcolo

Laurea triennale in Scienze della Natura a.a. 2009/2010. Regole di Calcolo Lure triennle in Scienze dell Ntur.. 2009/200 Regole di Clcolo In queste note esminimo lcune conseguenze degli ssiomi reltivi lle operzioni e ll ordinmento nell insieme R dei numeri reli. L obiettivo principle

Dettagli

Unità 3 Metodi particolari per il calcolo di reti

Unità 3 Metodi particolari per il calcolo di reti Unità 3 Metodi prticolri per il clcolo di reti 1 Cos c è nell unità Metodi prticolri per il clcolo di reti con un solo genertore Prtitore di tensione Prtitore di corrente Metodi di clcolo di reti con più

Dettagli

Trasduttori a Stati Finiti

Trasduttori a Stati Finiti Trsduttori Stti Finiti Un Trsduttore Stti Finiti Deterministici è definito dll 7-pl - Alfeto di Ingresso (Alfeto terminle) K- Insieme degli stti δ -funzione (przile) di trnsizione

Dettagli

B8. Equazioni di secondo grado

B8. Equazioni di secondo grado B8. Equzioni di secondo grdo B8.1 Legge di nnullmento del prodotto Spendo che b0 si può dedurre che 0 oppure b0. Quest è l legge di nnullmento del prodotto. Pertnto spendo che (-1) (+)0 llor dovrà vlere

Dettagli

Gli ordini di visita di un albero binario di 9 nodi sono i seguenti: A, E, B, F, G, C, D, I, H (anticipato)

Gli ordini di visita di un albero binario di 9 nodi sono i seguenti: A, E, B, F, G, C, D, I, H (anticipato) Alberi Indovina l albero Gli ordini di visita di un albero binario di 9 nodi sono i seguenti: A, E, B, F, G, C, D, I, H (anticipato) B, G, C, F, E, H, I, D, A (posticipato) B, E, G, F, C, A, D, H, I (simmetrico).

Dettagli

Problema: attraversamento di un grafo. Definizione del problema

Problema: attraversamento di un grafo. Definizione del problema Problema: attraversamento di un grafo Visita: attenzione alle soluzioni facili Definizione del problema Prendere ispirazione dalla visita degli alberi Dato un grafo =(V, ) ed un vertice r di V (detto sorgente

Dettagli

Esercizi di Informatica Teorica

Esercizi di Informatica Teorica 03-utomi--stti-finiti-0 Esercizi di Informtic Teoric Automi stti finiti Autom stti finiti (ASF) richimi utom stti finiti ASF = dove Σ = {σ, σ 2,, σ n } è un lfeto (finito) di input K= {, q,,

Dettagli

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Dettagli

Equazioni. Definizioni e concetti generali. Incognita: Lettera (di solito X) alla quale e possibile sostituire dei valori numerici

Equazioni. Definizioni e concetti generali. Incognita: Lettera (di solito X) alla quale e possibile sostituire dei valori numerici Equzioni Prerequisiti Scomposizioni polinomili Clcolo del M.C.D. e del m.c.m. tr polinomi P(X) = 0, con P(X) polinomio di grdo qulsisi Definizioni e concetti generli Incognit: Letter (di solito X) ll qule

Dettagli

Corso Integrato: Matematica e Statistica. Corso di Matematica (6 CFU)

Corso Integrato: Matematica e Statistica. Corso di Matematica (6 CFU) Corso di Lure in Scienze e Tecnologie Agrrie Corso Integrto: Mtemtic e Sttistic Modulo: Mtemtic (6 CFU) (4 CFU Lezioni + CFU Esercitzioni) Corso di Lure in Tutel e Gestione del territorio e del Pesggio

Dettagli

Algoritmi e Complessità

Algoritmi e Complessità Algoritmi e Complessità Università di Cmerino Corso di Lure in Informtic (tecnologie informtiche) III periodo didttico Docente: Emnuel Merelli Emil:emnuel.merelli@unicm.it Lezione Algoritmi e Complessità

Dettagli

Capitolo 5. Integrali. 5.1 Integrali di funzioni a gradinata

Capitolo 5. Integrali. 5.1 Integrali di funzioni a gradinata Cpitolo 5 Integrli 5.1 Integrli di funzioni grdint Un concetto molto semplice m di fondmentle importnz per l trttzione dell integrle di Riemnn è quello di divisione di un intervllo [, b]. In sostnz si

Dettagli

Il TDA Graph. Definizione. Esempio. Grafi pesati e non. Grafi direzionati e non. Metodi di accesso del TDA Graph. Un grafo è una coppia (V, E), dove

Il TDA Graph. Definizione. Esempio. Grafi pesati e non. Grafi direzionati e non. Metodi di accesso del TDA Graph. Un grafo è una coppia (V, E), dove Il TDA Grph Definizione Un grfo è un coppi (V, E), dove V è un insieme di nodi, chimti vertici E è un insieme di coppie di nodi, chimti rchi Mggiori dettgli nelle slide Grfi Nell nostr implementzione,

Dettagli

11. Rango di una matrice.

11. Rango di una matrice. Rngo di un mtrice Considerimo un mtrice di tipo m n d elementi reli rppresentt nel modo seguente: A = (m-) m (m-) m (m-) m (m-) m (n-) (n-) (n-) (m-),(n-) m(n-) n n n (m-)n mn Per ogni i =,,,, (m-), m,

Dettagli

Automi e Linguaggi Formali

Automi e Linguaggi Formali Propriet dei linguggi liberi d contesto utomi e Linguggi Formli Propriet dei linguggi liberi d contesto emplificzione - CFG possono essere semplificte - e L e CFL llor l su grmmtic h un form specile Pumping

Dettagli

riferimento (assi coordinati) monodimensionale (retta orientata, x), bidimensionale (piano, xy) tridimensionale (spazio tridim.

riferimento (assi coordinati) monodimensionale (retta orientata, x), bidimensionale (piano, xy) tridimensionale (spazio tridim. I vettori rppresentti come segmenti orientti (rppresentzione geometric) si intendono con l origine coincidente con l origine del sistem di riferimento (ssi coordinti) eccetto nei csi in cui si prli di

Dettagli

Ottimizzazione nella gestione dei progetti Capitolo 5: programmazione multiperiodale modello di flusso CARLO MANNINO

Ottimizzazione nella gestione dei progetti Capitolo 5: programmazione multiperiodale modello di flusso CARLO MANNINO Ottimizzzione nell gestione dei progetti Cpitolo 5: progrmmzione multiperiodle modello di flusso CARLO MANNINO Uniersità di Rom L Spienz Diprtimento di Informtic e Sistemistic Richimi: -tglio in un grfo

Dettagli

Linguaggi di Programmazione Corso C. Parte n.5 Automi a Stati Finiti. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.5 Automi a Stati Finiti. Nicola Fanizzi Linguggi di Progrmmzione Corso C Prte n.5 Automi Stti Finiti Nicol Fnizzi (fnizzi@di.uni.it) Diprtimento di Informtic Università degli Studi di Bri Automi Stti Finiti Dto un lfeto X, un utom stti finiti

Dettagli

Algoritmi e Strutture Dati Grafi. Daniele Loiacono

Algoritmi e Strutture Dati Grafi. Daniele Loiacono lgoritmi e Strutture ati Grafi Riferimenti 2 Questo materiale è tratto dalle trasparenze del corso lgoritmi e Strutture ati del prof. lberto Montresor dell Università di Trento. (http://www.dit.unitn.it/~montreso/asd/index.shtml)

Dettagli

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 curdi Luc Cio e Wlter Didimo Esercizi di Informtic teoric - Luc Cio e Wlter Didimo 1 utomi stti finiti utomi stti finiti non deterministici utomi e grmmtiche regolri notzioni sul livello degli esercizi:(*)fcile,

Dettagli

Laboratorio di Matematica Computazionale A.A Lab. 11 Integrazione numerica

Laboratorio di Matematica Computazionale A.A Lab. 11 Integrazione numerica Lbortorio di Mtemtic Computzionle A.A. 2008-2009 1 Integrzione numeric Lb. 11 Integrzione numeric Un metodo di integrzione numerico consiste in un formul esplicit che permett di pprossimre il vlore di

Dettagli

IL CALCOLO LETTERALE: I MONOMI Conoscenze. per a = - 2 vale:

IL CALCOLO LETTERALE: I MONOMI Conoscenze. per a = - 2 vale: IL CALCOLO LETTERALE: I MONOMI Conoscenze. Complet.. Un espressione letterle è.... Per clcolre il vlore numerico di un espressione letterle isogn...... c. Non si possono ssegnre lle lettere che compiono

Dettagli

, x 2. , x 3. è un equazione nella quale le incognite appaiono solo con esponente 1, ossia del tipo:

, x 2. , x 3. è un equazione nella quale le incognite appaiono solo con esponente 1, ossia del tipo: Sistemi lineri Un equzione linere nelle n incognite x 1, x 2, x,, x n è un equzione nell qule le incognite ppiono solo con esponente 1, ossi del tipo: 1 x 1 + 2 x 2 + x +!+ n x n = b con 1, 2,,, n numeri

Dettagli

11. Rango di una matrice.

11. Rango di una matrice. Rngo di un mtrice Considerimo un mtrice di tipo m n d elementi reli rppresentt nel modo seguente: A = (m-) m (m-) m (m-) m (m-) m (n-) (n-) (n-) (m-),(n-) m(n-) n n n (m-)n mn Per ogni i =,,,, (m-), m,

Dettagli

Turnazione dei mezzi (vehicles-scheduling)

Turnazione dei mezzi (vehicles-scheduling) Turnzione dei mezzi (vehicles-scheduling) Definizione del prolem L fse di turnzione dei mezzi e del personle consiste nel pinificre l utilizzo nel tempo (e nello spzio) dei mezzi e del personle in modo

Dettagli

si considerino le seguenti implementazioni dell algoritmo di ricerca di un elemento all interno di un vettore v: 1) 2)

si considerino le seguenti implementazioni dell algoritmo di ricerca di un elemento all interno di un vettore v: 1) 2) Fondmenti di Informtic Ingegneri Meccnic, Elettric, Gestionle Prov scritt del 22 Giugno 2004 NOME MATRICOLA Esercizio 1 Supponendo l seguente definizione del tipo vettore: #define MAX_DIM 256 typedef int

Dettagli

Integrale Improprio. f(x) dx =: Osserviamo che questa definizione ha senso dal momento che per ogni y è ben definito l integrale b

Integrale Improprio. f(x) dx =: Osserviamo che questa definizione ha senso dal momento che per ogni y è ben definito l integrale b Integrle Improprio In queste lezioni riprendimo l teori dell integrzione in un vribile, l ide è di estendere l integrle definito nche in csi in cui l funzione integrnd o l intervllo di integrzione non

Dettagli

Automi a stati finiti

Automi a stati finiti Automi stti finiti Diprtimento di Elettronic e Informzione Politecnico di Milno 17 mrzo 2017 Modelli operzionli Un semplice modello di clcolo I modelli operzionli di clcolo sono definiti come mcchine strtte

Dettagli

Università del Sannio

Università del Sannio Università del Snnio Corso di Fisic 1 Leione 2 Vettori Prof.ss Stefni Petrcc Corso di Fisic 1 - Le. 02 - Vettori 1 Definiione dei vettori I vettori rppresentno grndee per le quli il vlore, misurto con

Dettagli

Corso di Automi e Linguaggi Formali Gennaio- Marzo 2003

Corso di Automi e Linguaggi Formali Gennaio- Marzo 2003 Corso di Automi e Linguggi Formli Gennio- Mrzo 2003 Docente: Frncesc Rossi, frossi@mth.unipd.it Corso di Automi e Linguggi Formli Gennio-Mrzo 2002 p.1/37 Dti del corso 5 crediti circ 40 ore in ul Orrio:

Dettagli

Introduzione e strumenti

Introduzione e strumenti Introduzione e strumenti Schemi blocchi Convenzioni generli ed elementi di bse Dll equzione ll rppresentzione grfic L lgebr dei blocchi Clcolo di funzioni di trsferimento di schemi interconnessi 2 Schemi

Dettagli

VOLUMI, MASSE, DENSITÀ

VOLUMI, MASSE, DENSITÀ VOLUMI, MASSE, DENSITÀ In clsse è già stt ftt un'esperienz di misur dell densità prtire d misure di mss e di volume. In quel cso è stt misurt l mss in mnier dirett con un bilnci, e il volume in mnier indirett.

Dettagli

15. Cambiamenti di base in uno spazio vettoriale.

15. Cambiamenti di base in uno spazio vettoriale. 5 Cmbimenti di bse in uno spzio vettorile 5 Esempio Si VR uno spzio vettorile di dimensione e si B = (u, u, u ) un su bse Sino v = 5u + 6u, v = u u + 5u, v = u + u + u, v = u 4u 7u Si M l mtrice vente

Dettagli

Geometria I. Prova scritta del 2 marzo 2016

Geometria I. Prova scritta del 2 marzo 2016 Geometri I Anno ccdemico 0/06 Prov scritt del mrzo 06 Esercizio. Si E il pino euclideo numerico munito delle coordinte cnoniche (x, y). Si consideri il tringolo T con vertici P = (0, 0), P = (, 0), P =

Dettagli

PREFERENZE COME RELAZIONI D ORDINE

PREFERENZE COME RELAZIONI D ORDINE PREFERENZE COME RELAZIONI D ORDINE RELAZIONI Si S un insieme finito. Un relzione inri R è un sottoinsieme dell insieme prodotto crtesino S S, insieme delle coppie ordinte di elementi di S: R S S x,y R

Dettagli

1 Integrale delle funzioni a scala

1 Integrale delle funzioni a scala INTEGRALE DELLE FUNZIONI DI UNA VARIABILE Teori di Riemnn 1 Integrle delle funzioni scl (1.1) Definizione Si dice suddivisione di un intervllo chiuso e limitto [, b] un sottoinsieme {,..., n } di [, b]

Dettagli

Definizione del problema

Definizione del problema Turnzione dei mezzi (vehicles-scheduling) Definizione del prolem L fse di turnzione dei mezzi e del personle consiste nel pinificre l utilizzo nel tempo (e nello spzio) dei mezzi e del personle in modo

Dettagli

Alberto Montresor Università di Trento

Alberto Montresor Università di Trento !! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy

Dettagli

Introduzione e strumenti. Schemi a blocchi

Introduzione e strumenti. Schemi a blocchi Introduzione e strumenti Schemi blocchi Schemi blocchi Convenzioni generli ed elementi bse Dll equzione ll rppresentzione grfic L lgebr dei blocchi Clcolo di funzioni di trsferimento di schemi interconnessi

Dettagli

(somma inferiore n esima), (somma superiore n esima).

(somma inferiore n esima), (somma superiore n esima). Clcolo integrle Appunti integrtivi lle dispense di Mtemtic ssistit rgomento 9 (Integrli definiti) e rgomento (Integrli impropri) cur di C.Znco (Il contenuto di questi ppunti f prte del progrmm d esme)

Dettagli

2 Generalità sulle matrici

2 Generalità sulle matrici 2 Generlità sulle mtrici 21 Definizione e csi prticolri Definizione 21 Mtrice n m Un mtrice n m è un tbell rettngolre di n righe e m colonne i cui elementi sono numeri reli (o complessi) indicizzti con

Dettagli

Propagazione degli Errori e regressione lineare. Note e consigli d uso. -Termine covariante -- estrapolazione e/o interpolazione

Propagazione degli Errori e regressione lineare. Note e consigli d uso. -Termine covariante -- estrapolazione e/o interpolazione Propgzione degli Errori e regressione linere Note e consigli d uso -Termine covrinte -- estrpolzione e/o interpolzione Qundo devo usre il termine di covrinz nell propgzione? Qundo l errore delle vriili..

Dettagli

Introduzione e strumenti

Introduzione e strumenti Controlli utomtici Introduzione e strumenti Convenzioni generli ed elementi di bse Dll equzione ll rppresentzione grfic L lgebr dei blocchi Clcolo di funzioni di trsferimento di schemi interconnessi 2

Dettagli

Esempi. non. orientato. orientato

Esempi. non. orientato. orientato Definizione! Un grafo G = (V,E) è costituito da un insieme di vertici V ed un insieme di archi E ciascuno dei quali connette due vertici in V detti estremi dell arco.! Un grafo è orientato quando vi è

Dettagli

Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. moreno.marzolla@unibo.it http://www.moreno.marzolla.

Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. moreno.marzolla@unibo.it http://www.moreno.marzolla. Grafi Moreno Marzolla ip. di Informatica Scienza e Ingegneria Università di ologna moreno.marzolla@unibo.it http://www.moreno.marzolla.name/ opyright lberto Montresor, Università di Trento, Italy (http://www.dit.unitn.it/~montreso/asd/index.shtml)

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Dettagli

Organizzazione della Memoria usata dai Processi

Organizzazione della Memoria usata dai Processi Orgnizzzione dell Memori ust di Processi Indirizzi m stck hep dt 0 tet 1 L struttur dti Stck (o Pil) LIFO (lst in - first out) Operzioni: Push (ggiunge un elemento in cim llo stck (che cresce verso gli

Dettagli

LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L. Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso

LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L. Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso Grafi Un grafo è una struttura definita come un insieme di nodi (o vertici) che

Dettagli

Algoritmi e Strutture di Dati II 2. Visite di grafi

Algoritmi e Strutture di Dati II 2. Visite di grafi Algoritmi e Strutture di Dati II 2 Visite di grafi Gli algoritmi di visita di un grafo hanno come obiettivo l esploraione di tutti i nodi e gli archi del grafo. Vi sono due modi principali per esplorare

Dettagli

Algoritmi e Strutture Dati. Alberi

Algoritmi e Strutture Dati. Alberi Algoritmi e Strutture Dati Alberi Alberto Montresor Università di Trento 2018/08/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione

Dettagli

(da dimostrare); (da dimostrare).

(da dimostrare); (da dimostrare). Proprietà delle trsposte Sino, K m,n e si K, llor vlgono le seguenti relzioni: 1) ( )= 2) (+)= + 3) ()= (d dimostrre); (d dimostrre). (dimostrt di seguito); DIM. 2): Devo dimostrre che l mtrice ugule ll

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto

Dettagli

IL CALCOLO LETTERALE: I MONOMI Conoscenze. per a = - 2 vale:

IL CALCOLO LETTERALE: I MONOMI Conoscenze. per a = - 2 vale: IL CALCOLO LETTERALE: I MONOMI Conoscenze. Complet.. Un espressione letterle è un scrittur in cui compiono operzioni tr numeri rppresentti, tutti o in prte, d lettere. Per clcolre il vlore numerico di

Dettagli

Cap. 5. Rappresentazioni grafiche di modelli

Cap. 5. Rappresentazioni grafiche di modelli 5.1 Schemi strutturli e schemi funzionli Cp. 5 Rppresentzioni grfiche di modelli Nello studio dei sistemi vengono usulmente impiegte rppresentzioni grfiche convenzionli, denominte schemi. Questi ultimi

Dettagli

Area di una superficie piana o gobba 1. Area di una superficie piana. f x dx 0 e quindi :

Area di una superficie piana o gobba 1. Area di una superficie piana. f x dx 0 e quindi : Are di un superficie pin o go Are di un superficie pin L're dell superficie del trpezoide si B ottiene pplicndo l seguente formul: f d [] A T e risult 0 [, ] è f f d 0 e quindi : [] f d f d f d f d c Nel

Dettagli

Algoritmi e Strutture Dati. Alberi

Algoritmi e Strutture Dati. Alberi lgoritmi e Strutture ati lberi lberto Montresor Università di Trento 2018/10/19 This work is licensed under a reative ommons ttribution-sharelike 4.0 International License. Sommario 1 Introduzione sempi

Dettagli

Algoritmi e Strutture di Dati (3 a Ed.) Errata corrige. Alan Bertossi, Alberto Montresor

Algoritmi e Strutture di Dati (3 a Ed.) Errata corrige. Alan Bertossi, Alberto Montresor Algoritmi e Strutture di Dati (3 a Ed.) Errata corrige Alan Bertossi, Alberto Montresor Gli autori saranno riconoscenti a chiunque segnali errori presenti nel libro di testo, scrivendo ad alberto.montresor@unitn.it.

Dettagli

FONDAMENTI DI PROGRAMMAZIONE (A,B,C,D) Appello del 25/06/2002 Soluzioni proposte

FONDAMENTI DI PROGRAMMAZIONE (A,B,C,D) Appello del 25/06/2002 Soluzioni proposte FONDAMENTI DI PROGRAMMAZIONE (A,B,C,D) Appello del 25/06/2002 Soluzioni proposte ESERCIZIO 1 (5 punti) Si Λ =, b, c. Descrivere un utom che riconosce il seguente linguggio su Λ : L = s 1... s n n 1, s

Dettagli

CORSO ZERO DI MATEMATICA

CORSO ZERO DI MATEMATICA UNIVERSITÀ DEGLI STUDI DI PALERMO FACOLTÀ DI ARCHITETTURA CORSO ZERO DI MATEMATICA ESPONENZIALI E LOGARITMI Dr. Ersmo Modic ersmo@glois.it www.glois.it POTENZA CON ESPONENTE REALE Definizione: Dti un numero

Dettagli

MATEMATICA Classe Prima

MATEMATICA Classe Prima Liceo Clssico di Treiscce Esercizi per le vcnze estive 0 MATEMATICA Clsse Prim Cpitolo Numeri nturli Primi ogni pgin del cpitolo Cpitolo Numeri nturli Primi ogni pgin del cpitolo Per gli llievi promossi

Dettagli

Si noti che da questa definizione segue che il punto C è il punto medio del segmento PP'. Figura 1

Si noti che da questa definizione segue che il punto C è il punto medio del segmento PP'. Figura 1 APITOLO 3 LE SIMMETRIE 3. Richimi di teori Definizione. Si dto un punto del pino; si chim simmetri centrle di centro (che si indic con il simbolo s ) l corrispondenz dl pino in sé che d ogni punto P del

Dettagli

Organizzazione della Memoria usata dai Processi

Organizzazione della Memoria usata dai Processi Orgnizzzione dell Memori ust di Processi Indirizzi m stck hep dt 0 tet 1 L struttur dti Stck (o Pil) LIFO (lst in - first out) Operzioni: Push (ggiunge un elemento in cim llo stck (che cresce verso gli

Dettagli

SUGLI INSIEMI. 1.Insiemi e operazioni su di essi

SUGLI INSIEMI. 1.Insiemi e operazioni su di essi SUGLI INSIEMI 1.Insiemi e operzioni su di essi Il concetto di insieme è primitivo ed è sinonimo di clsse, totlità. Si A un insieme di elementi qulunque. Per indicre che è un elemento di A scriveremo A.

Dettagli

a cura di Luca Cabibbo e Walter Didimo

a cura di Luca Cabibbo e Walter Didimo cur di Luc Cio e Wlter Didimo Esercizi di Informtic teoric - Luc Cio e Wlter Didimo 1 pumping lemm proprietà di chiusur dei linguggio regolri notzioni sul livello degli esercizi: (*) fcile, (**) non difficile

Dettagli

Controlli Automatici. Trasformate L e Z e schemi a blocchi. Esercizi sulle trasformate L e Z

Controlli Automatici. Trasformate L e Z e schemi a blocchi. Esercizi sulle trasformate L e Z Controlli Automtici Trsformte L e Z e schemi blocchi Esercizi sulle trsformte L e Z Esercizi sulle trsformte L e Z Proposte di esercizi e soluzioni in tempo rele trsformt L di y(t) dt trsformt Z di y(i)

Dettagli

Algebra delle Matrici

Algebra delle Matrici lgebr delle Mtrici Definizione di un mtrice Un mtrice esempio: è definit d m righe e d n colonne come d 8 9 8 In questo cso l mtrice è compost d righe e colonne Se il numero delle righe è ugule l numero

Dettagli

LICEO SCIENTIFICO CLASSICO SCIENZE UMANE MARCONI DELPINO

LICEO SCIENTIFICO CLASSICO SCIENZE UMANE MARCONI DELPINO LICEO SCIENTIFICO CLASSICO SCIENZE UMANE MARCONI DELPINO RECUPERO ESTIVO PER LE CLASSI ^D- E SCIENTIFICO Argomenti d rivedere: I QUADRIMESTRE: ) Equzioni di secondo grdo e relzioni tr coefficienti e rdici

Dettagli

Bioinformatica. Grafi. a.a Francesca Cordero. Grafi Bioinformatica

Bioinformatica. Grafi. a.a Francesca Cordero. Grafi Bioinformatica fcordero@di.unito.it Introduzione cknowledgement Lucidi da. Horváth,. emetrescu et al, lgoritmi e strutture dati, McGraw-Hill 3 efinizione: che cosa sono i grafi? definizione astratta: un grafo G = (V,)

Dettagli

Daniela Tondini

Daniela Tondini Dniel Tondini dtondini@unite.it Fcoltà di Medicin veterinri CdS in Tutel e benessere nimle Università degli Studi di Termo 1 IDICI DI FORMA Dopo ver nlizzto gli indici di posizione e di vribilità di un

Dettagli

POTENZA CON ESPONENTE REALE

POTENZA CON ESPONENTE REALE PRECORSO DI MATEMATICA VIII Lezione ESPONENZIALI E LOGARITMI E. Modic mtemtic@blogscuol.it www.mtemtic.blogscuol.it POTENZA CON ESPONENTE REALE Definizione: Dti un numero rele > 0 ed un numero rele qulunque,

Dettagli

Anno 5. Applicazione del calcolo degli integrali definiti

Anno 5. Applicazione del calcolo degli integrali definiti Anno 5 Appliczione del clcolo degli integrli definiti 1 Introduzione In quest lezione vedremo come pplicre il clcolo dell integrle definito per determinre le ree di prticolri figure pine, i volumi dei

Dettagli

15AM120: Settimana 9

15AM120: Settimana 9 15AM120: Settimn 9 NTGAZON SU NSM MSUABL Deinizione di insieme misurbile e dell su misur Diremo che é misurbile se χ é integrbile e scriveremo Σ := { : χ é integrbile} = misur di := χ Σ SMP Un insieme

Dettagli

COGNOME..NOME CLASSE.DATA

COGNOME..NOME CLASSE.DATA COGNOME..NOME CLASSE.DATA FUNZIONE ESPONENZIALE - VERIFICA OBIETTIVI Sper definire un funzione esponenzile. Sper rppresentre un funzione esponenzile. Sper individure le crtteristiche del grfico di un funzione

Dettagli

Informatica II. Capitolo 5. Alberi. E' una generalizzazione della struttura sequenza

Informatica II. Capitolo 5. Alberi. E' una generalizzazione della struttura sequenza Alri Informtic II Cpitolo 5 Alri E' un gnrlizzzion dll struttur squnz Si rilss il rquisito di linrità: ogni lmnto (nodo) h un solo prdcssor m può vr più succssori. Il numro di succssori (figli) può ssr

Dettagli

CALCOLO NUMERICO. Francesca Mazzia. Integrazione. Dipartimento Interuniversitario di Matematica. Università di Bari

CALCOLO NUMERICO. Francesca Mazzia. Integrazione. Dipartimento Interuniversitario di Matematica. Università di Bari CALCOLO NUMERICO Frncesc Mzzi Diprtimento Interuniversitrio di Mtemtic Università di Bri Integrzione 1 Integrzione Problem: pprossimre integrli definiti del tipo: f(x)dx, Sceglimo n + 1 punti nell intervllo

Dettagli

Daniela Lera A.A

Daniela Lera A.A Dniel Ler Università degli Studi di Cgliri Diprtimento di Mtemtic e Informtic A.A. 2016-2017 Formule Gussine Formule di qudrtur Gussine In tli formule l posizione dei nodi non è prefisst, come vviene in

Dettagli

SOLUZIONI ESERCIZI DELLE LEZIONI 3 E 4

SOLUZIONI ESERCIZI DELLE LEZIONI 3 E 4 SOLUZIONI ESERCIZI DELLE LEZIONI 3 E 4 Soluzione esercizio 1 1.progrm A{ 2. integer,y; 3. routine lf() { 4. integer,,; 5. routine et () { 6. integer z,g; 7. =z+++; 8. };. 9. =+y;. 10. }; 11. routine gmm()

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this

Dettagli

Matematica II. Un sistema lineare è un sistema di m equazioni lineari (cioè di primo grado) in n incognite x 1,, x n :

Matematica II. Un sistema lineare è un sistema di m equazioni lineari (cioè di primo grado) in n incognite x 1,, x n : Mtemtic II. Generlità sui sistemi lineri Un sistem linere è un sistem di m equzioni lineri (cioè di primo grdo) in n incognite,, n : n n b b m mn n m (*) Un soluzione del sistem linere è un n-upl di numeri

Dettagli

P (a,a) PROBLEMA 10 . C

P (a,a) PROBLEMA 10 . C PROBLEMA 10 4 FILI LUNGHI CONDUTTORI SONO TRA LORO PARALLELI E DISPOSTI AI VERTICI DI UN QUADRATO DI LATO = 0 cm; IN OGNI FILO CIRCOLA LA CORRENTE i = 0 A, CON I VERSI MOSTRATI IN FIGURA A) CALCOLARE IL

Dettagli

{ } secondi pedici, appartenenti a 1, 2, 0 0 a

{ } secondi pedici, appartenenti a 1, 2, 0 0 a APPENDICE AL CAPITOLO : ALTRE PROPRIETA DEI DETERMINANTI Come si clcol il erminnte di un mtrice di dimensione n? Per evitre un ggrvio di teori limitimoci l clcolo del erminnte di un mtrice Il erminnte

Dettagli

1 Equazioni e disequazioni di secondo grado

1 Equazioni e disequazioni di secondo grado UNIVERSITÀ DEGLI STUDI DI ROMA LA SAPIENZA - Fcoltà di Frmci e Medicin - Corso di Lure in CTF 1 Equzioni e disequzioni di secondo grdo Sino 0, b e c tre numeri reli noti, risolvere un equzione di secondo

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli