Doku: Anfänge

This commit is contained in:
Arne Keller 2019-04-04 15:47:36 +02:00
parent 9ab79445ba
commit b9f646acf7

89
DokumentationAufgabe2.tex Normal file
View File

@ -0,0 +1,89 @@
\documentclass[a4paper,10pt,ngerman]{scrartcl}
\usepackage{babel}
\usepackage[a4paper,margin=2.5cm]{geometry}
% automatische Quotes
\usepackage{csquotes}
% Die nächsten drei Felder bitte anpassen:
\newcommand{\Name}{Arne Keller} % Teamname oder eigenen Namen angeben
\newcommand{\TeilnahmeId}{50966}
\newcommand{\Aufgabe}{Aufgabe 2: Dreiecksbeziehungen}
% Kopf- und Fußzeilen
\usepackage{scrlayer-scrpage, lastpage}
\setkomafont{pageheadfoot}{\textrm}
\lohead{\Aufgabe}
\chead{\thepage{}/\pageref{LastPage}}
\rohead{\Name/Teilnahme-Id: \TeilnahmeId}
\cfoot{}
% Für mathematische Befehle und Symbole
\usepackage{amsmath,amsthm,amssymb,gensymb}
% Für Bilder
\usepackage{graphicx,subcaption,float}
% Für Skizzen
\usepackage{tkz-euclide}
\usetkzobj{all}
% Für Quelltext
\usepackage{listings}
\usepackage{color}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{
keywordstyle=\color{blue},commentstyle=\color{mygreen},
stringstyle=\color{mymauve},rulecolor=\color{black},
basicstyle=\footnotesize\ttfamily,numberstyle=\tiny\color{mygray},
captionpos=b, % sets the caption-position to bottom
keepspaces=true, % keeps spaces in text
numbers=left, numbersep=5pt, showspaces=false,showstringspaces=false,
showtabs=false, stepnumber=2, tabsize=2, title=\lstname
}
\lstdefinelanguage{Rust}{
keywords={break, match, continue, else, for, fn, if, return, self, let, mut, loop, while, extern, crate, use, static, enum, struct, impl, as, type, derive, mod},
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]",
sensitive=true
}
% Diese beiden Pakete müssen als letztes geladen werden
%\usepackage{hyperref} % Anklickbare Links im Dokument
%\usepackage{cleveref}
% Daten für die Titelseite
\title{\Aufgabe}
\author{\Name\\Teilnahme-ID: \TeilnahmeId}
\date{29. April 2019}
\begin{document}
\maketitle
\tableofcontents
\section{Lösungsidee}
Ähnlich wie man für Lisa in der ersten Aufgabe Kurven ausschließen kann, kann man für diese Aufgabe feststellen, dass zwei Dreiecke, die nebeneinander platziert sind, sich immer berühren. Berühren können sich diese entweder Kante an Kante oder nur an einem Punkt. Wenn zwischen zwei Dreiecken noch Platz ist, könnten diese näher zusammenrücken. Daher kann man annehmen, dass in jeder optimalen Lösung kein freier Platz (der belegt werden könnte) zwischen zwei benachbarten Dreiecken ist.
Mit dieser Einschränkung erscheint eine Brute-Force-Suche mit Heuristiken möglich, wenn auch nicht besonders elegant.
\subsection{Laufzeitanalyse}
Jedes Dreieck kann auf eine der drei Seiten gelegt werden. Zudem kann es horizontal gespiegelt werden. Somit haben wir für das \enquote{erste} Dreieck, das platziert wird, $6n$ Möglichkeiten. Andere Dreiecke können auf linker oder rechter Seite platziert werden: $4*6(n-1)$ Möglichkeiten. Wie bei vielen Brute-Force-Suchen ist die Laufzeit daher ca. $O(n!)$. Heuristiken können helfen, die Laufzeit in der Praxis zu verkürzen.
\section{Bedienung des Programms}
Das Programm liest die Problemstellung von der Standardeingabe ein. Die grafische Ausgabe wird in die Standardausgabe geschrieben. Kommandozeilenparameter werden nicht verarbeitet.
\section{Umsetzung}
TODO
\subsection{Optimierungen}
Aufteilungen mit kleinerer Breite werden zuerst abgearbeitet.
\section{Beispiele}
Alle Beispiele sind im Maßstab 1:70m.
\section{Quellcode (Hauptalgorithmus)}
\lstinputlisting[frame=single,language=Rust,breaklines=true]{src/main.rs}
\end{document}