Tecniche Algoritmiche /3 Paradigma generativo: tecnica golosa e tecnica Divide-et-impera

Documenti analoghi
Il problema del commesso viaggiatore

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative.

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

METODI DELLA RICERCA OPERATIVA

Algoritmo basato su cancellazione di cicli

11.4 Chiusura transitiva

Corso di Perfezionamento

3.4 Metodo di Branch and Bound

Algoritmi e strutture dati

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Problemi, istanze, soluzioni

Makespan con set-up dipendenti dalla sequenza. 1/s jk /C max

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

Programmazione dinamica

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Grafi (orientati): cammini minimi

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

2.2 Alberi di supporto di costo ottimo

Grafi pesati Minimo albero ricoprente

Problema del cammino minimo

Algoritmi e Strutture Dati

Ottimizzazione nella Gestione dei Progetti - Esercitazione 1: calcolo degli schedule ottimi

Minimo albero di copertura

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

Appunti lezione Capitolo 14 Greedy

Possibile applicazione

Introduzione ai grafi

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Ottimizzazione Combinatoria e Reti (a.a. 2007/08)

2.2 Alberi di supporto di costo ottimo

Introduzione alla programmazione

Grafi (non orientati e connessi): minimo albero ricoprente

Cammini minimi in grafi:

Grafi (non orientati e connessi): minimo albero ricoprente

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati

Alberi di copertura minimi

Algoritmi e Strutture Dati

Domini di funzioni di due variabili. Determinare i domini delle seguenti funzioni di due variabili (le soluzioni sono alla fine del fascicolo):

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

Cammini minimi fra tutte le coppie

Parte III: Algoritmo di Branch-and-Bound

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Tecniche euristiche Ricerca Locale

Rappresentazione degli algoritmi

Ordinamento per inserzione e per fusione

Algoritmi e strutture dati

Cammini Minimi. Algoritmo di Dijkstra

Grafi e reti di flusso

Strutture dati per insiemi disgiunti

Processi di cost management - Programmazione multiperiodale

Una breve introduzione all implementazione in C di algoritmi su grafo

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Il valore di flusso che si ottiene è

AMPL Problemi su Reti


Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI

Note per la Lezione 4 Ugo Vaccaro

Algoritmi e Strutture Dati

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

età (anni) manutenzione (keuro) ricavato (keuro)

Il problema dello zaino

Week #9 Assessment. Practice makes perfect... November 23, 2016

Algoritmi e strutture dati

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive

Algoritmi e Strutture Dati

Studio degli algoritmi

4.1 Localizzazione e pianificazione delle base station per le reti UMTS

Complementi ed Esercizi di Informatica Teorica II

Branch-and-bound per KNAPSACK

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Algoritmi esatti. La teoria ci dice che per problemi difficili (come il

Operations Management

Esame di Ricerca Operativa del 07/09/2016

Grafi: definizioni e visite

Parte V: Rilassamento Lagrangiano

Tecniche Algoritmiche: divide et impera

Albero di Riscorsione

Soluzione dei problemi di Programmazione Lineare Intera

Esame di Ricerca Operativa del 03/09/2015

Algoritmi e Strutture Dati

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Progettazione di algoritmi

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

Alberi e arborescenze di costo minimo

Il problema dello zaino

ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Introduzione agli Algoritmi

Programmazione Lineare Intera: Piani di Taglio

Transcript:

Tecniche Algoritmiche /3 Paradigma generativo: tecnica golosa e tecnica Divide-et-impera Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro

DAL PARADIGMA GENERATIVO SCATURISCONO TECNICHE DI PROGETTO DI ALGORITMI CHE GENERANO DIRETTAMENTE LA SOLUZIONE SENZA SELEZIONARLA TRA GLI ELEMENTI DELLO SPAZIO DI RICERCA. IN QUESTO PARADIGMA LO SPAZIO DI RICERCA È CONSIDERATO ESCLUSIVAMENTE IN FASE DI PROGETTO DELL ALGORITMO ALLO SCOPO DI CARATTERIZZARE LE SOLUZIONI DEL PROBLEMA E DEFINIRE UNA STRATEGIA RISOLUTIVA DIRETTA PER OGNI ISTANZA. APPARTENGONO A QUESTO PARADIGMA LA TECNICA GOLOSA E LA DIVIDE- ET-IMPERA. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 2

LA TECNICA GOLOSA (GREEDY) SI APPLICA PRINCIPALMENTE A PROBLEMI DI OTTIMIZZAZIONE. RICHIEDE CHE L ALGORITMO ESEGUA IL PROCESSO DI COSTRUZIONE DI UN ELEMENTO DELLO SPAZIO DI RICERCA IN STADI E SI BASA SUI SEGUENTI PRINCIPI: AD OGNI STADIO i, i PER LA COMPONENTE i-esima VIENE SCELTO IL VALORE CHE, TRA QUELLI AMMISSIBILI, RISULTA IL MIGLIORE RISPETTO DA UN DETERMINATO CRITERIO UNA VOLTA FATTA LA SCELTA PER LA i-esima COMPONENTE, SI PASSA A CONSIDERARE LE ALTRE, SENZA PIÙ TORNARE SULLA DECISIONE PRESA. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 3

LO SCHEMA DI UN ALGORITMO GOLOSO (GREEDY) PRESUPPONE CHE L ALGORITMO ACQUISISCA LA RAPPRESENTAZIONE DI UNA ISTANZA DEL PROBLEMA E DISPONGA DI UN METODO PER ORGANIZZARE IN STADI LA COSTRUZIONE DI UN ELEMENTO DELLO SPAZIO DI RICERCA 1. PONI i A 1 E INIZIALIZZA z 2. DETERMINA L INSIEME A DEI VALORI AMMISSIBILI PER LA COMPONENTE i-esima DI z E SE A SCEGLI IL MIGLIORE IN A, A RISPETTO AL CRITERIO DI PREFERENZA FISSATO 3. SE L i-esimo STADIO È L ULTIMO ALLORA TERMINA E RESTITUISCE o(z) COME RISULTATO 4. ALTRIMENTI INCREMENTA i DI 1 E TORNA AL PASSO 2 Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 4

ESEMPIO: IL PROBLEMA DELLO ZAINO (KNAPSACK) COME È NOTO, SI DISPONE DI UN BUDGET B E SI DEVE CERCARE DI MASSIMIZZARE LA RENDITA SCEGLIENDO TRA n POSSIBILI INVESTIMENTI, CIASCUNO DEI QUALI CARATTERIZZATO DA UN PROFITTO P i E DA UN COSTO C i. IL PROBLEMA VIENE FORMULATO COSÌ: DATI 2n+1 INTERI POSITIVI P 1, P 2,, P, C n 1, C 2,, C, B n SI VOGLIONO TROVARE n VALORI n X n n { 0, 1 } ( 1 i n ) X 1, X 2,, X n TALI CHE Σ i=1 P i X i SIA MASSIMA Σ i=1 C i X i B Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 5

CONSIDERIAMO L ISTANZA B=5 E TRE ELEMENTI DISPONIBILI. i P i C i P i / C i 1 6 2 3 2 4 1 4 3 7 3 3.5 IL CRITERIO DI BASE PER ORDINARE LE VARIABILI È QUELLO DI VALUTARE SIA IL COSTO CHE IL PROFITTO P i / C i. UNA VOLTA EFFETTUATO L ORDINAMENTO, SI POSSONO SCEGLIERE LE VARIABILI PONENDOLE AL MASSIMO VALORE COMPATIBILE CON I VINCOLI. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 6

IL METODO/1 DEFINIRE UNA FUNZIONE ZAINOGREEDY CHE HA COME PARAMETRI: IL NUMERO n DI OGGETTI DENOTATI DAI NUMERI INTERI DA 0 A n 1 IL VETTORE P DEI PROFITTI IL VETTORE C DEI COSTI IL BUDGET B IL RISULTATO VIENE RESTITUITO NEL VETTORE X NEL QUALE LA i-esima COMPONENTE VALE 1 SE L OGGETTO i È INCLUSO NELLA SOLUZIONE, E 0 ALTRIMENTI Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 7

IL METODO/2 LA FUNZIONE ORDINA IN UN VETTORE AUSILIARIO V GLI OGGETTI SECONDO L ORDINE NON CRESCENTE DEL RAPPORTO P i /C i. OGNI ELEMENTO È IN CORRISPONDENZA DI UN OGGETTO E CONTIENE L INDICE DELL OGGETTO IN UN APPOSITO CAMPO, OLTRE AL RAPPORTO P i /C i AD ESSO ASSOCIATO; DOPO L ORDINAMENTO, LA FUNZIONE SCANDISCE IL VETTORE V, ANALIZZANDO i L OGGETTO IN V(i) E DECIDENDO, IN BASE ALLA COMPATIBILITÀ CON IL VINCOLO SUL BUDGET, SE INCLUDERLO O MENO NELLA SOLUZIONE. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 8

TECNICA GREEDY: CONCETTI DI BASE UN ALGORITMO GREEDY PERMETTE DI OTTENERE UNA SOLUZIONE MEDIANTE UNA SEQUENZA DI DECISIONI; IN OGNI PASSO VIENE PRESA LA DECISIONE CHE AL MOMENTO APPARE MIGLIORE. QUESTA STRATEGIA EURISTICA NON GARANTISCE SEMPRE UNA SOLUZIONE OTTIMA COME SI PUÒ DETERMINARE SE UN ALGORITMO GREEDY È IN GRADO DI TROVARE LA SOLUZIONE DI UN PROBLEMA DI OTTIMIZZAZIONE? I PROBLEMI CHE SI PRESTANO AD ESSERE RISOLTI CON UNA STRATEGIA GREEDY PRESENTANO ALCUNE CARATTERISTICHE : LA PROPRIETÀ DELLA SCELTA GREEDY LA SOTTOSTRUTTURA OTTIMA Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 9

LA PROPRIETÀ DELLA SCELTA GREEDY ASSICURA CHE SI PUÒ OTTENERE UNA SOLUZIONE OTTIMA GLOBALE PRENDENDO DECISIONI CHE SONO OTTIMI LOCALI. UN PROBLEMA PRESENTA UNA SOTTOSTRUTTURA OTTIMA SE UNA SOLUZIONE OTTIMA DEL PROBLEMA CONTIENE AL SUO INTERNO UNA SOLUZIONE OTTIMA DEI SOTTOPROBLEMI. LA TECNICA GREEDY È SPESSO UTILE PER PROBLEMI DI SCHEDULING, IN CUI SI HANNO PROGRAMMI DA ESEGUIRE SU UN PROCESSORE E SI VUOLE L ORDINE DI ESECUZIONE OTTIMO IN BASE A UN CERTO CRITERIO. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 10

ESEMPIO: PROBLEMA DI SELEZIONE DI ATTIVITÀ IL PROBLEMA È QUELLO DELL ASSEGNAMENTO DI UNA RISORSA CONDIVISA DA UN CERTO NUMERO DI ATTIVITÀ IN COMPETIZIONE FRA LORO. SIA S={1,2,,n} UN INSIEME DI n ATTIVITÀ CHE DEVONO UTILIZZARE UNA DETERMINATA RISORSA CHE NON PUÒ ESSERE UTILIZZATA CONTEMPORANEAMENTE. UNA GENERICA ATTIVITÀ k È CARATTERIZZATA DA UN TEMPO DI INIZIO (ATTIVAZIONE) I E k UN TEMPO DI FINE (CONCLUSIONE) F CON I k k F. k DUE ATTIVITÀ k E j SONO DETTE COMPATIBILI SE GLI INTERVALLI [I k, F k ] E [I j, F j ] NON SI SOVRAPPONGONO. IL PROBLEMA CHIEDE DI INDIVIDUARE UN INSIEME CHE CONTIENE IL MASSIMO NUMERO DI ATTIVITÀ MUTUAMENTE COMPATIBILI. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 11

SI ASSUME CHE LE ATTIVITÀ IN INGRESSO SIANO ORDINATE IN MODO CRESCENTE RISPETTO AL LORO TEMPO DI FINE F 1 F 2 F 3 F n LO SPAZIO DI RICERCA PUÒ ESSERE COSÌ DEFINITO. SE 1,,n SONO LE ATTIVITÀ RELATIVE A UNA ISTANZA i, ALLORA LO SPAZIO DI RICERCA È L INSIEME DI TUTTI POSSIBILI SOTTOINSIEMI DI {1,,n}. AD OGNI STADIO L ALGORITMO GOLOSO SCEGLIE L ATTIVITÀ k CHE, TRA QUELLE ANCORA DISPONIBILI, RILASCIA PER PRIMA LA RISORSA CONDIVISA (MINOR TEMPO F ). k UNA VOLTA SCELTA L ATTIVITÀ k, SI AGGIORNA L INSIEME DI ATTIVITÀ DISPONIBILI, ELIMINANDO DALL INSIEME QUELLE INCOMPATIBILI CON k, CIOÈ QUELLE CHE RICHIEDONO L USO DELLA RISORSA NEL TEMPO CHE INTERCORRE TRA I E F k k Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 12

GREEDY (I e F: VETTORE; n: INTEGER) Variabile A: INSIEME /*CONTIENE LE ATTIVITÀ*/ CREAINSIEME (A) INSERISCI (1,A) j 1 for k=2 to n do if Ik Fj then INSERISCI (k,a) j k Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 13

k Ik Fk 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 2 13 11 12 14 Le attività in rosso sono nell insieme A Ogni riga è una 4142 iterazione FOR 4141 4143 4141 4144 4141 4145 4141 4144 4146 4141 4144 4147 4141 4144 4141 4144 4141 4144 4148 4148 4149 tempo 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 411010 Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro

ESEMPIO: IL PROBLEMA DEL PERCORSO PIÙ BREVE IN UN GRAFO (RISOLTO CON UN ALGORITMO GENERATIVO) SIA G=(N,A) UN GRAFO ORIENTATO ETICHETTATO NEGLI ARCHI CON VALORI INTERI POSITIVI. TROVARE LA LUNGHEZZA DEL PERCORSO PIÙ BREVE CHE, DATO UN NODO r N, NODO u N, CONNETTA r AD u. ESEMPIO: SE I NODI SONO CITTÀ E GLI ARCHI RAPPRESENTANO LE STRADE CHE LE COLLEGANO, TROVARE IL PERCORSO PIÙ BREVE TRA TUTTI QUELLI CHE CONNETTONO LA CITTÀ A ALLA CITTÀ B. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 15

IL METODO SI BASA SULL IDEA DI CALCOLARE, IN ORDINE CRESCENTE, LA LUNGHEZZA DEI CAMMINI MINIMI DA r A TUTTI I NODI DEL GRAFO. INDICHIAMO CON S L INSIEME DEI NODI DI CUI, AD UN DATO ISTANTE, SI È GIÀ CALCOLATO LA LUNGHEZZA DEL CAMMINO MINIMO DA r. UTILIZZIAMO UN VETTORE DIST CON TANTE COMPONENTI QUANTI SONO I NODI DEL GRAFO, IN MODO CHE DIST(i) RAPPRESENTI LA LUNGHEZZA DEL CAMMINO MINIMO TRA QUELLI CHE VANNO DA r A i PASSANDO SOLO PER NODI CONTENUTI IN S (A PARTE i STESSO). L IPOTESI DI FONDO E CHE LE DISTANZE SIANO INTERI POSITIVI. OSSERVIAMO CHE SE IL PROSSIMO CAMMINO MINIMO DA GENERARE C È DA r AL NODO u, TUTTI I NODI SONO IN S. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 16

INFATTI SE UN NODO k DI C NON APPARTENESSE A S VI SAREBBE UN CAMMINO DA r A UN NODO k NON CONTENUTO IN S DI LUNGHEZZA MINORE A QUELLA DI C, CONTRADDICENDO L IPOTESI CHE IL PROSSIMO CAMMINO DA GENERARE SIA C. LA LUNGHEZZA DI C E IL NODO u SONO FACILMENTE INDIVIDUABILI; BASTA CALCOLARE IL VALORE MINIMO DI DIST(i) PER i S. i INDIVIDUATO u SI INSERISCE IN S E SI AGGIORNA DIST PER I NODI CHE S. IN PARTICOLARE, SE PER UN CERTO NODO z CONNESSO A u DA <u,z> CON ETICHETTA E, LA SOMMA DIST(u)+E È MINORE DI DIST(z) ALLORA A DIST(z) VA ASSEGNATO IL NUOVO VALORE DIST(u)+E. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 17

VIENE GENERATO UN ALBERO DI COPERTURA T, T RADICATO IN r, CHE INCLUDE UN CAMMINO DA r AD OGNI ALTRO NODO. L ALBERO RADICATO T PUÒ ESSERE RAPPRESENTATO CON UN VETTORE DI PADRI, INIZIALIZZATO AD UN ALBERO FITTIZIO IN CUI TUTTI I NODI SONO FIGLI DI r CONNESSI AD UN ARCO FITTIZIO ETICHETTATO CON UN VALORE MAGGIORE DI TUTTE LE ALTRE ETICHETTE (MAXINT). UNA SOLUZIONE AMMISSIBILE T È OTTIMA SE E SOLO SE DIST(i) + C ij =DIST(j) (i,j) T E DIST(i) + C ij DIST(j) ARCO(i,j) A (CONDIZIONE DI BELLMAN) NOTA: UN ALTRO ALGORITMO (BELLMAN-FORD) RISOLVE IL PROBLEMA DEI CAMMINI MINIMI NEL CASO PIU GENERALE IN CUI I PESI DEGLI ARCHI POSSONO ESSERE NEGATIVI Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 18

CAMMINIMINIMI (G: GRAFO per riferimento; r:nodo) CREAINSIEME(S) T(r) 0, DIST(r) 0 for k 1 to n do if k r then T(k) r DIST(k) MAXINT INSERISCI(r,S) while not INSIEMEVUOTO(S) do i LEGGI(S) CANCELLA(i,S) for j A(i) do /*A(i) È L INSIEME DI ADIACENZA*/ if DIST(i) + Cij < DIST(j) then T(j) i DIST(j) DIST(i) + Cij if not APPARTIENE(j,S) then INSERISCI (j,s) Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 19

1 2 3 3 3 2 4 2 6 1 3 maxint 4 maxint 6 maxint 1 2 5 1 5 2 maxint 5 maxint 2 3 4 4 1 6 6 2 5 1 2 Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 20

ALGORITMO DI DIJKSTRA SE LA STRUTTURA S E UNA CODA CON PRIORITA, RAPPRESENTATA MEDIANTE UNA LISTA NON ORDINATA, SI OTTIENE UN ALGORITMO NOTO DAL 1959 E ATTRIBUITO A DIJKSTRA. IN QUESTO CASO LE OPERAZIONI LEGGI E CANCELLA SONO GLI OPERATORI BASICI DISPONIBILI NELL ALGEBRA DELLA CODA CON PRIORITA : MIN: ( PRIORICODA ) TIPOELEM CANCELLAMIN: ( PRIORICODA ) PRIORICODA GLI ELEMENTI DELLA CODA CON PRIORITA SONO I NODI DEL GRAFO E LE PRIORITA ASSOCIATE ALTRO NON SONO CHE LE DISTANZE DAL NODO ORIGINE r. AD OGNI ITERAZIONE E ESTRATTO DA S IL NODO AVENTE PRIORITA (DISTANZA) MINIMA. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 21

UN ALTRO PROBLEMA: PROBLEMA DEL MINIMO ALBERO DI COPERTURA DATO UN GRAFO NON ORIENTATO E CONNESSO G=(N,A), CON PESI SUGLI ARCHI (NON( NEGATIVI), TROVARE UN ALBERO DI COPERTURA PER G, CIOÈ UN ALBERO AVENTE TUTTI I NODI IN N, MA SOLO ALCUNI ARCHI IN A, IN MODO TALE CHE SIA MINIMA LA SOMMA DEI PESI ASSOCIATI AGLI ARCHI. 3 8 6 1 5 7 4 1 4 7 3 2 2 8 5 9 5 6 Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 22

IL PROBLEMA PUÒ ESSERE RISOLTO CON MOLTI ALGORITMI, DEI QUALI I PIU NOTI SI DEVONO A KRUSKAL (1956) E A PRIM (1957). L ALGORITMO DI KRUSKAL USA LA TECNICA GREEDY. L ALBERO DI COPERTURA MINIMO PER IL GRAFO PRECEDENTE E 3 6 5 1 3 1 4 7 2 2 8 5 5 Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 23

L ALGORITMO DI KRUSKAL, DOPO AVER ORDINATO GLI ARCHI SECONDO I PESI CRESCENTI, LI ESAMINA IN TALE ORDINE, INSERENDOLI NELLA SOLUZIONE SE NON FORMANO CICLI CON ALTRI ARCHI GIÀ SCELTI. AD UN LIVELLO MOLTO GENERALE, L ALGORITMO E ESPRIMIBILE IN QUESTI TERMINI: KRUSKAL(GRAFO) T Λ ORDINA GLI ARCHI DI G PER PESO CRESCENTE for a 1 to m do if (L ARCO a=(i,j) NON FORMA CICLO CON ALTRI ARCHI DI T) then T T (a) Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 24

POSSIAMO RAPPRESENTARE IL GRAFO G COME PREFERIAMO. NELLA REALIZZAZIONE DATA DI SEGUITO IL GRAFO E REALIZZATO CON UN VETTORE DI ARCHI E L ALBERO T CON UNA LISTA DI ARCHI (REALIZZATA CON PUNTATORI). Definizione dei tipi: ARCO: tipo strutturato con componenti - i,j:integer - PESO: INTEGER GRAFO: tipo strutturato con componenti - A: ARRAY di MAXLUNG elementi di tipo ARCO - n,m:integer Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 25

a 8 4 11 b h 7 8 c 2 7 d i 4 14 6 1 g 2 f 9 10 e ECCO L ORDINE IN CUI L ALGORITMO CONSIDERA GLI ARCHI. 4 b 8 2 c 7 d 9 a 8 11 h 7 i 1 6 g 4 2 f 14 10 e Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 26

Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 27 b c i h d a g f e 8 2 7 11 4 8 1 6 4 7 9 10 2 14 UNA VOLTA CHE SI CONSIDERA L ARCO SE QUESTO UNISCE DUE ALBERI DISTINTI NELLA FORESTA, L ARCO VIENE AGGIUNTO ALLA FORESTA E I DUE ALBERI FUSI IN UNO. h b a i c g f d e

NELL ALGORITMO DI KRUSKAL LA COSTRUZIONE DI T AVVIENE PER UNIONE DI COMPONENTI CONNESSE RAPPRESENTABILI COME INSIEMI DISGIUNTI (DUE COMPONENTI CONNESSE SI FONDONO IN UNA CON L AGGIUNTA DI UN NUOVO ARCO) COME E NOTO, LA STRUTTURA MFSET (MERGE-FIND SET) È UNA PARTIZIONE DI UN INSIEME IN SOTTOINSIEMI DISGIUNTI DETTI COMPONENTI. DUNQUE E POSSIBILE UTILIZZARE UNA STRUTTURA DATI DI TIPO MFSET PER COSTRUIRE T. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 28

KRUSKAL(G: GRAFO per riferimento) Variabili: h: INTEGER; T: LISTA; S: MFSET; {PARTIZIONE DI UN INSIEME IN SOTTOINSIEMI DISGIUNTI(COMPONENTI)} CREALISTA(T) ORDINA G.A(1),,G.A(G.m) PER ORDINE CRESCENTE DI G.A(h).PESO CREAMFSET(G.n,S) for h 1 to G.m do BEGIN if not TROVA (A(h).i,A(h).j,S) then FONDI (A(h).i,A(h).j,S) INSLISTA (PRIMOLISTA(T),A(h),T) Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 29

LA TECNICA DIVIDE-ET-IMPERA DERIVA DALL IDEA DI DETERMINARE LA STRATEGIA DI UN PROBLEMA FACENDO RICORSO AL PRINCIPIO DI DECOMPOSIZIONE INDUTTIVA. È NECESSARIO DISPORRE DI: UNA RELAZIONE DI ORDINAMENTO SULLE ISTANZE DEL PROBLEMA, BASATA SULLA DIMENSIONE DELL INPUT; UN METODO DI RISOLUZIONE DIRETTO PER TUTTE LE ISTANZE DEL PROBLEMA CHE NON SUPERANO UNA PREFISSATA DIMENSIONE LIMITE; UN MECCANISMO PER SUDDIVIDERE I DATI DI INGRESSO RELATIVI AD UNA ISTANZA IN DIVERSE PARTI, CIASCUNA DI DIMENSIONE MINORE DI QUELLA ORIGINARIA E RAPPRESENTANTE L INPUT DI UNA NUOVA ISTANZA DELLO STESSO PROBLEMA; UN MECCANISMO PER COMPORRE LE SOLUZIONI PER LE ISTANZE INDIVIDUATE DALLA SUDDIVISIONE, PER OTTENERE LA SOLUZIONE PER L ISTANZA ORIGINARIA. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 30

ALGORITMO DIVIDE-ET-IMPERA 1. SE L INPUT HA DIMENSIONE INFERIORE A UN CERTO VALORE k ALLORA UTILIZZA UN METODO DIRETTO PER OTTENERE IL RISULTATO 2. ALTRIMENTI, DIVIDI L INPUT IN PARTI, CIASCUNA DI DIMENSIONE INFERIORE ALL INPUT ORIGINARIO (DIVIDE) 3. ESEGUI RICORSIVAMENTE L ALGORITMO SU CIASCUNO DEGLI INPUT INDIVIDUATI AL PASSO PRECEDENTE 4. COMPONI I RISULTATI OTTENUTI AL PASSO PRECEDENTE OTTENENDO IL RISULTATO PER L ISTANZA ORIGINARIA (IMPERA) LA APPLICAZIONE PIU NOTA DI QUESTA TECNICA SI HA NEGLI ALGORITMI DI ORDINAMENTO (NATURAL-( MERGE-SORT E QUICKSORT) Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 31

ESEMPIO: IL PROBLEMA DEL MINIMO E MASSIMO SIMULTANEI IN ALCUNE APPLICAZIONI SERVE TROVARE IL MINIMO E IL MASSIMO IN UN INSIEME DI n ELEMENTI SIMULTANEAMENTE. PER ESEMPIO, UN PROGRAMMA GRAFICO PUÒ AVER BISOGNO DI RAPPRESENTARE IN SCALA UN INSIEME DI DATI (x,y): IN QUESTO CASO VA DETERMINATO IL MINIMO E IL MASSIMO DI OGNI COORDINATA. CERCANDO IL MINIMO E IL MASSIMO IN MODO INDIPENDENTE CI VORRÀ UN TOTALE DI 2(n 1) CONFRONTI. MANTENENDO GLI ELEMENTI MINIMO E MASSIMO VIA VIA INCONTRATI E CONFRONTANDO I DUE ELEMENTI DELLA COPPIA IN INPUT SONO SUFFICIENTI 3(n/2) CONFRONTI. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 32

L ALGORITMO DEL MASSIMO E MINIMO SIMULTANEO: 1. SE LA DIMENSIONE DEL VETTORE NON SUPERA 2, ALLORA CALCOLA DIRETTAMENTE, MEDIANTE UN UNICO CONFRONTO, IL MINIMO E IL MASSIMO 2. ALTRIMENTI, DIVIDI IL VETTORE IN DUE SOTTOVETTORI DELLA STESSA DIMENSIONE, CALCOLA RICORSIVAMENTE IL MINIMO MIN1 E IL MASSIMO MAX1 DEL PRIMO SOTTOVETTORE E IL MINIMO MIN2 E MAX2 DEL SECONDO SOTTOVETTORE 3. DETERMINA IL MINIMO E IL MASSIMO DEL VETTORE COMPLESSIVO CONFRONTANDO MIN1 CON MIN2 E MAX1 CON MAX2 Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 33

LA TECNICA DIVIDE-ET-IMPERA È UNA TECNICA GENERATIVA CHE FA USO DELLA DECOMPOSIZIONE INDUTTIVA PER DETERMINARE IL METODO SOLUTIVO. L EFFICACIA DELLA TECNICA SI MANIFESTA ATTRAVERSO DUE ASPETTI: CONSENTE DI PROGETTARE ALGORITMI SEMPLICI E INTUITIVI ATTRAVERSO L INDUZIONE. SPESSO QUESTI ALGORITMI HANNO PRESTAZIONI MIGLIORI RISPETTO AD ALTRI (TIPICAMENTE A QUELLI DEL PARADIGMA SELETTIVO). L EFFICIENZA DEGLI ALGORITMI DIPENDE DAL NUMERO a DI SOTTOPROBLEMI GENERATI, DALLA DIMENSIONE b DEI DATI IN INGRESSO AI SOTTOPROBLEMI E DAL COSTO f(n) NECESSARIO PER LA SCOMPOSIZIONE DEL PROBLEMA E LA COMPOSIZIONE DEI RISULTATI. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 34