Sei sulla pagina 1di 3

Problemi e complessità

● Problemi non risolvibili → es. Questa frase è falsa


● Problemi risolvibili
○ Non trattabili(costo esponenziale)
○ Trattabili(costo polinomiale)

Calcolabilità → Classificare risolvibili e non


Complessità → Facili e difficili

Costo di un algoritmo
● Spazio → Memoria richiesta
● Tempo → Necessario all’esecuzione

Di solito si contano i cicli, in funzione di n, o i confronti/scambi negli array

Confronto tra algoritmi


Caso peggiore nella ricerca → Elemento non presente
lineare → n confronti
binaria → log 2 n confronti

Definizione di complessità
Una funziona f(n) ha ordine 0(g(n)) sse:
● Esistono due costanti positive c e m tali che |f (n)|≤ c|g( n)| ∀ n> m
Un algoritmo ha una complessità 0(g(n)) sse:
● Il tempo di calcolo t(n), sufficiente per eseguire l’algoritmo con ogni istanza di
dimensione n, ha ordine 0(g(n))

Analisi asintotica
Per n abbastanza grande, a meno di una costante moltiplicativa, f(n) non supera in modulo
g(n).
Comportamento dell’algoritmo al limite, per dimensione delle istanze m

Complessità intrinseca
Limite inferiore di complessità di un problema
Una funzione f(n) è Ω(g(n)) sse
● Esistono due costanti positive c e m tali che |f(n)| ≥ c|g(n)| ∀ n > m
Un problema ha una delimitazione inferiore alla complessità Ω(g(n)) sse
● Per ogni algoritmo risolutore esiste una istanza per cui il tempo di calcolo t(n) è
Ω(g(n))
Algoritmo ottimale
Algoritmo che risolve un problema P, con costo di esecuzione 0(g(n)) e delimitazione
inferiore Ω(g(n))
es. di algoritmo ottimale → ricerca binaria

Algoritmi di ordinamento
Per ricerca binaria è necessario avere dati ordinati
Algoritmi di ordinamento più semplici hanno complessità n2
Algoritmi di ordinamento divide et impera → Complessità n ∙ log 2 n

Bubble Sort
● Gli elementi maggiori salgono rapidamente, come bollicine di champagne
● Caso peggiore: lista rovesciata
○ Numero di confronti e scambi: n2 /2
● Anche in media, circa stessi valori
Selection Sort
● Ad ogni ciclo principale, si seleziona il valore minore della parte non ordinata
Insertion Sort
● Si prende il primo valore alla destra della parte ordinata, e si capisce dove va
inserito, aumentando la parte ordinata di 1
● Caso peggiore → 0(n2)
● In media si scorre solo ½ della prima parte
● Ottimizzazioni → Ricerca binaria in parte ordinata, inserimento a coppie o gruppi
Quick Sort
● Dato un insieme, sceglie un valore pivot, e crea due sottoinsiemi, <= pivot, > pivot
● Stesso algoritmo sui 2 insiemi(ricorsione)
● Caso medio → n ⋅ log 2 n
Merge Sort
● Simile a QuickSort ma non si sceglie pivot
● La fusione ha complessità lineare
● Caso peggiore, caso medio n ⋅log 2 n
● Spazio: la fusione richiede altra memoria: n
○ Si può evitare il costo con spostamenti in place
○ Aumenta però complessità(necessari più scambi)
● Accessi sequenziali, buon uso cache

Classi di complessità
● Costante → Numero di operazioni non dipendente da n
● Sotto-lineare → n k , k <1 ; log n → Ricerca binaria
● Lineare → Numero operazioni n → Ricerca lineare
● Sovra-lineare → n ⋅log n
● Polinomiale → n k , k ≥2
Algoritmo efficiente → Fino a classe polinomiale
Problema trattabile → Esiste un algoritmo efficiente

Complessità esponenziale: k n
Complessità super-esponenziale: n!, n n
Problemi intrattabili
● Non esiste algoritmo efficiente
● Soluzioni non esatte/ottime
● Ma minimi locali

Problemi P ed NP
Problemi P → Esiste algoritmo deterministico polinomiale
Problemi NP → Esiste algoritmo non-deterministico polinomiale
● Su macchine deterministiche: non noto algoritmo polinomiale per la ricerca di unas
oluzione
● Ma algoritmo polinomiale per la verifica di una soluzione
Esempio NP: Knapsack
Esiste una combinazione di elementi che realizza utilità >=V, con peso <=W

Linguaggi di classe P, oppure NP: stringa X riconosciuta in tempo polinomiale rispetto a x da


DTM, oppure NTM

Millenium Problem
● Sappiamo che N ⊆ NP(DTM caso particolare di NTM)
● Ma non è dimostrato che P ≠ NP , né che P=NP
○ Se P=NP, risolvere un rompicapo o verificarlo
● Problemi di classe EXP → Risolti in tempo esponenziale da DTM
○ Sappiamo che NP⊆ exp
○ P ⊆NP ⊆exp

Potrebbero piacerti anche