\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{algorithm,algpseudocode} \algnewcommand\True{\textbf{true}\space} \algnewcommand\False{\textbf{false}\space} \algnewcommand{\LineComment}[1]{\State \(\triangleright\) #1} \begin{document} \begin{preview} \begin{algorithm}[H] \begin{algorithmic} \Require Klauselmenge $K$ in KNF (jede Klausel wird durch ein mit den Werten $\Set{-1,0,1}$ Array repräsentiert, dessen Länge gleich der Anzahl $n$ der Symbole ist),\\ zu beweisende Aussage ist $\alpha$,\\ $\beta := \neg \alpha$ in KNF \Procedure{Resolutionsalgorithmus}{$K$, $\beta$} \State $\gamma \gets K \cup \Set{\beta}$ \State $foundMatch \gets$ \True \While{$foundMatch$} \State $foundMatch \gets$ \False \LineComment{Finde zwei Klauseln, bei denen ein Symbol verneint bzw. nicht-verneint vorkommt. Wende darauf die Resolutionsregel an} \For{$i \in \Set{1, \dots, |\gamma|-1}$} \For{$j \in \Set{i+1, \dots |\gamma|}$} \For{$k \in \Set{0, \dots, n-1}$} \If{$\gamma_i[k] \cdot \gamma_j[k] == (-1)$} \State $foundMatch \gets$ \True \State $tmp \gets $ Array der Länge $n$ \For{$l \in \Set{0, \dots, n-1}$} \If{$\gamma_i[l] \cdot \gamma_j[l] == (-1)$ and $l \neq k$} \State $tmp \gets $ leere Klausel \State break \ElsIf{$\gamma_i[l] \neq 0$} \State $tmp[l] \gets \gamma_i[l]$ \Else \State $tmp[l] \gets \gamma_j[l]$ \EndIf \EndFor \State $\gamma \gets (\gamma \cup \Set{tmp}) \setminus \Set{\gamma_i, \gamma_j}$ \State break \EndIf \EndFor \If{$foundMatch$} \State break \EndIf \EndFor \If{$foundMatch$} \State break \EndIf \EndFor \EndWhile \EndProcedure \end{algorithmic} \caption{Resolutionsalgorithmus} \label{alg:resolutionsalgorithmus} \end{algorithm} \end{preview} \end{document}