From b9e2162ab8ad7c2208c8cd33963cea0977fadbd1 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Thu, 14 Jul 2016 01:07:21 +0200 Subject: [PATCH] Add dynamic programming and label correction algorithm --- .../Pseudocode/dynamic-programming/Makefile | 36 +++++++++++++ .../Pseudocode/dynamic-programming/README.md | 3 ++ .../dynamic-programming.png | Bin 0 -> 23353 bytes .../dynamic-programming.tex | 44 +++++++++++++++ .../Pseudocode/label-correction/Makefile | 36 +++++++++++++ .../Pseudocode/label-correction/README.md | 3 ++ .../label-correction/label-correction.png | Bin 0 -> 25546 bytes .../label-correction/label-correction.tex | 51 ++++++++++++++++++ 8 files changed, 173 insertions(+) create mode 100644 source-code/Pseudocode/dynamic-programming/Makefile create mode 100644 source-code/Pseudocode/dynamic-programming/README.md create mode 100644 source-code/Pseudocode/dynamic-programming/dynamic-programming.png create mode 100644 source-code/Pseudocode/dynamic-programming/dynamic-programming.tex create mode 100644 source-code/Pseudocode/label-correction/Makefile create mode 100644 source-code/Pseudocode/label-correction/README.md create mode 100644 source-code/Pseudocode/label-correction/label-correction.png create mode 100644 source-code/Pseudocode/label-correction/label-correction.tex diff --git a/source-code/Pseudocode/dynamic-programming/Makefile b/source-code/Pseudocode/dynamic-programming/Makefile new file mode 100644 index 0000000..f0fed68 --- /dev/null +++ b/source-code/Pseudocode/dynamic-programming/Makefile @@ -0,0 +1,36 @@ +SOURCE = dynamic-programming +DELAY = 80 +DENSITY = 300 +WIDTH = 512 + +make: + pdflatex $(SOURCE).tex -output-format=pdf + pdflatex $(SOURCE).tex -output-format=pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot + +gif: + pdfcrop $(SOURCE).pdf + convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif + make clean + +png: + make + make svg + inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png + +transparentGif: + convert $(SOURCE).pdf -transparent white result.gif + make clean + +svg: + make + #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg + pdf2svg $(SOURCE).pdf $(SOURCE).svg + # Necessary, as pdf2svg does not always create valid svgs: + inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg + rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg + inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg + rm $(SOURCE)2.svg diff --git a/source-code/Pseudocode/dynamic-programming/README.md b/source-code/Pseudocode/dynamic-programming/README.md new file mode 100644 index 0000000..f322ac5 --- /dev/null +++ b/source-code/Pseudocode/dynamic-programming/README.md @@ -0,0 +1,3 @@ +Compiled example +---------------- +![Example](dynamic-programming.png) diff --git a/source-code/Pseudocode/dynamic-programming/dynamic-programming.png b/source-code/Pseudocode/dynamic-programming/dynamic-programming.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7d944f0a053c5b486380d5e52ca5df93c8c12d GIT binary patch literal 23353 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�IEW(K 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 BOPv4! literal 0 HcmV?d00001 diff --git a/source-code/Pseudocode/label-correction/label-correction.tex b/source-code/Pseudocode/label-correction/label-correction.tex new file mode 100644 index 0000000..a27e8d8 --- /dev/null +++ b/source-code/Pseudocode/label-correction/label-correction.tex @@ -0,0 +1,51 @@ +\documentclass{article} +\usepackage[pdftex,active,tightpage]{preview} +\setlength\PreviewBorder{2mm} + +\usepackage[utf8]{inputenc} % this is needed for umlauts +\usepackage[ngerman]{babel} % this is needed for umlauts +\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf +\usepackage{amssymb,amsmath,amsfonts} % nice math rendering +\usepackage{braket} % needed for \Set +\usepackage{caption} +\usepackage{algorithm} +\usepackage[noend]{algpseudocode} + +\DeclareCaptionFormat{myformat}{#3} +\captionsetup[algorithm]{format=myformat} + +\begin{document} +\begin{preview} + \begin{algorithm}[H] + \begin{algorithmic} + \Require + \Statex Graph $G = (V, E)$ + \Statex Starting node $s \in V$ + \Statex End node $t \in V$ + \Procedure{LabelCorrection}{$G$, $s$, $t$} + \State $d_s \gets 0$ + \State $d_i \gets \infty \quad \forall i \neq s$ + \State $u \gets \infty$ + \State $K \gets \{s\}$ \Comment{Choose some datastructure here} + \While{$K$ is not empty} + \State $v \gets K.pop()$ + \For{child $c$ of $v$} + \If{$d_v + g_{vc} < \min(d_c, u)$} + \State $d_v \gets d_v + g_{vc}$ + \State $c.parent \gets v$ + \If{$c \neq t$ and $c \notin K$} + \State $K.insert(c)$ + \EndIf + \If{$c = t$} + \State $u \gets d_v + g_{vt}$ + \EndIf + \EndIf + \EndFor + \EndWhile + \EndProcedure + \end{algorithmic} + \caption{Label correction algorithm} + \label{alg:label-correction-algorithm} + \end{algorithm} +\end{preview} +\end{document}