Best of
Algorithms

1996

Understanding Molecular Simulation: From Algorithms to Applications


Daan Frenkel - 1996
    Computer simulators are continuously confronted with questions concerning the choice of a particular technique for a given application. A wide variety of tools exist, so the choice of technique requires a good understanding of the basic principles. More importantly, such understanding may greatly improve the efficiency of a simulation program. The implementation of simulation methods is illustrated in pseudocodes and their practical use in the case studies used in the text.Since the first edition only five years ago, the simulation world has changed significantly -- current techniques have matured and new ones have appeared. This new edition deals with these new developments; in particular, there are sections on:Transition path sampling and diffusive barrier crossing to simulaterare events Dissipative particle dynamic as a course-grained simulation technique Novel schemes to compute the long-ranged forces Hamiltonian and non-Hamiltonian dynamics in the context constant-temperature and constant-pressure molecular dynamics simulations Multiple-time step algorithms as an alternative for constraints Defects in solids The pruned-enriched Rosenbluth sampling, recoil-growth, and concerted rotations for complex molecules Parallel tempering for glassy HamiltoniansExamples are included that highlight current applications and the codes of case studies are available on the World Wide Web. Several new examples have been added since the first edition to illustrate recent applications. Questions are included in this new edition. No prior knowledge of computer simulation is assumed.

Distributed Algorithms


Nancy A. Lynch - 1996
    She directs her book at a wide audience, including students, programmers, system designers, and researchers.Distributed Algorithms contains the most significant algorithms and impossibility results in the area, all in a simple automata-theoretic setting. The algorithms are proved correct, and their complexity is analyzed according to precisely defined complexity measures. The problems covered include resource allocation, communication, consensus among distributed processes, data consistency, deadlock detection, leader election, global snapshots, and many others.The material is organized according to the system model--first by the timing model and then by the interprocess communication mechanism. The material on system models is isolated in separate chapters for easy reference.The presentation is completely rigorous, yet is intuitive enough for immediate comprehension. This book familiarizes readers with important problems, algorithms, and impossibility results in the area: readers can then recognize the problems when they arise in practice, apply the algorithms to solve them, and use the impossibility results to determine whether problems are unsolvable. The book also provides readers with the basic mathematical tools for designing new algorithms and proving new impossibility results. In addition, it teaches readers how to reason carefully about distributed algorithms--to model them formally, devise precise specifications for their required behavior, prove their correctness, and evaluate their performance with realistic measures.

Algorithms and Programming: Problems and Solutions


Alexander Shen - 1996
    It is structured in a problem-solution format that requires the student to think through the programming process, thus developing an understanding of the underlying theory. Although the author assumes some moderate familiarity with programming constructs, the book is easily readable by a student taking a basic introductory course in computer science. In addition, the more advanced chapters make the book useful for a course at the graduate level in the analysis of algorithms and/or compiler construction. Each chapter is more or less independent, containing classical and well-known problems supplemented by clear and in-depth explanations. While program examples are written in Pascal, any other procedural language (e.g., Modula, Oberon, C) may be used instead. Problems at all different levels progress in difficulty. Some problems are somewhat loosely connected to one another, and others are devoted to one specific algorithm (e.g., section on LR-parsing). The material covered includes such topics as combinatorics, sorting, searching, queues, grammar and parsing, selected well-known algorithms, and much more. Students and teachers will find this both an excellent text for learning programming and a source of problems for a variety of courses.