1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-24 11:14:18 +00:00
appunti-steffo/2 - Algoritmi e strutture dati/1 - Appunti/01 - Il nome del corso.md

2.2 KiB

Il nome del corso

Cosa sono gli algoritmi?

Gli algoritmi sono modi sistematici per risolvere problemi.

Sono fondamentali per sviluppare software, in quanto i computer sono eccellenti esecutori di algoritmi.

Come si sviluppa un algoritmo?

Innanzitutto, bisogna conoscere gli input e gli output del problema, rispettivamente i dati di partenza e i dati di arrivo di esso; si ha quindi una fase di ricerca.

Poi, si deve trovare un procedimento che ci faccia risolvere il nostro problema: è quello che faremo in questa materia!

Infine, bisogna scrivere la soluzione in un modo che possa essere eseguita da un computer: questa è la programmazione.

Che tipo di problemi possiamo risolvere?

Un algoritmo risolve problemi di tipo generale, non ci interessa sapere il risultato di 123+456, ma vogliamo sapere il risultato di x+y, dove x e y sono due numeri naturali qualsiasi.

Un problema può essere quindi considerato circa come una funzione matematica, che connette ogni input a un output corrispondente.

Che caratteristiche ha un algoritmo?

Per prima cosa, ripetendo l'algoritmo più volte con lo stesso ingresso deve dare sempre la stessa uscita come risultato, finendo in un tempo finito.

Deve essere ben ordinato: cambiando l'ordine in cui vengono effettuate le operazioni, è probabile che anche il risultato cambi!

Le sue istruzioni devono essere non ambigue, cioè che non possano essere interpretate in più modi, e effettivamente realizzabili, cioè realizzabili con l'esecutore che vogliamo usare per eseguire l'algoritmo.

Esistono algoritmi equivalenti?

Sì! Possono esserci due algoritmi che dati gli stessi input, hanno gli stessi output, e quindi risolvono lo stesso problema.

In compenso, possono avere un numero di operazioni diverse, e quindi essere uno più veloce (da eseguire) dell'altro.

Come si verifica la correttezza di un algoritmo?

L'algoritmo deve essere valido per tutti gli input, anche se questi sono infiniti.

Possiamo effettuare prove matematiche per verificarne la correttezza; il principio di induzione è dunque una dei teoremi fondamentali dell'algoritmica.

Possiamo però verificare la non correttezza di un algoritmo trovando un singolo controesempio.