Two-Process Systems TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A A AA Companion slides for Distributed Computing.

Slides:



Advertisements
Similar presentations
Topology in Distributed Computing: A Primer 1 / 16 Sergey Velder SPbSU ITMO.
Advertisements

NP-Hard Nattee Niparnan.
Intel Do-It-Yourself Challenge node.js
Circuit and Communication Complexity. Karchmer – Wigderson Games Given The communication game G f : Alice getss.t. f(x)=1 Bob getss.t. f(y)=0 Goal: Find.
The State Transition Diagram
N-Consensus is the Second Strongest Object for N+1 Processes Eli Gafni UCLA Petr Kuznetsov Max Planck Institute for Software Systems.
Algorithms and data structures
7. Optimization Prof. O. Nierstrasz Lecture notes by Marcus Denker.
Midwestern State University Department of Computer Science Dr. Ranette Halverson CMPS 2433 – CHAPTER 4 GRAPHS 1.
Generalization and Specialization of Kernelization Daniel Lokshtanov.
Introduction to Software Engineering 7. Modeling Behaviour.
1 Nir Shavit Tel-Aviv University and Sun Microsystems Labs (Joint work with Maurice Herlihy of Brown University) © Herlihy and Shavit 2004 The Topological.
The Branching Storyboard Chapter 4.3 in Sketching the User Interface: The Workbook Image from:
1 Constructing Convex 3-Polytopes From Two Triangulations of a Polygon Benjamin Marlin Dept. of Mathematics & Statistics McGill University Godfried Toussaint.
12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research Roadmap  Summary: —Trends in programming paradigms  Research:...
Shared Counters and Parallelism Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
ESE Einführung in Software Engineering X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
Deriving an Algorithm for the Weak Symmetry Breaking Task Armando Castañeda Sergio Rajsbaum Universidad Nacional Autónoma de México.
Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists.
CP — Concurrent Programming X. CHAPTER Prof. O. Nierstrasz Wintersemester 2005 / 2006.
12. eToys. © O. Nierstrasz PS — eToys 12.2 Denotational Semantics Overview:  … References:  …
SWOT Analysis Strengths Weaknesses SWOT Opportunities Threats.
Important Problem Types and Fundamental Data Structures
Sequential Storyboards Chapter 4.1 in Sketching the User Interface: The Workbook Image from:
Collecting Images & Clippings Chapter 2.3 in Sketching User Experiences: The Workbook.
Win8 on Intel Programming Course The challenge Paul Guermonprez Intel Software
The Best Algorithms are Randomized Algorithms N. Harvey C&O Dept TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A AAAA.
Nattee Niparnan. Easy & Hard Problem What is “difficulty” of problem? Difficult for computer scientist to derive algorithm for the problem? Difficult.
Multicore Programming
Manifold Protocols TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A A AA Companion slides for Distributed Computing.
Internet of Things with Intel Edison Compiling and running Pierre Collet Intel Software.
1 © P. Kouznetsov A Note on Set Agreement with Omission Failures Rachid Guerraoui, Petr Kouznetsov, Bastian Pochon Distributed Programming Laboratory Swiss.
The Animated Sequence Chapter 5.1 in Sketching User Experiences: The Workbook.
Sketching Vocabulary Chapter 3.4 in Sketching User Experiences: The Workbook Drawing objects, people, and their activities.
Win8 on Intel Programming Course Paul Guermonprez Intel Software
State of the Ward in 2007 Version 1.0 A Fifth Sunday Lesson Given in the Sterling Park Ward, Ashburn, VA Stake by D. Calvin Andrus, Bishop
Design of Everyday Things Part 2: Useful Designs? Lecture /slide deck produced by Saul Greenberg, University of Calgary, Canada Images from:
Multiprocessor Architecture Basics Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists.
The Narrative Storyboard Chapter 4.4 in Sketching User Experiences: The Workbook.
Images of pesticides By: Leslie London, University of Cape Town This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5.
Onlinedeeneislam.blogspot.com1 Design and Analysis of Algorithms Slide # 1 Download From
The Relative Power of Synchronization Operations Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit.
Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists.
Sketching Vocabulary Chapter 3.4 in Sketching User Experiences: The Workbook Drawing objects, people, and their activities.
The Best Algorithms are Randomized Algorithms
Agenda Video pre-presentations Digital sketches & photo traces
Courtsey & Copyright: DESIGN AND ANALYSIS OF ALGORITHMS Courtsey & Copyright:
Colorless Wait-Free Computation
Algebraic Topology and Distributed Computing part two
Byzantine-Resilient Colorless Computaton
Elements of Combinatorial Topology
Algebraic Topology and Distributed Computing
Elements of Combinatorial Topology
Solvability of Colorless Tasks in Different Models
FOTW Worksheet Slides Christopher Penn, Financial Aid Podcast Student Loan Network.
Wait-Free Computability for General Tasks
CS 154, Lecture 6: Communication Complexity
Training of Trainers Workshop
Simulations and Reductions
Combinatorial Topology and Distributed Computing
Algebraic Topology and Decidability in Distributed Computing
Renaming and Oriented Manifolds
Combinatorial Topology and Distributed Computing
Rodolfo Conde Joint work with Sergio Rajsbaum Instituto de Matemáticas
Task Solvability in Different Models
Algebraic Topology and Distributed Computing part three
Combinatorial Topology and Distributed Computing
Combinatorial Topology and Distributed Computing
Presentation transcript:

Two-Process Systems TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A A AA Companion slides for Distributed Computing Through Combinatorial Topology Maurice Herlihy & Dmitry Kozlov & Sergio Rajsbaum Distributed Computing through Combinatorial Topology

Two-Process Systems Two-process systems can be captured by elementary graph theory gentle introduction to more general structures needed later for larger systems Distributed Computing through Combinatorial Topology 2

Road Map Elementary Graph Theory Tasks Models of Computation Approximate Agreement Task Solvability Distributed Computing through Combinatorial Topology 3

Road Map Elementary Graph Theory Tasks Models of Computation Approximate Agreement Task Solvability Distributed Computing through Combinatorial Topology 4

A Vertex Distributed Computing through Combinatorial Topology 5

A Vertex Combinatorial: an element of a set. Distributed Computing through Combinatorial Topology 6

A Vertex Combinatorial: an element of a set. Geometric: a point in Euclidean Space Distributed Computing through Combinatorial Topology 7

An Edge 8

Combinatorial: a set of two vertexes. 9

An Edge Combinatorial: a set of two vertexes. Geometric: line segment joining two points 10

A Graph Distributed Computing through Combinatorial Topology 11

A Graph Combinatorial: a set of sets of vertices. Distributed Computing through Combinatorial Topology 12

A Graph Combinatorial: a set of sets of vertices. Geometric: points joined by line segments Distributed Computing through Combinatorial Topology 13

Graphs finite set V with a collection G of subsets of V, Distributed Computing through Combinatorial Topology 14

Graphs simplices (singular: simplex) simplices (singular: simplex) finite set V with a collection G of subsets of V, vertices Distributed Computing through Combinatorial Topology 15

Graphs Distributed Computing through Combinatorial Topology (1) If X 2 G, then |X| · 2 finite set V with a collection G of subsets of V, 16

Graphs Distributed Computing through Combinatorial Topology (1) If X 2 G, then |X| · 2 finite set V with a collection G of subsets of V, vertex: |X| = 1 edge: |X|= 2 17

Graphs (1) If X 2 G, then |X| · 2 (2) for all v 2 V, {v} 2 G finite set V with a collection G of subsets of V, 18

Graphs (1) If X 2 G, then |X| · 2 (2) for all v 2 V, {v} 2 G (3) for all X 2 G, and Y ½ X, Y 2 G finite set V with a collection G of subsets of V, 19

Dimension dim(X) = |X|-1. dimension 0 dimension 1 Distributed Computing through Combinatorial Topology 20

Pure Graphs pure of dim 0 pure of dim 1 Distributed Computing through Combinatorial Topology 21

Graph Coloring Distributed Computing through Combinatorial Topology 22

Graph Coloring Â: G ! C Distributed Computing through Combinatorial Topology 23

Graph Coloring Â: G ! C for each edge (s 0, s 1 ) 2 G, Â(s 0 )  Â(s 1 ). Distributed Computing through Combinatorial Topology 24

Graph Coloring Â: G ! C for each edge (s 0, s 1 ) 2 G, Â(s 0 )  Â(s 1 ). usually process names chromatic graphs Distributed Computing through Combinatorial Topology 25

Graph Labeling Distributed Computing through Combinatorial Topology 26

Graph Labeling f: G ! L Distributed Computing through Combinatorial Topology 27

Graph Labeling f: G ! L usually values from some domain Distributed Computing through Combinatorial Topology 28

Labeled Chromatic Graph name(s) = Â(s) view(s) = f(s) Distributed Computing through Combinatorial Topology 29

Simplicial Maps Vertex-to-vertex map … that also sends edges to edges. Distributed Computing through Combinatorial Topology 30

Rigid Simplicial Maps A simplicial map can send an edge to a vertex … Distributed Computing through Combinatorial Topology 31

Rigid Simplicial Maps A simplicial map can send an edge to a vertex … A simplicial map that sends distinct vertices to distinct vertices is rigid. Distributed Computing through Combinatorial Topology 32

A Path Between two Vertices Distributed Computing through Combinatorial Topology 33

A Path Between two Vertices A graph is connected if there is a path between every pair of vertices Distributed Computing through Combinatorial Topology 34

Not Connected A graph is connected if there is a path between every pair of vertices Distributed Computing through Combinatorial Topology 35

Theorem Distributed Computing through Combinatorial Topology Theorem Á The image of a connected graph under a simplicial map is connected. 36

Carrier Maps Distributed Computing through Combinatorial Topology ©: G ! 2 H For graphs G, H, a carrier map Carries each simplex of G to a subgraph of H … © 37

Carrier Maps Distributed Computing through Combinatorial Topology ©: G ! 2 H For graphs G, H, a carrier map Carries each simplex of G to a subgraph of H … © satisfying monotonicity: for all ¾,¿ 2G, if ¾ µ ¿, then ©(¾) µ ©(¿). satisfying monotonicity: for all ¾,¿ 2G, if ¾ µ ¿, then ©(¾) µ ©(¿). 38

Monotonicity Strict Carrier Maps Distributed Computing through Combinatorial Topology For all ¾,¿ 2G, if ¾ µ ¿, then ©(¾) µ ©(¿). 39

Monotonicity Strict Carrier Maps Distributed Computing through Combinatorial Topology For all ¾,¿ 2G, if ¾ µ ¿, then ©(¾) µ ©(¿). Equivalent to … ©(¾ Å ¿) µ ©(¾) Å ©(¿) 40

Monotonicity Strict Carrier Maps Distributed Computing through Combinatorial Topology For all ¾,¿ 2G, if ¾ µ ¿, then ©(¾) µ ©(¿). Equivalent to … ©(¾ Å ¿) µ ©(¾) Å ©(¿) Definition © is strict if ©(¾ Å ¿) = ©(¾) Å ©(¿) 41

Road Map Elementary Graph Theory Tasks Models of Computation Approximate Agreement Task Solvability Distributed Computing through Combinatorial Topology 42

Two Processes Distributed Computing through Combinatorial Topology Hello! I’m Alice Hello! I’m Alice Hello! I’m Bob Hello! I’m Bob 43

Informal Task Definition Distributed Computing through Combinatorial Topology Processes start with input values … They communicate … They halt with output values … legal for those inputs. 44

Formal Task Definition Distributed Computing through Combinatorial Topology Input graph I all possible assignments of input values 45

Formal Task Definition Distributed Computing through Combinatorial Topology Input graph I all possible assignments of input values Output graph O all possible assignments of output values 46

Formal Task Definition Distributed Computing through Combinatorial Topology Input graph I all possible assignments of input values Output graph O all possible assignments of output values Carrier map ¢: I ! 2 O all possible assignments of output values for each input 47

Task Input Graph: Consensus Distributed Computing through Combinatorial Topology I 48

Task Input Graph Distributed Computing through Combinatorial Topology I 49

Task Input Graph Distributed Computing through Combinatorial Topology Pure Colored by process names Labeled by input values 50

Task Output Graph Distributed Computing through Combinatorial Topology O 51

Task Carrier Map Distributed Computing through Combinatorial Topology ¢: I ! 2O¢: I ! 2O IO 52

Task Carrier Map Distributed Computing through Combinatorial Topology ¢: I ! 2O¢: I ! 2O IO If Bob runs alone with input 1 … then he decides output 1. 53

Task Carrier Map Distributed Computing through Combinatorial Topology ¢: I ! 2O¢: I ! 2O IO If Bob and Alice both have input 1 … then they both decide output 1. 54

Task Carrier Map Distributed Computing through Combinatorial Topology ¢: I ! 2O¢: I ! 2O IO If Bob has 1 and Alice 0 … then they must agree, on either one. 55

Example: Coordinated Attack 56 Alice and Bob win If they both attack together Alice and Bob win If they both attack together Alice Bob Distributed Computing through Combinatorial Topology Enemy

Indifferent Attack at dawn!Attack at noon! Input Graph Distributed Computing through Combinatorial Topology I 57

Output Graph Distributed Computing through Combinatorial Topology dawn! noon! failed! O 58

Carrier Map Distributed Computing through Combinatorial Topology ¢ I O 59

Carrier Map Distributed Computing through Combinatorial Topology ¢ dawn! failed! dawn! I O 60

Carrier Map Distributed Computing through Combinatorial Topology ¢ noon! failed! noon! I O 61

Carrier Map Distributed Computing through Combinatorial Topology ¢ dawn! I O 62

Example: Coordinated Attack 63 Alice Bob Distributed Computing through Combinatorial Topology Enemy

Example: Coordinated Attack 64 Alice Bob Distributed Computing through Combinatorial Topology Enemy Alice and Bob realize that they do not need to agree on an exact time …

Example: Coordinated Attack 65 Alice Bob Distributed Computing through Combinatorial Topology Enemy Alice and Bob realize that they do not need to agree on an exact time … they will win if attack times are sufficiently close.

0101/52/53/54/51 Coordinated Attack Graphs Distributed Computing through Combinatorial Topology ¢ I O 66

0101/52/53/54/51 Coordinated Attack Graphs Distributed Computing through Combinatorial Topology ¢ I O 67

0101/52/53/54/51 Coordinated Attack Graphs Distributed Computing through Combinatorial Topology ¢ I O 68

0101/52/53/54/51 Coordinated Attack Graphs Distributed Computing through Combinatorial Topology ¢ I O 69

Road Map Elementary Graph Theory Tasks Models of Computation Approximate Agreement Task Solvability Distributed Computing through Combinatorial Topology 70

Protocols Distributed Computing through Combinatorial Topology Models of Computation 71

Alice’s Protocol 72 shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[A] + mem[B]; return δ (view) Finite program Bob’s protocol is symmetric Distributed Computing through Combinatorial Topology

shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[B]; return δ (view) Alice’s Protocol 73 Distributed Computing through Combinatorial Topology shared two-element memory

shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[B]; return δ (view) Alice’s Protocol 74 Distributed Computing through Combinatorial Topology Start with input value

shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[B]; return δ (view) Alice’s Protocol 75 Distributed Computing through Combinatorial Topology Run for L layers

shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[B]; return δ (view) Alice’s Protocol 76 Distributed Computing through Combinatorial Topology Alice writes her value, read Bob’s value, and concatenate it to my view

shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[B]; return δ (view) Alice’s Protocol 77 Distributed Computing through Combinatorial Topology Alice writes her value, read Bob’s value, and concatenate it to my view (full-information protocol)

shared mem array 0..1 of Value view: Value := my input value; for i: int := 0 to L do mem[A] := view; view := view + mem[B]; return δ (view) Alice’s Protocol 78 Distributed Computing through Combinatorial Topology finally, apply task-specific decision map to view

Formal Protocol Definition Distributed Computing through Combinatorial Topology Input graph I all possible assignments of input values 79

Formal Protocol Definition Distributed Computing through Combinatorial Topology Input graph I all possible assignments of input values Protocol graph P all possible process views after execution 80

Formal Protocol Definition Distributed Computing through Combinatorial Topology Input graph I all possible assignments of input values Protocol graph P all possible process views after execution Carrier map ¥: I ! 2 P all possible assignments of views 81

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 100?0? 01 ?1?1 ¥ I P 82

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 0?0? 01 ?1?1 Colored by process names Labeled with final views P 83

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 0?0? 01 ?1?1 Alice finishes before Bob starts, doesn’t see his value P 84

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 0?0? 01 ?1?1 Alice and Bob run together, she sees his value. Alice and Bob run together, she sees his value. P 85

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 0?0? 01 ?1?1 Alice finishes, then Bob starts P 86

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 0?0? 01 ?1?1 Alice and Bob run together P 87

One-Round Protocol Graph Distributed Computing through Combinatorial Topology 0?0? 01 ?1?1 Bob can’t tell whether Alice saw him P 88

Execution Carrier Map Distributed Computing through Combinatorial Topology 100?0? 01 ?1?1 ¥ I P 89

Execution Carrier Map Distributed Computing through Combinatorial Topology 100?0? 01 ?1?1 ¥ I P ¥: I ! 2 P strict carrier map ¥(¾) Å ¥(¿) = ¥(¾ Å ¿) strict carrier map ¥(¾) Å ¥(¿) = ¥(¾ Å ¿) 90

Output graph 02/31/31 0?0? 01 ?1?1 Protocol graph δ The Decision Map Distributed Computing through Combinatorial Topology δ 91

All Together Distributed Computing through Combinatorial Topology 01 02/31/31 0?0? 01 ?1?1 ¢ δ I P O ¥ 92

Definition Distributed Computing through Combinatorial Topology Decision map δ is carried by carrier map ¢ if for each input vertex s, for each input edge ¾, δ(¥(s)) µ ¢(s) δ(¥(¾)) µ ¢(¾). 93

Meaning 94 δ(¥(s)) µ ¢(s) process strarts in state s

Meaning 95 δ(¥(s)) µ ¢(s) runs the protocol to completion

Meaning 96 δ(¥(s)) µ ¢(s) makes a decision …

Meaning 97 δ(¥(s)) µ ¢(s) decision is permitted by task carrier map

Definition Solving a Task Distributed Computing through Combinatorial Topology The protocol ( I, P,¥) solves the task ( I, O, ¢) 98

Definition Solving a Task Distributed Computing through Combinatorial Topology The protocol ( I, P,¥) solves the task ( I, O, ¢) if there is … 99

Definition Solving a Task Distributed Computing through Combinatorial Topology The protocol ( I, P,¥) solves the task ( I, O, ¢) if there is … a simplicial decision map δ:P ! Oδ:P ! O δ:P ! Oδ:P ! O 100

Definition Solving a Task Distributed Computing through Combinatorial Topology The protocol ( I, P,¥) solves the task ( I, O, ¢) if there is … a simplicial decision map δ:P ! Oδ:P ! O δ:P ! Oδ:P ! O 101 such that δ is carried by ¢. (δ agrees with ¢)

Layered Read-Write Model 102

Layered Read-Write Protocol Distributed Computing through Combinatorial Topology 103 shared mem array 0..1,0..L of Value view: Value := my input value; for i: int := 0 to L do mem[i][A] := view; view := view + mem[A] + mem[B]; return δ (view)

shared mem array 0..1,0..L of Value view: Value := my input value; for i: int := 0 to L do mem[i][A] := view; view := view + mem[A] + mem[B]; return δ (view) As before, run for L layers Layered Read-Write Protocol Distributed Computing through Combinatorial Topology 104

shared mem array 0..1,0..L of Value view: Value := my input value; for i: int := 0 to L do mem[i][A] := view; view := view + mem[A] + mem[B]; return δ (view) Layered Read-Write Protocol Distributed Computing through Combinatorial Topology Each layer uses a distinct, “clean” memory 105

Layered R-W Protocol Graph Distributed Computing through Combinatorial Topology 100?0? 01 ?1?1 ¥ I P 106

Layered R-W Protocol Graph Distributed Computing through Combinatorial Topology ¥ P is always a subdivision of I IP 107

Road Map Elementary Graph Theory Tasks Models of Computation Approximate Agreement Task Solvability Distributed Computing through Combinatorial Topology 108

Alice’s 1/3-Agreement Protocol Distributed Computing through Combinatorial Topology mem[A] := 0 other := mem[B] if other == ? then decide 0 else decide 1/3 109

Alice’s 1/3-Agreement Protocol Distributed Computing through Combinatorial Topology mem[A] := 0 if mem[B] == ? then decide 0 else decide 1/3 Alice writes her value to memory 110

Alice’s 1/3-Agreement Protocol Distributed Computing through Combinatorial Topology mem[A] := 0 if mem[B] == ? then decide 0 else decide 1/3 If she doesn’t see Bob’s value, decide her own. 111

Alice’s 1/3-Agreement Protocol Distributed Computing through Combinatorial Topology mem[A] := 0 if mem[B] == ? then decide 0 else decide 1/3 If she see’s Bob’s value, jump to the middle 112

02/31/31 02/31/31 02/31/31 Distributed Computing through Combinatorial Topology 113

One-Layer 1/3-Agreement Protocol Distributed Computing through Combinatorial Topology 01 02/31/31 0?0? 01 ?1?1 δ I P O ¥ 114

No 1-Layer 1/5-Agreement Protocol Distributed Computing through Combinatorial Topology 01 1/53/52/54/5 0?0? 01 ?1?1 δ P O ¥ 1 0 (no map possible) I 115

10 01/52/53/54/51 ¥ 0?0? 01 ?1?1 2-Layer 1/5-Agreement Distributed Computing through Combinatorial Topology ¥ I O layer 1 layer 2 δ 116

Fact Distributed Computing through Combinatorial Topology In the layered read-write model, The 1/K-Agreement Task Has a d log 3 K e –layer protocol 117

Road Map Elementary Graph Theory Tasks Models of Computation Approximate Agreement Task Solvability Distributed Computing through Combinatorial Topology 118

Fact Distributed Computing through Combinatorial Topology The protocol graph for any L-layer protocol with input graph I is a subdivision of I, where each edge is subdivided 3 L times. 119

Main Theorem Distributed Computing through Combinatorial Topology The two-process task ( I, O, ¢) is solvable in the layered read-write model if and only if there exists a connected carrier map ©: I ! 2 O carried by ¢. 120

Corollary Distributed Computing through Combinatorial Topology The consensus task has no layered read-write protocol 121

Corollary Distributed Computing through Combinatorial Topology Any ²–agreement task has a layered read-write protocol 122

123 This work is licensed under a Creative Commons Attribution- ShareAlike 2.5 License.Creative Commons Attribution- ShareAlike 2.5 License You are free: –to Share — to copy, distribute and transmit the work –to Remix — to adapt the work Under the following conditions: –Attribution. You must attribute the work to “Distributed Computing through Combinatorial Topology” (but not in any way that suggests that the authors endorse you or your use of the work). –Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to – Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this license impairs or restricts the author's moral rights. Distributed Computing through Combinatorial Topology