Communication complexity is the mathematical study
of scenarios where several parties need to communicate to achieve a common goal, a situation that naturally appears during
computation. This introduction presents the most recent developments in an accessible form, providing the language to unify
several disjoint research subareas. Written as a guide for a graduate course on communication complexity, it will interest
a broad audience in computer science, from advanced undergraduates to researchers in areas ranging from theory to algorithm
design to distributed computing. The first part presents basic theory in a clear and illustrative way, offering beginners
an entry into the field. The second part describes applications including circuit complexity, proof complexity, streaming
algorithms, extension complexity of polytopes, and distributed computing. Proofs throughout the text use ideas from a wide
range of mathematics, including geometry, algebra, and probability. Each chapter contains numerous examples, figures, and
exercises to aid understanding.
Preface; Conventions and preliminaries; Introduction; Part I. Communication: 1. Deterministic
protocols; 2. Rank; 3. Randomized protocols; 4. Numbers on foreheads; 5. Discrepancy; 6. Information; 7. Compressing communication;
8. Lifting; Part II. Applications: 9. Circuits and proofs; 10. Memory size; 11. Data structures; 12. Extension Complexity
of Polytopes; 13. Distributed computing.
Presents basic theory for graduate students and researchers with applications
in circuit and proof complexity, streaming algorithms and distributed computing.