Insiemi disgiunti.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Strutture dati per insiemi disgiunti
Ordinamento ottimo Ricerca
Alberi binari Definizione Sottoalberi Padre, figli
Il problema del minimo albero ricoprente in un grafo non cooperativo
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Code a priorità (Heap) Definizione
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Heap binomiali.
Cammini minimi con sorgente singola
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Algoritmi e Strutture Dati
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 12/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Il problema del minimo albero ricoprente in un grafo con archi privati
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Algoritmi e Strutture Dati
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati (Mod. A)
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e strutture dati
Algoritmi di ordinamento
Algoritmi e Strutture Dati 20 aprile 2001
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Algoritmo di Kruskal Parte con tutti i vertici e nessun lato (sottografo aciclico, o foresta, ricoprente) Ordina i lati per costo non decrescente.
Sottoinsiemi disgiunti
Heap binari e HeapSort.
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Strutture dati per insiemi disgiunti
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Usi (meno scontati) della visita DFS
Algoritmi e Strutture Dati
Componenti fortemente connesse
Usi (meno scontati) della visita DFS. Informazioni utili: tenere il tempo clock=1 pre(v)=clock clock=clock+1 post(v)=clock; clock=clock+1 pre(v): tempo.
Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati.
1/32 Algoritmi e Strutture Dati HEAP Anno accademico
alberi completamente sbilanciati
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
AlgoLab - Insiemi disgiunti Insiemi disgiunti Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Heap di Fibonacci.
Strutture dati per insiemi disgiunti Alberi di copertura minimi
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
Capitolo 9 Union-find Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Insiemi disgiunti.
Transcript della presentazione:

Insiemi disgiunti

Strutture dati per insiemi disgiunti E’ dato un insieme S scomposto in insiemi disgiunti S1, , Sk. Ogni insieme è identificato da un suo membro rappresentante. Si vogliono realizzare le seguenti operazioni: Make-Set(x): inizializza un nuovo insieme contenente il solo elemento x Union(x,y): unisce gli elementi degli insiemi che contengono x e y, S e T rispettivamente, nell’unico insieme ST Find-Set(x): trova l’insieme a cui appartiene l’elemento x

Strutture dati per insiemi disgiunti Gli insiemi possono essere rappresentati da alberi radicati (up-tree), in cui ogni nodo contiene un elemento e ogni albero rappresenta un insieme. Ogni elemento ha un puntatore solo al padre. La radice contiene il rappresentante, che è padre di se stesso. c e b d f a g

Up-Tree a b d e k f j c h g i

Up-Tree: unione L’unione è semplicissima: si fa sì che la radice dell’albero che ha meno nodi punti a alla radice dell’albero con più nodi. Il numero dei nodi viene approssimato dal rango associato ad ogni nodo. c b d e f a g

Up-Tree: Unione a s d e t u z c h g

Up-Tree: Unione a d e s c h t u z g

Compressione di cammini Serve nel corso della Find-Set, fa puntare direttamente alla radice ogni nodo del cammino d’accesso al nodo dato. a T1 T4 T3 T2 T1 d c b a b T2 c T3 d T4

Algoritmi per up-tree Link(x,y) if rank[x] > rank[y] Make-Set(x) Si associa ad ogni nodo x un intero rank[x], limite superiore all’altezza di x (num. archi del cammino più lungo fra x e una foglia discendente). Link(x,y) if rank[x] > rank[y] then p[y] = x else p[x] = y if rank[x] == rank[y] then rank[y]++ Make-Set(x) p[x] = x rank[x]=0 Union(x,y) Link(Find-Set(x), Find-Set(y)) Find-Set(x) if x ≠ p[x] then p[x] = Find-Set(p[x]) return p[x]

Up-Tree - sommario MakeSet (1) Find (h) Union

Esponenziali di esponenziali F(0) = 1 F(i) = 2F(i–1) per ogni i > 0 F(1) = 21 = 2 F(2) = 22 = 4 F(3) = 222 = 16 F(4) = 2222 = 65536 F(5) = 22222 = 265536  1019728 Tutti i numeri incontrati normalmente sono più piccoli di F(5)

log* log n = il più piccolo i tale che F(i)  n = = il più piccolo i tale che log loglog n  1. i volte log n  5 per ogni numero n incontrato in pratica

La funzione di Ackerman A(1, j ) = 2j per j  1 A(i, 1 ) = A(i – 1, 2 ) per i > 1 A(i, j ) = A(i – 1, A(i,j – 1)) per i,j > 1 Inversa della funzione di Ackerman (per m  n): (m,n) = il più piccolo i  1 tale che A(i, m/n ) > log n (m,n)  4 per ogni valore comune di m e n

Up-Tree: complessità Lemma 1 Per tutte le radici x di alberi, size[x] ≥ 2rank[x] Lemma 2 Per ogni intero r≥0 ci sono al più n/2r nodi di rango r.

Up-Tree: complessità Teorema Una sequenza di m operazioni Make-Set, Link e Find-Set, di cui n sono operazioni Make-Set, può essere eseguita su una foresta di up-tree con unione per rango e compressione di cammini in tempo O(m logn). Corollario Una sequenza di m operazioni Make-Set, Union e Find-Set, di cui n sono operazioni Make-Set, può essere eseguita su una foresta di up-tree con unione per rango e compressione di cammini in tempo O(m logn).