3/31/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo 2010 8 – Algoritmi.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Algoritmi e Strutture Dati
Gli Elementi di Euclide
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Algoritmi e Strutture Dati
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Cammini minimi con una sorgente
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Algoritmi e Dimostrazioni Stefano Berardi
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
Velocità media Abbiamo definito la velocità vettoriale media.
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Elementi di Informatica di base
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Radix-Sort(A,d) // A[i] = cd...c2c1
Vedremo in seguito che (n log n) è un limite stretto per il problema dellordinamento. Per ora ci limitiamo a dimostrare che: La complessità nel caso pessimo.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Algoritmi e Strutture Dati
14 marzo 2002 Avvisi:.
Complessità di un algoritmo
Cammini minimi da un sorgente
ESTENSIONI SEMPLICI e TEOREMA DELL’ELEMENTO PRIMITIVO
ALGORITMI a.
Metodo numerico di Eulero
Massimo comun divisore
11/21/2014E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
GLI ARRAY MONODIMENSIONALI. Utilizzando le nostre attuali conoscenze, proviamo a risolvere il seguente problema: Calcolare la media dei voti conseguiti.
1/11/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
1 Gestione del Processore (Scheduling). 2 Scheduling dei processi È l’attività mediante la quale il sistema operativo effettua delle scelte tra i processi,
Gestione del Processore (Scheduling)
Valutare la difficoltà dei problemi
AlgoLab - Code unificabili Code unificabili con alberi binomiali Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
4/4/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Un.
ALGORITMI DI RICERCA Nella programmazione s’incontra spesso la necessità di ricercare un elemento (chiave) in un elenco, oppure di ordinare gli elementi.
4/5/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
4/19/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Risoluzione delle collisioni con indirizzamento aperto Con la tecnica di indirizzamento aperto tutti gli elementi stanno nella tavola. La funzione hash.
03/19/09E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2009 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo 2009 Codici.
Olimpiadi di Informatica 2010 Giornate preparatorie
4/25/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Criteri di divisibilità
Transcript della presentazione:

3/31/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi greedy: l’algoritmo di Moore. (versione 31/03/2015)

Il problema: scheduling di lavori per una CPU. Dato un insieme di lavori (jobs), caratterizzati ciascuno da una durata e da una scadenza, trovare il massimo numero di lavori che possono essere eseguiti entro la scadenza. Esempio: Il problema Missioni dalle Olimpiadi di Informatica. Il Commissario Basettoni ha presentato a Topolino le missioni che egli dovrà svolgere segretamente nel corso dell'anno. Per ogni missione, oltre al luogo da raggiungere, Basettoni ne indica la durata in giorni e la data massima entro cui deve essere completata. In altri termini, la missione può iniziare in qualunque giorno dell'anno ma deve durare esattamente il numero di giorni indicato e terminare non oltre la data di scadenza. Topolino, presa la lista delle missioni ricevuta da Basettoni, ordina tali missioni in base alla loro data di scadenza. Quindi, numera i giorni dell'anno da 1 a 365 (non esistono anni bisestili a Topolinia) e trasforma le date di scadenza in numeri secondo tale numerazione. Per esempio, se una missione dura 15 giorni e deve essere svolta entro il 18 febbraio, Topolino la vede semplicemente come una coppia di interi (in quanto il 18 febbraio è il quarantanovesimo giorno dell'anno). 31/03/ E. Giovannetti - AlgELab Lez.462

Esempio (continua). Poiché può effettuare una sola missione alla volta, Topolino non sarà in grado di svolgerle tutte, pur iniziando una missione il giorno immediatamente successivo a quello in cui termina la precedente. Vuole perciò sapere il numero massimo di missioni che è in grado di eseguire rispettando i vincoli sulla loro durata e scadenza. Supponendo che Topolino già fornisca le coppie di interi ordinate per scadenza (il secondo membro delle coppie), aiutatelo a calcolare il massimo numero di missioni che può svolgere. Per esempio, se ci sono quattro missioni, una di tre giorni da terminare entro il 5 gennaio, una di quattro giorni entro l'8 gennaio, una di tre giorni entro il 9 gennaio e una di 6 giorni entro il 12 gennaio, Topolino vi fornisce la lista di quattro coppie 3 5, 4 8, 3 9 e Il numero massimo di missioni che può svolgere è pari a tre, ossia le missioni corrispondenti alle coppie 3 5, 3 9 e 6 12: la prima missione inizia il primo di gennaio e termina il 3 gennaio; la seconda inizia il 4 gennaio e termina il 6 gennaio; la terza inizia il 7 gennaio e termina il 12 gennaio. (Notare che, scegliendo la missione corrispondente alla coppia 4 8, Topolino può svolgere al più due missioni.) 31/03/ E. Giovannetti - AlgELab Lez.463

Nota Una sequenza di scheduling, o brevemente uno scheduling, è una sequenza di lavori L 1, L 2, …, L n che devono essere eseguiti uno dopo l’altro consecutivamente. Se d 1, d 2, …, d n sono le durate rispettive di L 1, L 2, …, L n, e s 1, s 2, …, s n ne sono le rispettive scadenze, e l’istante iniziale è 0, allora il lavoro L i : inizia l’esecuzione all’istante t i-1 = d 1 + d 2 + … + d i-1 ; termina l’esecuzione all’istante t i = d 1 + d 2 + … + d i-1 + d i ; rispetta la scadenza se t i  s i. 31/03/ E. Giovannetti - AlgELab Lez.464

Descrizione informale dell’algoritmo risolvente. Ordina la sequenza dei lavori per ordine crescente di istante di scadenza. Scandisci tale sequenza nell’ordine, aggiungendo ogni volta il successivo lavoro alla fine di una sequenza di scheduling provvisoria: se così facendo il lavoro considerato termina dopo la scadenza, si elimina dalla sequenza di scheduling (includente l’ultimo) il lavoro di durata massima (che così diventa un lavoro definitivamente scartato). 31/03/ E. Giovannetti - AlgELab Lez.465

L’algoritmo risolvente. ordina la sequenza dei lavori (jobs) per ordine crescente di istante di scadenza: L 1, L 2, …, L n. inizializza la sequenza-soluzione Sol dei jobs schedulati come sequenza vuota, e inizializza il tempo t a 0 (oppure all’istante iniziale dato). for i = 1 to n aggiungi L i a Sol ; t = t + durata di L i ; if (t  scadenza di L i ) togli da Sol il lavoro L imax di durata massima; t = t – durata di L imax 31/03/ E. Giovannetti - AlgELab Lez.466

Nota Se (come nel problema Missioni) è richiesto solo il numero massimo di lavori schedulabili e non la loro sequenza, si può realizzare l’estrazione del lavoro di durata massima in tempo logaritmico invece che lineare, implementando Sol come heap a massimo (coda con priorità a massimo). Ricorda, però, che in questo modo l’inserimento in Sol è anch’esso in tempo logaritmico anziché costante. 31/03/ E. Giovannetti - AlgELab Lez.467

Dimostrazione di correttezza: l’invariante. Situazione al passo generico (invariante del ciclo): 1.S è l’insieme di tutti i jobs finora esaminati; 2.Sol è uno scheduling massimale L 1, L 2, …, L k di jobs di S che rispetta le scadenze, cioè fra tutti gli scheduling (di jobs di S) che rispettano le scadenze è quello (o uno di quelli) con il numero massimo di elementi; 3.inoltre Sol è, fra tutti gli scheduling massimali di jobs di S, quello (o uno di quelli) di durata totale minima, dove durata_totale = durata(L 1 ) + durata(L 2 ) + … + durata(L k ) 4.Sol è ordinato per tempi di scadenza crescenti; 5.ogni job L  S ha una scadenza posteriore o uguale alle scadenze di tutti i jobs  S. 31/03/ E. Giovannetti - AlgELab Lez.468

Dimostrazione di correttezza: il passo. Sia t k l’istante di fine dello scheduling Sol = L 1, L 2, …, L k. Sia L il job non ancora esaminato, cioè  S, che ha scadenza prima di tutti gli altri, cioè il primo job ancora da esaminare nella sequenza dei jobs ordinata per scadenza. Siano s = scadenza di L d = durata di L caso 1) t k + d  s : cioè L, aggiunto al fondo di Sol, risulta eseguibile entro la scadenza; allora lo scheduling che così si ottiene: L 1, L 2, …, L k, L è uno scheduling massimale per S  {L}, poiché se vi fosse uno scheduling per S  {L} con più di k+1 elementi, vi sarebbe uno scheduling per S con più di k elementi; inoltre è di durata minima, perché se ve ne fosse uno di durata minore, ce ne sarebbe uno di durata minore anche per S. 31/03/ E. Giovannetti - AlgELab Lez.469

Dimostrazione del passo: caso 2 e conclusione. caso 2) t k + d  s : cioè L, se schedulato al fondo di Sol, non rispetta la scadenza. Quindi non posso semplicemente aggiungerlo alla sequenza; ma se fra gli L 1, L 2, …, L k già scelti ce n’è uno L i di durata d i maggiore della durata d di L, conviene togliere quello e inserire L; anzi, conviene togliere l’elemento L i di durata massima. Ossia, per rendere il codice più semplice: aggiungo comunque L al fondo di L 1, L 2, …, L k ; tolgo dallo scheduling L 1, L 2, …, L k, L il job di durata massima. In conclusione, il trattamento dei due casi è semplicemente: aggiungo L al fondo di L 1, L 2, …, L k ; se in questo modo L termina dopo la scadenza, tolgo dallo scheduling L 1, L 2, …, L k, L il job di durata massima. 31/03/ E. Giovannetti - AlgELab Lez.4610