

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
Algoritmi e ricerca binaria. Dispense generali
Tipologia: Dispense
1 / 2
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


Algoritmo (ant. algorismo) [dal lat. mediev. algorithmus o algorismus, dal nome d’origine, al-Khuw¯ arizm¯ı, del matematico arabo Muhammad ibn M¯usa del nono sec.]. 1 Termine che indicó nel medioevo i procedimenti di calcolo numerico fondati sopra l’uso delle cifre arabiche. Nell’uso odierno, anche con riferimento all’uso dei calcolatori, qualunque schema o procedimento matematico di calcolo; piú precisamente, un procedimento di calcolo esplicito e descrivibile con un numero finito di regole che conduce al risultato dopo un numero finito di operazioni, cioé di applicazioni delle regole. 2 In informatica, insieme di istruzioni che deve essere applicato per eseguire un’elaborazione o risolvere un problema.
Una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce a un ben determinato risultato in un tempo finito. Proprietà degli algoritmi
Problema: abbiamo 3 monete di cui 1 é falsa, chiamiamole m 1 ;m 2 ;m3. Le monete false sono identiche nell’aspetto alle monete reali ma hanno un peso leggermente diverso (non sappiamo se maggiore o minore). Avendo a disposizione una bilancia a due piatti, quante “pesate” sono necessarie per essere sicuri di capire qual é la moneta falsa? 1 Confronta due monete qualsiasi, ad esempio m1 e m2. 2 Se hanno lo stesso peso, allora la moneta m3 é falsa. 3 Se m1 e m2 non hanno lo stesso peso, confronta m1 con m3. 4 Se m1 e m3 hanno lo stesso peso, allora m2 é falsa. Altrimenti m1 é falsa. Problema: abbiamo 9 monete di cui 1 é falsa. Le monete false sono identiche nell’aspetto alle monete reali ma hanno un peso inferiore. Avendo a disposizione una bilancia a due piatti, riesci ad effettuare solo due “pesate” per trovare la moneta falsa? 1 Confronta due blocchi da 3 monete qualsiasi. 2 Se hanno lo stesso peso, allora la moneta falsa é nelle 3 che non sono state confrontate. 3 Altrimenti considera il blocco con il peso inferiore. 4 In qualunque caso ti rimane un blocco da 3 monete che contiene la falsa. Confronta due monete a caso. 5 Se hanno lo stesso peso, quella rimasta fuori é falsa. 6 Altrimenti quella con il peso minore é falsa.
Problema: lo studente Bob pensa ad un numero da 1 a 100 e lo scrive su un pezzo di carta. La studentessa Alice prova ad indovinare il numero. Bob può rispondere solo si o no. 1 Chiedi a Bob se il numero corretto é 1. 2 Se risponde sì, hai finito. 3 Riparti dal punto 1, aumentando di 1 il numero chiesto.
Se Alice é fortunata, quante domande le servono per indovinare il numero? Se invece é sfortunata? Nel caso migliore Alice indovina con una sola domanda. Nel caso peggiore Alice indovina il numero con 100 domande.
Problema: lo studente Bob pensa ad un numero da 1 a 100 e lo scrive su un pezzo di carta. La studentessa Alice prova ad indovinare il numero facendo delle domande a Bob. Bob può rispondere solo sì o no. 1 Chiedi a Bob se il numero corretto é minore di 50. 2 Se Bob risponde di sì, chiedi se il numero é minore di 25. Altrimenti, chiedi se il numero é minore di 75. 3 Ripeti il procedimento chiedendo il numero a metà tra il range di numeri possibili. Se Alice é fortunata, quante domande le servono per indovinare il numero? Se invece é sfortunata? Con questo metodo nel caso migliore Alice indovina con sei domande. Nel caso peggiore indovina con sette domande. L’importanza della ricerca binaria Se il numero é compreso tra 1 e 1000, il caso peggiore del primo algoritmo é di 1000 domande. Nel caso della ricerca binaria il caso peggiore é di sole 10 domande. Se il numero é compreso tra 1 e 1 000 000, il caso peggiore del primo algoritmo é di 1 000 000 di domande. Nel caso della ricerca binaria il caso peggiore é di sole 20 domande. In generale nell’informatica si cerca di trovare l’algoritmo più efficiente nel caso peggiore, cioè l’algoritmo che nel caso peggiore impiega il minimo il numero di passi necessari per terminare.
La ricerca nel dizionario
Attacco a forza bruta Supponiamo che la password sia di N caratteri 1 Provo tutte le combinazioni di caratteri a 1 cifra. 2 Provo tutte le combinazioni di caratteri a 2 cifre. 3 E così via fino a N caratteri. Attacco a forza bruta (1) Usare una password di solo numeri Cifre Combinazioni Tempo di generazione (secondi) 5 100 000 < 1 6 1 000 000 1 7 10 000 000 13 8 100 000 000 134 Attacco a forza bruta (2) Numero di combinazioni per una password di N caratteri Tipologia Cifre Combinazioni Solo numeri 10 10^N Solo lettere 26 26^N Lettere e numeri 36 36^N Lettere, numeri e 16 simboli 52 52^N