Compare commits

..

No commits in common. "3f3ad0c765e121eaed5b3f4a10a879d43ba069e6" and "9b1872139d41018deb23742f2d3c19608f06897a" have entirely different histories.

18 changed files with 302 additions and 1949 deletions

View File

@ -6,18 +6,29 @@
\begin{itemize} \begin{itemize}
\item Datenstruktur für Wortliste \item Datenstruktur für Wortliste
\item Paralleler Such-Algorithmus \item Paralleler Such-Algorithmus
\item Abgeleitet: Optimierung der Laufzeit \item Abgeleitet: Optimierung der Such-Zeit
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{Analyse} \begin{frame}{Analyse}
{\Large Umsetzung} {\Large Abgeleitete Aufgabenstellung}
\vspace{0.5cm} \vspace{0.5cm}
\begin{itemize} \begin{minipage}{0.7\textwidth}
\item Zwei Phasen: Einlesen und Suchen Aufteilung in zwei Blöcke:
\item Such-Phase zeitkritischer als Einlese-Phase \begin{block}{Anwendungs-Schicht (Layer 5 - 7)}
\item Locks minimieren \begin{itemize}
\end{itemize} \item Request/Reponse
\item Konkurrierender Zugriff
\item Session Handling
\end{itemize}
\end{block}
\begin{block}{Transport-Schicht (Layer 1 - 4)}
\begin{itemize}
\item Datenübertragung zwischen SG
\item Gleichzeitige Kommunikation
\end{itemize}
\end{block}
\end{minipage}
\end{frame} \end{frame}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

View File

@ -1,23 +0,0 @@
\begin{frame}{Datenstrukturen}
{\Large Architektur}
\vspace{0.5cm}
\begin{itemize}
\item Flacher Suchbaum
\item Ebene 1: Ein Knoten je Thread
\item Ebene 2: Ein Blatt je erster Wort-Buchstabe
\item Blätter tragen Wort-Listen
\end{itemize}
\end{frame}
\begin{frame}{Datenstrukturen - Implementierung}
\begin{figure}
\includegraphics[width=\textwidth]{bucket_finder}
\end{figure}
\begin{itemize}
\item buckets: Erste Baum-Ebene, nach Threads
\item Bucket: Zweite Baum-Ebene, nach erstem Buchstaben
\item WordRefList: Wort-Liste am Blatt
\end{itemize}
\end{frame}

View File

@ -1,18 +0,0 @@
\begin{frame}[t]{Einfügen von Daten}
\vspace{1cm}
\begin{figure}
\onslide*<1>{
\includegraphics[width=\textwidth]{insert_1}
\caption*{Eingabedaten}
}
\onslide*<2>{
\includegraphics[width=\textwidth]{insert_3}
\caption*{Aufteilen in Buckets}
}
\onslide*<3>{
\includegraphics[width=\textwidth]{insert_4}
\caption*{Mapping nach erstem Buchstaben}
}
\end{figure}
\end{frame}

View File

@ -5,7 +5,7 @@
\usepackage[sfdefault]{noto} \usepackage[sfdefault]{noto}
\usepackage[T1]{fontenc} \usepackage[T1]{fontenc}
\usepackage{caption} \usepackage{tikz}
\usepackage{fontawesome} \usepackage{fontawesome}
\definecolor{vector_red}{RGB}{183, 0, 50} \definecolor{vector_red}{RGB}{183, 0, 50}
@ -46,15 +46,6 @@
\include{aufgabe} \include{aufgabe}
\include{analyse} \include{analyse}
\include{datenstruktur}
\include{einlesen}
\include{suchen}
\include{komplexität}
\include{inkrementell_suchen}
\include{danke} \include{danke}
\end{document} \end{document}

View File

@ -1,9 +0,0 @@
\begin{frame}{Inkrementelle Suche}
\begin{itemize}
\item Such-Phase noch zeitkritischer
\item Such-Ergebnis als gefiltertes Such-Objekt
\item UI: dynamisch gefüllte Combo-Box
\item Asynchrone und ggf. verzögerte Updates
\end{itemize}
\end{frame}

View File

@ -1,22 +0,0 @@
\begin{frame}{Komplexitäts-Abschätzung}
BucketFinder
\begin{itemize}
\item Suchraum einfügen: O(n) mit $ n = |Suchraum| $
\item Pattern suchen: O(n) mit $ n = \frac{|Suchraum|}{|Threads| \times |Alphabet|} $
\item Laufzeit: deutlich schnelleres Einfügen und schelleres Finden von größeren Ergebnismengen
\end{itemize}
\vspace{0.5cm}
Balancierter Baum
\begin{itemize}
\item Suchraum einfügen: O(n log n)
\item Pattern suchen: O(log n)
\item Laufzeit: deutlich schneller beim Finden kleinerer Ergebnismengen
\end{itemize}
\end{frame}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

View File

@ -1,10 +0,0 @@
\begin{frame}[t]{Suchen von Wörtern}
\begin{figure}
\onslide*<1>{
\includegraphics[width=\textwidth]{search}
\caption*{Suche nach "BB"}
}
\end{figure}
\end{frame}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

@ -3,11 +3,11 @@
#include "finder.h" #include "finder.h"
#include "word_list.h" #include "word_list.h"
#include <unordered_map> #include <map>
class Bucket { class Bucket {
private: private:
std::unordered_map<char, WordRefList> directory_; std::map<char, WordRefList> directory_;
public: public:
void insert(const WordList &word_list, size_t first_index, size_t last_index); void insert(const WordList &word_list, size_t first_index, size_t last_index);

View File

@ -3,11 +3,11 @@
#include "finder.h" #include "finder.h"
#include "word_list.h" #include "word_list.h"
#include <unordered_map> #include <map>
class GroupedFinder : public Finder { class GroupedFinder : public Finder {
private: private:
std::unordered_map<char, WordRefList> groups_; std::map<char, WordRefList> groups_;
public: public:
GroupedFinder(const WordList &word_list); GroupedFinder(const WordList &word_list);

View File

@ -3,12 +3,12 @@
#include "finder.h" #include "finder.h"
#include "word_list.h" #include "word_list.h"
#include <unordered_map> #include <map>
class SearchTreeNode { class SearchTreeNode {
private: private:
WordRefList words_; WordRefList words_;
std::unordered_map<char, SearchTreeNode> children_; std::map<const char, SearchTreeNode> children_;
public: public:
void insert(std::string_view partial_word, const std::string *original_word); void insert(std::string_view partial_word, const std::string *original_word);

View File

@ -1,5 +1,6 @@
#include "grouped_finder.h" #include "grouped_finder.h"
#include <forward_list>
#include <mutex> #include <mutex>
#include <thread> #include <thread>
#include <vector> #include <vector>