To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
This 2003 book provides an analysis of combinatorial games - games not involving chance or hidden information. It contains a fascinating collection of articles by some well-known names in the field, such as Elwyn Berlekamp and John Conway, plus other researchers in mathematics and computer science, together with some top game players. The articles run the gamut from theoretical approaches (infinite games, generalizations of game values, 2-player cellular automata, Alpha-Beta pruning under partial orders) to other games (Amazons, Chomp, Dot-and-Boxes, Go, Chess, Hex). Many of these advances reflect the interplay of the computer science and the mathematics. The book ends with a bibliography by A. Fraenkel and a list of combinatorial game theory problems by R. K. Guy. Like its predecessor, Games of No Chance, this should be on the shelf of all serious combinatorial games enthusiasts.
The P vs. NP problem is one of the fundamental problems of mathematics. It asks whether propositional tautologies can be recognized by a polynomial-time algorithm. The problem would be solved in the negative if one could show that there are propositional tautologies that are very hard to prove, no matter how powerful the proof system you use. This is the foundational problem (the NP vs. coNP problem) of proof complexity, an area linking mathematical logic and computational complexity theory. Written by a leading expert in the field, this book presents a theory for constructing such hard tautologies. It introduces the theory step by step, starting with the historic background and a motivational problem in bounded arithmetic, before taking the reader on a tour of various vistas of the field. Finally, it formulates several research problems to highlight new avenues of research.
We present a short and simple proof of the celebrated hypergraph container theorem of Balogh–Morris–Samotij and Saxton–Thomason. On a high level, our argument utilises the idea of iteratively taking vertices of largest degree from an independent set and constructing a hypergraph of lower uniformity which preserves independent sets and inherits edge distribution. The original algorithms for constructing containers also remove in each step vertices of high degree, which are not in the independent set. Our modified algorithm postpones this until the end, which surprisingly results in a significantly simplified analysis.
The 1994 discovery of Shor's quantum algorithm for integer factorization—an important practical problem in the area of cryptography—demonstrated quantum computing's potential for real-world impact. Since then, researchers have worked intensively to expand the list of practical problems that quantum algorithms can solve effectively. This book surveys the fruits of this effort, covering proposed quantum algorithms for concrete problems in many application areas, including quantum chemistry, optimization, finance, and machine learning. For each quantum algorithm considered, the book clearly states the problem being solved and the full computational complexity of the procedure, making sure to account for the contribution from all the underlying primitive ingredients. Separately, the book provides a detailed, independent summary of the most common algorithmic primitives. It has a modular, encyclopedic format to facilitate navigation of the material and to provide a quick reference for designers of quantum algorithms and quantum computing researchers.
String diagrams are a powerful graphical language used to represent computational phenomena across diverse scientific fields, including computer science, physics, linguistics, amongst others. The appeal of string diagrams lies in their multi-faceted nature: they offer a simple, visual representation of complex scientific ideas, while also allowing rigorous mathematical treatment. Originating in category theory, string diagrams have since evolved into a versatile formalism, extending well beyond their abstract algebraic roots, and offering alternative entry points to their study. This text provides an accessible introduction to string diagrams from the perspective of computer science. Rather than starting from categorical concepts, the authors draw on intuitions from formal language theory, treating string diagrams as a syntax with its own semantics. They survey the basic theory, outline fundamental principles, and highlight modern applications of string diagrams in different fields. This title is also available as open access on Cambridge Core.
Efficiently using data structures to collect, organise and retrieve information is one of the core abilities modern computer engineers are expected to have. This student-friendly textbook provides a complete view of data structures and algorithms using the Python programming language, striking a balance between theory and practical application. All major algorithms have been discussed and analysed in detail, and the corresponding codes in Python have been provided. Diagrams and examples have been extensively used for better understanding. Running time complexities are also discussed for each algorithm, allowing the student to better understand how to select the appropriate one. Written with both undergraduate and graduate students in mind, the book will also be helpful with competitive examinations for engineering in India such as GATE and NET. As such, it will be a vital resource for students as well as professionals who are looking for a handbook on data structures in Python.
We study several basic problems about colouring the $p$-random subgraph $G_p$ of an arbitrary graph $G$, focusing primarily on the chromatic number and colouring number of $G_p$. In particular, we show that there exist infinitely many $k$-regular graphs $G$ for which the colouring number (i.e., degeneracy) of $G_{1/2}$ is at most $k/3 + o(k)$ with high probability, thus disproving the natural prediction that such random graphs must have colouring number at least $k/2 - o(k)$.
This chapter covers quantum algorithmic primitives for loading classical data into a quantum algorithm. These primitives are important in many quantum algorithms, and they are especially essential for algorithms for big-data problems in the area of machine learning. We cover quantum random access memory (QRAM), an operation that allows a quantum algorithm to query a classical database in superposition. We carefully detail caveats and nuances that appear for realizing fast large-scale QRAM and what this means for algorithms that rely upon QRAM. We also cover primitives for preparing arbitrary quantum states given a list of the amplitudes stored in a classical database, and for performing a block-encoding of a matrix, given a list of its entries stored in a classical database.
This chapter covers the multiplicative weights update method, a quantum algorithmic primitive for certain continuous optimization problems. This method is a framework for classical algorithms, but it can be made quantum by incorporating the quantum algorithmic primitive of Gibbs sampling and amplitude amplification. The framework can be applied to solve linear programs and related convex problems, or generalized to handle matrix-valued weights and used to solve semidefinite programs.
This chapter covers quantum algorithmic primitives related to linear algebra. We discuss block-encodings, a versatile and abstract access model that features in many quantum algorithms. We explain how block-encodings can be manipulated, for example by taking products or linear combinations. We discuss the techniques of quantum signal processing, qubitization, and quantum singular value transformation, which unify many quantum algorithms into a common framework.
In the Preface, we motivate the book by discussing the history of quantum computing and the development of the field of quantum algorithms over the past several decades. We argue that the present moment calls for adopting an end-to-end lens in how we study quantum algorithms, and we discuss the contents of the book and how to use it.
This chapter covers the quantum adiabatic algorithm, a quantum algorithmic primitive for preparing the ground state of a Hamiltonian. The quantum adiabatic algorithm is a prominent ingredient in quantum algorithms for end-to-end problems in combinatorial optimization and simulation of physical systems. For example, it can be used to prepare the electronic ground state of a molecule, which is used as an input to quantum phase estimation to estimate the ground state energy.
This chapter covers quantum linear system solvers, which are quantum algorithmic primitives for solving a linear system of equations. The linear system problem is encountered in many real-world situations, and quantum linear system solvers are a prominent ingredient in quantum algorithms in the areas of machine learning and continuous optimization. Quantum linear systems solvers do not themselves solve end-to-end problems because their output is a quantum state, which is one of its major caveats.
This chapter presents an introduction to the theory of quantum fault tolerance and quantum error correction, which provide a collection of techniques to deal with imperfect operations and unavoidable noise afflicting the physical hardware, at the expense of moderately increased resource overheads.
This chapter covers the quantum algorithmic primitive called quantum gradient estimation, where the goal is to output an estimate for the gradient of a multivariate function. This primitive features in other primitives, for example, quantum tomography. It also features in several quantum algorithms for end-to-end problems in continuous optimization, finance, and machine learning, among other areas. The size of the speedup it provides depends on how the algorithm can access the function, and how difficult the gradient is to estimate classically.
This chapter covers quantum algorithms for numerically solving differential equations and the areas of application where such capabilities might be useful, such as computational fluid dynamics, semiconductor chip design, and many engineering workflows. We focus mainly on algorithms for linear differential equations (covering both partial and ordinary linear differential equations), but we also mention the additional nuances that arise for nonlinear differential equations. We discuss important caveats related to both the data input and output aspects of an end-to-end differential equation solver, and we place these quantum methods in the context of existing classical methods currently in use for these problems.
This chapter covers the quantum algorithmic primitive of approximate tensor network contraction. Tensor networks are a powerful classical method for representing complex classical data as a network of individual tensor objects. To evaluate the tensor network, it must be contracted, which can be computationally challenging. A quantum algorithm for approximate tensor network contraction can provide a quantum speedup for contracting tensor networks that satisfy certain conditions.