i really don't know what I changed...
This commit is contained in:
parent
85420343ff
commit
0f1a796934
13 changed files with 0 additions and 544 deletions
|
|
@ -1,201 +0,0 @@
|
|||
\twocolumn[
|
||||
\title{\bf \acronym (High end, Advanced, Data driven, Enterprise grade Sock sorting algorithm) - An algorithm for faster sock sorting}
|
||||
\author{
|
||||
CelloClemens$^{1,2}$,
|
||||
Henri\emoji{duck}$^{1}$,
|
||||
}
|
||||
\date{\today}
|
||||
% List of institutions
|
||||
\maketitle
|
||||
$^{1}$Department for theoretical laundry science, Karlsruhe institute of suffering and sorrow (KISS), Karlsruhe, Germany \\
|
||||
$^{2}$Institute of laundry sorting, Department for socks, Karlsruhe institute of suffering and sorrow (KISS), Karlsruhe, Germany
|
||||
\begin{psummary}
|
||||
Sorting socks can often be a time consuming task. This paper introduces the fastest method known in the scientific community to tackle
|
||||
this challanging task. To be able to implement this new algorithm
|
||||
a new datastructure will be introduced and discussed. Abundant application of this novel algorithm may be able to
|
||||
reduce the time required for sorting socks considerably.
|
||||
\end{psummary}
|
||||
\vspace{2mm}
|
||||
]
|
||||
\fancypagestyle{firstpage}{%
|
||||
\lhead{Please help I am stuck in the basement sorting socks}
|
||||
\rhead{Journal of Immaterial Science}
|
||||
}
|
||||
\thispagestyle{firstpage}
|
||||
|
||||
% The introduction
|
||||
\section{Introduction}
|
||||
While sorting algorithms are one of the most discussed algorithms in the
|
||||
computer science community, application of this field to laundry is still quite new.
|
||||
In fact no research is known to the authors connecting the fields of computer science
|
||||
and laundry sorting. A few definitions are required in order to establish a baseline
|
||||
for the algorithm discussed in the following paper.
|
||||
|
||||
\subsection{Definitions}
|
||||
In this section a few definitions, common in the field of theoretical laundry science shall be
|
||||
introduced. These are required to understand the algorithm and its advantages.
|
||||
|
||||
\subsubsection{Sock}
|
||||
Let $\Lambda_a$ be the Set of laundry. The set of socks, $\Sigma\subset\Lambda_a$
|
||||
is defined as $\Sigma:=\{s\in\Lambda_a|\chi(s)=1\}$\footnote{Yes, some socks have holes. So what?!}, where $\chi(s)$ is the Euler
|
||||
characteristic of $s$. For every sock $s$ there is an equal counterpart $s^{-1}$ giving rise
|
||||
to the identity $s\cong s^{-1}$. The task commonly known as "sock sorting" is in fact the
|
||||
search for this isomorphism $\eta$ and matching every sock $s$ to its inverse
|
||||
$s^{-1}$.
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=\columnwidth]{\projectpath figs/Sock.jpeg}
|
||||
\vspace{0.1in}
|
||||
\caption{A pair of blue socks and a single orange sock.}
|
||||
\label{fig:Sock}
|
||||
\vspace{0.1in}
|
||||
\end{figure}
|
||||
\subsubsection{Laundry basket}
|
||||
Let $\Lambda\subseteq\Lambda_a$ be a set of laundry items. Then a laundry basket is a
|
||||
triplet $(\Lambda, +, -)$ representing a datastructure that implements
|
||||
the following functions:
|
||||
\begin{itemize}
|
||||
\item \texttt{get: }$\mathscr{L}\in\Lambda_a$, returns a uniformly random
|
||||
laundry item from the basket or $\mathscr{L}_0$, the Zero element of laundry, iff
|
||||
There are no items left.
|
||||
\item \texttt{put($\mathscr{L}\in\Lambda_a$)}, deposits the given laundry item
|
||||
into the basket.
|
||||
\end{itemize}
|
||||
Note that both operations run in $\mathcal{O}(1)$. Because of the nature of
|
||||
a laundry basket finding a unique item requires transferring the content of
|
||||
the whole basket to a new basket thus requiring $\mathcal{O}(n)$ operations,
|
||||
$n$ being the number of items currently inside the basket.
|
||||
\subsection{Ongoing and latest research}
|
||||
To fully appreciate the gravity of \acronym it has to first be discussed
|
||||
how most resent research tackles the problem of sock sorting.
|
||||
The following code describes the most recently developed sock sorting
|
||||
algorithm from the paper by my colleague which is the current
|
||||
industry standard. Notice the code has a runtime complexity of $\mathcal{O}(n^2)$.
|
||||
|
||||
\begin{algorithm}
|
||||
\caption{Conventional sock sorting}
|
||||
\begin{algorithmic}[1]
|
||||
\State\Comment initialize a new laundry basket with a given set of laundry
|
||||
\State $A\gets\Lambda$\Comment WLOG assume $\forall\mathscr{L}\in\Lambda|\mathscr{L}$ is a sock
|
||||
\State $\text{matches}\gets []$
|
||||
\Repeat
|
||||
\State $\mathscr{L}\gets$ A.get
|
||||
|
||||
\Repeat\Comment find the inverse Sock by checking all other socks
|
||||
\State $\mathscr{L}^\prime\gets$ A.get
|
||||
\Until{$\mathscr{L}^\prime =\mathscr{L}^{-1}$}
|
||||
\State matches.append(($\mathscr{L}, \mathscr{L}^\prime$))
|
||||
\Until{$\mathscr{L}\ne\mathscr{L}_0$}
|
||||
\end{algorithmic}
|
||||
\end{algorithm}
|
||||
|
||||
\section{Concepts}
|
||||
The basis for every fast algorithm are simple yet equally fast
|
||||
datastructures. To enable the low runtime achieved by \acronym,
|
||||
the introduction of a new datastructure, the "laundry rack" is integral.
|
||||
|
||||
\subsection{Laundry rack}
|
||||
Let $\Lambda\subseteq\Lambda_a$ be a set of laundry. A laundry rack (See figure \ref{fig:Rack}) is a
|
||||
triplet $(\Lambda, +, -)$ representing a datastructure that implements the
|
||||
following methods:
|
||||
\begin{itemize}
|
||||
\item \texttt{get($\mathscr{L}\in\Lambda$)}: $\mathscr{L}\in\Lambda$, gets
|
||||
a specific laundry item from the laundry rack.
|
||||
\item \texttt{put($\mathscr{L}\in\Lambda$)}, deposits a laundry item onto
|
||||
the laundry rack.
|
||||
\item \texttt{match($\mathscr{L}\in\Lambda$)}: $(\mathscr{P}\in\Lambda\times\Lambda)|\mathscr{L}_0$,
|
||||
returns a tuple $(\mathscr{L}, \mathscr{L}^{-1})$ representing
|
||||
a pair of socks iff $\mathscr{L}^{-1}$ is already on the laundry rack,
|
||||
$\mathscr{L}_0$ otherwise.
|
||||
\end{itemize}
|
||||
All these operations (especially \texttt{match}) run in $\mathcal{O}(1)$,
|
||||
making iteration over all $n$ laundry items to find a pair $(\mathscr{L}, \mathscr{L}^{-1})$
|
||||
obsolete.
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=\columnwidth]{\projectpath figs/rack.jpeg}
|
||||
\vspace{0.1in}
|
||||
\caption{A blue drying rack, found in many housholds.}
|
||||
\label{fig:Rack}
|
||||
\vspace{0.2in}
|
||||
\end{figure}
|
||||
|
||||
\section{Algorithm}
|
||||
Making use of the novel advanced features of a "drying rack" we are able to
|
||||
implement the following algorithm in $\mathscr{O}(n)$:\\
|
||||
\begin{algorithm}
|
||||
\caption{\acronym}
|
||||
\begin{algorithmic}[1]
|
||||
\State\Comment initialize a new laundry basket with a given set of laundry
|
||||
\State $A\gets\Lambda$\Comment WLOG assume $\forall\mathscr{L}\in\Lambda|\mathscr{L}$ is a sock
|
||||
\State $\text{matches}\gets []$
|
||||
\State $\daleth\gets []$ \Comment{Create a new empty drying rack}
|
||||
\Repeat
|
||||
\State $\mathscr{L}\gets $ A.get
|
||||
\State result $\gets$ $\daleth$.match($\mathscr{L}$)
|
||||
\If{result $\ne\mathscr{L}_0$}
|
||||
\State matches.append(result)
|
||||
\Else
|
||||
\State $\daleth$.put($\mathscr{L}$)
|
||||
\EndIf
|
||||
|
||||
\Until{$\mathscr{L}\ne\mathscr{L}_0$}
|
||||
\end{algorithmic}
|
||||
\end{algorithm}
|
||||
As evident from the algorithm above, only one loop performing
|
||||
operations which are all in $\mathscr{O}(1)$ is required thus
|
||||
putting the algorithm in a $\mathscr{O}(n)$ runtime complexity
|
||||
class. Assuming that $\forall\mathscr{L}\in\Lambda\exists\mathscr{L}^{-1}|\mathscr{L}\cong\mathscr{L}^{-1}$
|
||||
the algorithm always yields a correct solution for the problem
|
||||
(proof is left as an exercise to the reader).
|
||||
\section{Discussion and Results}
|
||||
To evaluate the algorithms performance it has been executed
|
||||
on different platforms consisting of diverse hardware:\\
|
||||
\resizebox*{\linewidth}{!}{
|
||||
\begin{tabular}[]{l||l|c}
|
||||
\textbf{Hardware} & \textbf{Algorithm} & \textbf{Runtime [s]} \\
|
||||
\hline
|
||||
Myself & Conventional (n=20) & 352.7 \\
|
||||
Myself & \acronym (n=20) & 92.3 \\
|
||||
Myself & Conventional (n=100) & 42069 \\
|
||||
Myself & \acronym (n=100) & 420.69 \\
|
||||
\hline
|
||||
My roommate & Conventional (n=10) & 91.7 \\
|
||||
My roommate & \acronym (n=10) & -2 \\
|
||||
\hline
|
||||
Girlfriend & n.a. & n.a.
|
||||
\end{tabular}
|
||||
}\\
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\includegraphics[width=\linewidth]{figs/graph.png}
|
||||
\bigskip
|
||||
\caption{Comparative statistical time analysis of both algorithms.
|
||||
The graph depicts algorithm runtime (y-axis) and graphs it against
|
||||
input size (x-axis). Data for
|
||||
\acronym in blue, for conventional sock sorting in green.}
|
||||
\end{center}
|
||||
\end{figure}\\
|
||||
From the above data it is evident that \acronym bears a clear advantage in comparison
|
||||
to the conventional algorithm when it comes to sock sorting. Utilizing advanced statistical modelling we calculated a
|
||||
speedup factor of about $3.1415926535897932384626433\cdot n$. The data also illustrates
|
||||
the scalability of the algorithm and its adaptability to different hardware.
|
||||
\section{Conclusion}
|
||||
It can be concluded that the algorithm presented in this paper is
|
||||
greatly superior to the conventional method of sorting socks.
|
||||
It will probably revolutionize not only the field of laundry science but
|
||||
also have great impact in the industry.\\
|
||||
The datastructures outlined above may become abundantly used and be the future
|
||||
industry standard. Although the field of laundry science is still rather new
|
||||
there are still a lot of open questions to be answered. However it is unlikely
|
||||
that a faster sock sorting algorithm than \acronym can be developed.
|
||||
\section{Acknowledgements}
|
||||
We shall use this historic opportunity to thank the Journal of immaterial science
|
||||
for publishing great \st{memes} research. We also want to thank our university
|
||||
for giving us this great opportunity for \st{depression and self loathing}
|
||||
research and personal advancement.\\
|
||||
It is also only appropriate to thank the air. Without it no laundry would be
|
||||
dry and we would not have written this paper.\\
|
||||
|
||||
|
||||
\printbibliography[]
|
||||
Loading…
Add table
Add a link
Reference in a new issue