Algoritmi e strutture dati



Documenti analoghi
Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Code con priorità. Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna.

Esercizi Capitolo 6 - Alberi binari di ricerca

Complessità Computazionale

Fasi di creazione di un programma

Esercizi per il corso di Algoritmi e Strutture Dati

Algoritmi e strutture dati. Codici di Huffman

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Alberi binari di ricerca

Note su quicksort per ASD (DRAFT)

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Progettaz. e sviluppo Data Base

Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 25/6/2015

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

1. PRIME PROPRIETÀ 2

Alberi auto-aggiustanti

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Esercizi su. Funzioni

CALCOLO COMBINATORIO

Corso di Informatica

Funzioni in C. Violetta Lonati

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Problema del trasporto

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Plate Locator Riconoscimento Automatico di Targhe

Algoritmi e strutture dati

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Il sistema monetario

Introduzione alla teoria dei database relazionali. Come progettare un database

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 11

Come ragiona il computer. Problemi e algoritmi

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

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Operazioni binarie fondamentali

Alberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) Algoritmi e Strutture Dati

Algoritmi di clustering

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

Ricorsione. Rosario Culmone. - p. 1/13

Comparatori. Comparatori di uguaglianza

risulta (x) = 1 se x < 0.

Programmazione dinamica

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Progettazione Fisica FILE

Mac Application Manager 1.3 (SOLO PER TIGER)

Codifica dei numeri negativi

Analisi e diagramma di Pareto

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

HORIZON SQL PREVENTIVO

Una percentuale di una certa importanza nel mondo economico è il tasso di interesse. Il tasso di

Blanchard, Macroeconomia Una prospettiva europea, Il Mulino 2011 Capitolo IV. I mercati finanziari. Capitolo IV. I mercati finanziari

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

Università degli Studi di Salerno

Sia data la rete di fig. 1 costituita da tre resistori,,, e da due generatori indipendenti ideali di corrente ed. Fig. 1

Processi e Thread. Scheduling (Schedulazione)

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Economia e politica di gestione del territorio. [1:cap.4]

Corso di Programmazione Concorrente

I tipi di dato astratti

Corso di Calcolo Numerico

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Le Macchine di Turing

Calcolatori: Algebra Booleana e Reti Logiche

L orizzonte temporale nei prospetti semplificati dei fondi aperti. Nota di studio. Ufficio Studi

SCHEDULATORI DI PROCESSO

MODELLISTICA DI IMPIANTI E SISTEMI 2

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

4.1 Modelli di calcolo analisi asintotica e ricorrenze

Eletec S.n.c Via G. Agnelli, 12/ Rezzato (BS)

4. Operazioni elementari per righe e colonne

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

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Teoria dei Giochi. Anna Torre

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione

Introduzione all Information Retrieval

Il tipo di dato astratto Pila

Guida all uso di Java Diagrammi ER

Calcolo del Valore Attuale Netto (VAN)

Basi di Dati Multimediali. Fabio Strocco

3 GRAFICI DI FUNZIONI

Struttura di un programma Java

= 0, 098 ms. Da cui si ricava t 2 medio

Come utilizzare il sistema per ricavare e scaricare un elenco iscritti per la propria gara

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

ISC. L indicatore sintetico di costo del conto corrente

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

Introduzione ai tipi di dato astratti: applicazione alle liste

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Liberare la memoria allocata dinamicamente.

Sistemi Informativi Territoriali. Map Algebra

Metodi Stocastici per la Finanza

Parte 2. Determinante e matrice inversa

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Lezione 8. La macchina universale

Corso di Informatica

Transcript:

Algoritmi e Strutture Dati Code con priorità Tipo di dato CodaPriorità (1/2) 2

Tipo di dato CodaPriorità (2/2) 3 Tre implementazioni d-heap: generalizzazione degli heap binari visti per l ordinamento heap binomiali heap di Fibonacci 4

d-heap 5 Definizione Un d-heap è un albero radicato d-ario con le seguenti proprietà: 1. Struttura: è completo almeno fino al penultimo livello 2. Contenuto informativo: ogni nodo v contiene un elemento elem(v) ed una chiave chiave(v) presa da un dominio totalmente ordinato 3. Ordinamento a heap: per ogni nodo v (diverso dalla radice) chiave(v) chiave(parent(v)) 6

Esempio Heap d-ario con 18 nodi e d = 3 7 Proprietà 1. Un d-heap con n nodi ha altezza O(log d n) 2. La radice contiene l elemento con chiave minima (per via della proprietà di ordinamento a heap) 3. Può essere rappresentato implicitamente tramite vettore posizionale grazie alla proprietà di struttura 8

Procedure ausiliarie Utili per ripristinare la proprietà di ordinamento a heap su un nodo v che non la soddisfi T(n) = O(log d n) T(n) = O(d log d n) 9 findmin T(n) = O(1) 10

insert(elem e, chiave k) T(n) = O(log d n) ( muovialto ) 11 delete(elem e) e deletemin T(n) = O(d log d n) ( muovibasso ) Può essere usata anche per implementare cancellazione del minimo 12

decreasekey(elem e, chiave d) T(n) = O(log d n) ( muovialto ) 13 increasekey(elem e, chiave d) T(n) = O(d log d n) ( muovibasso ) 14

Heap binomiali 15 Alberi binomiali Albero binomiale B h (definito ricorsivamente) : 1. B 0 consiste di un unico nodo 2. Per i 0, B i+1 ottenuto fondendo due alberi binomiali B i con radice di uno figlia della radice dell altro 16

Proprietà strutturali 17 Definizione di heap binomiale Un heap binomiale è una foresta di alberi binomiali con le seguenti proprietà: 1. Struttura: ogni albero B i nella foresta è un albero binomiale 2. Unicità: per ogni i, esiste al più un B i nella foresta 3. Contenuto informativo: ogni nodo v contiene un elemento elem(v) ed una chiave chiave(v) presa da un dominio totalmente ordinato 4. Ordinamento a heap: per ogni nodo v (diverso da una delle radici) chiave(v) chiave(parent(v)) 18

Proprietà In un heap binomiale con n nodi, vi sono al più log 2 n alberi binomiali, ciascuno con grado ed altezza O(log n) 19 Procedura ausiliaria Utile per ripristinare la proprietà di unicità in un heap binomiale T(n) è proporzionale al numero di alberi binomiali in input 20

Realizzazione (1/3) 21 Realizzazione (2/3) 22

Realizzazione (3/3) Tutte le operazioni richiedono tempo T(n) = O(log n) Durante l esecuzione della procedura ristruttura esistono infatti al più tre B i, per ogni i 0 23 Analisi Ammortizzata 24

Metodologie di analisi di algoritmi Finora abbiamo visto tre tipi di analisi: Analisi nel caso peggiore Analisi nel caso medio Analisi nel caso atteso (algoritmi randomizzati) Ne vedremo un altro: Analisi ammortizzata 25 Analisi ammortizzata Strutture dati con garanzia assoluta sui loro tempi di esecuzione: analisi di caso peggiore per operazione (esempio: analisi di heap in heapsort) Analisi ammortizzata: non ci interessa tanto caratterizzare tempo richiesto nel caso peggiore da un operazione sulla struttura dati quanto caratterizzare tempo totale richiesto dalle operazioni sulla struttura dati ovvero tempo medio di un operazione, dove la media è sulla sequenza di operazioni 26

Analisi ammortizzata Supponiamo di avere una sequenza di σ operazioni su una particolare struttura dati La sequenza richiede tempo totale O(σ t) per essere eseguita Diremo che il tempo ammortizzato per ogni operazione della sequenza è O(t) Media sulla sequenza: O(σ t) / σ = O(t) Nota: una singola operazione potrebbe richiedere più di O(t) nel caso peggiore! 27 Analisi ammortizzata Sequenza di σ operazioni richiede tempo O(σ t) Tempo ammortizzato: O(σ t) / σ = O(t) OK per molte applicazioni Abbiamo bisogno di utilizzare strutture dati su sequenze di operazioni Analizzare prestazioni su sequenze di prestazioni 28

Esempio 1 Pila con le seguenti due operazioni push(x): push elemento x sulla pila multipop(k): esegui k pop sulla pila (se la pila ha almeno k elementi) Analisi nel caso peggiore: push(x): O(1) multipop(k): O( min{ k, P } ) = O(n) dove P è la dimensione della pila 29 Esempio 1 Analisi nel caso peggiore: push(x): O(1) multipop(k): O( min { k, P } ) = O(n) dove P è la dimensione della pila Quanto tempo richiederà una sequenza di σ operazioni? O(σ n)? No! 30

Analisi ammortizzata dell Esempio 1 Intuizione: Prima di togliere un elemento x con una multipop dobbiamo averlo inserito con una push(x) Ogni sequenza di σ push e multipop richiede in totale tempo O(σ ) Tempo ammortizzato per operazione: O(σ ) / σ = Ο(1) Vedremo un analisi più formale di questo 31 Metodologie di analisi ammortizzata Tre tipologie di analisi diverse: Metodo cumulativo: Sequenza di σ operazioni richiede tempo O(σ t) Tempo ammortizzato: O(σ t) / σ = O(t) Metodo del banchiere: Per eseguire un passo dobbiamo pagare 1 EUR Allocare EUR in modo da pagare per tutti i passi Metodo del potenziale: Analogia con analisi potenziale (Fisica) 32

Metodo del Banchiere per Esempio 1 Quando esegui push(x) sborsa 2 EUR: 1 EUR per pagare lavoro richiesto da push(x) 1 EUR conservato nell elemento x Quando esegui multipop(k) sborsa 0 EUR: lavoro richiesto da multipop(k) pagato dagli EUR conservati negli elementi! 1. Per ogni operazione sborsi al più O(1) EUR 2. Tutti gli EUR sborsati sufficienti a pagare per lavoro richiesto dalle operazioni 33 Metodo del Potenziale Definisci potenziale Φ per struttura dati D Φ(D) misura potenzialità di D ad eseguire lavoro (configurazione attuale) Durante operazione i-esima, struttura dati passa da configurazione D i a configurazione D i+1 Passa da potenziale Φ(D i ) a potenziale Φ(D i+1 ) Tenere in conto variazione di potenziale Δ Φ = Φ(D i+1 ) - Φ(D i ) Operazione può essere molto costosa ma mette struttura dati in grado di eseguire più efficientemente operazioni future (costo operazione compensato da Δ Φ ) 34

Metodo del Potenziale Tipicamente potenziale Φ soddisfa le: Φ(D 0 ) = 0 e Φ(D i ) 0 per ogni i Definiamo tempo ammortizzato a i dell operazione i- esima: a i = t i + Φ(D i+1 ) - Φ(D i ) dove t i è il tempo (attuale) operazione i-esima Sommando su sequenza di operazioni Σ i a i = Σ i t i + Σ i ( Φ(D i+1 ) - Φ(D i ) ) Σ i a i = Σ i t i + ( Φ(D n ) - Φ(D 0 ) ) Σ i a i Σ i t i 35 Metodo del Potenziale per Esempio 1 Definiamo potenziale Φ della pila P: Nota che: Φ(P) = P Φ(P 0 ) = 0 e Φ(P i ) 0 per ogni i Tempo ammortizzato a i di operazione i-esima: a i = t i + Φ(D i+1 ) - Φ(D i ) Costo ammortizzato di push(x) : a i = t i + Φ(D i+1 ) - Φ(D i ) = 1 + 1 = 2 Costo ammortizzato di multipop(k) : a i = t i + Φ(D i+1 ) - Φ(D i ) = k + ( -k) = 0 36

Heap di Fibonacci 37 Heap di Fibonacci Heap binomiale rilassato: si ottiene da un heap binomiale rilassando la proprietà di unicità dei B i ed utilizzando un atteggimento più pigro durante l operazione insert (perché ristrutturare subito la foresta quando potremmo farlo dopo?) Heap di Fibonacci: si ottiene da un heap binomiale rilassato rilassando la proprietà di struttura dei B i che non sono più necessariamente alberi binomiali Analisi sofisticata: i tempi di esecuzione sono ammortizzati su sequenze di operazioni 38

Conclusioni: tabella riassuntiva L analisi di DHeap e HeapBinomiale è nel caso peggiore, mentre quella per HeapBinomialeRilassato e HeapFibonacci è ammortizzata 39