FormularioAlgoritmi per l'Ingegneria: definizioni, teoremi e formule delle note, in ordine di capitolo
In questa pagina 7
1. Problemi computazionali e analisi degli algoritmi
Problemi computazionali - istanze, soluzioni, correttezza e complessità
Definizione (algoritmo). Un algoritmoProcedura finita e deterministica: sequenza di passi elementari di un modello di calcolo. è una procedura computazionale finita e deterministica, specificata come sequenza di passi elementari (istruzioni) di un dato modello computazionale, che trasforma un ingresso in una e una sola uscita. Dal punto di vista insiemistico un algoritmo è una funzione dall'insieme degli ingressi a quello delle uscite. La particolare funzione realizzata è descritta dalla sequenza finita di istruzioni.
Definizione (problema computazionale). Un problema computazionale è una specifica astratta della relazione tra un insieme di istanze e un insieme di soluzioni : Si scrive anche per . La relazione deve essere:
- totale: ogni istanza ha almeno una soluzione, ;
- non necessariamente univoca: possono esistere con e .
Definizione (algoritmo che risolve un problema). Un algoritmo risolve se , e
Definizione (correttezza). Provare che è corretto per significa dimostrare Informalmente: la funzione di ingresso e uscita realizzata dall'algoritmo è coerente con la specifica.
Definizione (modello di costo). Un modello di costo associa a ogni istruzione del modello computazionale un costo non negativo . Il costo dell'esecuzione di sull'istanza è
Definizione (taglia). La taglia di un'istanza, , è una misura intera non negativa ragionevolmente rappresentativa della grandezza della codifica dell'istanza.
Definizione (tre complessità).
- Caso peggiore: .
- Caso migliore: .
- Caso medio: , media rispetto a una distribuzione fissata su .
Esempio (ricerca lineare). Cerco scandendo un array di elementi distinti, costo unitario per ogni confronto :
2. Il paradigma divide & conquer
Divide and conquer - proprietà di sottostruttura e albero delle chiamate
Definizione (proprietà di sottostruttura). Per è una terna :
- una soglia e la descrizione esplicita delle soluzioni delle istanze di base, cioè con ;
- una funzione di Divide , che a un'istanza con associa una sequenza di sottoistanze ;
- una funzione di Conquer , che da una sequenza di soluzioni ne costruisce una.
Devono valere, per ogni istanza non di base con :
- per (le sottoistanze sono strettamente più piccole);
- se sono tali che , allora .
Teorema. Un albero binario pieno con foglie ha sempre nodi interni.
Albero della ricorrenza e formula generale per le ricorrenze
Formula generale.
Master Theorem - enunciato, casi e applicazioni
Teorema (Master Theorem). La soluzione di soddisfa
Grafico interattivo: Soglie a confronto (b = 2): n^(log2 a) per a = 2 (n), a = 3 (n^1,58), a = 4 (n^2); e n log2 n
3. Moltiplicazione di matrici
Prodotto di matrici - algoritmo iterativo e ricorsivo a blocchi
Teorema (proprietà frattale del prodotto). I quadranti di si ottengono con la stessa formula del prodotto righe per colonne di matrici , dove al posto degli scalari ci sono i quadranti: per
Proposizione. per ogni : RMUL esegue esattamente le stesse operazioni di MUL, solo in ordine diverso.
Esempio (). Il livello ha una chiamata con somme (cioè operazioni); il livello ha chiamate di taglia , ognuna con somme di matrici ( operazioni), cioè ; il livello ha foglie, prodotti. Totale .
Algoritmo di Strassen e ibridazione
Definizione (ibridazione). Dati due algoritmi e per lo stesso problema, con ma con costanti moltiplicative più alte per nell'espressione esatta, l'ibridazione li combina in un algoritmo che ha lo stesso andamento asintotico del migliore ma, se possibile, costanti più basse.
Matrici circolanti e supercircolanti - algoritmi divide and conquer
Definizione. Una matrice di ordine è supercircolante (SC) se: (ogni scalare è SC di ordine ); oppure e
con matrici SC di ordine (quadranti alternati).
Esempio. Con quattro scalari : e sono SC di ordine ; componendole come si ottiene la SC di ordine
Teorema. Per ogni SC di ordine e ogni vale con (prodotto scalare della prima riga con ).
Teorema. Se sono SC e sono le prime righe viste come vettori colonna (), il prodotto soddisfa
dove è il prodotto componente per componente.
Definizione. Una matrice è circolante (CR) se ogni riga è la rotazione di una posizione verso destra della precedente, cioè per ogni .
Teorema (convoluzione ciclica, forma matriciale). Per due CR di ordine :
Esponenziazione veloce per quadrature successive
Definizione (potenza). Per e :
Per , ( fattori), senza parentesi per l'associatività.
Proprietà. Sia .
- Se è pari: .
- Se è dispari: .
4. Polinomi e FFT
Polinomi - rappresentazione per coefficienti e per valori e convoluzione
Definizione (polinomio di grado limitato da ). Il polinomio è rappresentato con coefficienti dal vettore e si scrive . Il numero è il limite di grado (degree bound); il grado effettivo è .
Teorema (interpolazione). Date coppie con per , esiste uno e un solo polinomio di grado limitato da tale che per .
Definizione (rappresentazione per valori). Dato a componenti distinte (la base), il polinomio di grado limitato da è rappresentato dalla coppia con . Basi diverse danno rappresentazioni diverse. L'unicità è garantita dal teorema.
Esempio. nella base è . Anche questa rappresentazione si può estendere: aggiungendo il punto si aggiunge , ma il padding è più elaborato di quello per coefficienti (bisogna calcolare un nuovo valore).
Definizione (convoluzione lineare). Per , il vettore ha componenti Se e allora . Con vettori di lunghezza e il risultato ha lunghezza .
Esempio. , (, ). Si ordinano i prodotti per :
Teorema (costo della convoluzione per definizione). Calcolare con richiede prodotti e somme, in tutto operazioni.
DFT, matrice di Fourier e radici n-esime dell'unità
Definizione (radice principale). La radice -esima principale dell'unità è . Le radici -esime dell'unità sono le sue prime potenze, , e formano il vettore . Poiché , vale per ogni (aritmetica modulare sugli esponenti; ).
Esempio (). e le potenze sono i vertici di un ottagono regolare inscritto nella circonferenza di raggio :
Grafico interattivo: Le otto radici ottave dell'unità: sono i vertici di un ottagono regolare sulla circonferenza di raggio 1, ω⁰ = 1 e ω⁴ = −1; ω^k forma l'angolo 2πk/8 con l'asse reale
Definizione (DFT). La trasformata discreta di Fourier di ordine è la funzione che a (coefficienti di ) associa le valutazioni di sulle radici -esime dell'unità: La coppia è una rappresentazione per valori di (le radici sono distinte, quindi vale il teorema di interpolazione).
Esempio (). Con e :
Per si ha , , , . Quindi (controllato con numpy, dopo aver cambiato il segno dell'esponente).
Lemma di cancellazione. Per interi positivi e : .
Lemma di dimezzamento. Per pari, i quadrati , , coincidono a coppie: per vale Elevando al quadrato le radici -esime si ottengono quindi le radici -esime, ciascuna due volte.
Esempio (). Quadrando si ottiene : le quattro radici quarte dell'unità, ciascuna due volte.
Lemma di somma. Per e interi:
Esempio. , : . : . : .
Teorema (convoluzione lineare). Siano e . Allora dove indica la concatenazione (padding con zeri), il prodotto componente per componente.
Esempio (). , , ordine . Con :
Fast Fourier Transform - algoritmo ricorsivo e trasformata inversa
Teorema (sottostruttura). Siano , , . Per :
Teorema (matrice inversa di Fourier). per .
Esempio. (dall'esempio di prima). : per esempio . Rovesciando: ; dividendo per : , i coefficienti originali.
Trasformate notevoli ed esponenziazione di polinomi con la FFT
Definizione. Siano e potenze di due, . Un vettore è -sparso se per ogni indice con .
Esempio (, ). . Le componenti non nulle hanno , ripetuta volte: .
5. Programmazione dinamica
Programmazione dinamica - Fibonacci, memoizzazione e schema del paradigma
Definizione. Si pone e per . I primi valori sono
Definizione (sottostruttura ottima). Un problema di ottimizzazione ha la proprietà di sottostruttura ottima se una soluzione ottima di un'istanza si ottiene da soluzioni ottime di istanze più piccole.
Longest Common Subsequence - ricorrenza, tabella e ricostruzione
Definizione (LCS). Date e , determinare una stringa di lunghezza massima che sia sottosequenza sia di sia di .
Esempio. , : la LCS è , lunga , realizzata in da e in da .
Teorema (sottostruttura della LCS). Siano , prefissi di e e sia una LCS di e .
- Se o , allora .
- Se e :
- (a) se , allora e è una LCS di e ;
- (b) se , allora è una LCS di oppure di , e quindi è la più lunga tra le due.
Matrix Chain Multiplication - parentesizzazione ottima
Definizione (MCM). Dato , determinare la parentesizzazione della catena associata che richiede il minimo numero di prodotti tra scalari.
Teorema. per ogni .
Grafico interattivo: Parentesizzazioni di una catena di n matrici: P(n) esatto (numeri di Catalan, 14 per n = 5, 4862 per n = 10) e approssimazione 4^(n-1) / (√π (n-1)^(3/2)), contro il limite inferiore 2^(n-1) / n
Teorema (sottostruttura ottima). Sia e sia un albero ottimo per . Allora esiste con tale che la radice ha come sottoalberi due alberi ottimi e , e dove è un indice che minimizza su .
6. Programmazione dinamica su stringhe
Allineamento di stringhe e sottosequenza palindroma più lunga
Definizione (allineamento). Date e su , un allineamento di lunghezza è una coppia di stringhe , su , con , tali che:
- è sottosequenza di e è sottosequenza di (esistono con , e analogamente per );
- le posizioni che non realizzano caratteri di (rispettivamente ) contengono solo ;
- in ogni posizione non ci sono due : .
Esempio. , . Due allineamenti:
Definizione. Una stringa è palindroma se per , cioè è uguale alla stringa letta al contrario. La stringa vuota è palindroma (). Esistono palindrome di lunghezza pari () e dispari ().
Memoizzazione di ricorrenze triangolari - conteggio esatto e diagonali costanti
Proposizione. Per ogni , tutti gli elementi con valgono uno stesso numero , dove
7. Il paradigma greedy
Paradigma greedy - scelta golosa, sottostruttura e selezione delle attività
Proprietà di scelta greedy. Esiste sempre una soluzione ottima che contiene la scelta greedy. Garantisce che la scelta incauta non compromette l'ottimalità.
Proprietà di sottostruttura ottima. Esiste una soluzione ottima che, oltre alla scelta greedy, contiene una soluzione ottima della sottoistanza residua.
Teorema (schema di correttezza). Se un algoritmo greedy compie ogni volta la scelta greedy, fa il clean-up e risolve ricorsivamente la residua, e valgono le due proprietà, allora ritorna una soluzione ottima.
Dimostrazione. Per induzione sulla taglia dell'istanza. Base: istanza vuota, la soluzione vuota è ottima. Passo: si assume l'algoritmo corretto sulle istanze più piccole, in particolare sulla residua, che è strettamente più piccola. Per le due proprietà esiste un ottimo composto dalla scelta greedy e da una soluzione ottima della residua. L'algoritmo ritorna la scelta greedy più la soluzione che l'ipotesi induttiva garantisce ottima per la residua: ha lo stesso costo di , quindi è ottima.
Definizione. Due attività e sono compatibili se gli intervalli sono disgiunti, , cioè se Un sottoinsieme è mutuamente compatibile se lo sono tutte le coppie. Il problema (activity selection) chiede un sottoinsieme mutuamente compatibile di cardinalità massima.
Esempio. , , cioè , , , , , . In rosso le attività scelte dall'algoritmo che segue (si trovano più sotto).
Grafico interattivo: Le sei attività: in rosso quelle scelte dal greedy del primo che finisce, a1, a4 e a6
Codifica di Huffman - codici prefissi, algoritmo e ottimalità
Definizione (codice prefisso). Una codifica è libera da prefissi (prefix-code) se nessuna parola è prefisso di un'altra.
Teorema. Un codice prefisso è invertibile sulle stringhe, e si decodifica con una sola scansione leggendo i bit fino a incontrare una parola.
Dimostrazione. Si legge dall'inizio il minimo numero di bit che forma una parola: questa è l'unica parola con tale inizio, perché una seconda parola, essendo anch'essa un inizio della stessa sequenza, sarebbe prefisso della prima o viceversa. Il primo carattere è dunque determinato; si ripete dal bit successivo.
Definizione (costo di un trie). (lunghezza media in bit per carattere).
Lemma di scambio. Siano due foglie di un trie con e e sia il trie ottenuto scambiando i caratteri e . Allora .
Dimostrazione. Dopo lo scambio sta alla profondità di e viceversa, e gli altri caratteri non si muovono: perché i due fattori sono entrambi .