The Algorithm Design Manual

4 Luglio 2007 - di Filippo Toso

The Algorithm Design Manual

The Algorithm Design Manual insieme a Design Patterns è uno di quei libri che può cambiare la vita a qualsiasi programmatore.

Mi sono imbattuto in questo libro quasi per caso. Stavo sviluppando un sistema che gestisse un albero di link/domini in un array mono-dimensionale in PHP (es. A->B, B->C, B->D etc).Il problema risiedeva nel trovare l’algoritmo giusto che mi permettesse di organizzare una struttura ad albero gerarchico in un array mono-dimensionale a partire da una semplice lista di domini. Come faccio di solito mi sono messo a cercare su Google cose del tipo “php algorithm” e “algorithm manual“. Proprio cercando “algorithm manual” ho trovato la verisone HTML del libro di Steven S. Skiena. Ho iniziato a leggerlo online e mi sono appassionato immediatamente.

Un argomento che poteva essere ostico come quello sugli algoritmi è trattato in maniera molto chiara e precisa. L’autore è stato molto bravo a dosare la parte prettamente teorica e matematica con quella relativa all’implementazione ed alle ottimizzazioni degli algoritmi condendo il tutto con quelle che lui chiama le “War Story” ossia dei brevi racconti di esperienze fatte relative alla risoluzione di problemi di algoritmi nel mondo reale.

Il testo è diviso in due sezioni principali, le tecniche alla base dello studio e sviluppo degli algoritmi e le risorse, un ampio catalogo di algoritmi con le relative implementazioni.

Nella prima parte vengono spiegate ed analizzate le varie tecniche che ogni designer di algoritmi dovrebbe conoscere: strutture di dati, dynamic programming, backtracing, deep-first search ed euristiche di ricerca.

La seconda parte invece si rifà al già citato concetto dei “nani sulle spalle dei giganti” ovvero propone un fornito catalogo di algoritmi precedentemente implementati e testati in svariate situazioni che possono essere usati come base per implementare nuovi algoritmi secondo il concetto di riduzione (se A è divisibile in B e C allora implemento B e C ed avrò A).

Consiglio a tutti i programmatori desiderosi di migliorare le proprie doti di analisi e sviluppo di dare uno sguardo a questo libro.

The Algorithm Design Manual (inglese)
di Steve S. Skiena
Edito da Springer, 504 pagine, 1997
ISBN 0387948600