Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Calcolabilit e Complessit a a
Calcolabilt e Complessit a a
INFN via paradiso 12, 0532-974203 Lezioni: LUN - GIO 14:00 18:00 Orario di ricevimento: alla ne della lezione Esami: 2 compiti durante il corso + orale compito + orale libri di testo: Introduzione alla Calcolabilit, A. Marchetti Spaccamela, M. Protasi a Franco Angeli Linguaggi, Modelli, Complessit, G. Ausiello, F. DAmore, G. Gambrosi a Franco Angeli La Struttura degli Algoritmi, Fabrizio Luccio Bollati Boringhieri Editore
Schifano S. Fabio
Calcolabilit e Complessit a a
Schifano S. Fabio
Calcolabilit e Complessit a a
Schifano S. Fabio
Calcolabilit e Complessit a a
Il Linguaggio
Prima di dimostrare lequivalenza tra -calcolo e funzioni ricorsive deniamo un linguaggio di programmazione simile al -calcolo. La sintassi del linguaggio sar la segunete: a
E c
::= ::=
Il linguaggio comprende simboli per rappresentare gli interi simboli per rappresentare i valori booleani
Schifano S. Fabio
Calcolabilit e Complessit a a
simboli per rappresentare le variabili alcune funzioni primitive del linguaggio per manipolare i numeri e le list Currying:
+ : N (N N), +xy = x + y :
usando la -astrazione posso denire la funzione inc = x. + 1, cio la funzione che e preso un numero lo incrementa di 1 Questa propriet si chiama Currying e ci permette di pensare tutte le funzioni come a funzioni di una sola variabile. Esempio IF : B N N N: IF True E1E2 = E1 head(cons a b) = a tail(cons a b) = b
Schifano S. Fabio
Calcolabilit e Complessit a a
Funzioni Ricorsive ed Y
consideriamo la seguente denizione della funzione fattoriale: FACT = ( n . IF (= n 0) 1 ( n (FACT (- n 1)))) La funzione FACT denita in termini di s stessa. Il calcolo per non permette di e e o denire una formula in modo ricorsivo. Osserviamo per che tramite una astrazione possiamo scrivere o FACT = fact. ( n . ( IF (= n 0) 1 ( n (fact (- n 1)) ))) FACT cio FACT = H FACT e e H = fact.( n . ( IF (= n 0) 1 ( n (fact (- n 1)) ))) Loperatore H una lambda astrazione che non usa la ricorsione. e
Schifano S. Fabio
Calcolabilit e Complessit a a
Da un punto di vista matematico come se dovessimo determinare il valore di FACT che e sosfa lequazione FACT = H FACT cos come si fa per determinare il valore di x che soddisfa lequazione x2 2 = x. i Lequazione FACT = H FACT aerma che quando la funzione H applicata a FACT il e risultato FACT, ovvero FACT un punto sso di H. e e Quindi abbiamo bisogno di un operatore che calcola il punto sso di un altro operatore. Consideriamo loperatore Y denito nel seguente modo:
Calcolabilit e Complessit a a
Quindi la funzione FACT pu essere denita, in modo non ricorsivo, come o FACT = Y H Nei linguaggi funzionali loperatore Y fornito come primitivo. e
Schifano S. Fabio
Calcolabilit e Complessit a a
Infatti per esempio calcoliamo FACT 1: FACT 1 = = = = = = = = = = = = YH1 H (Y H) 1 ( fact.( n . ( IF (= n 0) 1 ( n (fact (- n 1)))))) ( Y H ) 1 ( n . ( IF (= 1 0) 1 ( n ((Y H) (- n 1))))) 1 ( IF (= 0 1) 1 ( 1 ((Y H) (- 1 1)))) ( 1 ((Y H) (- 1 1)) ) ( 1 ((Y H) 0) ( 1 (H (Y H) 0) ( 1 ( fact.( n . ( IF (= n 0) 1 ( n (fact (- n 1)) ))) (Y H) 0) ( 1 ( ( IF (= 0 0) 1 ( n ((Y H) (- 0 1)) )) (11) 1
Schifano S. Fabio
Calcolabilit e Complessit a a
Il Linguaggio FP
Formalmente, FP descritto da una quintupla e
O, : , P, F , D
ove:
O ` linsieme degli oggetti e : ` loperazione di applicazione e P ` linsieme delle funzioni primitive e F ` linsieme delle funzioni di ordine superiore e D ` linsieme delle denizioni date dallutente e
Schifano S. Fabio
Calcolabilit e Complessit a a
Linsieme O
Linsieme O costituisce linsieme delle sequenze di termini su cui applicare le funzioni di primo ordine. I termini sono linsieme dei valori numerici booleani e speciali come che denota il valore indenito. Una sequenza indicata con la seguente notazione: e
x1, x2, . . . , xn
Schifano S. Fabio
Calcolabilit e Complessit a a
Linsieme P
Linsieme P delle funzioni primitive costituito da funzioni matematiche e da funzioni per e la manipolazione delle sequenze Function +,-,*,/ s distl distr trans apndl apndr reverse Semantics
+ : x, y x + y, . . . s : x1, x2, . . . , xs, . . . , xn xs dislt : x, y1, . . . , yn x, y1 , . . . , x, yn distr : x1, . . . , xn , y x1, y , . . . , xn, y trans : x11, . . . , x1n . . . xm1, . . . , xmn x11, . . . , xm1 . . . x1n, . . . , xmn apndl : x, y1, . . . , yn x, y1, . . . , yn apndr : x1, . . . , xn , y x1, . . . , xn, y reverse : x1, x2, . . . , xn xn, . . . , x2, x1
Schifano S. Fabio
Calcolabilit e Complessit a a
Linsieme F
Linsieme F costituito da funzioni di ordine superiore (HOF ), cio funzioni i cui e e argomenti sono altre funzioni. Nellambito del linguaggio rappresentano i combinatori tramite i quali si possono combinare le funzioni primitive per denirne altre. La caratteristica fondamentale che tali forme sono in numero limitato. e Questo aspetto conferisce alla metodologia di programmazione FP una aspetto fortemente strutturato a vantaggio del processo di compilazione. Functional Composition Construction Reduce ApplyToAll Symbol Semantic
[. . .] /
Schifano S. Fabio
Calcolabilit e Complessit a a
Linsieme D
Linsieme D costituisce le denizioni dellutente, ovvero denizioni di funzioni di primo ordine ottenute come combinazioni, tramite i funzionali, di funzioni primitive. Ad esempio, la seguente un esempio di funzioni denita dallutente: e
{Suml
/+ }
che applicata ad una sequenza la riduce ad un unico valore corrispondente alla somma dei suoi elementi:
Schifano S. Fabio
Calcolabilit e Complessit a a
Esempi
Inner Product:
IP / ( ) trans
Matrix Multiplication
Schifano S. Fabio
Calcolabilit e Complessit a a
N-bosy Simulator
Dato un sistema di tipo gravitazionale, cio un sistema i cui componenti interagiscono e tramite forze esercitate reciprocamente, come il sistema solare, si vuole determinare istante per istante la posizione e la velocit di ciascun componente del sistema. a Sia:
Schifano S. Fabio
Calcolabilit e Complessit a a
distl distr [id, id]} ( CalF)} SumF} NewPos trans [result forces , id]}
Schifano S. Fabio
Calcolabilit e Complessit a a
Parallelismo e FP
Le caratteristiche interessanti di FP come linguaggio parallelo sono:
semantica data-parallel delle HOF : il funzionale agisce contemporaneamente su diversi elementi della struttura di input:
composition genera parallelismo di tipo pipeline apply-to-all e construction generano parallelismo di tipo farm reduce esplicita parallelismo di tipo tree
Schifano S. Fabio
Calcolabilit e Complessit a a
List Homomorphism
Il concetto di list homomorphism una propriet algebrica che verica le seguenti e a condizioni: una funzione h con elemento neutro u un omomorsmo sulle sequenze nite e se esiste un operatore binario associativo tale che:
h: =u h : (x+ y) = h : x h : y +
ove + loperazione di concatenazione delle sequenze. +e Esempio Sia Suml x1, . . . , xn = omomorsmo:
n i=1
xi, sia u =
Schifano S. Fabio
Calcolabilit e Complessit a a
List Homomorphism
Limportanza di questa propriet algebrica per la programmazione parallela deriva dal a Primo Terorema sugli Omomorsmi dovuto a Bird: una funzione h un omomorsmo se e solo se esistono un operatore binario e associativo ed una funzione f per cui vale la seguente relazione:
h (/) (f )
Questo teorema esprime il fatto che una funzione che verica la condizione di list omomorsmo riscrivibile come la composizione dei funzionali reduce e map. e Poich questi due funzionali possono espicitare grandi quantit di parallelismo, ne deriva e a che la funzione esplicita inerentemente del parallelismo. Il teorema permette di riscrivere automaticamente una denizione di funzione come combinazione di operatori che possono essere implementati in parallelo.
Schifano S. Fabio
Calcolabilit e Complessit a a
Funzioni di Comunicazione
Nellinterpretazione di FP come linguaggio di programmazione parallelo le funzioni distl, distr, trans, . . . svolgono un ruolo di routing dei dati. Infatti, si consideri come esempio la seguente applicazione:
Schifano S. Fabio
Calcolabilit e Complessit a a
lhs rhs
e da un punto di vista semantico non hanno alcun altro signicato. Le equazioni dellalgebra possono essere classicate in base ai parametri di interesse per la programmazione parallela quali: grado di parallelismo, grana di elaborazione e comunicazioni. In questo modo si ottiene un insieme di regole di riscrittura orientate che possono essere usatedurante il processo di compilazione.
Schifano S. Fabio
Calcolabilit e Complessit a a
s trans s
elimina dal programma la funzione di routing (trans) sostituendola con una funzione di calcolo, denita dal funzionale apply-to-all.
Schifano S. Fabio
Calcolabilit e Complessit a a
() () ( )
diminuisce il potenziale grado di parallelismo nel programma sostituendo due funzionali apply-to-all con uno solo. Tale regola potrebbe essere utili per casi in cui necessario bilanciare il carico. e
Schifano S. Fabio
Calcolabilit e Complessit a a
Calcolabilit e Complessit a a
Calcolabilit e Complessit a a
Il lhs, viceversa, espime la possibilit di poter applicare allintera sequenza di input sia la a funzione che la funzione . Nei due casi la grana di elaborazione che si determina dierente. e Anche queste regole possono essere utili per bilanciare il carico.
Schifano S. Fabio
Calcolabilit e Complessit a a
Topological Optimization
Limplementazione dei HOF deve tenere conto della rete di interconnessione su cui si eettua limplementazione. Ad esempio, limplementazione della reduce si mappa in modo naturale su una rete di interconnessione di nodi ad albero. Poich si dimostra che / un omomorsmo, sfruttando il primo teorema sugli omomorsmo, e possiamo scrivere
/ / (/)
Il lato destro di tale regola una espressione che si pu mappare ecentemente su una e o griglia bidimensionale di processing elements.
Schifano S. Fabio