Algoritmo
Nella sua definizione più semplice ed intuitiva un algoritmo è una sequenza ordinata di passi semplici che hanno lo scopo di portare a termine un compito più complesso (una ricetta da cucina, ad esempio, può essere considerata come un algoritmo che partendo da un insieme di singoli alimenti di base ed eseguendo una sequenza di passi, produce come risultato un piatto composto). In un modo più formale, possiamo quindi definire l' algoritmo come una sequenza ordinata e finita di istruzioni che, dato uno od una serie di elementi in input, produce uno od una serie di risultati in output.Il termine deriva dal nome del matematico arabo Muhammad Bin Musa Al-Khwarizmi, che pubblicò, tra gli altri, il libro dal titolo Kitab al-jabr wal muqabala\ (metodo per numerare ed ordinare le parti di un tutto), dal quale prende le origini la parola Algebra.
Se, come visto, una ricetta da cucina rappresenta un discreto esempio di algoritmo direttamente eseguibile da un essere umano, l'istruzione "aggiungere sale quanto basta" difficilmente sarà comprensibile per una macchina. Il linguaggio formale in cui i passi da seguire saranno espressi, dovrà quindi essere rigoroso e chiaro, senza dare adito a forme interpretative differenti, soprattutto nel caso in cui l'esecutore è un automa (di qualunque tipo: un computer, un telaio a schede, un robot saldatore).
Un passo di un algoritmo può essere definito anche tramite un altro algoritmo (chiamato in questo caso sottoalgoritmo), che suddivide il compito in compiti ancora più elementari. Facciamo un esempio:
l'algoritmo "va dal salotto alla cucina" si compone in realtà delle seguenti istruzioni:
- esci dal salotto
- curva a sinistra
- prosegui per il corridoio fino all'ultima porta sulla sinistra
- attraversa la porta a sinistra
L'algoritmo "attraversa la porta a sinistra" si compone di:
- controlla se la porta è aperta
- nel caso che la porta sia aperta salta il passo seguente
- apri la porta
- avanza di un metro
- protendi il braccio
- afferra la maniglia
- rotea la mano di 30 gradi in direzione antioraria
- applica una pressione alla maniglia diretta di fronte a te
- ...
- controlla se la porta è aperta
- nel caso che la porta sia aperta salta il passo seguente
- apri la porta
- protendi il braccio
- afferra la maniglia
- rotea la mano di 30 gradi in direzione antioraria
- applica una pressione alla maniglia diretta di fronte a te
- ...
- avanza di un metro
- non ambiguo: le istruzioni devono essere univocamente interpretabili;
- eseguibile: ogni istruzione deve terminare in tempo finito.
Gli algoritmi vengono raggruppati e catalogati a seconda della loro funzione o delle tecniche utlizzate per realizzarli. Questa è una lista dei principali algoritmi utilizzati in informatica:
- Di ordinamento
- Di ricerca
- Genetici o evolutivi
- Ricorsivi
- Codice automodificante
- Teoria della complessità algoritmica
- Conversione e codifica
- Compressione
- Senza perdita di informazioni:
- Run Lenght Encoding
- PackBits
- PCX
- Codifica a riduzione di Entropia
- Huffman (semplice codifica a riduzione di entropia)
- Codifica aritmetica (Codifica avanzata a riduzione di entropia)
- Codifica a dizionario
- DEFLATE
- LZ77 & LZ78;
- Lempel-Ziv-Welch (ZIP)
- LZMA
- Trasformazione Burrows-Wheeler
- PPM
- Run Lenght Encoding
- Con perdita di informazione
- Trasformazione discreta del coseno
- Compressione frattale
- Trasformazione frattale
- Wavelet
- MP3 (compressione audio basata su compressione simil-wavelet e DCT)
- JPEG2000 (compressione d'immagini che usa wavelet, Huffman e quantizzazione)
- Senza perdita di informazioni:
Link
Astronomia | Biologia | Botanica | Chimica | Ecologia | Economia | Fisica | Geometria | Informatica | Matematica | Medicina | Statistica | Telecomunicazioni |