diff --git a/.gitignore b/.gitignore index d347ea5..25803fb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,12 @@ dist/setup-config *autogen* dist/build/ dist/doc/ +doc/ausarbeitung/hgraph_doc.aux +doc/ausarbeitung/hgraph_doc.bbl +doc/ausarbeitung/hgraph_doc.bcf +doc/ausarbeitung/hgraph_doc.blg +doc/ausarbeitung/hgraph_doc.log +doc/ausarbeitung/hgraph_doc.out +doc/ausarbeitung/hgraph_doc.run.xml +doc/ausarbeitung/hgraph_doc.synctex.gz +doc/ausarbeitung/hgraph_doc.toc diff --git a/doc/ausarbeitung/hgraph.bib b/doc/ausarbeitung/hgraph.bib new file mode 100644 index 0000000..e1e0faf --- /dev/null +++ b/doc/ausarbeitung/hgraph.bib @@ -0,0 +1,8 @@ +@article{Dummy, + author = {Dummy}, + title = {Dummy}, + subtitle = {Dummy}, + journaltitle = {Dummy}, + date = {1929-10-26}, + hyphenation={USenglish}, +} \ No newline at end of file diff --git a/doc/ausarbeitung/hgraph_doc.pdf b/doc/ausarbeitung/hgraph_doc.pdf new file mode 100644 index 0000000..b4644a4 Binary files /dev/null and b/doc/ausarbeitung/hgraph_doc.pdf differ diff --git a/doc/ausarbeitung/hgraph_doc.tex b/doc/ausarbeitung/hgraph_doc.tex new file mode 100644 index 0000000..b030aef --- /dev/null +++ b/doc/ausarbeitung/hgraph_doc.tex @@ -0,0 +1,158 @@ +\documentclass[a4paper]{scrartcl} +\usepackage{titling} + +% LANGUAGE and LOCALE +\usepackage[USenglish,ngerman]{babel} % Deutsches Wörterbuch usw. +\newcommand{\en}[1]{\selectlanguage{USenglish}#1\selectlanguage{ngerman}} + +% FONT +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[babel=true]{microtype} % after babel +\usepackage{lmodern} +%\usepackage{times} +\makeatletter +\g@addto@macro\@verbatim{\microtypesetup{activate=false}} +\makeatother + +% ENUMERATE and ITEMIZE +\usepackage{enumerate} +\usepackage{paralist} + +% SCIENCE and MATH +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{icomma} +%\usepackage{units} +\usepackage{xfrac} % Brüche im Stil von ½ (\sfrac) + +% PROGRAMMING +\usepackage{algorithm} +\usepackage[noend]{algpseudocode} + +% TABLES +%\usepackage{array} +%\usepackage{multicol} +%\usepackage{dcolumn} +%\usepackage{slashbox} % diagonale Linie in Tabellenzelle +%\usepackage{tabularx} + +% LINKS and REFS +\usepackage[obeyspaces]{url} +\usepackage{hyperref} + +% BIBLIOGRAPHY +\usepackage[style=german,german=quotes]{csquotes} +\usepackage[style=alphabetic,backend=biber,babel=hyphen,maxbibnames=10]{biblatex} +%\usepackage[authordate,backend=biber,babel=hyphen]{biblatex-chicago} +\bibliography{hgraph.bib} + +% FORMATING +\usepackage{anysize} % Makros zum Einstellen der Seitenränder +\parindent0em % Keine amerikanische Einrückung am Anfang von Paragraphen +\clubpenalty = 10000 % Schusterungen bestrafen +\widowpenalty = 10000 % Hurenkinder bestrafen +\displaywidowpenalty = 10000 + +% math commands +\newcommand{\trans}[1]{{#1}^\intercal} +\newcommand{\abs}[1]{\left\vert #1 \right\vert} +\newcommand{\card}[1]{\left\vert #1 \right\vert} % cardinality +\newcommand{\norm}[1]{\left\Vert #1 \right\Vert} + +\newcommand{\setR}{\mathbb{R}} +\newcommand{\setN}{\mathbb{N}} + +\DeclareMathOperator*{\argmin}{\arg\min} +\DeclareMathOperator*{\argmax}{\arg\max} + +\hyphenation{IEEE} % hyphenation of default language +\begin{hyphenrules}{USenglish} % hyphenation of secondary language + \hyphenation{IEEE} +\end{hyphenrules} + +\begin{document} + +\title{\en{Densely Connected Biclusters}} +\author{Stefan Dresselhaus \and Thomas Pajenkamp} +\date{\today} % TODO: Abgabedatum +\newcommand{\thesemester}{Wintersemester 2013/14} +\newcommand{\thecategory}{Programmierprojekt} +\newcommand{\thecourse}{Parallele Algorithmen und Datenverarbeitung} + + +% +% Deckblatt +% +\begin{titlepage} + \begin{center} + \mbox{} + \vspace{1cm}\\ + {\Huge \textbf{\thetitle}} \\[3em] + {\huge \theauthor} \\[4em] + {\Large \thecourse}\\[1em] + {\Large \thecategory{} im \thesemester}\\[1em] + + \vspace{3cm} + + {\LARGE Universität Bielefeld -- Technische Fakultät}\\[2em] + {\large \thedate} + \end{center} +\end{titlepage} +% +% Inhaltsverzeichnis +% +%\setcounter{page}{1} +\microtypesetup{protrusion=false} +\tableofcontents +\microtypesetup{protrusion=true} + +%\newpage + +\section{Zielsetzung des Projekts} + +Im Rahmen dieses Programmierprojekts wurde ein Programm entworfen und entwickelt, um \en{Densely Connected Biclusters}, im weiteren DCB, in einem biologischen Netzwerk zu ermitteln. Bei DCB handelt es sich um Teilgraphen eines Netzwerks, dessen Knoten untereinander hoch vernetzt sind und Objekte mit ähnlichen Eigenschaften repräsentieren. \par +Die Suche nach DCB ist ein NP-schweres Problem~\cite{Dummy}. Da mit einem geeigneten Algorithmus jedoch voneinander unabhängige Lösungspfade einzeln verfolgt werden können, ist das Problem gut für eine parallele Berechnung geeignet, wodurch die Gesamtlaufzeit stark reduziert werden kann.\par +%TODO: Referenz NP-schwer + +%TODO ein bisschen biologische Motivation? + +\en{ +\subsection{Densely Connected Biclusters} +} + +Ausgangsbasis ist ein ungerichteter ungewichteter Graph $G = (V, E)$, dessen Knoten mit $p$ Attributen versehen sind. Jedem Knoten $n$ ist zu jedem Attribut $i$ ein numerischer Wert $a_{ni}$ zugewiesen. \par +Ein DCB $D_k = (V_k, E_k)$ ist ein Teilgraph von $G$, der durch die Paramter $\alpha \in [0, 1]$, $\delta \in \setN$ und $\omega \in \setR^p$ beschränkt wird und die folgende drei Eigenschaften erfüllt. +\begin{itemize} +\item Der Teilgraph ist zusammenhängend. +\item Die Dichte des Teilgraphen unterschreitet einen Schwellenwert $\alpha$ nicht, also $\frac{2 \cdot \card{E_k}}{\card{V_k}(\card{V_k}-1)} \geq \alpha$. +\item Für mindestens $\delta$ Attribute liegen die Werte aller Knoten des Teilgraphen höchstens $\omega_i$ auseinander. Anders ausgedrückt +\begin{equation*} +\delta \geq \card{\left\lbrace \sum_{k=1}^p \left(\max_n a_{nk} - \min_n a_{nk}\right) \leq \omega_{k} \right\rbrace}\text{\@.} +\end{equation*} +\end{itemize} + +\section{Wahl der Programmiersprache} + +Imperativ: Gefahr unerwünschter wechselseitiger Beeinflussung, Gefahr Verklemmung bei Kommunikation\\ +Funktional: Garantiert keine Nebenwirkung\\ +Haskell: Pakete zur einfachen Parallelisierung, kaum Änderung des sequentiellen Codes nötig\\ +zweischneidiges Schwert: Lazy-Evaluation $\rightarrow$ 1) nicht zu viele „Chunks” auf einmal 2) baut große Datenstrukturen, anstatt direkt zu reduzieren, wo das Gesamtergebnis immer benötigt wird (keine Parallelisierungs-Problem, muss man sich aber mit auseinandersetzen) + + +\section{Der Algorithmus} + +Von Pseudocode rüberkopieren, eventuell anpassen an Details der Programmierung zur besseren Effizienz. + + + +\section{Ausführung und Auswertung} +Amdahls Gesetz, Minskys Vermutung\\ +Nach jedem Erweiterungsschritt: Sammeln und Aufgaben neu verteilen $\rightarrow$ Kommunikation + +\section{Fazit} + +\newpage +\printbibliography[heading=bibintoc] + +\end{document} \ No newline at end of file