Nella scienza dei dati, gli algoritmi e le strutture dati sono alla base delle funzioni e dell’archiviazione dei dati raccolti. La conoscenza dei codici di programmazione e della matematica applicata sono utili quando si studiano le strutture dati, ma anche i principianti assoluti hanno un ampio ventaglio di libri tra cui scegliere. Molti di questi libri sfruttano una struttura specifica per semplificare l’apprendimento, utilizzando codici ed esempi operativi a supporto della teoria. Una volta afferrati i fondamentali sulla scienza dei dati, il passo successivo è conoscere gli algoritmi.
Questo articolo prende in esame una serie di libri in inglese dedicati agli algoritmi e alle strutture, che rispondono a esigenze diverse, da quelle dei principianti a quelle per utenti intermedi e avanzati.
1. “Introduction to Algorithms” di Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein
Autori: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein
Sito web: Amazon
“Introduction to Algorithms” offre una panoramica esaustiva e una guida generale agli algoritmi. Questo libro intende essere un compendio enciclopedico degli algoritmi moderni, che in oltre 1000 pagine affronta in dettaglio tutti gli aspetti, sia pratici che teorici.
Ha un taglio decisamente pratico. Presenta i problemi con l’ausilio di schemi e dimostrazioni, dimostra lo svolgimento degli algoritmi e analizza la teoria alla base dei risultati. “Introduction to Algorithms” presuppone una discreta familiarità con i fondamentali della matematica e della teoria delle strutture dati, ma offre numerosi spunti anche ai lettori più esigenti.
2. “Algorithms Unlocked” di Thomas H. Cormen
Autore: Thomas H. Cormen
Sito web: Amazon
Thomas Cormen, autore di “Algorithms Unlocked”, cerca di fare luce sul lato più misterioso della tecnologia, svelando i segreti che si celano dietro le sue dinamiche interne. Molte cose che ormai diamo per scontate, come gli itinerari automatici del GPS o i protocolli di crittografia per la navigazione su Internet, si basano sugli algoritmi applicati.
Questo libro spiega come i computer utilizzano gli algoritmi per rivolvere i problemi, creando molte delle attività tecnologiche che osserviamo nella vita di tutti i giorni. Entra nei dettagli della vera essenza degli algoritmi informatici e spiega come utilizzarli per semplici compiti, tipo effettuare una ricerca, mettere in ordine degli elementi o comporre un grafico. Questo libro è una risorsa preziosa per chiunque sia interessato a scoprire come funziona un algoritmo nel mondo moderno.
3. “The Algorithm Design Manual” di Steven S. Skiena
Autore: Steven S. Skiena
Sito web: Amazon
“The Algorithm Design Manual” è un’introduzione alla creazione di algoritmi partendo da zero. Questo libro non si limita a spiegare la teoria dietro alla formulazione di un algoritmo, bensì propone esempi ed esercizi reali come punti di riferimento. Steven S. Skiena introduce il concetto di “pseudocodice” che semplifica il passaggio ai diversi linguaggi di programmazione che usano gli algoritmi. L’autore prende in esame una serie di algoritmi moderni, ad esempio la teoria grafica, la geometria computazionale e gli algoritmi multi-thread.
Il libro si divide in due parti: tecniche e risorse. La prima parte dedicata alle tecniche spiega come formulare e analizzare gli algoritmi. La seconda parte contiene un ampio compendio di risorse, con 75 dei problemi algoritmici più comuni, insieme ad esempi di implementazione dei linguaggi C/C++ e Java da consultare quando serve.
4. “Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles” di Narasimha Karumanchi
Autore: Narasimha Karumanchi
Sito web: Amazon
Questo libro, che illustra i problemi algoritmici più comuni con le rispettive soluzioni, serve più come bignami da sfogliare per un rapido ripasso su argomenti specifici in caso di colloquio o in occasione di una verifica o di un’esame di certificazione. Il libro affronta gli aspetti fondamentali delle strutture dati e spiega come si scrivono gli algoritmi e il loro funzionamento.
Per via del contenuto, il libro richiede una certa familiarità con i concetti matematici e con il linguaggio C/C++ per riuscire a completare gli esercizi. Con oltre 400 pagine suddivise in 20 capitoli, questo libro è essenzialmente un eserciziario per la risoluzione di problemi algoritmici.
5. “Grokking Algorithms: An illustrated guide for programmers and other curious people” di Aditya Bhargava
Autore: Aditya Bhargava
Sito web: Amazon
Questo è un libro facile da seguire per i programmatori che intendono approfondire la conoscenza degli algoritmi e della risoluzione di problemi in cui possono imbattersi. Il libro affronta alcuni degli algoritmi più comuni e pratici, da quelli di ordinamento a quelli di ricerca, via via fino ai problemi più complessi, come la compressione dei dati e l’intelligenza artificiale.
Le illustrazioni che accompagnano gli algoritmi sono un’ottima risorsa di apprendimento mentre la procedura dettagliata spiega i singoli processi passo dopo passo. Ogni esempio comprende frammenti di codice in Python. Il libro non è adatto per principianti assoluti, ma è utile come guida di ripasso per chi ha già una conoscenza di base dei linguaggi di programmazione.
6. “Algorithms” di Robert Sedgewick e Kevin Wayne
Autori: Robert Sedgewick e Kevin Wayne
Sito web: Amazon
“Algorithms” è un titolo semplice e straordinariamente sintetico che contrasta con la profondità e complessità del contenuto. Si tratta di un manuale completo che entra nei minimi dettagli degli algoritmi e delle strutture dati, facendone una risorsa valida per studi universitari. Il libro è altresì associato a un portale online completo di esempi operativi di codice sorgente.
Il libro tratta diverse tipologie di dati e spiega come ordinarli e analizzarli, evidenziando gli algoritmi utili per funzioni di ricerca, ordinamento ed elaborazione. Per la parte pratica, un portale associato al libro contiene esercitazioni, dati per test, visualizzazioni ed esempi completi di codice Java. Considerando il taglio accademico del libro, che viene utilizzato in ambito universitario, vuole essere un manuale utile per gli studenti che studiano l’argomento.
7. “Advanced Data Structures” di Peter Brass
Autore: Peter Brass
Sito web: Amazon
“Advanced Data Structures” evidenzia l’importanza delle strutture dati negli algoritmi e per l’ottimizzazione delle ricerche. Non è adatto ai deboli di cuore, ma è un testo universitario per lettori esperti e operatori del settore, che esplora le complessità dell’archiviazione dei dati nell’ambito delle attività di analisi.
Il libro esamina in dettaglio le diverse strutture dati con le relative varianti, compresi stacks, code, tabelle hash, ricerche ad albero, e non solo, senza trascurare strutture più specializzate come gli alberi intervallo. Il libro comprende anche esempi operativi di codice in linguaggio C e riferimenti di supporto. Si tratta di un manuale che esplora le tortuosità del data storage in modo completo e altamente dettagliato.
8. “Automate This: How Algorithms Came To Rule Our World” by Christopher Steiner
Autore: Christopher Steiner
Sito web: Chris Steiner | Amazon
Rispetto alla maggior parte dei libri sugli algoritmi questo non è un vero manuale di introduzione o di riferimento sull’argomento, bensì un excursus storico sull’importanza crescente degli algoritmi nelle nostre vite, che hanno finito per automatizzare attività qualificate che un tempo erano manuali.
Oggi gli algoritmi ci aiutano nella guida delle auto, migliorano i dispositivi di entertainment e anticipano i comportamenti umani. Questo libro vuole essere una sorta di racconto che cerca di contestualizzare gli aspetti più esoterici degli algoritmi.
Esclusione di responsabilità: Tableau non sostiene ufficialmente nessun prodotto, o parere espresso sullo stesso, contenuto in questa pagina che pertanto non è in alcun modo correlata ad alcun programma di affiliazione. Questo articolo è inteso esclusivamente per fini pedagogici e le informazioni riguardanti prodotti e pubblicazioni che precedono sono pubblicate affinché i lettori possano adottare decisioni consapevoli.