Università degli Studi della Calabria FACOLTÀ DI INGEGNERIA

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi della Calabria FACOLTÀ DI INGEGNERIA"

Transcript

1 Università degli Studi della Calabria FACOLTÀ DI INGEGNERIA Corso di Diploma in Ingegneria Informatica TESI DI DIPLOMA UNA IMPLEMENTAZIONE DISTRIBUITA DELLA PROGRAMMAZIONE GENETICA IN AMBIENTE PEER-TO-PEER RELATORI Prof. Giandomenico Spezzano CANDIDATI Castelfranco Antonino Toscano Cosma Christian ANNO ACCADEMICO 2002/2003

2 Introduzione L esigenza sempre più crescente di potenza di calcolo ha portato alla realizzazione di reti informatiche, per risolvere il problema di risorse limitate, che vengono fornite da macchine parallele, comunque sempre più prestanti ed economiche. Negli ultimi anni si sono fatte strada, il grid computing e l architettura peer-to-peer, che inizialmente si sono evolute in maniera indipendente e che adesso sembrano trovare un naturale punto di convergenza: la condivisione delle risorse di calcolo. Da qui nasce l esigenza di parallelizzare o distribuire il calcolo, creando applicazioni che abbiano tali caratteristiche. Un paradigma che ha in se il concetto di parallelismo è rappresentato dagli algoritmi evolutivi e, nel caso che andremo esaminare, la programmazione genetica. Il nostro obiettivo è quello di realizzare un implementazione distribuita della programmazione genetica in ambiente peer-to-peer, ispirandoci a CAGE che ne è un implementazione parallela.

3 Dopo aver descritto la programmazione genetica e messo in evidenza le sue caratteristiche nel capitolo 1, descriveremo la filosofia peer-to-peer cercando una diretta correlazione con essa (capitolo 2). Nel terzo capitolo analizzeremo la piattaforma JXTA che fornisce gli strumenti per sviluppare applicazioni peer-to-peer e vedremo i dettagli implementativi del nostro prototipo, nel quarto e nel quinto capitolo.

4 Capitolo 1 Programmazione genetica 1.1 L Intelligenza Artificiale "L intelligenza artificiale è la capacita di un computer o di un dispositivo controllato da computer di eseguire compiti comunemente associati con i più elevati processi intellettuali, caratteristici dell uomo, quali l abilità di ragionare, scoprire significati, generalizzare o imparare dalla passata esperienza."

5 L'intelligenza artificiale, inoltre, si occupa, fra l'altro, di risolvere problemi utilizzando algoritmi che imitano o si ispirano all'intelligenza umana. L'utilizzo di metodologie di AI(Artificial Intelligence) consente di affrontare problemi non facilmente risolvibili con le tecniche tradizionali. 1.2 Gli algoritmi evolutivi Gli algoritmi evolutivi sono strategie euristiche, che si ispirano all'evoluzione naturale teorizzata da Darwin nel suo libro sull'evoluzione della specie, per risolvere problemi, trattati dall Intelligenza Artificiale, che ricercano un minimo o un massimo globale in un dominio limitato. Definizione 1.2.1: consideriamo un elemento x D, dove e D è un particolare dominio, spesso chiamato spazio di ricerca. Se consideriamo D come uno spazio cartesiano, allora la cardinalità di D sarà uguale a n e x sarà un vettore. Data una funzione f : DR detta funzione obiettivo, allora la ricerca dell'ottimo globale corrisponde a trovare un x* che massimizza tale funzione, cioè: x * D e x D :f(x) f(x*). La ricerca diventa molto difficoltosa, se la funzione presenta più punti di massimo locale, vincoli sul dominio D, non linearità, ecc. L utilizzo degli algoritmi evolutivi permette di ottimizzare i tempi di ricerca, che altrimenti non sarebbero accettabili se si risolvessero i problemi attraverso l uso di tecniche esatte, malgrado essi risolvano il problema con un certo grado d'incertezza, oppure non assicurino la convergenza della ricerca alla soluzione se non in casi particolari. Essi sono classificati fra i metodi di ricerca "deboli", chiamati così perchè riescono a risolvere una grande varietà di

6 problemi utilizzando poche informazioni sul domino particolare, in contrapposizione a quelli "forti" che sfruttano la maggior parte delle conoscenze del dominio applicativo. I metodi di ricerca "deboli" sono stati spesso ispirati dall'imitazione di metodi di risoluzione utilizzati dall'uomo o da analogie con il mondo naturale. Fra i più conosciuti si ricordano hill-climbing, depth-first e breadth-first-search. Angeline, ha introdotto una nuova tipologia di metodi di ricerca, i metodi deboli evolutivi, che meglio permette di classificare questo tipo di algoritmi. Essi sono, infatti, metodi che inizialmente hanno poca conoscenza del dominio, ma durante la loro evoluzione acquistano più consapevolezza del problema, diventando in tal modo metodi forti. Si parla in questo caso di "intelligenza emergente", cioè si ha una comprensione del dominio che emerge durante 1'evoluzione stessa, per cui si riescono a risolvere in modo efficace anche problemi con domini particolari. Come nella teoria dell evoluzione naturale concepita da Darwin, nel suo libro On the Origin of Species by Means of Natural Selection del 1859 sull evoluzione della specie, gli algoritmi evolutivi orientano la ricerca verso gli elementi piu "adatti", che hanno maggiore possibilità di sopravvivere e di trasmettere le loro caratteristiche ai successori: in pratica, si ha una popolazione di individui che evolvono di generazione in generazione attraverso meccanismi simili alla riproduzione sessuale e alla mutazione dei geni. Gli algoritmi evolutivi sono tecniche che vengono definite euristiche, perché conducono ad una ricerca che privilegia le zone del dominio della funzione obiettivo, dove maggiormente è possibile trovare soluzioni migliori, non trascurando altre zone a più bassa probabilità di successo in cui saranno impiegate un minor numero di risorse. Gli algoritmi evolutivi si possono classificare in algoritmi genetici e programmazione genetica: entrambi hanno avuto un importante diffusione nella comunità scientifica, nelle strategie evolutive e nella programmazione evolutiva.

7 1.3 Gli algoritmi genetici Nel 1975 John Holland propone la pionieristica formulazione matematica degli Algoritmi Genetici, nel seguito indicati come AG: si tratta di un semplice modello computazionale dell evoluzione naturale e del meccanismo dell ereditarietà basato su una popolazione di stringhe binarie che, in analogia con il DNA biologico, codificano convenientemente la struttura e le caratteristiche di una possibile soluzione per il problema considerato. Si utilizzano per semplicità sequenze di bit di lunghezza prestabilita e su queste si definiscono le operazioni genetiche di mutazione (riproduzione asessuale) e ricombinazione o crossover (riproduzione sessuale). In termini biologici, ogni stringa rappresenta un genotipo, cioè la formula basilare per la costruzione dell organismo manipolata dai processi genetici: il genotipo è quindi decodificato per formare il fenotipo dell individuo, corrispondente alla possibile soluzione che viene valutata per determinarne la distanza dall ottimo cercato, cioè il suo grado di adattamento all ambiente indicato solitamente con il termine fitness. Considerato un generico problema da risolvere, un AG è costituito da cinque componenti basilari: una codifica delle possibili soluzioni, la popolazione, tale da essere facilmente manipolabile dagli operatori genetici: il metodo classico è l uso di una stringa binaria di lunghezza fissata M; una funzione di adattamento o fitness, in grado di assegnare ad ogni possibile elemento dello spazio di ricerca un valore numerico corrispondente alla distanza dalla soluzione desiderata;

8 un insieme di operatori genetici che forniscano un modo per generare stocasticamente i nuovi individui, a partire da uno o più genitori selezionati nella popolazione esistente: si utilizzano in genere le sole operazioni di mutazione e crossover; un insieme di parametri di sistema che caratterizzano il comportamento dell algoritmo durante l esecuzione: ad esempio la dimensione della popolazione, o le percentuali di utilizzo degli operatori genetici durante la fase di riproduzione; un criterio di terminazione, che stabilisce quando l'algoritmo si può fermare. Figura 1.3.1: Uno schema classico di algoritmo genetico

9 In figura 1.3 è rappresentato un semplice schema di funzionamento di un algoritmo genetico: 1. si crea in maniera casuale una popolazione di individui, dove ogni individuo è rappresentato da una stringa di lunghezza prefissata, tipicamente binaria; 2. si valuta la fitness; 3. si verifica se è soddisfatto il criterio di terminazione e in caso contrario si passa alla nuova generazione. Figura 1.3.2: pseudo codice per i passi fondamentali di un AG La nuova popolazione sarà costruita, applicando alla vecchia i principali operatori genetici:

10 il crossover che, dati due elementi selezionati nella popolazione, detti "genitori", genera due "figli", cioè due individui con caratteristiche ereditate da entrambi i parenti; la mutazione che altera un singolo "gene" (bit) di un individuo; la riproduzione che copia un individuo nella nuova popolazione. Questi operatori che, insieme al numero di generazioni massime e alla dimensione della popolazione, costituiscono i parametri fondamentali dell'algoritmo, sono applicati con diverse probabilità fino a che la nuova popolazione non ha raggiunto la dimensione desiderata La popolazione Un elemento molto importante degli algoritmi genetici è la popolazione, che è costituita da un numero prefissato di individui ed è generata in modo casuale all'inizio dell'algoritmo. Esistono diverse varianti di algoritmo genetico, le cui caratteristiche dipendono dalla gestione della popolazione: si parla di popolazione generazionale se 1'intera popolazione è sostituita interamente dai nuovi elementi; in caso contrario si ha 1'algoritmo genetico steady-state (a stato fissato); si ha un modello elitarista se 1'elemento o gli elementi migliori sono conservati durante 1'evoluzione della popolazione.

11 si ha un modello a isole, invece, se si hanno una serie di popolazioni che evolvono in maniera autonoma, con occasionali migrazioni di individui da una "isola" all'altra. Ogni individuo della popolazione è rappresentato, in genere, da una stringa di lunghezza prefissata di bit. Nel caso più diretto, tali stringhe rappresentano la concatenazione delle rappresentazioni binarie dei parametri numerici di una funzione da minimizzare o di una funzione che codifica la soluzione ad un problema in termini numerici. La scelta di utilizzare prevalentemente un alfabeto binario è dovuto ad alcuni importanti risultati teorici, quali il teorema degli schemi di Holland, che indica questa come una rappresentazione molto vicina all'ottimo. Recenti studi indicano, però, in questa scelta alcuni svantaggi, quali aggiungere multimodalità e complessità alla funzione obiettivo, il che rende il problema più difficile da affrontare. In generale, data l'universalità della rappresentazione binaria, il genoma può comunque rappresentare virtualmente qualunque tipo di informazione (segnali, immagini, forme, relazioni di tipo strutturale o topologico, ecc.). Per impostare un esperimento con un algoritmo genetico è quindi necessario definire in modo esatto la struttura del genoma, stabilendone quindi la lunghezza ed il significato dei singoli bit Gli operatori genetici Negli algoritmi genetici si utilizzano principalmente tre operatori: la riproduzione, 1a mutazione e il crossover. I primi due metodi si applicano ad un solo individuo, mentre il crossover ha bisogno di due individui. Prima di applicare uno di questi operatori è necessario selezionare uno o due individui della popolazione, a seconda del caso.

12 I più popolari metodi di selezione sono: il fitness proporzionate, che assegna ad ogni elemento della popolazione una probabilità di essere scelto, proporzionata al valore della sua fitness; il K-tournament, che sceglie K elementi a caso nella popolazione, indice un torneo fra questi individui e quello che risulta vincente sarà quello selezionato. Ovviamente, con entrambi i metodi, gli individui con fitness migliore hanno maggiori probabilità di essere selezionati e, quindi, di trasmettere i propri geni alla generazione successiva, rispettando i meccanismi evolutivi di sopravvivenza dei più adatti Figura 1.3.3: Due semplici operatori genetici La riproduzione ricopia semplicemente 1'individuo nella nuova popolazione, lasciando intatto tutto il suo patrimonio genetico. La mutazione inverte un bit, scelto casualmente con una distribuzione uniforme, del genotipo dell'individuo e inserisce in tal modo diversità nella popolazione, portando la ricerca verso nuovi spazi o recuperando alleli che erano andati perduti in precedenza.

13 Il crossover combina i patrimoni genetici dei due genitori in modo da costruire due "figli", che possiedono parte dei geni di uno e parte dell'altro. Esistono diverse tipologie di crossover: il crossover ad un punto, in cui le stringhe che codificano i due genitori vengono "tagliate" in uno stesso punto. Si opera poi uno scambio della parte destra (o sinistra) delle stringhe (figura 1.3.3), per ottenere due figli in cui il genotipo del primo è costituito dalla concatenazione della parte destra del genotipo del primo genitore con la parte sinistra (destra) di quello del secondo, mentre il genotipo del secondo figlio è costituito dalla concatenazione della parte destra (sinistra) del genotipo del secondo genitore con la parte sinistra (destra) di quello del primo; nel crossover a due punti, la stringa è considerata "circolare" (l'ultimo bit si immagina concatenato al primo) (figura 1.3.4) e quindi il genotipo, "tagliato" in due punti, viene suddiviso in due parti che, nella rappresentazione lineare della stringa, corrispondono alla sottostringa interna ai due tagli e alle due sottostringhe esterne ad essi che, tuttavia, come detto, si immaginano concatenate fra loro in una unica stringa. Lo scambio avviene quindi in modo del tutto analogo al crossover singolo punto; Figura 1.3.4: Crossover a due punti

14 il crossover uniforme, invece, prevede che, per ogni posizione all'interno della stringa (figura 1.3.5), i bit corrispondenti dei due genitori vengano assegnati uno ad un figlio e l'altro all'altro figlio in modo casuale. Figura 1.3.5: Crossover uniforme Il crossover è la forza trainante dell'algoritmo genetico ed è 1'operatore che maggiormente influenza la convergenza, anche se un suo utilizzo troppo spregiudicato potrebbe portare ad una convergenza prematura della ricerca su qualche massimo locale. I parametri che regolano la minore o maggiore influenza di un operatore su un altro sono identificati come la probabilità di crossover, di mutazione e di riproduzione; la cui somma deve essere uguale ad uno; bisogna comunque aggiungere che esistono varianti di algoritmi genetici, che realizzano in ogni caso la mutazione anche dopo il crossover, per mantenere maggiore diversità nella popolazione. In realtà, la scelta dei parametri e del tipo particolare di operatore usato dipendono fortemente dal dominio del problema, perciò non è possibile, a priori, stabilire le specifiche di un algoritmo genetico. Addirittura sono stati sviluppati con buon successo algoritmi ibridi the sostituiscono la mutazione con un algoritmo fortemente dipendente dal dominio Alcuni cenni teorici

15 Esiste pochissima teoria sul funzionamento effettivo degli algoritmi genetici; in particolare, Holland ha tentato di spiegare la distribuzione delle risorse nello spazio di ricerca con il suo famoso teorema degli schemi. Tale teorema è la prima rigorosa spiegazione del perché gli algoritmi genetici funzionino. Uno schema è un modello di valori del gene che possono essere rappresentati, nella codifica binaria, da una stringa di caratteri dell'alfabeto {0,1,*}. Un cromosoma contiene gli schemi ottenuti sostituendo col simbolo "*" uno o più dei suoi bit. Per esempio, il cromosoma"1010", contiene tra gli altri gli schemi 10**, *0*0, **10 e **1*. L'ordine di uno schema è il numero di simboli diversi da "*" che contiene e la lunghezza definita è la distanza tra i simboli diversi da "*" più esterni (nell'esempio 2,3,1,3, rispettivamente). Il teorema degli schemi spiega la potenza di un GA in termini di quanti schemi sono processati. Agli individui della popolazione viene data la possibilità di riprodursi, spesso chiamata prove di riproduzione (reproduce trials), e producono figli. Il numero di opportunità che ogni individuo riceve è in proporzione al suo fitness (selezione di tipo fitnessproportionate), quindi i migliori individui contribuiscono maggiormente ai geni della generazione successiva. Si presuppone che un alto valore di fitness sia dovuto al fatto che l'individuo possiede buoni schemi. Passando i migliori schemi alla generazione successiva, aumenta la probabilità di trovare soluzioni migliori. Holland ha dimostrato che la cosa migliore è assegnare prove di riproduzione in numero sempre maggiore agli individui che hanno il fitness più elevato rispetto al resto della popolazione, in modo che gli schemi buoni abbiano un numero di prove crescente in modo esponenziale nelle generazioni successive (teorema degli schemi). Ha mostrato inoltre che poichè ogni individuo contiene un gran numero di schemi diversi, il numero degli schemi che devono essere effettivamente processati è dell'ordine di n 3, dove n è il numero di individui. Questa proprietà è detta parallelismo implicito ed è una delle motivazioni del buon funzionamento dei GA.

16 Il crossover e la mutazione alterano gli schemi definiti e possono introdurne di nuovi. Ricapitolando, il teorema degli schemi dimostra che, utilizzando una selezione di tipo fitness-proportionate, la distribuzione degli schemi di ricerca, cioè l'aumento o la diminuzione di un particolare schema, avviene in modo molto vicino all'ottimo matematico ed è indipendente dal problema. Numerose critiche sono state mosse a questo teorema, alcune delle quali sulla reale applicabilità in casi pratici; sono stati sviluppati, infatti, GA (Genetic Algorithm) che non soddisfano le condizioni del teorema, ma ottengono risultati simili all'algoritmo classico. Altre critiche sono state mosse sugli aspetti teorici, in particolare si è notato che il teorema degli schemi non esplica le correlazioni esistenti fra i padri e i figli. Il teorema di Price spiega meglio queste relazioni ed asserisce che il funzionamento e 1'efficienza di un GA dipende maggiormente dalle correlazioni fra genitore a figlio che non dagli schemi stessi. 1.4 Le strategie e la programmazione evolutiva Le strategie evolutive sono state sviluppate all'università di Berlino da Rechenberg, Bienert, Schwefel, Bäck, Hoffmeister. Diversamente dagli algoritmi genetici, la popolazione è costituita da vettori di numeri reali di lunghezza prefissata e la popolazione iniziale è generata in modo casuale in un certo intervallo e utilizzando una distribuzione uniforme. Una nuova popolazione è costituita dai migliori M individui di quella precedente e i rimanenti sono scelti applicando dei particolari operatori. I principali sono: la ricombinazione discreta, che genera i figli con distribuzione uniforme rispetto ai genitori;

17 la ricombinazione intermedia, che fa la media dei valori dei due genitori; la ricombinazione intermedia casuale, che determina in modo casuale i pesi da attribuire ai genitori; la mutazione che aggiunge un valore casuale, preso da una distribuzione gaussiana con varianza scelta dal programmatore in modo appropriato a ogni elemento del vettore. Il principale vantaggio derivante dall'usare queste strategie è che elementi della popolazione con piccole diversità, dovrebbero presentare poca differenza nei comportamenti. Questo è vero, ma non sempre si riescono a generare figli con caratteristiche sufficientemente simili a quelle dei genitori. La programmazione evolutiva è stata introdotta da Fogel, Owens e Walsh. Ogni individuo della popolazione costituisce una FSM (macchina a stati finiti), ed è formato da una serie di stati interni facenti parte di un alfabeto finito. La caratteristica principale di una FSM è che riceve in input una serie di simboli e restituisce in output una serie di stati, basandosi solo sugli stati correnti e 1'input. Ebbene, 1'obiettivo della programmazione evolutiva è predire la prossima configurazione del sistema. L'operatore usato è quello di mutazione, che altera lo stato iniziale, modifica la transizione o cambia uno stato interno. La caratteristica fondamentale di questo tipo di algoritmi è che i figli hanno un comportamento simile a quello dei genitori.

18 1.5 La programmazione genetica La programmazione genetica (PG) è un estensione degli AG, in cui gli individui che compongono la popolazione sono costituiti non più da strutture, che codificano le caratteristiche delle possibili soluzioni, ma da veri e propri programmi, che una volta eseguiti calcolano tali soluzioni. Diversi tentativi sono stati fatti per adattare gli AG all utilizzo di un linguaggio di programmazione tradizionale, ma è con John Koza che arriviamo ad un paradigma applicato con successo ad una grande varietà di problemi: l algoritmo da lui definito è quello che chiameremo canonico, per distinguerlo dalle numerose varianti che sono state proposte successivamente. I programmi utilizzati possono variare dinamicamente la loro struttura e vengono rappresentati tramite alberi di derivazione o di parsing (Figura 1.5.1), che esplicitano l ordine di valutazione delle primitive del linguaggio implementato. Eseguire il programma significa quindi partire dall operatore presente nella radice e valutare gli argomenti che questo utilizza, cioè i nodi figli, i quali a loro volta richiederanno il calcolo dei propri argomenti, e così via, in un processo ricorsivo che provoca una visita anticipata dell albero. L uso della sintassi del linguaggio LISP (Figura 1.5.1), dovuta all implementazione originaria di Koza, pur non essendo necessaria, risulta però conveniente, sia per rappresentare gli alberi in modo lineare attraverso la notazione prefissa e le parentesi, sia per il requisito fondamentale di chiusura delle funzioni:

19 Figura 1.5.1: Notazione prefissa in stile LISP ed albero di derivazione tutte le primitive del linguaggio definito devono restituire un valore del medesimo tipo, in modo che, generando combinazioni casuali di codice, sia sempre garantita la correttezza sintattica del programma. Stabilito che ad ogni nodo deve sempre corrispondere un numero di figli pari a quello dei parametri usati dall operatore corrispondente, il requisito di chiusura implica che si possono utilizzare come argomenti i valori restituiti da qualsiasi altra primitiva, consentendo quindi l inserimento di sottoalberi in un punto qualunque del programma senza alcuna verifica di correttezza. Lo spazio di ricerca dell algoritmo è quindi dato dai soli alberi di derivazione col corretto numero di figli per nodo, ed ha una dimensione finita poiché si impone a questi una profondità massima prestabilita dai parametri di sistema: in questo modo si evita la crescita illimitata della lunghezza dei programmi, e quindi anche della rispettiva complessità, per evitare ovvi problemi computazionali. La popolazione dei programmi evolve utilizzando una funzione di fitness, che definisce la bontà di un programma, e gli operatori genetici di crossover e mutazione adattati alla rappresentazione ad albero I parametri principali

20 La programmazione genetica si presenta strutturalmente più complessa rispetto agli algoritmi genetici, dal momento che ci sono molti più parametri da considerare nella progettazione. Le principali scelte che devono essere valutate sono: la generazione della popolazione iniziale; l'insieme di funzioni e terminali di base; il tipo di selezione; la dimensione della popolazione e il numero massimo di generazioni; il criterio di terminazione. La procedura di creazione della popolazione iniziale richiede ora di generare delle strutture ad albero in modo casuale, con il vincolo di introdurre tanti figli per nodo quanti sono gli argomenti dell operatore del linguaggio a questo associato: vengono quindi introdotti nuovi parametri di sistema che specificano la profondità minima e massima degli alberi nella generazione iniziale ed il metodo utilizzato per la loro costruzione. Esistono principalmente tre metodi di generazione che danno luogo ad alberi di dimensione e forma differenti:

21 utilizzando il metodo full si creano solo alberi perfettamente bilanciati dalla profondità massima prestabilita, cioè tali che ogni ramo dello stesso livello abbia sempre la stessa lunghezza; nel metodo grow si utilizza il solo vincolo delle profondità minima e massima e si generano casualmente alberi anche sbilanciati; infine, si possono combinare queste due procedure in modo da creare metà popolazione col primo metodo e l altra metà con il secondo, facendo in modo che gli alberi risultino anche equidistribuiti rispetto alla profondità, da quella minima a quella massima, garantendo così un alta diversità nella loro struttura (metodo ramped-halfand-half). Usando questa tecnica si riesce a creare una varietà di alberi per forma e dimensione, instaurando un buon grado di diversità nella popolazione. Infatti, sperimentalmente, in un gran numero di casi, con questo metodo di generazione si sono ottenuti i risultati migliori che con gli altri due. Un'operazione aggiuntiva utile per aumentare la diversità nella popolazione è quella di controllare, durante la creazione, se un individuo esiste già e in caso affermativo sostituirlo con uno nuovo. Un programma per computer è costituito da funzioni a cui sono passati argomenti che possono essere altre funzioni o simboli terminali (costanti, variabili, numeri random, ecc..). Nella programmazione genetica la fase iniziale prevede la definizione dell'insieme di base di funzioni e terminali, da cui creare la popolazione iniziale.

22 La scelta di questi insiemi dipende fortemente dal dominio particolare del problema; per esempio se si vuole ricercare un'espressione matematica intera, i simboli di funzione potrebbero essere {+, *, -, \} e i terminali {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Le funzioni scelte devono soddisfare la proprietà di chiusura, già descritto, e inoltre, avere la proprietà di sufficienza, cioè è necessario che le funzioni, unite ai simboli terminali, siano in grado di generare una soluzione del problema. Perciò, la scelta di un insieme di funzioni e terminali, appropriate ad un particolare dominio, risulta essere un punto critico nella riuscita di un algoritmo di programmazione genetica; infatti, non sempre si conosce 1'insieme di funzioni sufficienti alla risoluzione di un problema e, del resto, sceglierne un insieme ridondante può degradare in maniera significativa le prestazioni del sistema. La selezione degli elementi, su cui applicare gli operatori, influenza la convergenza dell'algoritmo; infatti, una maggiore pressione selettiva comporta una più veloce convergenza dell'algoritmo, però può portare ad una perdita della diversità della popolazione e la soluzione ottima potrebbe non essere mai raggiunta. I metodi più usati sono: fitness proportionate selection, in cui la probabilità che ogni individuo sia selezionato è pari alla sua fitness normalizzata; rank selection, in cui gli elementi sono ordinati e scelti in base alla loro fitness relativa e non assoluta; tournament selection, in cui un numero fissato di elementi è estratto in modo casuale dalla popolazione, e quello fra di essi che possiede la fitness migliore viene selezionato.

23 Fra questi metodi, il primo è quello che, generalmente, comporta una minor pressione selettiva. La dimensione della popolazione è un altro dei parametri che influenzano la convergenza dell'algoritmo, insieme al numero massimo di generazioni; infatti un sottodimensionamento potrebbe portare al non raggiungimento dell'ottimo cercato e del resto, al loro aumentare, 1'algoritmo diventa computazionalmente troppo espansivo Mutazione, crossover ed altri operatori Il passaggio da una generazione all'altra avviene attraverso 1'applicazione di definiti operatori unari o binari ad elementi della popolazione selezionati con i metodi descritti nel precedente paragrafo. I suddetti operatori sono applicati in modo esclusivo con una certa probabilità; ovviamente la somma delle probabilità sarà uguale ad uno. 8 9 FIGURA 1.5.2: UN ESEMPIO DI CROSSOVER

24 Nella programmazione genetica la forza trainante dell'algoritmo è costituita dall'operatore di crossover, di gran lunga più usato rispetto agli altri operatori quali mutazione, permutazione, editing, incapsulamento e decimazione. L operazione genetica di crossover (Figura 1.5.2) consiste nello scambio incrociato di interi sottoalberi appartenenti a due programmi: selezionati i genitori, su entrambi si sceglie un nodo con procedura casuale, quindi i relativi sottoalberi vengono scambiati tra loro ottenendo due nuovi individui. È importante notare che se i due genitori sono identici, i figli ottenuti tramite crossover risultano solitamente differenti da questi, grazie al fatto che i nodi per lo scambio dei sottoalberi sono presi in modo casuale su entrambi gli alberi. La scelta del punto di crossover avviene con una preferenza per i nodi con figli stabilita da un parametro di sistema, in modo da evitare il rischio di effettuare troppo spesso semplici scambi di foglie, presumibilmente poco significativi, e favorire modifiche più incisive nella struttura dell albero: lo standard utilizzato prevede una preferenza del 90% sui nodi interni. Un secondo parametro, di importanza molto minore, stabilisce il comportamento del sistema quando gli alberi generati superano il limite di profondità massima stabilito: si può riprovare a scegliere i punti di crossover o ripartire da una nuova selezione, o ancora si possono restituire le copie immutate degli stessi genitori. Di norma è utilizzato quest ultimo comportamento, sia perché non richiede un ulteriore peso computazionale, e sia perché la ripetizione del tentativo non porta in generale a sensibili differenze nelle prestazioni, dal momento che può comunque capitare che il crossover produca delle copie dei genitori, il che avviene quando sono scelti per lo scambio sottoalberi tra loro identici.

25 Figura 1.5.3: Un esempio di mutazione L operatore genetico di mutazione (Figura 1.5.3) consiste nell inserire del nuovo codice nel programma: selezionato il genitore, si sceglie in modo completamente casuale un suo nodo, quindi il relativo sottoalbero viene sostituito da un altro generato sempre con procedura casuale. La mutazione può essere implementata in modo che, nel caso il nuovo albero superi il limite massimo di profondità, venga restituita una copia del genitore oppure sia ripetuta da capo l operazione; un ulteriore parametro specifica la profondità massima del nuovo sottoalbero da inserire, il quale verrà creato con la stessa procedura casuale utilizzata per la generazione iniziale. In generale si può considerare la mutazione come una specializzazione del crossover per cui solitamente non è usata nell algoritmo canonico: a differenza del comportamento osservato per il crossover negli AG, la sua implementazione sugli alberi non è legata alla perdita di diversità, ed in particolare è assai poco probabile che una primitiva sparisca completamente e necessiti di essere reintrodotta tramite mutazione. In realtà, però, la dinamica evolutiva può portare comunque a vistose cadute del tasso di diversità e l uso della

26 mutazione, in una delle tante varianti proposte, è un possibile metodo per attenuare questo processo. La permutazione è attuata scegliendo un nodo interno (una funzione) a caso dell'albero; se la funzione ha k argomenti, è estratta una delle k! permutazioni e gli argomenti sono arrangiati di conseguenza. Ovviamente, se la funzione è commutativa l'operatore non ha nessun effetto. L'editing permette di semplificare un sottoalbero valutando 1'espressione risultante: ad esempio, (OR X X) può essere sostituita con X. L'operazione può essere effettuata durante la fase di run con una certa frequenza (ogni generazione o più raramente) o sul risultato finale. Nel primo caso, il suo utilizzo potrebbe causare una prematura convergenza dato che le espressioni semplificate sono più soggette ad un effetto distruttivo del crossover. Con 1'incapsulamento, un sottoalbero, che parte da un nodo interno di un albero selezionato, è scelto e compilato; quindi tale sottoalbero va a far parte dei terminali e non è soggetto perciò all'effetto distruttivo del crossover. In tal modo sono salvate le funzioni più interessanti. La decimazione seleziona una certa percentuale (ad esempio il 20%) della popolazione in una determinata generazione, in base ai valori della fitness, senza permettere duplicati; il resto della popolazione è cancellata. Questo risulta utile per mantenere la diversità in quei casi dove pochi elementi hanno una fitness molto più elevata degli altri e questi avrebbero il sopravvento in poche generazioni. Come accennato in precedenza, fra i vari operatori, il più usato è senz'altro il crossover che, diversamente dagli algoritmi genetici, basta da solo a garantire il mantenimento della diversità; in genere è usato in congiunzione con la mutazione che ha una probabilità minore; gli altri operatori sono usati solo in casi particolari, nei quali è possibile sfruttare uno dei vantaggi descritti in precedenza.

27 Gli operatori sopracitati garantiscono la correttezza sintattica degli alberi generati, grazie alla proprietà di chiusura, ma non la correttezza semantica. Sarà la fitness, penalizzando gli alberi che non rispettano le regole semantiche, a favorire la crescita di alberi semanticamente corretti L aumento della complessità nella programmazione genetica La complessità di un programma generato cresce con il passare delle generazioni, se non si adottano strategie per limitarla, producendo effetti negativi, in quanto il programma risulta di difficile interpretazione e non generalizza bene, in accordo al principio del rasoio di Occam, che sostiene che le soluzioni più semplici sono da preferire in quanto evitano 1'aggiunta del superfluo e, quindi, sono applicabili ad una casistica più generale. Il fenomeno del bloating è una delle cause dell aumento di complessità dei programmi; esso indica 1'utilizzo di una quantità di simboli in eccesso rispetto a quelli effettivamente necessari a esprimere un concetto,ad esempio: log e + log e + log e al posto della semplice espressione 3 * log e. Fra le cause scatenanti del bloating hanno particolare rilievo i cosiddetti introns, che prendono il nome da quella parte del DNA che non viene trascritta nelle proteine. In GP, gli introns sono definiti come una parte dell'albero del programma che non altera il fenotipo, cioè non è utilizzato nel calcolo della fitness, come ad esempio i1 blocco (X AND X) che non modifica la semantica del risultato. Eliminare questa parte superflua del codice potrebbe sembrare la soluzione migliore per ovviare ai problemi sopracitati, ma ciò potrebbe comportare effetti collaterali negativi. Vari studi ed esperimenti hanno evidenziato un effetto positivo di questo fenomeno, nel preservare soluzioni interessanti dagli effetti distruttivi del crossover. Infatti, se un programma contiene parti non utilizzabili per il calcolo della fitnesss, sarà più probabile che il crossover non alteri la fitness di tale programma. Perciò, 1'eliminazione o

28 meno degli introns deve essere attentamente considerata nel ridurre la complessità del sistema. In genere, per ottenere soluzioni più semplici, si agisce sui parametri del sistema fissando la profondità massima degli alberi o si aggiunge alla fitness una funzione di parsimonia che favorisca gli alberi più corti o, ancora, si modificano gli operatori genetici in modo da ridurre le ridondanze. Limitare la profondità massima può essere difficoltoso se non si conosce la dimensione della soluzione del problema, rischiando così di escluderla perché fuori dal limite accettato. Ancora, aggiungere la funzione di penalizzazione alla fitness (parsimonia) non favorisce lo sviluppo naturale del sistema e può penalizzare la ricerca della soluzione ottima. In definitiva, la scelta di utilizzare alberi più o meno complessi resta un problema aperto, dal momento che la riduzione dell'albero se da una parte genera soluzioni più compatte e generali, dall'altra può portare ad una prematura convergenza e al non raggiungimento della soluzione ottimale, cosa che non può prescindere dal dominio particolare Differenze e analogie fra GP e GA Il genotipo degli algoritmi genetici è, in genere, rappresentato con una stringa di lunghezza prefissata di bit, mentre nella programmazione genetica esso è costituito da un albero formato da funzioni e terminali, di lunghezza variabile, anche se, solitamente, è fissata una profondità massima che ne limita la dimensione. Niente vieterebbe, quindi, di rappresentare un albero di GP, sicuramente limitato in dimensione da una profondità massima o da necessità di implementazione, con una stringa di bit di lunghezza fissata pari a quella massima dell'albero, cioè di utilizzare un algoritmo genetico. Necessità di ordine pratico rendono più facile e naturale usare GP per far evolvere programmi per computer che non GA. Da non sottovalutare il fascino naturale, che far evolvere programmi per computer, invece che innaturali stringhe di bit senza significato, esercita sull'uomo e rende più spontaneo la scelta della programmazione genetica.

29 L'operatore prevalente è, in entrambi i casi, quello di crossover, ma mentre in GP esso è sufficiente da solo a mantenere la diversità nella popolazione, in GA è la mutazione che si sobbarca questo compito, in modo da evitare una prematura convergenza, con 1'introduzione di nuovi elementi per la ricerca o il recupero di elementi precedentemente persi. Nella programmazione genetica, il crossover fra più alberi può introdurre una nuova semantica negli alberi generati, spostando la ricerca verso un'altra zona, più di quanto possa fare l'analogo operatore degli algoritmi genetici rendendo superflua la mutazione. Un altro fattore importante di differenza fra i due metodi è la sensibilità ai parametri che sono spesso di fondamentale importanza per la convergenza di un algoritmo genetico, mentre non influenzano di molto il raggiungimento di una soluzione ottima per 1a GP; per essa 1a fase di tuning dei parametri risulta più semplice e non necessita di molto sforzo. Un altro punto da tenere in considerazione è che 1'interpretazione di un allele dipende fortemente dalla sua posizione nella stringa di bit, mentre un istruzione per computer ha lo stesso significato indipendentemente dalla posizione anche se, ovviamente, può generare comportamenti semantici diversi; perciò questo aspetto facilita l'emergere di dinamiche naturali insite nel processo evolutivo della programmazione genetica. 1.6 I modelli per la programmazione genetica Prima di cominciare a descrivere la programmazione genetica, vediamo alcune definizioni che possono tornare utili allo scopo: Definizione 1.6.1: Lo speedup di un algoritmo parallelo è il rapporto fra il tempo ottenuto dal miglior algoritmo sequenziale e quello impiegato dall'algoritmo parallelo fatto girare su p processori; il caso ideale è quello di speedup lineare.

30 Definizione 1.6.2: L'efficienza è data dal rapporto fra lo speedup e il numero di processori ed è un indice della frazione di tempo utilmente speso dai processori. Definizione 1.6.3: Un sistema parallelo si dice scalabile se 1'efficienza può essere mantenuta costante, all'aumentare dei processori, aumentando anche la dimensione del problema. Se variando in modo lineare il numero di processori, basta variare in modo lineare anche la dimensione del problema e 1'efficienza rimane costante, allora il sistema si dice altamente scalabile. La programmazione genetica e gli algoritmi evolutivi in genere hanno bisogno di grandi popolazioni per ottenere una buona convergenza; questo aspetto, unito al fatto che calcolare la fitness di un singolo individuo richiede la valutazione su un certo training set, porta ad uno sforzo computazionale notevole. Inoltre, nel caso particolare della programmazione genetica, l'albero del programma può anche essere molto complesso e può quindi dare problemi di complessità spaziale, oltre a quelli di complessità temporale, in quanto può superare la capacità di memorizzazione di una singola macchina. Una soluzione al problema della memoria insufficiente è quella di realizzare un implementazione parallela di questo tipo di algoritmi. Questo compito risulta facilitato dal fatto che la programmazione genetica è implicitamente parallela, in quanto la fase più dispendiosa dell algoritmo, che è la valutazione della fitness di ogni individuo, è indipendente e può avvenire su processori diversi. Il problema, invece, è la selezione degli individui più adatti all interno della popolazione, la

31 quale ha bisogno di accessi remoti che riducono la possibilità di avere speed-up lineari dell algoritmo parallelo. I metodi per parallelizzare un algoritmo evolutivo, possono essere classificati in tre tipologie: modello globale, modello a isole e modello diffusivo o cellulare. Il modello globale, in cui si ha sempre una singola popolazione, come nella versione sequenziale, ma la valutazione della fitness degli individui è eseguita in parallelo, dividendo il carico fra i processori disponibili, mentre il crossover e gli altri operatori sono applicati in sequenziale. La selezione è quella classica che agisce su tutta la popolazione, da qui il nome globale. Questo tipo di modello ha il vantaggio di preservare il comportamento dell'algoritmo sequenziale anche in parallelo, ma la fase di selezione richiede frequenti accessi all'intera popolazione e il conseguente overhead di comunicazione risulta inaccettabile a meno che non ci siano funzioni di fitness particolarmente pesanti da valutare. Un'alternativa al modello precedente è il modello ad isole, che utilizza un diverso meccanismo di selezione limitato agli individui posti su un unico processore; la popolazione è suddivisa in sottopopolazioni, dette isole, che sono distribuite, di solito, una per processore. L'implementazione di tale modello prevede la creazione di sottopopolazioni random all'interno di ogni singolo nodo; i vari operatori genetici e la valutazione della fitness vengono eseguiti a livello locale. In tal modo l'algoritmo presenta una scalabilità quasi lineare e risulta di facile implementazione: infatti, è sufficiente lanciare un processo dell'algoritmo per ogni nodo. Una variante di tale modello prevede la migrazione di elementi da una sottopopolazione all'altra, affinché si introduca diversità nelle isole e si garantisca una convergenza migliore. Un aspetto

32 ancora non ben compreso di questo modello è se, in effetti, riesca a mantenere la stessa convergenza di quello sequenziale classico. Nel modello diffusivo, ogni individuo k è sostituito, nella successiva generazione, da un nuovo elemento generato applicando l'operatore di crossover o mutazione ad elementi appartenenti al vicinato di k stesso. La selezione ristretta ad un vicinato locale rende l'implementazione parallela molto efficiente, dal momento che le comunicazioni sono limitate solo ai vicini e, di conseguenza, non c'è un overhead eccessivo. Inoltre, soluzioni sub-ottime non si diffondono velocemente all'interno dell'intera popolazione, favorendo lo svilupparsi di nicchie in cui si esplorano diverse porzioni dello spazio di ricerca e viene evitata una prematura convergenza. Inoltre, rispetto al modello ad isole, si può notare una maggiore stabilità riguardo ai parametri di progettazione. Dal momento che un modello di questo tipo è equivalente ad un automa cellulare, esso è detto anche modello cellulare L'automa cellulare Dalla sezione precedente si evince che 1'automa cellulare si presenta come il modello ristretto più adatto per 1'implementazione di un modello diffusivo. Gli automi cellulari sono stati introdotti da John Von Neumann e Stan Ulam, nel 1950 e, in origine, sono stati utilizzati per lo studio di sistemi di autoriproduzione. Un automa cellulare è formato da un insieme di elementi, detti celle, che sono disposti in una qualche forma geometrica, a una, due o tre dimensioni. Ad ogni cella è associato uno stato che possiede un valore compreso in un insieme finito. Ogni cella evolve, secondo istanti discreti di tempo, da un certo valore dello stato ad un altro, secondo una regola locale, detta funzione di transizione.

33 Il valore dello stato di una singola cella, al tempo T+1, dipende solamente dai valori dello stato delle adiacenti e della cella stessa, al tempo T Figura 1.6.1: Evoluzione di un semplice automa cellulare monodimensionale L'insieme delle celle che influenzano lo stato di una cella c vengono dette vicinato della cella c. La figura esemplifica il funzionamento di un automa cellulare. Quello visibile in figura è monodimensionale, come si può vedere, e le adiacenti di ogni cella sono le due più vicine. Lo stato di una cella è un intero e viene aggiornato facendo la somma del valore della cella stessa e delle adiacenti, come si può notare dall'illustrazione. La topologia è toroidale, cioè 1'adiacente della prima cella è 1'ultima e viceversa. Gli automi cellulari sono usati per simulare fenomeni fisici e lo stato di una cella rappresenta alcune caratteristiche (per esempio temperatura, pressione, ecc..) della zona di spazio corrispondente alla cella stessa. Diamo, di seguito, alcune definizioni formali di automa cellulare. Definizione 1.6.1: Un automa cellulare è una quadrupla A = (E n, X, S, f) dove: E n è l'insieme delle celle appartenenti a uno spazio euclideo a n dimensioni e ciascuna di esse può essere rappresentata come un punto a coordinate intere.

34 X è l'indice di vicinato, cioè un insieme finito di vettori a n dimensioni che rappresentano le coordinate di una cella; esso permette di definire l'insieme N(X,i) dei vicini della cella i = < i 1, i 2, i 3,, i n > in questo modo: sia X = { x 1, x 2, x 3, x m-1 } dove m è la cardinalità di X; allora N(X,i) = { i + x 0, i + x 1, i + x 2,..., i + x m-1 ) e x 0 è il vettore nullo che permette di definire la cella stessa. S è l'insieme degli stati dell'automa: esso è costituito dal prodotto cartesiano S 1 x S 2 x S 3 x... x S k dove ciascun S i è l'insieme dei valori che ciascun sottostato può assumere. f: S m S è la funzione di transizione dell'automa. Definizione 1.6.2: La funzione c t : E n S, dove c(i) è lo stato della cella i, è detta configurazione dell'automa cellulare. La particolare struttura dell'automa cellulare consente un'efficiente implementazione parallela ed è perciò stato scelto come modello per la realizzazione dell'ambiente parallelo di programmazione genetica. Nel caso della programmazione genetica, ogni cella dell'automa cellulare corrisponde ad un individuo della popolazione. La funzione di transizione di una cella applica uno dei classici operatori genetici agli individui della popolazione nei modi visti in precedenza; gli elementi selezionati sono, però, la cella stessa e (nel caso di operatori binari) uno dei suoi vicini, scelto secondo un criterio opportuno. Inoltre restituisce 1'individuo prodotto dall'operatore (o uno dei due individui prodotti nel caso di operatore binario) che, quindi, diventa il sostituito alla cella stessa nella nuova popolazione.

35 1.7 CAGE ( CellulAr GEnetic programming tool ) CAGE è un applicazione parallela per lo sviluppo della programmazione genetica basata sul modello cellulare. La popolazione degli individui è organizzata in una matrice a due dimensioni ed è suddivisa tra i vari processori (Figura 1.7.1) in sezioni longitudinali, in modo che il carico di lavoro sia bilanciato tra le parti. Inoltre, ogni processore ha due bordi, contenenti un numero di individui pari alla larghezza della matrice, che conterranno il vicinato sinistro e destro del processore. Figura 1.7.1: La griglia della popolazione divisa tra tre processi La scelta di questa suddivisione è dettata da problemi di efficienza, dal momento che, su calcolatori reali paralleli, con elevati tempi di startup delle comunicazioni, è quella che garantisce maggiore scalabilità. La creazione degli individui, l applicazione degli operatori genetici e la valutazione della fitness avviene localmente su ogni processore, relativamente alla porzione di popolazione presente in esso Architettura software di CAGE

36 L architettura dell ambiente è formata da una serie di processori disposti logicamente ad anello (Figura 1.7.2), in cui le comunicazioni sono ristrette ai processori vicini localmente e l ultimo processore costituisce il vicino del primo; quindi tale struttura è adatta ad essere gestita come una topologia ad anello, che, comunque, è abbastanza efficiente su un fat-tree. Figura 1.7.2: Architettura software di CAGE Ogni processore è uno slave ( valuta la fitness della sua porzione di popolazione, applica i vari operatori, ecc.), mentre uno di essi, detto master, oltre a queste funzioni ne deve svolgere altre aggiuntive ( scrive i report per ogni generazione e il report finale,manda in output la messaggistica di errore, ecc.). Lo schema di funzionamento dell algoritmo parallelo è il seguente: 1. Ogni processore legge i parametri dell'algoritmo da file e da riga di comando. 2. Ogni processore alloca e inizializza le strutture di base, quindi crea la propria porzione di popolazione secondo i parametri specificati e ne valuta la fitness iniziale.

37 3. Per ogni generazione fino alla finale o al soddisfacimento del criterio di terminazione sono eseguite le seguenti operazioni da ogni processore (se non specificato altrimenti): sono caricati e scambiati i bordi dei processori vicini, in modo che la fase di selezione locale possa avvenire senza ulteriori comunicazioni, anche negli individui appartenenti alla striscia verticale di confine fra i processori; ad ogni individuo appartenente al processore, a secondo della probabilità specificata è applicato un determinato operatore selezionando, nel caso di operatori binari, anche un altro individuo, scelto fra quelli appartenenti al vicinato di Moore (quello che presenta la fitness migliore); l'elemento risultante dall'applicazione dell'operatore è inserito nella nuova popolazione; nel caso del crossover, che genera due figli, la scelta dell'elemento da sostituire dipende dal parametro specificato a verrà descritto dopo; viene caricata la nuova popolazione; è valutata la fitness della nuova popolazione; gli slave valutano 1'elemento della popolazione avente fitness minima e il master riceve l'elemento minimo di tutti i processori a stampa il report della generazione. 4. Il master genera il report dell'intero run dell'algoritmo, quindi vengono liberate tutte le strutture dati.

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo Evoluzione In ogni popolazione si verificano delle mutazioni. Intelligenza Artificiale In un ambiente che varia, le mutazioni possono generare individui che meglio si adattano alle nuove condizioni. Questi

Dettagli

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Dipartimento di Ingegneria della Informazione Via Diotisalvi, 2 56122 PISA ALGORITMI GENETICI (GA) Sono usati per risolvere problemi di ricerca

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini Dipartimento di Ingegneria della Informazione Via Diotisalvi, 2 56122 PISA ALGORITMI GENETICI (GA) Sono usati per risolvere problemi di ricerca

Dettagli

Parte I. Prima Parte

Parte I. Prima Parte Parte I Prima Parte Capitolo 1 Introduzione generale 1.1 Il problema dell assegnazione Corsi-Borsisti Il problema dell assegnazione delle borse dei corsi ai vari studenti può essere riassunto nei punti

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Riproduzione Crossover Mutazione

Riproduzione Crossover Mutazione Algoritmi Genetici Sono algoritmi di ricerca basati sui principi evolutivi della selezione naturale e della genetica, che implicano la sopravvivenza degli elementi migliori e lo scambio di informazioni

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Computazione Naturale AA. 2011-2012

Computazione Naturale AA. 2011-2012 Computazione Naturale AA. 2011-2012 Prof. Mario Pavone CdL Magistrale in Informatica Dip. Matematica ed Informatica mpavone@dmi.unict.it http://www.dmi.unict.it/mpavone/ INDICE Obiettivi formativi Cos

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

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

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Breve introduzione al Calcolo Evoluzionistico

Breve introduzione al Calcolo Evoluzionistico Breve introduzione al Calcolo Evoluzionistico Stefano Cagnoni Dipartimento di Ingegneria dell Informazione, Università di Parma cagnoni@ce.unipr.it 1 Introduzione Il mondo fisico ed i fenomeni naturali

Dettagli

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente Funzioni In matematica, una funzione f da X in Y consiste in: 1. un insieme X detto dominio di f 2. un insieme Y detto codominio di f 3. una legge che ad ogni elemento x in X associa uno ed un solo elemento

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

B+Trees. Introduzione

B+Trees. Introduzione B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Un gioco con tre dadi

Un gioco con tre dadi Un gioco con tre dadi Livello scolare: biennio Abilità interessate Costruire lo spazio degli eventi in casi semplici e determinarne la cardinalità. Valutare la probabilità in diversi contesti problematici.

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. E. Calabrese: Fondamenti di Informatica Problemi-1 Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. L'informatica

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

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

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e Alberi di decisione Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e lanciarlo con i parametri di default.

Dettagli

CALCOLO COMBINATORIO

CALCOLO COMBINATORIO CALCOLO COMBINATORIO 1 Modi di formare gruppi di k oggetti presi da n dati 11 disposizioni semplici, permutazioni Dati n oggetti distinti a 1,, a n si chiamano disposizioni semplici di questi oggetti,

Dettagli

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

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Nozione di algoritmo. Gabriella Trucco

Nozione di algoritmo. Gabriella Trucco Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo INPUT: dati iniziali INPUT: x,y,z AZIONI esempio: Somma x ed y

Dettagli

e-dva - eni-depth Velocity Analysis

e-dva - eni-depth Velocity Analysis Lo scopo dell Analisi di Velocità di Migrazione (MVA) è quello di ottenere un modello della velocità nel sottosuolo che abbia dei tempi di riflessione compatibili con quelli osservati nei dati. Ciò significa

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Reti sequenziali sincrone

Reti sequenziali sincrone Reti sequenziali sincrone Un approccio strutturato (7.1-7.3, 7.5-7.6) Modelli di reti sincrone Analisi di reti sincrone Descrizioni e sintesi di reti sequenziali sincrone Sintesi con flip-flop D, DE, T

Dettagli

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti

Dettagli

2) Codici univocamente decifrabili e codici a prefisso.

2) Codici univocamente decifrabili e codici a prefisso. Argomenti della Lezione ) Codici di sorgente 2) Codici univocamente decifrabili e codici a prefisso. 3) Disuguaglianza di Kraft 4) Primo Teorema di Shannon 5) Codifica di Huffman Codifica di sorgente Il

Dettagli

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

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

Transitori del primo ordine

Transitori del primo ordine Università di Ferrara Corso di Elettrotecnica Transitori del primo ordine Si consideri il circuito in figura, composto da un generatore ideale di tensione, una resistenza ed una capacità. I tre bipoli

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 LEZIONE 23: Indicizzazione Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 Lezione 23 - Modulo 1 Indicizzazione lineare, ISAM e

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X. Algebra Di Boole L algebra di Boole è un ramo della matematica basato sul calcolo logico a due valori di verità (vero, falso). Con alcune leggi particolari consente di operare su proposizioni allo stesso

Dettagli

Plate Locator Riconoscimento Automatico di Targhe

Plate Locator Riconoscimento Automatico di Targhe Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Relazioni statistiche: regressione e correlazione

Relazioni statistiche: regressione e correlazione Relazioni statistiche: regressione e correlazione È detto studio della connessione lo studio si occupa della ricerca di relazioni fra due variabili statistiche o fra una mutabile e una variabile statistica

Dettagli

Codifiche a lunghezza variabile

Codifiche a lunghezza variabile Sistemi Multimediali Codifiche a lunghezza variabile Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Assegnazione del codice Come visto in precedenza, per poter memorizzare o trasmettere un

Dettagli

Il modello generale di commercio internazionale

Il modello generale di commercio internazionale Capitolo 6 Il modello generale di commercio internazionale [a.a. 2013/14] adattamento italiano di Novella Bottini (ulteriore adattamento di Giovanni Anania) 6-1 Struttura della presentazione Domanda e

Dettagli

ISTITUTO TECNICO ECONOMICO MOSSOTTI

ISTITUTO TECNICO ECONOMICO MOSSOTTI CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il concetto di Algoritmo e di Calcolatore Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Cos

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Laurea Specialistica in Informatica

Laurea Specialistica in Informatica Corso di Laurea in FISICA Laurea Specialistica in Informatica Fisica dell informazione 1 Elementi di Architettura degli elaboratori Prof. Luca Gammaitoni Informazioni sul corso: www.fisica.unipg unipg.it/gammaitoni/fisinfoit/gammaitoni/fisinfo

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

~ Copyright Ripetizionando - All rights reserved ~ http://ripetizionando.wordpress.com STUDIO DI FUNZIONE

~ Copyright Ripetizionando - All rights reserved ~ http://ripetizionando.wordpress.com STUDIO DI FUNZIONE STUDIO DI FUNZIONE Passaggi fondamentali Per effettuare uno studio di funzione completo, che non lascia quindi margine a una quasi sicuramente errata inventiva, sono necessari i seguenti 7 passaggi: 1.

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Intelligenza Artificiale. Introduzione al calcolo evolutivo

Intelligenza Artificiale. Introduzione al calcolo evolutivo Intelligenza Artificiale Introduzione al calcolo evolutivo Marco Piastra Calcolo evolutivo - 1 Calcolo evolutivo ed IA Universe Borg Vogons Earth etc Biotop Society Stones & Seas etc Art Science Politics

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Fondamenti di Informatica 2. Le operazioni binarie

Fondamenti di Informatica 2. Le operazioni binarie Corso di per il corso di Laurea di Ingegneria Gestionale Le operazioni binarie Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'algebra binaria Il fatto di aver

Dettagli

2. Leggi finanziarie di capitalizzazione

2. Leggi finanziarie di capitalizzazione 2. Leggi finanziarie di capitalizzazione Si chiama legge finanziaria di capitalizzazione una funzione atta a definire il montante M(t accumulato al tempo generico t da un capitale C: M(t = F(C, t C t M

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Introduzione all analisi dei segnali digitali.

Introduzione all analisi dei segnali digitali. Introduzione all analisi dei segnali digitali. Lezioni per il corso di Laboratorio di Fisica IV Isidoro Ferrante A.A. 2001/2002 1 Segnali analogici Si dice segnale la variazione di una qualsiasi grandezza

Dettagli

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme 1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

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

Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 25/6/2015 Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 25/6/2015 Chi deve recuperare il progetto del modulo 1 ha 1 ora e 30 minuti per svolgere gli esercizi 1, 2, 3 Chi deve recuperare

Dettagli

Codifica binaria dei numeri relativi

Codifica binaria dei numeri relativi Codifica binaria dei numeri relativi Introduzione All interno di un calcolatore, è possibile utilizzare solo 0 e 1 per codificare qualsiasi informazione. Nel caso dei numeri, non solo il modulo ma anche

Dettagli

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su

Dettagli

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli