La complessità del calcolo
|
|
|
- Pio Bertini
- 9 anni fa
- Visualizzazioni
Transcript
1 1 La complessità del calcolo In questo corso: Cominciamo con un esame critico del problema e dell approccio cosa è il costo di una computazione come lo misuriamo Andiamo alla ricerca di principi di validità generale Costruiamo una capacità di inquadramento nel giusto ambito di singoli problemi Passiamo quindi alla analisi di algoritmi notevoli Studiamo l efficienza delle strutture dati Chiudiamo con alcuni argomenti di sapore più avanzato tecniche di progettazione di algoritmi algoritmi difficili
2 2 La complessità come raffinamento della risolvibilità Non ci accontentiamo più di sapere se sappiamo risolvere (algoritmicamente) un problema, ma vogliamo sapere quanto ci costa risolverlo Analisi critica del concetto di costo (e beneficio): Costo di esecuzione (risorse fisiche necessarie), a sua volta diviso in: Tempo Spazio di compilazione di esecuzione Costo di sviluppo Valutazioni oggettive e soggettive, trade-off tra obiettivi contrastanti, verso problematiche e approcci da Ingegneria del software Qui ci si limita a concetti di costo oggettivi e formalizzabili: tipiche risorse: memoria e tempo (di esecuzione)
3 3 Sarebbe bello partire come per la risolvibilità: Conseguenza fondamentale della Tesi di Church: Le domande che ci poniamo e le risposte che otterremo non dipendono dal modo con cui formuliamo il problema né dallo strumento usato. Però: Fare la somma in unario è ben diverso dal fare la somma in base k Se uso la tecnica z L τ = {x$y y = τ(x)} per calcolare τ(x) dovrò decidere un problema di appartenenza un numero anche illimitato di volte per risolvere il problema originario di traduzione E verosimile che cambiando calcolatore (o MT) non cambi il tempo di esecuzione? Evidentemente no, però...
4 4 Certo l obiettivo è arduo o addirittura mal posto Tuttavia alla fine riusciremo ad ottenere risultati di notevole validità generale. una sorta di Tesi di Church della complessità Visto che per ora una Tesi di Church della complessità non sussiste
5 5 cominciamo da un analisi di complessità legata alle MT deterministiche Complessità temporale: sia c 0 c 1 c 2 c 3 c r T M (x) = r se la computazione termina in c r, altrimenti importante: stiamo considerando MT deterministiche, quindi la computazione in corrispondenza di un input x è unica vedremo negli approfondimenti alla fine del corso che relazione c è dal punto di vista della complessità tra modelli deterministici e nondeterministici Complessità spaziale: c 0 c 1 c 2 c 3 c r S M (x) NB: k = j= 1 max{ αij + 1 i = S M (x) T M (x) x k 1,..., r} con α ij contenuto del nastro j alla mossa i-esima
6 6 Un primo esempio: riconoscimento di {wcw R } Nastro di lettura a b b c b b a Nastro di memoria Z 0 A B B OC T M (x) = x + 1 se x L w +1 se x = wz, w = vucu R, v =αa, z = bα x + 1 se x {a,b} * S M (x) = x + 1 se x {a,b} *, x /2 + 1 se x L,...
7 7 Un po troppi dettagli, utili/necessari? Cerchiamo di semplificare e di andare al sodo: Complessità in f(x) complessità in f(n), con n dimensione dei dati in ingresso : n = x, righe/colonne di una matrice, numero di record in un file, Però in generale x 1 = x 2 T M (x 1 ) = T M (x 2 ) (idem per S M ) =======>
8 8 Scelta del caso pessimo: T M (n) = max{t M (x), x = n} (idem per S M (n) ) Scelta del caso ottimo: T M (n) = min{t M (x), x = n} Scelta del caso medio: T M ( x) T M (n) = = n, k = cardinalità i.e. somma dei tempi per x parole di lunghezza n / dell'alfabeto n. di parole di lunghezza n k n Noi adotteremo per lo più il caso pessimo: ingegneristicamente più rilevante (per certe applicazioni) matematicamente più semplice a rigore il caso medio dovrebbe tener conto di ipotesi probabilistiche sulla distribuzione dei dati: i nomi di una guida del telefono non sono equiprobabili
9 9 Tasso di crescita Il valore esatto di T M (n) non è di grande interesse per noi, ma solo il suo tasso di crescita rispetto a n non è importante se T M (n)=3n 2 +12n+35 o se T M (n)=6n 2 +26, in quanto entrambi, per n abbastanza grande, si comportano in modo simile a n 2 non ci interessa neanche distinguere tra T M (n)=(1/50)n 2 +1 da T M (n)=1048n 2! Invece vogliamo separare T M (n)=3n 3 +2 da T M (n)=12n 2 +22n Ci interessa il comportamento asintotico delle funzioni di costo, non la loro espressione esatta Introduciamo opportune notazioni per mettere in evidenza il comportamento asintotico delle funzioni: notazione O-grande (O) notazione Omega-grande (Ω) notazione Teta-grande (Θ)
10 10 Notazione O-grande La notazione O-grande indica un limite asintotico superiore Data una funzione g(n), O(g(n)) è il seguente insieme di funzioni: O(g(n)) ={f(n) c,n 0 (c,n 0 >0 tale che n n 0 0 f(n) cg(n))} Cioè: cg(n) f(n) n 0 n
11 11 Abbiamo che: 3n 2 +12n+35 O(n 2 ) 5n 3 +2 O(n 3 ) 2log(n)+log(log(n)) O(log(n)) Ma anche: 3n 2 +12n+35 O(n 3 ) 5n 3 +2 O(n 10 ) 5n 3 +2 O(2 n ) 2log(n)+log(log(n)) O(n) Esempi Spesso scriveremo f(n) = O(g(n)) (oppure che f(n) è O(g(n)) ) invece di f(n) O(g(n)) 3n 2 +12n+35 = O(n 2 ), 5n 3 +2 è O(n 10 ), ecc.
12 12 Notazione Omega-grande La notazione Omega-grande indica un limite asintotico inferiore Data una funzione g(n), Ω(g(n)) è il seguente insieme di funzioni: Ω(g(n)) ={f(n) c,n 0 (c,n 0 >0 tale che n n 0 0 cg(n) f(n))} Cioè: f(n) cg(n) n 0 n
13 13 Abbiamo che: 3n 2 +12n+35=Ω(n 2 ) 2n 2 log(n)+5=ω(n 2 log(n)) n2 n +n 45 =Ω(n2 n ) Ma anche: 3n 2 +12n+35=Ω(n) Però 3n 2 +12n+35=Ω(log(n)) n2 n +n 45 =Ω(2 n ) n2 n +n 45 =Ω(n 100 ) 3n 2 +12n+35 Ω(n 2 log(n)) 2n 2 log(n)+5 Ω(n 3 ) Esempi
14 14 Notazione Teta-grande La notazione Teta-grande indica un limite asintotico che è sia inferiore che superiore Data una funzione g(n), Θ(g(n)) è il seguente insieme di funzioni: Cioè: Θ(g(n)) ={f(n) c 1,c 2,n 0 (c 1,c 2,n 0 >0 tale che n n 0 0 c 1 g(n) f(n) c 2 g(n))} c 2 g(n) f(n) c 1 g(n) n 0 n
15 15 Esempi Abbiamo che: 3n 2 +12n+35=Θ(n 2 ) 2n 2 log(n)+5=θ(n 2 log(n)) n2 n +n 45 =Θ(n2 n ) Però 3n 2 +12n+35 Θ(n) 3n 2 +12n+35 Θ(log(n)) n2 n +n 45 Θ(2 n ) n2 n +n 45 Θ(n 100 )
16 16 Alcune proprietà delle relazioni O, Ω, Θ f(n) = Θ(g(n)) se e solo se f(n) = O(g(n)) e f(n) = Ω(g(n)) Transitività se f(n) = Θ(g(n)) e g(n) = Θ(h(n)) allora f(n) = Θ(h(n)) se f(n) = O(g(n)) e g(n) = O(h(n)) allora f(n) = O(h(n)) se f(n) = Ω(g(n)) e g(n) = Ω(h(n)) allora f(n) = Ω(h(n)) Riflessività f(n) = Θ(f(n)) f(n) = O(f(n)) f(n) = Ω(f(n)) Simmetria: f(n) = Θ(g(n)) se e solo se g(n) = Θ(f(n)) Simmetria trasposta: f(n) = O(g(n)) se e solo se g(n) = Ω(f(n)) Si noti che Θ è una relazione di equivalenza (Dire che T M (n)=θ(n) è come dire che T M (n) è lineare?)
17 17 Si noti che se allora f(n) = Θ(g(n)) f ( n) lim = c, c 0, c n g( n) e quindi anche f(n) = O(g(n)) Se f ( n) lim = 0 n g ( n ) allora f(n) = O(g(n)), ma f(n) Θ(g(n)) cioè g(n) Ο(f(n)); diremo in questo caso che Θ(f(n)) < Θ(g(n)) L uso dell ordine di grandezza permette di evidenziare con facilità la parte più importante di una funzione di complessità
18 Torniamo all esempio {wcw R } 18 T M (n) è Θ(n), S M (n) è pure Θ(n) Si può fare di meglio? Per T M (n) difficile (in generale dovrò almeno leggere tutta la stringa) Per S M (n): Nastro di lettura a b b c b b a Nastro di memoria: contiene i codificato in binario Z OC Memorizzo solo la posizione i del carattere da esaminare; poi sposto la testina di lettura in posizione i e n-i+1 e confronto i due caratteri letti ===>
19 Pseudo-codice per wcw R con complessita` spaziale logaritmica [complessita` del passo fra quadre] 19 - ciclo alla ricerca di "c": ad ogni passo si incrementa il numero in base 2 del nastro A [n log n] Loop : [i va da n/2 a 0] - copia A nel nastro B [log i] - decrementa B passo passo fino a 0, ad ogni passo sposta verso sx la testina di ingresso [i log i] - leggi il carattere e memorizzalo in un nastro C [cost] - ritorna al carattere "c" [i] - copia A in B [log i] - decrementa B passo passo fino a 0, ad ogni passo sposta verso dx la testina di ingresso [i log i] - leggi il carattere e confrontalo con quello in C: se diversi HALT [cost] - decrementa A [log i] - ritorna al carattere "c" [i] - salta a Loop
20 20 S M (n): Θ(log(n)) ma T M (n): Θ(n 2 log (n)) classico trade-off spazio-temporale L esempio ci spiega anche perché nella MT a k nastri la testina di ingresso può muoversi nelle due direzioni: in caso contrario non ci sarebbero esempi significativi di complessità spaziale sublineare
21 A proposito di MT a k nastri Proviamo a cambiare modello di calcolo (sempre deterministico): FSA hanno sempre S A (n) Θ(k) (costante) e T A (n) Θ(n) anzi T A (n) = n (macchine real-time ); PDA hanno sempre S A (n) Θ(n) e T A (n) Θ(n); MT a nastro singolo? Il riconoscimento di {wcw R } richiede in prima istanza Θ(n 2 ), La complessità spaziale non potrà mai essere < Θ(n) (ciò fornisce un ulteriore spiegazione della scelta della MT a k nastri come modello principale) Si può fare meglio di Θ(n 2 )? NO! dimostrazione tecnicamente complessa come quasi sempre per limiti inferiori di complessità che non siano banali. MT a nastro singolo più potenti dei PDA ma talvolta meno efficienti E i calcolatori a la von Neumann? Aspettiamo ancora un po...
22 I teoremi di accelerazione lineare Se L è accettato da una MT M a k nastri con complessità S M (n), per ogni c > 0 (c R) si può costruire una MT M (a k nastri) con complessità S M (n) < c S M (n) 22 a 1 a 2 a i a r b 1 b 2 b i b r c 1 c 2 c i <a 1... a i a r > <b 1... b i b r > <c 1... c i c r > Prendiamo un r tale che sia r c 2 Ovviamente c è il problema della memorizzazione della posizione della testina: si può arricchire l alfabeto oppure memorizzare la posizione relativanello stato dell organo di controllo
23 23 Se L è accettato da una MT M a k nastri con complessità S M (n), si può costruire una MT M a 1 nastro (non a nastro singolo) con complessità S M (n) = S M (n). (si mettono le parti significative dei k nastri nell unico nastro, una dietro l altra) Se L è accettato da una MT M a k nastri con complessità S M (n), per ogni c > 0 (c R) si può costruire una MT M a 1 nastro con complessità S M (n) < c S M (n). (idem + codifica)
24 24 Se L è accettato da una MT M a k nastri con complessità T M (n), per ogni c > 0 (c R) si può costruire una MT M (a k+1 nastri) con complessità T M (n) = max{n+1, c T M (n)} Schema di dimostrazione analogo a quello usato per la complessità spaziale. Però, con qualche dettaglio tecnico in più: occorre prima leggere e tradurre tutto l input (richiede n mosse) ciò crea qualche problema all interno della classe Θ(n) (di quì il max{n+1 }) nel caso pessimo occorrono 3 mosse per simulare almeno r + 1 mosse di M es: <a 1..a r ><b 1..b r ><c 1..c r > caso pessimo: da a r arrivo a b r con r mosse; con una mossa in più sono riuscito a toccare 3 celle (= 3 mosse della M )
25 25 Conseguenze pratiche dei teoremi di accelerazione lineare Lo schema di dimostrazione è valido per qualsiasi tipo di modello di calcolo, quindi anche per calcolatori reali: significa aumentare il parallelismo fisico (da 16 bit a 32 a 64 ) pur di aumentare la potenza di calcolo in termini di risorse disponibili si può aumentare a piacere la velocità di esecuzione però tale aumento di prestazioni rimane confinato nell ambito di miglioramenti al più lineari non riesco a cambiare l ordine di grandezza miglioramenti di ordini di grandezza possono essere ottenuti solo cambiando algoritmo e in modo non automatico: l intelligenza può superare di gran lunga la forza bruta!
26 26 Riprendiamo ora il confronto tra MT e calcolatori reali A prima vista il confronto è impari per calcolare la somma di due numeri una MT impiega Θ(n) (n è la lunghezza -della stringa di caratteri che codifica- i due numeri) mentre un calcolatore fornisce questa operazione come elementare (eseguita in un ciclo macchina) un calcolatore può accedere direttamente a una cella di memoria, mentre la MT ha accesso solo sequenziale. Non possiamo perciò accontentarci di valutazioni di complessità legate esclusivamente alle MT
27 27 Un modello molto astratto di calcolatore: la RAM n Program counter Nastro di lettura Programma (cablato) Accumulatore Unità aritmetica M[0] M[1] M[2] M[3] x Nastro di scrittura Ogni cella contiene un intero, non un carattere!
28 28 Il repertorio istruzioni della RAM: LOAD [=, *] X M[0] := M[X], X, M[M[X]] STORE [*] X M[X] := M[0], ADD M[0] := M[0]+M[X], SUB, MULT, DIV READ [*] X WRITE [=, *] X JUMP lab PC := b(lab) JZ, JGZ,... lab HALT
29 Un programma RAM che calcola la funzione is_prime(n) = if n is prime then 1 else 0 1 READ 1 Il valore di ingresso n è memorizzato nella cella M[1] 2 LOAD= 1 Se n = 1, esso è banalmente primo... 3 SUB 1 4 JZ YES 5 LOAD= 2 M[2] è inizializzato a 2 6 STORE 2 7 LOOP: LOAD 1 Se M[1] = M[2] allora n è primo 8 SUB 2 9 JZ YES 10 LOAD 1 Se M[1] = (M[1] div M[2]) * M[2] allora 11 DIV 2 M[2] è un divisore di M[1]; 12 MULT 2 quindi M[1] non è primo 13 SUB 1 14 JZ NO 15 LOAD 2 M[2] è incrementato di 1 e il ciclo viene ripetuto 16 ADD= 1 17 STORE 2 18 JUMP LOOP 19 YES: WRITE= 1 20 HALT 21 NO: WRITE= 0 22 HALT 29
30 Quanto costa eseguire il programma di cui sopra mediante una RAM? 30 Assunzione di base (per ora): ogni istruzione ha un costo costante, indipendentemente dal valore degli operandi indichiamo con c i il costo della istruzione i-esima del programma Costo del programma RAM: Le istruzioni da 1 a 6 vengono eseguite al più una volta; il loro costo è c 1 +c 2 +c 3 +c 4 +c 5 +c 6 ed è una costante (chiamiamola k 1 ) Le istruzioni da 19 a 22 anch essere vengono eseguite al più una volta sola, ed il loro costo è c 19 +c 20 +c 21 +c 22, anch esso costante (chiamiamo k 3 la costante) Le istruzioni dalla 7 alla 18 hanno costo c 7 +c 8 +c 9 +c 10 +c 11 +c 12 +c 13 +c 14 +c 15 +c 16 +c 17 +c 18 =k 2 esse però vengono eseguite, nel caso pessimo, n volte Quindi T R (n) = k 1 +k 2 n+k 3 = Θ(n) S R (n) = 2 = Θ(1), perché vengono occupate solo 2 celle di memoria, M[1], ed M[2] Attenzione però: che cos è n? Non è la lunghezza della stringa di ingresso! Attenzione al parametro di dimensione dei dati!!
31 31 Inoltre: Riconoscimento di wcw R con S R (n) = Θ(n) T R (n) = Θ(n) Algoritmo di ricerca binaria precondizione: l input è una sequenza ordinata di numeri (interi), ed un numero da cercare postcondizione: l algoritmo restituisce 1 se l elemento cercato esiste nella sequenza, 0 altrimenti
32 Ricerca binaria Assunzione: numeri già in memoria quando viene eseguito questo pezzo di codice M[1]: cella contenente l indirizzo del primo numero della sequenza M[2]: cella contenente il numero di elementi della sequenza quindi la sequenza va dalla cella M[M[1]] alla cella M[M[1]+M[2]-1] 32 1 READ 3 L elemento da cercare è letto e memorizzato in M[3] 2 LOAD 1 3 STORE 4 M[4] è inizializzato con l indirizzo del primo numero 4 ADD 2 5 SUB= 1 6 STORE 5 M[5] è inizializzato con l indirizzo dell ultimo numero 7 LOOP: LOAD 5 Se l indirizzo di M[5] precede quello di M[4] siamo 8 SUB 4 giunti ad avere una porzione di sequenza che è vuota, 9 JLZ NO quindi l elemento cercato non esiste 10 LOAD 5 11 ADD 4 12 DIV= 2 13 STORE 6 M[6] ora contiene l indirizzo dell elemento centrale
33 33 14 LOAD* 6 15 SUB 3 16 JZ YES Se M[3]=M[M[6]], l elemento cercato esiste 17 JGZ FST Se M[3]<M[M[6]], cerca nella prima metà 18 JLZ SND Se M[3]>M[M[6]], cerca nella seconda metà 19 FST: LOAD 6 20 SUB= 1 21 STORE 5 Memorizza M[6]-1 in M[5] 22 JUMP LOOP 23 SND: LOAD 6 24 ADD= 1 25 STORE 4 Memorizza M[6]+1 in M[4] 26 JUMP LOOP 27 YES: WRITE= 1 28 HALT 29 NO: WRITE= 0 30 HALT Alla peggio il ciclo viene eseguito log 2 (n) volte, con n numero di elementi della sequenza, in quanto ogni volta la dimensione dell array viene dimezzata Quindi T R (n) = Θ(log(n)) (mentre per la MT: Θ(n log(n)) > Θ(n))
34 34 Però calcoliamo 2 2n usando una RAM (o macchina analoga) read n; x := 2; for i := 1 to n do x := x*x; write x Ottengo ((2) 2 ) 2 ) n volte ossia 2 2n Quale complessità temporale? Θ(n)!!! Siamo proprio sicuri?! In realtà occorrono almeno 2 n bit solo per scrivere il risultato! L analisi sembra decisamente irrealistica!
35 Il problema sta nel fatto che la RAM (macchina di von Neumann) è un po troppo... astratta 35 Una cella contenente un numero arbitrario = unità di memoria? Un operazione aritmetica = operazione elementare a costo unitario? Ciò è corretto solo fino a quando la macchina reale (a 16, 32, 64, bit) corrisponde esttamente alla macchina astratta. Altrimenti doppia precisione ecc. ---> le operazioni relative non sono più elementari e occorre programmarle ad hoc. rifacciamo tutti gli algoritmi e le relative analisi di complessità in funzione del livello di precisione (numero di bit) usati? Concettualmente sì ma più comodamente: Criterio di costo logaritmico basato su un analisi microscopica (vedi microcodice ) delle operazioni HW
36 36 Quanto costa copiare il numero i da una cella all altra? tante microoperazioni elementari quanti sono i bit necessari a codificare i: log(i) Quanto costa accedere alla cella di posizione i-esima? l apertura di log(i) cancelli di accesso ad altrettanti banchi di memoria Quanto costa eseguire l operazione LOAD i? Con semplice e sistematica analisi si ottiene la seguente...
37 LOAD= x l(x) LOAD x l(x) + l(m[x]) LOAD* x l(x) + l(m[x]) + l(m[m[x]]) STORE x l(x) + l(m[0]) STORE* x l(x) + l(m[x]) + l(m[0]) ADD= x l(m[0]) + l(x) ADD x l(m[0]) + l(x) + l(m[x]) ADD * x l(m[0]) + l(x) + l(m[x]) + l(m[m[x]]) Tabella dei costi logaritmici della RAM READ x l(valore di input corrente) + l(x) READ* x l(valore di input corrente) + l(x) + l(m[x]) WRITE= x l(x) WRITE x l(x) + l(m[x]) WRITE* x l(x) + l(m[x]) + l(m[m[x]]) JUMP lab 1 JGZ lab l(m[0]) JZ lab l(m[0]) HALT 1 37
38 Applicando il nuovo criterio di costo 38 Al calcolo di is-prime(n) (solo nei punti essenziali) 7 LOOP: LOAD 1 1+l(n) 8 SUB 2 l(n) +2 + l(m[2]) 9 JZ YES l(m[0]) 10 LOAD 1 1+l(n) 11 DIV 2 l(n) +2 + l(m[2]) 12 MULT 2 l(n/m[2]) +2 + l(m[2]) < l(n) 13 SUB 1 l(m[0]) +1 + l(n) < 2 l(n) JZ NO l(n) 15 LOAD 2 l(n) + k 16 ADD= STORE 2 18 JUMP LOOP Si può facilmente maggiorare la singola iterazione del ciclo con Θ(log(n)) Ergo la complessità temporale complessiva è Θ(n log(n))
39 Similmente otteniamo: per il riconoscimento di wcw R : Θ(n log(n)) NB: più della MT! E possibile fare meglio? per la ricerca binaria: Θ(log 2 (n)) Costo a criterio di costo logaritmico = Costo a criterio di costo costante * log(n)? Costo a criterio di costo logaritmico = Costo a criterio di costo costante * log(costo a criterio di costo costante)? Spesso ma non sempre: Per il calcolo di 2 2n costo a criterio di costo logaritmico 2 n infatti complessità temporale complessità spaziale, che qui è Θ(2 n ) Esiste un criterio per scegliere il criterio? A buon senso (!): Se l elaborazione non altera l ordine di grandezza dei dati di ingresso, la memoria allocata inizialmente (staticamente?) può non variare a run-time ===> non dipende dai dati ===> una singola cella è considerabile elementare e con essa le operazioni relative ===> criterio di costo costante OK Altrimenti (fattoriale, 2 2n, ricorsioni feroci, ) indispensabile criterio logaritmico: l unico garantito! 39
40 Le relazioni tra le complessità relative ai diversi modelli di calcolo 40 Lo stesso problema risolto con macchine diverse può avere complessità diverse Può darsi che per P1 il modello M1 sia meglio del modello M2 ma per P2 succeda il contrario ricerca binaria accesso diretto riconoscimento di wcw R accesso e memorizzazione sequenziale Non esiste un modello migliore in assoluto Non esiste un analogo della tesi di Church per la complessità Però: E possibile stabilire almeno una relazione -di maggiorazione- a priori tra le complessità di diversi modelli di calcolo. Teorema (tesi) di correlazione polinomiale (in analogia con la tesi di Church): Sotto ragionevoli ipotesi di criteri di costo (il criterio di costo costante per la RAM non è ragionevole in assoluto!) se un problema è risolvibile mediante un modello di calcolo M 1 con complessità (spazio/temporale) C 1 (n), allora è risolvibile da qualsiasi altro modello di calcolo M 2 con complessità C 2 (n) P 2 (C 1 (n)), essendo P 2 un opportuno polinomio
41 Prima di dimostrare il teorema (non più tesi!) nel caso MT-RAM, valutiamone l impatto: 41 E vero che i polinomi possono anche essere n 1000, ma è sempre meglio dell abisso esponenziale (n k contro 2 n ) Grazie al teorema di correlazione polinomiale possiamo parlare della classe dei problemi risolvibili in tempo/spazio polinomiale (non di quelli risolvibili in tempo quadratico!) la classe non dipende dal modello adottato Grazie a questo risultato -e ad altri importanti fatti teorici- si è da tempo adottata l analogia: classe dei problemi trattabili in pratica = classe dei problemi risolvibili in tempo polinomiale : P La teoria include in P anche i problemi con complessità n 1000 (comunque sempre meglio di quelli a complessità esponenziale), ma l esperienza pratica conferma che i problemi di interesse applicativo (ricerche, cammini, ottimizzazioni, ) che sono in P hanno anche grado del polinomio accettabile (similmente vedremo tra poco che la relazione di complessità tra MT e RAM è piccola )
42 La correlazione (temporale) tra MT e RAM: 1: Da MT (a k nastri) a RAM 42 La memoria della RAM simula la memoria della MT: 1 cella RAM per ogni cella di nastro di MT Però, invece di usare blocchi di memoria RAM per simulare ogni nastro, associamo un blocco -di k celle- ad ogni k-pla di celle prese per ogni posizione di nastro, + un blocco di base : Blocco 0 K+1 celle per memorizzare stato e posizione delle k testine Blocco 1 K celle per memorizzare il primo simbolo di ogni nastro Blocco i K celle per memorizzare l i-esimo simbolo di ogni nastro
43 Una mossa della MT è simulata dalla RAM: 43 Lettura: Blocco 0 Blocco 1 Blocco i Viene esaminato il contenuto del blocco 0 (pacchetto di k+1 accessi, c*(k+1) mosse) Vengono fatti k accessi indiretti in k blocchi per esaminare il contenuto delle celle in corrispondnza delle testine Scrittura: Viene cambiato lo stato Vengono aggiornati, mediante STORE indiretti, i contenuti delle celle corrispondenti alla posizione delle testine Vengono aggiornati, nel blocco 0, i valori delle posizioni delle k testine Una mossa di MT richiede h*k mosse di RAM: A criterio di costo costante T R è Θ (T M ) A criterio di costo logaritmico (quello serio ) T R è Θ (T M log(t M )) (un accesso indiretto a i costa log(i))
44 La correlazione (temporale) tra MT e RAM: 2: Da RAM a MT (in un caso semplice ma centrale: riconoscimento di linguaggi senza usare MULT e DIV: la generalizzazione è banale) 44 Il nastro principale della MT: $ i j # M[i j ] $ $ i k # M[i k ] $ NB: Le varie celle RAM sono tenute in ordine Inizialmente il nastro è vuoto ---> in un generico istante vi si trovano memorizzate solo le celle che hanno ricevuto un valore (tramite una STORE) i j e M[i j ] sono rappresentati in codifica binaria Ulteriori nastri: Un nastro contiene M[0] (in binario) Un nastro di servizio
45 Una mossa della RAM è simulata dalla MT: 45 $ i j # M[i j ] $ $ i k # M[i k ] $ Esaminiamone un campione: LOAD h Si cerca il valore h nel nastro principale (se non si trova: errore) Si copia la parte accanto, M[h] in M[0] STORE h Si cerca h Se non si trova si crea un buco usando il nastro di servizio. Si memorizza h e si copia M[0] nella parte accanto (M[h]); si ricopia la parte successiva dal nastro di servizio Se h esiste già si copia M[0] nella parte accanto (M[h]); ciò può richiedere l uso del nastro di servizio se il numero di celle già occupate non è uguale a quelle di M[0] ADD* h Si cerca h; si cerca M[h]; Con facile generalizzazione: Simulare una mossa di RAM può richiedere alla MT un numero di mosse maggiorabile da c*lunghezza del nastro principale.
46 A questo punto: Lemma: la lunghezza del nastro principale è limitata superiormente da una funzione Θ(T R ) 46 $ i j # M[i j ] $ $ i k # M[i k ] $ Ogni cella i j -esima della RAM richiede nel nastro l(i j ) + l(m[i j ]) (+2) celle del nastro Ogni cella i j -esima esiste nel nastro se e solo se la RAM ha eseguito almeno una STORE su di essa. La STORE è costata alla RAM l(i j ) + l(m[i j ]) ===> Per riempire r celle, di lunghezza complessiva j=1..r l(i j )+l(m[i j ]), alla RAM occorre un tempo ( T R ) almeno proporzionale allo stesso valore. Dunque, per simulare una mossa della RAM, la MT impiega un tempo al più Θ(T R ) una mossa di RAM costa almeno 1; se la RAM ha complessità T R esegue al più T R mosse la simulazione completa della RAM da parte della MT costa al più Θ(T 2 R).
47 47 Alcune puntualizzazioni e avvertimenti Attenzione al parametro di dimensione dei dati: lunghezza della stringa di ingresso (valore assoluto) valore del dato (n) numero di elementi di una tabella, di nodi di un grafo, di righe di una matrice, tra tali valori sussistono certe relazioni, ma non sempre esse sono lineari (il numero n richiede una stringa di ingresso di lunghezza log(n)!). La ricerca binaria implementata con una MT viola il teorema di correlazione polinomiale?? Attenzione all ipotesi: riconoscimento di linguaggio ===> dati non già in memoria ===> complessità almeno lineare. Operazioni dominanti (e.g. I/O): complessità lineare rispetto alle operazioni dominanti e quadratica in complesso?
Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD
Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento
Informatica Teorica. Macchine a registri
Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire
Algoritmi e Strutture Dati
Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo
Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.
Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale
La Macchina RAM Shepherdson e Sturgis (1963)
La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni
PARTE III MACCHINE A REGISTRI
PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson
Elaborazione dell informazione
Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione
Esercizi sulla complessità di frammenti di pseudo-codice
Esercizi sulla complessità di frammenti di pseudo-codice Esercizio 1 Si determini la complessità temporale del seguente frammento di pseudo-codice in funzione di n. Il ciclo contiene solo istruzioni elementari;
Tempo e spazio di calcolo
Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica
Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.
E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 2 Marzo 2015 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica
Macchine a registri RAM (Random Access Machines)
Macchine a registri RAM (Random Access Machines) Introdotte da Shepherdson e Sturgis nel 1963 per sviluppare la teoria della calcolabilità con un modello astratto di un reale calcolatore (macchina di von
Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo
1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo
Architettura hardware
Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico
Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite
Problemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
Architettura dei computer
Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La
Proprietà delle notazioni asintotiche
Proprietà delle notazioni asintotiche Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche Argomento di oggi Proprietà
Esercizi Capitolo 2 - Analisi di Algoritmi
Esercizi Capitolo - Analisi di Algoritmi Alberto Montresor 19 Agosto, 014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo
Informatica Teorica. Sezione Cremona + Como. Appello del 20 Luglio 2004
Informatica Teorica Sezione Cremona + Como Appello del 20 Luglio 2004 Coloro che recuperano la I prova risolvano gli esercizi e 2 tra quelli indicati qui sotto entro un ora. Coloro che recuperano la II
STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER
1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono
Corso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29
Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,
Somma di numeri binari
Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,
Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni
Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da
Macchine di Turing: somma di due numeri
Informatica Teorica 2/2 M.Di Ianni Macchine di Turing: somma di due numeri Vogliamo definire una macchina di Turing che, presi in input due numeri n e m espressi in notazione binaria, calcola il valore
Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
Corso di Analisi Numerica
Corso di Laurea in Ingegneria Informatica Corso di 3 - PROBLEMI DI INTERPOLAZIONE Lucio Demeio Dipartimento di Scienze Matematiche 1 Interpolazione: Polinomio di Lagrange 2 3 Introduzione Problemi di interpolazione
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai
Dall algoritmo al programma
Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione
Esercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
Introduzione alla programmazione Esercizi risolti
Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma
ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI
ELEMENTI DI PROGRAMMAZIONE a.a. 22/3 MACCHINE, ALGORITMI, PROGRAMMI Andrea Prevete, UNINA2 23 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a stati finiti)... macchine di
Cammini minimi fra tutte le coppie
Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)
Algoritmi e Strutture Dati
Analisi asintotica e Ricorrenze Esercizi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Notazioni O, Ω e Θ Parte I Notazioni
Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso
Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso
Corso di Matematica per la Chimica
Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Università della Basilicata a.a. 2014-15 Introduzione La MATEMATICA è uno strumento
Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione
Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina
Il processore. Istituzionii di Informatica -- Rossano Gaeta
Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale
1 Ampliamento del piano e coordinate omogenee
1 Ampliamento del piano e coordinate omogenee Vogliamo dare una idea, senza molte pretese, dei concetti che stanno alla base di alcuni calcoli svolti nella classificazione delle coniche. Supponiamo di
Cosa è l Informatica?
Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore
La codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche
3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
Sviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
Teoria dell Informazione
Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro
Il Processore: l unità di controllo
Il Processore: l unità di controllo La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock Ad ogni impulso di clock la UC esegue un ciclo di esecuzione di
PROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash
Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che
Esercizi Capitolo 7 - Hash
Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive
Approssimazione di dati e funzioni
Approssimazione di dati e funzioni Richiamiamo i principali metodi di approssimazione polinomiale di un insieme di dati (x i, y i ), i = 0,..., n. Le ordinate y i possono essere i valori assunti nei nodi
Costo di esecuzione e complessità. Modello di costo e complessità di un algoritmo
Costo di esecuzione e complessità Modello di costo e complessità di un algoritmo Il costo di esecuzione di un algoritmo quantifica le risorse necessarie per l esecuzione dell algoritmo stesso numero di
Calcolo numerico e programmazione Rappresentazione dei numeri
Calcolo numerico e programmazione Rappresentazione dei numeri Tullio Facchinetti 16 marzo 2012 10:54 http://robot.unipv.it/toolleeo Rappresentazione dei numeri nei calcolatori
Componenti di un processore
Componenti di un processore Unità di Controllo Bus Interno REGISTRI Program Counter (PC) Registro di Stato (SR) Registro Istruzioni (IR) Registri Generali Unità Aritmetico- Logica Registro Indirizzi Memoria
Programmazione dinamica
Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione
11.4 Chiusura transitiva
6 11.4 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato)
Albero di Riscorsione
Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della
Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)
Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica
LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)
LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 4 Sommario. Dimostriamo il Teorema di Completezza per il Calcolo dei Predicati del I ordine. 1. Teorema di Completezza Dimostriamo il Teorema
Cosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio
Appunti di informatica Lezione 4 anno accademico 2015-2016 Mario Verdicchio Numeri primi Si definisce primo un numero intero maggiore di 1 che ha due soli divisori: se stesso e 1 Esempi di numeri primi:
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani ([email protected])
1 Definizione di sistema lineare omogeneo.
Geometria Lingotto. LeLing1: Sistemi lineari omogenei. Ārgomenti svolti: Definizione di sistema lineare omogeneo. La matrice associata. Concetto di soluzione. Sistemi equivalenti. Operazioni elementari
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è un insieme vuoto
Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
Come ragiona il computer. Problemi e algoritmi
Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema
RAPPRESENTAZIONE DELLE INFORMAZIONI
RAPPRESENTAZIONE DELLE INFORMAZIONI 1 RAPPRESENTAZIONE DELLE INFORMAZIONI Le informazioni gestite dai sistemi di elaborazione devono essere codificate per poter essere memorizzate, elaborate, scambiate,
