



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
Introduzione a Pseudocodice,Valutazione efficienza di un algoritmo e ricerca binaria
Tipologia: Appunti
1 / 6
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




RELAZIONE che associa ad ogni elemento del dominio di INPUT un elemento del dominio di OUTPUT (rappresenta una classe di problemi concreti/istanze).
SEQUENZA FINITA di PASSI ELEMENTARI e NON AMBIGUI che ci consente di individuare, per ogni istanza del problema, una SOLUZIONE (se esiste) o di certificarne l’ INESISTENZA (se non esiste). NB. L’ISTANZA è un caso particolare del problema computazionale Quindi il primo step è ottenere una formulazione chiara e non ambigua del problema. Esempio1: Date le altezze di un gruppo di persone, individuare le altezze delle persone alte è ambiguo perché non so la definizione di persona alta Esempio2: Date le altezze in metri di un gruppo di 100 persone, restituire le altezze delle persone che sono alte. Le persone sono alte se la loro altezza è maggiore di 1,70 m adesso non più ambigui Le descrizioni in linguaggio naturale sono imprecise e spesso ambigue Tali descrizioni non rendono agevole il confronto tra soluzioni diverse e non è semplice stabilire la correttezza dell’algoritmo Cosa ci serve?
Linguaggio FORMALE e NON AMBIGUO che richiama i linguaggi di programmazione (sganciandosi però dai dettagli implementativi come dichiarazioni di variabili che differiscono da un linguaggio a un altro)
descriviamo il nostro algoritmo. Esempio:se l’algoritmo richiede di ordinare gli elementi di un insieme S ma l’ordinamento non è il cuore dell’algoritmo stesso possiamo scrivere S = sort(S) omettendo i dettagli relativi al modo in cui ordiniamo gli elementi di S ESEMPI 1 2 3 4 5 6
Devo cercare un elemento all’interno dell’insieme S. Posso utilizzare questo Algoritmo: 2.A Ma io posso ricercare l’elemento attraverso un algoritmo più efficiente, ovvero quello della RICERCA BINARIA:
Eseguire una ricerca della posizione di un dato v in S consiste nel restituire l’indice i tale che 1 ≤ i ≤ n se v è presente nella posizione i , 0 se v non è presente in S. Se non ho elementi in S da controllare restituisci 0 Altrimenti, analizza elemento centrale (con indice m) CASO 1. S[m] = v, trovato CASO 2. v<S[m], cerco a sinistra di m CASO 3. v>S[m], cerco a destra 2.B 2.AB
La CORRETTEZZA è la CAPACITÀ dell’algoritmo di risolvere il problema in modo corretto. Per valutare la correttezza ci serviamo del concetto di INVARIANTE che è una CONDIZIONE VERA in un certo punto del programma.
Usato per dimostrare la correttezza di un ALGORITMO ITERATIVO. Distinguiamo 3 fasi: