summaryrefslogtreecommitdiff
path: root/other/other.tex
diff options
context:
space:
mode:
authorPaul Jungeblut <paul.jungeblut@gmail.com>2016-10-06 00:17:59 +0200
committerPaul Jungeblut <paul.jungeblut@gmail.com>2016-10-06 00:17:59 +0200
commit442921c7bd93e9e111845de6c22f66753b41e11a (patch)
treebe6c168303240c168def228c763614d3a9d1c91e /other/other.tex
parent7c97303ec8fc5dfc278198687d8c5154e0cd1baf (diff)
Renamin sonstiges ot other.
Diffstat (limited to 'other/other.tex')
-rw-r--r--other/other.tex89
1 files changed, 89 insertions, 0 deletions
diff --git a/other/other.tex b/other/other.tex
new file mode 100644
index 0000000..6bc4733
--- /dev/null
+++ b/other/other.tex
@@ -0,0 +1,89 @@
+\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{Zeileneingabe}
+\lstinputlisting{other/split.cpp}
+
+\subsection{Bit Operations}
+\lstinputlisting{other/bitOps.cpp}
+
+\subsection{Josephus-Problem}
+$n$ Personen im Kreis, jeder $k$-te wird erschossen.
+\begin{description}
+ \item[Spezialfall $k=2$:] Betrachte Binärdarstellung von $n$.
+ Für $n = 1b_1b_2b_3..b_n$ ist $b_1b_2b_3..b_n1$ die Position des letzten Überlebenden.
+ (Rotiere $n$ um eine Stelle nach links)
+ \lstinputlisting{other/josephus2.cpp}
+ \item[Allgemein:] Sei $F(n,k)$ die Position des letzten Überlebenden.
+ Nummeriere die Personen mit $0, 1, \ldots, n-1$.
+ Nach Erschießen der $k$-ten Person, hat der Kreis noch Größe $n-1$ und die Position des Überlebenden ist jetzt $F(n-1,k)$.
+ Also: $F(n,k) = (F(n-1,k)+k)\%n$. Basisfall: $F(1,k) = 0$.
+ \lstinputlisting{other/josephusK.cpp}
+\end{description}
+\textbf{Beachte bei der Ausgabe, dass die Personen im ersten Fall von $1, \ldots, n$ nummeriert sind, im zweiten Fall von $0, \ldots, n-1$!}
+
+\subsection{Gemischtes}
+\begin{itemize}[itemsep=5mm]
+ \item \emph{\textsc{Johnsons} Reweighting Algorithmus:}
+ Füge neue Quelle \lstinline{S} hinzu, mit Kanten mit Gewicht 0 zu allen Knoten.
+ Nutze \textsc{Bellmann-Ford} zum Betsimmen der Entfernungen \lstinline{d[i]} von \lstinline{S} zu allen anderen Knoten.
+ Stoppe, wenn es negative Zyklen gibt.
+ Sonst ändere die gewichte von allen Kanten \lstinline{(u,v)} im ursprünglichen Graphen zu \lstinline{d[u]+w[u,v]-d[v]}.
+ Dann sind alle Kantengewichte nichtnegativ, \textsc{Dijkstra} kann angewendet werden.
+ \item Für ein System von Differenzbeschränkungen:
+ Ändere alle Bedingungen in die Form $a-b \leq c$.
+ Für jede Bedingung füge eine Kante \lstinline{(b,a)} mit Gweicht \lstinline{c} ein.
+ Füge Quelle \lstinline{s} hinzu, mit Kanten zu allen Knoten mit Gewicht 0.
+ Nutze \textsc{Bellmann-Ford}, um die kürzesten Pfade von \lstinline{s} aus zu finden.
+ \lstinline{d[v]} ist mögliche Lösung für \lstinline{v}.
+ \item Min-Weight-Vertex-Cover im bipartiten Graph:
+ Partitioniere in \lstinline{A, B} und füge Kanten \lstinline{s -> A} mit Gewicht \lstinline{w(A)} und Kanten \lstinline{B -> t} mit Gewicht \lstinline{w(B)} hinzu.
+ Füge Kanten mit Kapazität $\infty$ von \lstinline{A} nach \lstinline{B} hinzu, wo im originalen Graphen Kanten waren.
+ Max-Flow ist die Lösung.\newline
+ Im Residualgraphen:
+ \begin{itemize}
+ \item Das Vertex-Cover sind die Knoten inzident zu den Brücken. \emph{oder}
+ \item Die Knoten in \lstinline{A}, die \emph{nicht} von \lstinline{s} erreichber sind und die Knoten in \lstinline{B}, die von \lstinline{erreichber} sind.
+ \end{itemize}
+ \item Allgemeiner Graph:
+ Das Komplement eines Vertex-Cover ist ein Independent Set.
+ $\Rightarrow$ Max Weight Independent Set ist Komplement von Min Weight Vertex Cover.
+ \item Bipartiter Graph:
+ Min Vertex Cover (kleinste Menge Kanten, die alle Knoten berühren) = Max Matching.
+ \item Bipartites Matching mit Gewichten auf linken Knoten.
+ Minimiere Matchinggewicht.
+ Lösung: Sortiere Knoten links aufsteigend nach Gewicht, danach nutze normlen Algorithmus (\textsc{Kuhn}, Seite \pageref{kuhn})
+ \item \textbf{Tobi, cool down!}
+\end{itemize}
+
+\subsection{Sonstiges}
+\begin{lstlisting}
+// Alles-Header.
+#include <bits/stdc++.h>
+
+// Setzt das deutsche Tastaturlayout.
+setxkbmap de
+
+// Schnelle Ein-/Ausgabe mit cin/cout.
+ios::sync_with_stdio(false);
+
+// Set mit eigener Sortierfunktion. Typ muss nicht explizit angegeben werden.
+set<point2, decltype(comp)> set1(comp);
+
+// PI
+#define PI (2*acos(0))
+
+// STL-Debugging, Compiler flags.
+-D_GLIBCXX_DEBUG
+#define _GLIBCXX_DEBUG
+
+// 128-Bit Integer. Muss zum Einlesen/Ausgeben in einen int oder long long gecastet werden.
+__int128
+\end{lstlisting}