http://yang.observer/2020/09/12/vector-clock/#向量时钟算法
https://lrita.github.io/2018/10/24/lamport-logical-clocks-vector-lock/
Lamport Logical Clock 的問題在於「對於兩個事件 a 和 b,如果 $a\rarr b$,則 $C(a)\lt C(b)$。但反過來若 $C(a)\lt C(b)$ 並不代表 $a\rightarrow b$」
想要 $C(a)\lt C(b)\Leftrightarrow a\rarr b$,可以使用 Vector Clock。
Vector Clock 將在每一個 process(或節點)上紀錄一個 Vector 的 Clock,也就是如果有 $N$ 個 process,那麼每個節點都存有 $N$ 個 logical clock。$V_{i}[j]$ 是在 process $P_i$ 上,process $P_j$ 的 logical clock,而 $V_i(a)$ 代表事件 $a$ 在 process $i$ 中的邏輯時間。
算法如下:
若向量 $V_i$ 中的每個元素都小於等於 $V_j$ 中的對應元素,則稱 $V_i\lt V_j$
以上算法可以很輕易地看出: