H31年度 分散アルゴリズム   Distributed Algorithms


アップデートお知らせメールへ登録 お気に入り講義リストに追加
月7-8(W935)  木7-8(W935)  


Distributed algorithms form the basis of cloud computing systems and networked applications. The primary objective of this course is to present the basic concepts, theory, and techniques that are at the heart of distributed systems.
As much as possible, the course tries to relate algorithms and their proofs, with practical implementations, by interleaving coursework with occasional practical exercises.
This course extends basic lectures on operating systems concepts (in particular about concurrency) and presents the fundamental aspects of distributed algorithms, such as causality, resource allocation, the evaluation of global predicates, and message ordering, as well as the most common approaches used to solve them.


Upon completing this course, the student will be able to understand how distributed systems work and what problems these systems need to address. This understanding will be a useful tool to formalize ideas and acquire a sharper and deeper understanding of the issues involved in more specific areas of asynchronous concurrent systems, such as cloud computing systems, peer-to-peer systems, cluster computing, IoT, system-on-chip, etc.
In addition and more importantly, the student will acquire a modular view of algorithms by being able to decompose classical algorithms into their basic parts and recombine them to address new problems or new environments.
At the end of the course, the student should be able to read and quickly understand most of the recent literature on distributed algorithms.


Distributed algorithms, message-passing, network topology, synchrony models, global states, logical time, resource allocation, termination detection, probabilistic algorithms


国際的教養力 コミュニケーション力 専門力 課題設定力 実践力または解決力
- - -


Typical classes will combine slide-based presentations, interactive discussions, and practical programming exercises. Active contribution to class discussions will be strongly encouraged. To prepare for class, students should read the course schedule section and check what topics will be covered. Required learning should be completed outside of the classroom for preparation and review purposes.


  授業計画 課題
第1回 Introduction to distributed algorithms - Nature and purpose of a distributed system. How to express distributed algorithms and prove their correctness. - Preparation and settings of the programming environment. Prepare a working programming environment with network, IntelliJ IDEA and Java JDK.
第2回 Network traversal algorithms - Discovery of the communication graph - Parallel traversal, spanning tree, depth-first traversal. 授業時に指示する.
第3回 Distributed graph algorithms (I) - Distributed shortest path - Distributed graph coloring - Maximal independent set 授業時に指示する.
第4回 Distributed graph algorithms (II) - Computing a global function, Distance-vector routing - Finding cut vertices 授業時に指示する.
第5回 Mobile objects and navigation - Concept of mobile objects in a process graph - Navigation on a spanning tree 授業時に指示する.
第6回 Distributed mutual exclusion - Mutual exclusion problem, permission-based algorithms, edge-reversal - Quorum construction 授業時に指示する.
第7回 Causality and logical time - Causality in distributed systems - Locigal time (linear time, vector time) - Cuts and consistent cuts 授業時に指示する.
第8回 Global state and checkpointing - Global states, snapshot algorithms - Application to checkpointing 授業時に指示する.
第9回 Distributed termination detection (I) - Termination predicate; termination detection problem - Safra's termination detection algorithm 授業時に指示する.
第10回 Distributed termination detection (II) - Consistent intervals and waves - Termination detection in an arbitrary topology 授業時に指示する.
第11回 Simulating synchrony in asynchronous systems - Notion of synchronizers - Basic synchronizers 授業時に指示する.
第12回 Leader election - Leader election problem, leader election in a ring - Adaptation to leader election in an arbitrary topology - Randomized leader election in anonymous networks 授業時に指示する.
第13回 Order constraints on message delivery - Causal message delivery - Totally ordered broadcast 授業時に指示する.
第14回 Distributed shared memory - Abstraction definition, shared register - Atomic consistency (linearizability) - Sequential consistency 授業時に指示する.
第15回 Q&A + final test 授業時に指示する.


Michel Raynal, "Distributed Algorithms for Message-Passing Systems," Springer, 2013. ISBN 978-3-642-38123-2
(NB: e-book available for download through Tokyo Tech agreement with Springer)


Course materials. Slide copies, research papers, programming resources, ... distributed during lectures and/or made available for download from the course webpage.


The examination will assess the understanding of basic concepts of distributed algorithms (problems, algorithms, correctness, and methodology). Programming reports will assess the ability to apply the knowledge to practical problems.
Homework, programming, and class discussions (50%), tests and exams (50%)


  • MCS.T213 : アルゴリズムとデータ構造
  • MCS.T314 : オペレーティングシステム
  • MCS.T406 : 分散システム


Basic knowledge on algorithms and data structures, and some knowledge on concurrent systems (as typically taught in undergraduate courses on operating systems). To fully benefit from the practical exercises, students are advised to have some programming experience, preferably in Scala, Java, Javascript, Swift, Python, Ruby, Scheme, ML,...


As much as possible, prepare and bring a laptop (preferably Mac, Linux, or BSD) with university wireless network support and latest versions of IntelliJ IDEA and Java JDK already installed.