








Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti digitali riguardanti la complessità computazionale, indirizzati in particolare a chi frequenta il quinto anno di scuola superiore. Presi durante l'anno scolastico 2024-2025 presso il liceo scientifico Piero Gobetti di Torino. Il documento contiene appunti su: •Algoritmi, •Costo dell'algoritmo, •Costo singole istruzioni, •Analisi del caso ottimo, pessimo e medio, •Complessità asintotica, •Classi di complessità, •Problemi P ed NP, •Problemi NP hard, completi, EXP, •Karp riducibilità, •Problemi decidibili, •Problemi indecidibili, •Problemi trattabili e non trattabili, •Problema della Fermata
Tipologia: Appunti
1 / 14
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!









Algoritmo efficiente - > permette di risparmiare risorse computazionali, tempo e denaro. Di ogni algoritmo bisogna considerare due aspetti:
Per calcolare il costo dell’algoritmo ci si concentra sull’algoritmo in sé, tralasciando la sua implementazione, in quanto:
del problema. Gli ordini di grandezza individuano le classi di complessità. Si parla di complessità asintotica. Date due funzioni T(N) e g(N), si dice che T(N) è O(g(N)) [T(N) è di ordine di grandezza g(N), si legge “T di N è un O grande di g di N”], se esiste una costante C>0 tale che, per tutti i valori nel dominio di N maggiori di un certo N 0 , T(N) < C*g(N). Pertanto, dire che T(N) è O(g(N)), significa che g(N) è un limite superiore alla legge di crescita di T(N), cioè T(N) non cresce + di g(N). T(N) è proporzionale a g(N) se T(N) è O(g(N)) e g(N) è O(T(N)) - > T(N) e g(N) sono dello stesso ordine. T(N) è proporzionale a N^2 (ovvero è O(N^2 )) se è del tipo AN^2 +BN+K Classi di complessità:
Algoritmi che eseguono lo stesso numero di operazioni indipendentemente dalla dimensione dei dati in input Es: scambio di valore tra 2 variabili
Nel 2002 si è trovato una soluzione in tempo polinomiale per la ricerca dei numeri primi. La questione è talmente cruciale che è stati inclusa nei 7 problemi del Millennio, formulati dall’istituto matematico Clay e premiati con un milione di dollari. Conseguenze dell’uguaglianza P e NP:
I problemi NP-hard che sono anche NP sono detti NP-completi Es: molti giochi, come battaglia navale, Tetris, Minecraft, Campo minato e problemi combinatori come la creazione dell’orario scolastico o la disposizione degli invitati a un matrimonio nei vari tavoli. Dimostrare che un problema è NP-hard significa dimostrare che una soluzione algoritmica richiede talmente tante risorse, che il problema diventa praticamente intrattabile. Problema trattabile - > Problema con complessità polinomiale nel caso pessimo Problema intrattabile - > problema risolvibile, ma con un algoritmo di complessità maggiore di quelli polinomiali - > non risolvibile nell’atto pratico - > complessità almeno esponenziale nel caso pessimo Problema EXP - > Problema intrattabile, risolvibile in tempo esponenziale. Es: Scacchi - > determinare quale giocatore abbia una strategia vincente. Torre di Hanoi Karp-riducibilità - > tecnica che mette in relazione tra loro i problemi NP. Considerando due problemi di decisione (output o Sì o NO) A e B, diciamo che A è Karp- riducibile a B se esiste un algoritmo polinomiale che trasforma un’istanza del problema A in un’istanza del problema B.
Problema indecidibile - > Problema per cui non è possibile verificare se una soluzione proposta sia corretta oppure no mediante un algoritmo (Problema la cui soluzione non può essere decisa mediante degli algoritmi) - > non dipende dalle nostre conoscenze o tecnologie - > nessun problema indecidibile potrà essere risolto Alcuni problemi NP-hard sono decidibili altri indecidibili, come L’halting problem o problema della fermata: Dato in input un algoritmo A e un suo input B, il problema della fermata consiste nel determinare se A termina su B oppure no, cioè se dà una soluzione o meno - > non è possibile creare un algoritmo che risponda a questa domanda, lo ha dimostrato Alan Turing nel 1936 È possibile dimostrare che la macchina H non può esistere, indipendentemente dai limiti concreti dei computer e dei linguaggi.
Dimostrazione per assurdo, con altre 2 macchine Concateniamo le 3 macchine Diamo in input a X X
Esempi
Ordinamento di un vettore, moltiplicazione, caricamento di una matrice, ricerca numeri primi