diff --git a/6.041/index.md b/6.041/index.md deleted file mode 100644 index eb44aee..0000000 --- a/6.041/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: MIT 6.041 - Probabilistic Systems Analysis and Applied Probability -nav_order: 7 -has_children: true -has_toc: false ---- - -# MIT 6.041 - Probabilistic Systems Analysis and Applied Probability -Taught by Prof. John Tsitsiklis at MIT in Fall, 2010 - -[Course Website](https://ocw.mit.edu/courses/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/) -[Lecture Videos (YouTube)](https://www.youtube.com/playlist?list=PLUl4u3cNGP60A3XMwZ5sep719_nh95qOe) - -## Lectures -1. [2. Conditioning and Bayes' Rule]({% link 6.041/lec2.md %}) \ No newline at end of file diff --git a/6.041/lec2.md b/6.041/lec2.md deleted file mode 100644 index 848e379..0000000 --- a/6.041/lec2.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: default -title: "1. Probability Models and Axioms" -parent: MIT 6.041 - Probabilistic Systems Analysis and Applied Probability -nav_order: 1 ---- - -# 2. Conditioning and Bayes' Rule diff --git a/CS162/lec23.md b/CS162/lec23.md index d1af971..a65b293 100644 --- a/CS162/lec23.md +++ b/CS162/lec23.md @@ -29,4 +29,17 @@ The high-level overview of the algorithm is - All workers and the coordinator have an internal log in which they record their decision so that they will remember their decision even after a crash. -![2PC algorithm](./media/lec23-2.png) \ No newline at end of file +![2PC algorithm](./media/lec23-2.png) + +A key drawback of the 2PC algorithm is that it is blocking. If a node fails or keeps failing, the other nodes are blocked and cannot make progress. A blocked node can also hold resources like locks, which make the blocking problem worse. There are some alternatives to the 2PC algorithm, such as the 3 phase commit, which has 3 phases instead of 2, PAXOS, a complicated distributed decision making algorithm used by Google in its internal systems, etc. + +Another limitation of the 2PC algorithm (and also the alternatives to it) is that it assumes all nodes are working correctly, and no node is malicious. If a distributed system can have malicious nodes, you need a different class of algorithms. This situation is demonstrated by the Byzantine general's problem. + +## Byzantine General's Problem +The Byzantine general's problem has n players (nodes), out of which one or more can be malicious. One of the nodes is the General (leader), and has to send a boolean message to all nodes. The outcome must be that all correctly working nodes perform the same action, regardless of how the malicious nodes try to throw them off. + +![Byzantine General's Problem](./media/lec23-3.png) + +The leader itself could be compromised. In this case, all the correctly functioning nodes still perform the same action, but that action may not be what the leader communicates to each node. + +The lecture doesn't actually describe the algorithms that solve this problem, but today's algorithms are $ O(n^2) $, and block chain based algorithms can even be $ O(n) $ in the number of messages that need to be exchanged between the nodes. \ No newline at end of file diff --git a/CS162/media/lec23-3.png b/CS162/media/lec23-3.png new file mode 100644 index 0000000..62bee2d Binary files /dev/null and b/CS162/media/lec23-3.png differ