This book is an introduction to data structures and algorithms for functional programming languages, with a focus on proofs. Starting with sorting and searching, it moves on to priority queues and advanced design and analysis techniques: dynamic programming, amortized analysis, splay trees, skew heaps and pairing heaps. The final part of the book covers a number of selected fun topics: graph algorithms, string search, Huffman's algorithm for generating optimal codes and alpha-beta pruning of game trees.
The book covers both correctness (does the algorithm do what it is supposed to do?) and running time analysis (does the algorithm terminate within a specified number of steps?). It does so in a unified manner with inductive proofs about functional programs and their running time functions.
What sets this book apart from existing books on algorithms is that all proofs have been machine-checked, by the proof assistant Isabelle. That is, in addition to the text in the book, which requires no knowledge of proof assistants!, the Isabelle definitions and proofs are available online. The structured nature of Isabelle proofs permits even novices to follow the high-level arguments.
This book is aimed at teachers and students (it has been classroom-tested for a number of years) but is also a reference work for programmers and researchers who are interested in the (verified!) details of some algorithm or proof.
Paga facilmente con carta, Klarna, Apple Pay o Google Pay. Non sei soddisfatto? Hai sempre 14 giorni per il rimborso. Leggi di più nei nostri termini. Per qualsiasi domanda, scrivici a hello@memmo.org.
Memmo rende lo studio più facile, ovunque tu sia nel mondo. Qui trovi i tuoi libri di testo e strumenti di studio intelligenti, tutto in un unico posto: riassunti, quiz, podcast e flashcard. E poi c'è Ted, il tuo compagno di studio che risponde a ogni tua domanda. Oltre 50.000 studenti studiano già qui: è stato creato per aiutarti a imparare più velocemente e a stressarti meno.