Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAdolfo Tedesco Modificato 10 anni fa
1
Il problem-solving Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
2
A.A. 2004/200514 Il problem-solving2 LIFE: il gioco della vita Evoluzione di una colonia di microorganismi in una coltura (griglia di celle) Generazione: configurazione di microorganismi nelle celle Evoluzione: regole per la nascita e la morte di microorganismi: da una generazione a quella successiva Terminazione: generazione stabile o raggiunto numero massimo di generazioni.
3
A.A. 2004/200514 Il problem-solving3 Regole di evoluzione Se una cella alla i-esima generazione è piena, alla i+1-esima sarà: A. vuota se nelle 8 celle adiacenti ci sono meno di 2 microorganismi alla generazione i- esima (morte per isolamento) B. vuota se nelle 8 celle adiacenti ci sono più di 3 microorganismi alla generazione i-esima (morte per sovraffollamento) piena se nelle 8 celle adiacenti ci sono o 2 o 3 microorganismi alla generazione i-esima (sopravvivenza).
4
A.A. 2004/200514 Il problem-solving4 Se una cella alla i-esima generazione è vuota, alla i+1-esima sarà: piena se nelle 8 celle adiacenti ci sono esattamente 3 microorganismi (nascita) vuota altrimenti.
5
A.A. 2004/200514 Il problem-solving5 Esempio generazione i-esimagenerazione i+1-esima morte per isolamento
6
A.A. 2004/200514 Il problem-solving6 generazione i-esimagenerazione i+1-esima morte per sovraffollamento
7
A.A. 2004/200514 Il problem-solving7 generazione i-esimagenerazione i+1-esima sopravvivenza
8
A.A. 2004/200514 Il problem-solving8 generazione i-esimagenerazione i+1-esima nascita
9
A.A. 2004/200514 Il problem-solving9 generazione i-esimagenerazione i+1-esima stabilità generazione i-esima = generazione i+1-esima
10
A.A. 2004/200514 Il problem-solving10 Algoritmo while (continua) /* calcola una nuova generazione */ cancella penultima generazione scambia ultima e penultima generazione per tutte le righe i per tutte le colonne j applica le regole del gioco alla casella (i,j)
11
A.A. 2004/200514 Il problem-solving11 Strutture dati Concettualmente: struttura matriciale in grado di ricordare la generazione i-esima e quella i+1-esima. Soluzione 1: matrice non sparsa matrice 2* MAXR * MAXC di informazioni 0/1 (assenza/presenza di organismo) per generazione i-esima e i+1-esima occupazione di memoria S(n) = O(MAXR*MAXC) = O(n 2 ) complessità delle operazioni: accesso alla generica casella (i, j) T(n) = O(1)
12
A.A. 2004/200514 Il problem-solving12 Soluzione 2: matrice sparsa: array di liste, una per riga di informazioni 0/1 (assenza/presenza di organismo), generazione i-esima e i+1-esima occupazione di memoria: definendo un fattore di riempimento 1 S(n) = O(MAXR + *MAXR*MAXC) vantaggioso per pochi microorganismi complessità delle operazioni: accesso alla generica casella (i, j) T(n) = O( *MAXC)
13
A.A. 2004/200514 Il problem-solving13 Complessità T(n) = O(n_generazioni * MAXR * MAXC * costo applicazione regola) Il costo dellapplicazione regola è O(1) con la matrice non sparsa, O( *MAXC) per la matrice sparsa.
14
A.A. 2004/200514 Il problem-solving14 Conteggio dei vicini Conteggio delle caselle adiacenti mediante due vettori a e b che contengono offset precalcolati: i,j0,1 1,1 -1,1 1,01,-1 0,-1 -1,-1-1,0 01110 a 110 01 b
15
A.A. 2004/200514 Il problem-solving15 Alternativa: for (dx = -1; dx<=1; dx++) for (dy = -1; dy<=1; dy++) if (dx!=0 || dy!=0) { xx = x+dx; yy = y+dy; accedi a casella (xx,yy) }
16
A.A. 2004/200514 Il problem-solving16 Soluzione 1
17
A.A. 2004/200514 Il problem-solving17 Soluzione 2 E noto che le inserzioni su una riga vengono fatte per colonne crescenti. Anziché inserire in lista ordinata, si inserisce in coda e si garantisce lordinamento delle liste. Si potrebbero considerare solo le caselle vive o adiacenti ad almeno una casella viva. Complessità ridotta di fattore, ma codice più complicato.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.