Sei sulla pagina 1di 2

Complessità

giovedì 16 febbraio 2023 09:50

Valutare la qualità degli algoritmi

Algoritmo è il processo risolutivo di un problema


Istruzioni che si susseguono

Ha tutte le sue caratteristiche:


- Semplice
- Non ambiguo
- Generale
- Deterministico (per ogni passo esiste un unico passo successivo (non determinismo corrisponde nell'esplorare due
possibilità diverse, AI usano il non determinismo))

Ma cos'è un problema?
Un quesito che dev'essere risolto
Per ogni quesito non esiste un'unica risposta
Ce ne sono di migliori, peggiori, giuste e sbagliate
Domanda
Istanza è nella classe il primo oggetto creato Perché risolvere i problemi NP in P può essere un vantaggio e uno svantaggio?
È la valorizzazione di una classe, o meglio una possibile risoluzione di un problema Tutte le chiavi crittografiche diventerebbero inutili perché violabili in un tempo accettabile, ma ci
sarebbero vantaggio a scopi militari e civili, traduzioni istantanee, traffico, forecast (meteorologia)
La qualità di un algoritmo dipende da: Potrebbe trovare soluzione a corpo che si muove a velocità uguale o superiore a velocità della luce
- Tempo di esecuzione (complessità temporale)
- Occupazione di memoria (complessità spaziale) Algoritmo è efficiente se risolvibile in tempo ragionevole
Altrimenti è intrattabile (anche se computabile)
Ci sono operazioni che occupano più tempo di altre
Le istruzioni di un algoritmo hanno un peso
C'è distinzione netta per complessità di problemi computabili (con soluzione) Dimensione dei dati minima è log n
Ci sono quelli polinomiali, ovvero quelli computabili in tempo ragionevole
Quelli esponenziali computabili in tempo non ragionevole Problema della clique è 2
Il tempo di esecuzione dipende da: Le O grandi sono la misura della complessità asintotica
- I dati in ingresso
- Il linguaggio in cui è stato scritto
- La qualità della traduzione in sequenze di bit
- La velocità dell'elaboratore

Il tempo di calcolo si esprime come il numero complessivo di operazioni elementari in funzione della dimensione n dei
dati in ingresso

Incidono il numero di dati, la velocità del calcolatore

Le operazioni elementari sono:


- Aritmetiche
- Logiche
- Di confronto
- Di assegnamento

Il numero di operazioni considerate è valutato nel caso peggiore

Ci sono cicli e selezioni in cui la complessità dell'algoritmo aumenta


La complessità si può esprimere come una funzione f(n) della variabile n che esprime il numero di operazioni compiute
per un problema di dimensione n.

Ogni operazione elementare ha un costo unitario, il passo base

Nonostante il progresso tecnologico ci sono alcuni problemi con un tempo di calcolo molto elevato
Gli algoritmi si dividono in classi:
- Algoritmi di ricerca (n operazioni)
- Algoritmi di ordinamento (n2 operazioni)
- Algoritmi decisionali (2n operazioni)

La complessità asintotica è il comportamento della funzione all'infinito

Gli "O" grandi sono un criterio matematico utilizzato per dividere gli algoritmi in base alla loro complessità
Si dice che una funzione f(n) è di ordine g(n) e si scrive f(n) = O(g(n)) se esiste una costante C tale che f(n)≤ Cg(n)

- Algoritmi lineari
- Sottolineari
- Costanti
- Polinomiali
- esponenziali

All'interno della classe esponenziale è stata scoperta la classe NP (non deterministic polinomial)
Di loro natura esponenziale che possono essere ridotti a polinomiali girando su una macchina non
deterministica
Essendo nel non-determinismo occupano molto spazio e tempo

- Partizione
- Clique

- Moltiplicazione
- Ordinamento

Tra tutti gli Np esistono degli NP completi


Se uno riuscisse a risolvere un NP-completo riuscirebbe a risolvere gli altri NP

Problema della Clique si trova nel problema del commesso-viaggiatore, il corriere


Per riempire il furgone di merci lo fanno in un certo ordine
Corriere deve visitare le città una sola volta con il percorso minimo
Quindi è un problema esponenziale
Si può partire dalla città che si vuole

Informatica Pagina 1
Si può partire dalla città che si vuole
Pagina 281

Altro problema può essere quello del riempimento dello zaino


Ogni oggetto ha un suo peso e dimensione
È un problema completo e esponenziale

Oppure problema della colorazione delle mappe, delle mattonelle

Ci sono anche altri tipi di problemi

SI chiedevano se P è incluso in NP o se potesse anche essere uguale a NP


Stabilire la relazione tra i due insieme

Se P fosse uguale a NP potrebbero succedere cose molto importanti


Salterebbero tutte le chiavi di sicurezza crittografate, sarebbe un danno mondiale, dato che il tempo
polinomiale è ragionevole

Sarebbero risolti quasi completamente i problemi di traffico, scegliere il percorso più corto
Modifiche alla viabilità in base alle necessità

Le traduzioni online potrebbero essere simultanee in tutte le lingue del mondo

Il riconoscimento visivo quasi perfetto

Tutti però sono d'accordo che P non può essere uguale a NP

Risolvere i problemi intrattabili


Si può provare ad aggirarlo
Cercare un caso particolare e farlo funzionare
La risoluzione del caso particolare aiuta alla risoluzione di problemi più estesi
Se al problema NPC do dei casi particolari riducendo drasticamente la complessità ed è possibile che sia
risolvibile
Porto il caso pessimo al caso migliore

Altra strategia di risoluzione è affidarsi a leggi probabilistiche


Nella scelta tra due condizioni si calcola un indice MD indicando la probabilità che un problema si svolga
in un modo o in un altro

I problemi si dividono in:


- Decisione
- Ricerca
- Enumerazione
- Ottimizzazione

Gli algoritmi intrattabili (esponenziali) possono essere risolti attraverso:


- Approssimazioni
(Metodo di bisezione e calcolo integrale con quadratura o integrazione numerica
)
- Probabilità
- Casi speciali
- Esclusione dei casi peggiori

Informatica Pagina 2

Potrebbero piacerti anche