Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


ALGORITMI e ricerca binaria, Dispense di Elementi di Informatica

Algoritmi e ricerca binaria. Dispense generali

Tipologia: Dispense

2019/2020

Caricato il 05/03/2020

eginu.unige
eginu.unige 🇮🇹

4.2

(13)

17 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Breve approfondimento sugli algoritmi
Cos’é un algoritmo
Definizione su Treccani
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.
Algoritmo
Definizione classica
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
- Atomicità: ogni passo é elementare, cioè non si può scomporre ulteriormente.
- Non ambiguità: ogni passo deve essere interpretabile in modo univoco dall’esecutore.
- Finitezza: il numero di passi deve essere finito.
- Terminazione: l’esecuzione deve terminare.
- Effettività: l’esecuzione deve portare a un risultato univoco.
L’algoritmo della moneta falsa
Problema: abbiamo 3 monete di cui 1 é falsa, chiamiamole m1;m2;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.
La ricerca esaustiva
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.
pf2

Anteprima parziale del testo

Scarica ALGORITMI e ricerca binaria e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Breve approfondimento sugli algoritmi

Cos’é un algoritmo

Definizione su Treccani

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.

Algoritmo

Definizione classica

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

  • Atomicità: ogni passo é elementare, cioè non si può scomporre ulteriormente.
  • Non ambiguità: ogni passo deve essere interpretabile in modo univoco dall’esecutore.
  • Finitezza: il numero di passi deve essere finito.
  • Terminazione: l’esecuzione deve terminare.
  • Effettività: l’esecuzione deve portare a un risultato univoco.

L’algoritmo della moneta falsa

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.

La ricerca esaustiva

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.

La ricerca binaria

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.

Un algoritmo simile alla ricerca binaria

La ricerca nel dizionario

  • Quando si cerca una parola all’interno del dizionario tipicamente non si parte dall’inizio alla fine.
  • Ad esempio se cerchiamo la parola mattone, sfogliamo il dizionario partendo da circa metà.
  • Mentre se cerchiamo la parola casa, sfogliamo il dizionario partendo da un quarto.

Algoritmo per scoprire una password

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