\section{Sonstiges} \subsection{2-SAT} \begin{enumerate} \item Bedingungen in 2-CNF formulieren. \item Implikationsgraph bauen, $\left(a \vee b\right)$ wird zu $\neg a \Rightarrow b$ und $\neg b \Rightarrow a$. \item Finde die starken Zusammenhangskomponenten. \item Genau dann lösbar, wenn keine Variable mit ihrer Negation in einer SCC liegt. \end{enumerate} \subsection{Linear time sorting} \begin{lstlisting} int p[10] = {1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000}; int get_i_th_digit(int digit, int i) { return (digit / p[i]) % 10; } void sortLinear(vector &s) { int max_digit; for(int i = 0; i < s.size(); i++) { int digit = ceil(log10(s[i])); if(digit > max_digit) max_digit = digit; } for(int d = 0; d < max_digit; d++) { vector> bucket(10); for(int i = 0; i < s.size(); i++) bucket[get_i_th_digit(s[i],d)].push_back(s[i]); s.clear(); for(int i = 0; i < 10; i++) copy(bucket[i].begin(), bucket[i].end(), back_inserter(s)); } } \end{lstlisting}