Added quorum systems section to notes.
This commit is contained in:
commit
3ab03da4d1
5 changed files with 581 additions and 0 deletions
277
.gitignore
vendored
Normal file
277
.gitignore
vendored
Normal file
|
@ -0,0 +1,277 @@
|
|||
*.zip
|
||||
|
||||
# vim ##########################################################################
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# Session
|
||||
Session.vim
|
||||
|
||||
# Temporary
|
||||
.netrwhist
|
||||
*~
|
||||
# Auto-generated tag files
|
||||
tags
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
|
||||
# latex ########################################################################
|
||||
## Core latex/pdflatex auxiliary files:
|
||||
*.aux
|
||||
*.lof
|
||||
*.log
|
||||
*.lot
|
||||
*.fls
|
||||
*.out
|
||||
*.toc
|
||||
*.fmt
|
||||
*.fot
|
||||
*.cb
|
||||
*.cb2
|
||||
.*.lb
|
||||
|
||||
## Intermediate documents:
|
||||
*.dvi
|
||||
*.xdv
|
||||
*-converted-to.*
|
||||
# these rules might exclude image files for figures etc.
|
||||
# *.ps
|
||||
# *.eps
|
||||
*.pdf
|
||||
|
||||
## Generated if empty string is given at "Please type another file name for output:"
|
||||
.pdf
|
||||
|
||||
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*-blx.aux
|
||||
*-blx.bib
|
||||
*.run.xml
|
||||
|
||||
## Build tool auxiliary files:
|
||||
*.fdb_latexmk
|
||||
*.synctex
|
||||
*.synctex(busy)
|
||||
*.synctex.gz
|
||||
*.synctex.gz(busy)
|
||||
*.pdfsync
|
||||
|
||||
## Build tool directories for auxiliary files
|
||||
# latexrun
|
||||
latex.out/
|
||||
|
||||
## Auxiliary and intermediate files from other packages:
|
||||
# algorithms
|
||||
*.alg
|
||||
*.loa
|
||||
|
||||
# achemso
|
||||
acs-*.bib
|
||||
|
||||
# amsthm
|
||||
*.thm
|
||||
|
||||
# beamer
|
||||
*.nav
|
||||
*.pre
|
||||
*.snm
|
||||
*.vrb
|
||||
|
||||
# changes
|
||||
*.soc
|
||||
|
||||
# comment
|
||||
*.cut
|
||||
|
||||
# cprotect
|
||||
*.cpt
|
||||
|
||||
# elsarticle (documentclass of Elsevier journals)
|
||||
*.spl
|
||||
|
||||
# endnotes
|
||||
*.ent
|
||||
|
||||
# fixme
|
||||
*.lox
|
||||
|
||||
# feynmf/feynmp
|
||||
*.mf
|
||||
*.mp
|
||||
*.t[1-9]
|
||||
*.t[1-9][0-9]
|
||||
*.tfm
|
||||
|
||||
#(r)(e)ledmac/(r)(e)ledpar
|
||||
*.end
|
||||
*.?end
|
||||
*.[1-9]
|
||||
*.[1-9][0-9]
|
||||
*.[1-9][0-9][0-9]
|
||||
*.[1-9]R
|
||||
*.[1-9][0-9]R
|
||||
*.[1-9][0-9][0-9]R
|
||||
*.eledsec[1-9]
|
||||
*.eledsec[1-9]R
|
||||
*.eledsec[1-9][0-9]
|
||||
*.eledsec[1-9][0-9]R
|
||||
*.eledsec[1-9][0-9][0-9]
|
||||
*.eledsec[1-9][0-9][0-9]R
|
||||
|
||||
# glossaries
|
||||
*.acn
|
||||
*.acr
|
||||
*.glg
|
||||
*.glo
|
||||
*.gls
|
||||
*.glsdefs
|
||||
|
||||
# gnuplottex
|
||||
*-gnuplottex-*
|
||||
|
||||
# gregoriotex
|
||||
*.gaux
|
||||
*.gtex
|
||||
|
||||
# htlatex
|
||||
*.4ct
|
||||
*.4tc
|
||||
*.idv
|
||||
*.lg
|
||||
*.trc
|
||||
*.xref
|
||||
|
||||
# hyperref
|
||||
*.brf
|
||||
|
||||
# knitr
|
||||
*-concordance.tex
|
||||
# TODO Comment the next line if you want to keep your tikz graphics files
|
||||
*.tikz
|
||||
*-tikzDictionary
|
||||
|
||||
# listings
|
||||
*.lol
|
||||
|
||||
# makeidx
|
||||
*.idx
|
||||
*.ilg
|
||||
*.ind
|
||||
*.ist
|
||||
|
||||
# minitoc
|
||||
*.maf
|
||||
*.mlf
|
||||
*.mlt
|
||||
*.mtc[0-9]*
|
||||
*.slf[0-9]*
|
||||
*.slt[0-9]*
|
||||
*.stc[0-9]*
|
||||
|
||||
# minted
|
||||
_minted*
|
||||
*.pyg
|
||||
|
||||
# morewrites
|
||||
*.mw
|
||||
|
||||
# nomencl
|
||||
*.nlg
|
||||
*.nlo
|
||||
*.nls
|
||||
|
||||
# pax
|
||||
*.pax
|
||||
|
||||
# pdfpcnotes
|
||||
*.pdfpc
|
||||
|
||||
# sagetex
|
||||
*.sagetex.sage
|
||||
*.sagetex.py
|
||||
*.sagetex.scmd
|
||||
|
||||
# scrwfile
|
||||
*.wrt
|
||||
|
||||
# sympy
|
||||
*.sout
|
||||
*.sympy
|
||||
sympy-plots-for-*.tex/
|
||||
|
||||
# pdfcomment
|
||||
*.upa
|
||||
*.upb
|
||||
|
||||
# pythontex
|
||||
*.pytxcode
|
||||
pythontex-files-*/
|
||||
|
||||
# tcolorbox
|
||||
*.listing
|
||||
|
||||
# thmtools
|
||||
*.loe
|
||||
|
||||
# TikZ & PGF
|
||||
*.dpth
|
||||
*.md5
|
||||
*.auxlock
|
||||
|
||||
# todonotes
|
||||
*.tdo
|
||||
|
||||
# easy-todo
|
||||
*.lod
|
||||
|
||||
# xcolor
|
||||
*.xcp
|
||||
|
||||
# xmpincl
|
||||
*.xmpi
|
||||
|
||||
# xindy
|
||||
*.xdy
|
||||
|
||||
# xypic precompiled matrices
|
||||
*.xyc
|
||||
|
||||
# endfloat
|
||||
*.ttt
|
||||
*.fff
|
||||
|
||||
# Latexian
|
||||
TSWLatexianTemp*
|
||||
|
||||
## Editors:
|
||||
# WinEdt
|
||||
*.bak
|
||||
*.sav
|
||||
|
||||
# Texpad
|
||||
.texpadtmp
|
||||
|
||||
# LyX
|
||||
*.lyx~
|
||||
|
||||
# Kile
|
||||
*.backup
|
||||
|
||||
# KBibTeX
|
||||
*~[0-9]*
|
||||
|
||||
# auto folder when using emacs and auctex
|
||||
./auto/*
|
||||
*.el
|
||||
|
||||
# expex forward references with \gathertags
|
||||
*-tags.tex
|
||||
|
||||
# standalone packages
|
||||
*.sta
|
16
notes/notes.tex
Normal file
16
notes/notes.tex
Normal file
|
@ -0,0 +1,16 @@
|
|||
\documentclass[12pt]{article}
|
||||
\usepackage[margin=1in]{geometry}
|
||||
\usepackage{pervasives}
|
||||
|
||||
\begin{document}
|
||||
\begin{center}
|
||||
{\Large Quorum Systems}
|
||||
|
||||
\today{}
|
||||
\end{center}
|
||||
|
||||
{\input{sections/quorum_systems.tex}}
|
||||
|
||||
\bibliographystyle{plain}
|
||||
\bibliography{references}
|
||||
\end{document}
|
184
notes/pervasives.sty
Normal file
184
notes/pervasives.sty
Normal file
|
@ -0,0 +1,184 @@
|
|||
\usepackage{amsfonts}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{amsthm}
|
||||
\usepackage{environ}
|
||||
\usepackage{etoolbox}
|
||||
\usepackage{mathrsfs}
|
||||
\usepackage{mathtools}
|
||||
\usepackage{tcolorbox}
|
||||
\usepackage{tikz}
|
||||
\usepackage{xcolor}
|
||||
\tcbuselibrary{breakable}
|
||||
\tcbuselibrary{skins}
|
||||
|
||||
% A pretty color palette taken from https://flatuicolors.com/palette/defo. To
|
||||
% see a preview of the different colors, use the \showcolors command below.
|
||||
\definecolor{flatdarkgray}{HTML}{7F8C8D}
|
||||
\definecolor{flatgray}{HTML}{BDC3C7}
|
||||
\definecolor{flatred}{HTML}{C0392B}
|
||||
\definecolor{flatorange}{HTML}{D35400}
|
||||
\definecolor{flatyellow}{HTML}{F39C12}
|
||||
\definecolor{flatdenim}{HTML}{2C3E50}
|
||||
\definecolor{flatpurple}{HTML}{8E44AD}
|
||||
\definecolor{flatblue}{HTML}{2980B9}
|
||||
\definecolor{flatgreen}{HTML}{27AE60}
|
||||
\definecolor{flatcyan}{HTML}{16A085}
|
||||
\definecolor{flatdarkgrayalt}{HTML}{95A5A6}
|
||||
\definecolor{flatgrayalt}{HTML}{ECF0F1}
|
||||
\definecolor{flatredalt}{HTML}{E74C3C}
|
||||
\definecolor{flatorangealt}{HTML}{E67E22}
|
||||
\definecolor{flatyellowalt}{HTML}{F1C40F}
|
||||
\definecolor{flatdenimalt}{HTML}{34495E}
|
||||
\definecolor{flatpurplealt}{HTML}{9B59B6}
|
||||
\definecolor{flatbluealt}{HTML}{3498DB}
|
||||
\definecolor{flatgreenalt}{HTML}{2ECC71}
|
||||
\definecolor{flatcyanalt}{HTML}{1ABC9C}
|
||||
\definecolor{flatbrown}{HTML}{836953}
|
||||
|
||||
\newcommand{\showcolors}{%
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\tikzstyle{swatch}=[minimum width=3cm, minimum height=0.5cm, y=0.5cm]
|
||||
\node[swatch, fill=flatdarkgray] at (0, 9) {\texttt{flatdarkgray}};
|
||||
\node[swatch, fill=flatgray] at (0, 8) {\texttt{flatgray}};
|
||||
\node[swatch, fill=flatred] at (0, 7) {\texttt{flatred}};
|
||||
\node[swatch, fill=flatorange] at (0, 6) {\texttt{flatorange}};
|
||||
\node[swatch, fill=flatyellow] at (0, 5) {\texttt{flatyellow}};
|
||||
\node[swatch, fill=flatdenim] at (0, 4) {\texttt{flatdenim}};
|
||||
\node[swatch, fill=flatpurple] at (0, 3) {\texttt{flatpurple}};
|
||||
\node[swatch, fill=flatblue] at (0, 2) {\texttt{flatblue}};
|
||||
\node[swatch, fill=flatgreen] at (0, 1) {\texttt{flatgreen}};
|
||||
\node[swatch, fill=flatcyan] at (0, 0) {\texttt{flatcyan}};
|
||||
\node[swatch, fill=flatdarkgrayalt] at (3, 9) {\texttt{flatdarkgrayalt}};
|
||||
\node[swatch, fill=flatgrayalt] at (3, 8) {\texttt{flatgrayalt}};
|
||||
\node[swatch, fill=flatredalt] at (3, 7) {\texttt{flatredalt}};
|
||||
\node[swatch, fill=flatorangealt] at (3, 6) {\texttt{flatorangealt}};
|
||||
\node[swatch, fill=flatyellowalt] at (3, 5) {\texttt{flatyellowalt}};
|
||||
\node[swatch, fill=flatdenimalt] at (3, 4) {\texttt{flatdenimalt}};
|
||||
\node[swatch, fill=flatpurplealt] at (3, 3) {\texttt{flatpurplealt}};
|
||||
\node[swatch, fill=flatbluealt] at (3, 2) {\texttt{flatbluealt}};
|
||||
\node[swatch, fill=flatgreenalt] at (3, 1) {\texttt{flatgreenalt}};
|
||||
\node[swatch, fill=flatcyanalt] at (3, 0) {\texttt{flatcyanalt}};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
% New theorem environments.
|
||||
\newtheorem{theorem}{Theorem}
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{definition}{Definition}
|
||||
\newtheorem{benchmark}{Benchmark}
|
||||
\newtheorem{example}{Example}
|
||||
\newtheorem{invariant}{Invariant}
|
||||
|
||||
% Toggleable TODOs.
|
||||
\newtoggle{showtodos}
|
||||
\toggletrue{showtodos}
|
||||
% \togglefalse{showtodos}
|
||||
\newcommand{\TODO}[2][]{%
|
||||
\iftoggle{showtodos}{{\textcolor{blue}{\textbf{TODO(#1): #2}}}}{}%
|
||||
}
|
||||
|
||||
% Toggleable notes.
|
||||
\newtoggle{shownotes}
|
||||
\toggletrue{shownotes}
|
||||
% \togglefalse{shownotes}
|
||||
\newcommand{\NOTE}[2][]{%
|
||||
\iftoggle{shownotes}{{\textcolor{red}{NOTE(#1): #2}}}{}%
|
||||
}
|
||||
|
||||
% Labels and references. To label a figure use the \figlabel command, to label
|
||||
% a lemma, use the \lemlabel command, etc. Similarly, use the \figref, lemref,
|
||||
% etc. commands to reference these labels. For example:
|
||||
%
|
||||
% \begin{figure}
|
||||
% % ...
|
||||
% \caption{A nice figure}\figlabel{MyNiceFigure}
|
||||
% \end{figure}
|
||||
%
|
||||
% Refer to \figref{MyNiceFigure} for a nice figure.
|
||||
%
|
||||
% Toggle showlabels to show or hide all labels.
|
||||
\newtoggle{showlabels}
|
||||
% \toggletrue{showlabels}
|
||||
\togglefalse{showlabels}
|
||||
\newcommand{\genericlabel}[2]{%
|
||||
\label{#1:#2}%
|
||||
\iftoggle{showlabels}{\textcolor{flatdarkgray}{\texttt{[#2]}}}{}%
|
||||
}
|
||||
\newcommand{\algolabel}[1]{\genericlabel{alg}{#1}}
|
||||
\newcommand{\algoref}[1]{Algorithm~\ref{alg:#1}}
|
||||
\newcommand{\applabel}[1]{\genericlabel{app}{#1}}
|
||||
\newcommand{\appref}[1]{Appendix~\ref{app:#1}}
|
||||
\newcommand{\benchlabel}[1]{\genericlabel{bench}{#1}}
|
||||
\newcommand{\benchref}[1]{Benchmark~\ref{bench:#1}}
|
||||
\newcommand{\clmlabel}[1]{\genericlabel{clm}{#1}}
|
||||
\newcommand{\clmref}[1]{Claim~\ref{clm:#1}}
|
||||
\newcommand{\eqnlabel}[1]{\genericlabel{eqn}{#1}}
|
||||
\newcommand{\eqnref}[1]{\eqref{eqn:#1}}
|
||||
\newcommand{\invlabel}[1]{\genericlabel{inv}{#1}}
|
||||
\newcommand{\invref}[1]{Invariant~\ref{inv:#1}}
|
||||
\newcommand{\examplelabel}[1]{\genericlabel{exa}{#1}}
|
||||
\newcommand{\exampleref}[1]{Example~\ref{exa:#1}}
|
||||
\newcommand{\figlabel}[1]{\genericlabel{fig}{#1}}
|
||||
\newcommand{\figref}[1]{Figure~\ref{fig:#1}}
|
||||
\newcommand{\lemlabel}[1]{\genericlabel{lem}{#1}}
|
||||
\newcommand{\lemref}[1]{Lemma~\ref{lem:#1}}
|
||||
\newcommand{\linelabel}[1]{\genericlabel{line}{#1}}
|
||||
\newcommand{\lineref}[1]{line~\ref{line:#1}}
|
||||
\newcommand{\Lineref}[1]{Line~\ref{line:#1}}
|
||||
\newcommand{\lstlabel}[1]{\genericlabel{lst}{#1}}
|
||||
\newcommand{\lstref}[1]{Listing~\ref{lst:#1}}
|
||||
\newcommand{\seclabel}[1]{\genericlabel{sec}{#1}}
|
||||
\newcommand{\secref}[1]{Section~\ref{sec:#1}}
|
||||
\newcommand{\appendixlabel}[1]{\genericlabel{appendix}{#1}}
|
||||
\newcommand{\appendixref}[1]{Appendix~\ref{appendix:#1}}
|
||||
\newcommand{\tablabel}[1]{\genericlabel{tab}{#1}}
|
||||
\newcommand{\tabref}[1]{Table~\ref{tab:#1}}
|
||||
\newcommand{\thmlabel}[1]{\genericlabel{thm}{#1}}
|
||||
\newcommand{\thmref}[1]{Theorem~\ref{thm:#1}}
|
||||
|
||||
% Surrounding symbols.
|
||||
\DeclarePairedDelimiter{\parens}{(}{)}
|
||||
\DeclarePairedDelimiter{\set}{\{}{\}}
|
||||
\DeclarePairedDelimiterX{\setst}[2]{\{}{\}}{#1 \,\delimsize|\, #2}
|
||||
\DeclarePairedDelimiter{\brackets}{[}{]}
|
||||
\DeclarePairedDelimiterX{\pfrac}[2]{(}{)}{\frac{#1}{#2}}
|
||||
\DeclarePairedDelimiter{\ceil}{\lceil}{\rceil}
|
||||
\DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor}
|
||||
|
||||
% Symbols and abbreviations.
|
||||
\newcommand{\nats}{\mathbb{N}}
|
||||
\newcommand{\ints}{\mathbb{Z}}
|
||||
\newcommand{\rats}{\mathbb{Q}}
|
||||
\newcommand{\reals}{\mathbb{R}}
|
||||
\newcommand{\complexes}{\mathbb{C}}
|
||||
\newcommand{\partialto}{\rightharpoonup}
|
||||
% https://tex.stackexchange.com/a/74132
|
||||
\newcommand{\defeq}{\stackrel{\mathclap{\mbox{\normalfont \tiny def}}}{=}}
|
||||
|
||||
|
||||
% Misc.
|
||||
\newcommand{\defword}[1]{\textbf{\textcolor{flatdenim}{#1}}}
|
||||
|
||||
% Tech report environment.
|
||||
%
|
||||
% If you're writing a paper and there's too much content, you might want to
|
||||
% move some content out of the paper and into the technical report version of
|
||||
% the paper. To do this, you can put the content in the techreport environment
|
||||
% like this:
|
||||
%
|
||||
% This text will appear in the paper and tech report.
|
||||
% \begin{techreport}
|
||||
% This text will only appear in the tech report.
|
||||
% \end{techreport}
|
||||
%
|
||||
% When the techreportenabled toggle is enabled, the tech report content will be
|
||||
% shown. When the toggle is disabled, the tech report content will be hidden.
|
||||
% Moreover, when the toggle is enabled, the tech report content will be shown
|
||||
% with a red bar on its left margin to make it easier for readers to figure out
|
||||
% what is new in the tech report.
|
||||
\newtoggle{techreportenabled}
|
||||
\toggletrue{techreportenabled}
|
||||
\togglefalse{techreportenabled}
|
19
notes/references.bib
Normal file
19
notes/references.bib
Normal file
|
@ -0,0 +1,19 @@
|
|||
@article{naor1998load,
|
||||
title={The load, capacity, and availability of quorum systems},
|
||||
author={Naor, Moni and Wool, Avishai},
|
||||
journal={SIAM Journal on Computing},
|
||||
volume={27},
|
||||
number={2},
|
||||
pages={423--447},
|
||||
year={1998},
|
||||
publisher={SIAM}
|
||||
}
|
||||
|
||||
@article{vukolic2013origin,
|
||||
title={The origin of quorum systems},
|
||||
author={Vukoli{\'c}, Marko and others},
|
||||
journal={Bulletin of EATCS},
|
||||
volume={2},
|
||||
number={101},
|
||||
year={2013}
|
||||
}
|
85
notes/sections/quorum_systems.tex
Normal file
85
notes/sections/quorum_systems.tex
Normal file
|
@ -0,0 +1,85 @@
|
|||
\section{Quorum Systems}
|
||||
These definitions are taken from \cite{naor1998load} and
|
||||
\cite{vukolic2013origin}.
|
||||
%
|
||||
Given a set $X = \set{x_1, \ldots, x_n}$, a \defword{quorum system} over $X$ is
|
||||
a set $Q = \set{q_1, \ldots, q_m}$ of subsets of $X$, called \defword{quorums},
|
||||
such that every pair of quorums intersect. That is, for every $q_1, q_2 \in
|
||||
Q$, $q_1 \cap q_2 \neq \emptyset$.
|
||||
|
||||
A quorum system $Q$ is a \defword{coterie} if there does not exist quorums
|
||||
$q_1, q_2 \in Q$ such that $q_1 \subset q_2$. In other words, a coterie is a
|
||||
quorum system that does not contain some quorum $q_1$ that is a strict subset
|
||||
of some other quorum $q_2$.
|
||||
|
||||
Let $P, Q$ be two coteries over the same set $X$. $P$ \defword{dominates} $Q$,
|
||||
denoted $P > Q$, if $P \neq Q$ and for every $q \in Q$, there exists some $p
|
||||
\in P$ such that $p \subseteq q$. A coterie $Q$ is \defword{dominated} if there
|
||||
exists some coterie $P$ that dominates it.
|
||||
|
||||
\begin{example}
|
||||
Let $P$ be the majority quorum system over the set $X = \set{a, b, c}$. That
|
||||
is, $P = \set{\set{a, b}, \set{a, c}, \set{b, c}}$. Let $Q = \set{\set{a, b,
|
||||
c}}$. Note that both quorum systems are coteries. $P$ dominates $Q$. To see
|
||||
this, we first confirm that $P \neq Q$. Next, we consider every $q \in Q$ and
|
||||
find a corresponding $p \in P$ where $p \subseteq q$. Here, we only have one
|
||||
choice for $q$ (i.e. $q = \set{a, b, c}$), and for every $p \in P$, $p
|
||||
\subseteq q$.
|
||||
\end{example}
|
||||
|
||||
There is an intuitive way to think about non-dominated coteries. A coterie $Q$
|
||||
is non-dominated if (1) removing any element from any quorum would make $Q$ no
|
||||
longer a coterie and (2) there are no other quorums that we can add to $Q$
|
||||
while preserving the fact that $Q$ is a coterie. Here's why. (1) Assume for
|
||||
contradiction that we remove some element from some quorum in $Q$ to
|
||||
form a new coterie $P$. $P$ dominates $Q$ in the obvious way, but $Q$ is
|
||||
non-dominated. (2) Assume for contradiction that we add some quorum to $Q$ to
|
||||
form a new coterie $P$. Again, $P$ dominates $Q$ in the obvious way, but $Q$ is
|
||||
non-dominated. Intuitively, a non-dominated coterie is a maximal coterie (we
|
||||
cannot add any more quorums) with minimal quorums (we cannot remove any
|
||||
elements from any quorums).
|
||||
|
||||
\NOTE[michael]{%
|
||||
I think domination will be an important property for recursive quorum
|
||||
systems. I think there are some quorum systems that we cannot form as a
|
||||
recursive quorum system, but we can form a recursive quorum system that
|
||||
dominates it. The definition of domination that I found is only defined on
|
||||
coteries. Can we define this without coteries? I think so, but we have to
|
||||
double check.
|
||||
}
|
||||
|
||||
Let $\sigma: Q \to [0, 1]$ be a discrete probability distribution over the
|
||||
quorums of $Q$ (i.e., $\sum_{q \in Q} \sigma(q) = 1$). We call $\sigma$ a
|
||||
\defword{strategy}. Intuitively, $\sigma$ is a strategy to pick quorums at
|
||||
random. We have the following definitions.
|
||||
\begin{align*}
|
||||
l_\sigma(x) &\defeq \sum_{\setst{q \in Q}{x \in q}} \sigma(q) \\
|
||||
L_\sigma(Q) &\defeq \max_{x \in X} l_\sigma(x) \\
|
||||
L(Q) &\defeq \min_\sigma L_\sigma(Q)
|
||||
\end{align*}
|
||||
$l_\sigma(x)$ is the load on $x$ given some strategy $\sigma$. $L_\sigma(Q)$ is
|
||||
the load on most loaded element $x$. $L(Q)$ is the \defword{load} of the best
|
||||
possible strategy. Intuitively, the lower the load of a quorum system, the
|
||||
higher the throughput it can support.
|
||||
|
||||
\begin{example}
|
||||
Consider the majority quorum system $Q = \set{\set{a, b}, \set{a, c}, \set{b,
|
||||
c}}$ on elements $X = \set{a, b, c}$. Let $\sigma(\set{a, b}) =
|
||||
\sigma(\set{a, c}) = 0.5$ and $\sigma(\set{b, c}) = 0$.
|
||||
\begin{align*}
|
||||
l_\sigma(a) &= \sigma(\set{a, b}) + \sigma(\set{a, c}) = 0.5 + 0.5 = 1 \\
|
||||
l_\sigma(b) &= \sigma(\set{a, b}) + \sigma(\set{b, c}) = 0.5 + 0 = 0.5 \\
|
||||
l_\sigma(c) &= \sigma(\set{a, c}) + \sigma(\set{b, c}) = 0.5 + 0 = 0.5 \\
|
||||
L_\sigma(Q) &= \max(1, 0.5, 0.5) = 1
|
||||
\end{align*}
|
||||
The load of $Q$ with respect to $\sigma$ is 1, but the load $L(Q)$ is not 1
|
||||
because $\sigma$ is not an optimal strategy. If we instead choose
|
||||
$\sigma_{\text{opt}}(-) = \frac{1}{3}$, the load is reduced to $\frac{2}{3}$
|
||||
which is optimal.
|
||||
\end{example}
|
||||
|
||||
The \defword{resilience} or \defword{fault tolerance} of a quorum system $Q$ is
|
||||
the largest number $f$ such that for every subset $F \subseteq X$ with $|F| =
|
||||
f$, there still exists some quorum $q \in Q$ such that $q \cap F = \emptyset$.
|
||||
Intuitively, a quorum system has fault tolerance $f$ if we can fail an
|
||||
arbitrary set of $f$ elements and still have some quorum left.
|
Loading…
Reference in a new issue