mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-19 11:38:05 +02:00
Move publications from /documents to /publications
This commit is contained in:
parent
9438adee4e
commit
114356002e
40 changed files with 0 additions and 0 deletions
2
publications/Proseminar-Netzwerkanalyse/.gitignore
vendored
Normal file
2
publications/Proseminar-Netzwerkanalyse/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
data/cora
|
||||
data/dblp
|
41
publications/Proseminar-Netzwerkanalyse/Analyse.tex
Normal file
41
publications/Proseminar-Netzwerkanalyse/Analyse.tex
Normal file
|
@ -0,0 +1,41 @@
|
|||
Für den DYCOS-Algorithmus wurde in \cite{aggarwal2011} bewiesen, dass sich nach
|
||||
Ausführung von DYCOS für einen unbeschrifteten Knoten mit einer
|
||||
Wahrscheinlichkeit von höchstens $(|\L_t|-1)\cdot e^{-l \cdot b^2 / 2}$ eine
|
||||
Knotenbeschriftung ergibt, deren relative Häufigkeit weniger als $b$ der
|
||||
häufigsten Beschriftung ist. Dabei ist $|\L_t|$ die Anzahl der Beschriftungen
|
||||
und $l$ die Länge der Random-Walks.
|
||||
|
||||
Außerdem wurde experimentell anhand des DBLP-Datensatzes\footnote{http://dblp.uni-trier.de/}
|
||||
und des CORA-Datensatzes\footnote{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}
|
||||
gezeigt (vgl. \cref{tab:datasets}), dass die Klassifikationsgüte nicht wesentlich von der Anzahl der Wörter mit
|
||||
höchstem Gini-Koeffizient $m$ abhängt. Des Weiteren betrug die Ausführungszeit
|
||||
auf einem Kern eines Intel Xeon $\SI{2.5}{\GHz}$ Servers mit
|
||||
$\SI{32}{\giga\byte}$~RAM für den DBLP-Datensatz unter $\SI{25}{\second}$,
|
||||
für den CORA-Datensatz sogar unter $\SI{5}{\second}$. Dabei wurde eine
|
||||
für CORA eine Klassifikationsgüte von \SIrange{82}{84}{\percent} und
|
||||
auf den DBLP-Daten von \SIrange{61}{66}{\percent} erreicht.
|
||||
|
||||
\begin{table}[htp]
|
||||
\centering
|
||||
\begin{tabular}{|l||r|r|r|r|}\hline
|
||||
\textbf{Name} & \textbf{Knoten} & \textbf{davon beschriftet} & \textbf{Kanten} & \textbf{Beschriftungen} \\ \hline\hline
|
||||
\textbf{CORA} & \num{19396} & \num{14814} & \num{75021} & 5 \\
|
||||
\textbf{DBLP} & \num{806635} & \num{18999 } & \num{4414135} & 5 \\\hline
|
||||
\end{tabular}
|
||||
\caption{Datensätze, die für die experimentelle Analyse benutzt wurden}
|
||||
\label{tab:datasets}
|
||||
\end{table}
|
||||
|
||||
Obwohl es sich nicht sagen lässt, wie genau die Ergebnisse aus
|
||||
\cite{aggarwal2011} zustande gekommen sind, eignet sich das
|
||||
Kreuzvalidierungsverfahren zur Bestimmung der Klassifikationsgüte wie es in
|
||||
\cite{Lavesson,Stone1974} vorgestellt wird:
|
||||
\begin{enumerate}
|
||||
\item Betrachte nur $V_{L,T}$.
|
||||
\item Unterteile $V_{L,T}$ zufällig in $k$ disjunkte Mengen $M_1, \dots, M_k$.
|
||||
\item \label{schritt3} Teste die Klassifikationsgüte, wenn die Knotenbeschriftungen
|
||||
aller Knoten in $M_i$ für DYCOS verborgen werden für $i=1,\dots, k$.
|
||||
\item Bilde den Durchschnitt der Klassifikationsgüten aus \cref{schritt3}.
|
||||
\end{enumerate}
|
||||
|
||||
Es wird $k=10$ vorgeschlagen.
|
BIN
publications/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf
Normal file
BIN
publications/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf
Normal file
Binary file not shown.
|
@ -0,0 +1,80 @@
|
|||
\documentclass[technote,a4paper,leqno]{IEEEtran}
|
||||
\pdfoutput=1
|
||||
%---- Sonderzeichen-------%
|
||||
\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
|
||||
%---- Codierung----%
|
||||
\usepackage{graphicx}
|
||||
\usepackage{url}
|
||||
%----- Mathematischer Zeichenvorrat---%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{enumerate}
|
||||
% fuer die aktuelle Zeit
|
||||
\usepackage{scrtime}
|
||||
\usepackage{listings}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{cite}
|
||||
\usepackage{parskip}
|
||||
\usepackage[framed,amsmath,thmmarks,hyperref]{ntheorem}
|
||||
\usepackage{algorithm}
|
||||
\usepackage[noend]{algpseudocode}
|
||||
\usepackage{csquotes}
|
||||
\usepackage{subfig} % multiple figures in one
|
||||
\usepackage{caption}
|
||||
\usepackage{tikz}
|
||||
\let\labelindent\relax
|
||||
\usepackage{enumitem}
|
||||
\usepackage[german]{cleveref} % nameinlink - arxiv has too old LaTeX :-(
|
||||
\usepackage{braket}
|
||||
\allowdisplaybreaks
|
||||
\usetikzlibrary{backgrounds}
|
||||
\usepackage[binary-units=true]{siunitx}
|
||||
\sisetup{range-phrase=--}
|
||||
\usepackage{mystyle}
|
||||
\usepackage{microtype}
|
||||
|
||||
\setcounter{tocdepth}{3}
|
||||
\setcounter{secnumdepth}{3}
|
||||
|
||||
\hypersetup{
|
||||
pdftitle = {Über die Klassifizierung von Knoten in dynamischen Netzwerken mit textuellen Inhalten},
|
||||
pdfauthor = {Martin Thoma}, % ORCID: http://orcid.org/0000-0002-6517-1690
|
||||
pdfkeywords = {DYCOS}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\title{Über die Klassifizierung von Knoten in dynamischen Netzwerken mit Inhalt}
|
||||
\author{Martin Thoma}
|
||||
\date{17.01.2014}
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}%
|
||||
\input{abstract}
|
||||
\end{abstract}
|
||||
|
||||
\section{Einleitung}
|
||||
\input{Einleitung}
|
||||
|
||||
\section{Related Work}
|
||||
\input{Related-Work}
|
||||
|
||||
\section{DYCOS}
|
||||
\input{DYCOS-Algorithmus}
|
||||
|
||||
\section{Analyse des DYCOS-Algorithmus}
|
||||
\input{Analyse}
|
||||
|
||||
\section{Probleme des DYCOS-Algorithmus}
|
||||
\input{SchwaechenVerbesserungen}
|
||||
|
||||
\section{Ausblick}
|
||||
\input{Ausblick}
|
||||
|
||||
\bibliographystyle{IEEEtranSA}
|
||||
\bibliography{literatur}
|
||||
|
||||
\end{document}
|
||||
|
22
publications/Proseminar-Netzwerkanalyse/Ausblick.tex
Normal file
22
publications/Proseminar-Netzwerkanalyse/Ausblick.tex
Normal file
|
@ -0,0 +1,22 @@
|
|||
Den DYCOS-Algorithmus kann in einigen Aspekten erweitert werden. So könnte man
|
||||
vor der Auswahl des Vokabulars jedes Wort auf den Wortstamm zurückführen. Dafür
|
||||
könnte zum Beispiel der in \cite{porter} vorgestellte Porter-Stemming-Algorithmus verwendet werden. Durch diese Maßnahme wird das Vokabular kleiner
|
||||
gehalten wodurch mehr Artikel mit einander durch Vokabular verbunden werden
|
||||
können. Außerdem könnte so der Gini-Koeffizient ein besseres Maß für die
|
||||
Gleichheit von Texten werden.
|
||||
|
||||
Eine weitere Verbesserungsmöglichkeit besteht in der Textanalyse. Momentan ist
|
||||
diese noch sehr einfach gestrickt und ignoriert die Reihenfolge von Wörtern
|
||||
beziehungsweise Wertungen davon. So könnte man den DYCOS-Algorithmus in einem
|
||||
sozialem Netzwerk verwenden wollen, in dem politische Parteiaffinität von
|
||||
einigen Mitgliedern angegeben wird um die Parteiaffinität der restlichen
|
||||
Mitglieder zu bestimmen. In diesem Fall macht es jedoch einen wichtigen
|
||||
Unterschied, ob jemand über eine Partei gutes oder schlechtes schreibt.
|
||||
|
||||
Eine einfache Erweiterung des DYCOS-Algorithmus wäre der Umgang mit mehreren
|
||||
Beschriftungen.
|
||||
|
||||
DYCOS beschränkt sich bei inhaltlichen Zweifachsprüngen auf die
|
||||
Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten gemessen mit der
|
||||
Aggregatanalyse, allerdings wurde bisher noch nicht untersucht, wie der
|
||||
Einfluss von $q \in \mathbb{N}$ auf die Klassifikationsgüte ist.
|
168
publications/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex
Normal file
168
publications/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex
Normal file
|
@ -0,0 +1,168 @@
|
|||
\subsection{Überblick}
|
||||
DYCOS (\underline{DY}namic \underline{C}lassification algorithm with
|
||||
c\underline{O}ntent and \underline{S}tructure) ist ein
|
||||
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011}
|
||||
vorgestellt wurde.
|
||||
|
||||
Ein zentrales Element des DYCOS-Algorithmus ist der sog. {\it Random Walk}:
|
||||
|
||||
\begin{definition}[Random Walk, Sprung]
|
||||
Sei $G = (V, E)$ mit $E \subseteq V \times V$ ein Graph und
|
||||
$v_0 \in V$ ein Knoten des Graphen.
|
||||
|
||||
Ein Random Walk der Länge $l$ auf $G$, startend bei $v_0$ ist nun der
|
||||
zeitdiskrete stochastische Prozess, der $v_i$ auf einen zufällig gewählten
|
||||
Nachbarn $v_{i+1}$ abbildet (für $i \in 0, \dots, l-1$). Die Abbildung $v_i
|
||||
\mapsto v_{i+1}$ heißt ein Sprung.
|
||||
\end{definition}
|
||||
|
||||
Der DYCOS-Algorithmus klassifiziert einzelne Knoten, indem $r$ Random Walks der
|
||||
Länge $l$, startend bei dem zu klassifizierenden Knoten $v$ gemacht werden.
|
||||
Dabei werden die Beschriftungen der besuchten Knoten gezählt. Die Beschriftung,
|
||||
die am häufigsten vorgekommen ist, wird als Beschriftung für $v$ gewählt. DYCOS
|
||||
nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass Knoten, die nur
|
||||
wenige Hops von einander entfernt sind, häufig auch ähnlich sind \cite{bhagat}.
|
||||
Der DYCOS-Algorithmus arbeitet jedoch nicht direkt auf dem Graphen, sondern
|
||||
erweitert ihn mit Hilfe der zur Verfügung stehenden Texte. Wie diese
|
||||
Erweiterung erstellt wird, wird im Folgenden erklärt.\\
|
||||
Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das
|
||||
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann und
|
||||
warum nicht einfach jedes Wort in das Vokabular aufgenommen wird, wird in
|
||||
\cref{sec:vokabularbestimmung} erläutert.\\
|
||||
Nach der Bestimmung des Vokabulars wird für jedes Wort im Vokabular ein
|
||||
Wortknoten zum Graphen hinzugefügt. Alle Knoten, die der Graph zuvor hatte,
|
||||
werden nun \enquote{Strukturknoten} genannt.
|
||||
Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$
|
||||
verbunden, wenn $w$ in einem Text von $v$ vorkommt. \Cref{fig:erweiterter-graph}
|
||||
zeigt beispielhaft den so entstehenden, semi-bipartiten Graphen.
|
||||
Der DYCOS-Algorithmus betrachtet also die Texte, die einem Knoten
|
||||
zugeordnet sind, als eine Multimenge von Wörtern. Das heißt, zum einen
|
||||
wird nicht auf die Reihenfolge der Wörter geachtet, zum anderen wird
|
||||
bei Texten eines Knotens nicht zwischen verschiedenen
|
||||
Texten unterschieden. Jedoch wird die Anzahl der Vorkommen
|
||||
jedes Wortes berücksichtigt.
|
||||
|
||||
\begin{figure}[htp]
|
||||
\centering
|
||||
\input{figures/graph-content-and-structure.tex}
|
||||
\caption{Erweiterter Graph}
|
||||
\label{fig:erweiterter-graph}
|
||||
\end{figure}
|
||||
|
||||
Entsprechend werden zwei unterschiedliche Sprungtypen unterschieden, die
|
||||
strukturellen Sprünge und inhaltliche Zweifachsprünge:
|
||||
|
||||
\begin{definition}[struktureller Sprung]
|
||||
Sei $G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
||||
um die Wortknoten $W_{t}$ erweiterte Graph.
|
||||
|
||||
Dann heißt das zufällige wechseln des aktuell betrachteten
|
||||
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$
|
||||
ein \textit{struktureller Sprung}.
|
||||
\end{definition}
|
||||
\goodbreak
|
||||
Im Gegensatz dazu benutzten inhaltliche Zweifachsprünge tatsächlich die
|
||||
Grapherweiterung:
|
||||
\begin{definition}[inhaltlicher Zweifachsprung]
|
||||
Sei $G_t = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der um die
|
||||
Wortknoten $W_{t}$ erweiterte Graph.
|
||||
|
||||
Dann heißt das zufällige wechseln des aktuell betrachteten Knoten $v \in
|
||||
V_t$ zu einem benachbartem Knoten $w \in W_t$ und weiter zu einem
|
||||
zufälligem Nachbar $v' \in V_t$ von $w$ ein inhaltlicher Zweifachsprung.
|
||||
\end{definition}
|
||||
|
||||
Jeder inhaltliche Zweifachsprung beginnt und endet also in einem
|
||||
Strukturknoten, springt über einen Wortknoten und ist ein Pfad der Länge~2.
|
||||
|
||||
Ob in einem Sprung der Random Walks ein struktureller Sprung oder ein
|
||||
inhaltlicher Zweifachsprung gemacht wird, wird jedes mal zufällig neu
|
||||
entschieden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
|
||||
gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird ein struktureller Sprung
|
||||
durchgeführt und mit einer Wahrscheinlichkeit von $(1-p_S)$ ein modifizierter
|
||||
inhaltlicher Zweifachsprung, wie er in \cref{sec:sprungtypen} erklärt wird,
|
||||
gemacht. Der Parameter $p_S$ gibt an, wie wichtig die Struktur des Graphen im
|
||||
Verhältnis zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
|
||||
die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des Graphen.
|
||||
|
||||
Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt werden, muss
|
||||
es aber nicht.
|
||||
|
||||
In \cref{alg:DYCOS} steht der DYCOS-Algorithmus in Form von Pseudocode:
|
||||
In \cref{alg1:l8} wird für jeden unbeschrifteten Knoten
|
||||
durch die folgenden Zeilen eine Beschriftung gewählt.
|
||||
|
||||
\Cref{alg1:l10} führt $r$ Random Walks durch. In \cref{alg1:l11} wird eine
|
||||
temporäre Variable für den aktuell betrachteten Knoten angelegt.
|
||||
|
||||
In \cref{alg1:l12} bis \cref{alg1:l21} werden einzelne Random Walks der Länge
|
||||
$l$ durchgeführt, wobei die beobachteten Beschriftungen gezählt werden und mit
|
||||
einer Wahrscheinlichkeit von $p_S$ ein struktureller Sprung durchgeführt wird.
|
||||
|
||||
\begin{algorithm}[ht]
|
||||
\begin{algorithmic}[1]
|
||||
\Require \\$G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_t)$ (Erweiterter Graph),\\
|
||||
$r$ (Anzahl der Random Walks),\\
|
||||
$l$ (Länge eines Random Walks),\\
|
||||
$p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs),\\
|
||||
$q$ (Anzahl der betrachteten Knoten in der Clusteranalyse)
|
||||
\Ensure Klassifikation von $V_t \setminus V_{L,t}$\\
|
||||
\\
|
||||
|
||||
\ForAll{Knoten $v \in V_t \setminus V_{L,t}$}\label{alg1:l8}
|
||||
\State $d \gets $ leeres assoziatives Array
|
||||
\For{$i = 1, \dots,r$}\label{alg1:l10}
|
||||
\State $w \gets v$\label{alg1:l11}
|
||||
\For{$j= 1, \dots, l$}\label{alg1:l12}
|
||||
\State $sprungTyp \gets \Call{random}{0, 1}$
|
||||
\If{$sprungTyp \leq p_S$}
|
||||
\State $w \gets$ \Call{SturkturellerSprung}{$w$}
|
||||
\Else
|
||||
\State $w \gets$ \Call{InhaltlicherZweifachsprung}{$w$}
|
||||
\EndIf
|
||||
\State $beschriftung \gets w.\Call{GetLabel}{ }$
|
||||
\If{$!d.\Call{hasKey}{beschriftung}$}
|
||||
\State $d[beschriftung] \gets 0$
|
||||
\EndIf
|
||||
\State $d[beschriftung] \gets d[beschriftung] + 1$
|
||||
\EndFor\label{alg1:l21}
|
||||
\EndFor
|
||||
|
||||
\If{$d$.\Call{isEmpty}{ }} \Comment{Es wurde kein beschrifteter Knoten gesehen}
|
||||
\State $M_H \gets \Call{HäufigsteLabelImGraph}{ }$
|
||||
\Else
|
||||
\State $M_H \gets \Call{max}{d}$
|
||||
\EndIf
|
||||
\\
|
||||
\State \Comment{Wähle aus der Menge der häufigsten Beschriftungen $M_H$ zufällig eine aus}
|
||||
\State $label \gets \Call{Random}{M_H}$
|
||||
\State $v.\Call{AddLabel}{label}$ \Comment{und weise dieses $v$ zu}
|
||||
\EndFor
|
||||
\State \Return Beschriftungen für $V_t \setminus V_{L,t}$
|
||||
\end{algorithmic}
|
||||
\caption{DYCOS-Algorithmus}
|
||||
\label{alg:DYCOS}
|
||||
\end{algorithm}
|
||||
|
||||
\subsection{Datenstrukturen}
|
||||
Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$ verwaltet der
|
||||
DYCOS-Algorithmus zwei weitere Datenstrukturen:
|
||||
\begin{itemize}
|
||||
\item Für jeden Knoten $v \in V_t$ werden die vorkommenden Wörter,
|
||||
die auch im Vokabular $W_t$ sind,
|
||||
und deren Anzahl gespeichert. Das könnte z.~B. über ein
|
||||
assoziatives Array (auch \enquote{dictionary} oder
|
||||
\enquote{map} genannt) geschehen. Wörter, die nicht in
|
||||
Texten von $v$ vorkommen, sind nicht im Array. Für
|
||||
alle vorkommenden Wörter ist der gespeicherte Wert zum
|
||||
Schlüssel $w \in W_t$ die Anzahl der Vorkommen von
|
||||
$w$ in den Texten von $v$.
|
||||
\item Für jedes Wort des Vokabulars $W_t$ wird eine Liste von
|
||||
Knoten verwaltet, in deren Texten das Wort vorkommt.
|
||||
Diese Liste wird bei den inhaltlichen Zweifachsprung,
|
||||
der in \cref{sec:sprungtypen} erklärt wird,
|
||||
verwendet.
|
||||
\end{itemize}
|
||||
|
||||
\input{Sprungtypen}
|
||||
\input{Vokabularbestimmung}
|
47
publications/Proseminar-Netzwerkanalyse/Einleitung.tex
Normal file
47
publications/Proseminar-Netzwerkanalyse/Einleitung.tex
Normal file
|
@ -0,0 +1,47 @@
|
|||
Im Folgenden werden in \cref{sec:Motivation} einige Beispiele, in denen
|
||||
der DYCOS-Algorithmus Anwendung finden könnte, dargelegt. In
|
||||
\cref{sec:Problemstellung} wird die Problemstellung formal definiert
|
||||
und in \cref{sec:Herausforderungen} wird auf besondere Herausforderungen der
|
||||
Aufgabenstellung hingewiesen.
|
||||
|
||||
\subsection{Motivation}\label{sec:Motivation}
|
||||
Teilweise beschriftete Graphen sind allgegenwärtig. Publikationsdatenbanken mit
|
||||
Publikationen als Knoten, Literaturverweisen und Zitaten als Kanten sowie von
|
||||
Nutzern vergebene Beschriftungen (sog. {\it Tags}) oder Kategorien als
|
||||
Knotenbeschriftungen; Wikipedia mit Artikeln als Knoten, Links als Kanten und
|
||||
Kategorien als Knotenbeschriftungen sowie soziale Netzwerke mit Eigenschaften
|
||||
der Benutzer als Knotenbeschriftungen sind drei Beispiele dafür. Häufig sind
|
||||
Knotenbeschriftungen nur teilweise vorhanden und es ist wünschenswert die
|
||||
fehlenden Knotenbeschriftungen automatisiert zu ergänzen.
|
||||
|
||||
\subsection{Problemstellung}\label{sec:Problemstellung}
|
||||
Gegeben ist ein Graph, dessen Knoten teilweise beschriftet sind. Zusätzlich
|
||||
stehen zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun
|
||||
Knotenbeschriftungen für alle Knoten, die bisher noch nicht beschriftet sind.\\
|
||||
|
||||
\begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem}
|
||||
Sei $G_t = (V_t, E_t, V_{L,t})$ ein gerichteter Graph, wobei $V_t$ die
|
||||
Menge aller Knoten, $E_t \subseteq V_t \times V_t$ die Kantenmenge und
|
||||
$V_{L,t} \subseteq V_t$ die Menge der beschrifteten Knoten jeweils zum
|
||||
Zeitpunkt $t$ bezeichne. Außerdem sei $L_t$ die Menge aller zum Zeitpunkt
|
||||
$t$ vergebenen Knotenbeschriftungen und $f:V_{L,t} \rightarrow L_t$ die
|
||||
Funktion, die einen Knoten auf seine Beschriftung abbildet.
|
||||
|
||||
Weiter sei für jeden Knoten $v \in V$ eine (eventuell leere) Textmenge
|
||||
$T(v)$ gegeben.
|
||||
|
||||
Gesucht sind nun Beschriftungen für $V_t \setminus V_{L,t}$, also
|
||||
$\tilde{f}: V_t \setminus V_{L,t} \rightarrow L_t$. Die Aufgabe, zu $G_t$
|
||||
die Funktion $\tilde{f}$ zu finden heißt
|
||||
\textit{Knotenklassifierungsproblem}.
|
||||
\end{definition}
|
||||
|
||||
\subsection{Herausforderungen}\label{sec:Herausforderungen}
|
||||
Die Graphen, für die dieser Algorithmus konzipiert wurde, sind viele
|
||||
$\num{10000}$~Knoten groß und dynamisch. \enquote{Dynamisch} bedeutet in diesem
|
||||
Kontext, dass neue Knoten und eventuell auch neue Kanten hinzu kommen bzw.
|
||||
Kanten oder Knoten werden entfernt werden. Außerdem stehen textuelle Inhalte zu
|
||||
den Knoten bereit, die bei der Klassifikation genutzt werden können. Bei
|
||||
kleinen Änderungen sollte nicht alles nochmals berechnen werden müssen, sondern
|
||||
basierend auf zuvor berechneten Knotenbeschriftungen sollte die Klassifizierung
|
||||
angepasst werden.
|
16
publications/Proseminar-Netzwerkanalyse/Makefile
Normal file
16
publications/Proseminar-Netzwerkanalyse/Makefile
Normal file
|
@ -0,0 +1,16 @@
|
|||
SOURCE = Ausarbeitung-Thoma
|
||||
|
||||
make:
|
||||
pdflatex $(SOURCE).tex -output-format=pdf # Referenzen erstellen
|
||||
bibtex $(SOURCE)
|
||||
pdflatex $(SOURCE).tex -output-format=pdf # Referenzen einbinden
|
||||
pdflatex $(SOURCE).tex -output-format=pdf # Referenzen einbinden
|
||||
make clean
|
||||
|
||||
ebook:
|
||||
latexml --dest=$(SOURCE).xml $(SOURCE).tex
|
||||
latexmlpost -dest=$(SOURCE).html $(SOURCE).xml
|
||||
ebook-convert $(SOURCE).html $(SOURCE).epub --language de --no-default-epub-cover
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.thm *.idx *.toc *.ind *.ilg *.glg *.glo *.gls *.ist *.xdy *.blg *.bak
|
29
publications/Proseminar-Netzwerkanalyse/README.md
Normal file
29
publications/Proseminar-Netzwerkanalyse/README.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
# About
|
||||
The document in this folder is part of a proseminar at KIT. It is
|
||||
written in German.
|
||||
|
||||
Ausarbeitung zum Proseminar "Netzwerkanalyse" am KIT.
|
||||
|
||||
Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation 25-30 Minuten
|
||||
dauern und 10-15 Minuten Diskussion.
|
||||
|
||||
Zu der Ausarbeitung gehört eine [Präsentation](https://github.com/MartinThoma/LaTeX-examples/tree/master/presentations/Proseminar-Netzwerkanalyse).
|
||||
|
||||
|
||||
## Abstract - English
|
||||
This paper explains the DYCOS-Algorithm as it was introduced in by Aggarwal and
|
||||
Li in 2011. It operates on graphs whichs nodes are partially labeled and
|
||||
automatically adds missing labels to nodes. To do so, the DYCOS algorithm makes
|
||||
use of the structure of the graph as well as content which is assigned to the
|
||||
node. Aggarwal and Li measured in an experimental analysis that DYCOS adds
|
||||
the missing labels to a Graph with 19396 nodes of which 14814 are labeled and
|
||||
another Graph with 806635 nodes of which 18999 are labeld on one core of an
|
||||
Intel Xeon 2.5 GHz CPU with 32 G RAM within less than a minute.
|
||||
Additionally, extensions of the DYCOS algorithm are proposed.
|
||||
|
||||
|
||||
## Possible categories
|
||||
|
||||
* cs.LG - learning - http://arxiv.org/list/cs.LG/recent
|
||||
* cs.CL - computation and language - http://arxiv.org/list/cs.CL/recent
|
||||
* cs.SI - Social and Information Networks - http://arxiv.org/list/cs.SI/recent
|
30
publications/Proseminar-Netzwerkanalyse/Related-Work.tex
Normal file
30
publications/Proseminar-Netzwerkanalyse/Related-Work.tex
Normal file
|
@ -0,0 +1,30 @@
|
|||
%!TEX root = Ausarbeitung-Thoma.tex
|
||||
Sowohl das Problem der Knotenklassifikation, als auch das der
|
||||
Textklassifikation, wurde bereits in verschiedenen Kontexten analysiert. Jedoch
|
||||
scheinen bisher entweder nur die Struktur des zugrundeliegenden Graphen oder
|
||||
nur Eigenschaften der Texte verwendet worden zu sein.
|
||||
|
||||
So werden in \cite{bhagat,szummer} unter anderem Verfahren zur
|
||||
Knotenklassifikation beschrieben, die wie der in \cite{aggarwal2011}
|
||||
vorgestellte DYCOS-Algorithmus, um den es in dieser Ausarbeitung geht, auch auf
|
||||
Random Walks basieren.
|
||||
|
||||
Obwohl es auch zur Textklassifikation einige Paper gibt
|
||||
\cite{Zhu02learningfrom,Jiang2010302}, geht doch keines davon auf den
|
||||
Spezialfall der Textklassifikation mit einem zugrundeliegenden Graphen ein.
|
||||
|
||||
Die vorgestellten Methoden zur Textklassifikation variieren außerdem sehr
|
||||
stark. Es gibt Verfahren, die auf dem bag-of-words-Modell basieren
|
||||
\cite{Ko:2012:STW:2348283.2348453} wie es auch im DYCOS-Algorithmus verwendet
|
||||
wird. Aber es gibt auch Verfahren, die auf dem
|
||||
Expectation-Maximization-Algorithmus basieren \cite{Nigam99textclassification}
|
||||
oder Support Vector
|
||||
Machines nutzen \cite{Joachims98textcategorization}.
|
||||
|
||||
Es wäre also gut Vorstellbar, die Art und Weise wie die Texte in die
|
||||
Klassifikation des DYCOS-Algorithmus einfließen zu variieren. Allerdings ist
|
||||
dabei darauf hinzuweisen, dass die im Folgenden vorgestellte Verwendung der
|
||||
Texte sowohl einfach zu implementieren ist und nur lineare Vorverarbeitungszeit
|
||||
in Anzahl der Wörter des Textes hat, als auch es erlaubt einzelne Knoten zu
|
||||
klassifizieren, wobei der Graph nur lokal um den zu klassifizierenden Knoten
|
||||
betrachten werden muss.
|
|
@ -0,0 +1,81 @@
|
|||
Bei der Anwendung des in \cite{aggarwal2011} vorgestellten Algorithmus auf
|
||||
reale Datensätze könnten zwei Probleme auftreten, die im Folgenden erläutert
|
||||
werden. Außerdem werden Verbesserungen vorgeschlagen, die es allerdings noch zu
|
||||
untersuchen gilt.
|
||||
|
||||
\subsection{Anzahl der Knotenbeschriftungen}
|
||||
So, wie der DYCOS-Algorithmus vorgestellt wurde, können nur Graphen bearbeitet
|
||||
werden, deren Knoten jeweils höchstens eine Beschriftung haben. In vielen
|
||||
Fällen, wie z.~B. Wikipedia mit Kategorien als Knotenbeschriftungen haben
|
||||
Knoten jedoch viele Beschriftungen.
|
||||
|
||||
Auf einen ersten Blick ist diese Schwäche einfach zu beheben, indem man beim
|
||||
zählen der Knotenbeschriftungen für jeden Knoten jedes Beschriftung zählt. Dann
|
||||
wäre noch die Frage zu klären, mit wie vielen Beschriftungen der betrachtete
|
||||
Knoten beschriftet werden soll.
|
||||
|
||||
Jedoch ist z.~B. bei Wikipedia-Artikeln auf den Knoten eine Hierarchie
|
||||
definiert. So ist die Kategorie \enquote{Klassifikationsverfahren} eine
|
||||
Unterkategorie von \enquote{Klassifikation}. Bei dem Kategorisieren von
|
||||
Artikeln sind möglichst spezifische Kategorien vorzuziehen, also kann man nicht
|
||||
einfach bei dem Auftreten der Kategorie \enquote{Klassifikationsverfahren}
|
||||
sowohl für diese Kategorie als auch für die Kategorie \enquote{Klassifikation}
|
||||
zählen.
|
||||
|
||||
|
||||
\subsection{Überanpassung und Reklassifizierung}
|
||||
Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche Knoten der
|
||||
Klassifizierungsalgorithmus angewendet werden soll. Jedoch ist die Reihenfolge
|
||||
der Klassifizierung relevant. Dazu folgendes Minimalbeispiel:
|
||||
|
||||
Gegeben sei ein dynamischer Graph ohne textuelle Inhalte. Zum Zeitpunkt $t=1$
|
||||
habe dieser Graph genau einen Knoten $v_1$ und $v_1$ sei mit dem $A$
|
||||
beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht beschrifteter Knoten $v_2$
|
||||
sowie die Kante $(v_2, v_1)$ hinzu.\\
|
||||
Nun wird der DYCOS-Algorithmus auf diesen Knoten angewendet und $v_2$ mit $A$
|
||||
beschriftet.\\
|
||||
Zum Zeitpunkt $t=3$ komme ein Knoten $v_3$, der mit $B$ beschriftet ist, und
|
||||
die Kante $(v_2, v_3)$ hinzu. \Cref{fig:Formen} visualisiert diesen Vorgang.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\subfloat[$t=1$]{
|
||||
\input{figures/graph-t1.tex}
|
||||
\label{fig:graph-t1}
|
||||
}%
|
||||
\subfloat[$t=2$]{
|
||||
\input{figures/graph-t2.tex}
|
||||
\label{fig:graph-t2}
|
||||
}
|
||||
|
||||
\subfloat[$t=3$]{
|
||||
\input{figures/graph-t3.tex}
|
||||
\label{fig:graph-t3}
|
||||
}%
|
||||
\subfloat[$t=4$]{
|
||||
\input{figures/graph-t4.tex}
|
||||
\label{fig:graph-t4}
|
||||
}%
|
||||
\caption{Minimalbeispiel für den Einfluss früherer DYCOS-Anwendungen}
|
||||
\label{fig:Formen}
|
||||
\end{figure}
|
||||
|
||||
Würde man nun den DYCOS-Algorithmus erst jetzt, also anstelle von Zeitpunkt
|
||||
$t=2$ zum Zeitpunkt $t=3$ auf den Knoten $v_2$ anwenden, so würde eine
|
||||
\SI{50}{\percent}-Wahrscheinlichkeit bestehen, dass dieser mit $B$ beschriftet
|
||||
wird. Aber in diesem Beispiel wurde der Knoten schon zum Zeitpunkt $t=2$
|
||||
beschriftet. Obwohl es in diesem kleinem Beispiel noch keine Rolle spielt, wird
|
||||
das Problem klar, wenn man weitere Knoten einfügt:
|
||||
|
||||
Wird zum Zeitpunkt $t=4$ ein unbeschrifteter Knoten $v_4$ und die Kanten
|
||||
$(v_1, v_4)$, $(v_2, v_4)$, $(v_3, v_4)$ hinzugefügt, so ist die
|
||||
Wahrscheinlichkeit, dass $v_4$ mit $A$ beschriftet wird bei $\frac{2}{3}$.
|
||||
Werden die unbeschrifteten Knoten jedoch erst jetzt und alle gemeinsam
|
||||
beschriftet, so ist die Wahrscheinlichkeit für $A$ als Beschriftung bei nur $50\%$.
|
||||
Bei dem DYCOS-Algorithmus findet also eine Überanpassung an vergangene
|
||||
Beschriftungen statt.
|
||||
|
||||
Das Reklassifizieren von Knoten könnte eine mögliche Lösung für dieses
|
||||
Problem sein. Knoten, die durch den DYCOS-Algorithmus beschriftet wurden
|
||||
könnten eine Lebenszeit bekommen (TTL, Time to Live). Ist diese
|
||||
abgelaufen, wird der DYCOS-Algorithmus erneut auf den Knoten angewendet.
|
113
publications/Proseminar-Netzwerkanalyse/Sprungtypen.tex
Normal file
113
publications/Proseminar-Netzwerkanalyse/Sprungtypen.tex
Normal file
|
@ -0,0 +1,113 @@
|
|||
\subsection{Sprungtypen}\label{sec:sprungtypen}
|
||||
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung sowie der
|
||||
inhaltliche Zweifachsprung werden im Folgenden erklärt.
|
||||
\goodbreak
|
||||
Der strukturelle Sprung entspricht einer zufälligen Wahl eines Nachbarknotens,
|
||||
wie es in \cref{alg:DYCOS-structural-hop} gezeigt wird.
|
||||
\begin{algorithm}[H]
|
||||
\begin{algorithmic}[1]
|
||||
\Procedure{SturkturellerSprung}{Knoten $v$, Anzahl $q$}
|
||||
\State $n \gets v.\Call{NeighborCount}{}$ \Comment{Wähle aus der Liste der Nachbarknoten}
|
||||
\State $r \gets \Call{RandomInt}{0, n-1}$ \Comment{einen zufällig aus}
|
||||
\State $v \gets v.\Call{Next}{r}$ \Comment{Gehe zu diesem Knoten}
|
||||
\State \Return $v$
|
||||
\EndProcedure
|
||||
\end{algorithmic}
|
||||
\caption{Struktureller Sprung}
|
||||
\label{alg:DYCOS-structural-hop}
|
||||
\end{algorithm}
|
||||
|
||||
Bei inhaltlichen Zweifachsprüngen ist jedoch nicht sinnvoll so strikt nach der
|
||||
Definition vorzugehen, also direkt von einem strukturellem Knoten $v \in V_t$
|
||||
zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen und von diesem
|
||||
wieder zu einem verbundenem strukturellem Knoten $v' \in V_t$. Würde dies
|
||||
gemacht werden, wäre zu befürchten, dass aufgrund von Homonymen die Qualität der
|
||||
Klassifizierung verringert wird. So hat \enquote{Brücke} im Deutschen viele
|
||||
Bedeutungen. Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der
|
||||
objektorientierten Programmierung oder ein Teil des Gehirns.
|
||||
|
||||
Deshalb wird für jeden Knoten $v$, von dem aus ein inhaltlicher
|
||||
Zweifachsprung gemacht werden soll folgende Textanalyse durchgeführt:
|
||||
\begin{enumerate}[label=C\arabic*,ref=C\arabic*]
|
||||
\item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch
|
||||
und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere
|
||||
außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar
|
||||
sind.
|
||||
\item \label{step:c2} Betrachte im Folgenden nur die Top-$q$ Knoten bzgl.
|
||||
der Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$
|
||||
eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
|
||||
CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.}
|
||||
Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$ sei die
|
||||
Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$.
|
||||
\item \label{step:c3} Wähle mit Wahrscheinlichkeit
|
||||
$\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$ den Knoten $v' \in T(v)$
|
||||
als Ziel des Zweifachsprungs.
|
||||
\end{enumerate}
|
||||
|
||||
Konkret könnte also ein inhaltlicher Zweifachsprung sowie wie in
|
||||
\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
|
||||
Der Algorithmus bekommt einen Startknoten $v \in V_T$ und
|
||||
einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der
|
||||
für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
|
||||
die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
|
||||
$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
|
||||
|
||||
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt und alle
|
||||
erreichbaren Knoten in $reachableNodes$ mit der Anzahl der Pfade, durch die sie
|
||||
erreicht werden können, gespeichert.
|
||||
|
||||
In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Ab hier gilt
|
||||
\[ |T| = \begin{cases}q &\text{falls } |reachableNodes|\geq q\\
|
||||
|reachableNodes| &\text{sonst }\end{cases}\]
|
||||
|
||||
Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in
|
||||
\cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.
|
||||
|
||||
In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt, das
|
||||
von $v' \in T(v)$ auf die relative Häufigkeit bzgl. aller Pfade von $v$ zu
|
||||
Knoten aus den Top-$q$ abbildet.
|
||||
|
||||
In allen folgenden Zeilen wird \cref{step:c3} durchgeführt. In \cref{alg:15}
|
||||
bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit einer Wahrscheinlichkeit,
|
||||
die seiner relativen Häufigkeit am Anteil der Pfaden der Länge 2 von $v$ nach
|
||||
$v'$ über einen beliebigen Wortknoten entspricht ausgewählt und schließlich
|
||||
zurückgegeben.
|
||||
|
||||
\begin{algorithm}
|
||||
\caption{Inhaltlicher Zweifachsprung}
|
||||
\label{alg:DYCOS-content-multihop}
|
||||
\begin{algorithmic}[1]
|
||||
\Procedure{InhaltlicherZweifachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}
|
||||
\State $erreichbareKnoten \gets$ leeres assoziatives Array\label{alg:l2}
|
||||
\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
|
||||
\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
|
||||
\If{$!erreichbareKnoten.\Call{hasKey}{x}$}
|
||||
\State $erreichbareKnoten[x] \gets 0$
|
||||
\EndIf
|
||||
\State $erreichbareKnoten[x] \gets erreichbareKnoten[x] + 1$
|
||||
\EndFor
|
||||
\EndFor\label{alg:l5}
|
||||
\State \label{alg:l6} $T \gets \Call{max}{erreichbareKnoten, q}$
|
||||
\\
|
||||
\State \label{alg:l8} $s \gets 0$
|
||||
\ForAll{Knoten $x \in T$}
|
||||
\State $s \gets s + erreichbareKnoten[x]$
|
||||
\EndFor
|
||||
\State $relativeHaeufigkeit \gets $ leeres assoziatives Array
|
||||
\ForAll{Knoten $x \in T$}
|
||||
\State $relativeHaeufigkeit \gets \frac{erreichbareKnoten[x]}{s}$
|
||||
\EndFor\label{alg:l13}
|
||||
\\
|
||||
\State \label{alg:15} $random \gets \Call{random}{0, 1}$
|
||||
\State $r \gets 0.0$
|
||||
\State $i \gets 0$
|
||||
\While{$s < random$}
|
||||
\State $r \gets r + relativeHaeufigkeit[i]$
|
||||
\State $i \gets i + 1$
|
||||
\EndWhile
|
||||
|
||||
\State $v \gets T[i-1]$ \label{alg:21}
|
||||
\State \Return $v$ \label{alg:22}
|
||||
\EndProcedure
|
||||
\end{algorithmic}
|
||||
\end{algorithm}
|
|
@ -0,0 +1,89 @@
|
|||
\subsection{Vokabularbestimmung}\label{sec:vokabularbestimmung}
|
||||
Da die Größe des Vokabulars die Datenmenge signifikant beeinflusst,
|
||||
liegt es in unserem Interesse so wenig Wörter wie möglich ins
|
||||
Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse,
|
||||
die in fast allen Texten vorkommen, wie im Deutschen z.~B.
|
||||
\enquote{und}, \enquote{mit} und die Pronomen. Es ist wünschenswert Wörter zu
|
||||
wählen, die die Texte möglichst stark voneinander Unterscheiden. Der
|
||||
DYCOS-Algorithmus wählt die Top-$m$ dieser Wörter als Vokabular, wobei
|
||||
$m \in \mathbb{N}$ eine festzulegende Konstante ist. In \cite[S. 365]{aggarwal2011}
|
||||
wird der Einfluss von $m \in \Set{5,10, 15,20}$ auf die Klassifikationsgüte
|
||||
untersucht und festgestellt, dass die Klassifikationsgüte mit größerem $m$
|
||||
sinkt, sie also für $m=5$ für den DBLP-Datensatz am höchsten ist. Für den
|
||||
CORA-Datensatz wurde mit $m \in \set{3,4,5,6}$ getestet und kein signifikanter
|
||||
Unterschied festgestellt.
|
||||
|
||||
Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
|
||||
oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.
|
||||
Der Gini-Koeffizient ist ein statistisches Maß, das die Ungleichverteilung
|
||||
bewertet. Er ist immer im Intervall $[0,1]$, wobei $0$ einer
|
||||
Gleichverteilung entspricht und $1$ der größtmöglichen Ungleichverteilung.
|
||||
|
||||
Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit der $i$-ten
|
||||
Knotenbeschriftung.
|
||||
\begin{align}
|
||||
p_i(w) &:= \frac{n_i(w)}{\sum_{j=1}^{|\L_t|} n_j(w)} &\text{(Relative Häufigkeit des Wortes $w$)}\\
|
||||
G(w) &:= \sum_{j=1}^{|\L_t|} p_j(w)^2 &\text{(Gini-Koeffizient von $w$)}
|
||||
\end{align}
|
||||
In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung nur
|
||||
Wörter betrachtet werden, die auch vorkommen.
|
||||
|
||||
Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann, ist als
|
||||
Pseudocode mit \cref{alg:vokabularbestimmung} gegeben. In \cref{alg4:l6} wird
|
||||
eine Teilmenge $S_t \subseteq V_{L,t}$ zum Generieren des Vokabulars gewählt.
|
||||
In \cref{alg4:l8} wird ein Array $cLabelWords$ erstellt, das $(|\L_t|+1)$
|
||||
Felder hat. Die Elemente dieser Felder sind jeweils assoziative Arrays, deren
|
||||
Schlüssel Wörter und deren Werte natürliche Zahlen sind. Die ersten $|\L_t|$
|
||||
Elemente von $cLabelWords$ dienen dem Zählen der Häufigkeit der Wörter von
|
||||
Texten aus $S_t$, wobei für jede Beschriftung die Häufigkeit einzeln gezählt
|
||||
wird. Das letzte Element aus $cLabelWords$ zählt die Summe der Wörter. Diese
|
||||
Datenstruktur wird in \cref{alg4:l10} bis \ref{alg4:l12} gefüllt.
|
||||
|
||||
In \cref{alg4:l17} bis \ref{alg4:l19} wird die relative Häufigkeit der Wörter
|
||||
bzgl. der Beschriftungen bestimmt. Daraus wird in \cref{alg4:l20} bis
|
||||
\ref{alg4:l22} der Gini-Koeffizient berechnet. Schließlich werden in
|
||||
\cref{alg4:l23} bis \ref{alg4:l24} die Top-$q$ Wörter mit den
|
||||
höchsten Gini-Koeffizienten zurückgegeben.
|
||||
|
||||
\begin{algorithm}[ht]
|
||||
\begin{algorithmic}[1]
|
||||
\Require \\
|
||||
$V_{L,t}$ (beschriftete Knoten),\\
|
||||
$\L_t$ (Menge der Beschriftungen),\\
|
||||
$f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\
|
||||
$m$ (Gewünschte Vokabulargröße)
|
||||
\Ensure $\M_t$ (Vokabular)\\
|
||||
\State $S_t \gets \Call{Sample}{V_{L,t}}$\label{alg4:l6} \Comment{Wähle $S_t \subseteq V_{L,t}$ aus}
|
||||
\State $\M_t \gets \emptyset$ \Comment{Menge aller Wörter}
|
||||
\State $cLabelWords \gets$ Array aus $(|\L_t|+1)$ assoziativen Arrays\label{alg4:l8}
|
||||
\ForAll{$v \in S_t$} \label{alg4:l10}
|
||||
\State $i \gets \Call{getLabel}{v}$
|
||||
\State \Comment{$w$ ist das Wort, $c$ ist die Häufigkeit}
|
||||
\ForAll{$(w, c) \in \Call{getTextAsMultiset}{v}$}
|
||||
\State $cLabelWords[i][w] \gets cLabelWords[i][w] + c$
|
||||
\State $cLabelWords[|\L_t|][w] \gets cLabelWords[i][|\L_t|] + c$
|
||||
\State $\M_t = \M_t \cup \Set{w}$
|
||||
\EndFor
|
||||
\EndFor\label{alg4:l12}
|
||||
\\
|
||||
\ForAll{Wort $w \in \M_t$}
|
||||
\State $p \gets $ Array aus $|\L_t|$ Zahlen in $[0, 1]$\label{alg4:l17}
|
||||
\ForAll{Label $i \in \L_t$}
|
||||
\State $p[i] \gets \frac{cLabelWords[i][w]}{cLabelWords[i][|\L_t|]}$
|
||||
\EndFor\label{alg4:l19}
|
||||
|
||||
\State $w$.gini $\gets 0$ \label{alg4:l20}
|
||||
\ForAll{$i \in 1, \dots, |\L_t|$}
|
||||
\State $w$.gini $\gets$ $w$.gini + $p[i]^2$
|
||||
\EndFor\label{alg4:l22}
|
||||
\EndFor
|
||||
|
||||
\State $\M_t \gets \Call{SortDescendingByGini}{\M_t}$\label{alg4:l23}
|
||||
\State \Return $\Call{Top}{\M_t, m}$\label{alg4:l24}
|
||||
\end{algorithmic}
|
||||
\caption{Vokabularbestimmung}
|
||||
\label{alg:vokabularbestimmung}
|
||||
\end{algorithm}
|
||||
|
||||
Die Menge $S_t$ kann aus der Menge aller Dokumente, deren Knoten beschriftet
|
||||
sind, mithilfe des in \cite{Vitter} vorgestellten Algorithmus bestimmt werden.
|
15
publications/Proseminar-Netzwerkanalyse/abstract.tex
Normal file
15
publications/Proseminar-Netzwerkanalyse/abstract.tex
Normal file
|
@ -0,0 +1,15 @@
|
|||
In dieser Arbeit wird der DYCOS-Algorithmus, wie er in \cite{aggarwal2011}
|
||||
vorgestellt wurde, erklärt. Er arbeitet auf Graphen, deren Knoten teilweise mit
|
||||
Beschriftungen versehen sind und ergänzt automatisch Beschriftungen für Knoten,
|
||||
die bisher noch keine Beschriftung haben. Dieser Vorgang wird
|
||||
\enquote{Klassifizierung} genannt. Dazu verwendet er die Struktur des Graphen
|
||||
sowie textuelle Informationen, die den Knoten zugeordnet sind. Die in
|
||||
\cite{aggarwal2011} beschriebene experimentelle Analyse ergab, dass er auch auf
|
||||
dynamischen Graphen mit 19\,396 bzw. 806\,635 Knoten, von denen nur
|
||||
14\,814 bzw. 18\,999 beschriftet waren, innerhalb von weniger als
|
||||
einer Minute auf einem Kern einer Intel Xeon 2.5\,GHz~CPU mit 32\,G~RAM
|
||||
ausgeführt werden kann.\\
|
||||
Zusätzlich wird \cite{aggarwal2011} kritisch Erörtert und und es werden
|
||||
mögliche Erweiterungen des DYCOS-Algorithmus vorgeschlagen.
|
||||
|
||||
\textbf{Keywords:} DYCOS, Label Propagation, Knotenklassifizierung
|
|
@ -0,0 +1,37 @@
|
|||
\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
|
||||
\tikzstyle{edge}=[very thick]
|
||||
\begin{tikzpicture}[scale=1.3]
|
||||
\node (a)[vertex] at (0,0) {};
|
||||
\node (b)[vertex] at (0,1) {};
|
||||
\node (c)[vertex] at (0,2) {};
|
||||
\node (d)[vertex] at (1,0) {};
|
||||
\node (e)[vertex] at (1,1) {};
|
||||
\node (f)[vertex] at (1,2) {};
|
||||
\node (g)[vertex] at (2,0) {};
|
||||
\node (h)[vertex] at (2,1) {};
|
||||
\node (i)[vertex] at (2,2) {};
|
||||
|
||||
\node (x)[vertex] at (4,0) {};
|
||||
\node (y)[vertex] at (4,1) {};
|
||||
\node (z)[vertex] at (4,2) {};
|
||||
|
||||
\draw[edge] (a) -- (d);
|
||||
\draw[edge] (b) -- (d);
|
||||
\draw[edge] (b) -- (c);
|
||||
\draw[edge] (c) -- (d);
|
||||
\draw[edge] (d) -- (e);
|
||||
\draw[edge] (d) edge[bend left] (f);
|
||||
\draw[edge] (d) edge[bend right] (x);
|
||||
\draw[edge] (g) edge (x);
|
||||
\draw[edge] (h) edge (x);
|
||||
\draw[edge] (h) edge (y);
|
||||
\draw[edge] (h) edge (e);
|
||||
\draw[edge] (e) edge (z);
|
||||
\draw[edge] (i) edge (y);
|
||||
|
||||
\draw [dashed] (-0.3,-0.3) rectangle (2.3,2.3);
|
||||
\draw [dashed] (2.5,2.3) rectangle (5, -0.3);
|
||||
|
||||
\node (struktur)[label={[label distance=0cm]0:Sturkturknoten $V_t$}] at (-0.1,2.5) {};
|
||||
\node (struktur)[label={[label distance=0cm]0:Wortknoten $W_t$}] at (2.7,2.5) {};
|
||||
\end{tikzpicture}
|
|
@ -0,0 +1,7 @@
|
|||
\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
|
||||
\tikzstyle{edge}=[very thick]
|
||||
\begin{tikzpicture}[scale=1,framed]
|
||||
\node (a)[vertex,label=$A$] at (0,0) {$v_1$};
|
||||
\node (b)[vertex, white] at (1,0) {$v_2$};
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=1$}] at (-2,1) {};
|
||||
\end{tikzpicture}
|
|
@ -0,0 +1,8 @@
|
|||
\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
|
||||
\tikzstyle{edge}=[very thick]
|
||||
\begin{tikzpicture}[scale=1,framed]
|
||||
\node (a)[vertex,label=$A$] at (0,0) {$v_1$};
|
||||
\node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$};
|
||||
\draw[->] (b) -- (a);
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=2$}] at (-2,1) {};
|
||||
\end{tikzpicture}
|
10
publications/Proseminar-Netzwerkanalyse/figures/graph-t3.tex
Normal file
10
publications/Proseminar-Netzwerkanalyse/figures/graph-t3.tex
Normal file
|
@ -0,0 +1,10 @@
|
|||
\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
|
||||
\tikzstyle{edge}=[very thick]
|
||||
\begin{tikzpicture}[scale=1,framed]
|
||||
\node (a)[vertex,label=$A$] at (0,0) {$v_1$};
|
||||
\node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$};
|
||||
\node (c)[vertex,label=$B$] at (2,0) {$v_3$};
|
||||
\draw[->] (b) -- (a);
|
||||
\draw[->] (b) -- (c);
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {};
|
||||
\end{tikzpicture}
|
15
publications/Proseminar-Netzwerkanalyse/figures/graph-t4.tex
Normal file
15
publications/Proseminar-Netzwerkanalyse/figures/graph-t4.tex
Normal file
|
@ -0,0 +1,15 @@
|
|||
\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
|
||||
\tikzstyle{edge}=[very thick]
|
||||
\begin{tikzpicture}[scale=1,framed]
|
||||
\node (a)[vertex,label=$A$] at (0,0) {$v_1$};
|
||||
\node (b)[vertex,label=45:{\color{blue}$A$}] at (1,0) {$v_2$};
|
||||
\node (c)[vertex,label=$B$] at (2,0) {$v_3$};
|
||||
\node (d)[vertex] at (1,1) {$v_4$};
|
||||
\draw[->] (b) -- (a);
|
||||
\draw[->] (b) -- (c);
|
||||
|
||||
\draw[->] (d) -- (a);
|
||||
\draw[->] (d) -- (b);
|
||||
\draw[->] (d) -- (c);
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {};
|
||||
\end{tikzpicture}
|
283
publications/Proseminar-Netzwerkanalyse/literatur.bib
Normal file
283
publications/Proseminar-Netzwerkanalyse/literatur.bib
Normal file
|
@ -0,0 +1,283 @@
|
|||
% This file was created with JabRef 2.3.1.
|
||||
% Encoding: Cp1252
|
||||
|
||||
@Online{zappella,
|
||||
author = {Giovanni Zappella},
|
||||
title = {A Scalable Multiclass Algorithm for Node Classification},
|
||||
version = {1},
|
||||
date = {2011-12-19},
|
||||
year = {2011},
|
||||
eprinttype = {arxiv},
|
||||
eprintclass = {cs.LG, cs.GT},
|
||||
eprint = {http://arxiv.org/abs/1112.4344v1}
|
||||
}
|
||||
|
||||
@inproceedings{aggarwal2011,
|
||||
author = {Charu C. Aggarwal AND Nan Li},
|
||||
title = {On Node Classification in Dynamic Content-based Networks},
|
||||
booktitle = {SDM},
|
||||
year = {2011},
|
||||
pages = {355-366},
|
||||
ee = {http://siam.omnibooksonline.com/2011datamining/data/papers/033.pdf\#page=1},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
|
||||
@book{DBLP:series/ads/2010-40,
|
||||
editor = {Charu C. Aggarwal AND Haixun Wang},
|
||||
title = {Managing and Mining Graph Data},
|
||||
booktitle = {Managing and Mining Graph Data},
|
||||
publisher = {Springer},
|
||||
series = {Advances in Database Systems},
|
||||
volume = {40},
|
||||
year = {2010},
|
||||
isbn = {978-1-4419-6044-3},
|
||||
ee = {http://dx.doi.org/10.1007/978-1-4419-6045-0},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
|
||||
@inproceedings{DBLP:conf/kdd/BhagatCR07,
|
||||
author = {Smriti Bhagat AND Graham Cormode AND Irina Rozenbaum},
|
||||
title = {Applying Link-Based Classification to Label Blogs},
|
||||
booktitle = {WebKDD/SNA-KDD},
|
||||
year = {2007},
|
||||
pages = {97-117},
|
||||
ee = {http://dx.doi.org/10.1007/978-3-642-00528-2_6},
|
||||
crossref = {DBLP:conf/kdd/2007web},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
|
||||
@article{DBLP:journals/corr/abs-1101-3291,
|
||||
author = {Smriti Bhagat AND Graham Cormode AND S. Muthukrishnan},
|
||||
title = {Node Classification in Social Networks},
|
||||
journal = {CoRR},
|
||||
volume = {abs/1101.3291},
|
||||
year = {2011},
|
||||
ee = {http://arxiv.org/abs/1101.3291},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/kdd/2007web,
|
||||
editor = {Haizheng Zhang AND
|
||||
Myra Spiliopoulou AND
|
||||
Bamshad Mobasher AND
|
||||
C. Lee Giles AND
|
||||
Andrew McCallum AND
|
||||
Olfa Nasraoui AND
|
||||
Jaideep Srivastava AND
|
||||
John Yen},
|
||||
title = {Advances in Web Mining and Web Usage Analysis, 9th International
|
||||
Workshop on Knowledge Discovery on the Web, WebKDD 2007,
|
||||
and 1st International Workshop on Social Networks Analysis,
|
||||
SNA-KDD 2007, San Jose, CA, USA, August 12-15, 2007. Revised
|
||||
Papers},
|
||||
booktitle = {WebKDD/SNA-KDD},
|
||||
publisher = {Springer},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {5439},
|
||||
year = {2009},
|
||||
isbn = {978-3-642-00527-5},
|
||||
ee = {http://dx.doi.org/10.1007/978-3-642-00528-2},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
|
||||
@Online{bhagat,
|
||||
author = {Smriti Bhagat AND Graham Cormode AND S. Muthukrishnan},
|
||||
title = {Node Classification in Social Networks},
|
||||
year = {2011},
|
||||
version = {1},
|
||||
date = {2011-01-17},
|
||||
eprinttype = {arxiv},
|
||||
eprintclass = {cs.SI, physics.soc-ph},
|
||||
eprint = {http://arxiv.org/abs/1101.3291v1}
|
||||
}
|
||||
|
||||
@article{Vitter,
|
||||
author = {Vitter, Jeffrey S.},
|
||||
title = {Random Sampling with a Reservoir},
|
||||
journal = {ACM Trans. Math. Softw.},
|
||||
volume = {11},
|
||||
number = {1},
|
||||
year = {1985},
|
||||
issn = {0098-3500},
|
||||
pages = {37--57},
|
||||
numpages = {21},
|
||||
url = {http://doi.acm.org/10.1145/3147.3165},
|
||||
doi = {10.1145/3147.3165},
|
||||
acmid = {3165},
|
||||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
}
|
||||
|
||||
@MASTERSTHESIS{heck,
|
||||
AUTHOR = {Heck, Michael},
|
||||
TITLE = {Unsupervised Acoustic Model Training for Simultaneous Lecture Translation in Incremental and Batch Mode},
|
||||
SCHOOL = {Karlsruhe Institute of Technology},
|
||||
TYPE = {Diploma Thesis},
|
||||
ADDRESS = {Germany},
|
||||
MONTH = DEC,
|
||||
YEAR = 2012,
|
||||
PDF = {http://isl.anthropomatik.kit.edu/cmu-kit/downloads/Diplomarbeit_Heck_Michael.pdf}
|
||||
}
|
||||
|
||||
@MASTERSTHESIS{Lavesson,
|
||||
AUTHOR = {Lavesson, Niklas},
|
||||
TITLE = {Evaluation and analysis of supervised learning algorithms and classifiers},
|
||||
SCHOOL = {Blekinge Institute of Technology},
|
||||
TYPE = {Diploma Thesis},
|
||||
ADDRESS = {Sweden},
|
||||
MONTH = DEC,
|
||||
YEAR = 2006,
|
||||
PDF = {http://www.bth.se/fou/Forskinfo.nsf/Sok/c655a0b1f9f88d16c125714c00355e5d/$file/Lavesson_lic.pdf}
|
||||
}
|
||||
|
||||
@article{Stone1974,
|
||||
abstract = {{A generalized form of the cross-validation criterion is applied to the choice and assessment of prediction using the data-analytic concept of a prescri
|
||||
ption. The examples used to illustrate the application are drawn from the problem areas of univariate estimation, linear regression and analysis of variance.}},
|
||||
author = {Stone, M.},
|
||||
citeulike-article-id = {6758792},
|
||||
citeulike-linkout-0 = {http://dx.doi.org/10.2307/2984809},
|
||||
citeulike-linkout-1 = {http://www.jstor.org/stable/2984809},
|
||||
doi = {10.2307/2984809},
|
||||
issn = {00359246},
|
||||
journal = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
keywords = {biomarker, cross\_validation},
|
||||
number = {2},
|
||||
pages = {111--147},
|
||||
posted-at = {2011-08-02 14:22:37},
|
||||
priority = {2},
|
||||
publisher = {Blackwell Publishing for the Royal Statistical Society},
|
||||
title = {{Cross-Validatory Choice and Assessment of Statistical Predictions}},
|
||||
url = {http://dx.doi.org/10.2307/2984809},
|
||||
volume = {36},
|
||||
year = {1974}
|
||||
}
|
||||
|
||||
|
||||
@incollection{porter,
|
||||
author = {Porter, M. F.},
|
||||
chapter = {An Algorithm for Suffix Stripping},
|
||||
title = {Readings in Information Retrieval},
|
||||
editor = {Sparck Jones, Karen and Willett, Peter},
|
||||
year = {1997},
|
||||
isbn = {1-55860-454-5},
|
||||
pages = {313--316},
|
||||
numpages = {4},
|
||||
url = {http://dl.acm.org/citation.cfm?id=275537.275705},
|
||||
acmid = {275705},
|
||||
publisher = {Morgan Kaufmann Publishers Inc.},
|
||||
address = {San Francisco, CA, USA},
|
||||
}
|
||||
|
||||
@incollection{szummer,
|
||||
title = {Partially labeled classification with Markov random walks},
|
||||
author = {Martin Szummer and Jaakkola, Tommi},
|
||||
booktitle = {Advances in Neural Information Processing Systems 14},
|
||||
editor = {T.G. Dietterich and S. Becker and Z. Ghahramani},
|
||||
pages = {945--952},
|
||||
year = {2001},
|
||||
url = {http://media.nips.cc/nipsbooks/nipspapers/paper_files/nips14/AA36.pdf},
|
||||
}
|
||||
|
||||
@incollection{dynamic,
|
||||
title ={Dynamic Label Propagation in Social Networks},
|
||||
author ={Du, Juan AND Zhu, Feida AND Lim, Ee-Peng},
|
||||
booktitle ={Database Systems for Advanced Applications},
|
||||
editor ={Meng, Weiyi AND Feng, Ling AND Bressan, Stéphane AND Winiwarter, Werner AND Song, Wei},
|
||||
pages ={194-209},
|
||||
year ={2013},
|
||||
isbn ={978-3-642-37449-4},
|
||||
volume ={7826},
|
||||
series ={Lecture Notes in Computer Science},
|
||||
doi ={10.1007/978-3-642-37450-0_14},
|
||||
url ={http://dx.doi.org/10.1007/978-3-642-37450-0_14},
|
||||
publisher ={Springer Berlin Heidelberg},
|
||||
}
|
||||
|
||||
@TECHREPORT{Zhu02learningfrom,
|
||||
author = {Xiaojin Zhu and Zoubin Ghahramani},
|
||||
title = {Learning from Labeled and Unlabeled Data with Label Propagation},
|
||||
institution = {Carnegie Mellon University},
|
||||
year = {2002}
|
||||
}
|
||||
|
||||
@TECHREPORT{Seeger01learningwith,
|
||||
author = {Matthias Seeger},
|
||||
title = {Learning with Labeled and Unlabeled Data},
|
||||
institution = {University of Edinburgh},
|
||||
year = {2001}
|
||||
}
|
||||
|
||||
@article{Kazienko2012199,
|
||||
title = "Label-dependent node classification in the network ",
|
||||
journal = "Neurocomputing ",
|
||||
volume = "75",
|
||||
number = "1",
|
||||
pages = "199 - 209",
|
||||
year = "2012",
|
||||
note = "Brazilian Symposium on Neural Networks (SBRN 2010) International Conference on Hybrid Artificial Intelligence Systems (HAIS 2010) ",
|
||||
issn = "0925-2312",
|
||||
doi = "http://dx.doi.org/10.1016/j.neucom.2011.04.047",
|
||||
url = "http://www.sciencedirect.com/science/article/pii/S092523121100508X",
|
||||
author = "Przemyslaw Kazienko and Tomasz Kajdanowicz",
|
||||
keywords = "Classification",
|
||||
keywords = "Node classification",
|
||||
keywords = "Label-dependent classification",
|
||||
keywords = "Label-dependent features",
|
||||
keywords = "Collective classification",
|
||||
keywords = "Classification in networks",
|
||||
keywords = "\{LDBootstrapping\}",
|
||||
keywords = "\{LDGibbs\}",
|
||||
keywords = "Bootstrapping",
|
||||
keywords = "Gibbs sampling "
|
||||
}
|
||||
|
||||
@MISC{Joachims98textcategorization,
|
||||
author = {Thorsten Joachims},
|
||||
title = {Text Categorization with Support Vector Machines: Learning with Many Relevant Features},
|
||||
year = {1998}
|
||||
}
|
||||
|
||||
@INPROCEEDINGS{Nigam99textclassification,
|
||||
author = {Kamal Nigam and Andrew Kachites Mccallum and Sebastian Thrun and Tom Mitchell},
|
||||
title = {Text Classification from Labeled and Unlabeled Documents using EM},
|
||||
booktitle = {Machine Learning},
|
||||
year = {1999},
|
||||
pages = {103--134}
|
||||
}
|
||||
|
||||
@article{Jiang2010302,
|
||||
title = "Text classification using graph mining-based feature extraction ",
|
||||
journal = "Knowledge-Based Systems ",
|
||||
volume = "23",
|
||||
number = "4",
|
||||
pages = "302 - 308",
|
||||
year = "2010",
|
||||
note = "Artificial Intelligence 2009 AI-2009 The 29th \{SGAI\} International Conference on Artificial Intelligence ",
|
||||
issn = "0950-7051",
|
||||
doi = "http://dx.doi.org/10.1016/j.knosys.2009.11.010",
|
||||
url = "http://www.sciencedirect.com/science/article/pii/S095070510900152X",
|
||||
author = "Chuntao Jiang and Frans Coenen and Robert Sanderson and Michele Zito",
|
||||
keywords = "Text classification",
|
||||
keywords = "Graph representation",
|
||||
keywords = "Graph mining",
|
||||
keywords = "Weighted graph mining",
|
||||
keywords = "Feature extraction "
|
||||
}
|
||||
|
||||
@inproceedings{Ko:2012:STW:2348283.2348453,
|
||||
author = {Ko, Youngjoong},
|
||||
title = {A Study of Term Weighting Schemes Using Class Information for Text Classification},
|
||||
booktitle = {Proceedings of the 35th International ACM SIGIR Conference on Research and Development in Information Retrieval},
|
||||
series = {SIGIR '12},
|
||||
year = {2012},
|
||||
isbn = {978-1-4503-1472-5},
|
||||
location = {Portland, Oregon, USA},
|
||||
pages = {1029--1030},
|
||||
numpages = {2},
|
||||
url = {http://doi.acm.org/10.1145/2348283.2348453},
|
||||
doi = {10.1145/2348283.2348453},
|
||||
acmid = {2348453},
|
||||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
keywords = {idf, term weighting, text classification},
|
||||
}
|
25
publications/Proseminar-Netzwerkanalyse/mystyle.sty
Normal file
25
publications/Proseminar-Netzwerkanalyse/mystyle.sty
Normal file
|
@ -0,0 +1,25 @@
|
|||
\usepackage{siunitx}
|
||||
\sisetup{
|
||||
group-digits=true,
|
||||
group-separator={\,},
|
||||
}
|
||||
|
||||
\DeclareUnicodeCharacter{00A0}{~}
|
||||
|
||||
\theoremstyle{definition}
|
||||
\theoremindent20pt
|
||||
\theoremheaderfont{\normalfont\bfseries\hspace{-\theoremindent}}
|
||||
\newtheorem{definition}{Definition}
|
||||
|
||||
\def\L{\ensuremath{\mathcal{L}}}
|
||||
\def\T{\ensuremath{\mathcal{T}}}
|
||||
\def\M{\ensuremath{\mathcal{M}}}
|
||||
|
||||
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
|
||||
\renewcommand{\algorithmicensure}{\textbf{Output:}}
|
||||
\renewcommand{\algorithmicforall}{\textbf{for each}}
|
||||
\renewcommand{\algorithmicprocedure}{\textbf{function}}
|
||||
\renewcommand{\ALG@name}{Algorithmus}
|
||||
|
||||
%Hyphenation
|
||||
\hyphenation{Graph}
|
3
publications/facharbeit-rsa/Anhang.tex
Normal file
3
publications/facharbeit-rsa/Anhang.tex
Normal file
|
@ -0,0 +1,3 @@
|
|||
\section{Anhang}
|
||||
|
||||
\inputminted[linenos, numbersep=5pt, tabsize=4]{pascal}{Factoring.ari}
|
BIN
publications/facharbeit-rsa/Facharbeit-Martin-Thoma-2.odt
Normal file
BIN
publications/facharbeit-rsa/Facharbeit-Martin-Thoma-2.odt
Normal file
Binary file not shown.
11
publications/facharbeit-rsa/Factoring.ari
Normal file
11
publications/facharbeit-rsa/Factoring.ari
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Gegebener Öffentlicher Schlüssel N = p*q und e sowie Geheimtext y
|
||||
N := 6593724735903381194175738064212775889771.
|
||||
e := 47.
|
||||
y := 6508724329196926526021005674657658127499.
|
||||
p := ec_factorize(N). # 6890701303127411
|
||||
q := N div p. # 956207997714884457630761
|
||||
phi := (p-1)*(q-1). #6588943695914805815679579653627015131600
|
||||
d := mod_inverse(e, phi).
|
||||
cc := byte_string(y).
|
||||
z := y**d mod N.
|
||||
string(byte_string(z)).
|
9
publications/facharbeit-rsa/Kapitel-1.tex
Normal file
9
publications/facharbeit-rsa/Kapitel-1.tex
Normal file
|
@ -0,0 +1,9 @@
|
|||
\section{Prinzip der asymmetrischen Verschlüsselung}
|
||||
Bereits im 5. Jahrhundert v. Chr. war ein Verfahren zur geheimen Weitergabe an Informationen bekannt: Die Skytale\footnote{[Wrixon], S. 21f}. Man wickelte Papier spiralförmig um einen Stab, die Skytale, und schrieb die Nachricht längs der Skytale auf das Papier. Dann wurde das Papier dem Empfänger gebracht, der mit einer gleichen Skytale diese Nachricht entschlüsseln konnte.
|
||||
|
||||
Verfahren, die den gleichen Schlüssel zur Ver- als auch zur Entschlüsselung verwenden nennt man symmetrisch\footnote{[Birthälmer], S. 4}. In dem Beispiel ist die Skytale der Schlüssel. Es ist unüblich die Skytale als symmetrische Verschlüsselung zu bezeichnen, normalerweise sind Block- oder Stromchiffren damit gemeint. Diese sind jedoch schwerer zu beschreiben.
|
||||
|
||||
Nach Kerckhoffs' Prinzip darf ein Verschlüsselungssystem keine Geheimhaltung erfordern\footnote{[Petitcolas]}, also muss der Schlüssel für die Sicherheit sorgen. Wollen allerdings zwei Personen miteinander geheim kommunizieren, so muss dieser Schlüssel übertragen werden. Bei der Übertragung könnte er abgefangen werden.
|
||||
Asymmetrische Verschlüsselungsverfahren benutzen einen öffentlichen Schlüssel zum verschlüsseln und einen privaten Schlüssel zum entschlüsseln. Will Alice eine geheime Nachricht von Bob empfangen, so schickt sie Bob ihren öffentlichen Schlüssel. Bob verschlüsselt seine Nachricht mit diesem Schlüssel und schickt die Nachricht an Alice. Der private Schlüssel wird nicht übertragen. In dieser Hinsicht sind asymmetrische Verschlüsselungsverfahren sicherer als symmetrische.
|
||||
|
||||
Mithilfe von asymmetrischen Verschlüsselungen kann man auch digitale Signaturen erstellen und sich damit authentifizieren. Im RSA-Verfahren sind privater und öffentlicher Schlüssel austauschbar. Das heißt, wenn eine Nachricht mit dem privaten Schlüssel verschlüsselt wird, kann sie mit dem öffentlichen Schlüssel entschlüsselt werden. Da jedoch nur der Besitzer des privaten Schlüssels eine Nachricht erstellen kann, die man mit dem öffentlichen Schlüssel entschlüsseln kann, ist es so möglich den Absender einer Nachricht zu authentifizieren.
|
19
publications/facharbeit-rsa/Kapitel-2.tex
Normal file
19
publications/facharbeit-rsa/Kapitel-2.tex
Normal file
|
@ -0,0 +1,19 @@
|
|||
\section{Einwegfunktionen}
|
||||
Eine Einwegfunktion ist in der Mathematik eine Beziehung zwischen
|
||||
zwei Mengen, die "`komplexitätstheoretisch "`schwer"' umzukehren ist"'\footnote{[Beutelspacher], S. 114}.
|
||||
Ein Beispiel für eine Einwegfunktion ist die Multiplikation zweier
|
||||
Zahlen. Die Laufzeit des Schönhage-Strassen-Algorithmus zur
|
||||
Multiplikation zweier $n$-stelliger ganzer Zahlen ist mit
|
||||
$\mathcal{O}(n \cdot \log(n) \cdot \log(log(n)))$\footnote{[Pethö], S. 25}
|
||||
deutlich kleiner als die Laufzeit von des Zahlkörpersiebs
|
||||
$\mathcal{O}(e^{(1,92+o(1)) \sqrt[3]{\ln n} \sqrt[3]{(\ln \ln n)^2}})$\footnote{[Rothe], S. 384},
|
||||
das der Faktorisierung dient.
|
||||
|
||||
Die Sicherheit des RSA-Verfahrens zur asymmetrischen
|
||||
Verschlüsselung basiert auf der Annahme, dass die Faktorisierung
|
||||
einer großen Zahl deutlich länger dauert als das Multiplizieren der
|
||||
Primfaktoren. Falls es keinen besseren Algorithmus zur Faktorisierung
|
||||
als zur Multiplikation gibt, ist diese Annahme korrekt. Nach dem
|
||||
Stand von 2009 ist dies der Fall.
|
||||
|
||||
Weitere Hinweise zur Sicherheit des RSA-Kryptosystems sind in \cref{sec:Security} zu finden.
|
16
publications/facharbeit-rsa/Kapitel-3.tex
Normal file
16
publications/facharbeit-rsa/Kapitel-3.tex
Normal file
|
@ -0,0 +1,16 @@
|
|||
\section{Restklassen}
|
||||
Teilt man eine ganze Zahl $a$ durch eine ganze Zahl $m \neq 0$, so
|
||||
bleibt ein Rest $r \in \mathbb{N}_0$. Anhand aller möglichen Reste
|
||||
$0 \leq r < m$ teilt man nun alle Zahlen in $|m|$ Teilmengen ein.
|
||||
Diese Teilmengen nennt man Restklassen. Man sagt, alle Zahlen, die
|
||||
den selben Rest $r$ beim Teilen durch $m$ lassen, gehören der selben
|
||||
Restklasse modulo $m$ an\footnote{[Forster], S. 45}.
|
||||
Ein Beispiel aus dem Alltag sind Zeitangaben. Man schreibt nicht 348
|
||||
Minuten, sondern 5 Stunden und 48 Minuten. Es wird also modulo 60
|
||||
gerechnet. Auch in der Grund-schule rechnet man mit Restklassen
|
||||
modulo 10, wenn man ganze Zahlen in Einer, Zehner und Hunderter
|
||||
unterteilt.\\
|
||||
Ein weiteres Beispiel ist die Einteilung in gerade und ungerade
|
||||
Zahlen. Bleibt bei einer Zahl kein Rest beim Teilen durch zwei, so
|
||||
wird sie als "`gerade"' bezeichnet und ist in einer Restklasse
|
||||
modulo 2 mit allen anderen geraden Zahlen.
|
17
publications/facharbeit-rsa/Kapitel-4.tex
Normal file
17
publications/facharbeit-rsa/Kapitel-4.tex
Normal file
|
@ -0,0 +1,17 @@
|
|||
\section{Eulersche $\varphi$-Funktion}\label{sec:Eulersche-Phi-Funktion}
|
||||
Die Eulersche $\varphi$-Funktion gibt für jede natürliche Zahl $n$ an,
|
||||
wie viele positive ganze Zahlen $a \leq n $ zu ihr relativ prim sind\footnote{[Brill], S. 148}.
|
||||
$a$ ist zu $n$ relativ prim, wenn $ggT(a,n) = 1$ gilt, also wenn $a$
|
||||
und $n$ keinen größeren gemeinsamen Teiler als $1$ haben. Man sagt
|
||||
auch "`a und b sind teilerfremd"'.
|
||||
|
||||
$\varphi(n)$ ist zugleich die Ordnung der multiplikativen Gruppe $(\mathbb{Z}/n \mathbb{Z})^*$.
|
||||
$\varphi(n)$ gibt also an, wie viele Zahlen im Restklassenring modulo $n$ ein multiplikativ Inverses haben. Mehr dazu in \cref{sec:Multiplikativ-Inverses}
|
||||
|
||||
Für Primzahlen gilt $\varphi(p) = p - 1$ , da eine Primzahl nur
|
||||
durch sich und eins teilbar ist. Sei $A$ die multiplikative Gruppe
|
||||
einer Primzahl $p$, $B$ die multiplikative Gruppe einer Primzahl $q$
|
||||
und $C$ die multiplikative Gruppe von $p \cdot q$. Dann ist $|C| = |A| \cdot |B|$ und
|
||||
$\varphi(p \cdot q) = |C|$, $\varphi(p) = |A|$ sowie $\varphi(q) = |B|$.
|
||||
|
||||
Daraus folgt, dass $\varphi(pq) = \varphi(p) \cdot \varphi(q) = (p-1) \cdot (q - 1)$ für zwei Primzahlen $p \neq q$ gilt.
|
91
publications/facharbeit-rsa/Kapitel-5.tex
Normal file
91
publications/facharbeit-rsa/Kapitel-5.tex
Normal file
|
@ -0,0 +1,91 @@
|
|||
\section{Lineare Kongruenzen}
|
||||
\subsection{Allgemeine Informationen}
|
||||
Zwei Zahlen $a, b \in \mathbb{Z}$ heißen kongruent modulo $m \in \mathbb{N}$,
|
||||
falls $a$ und $b$ bei der Division durch $m$ den den gleichen Rest lassen.
|
||||
Man schreibt $a \equiv b \imod{m}$\footnote{[Reiss], S. 179f}.
|
||||
|
||||
Gilt $ax \equiv b \imod{m}$, für $a, b, x \in \mathbb{Z}$ und $m \in \mathbb{N}$,
|
||||
dann bedeutet das, dass $m | (ax - b)$ für ein passendes $x$.
|
||||
Man nennt $ax \equiv b \imod{m}$ ein lineares Kongruenzsystem.
|
||||
\clearpage
|
||||
|
||||
\subsection{Chinesischer Restsatz}
|
||||
Der Chinesische Restsatz sagt, ob lineare Kongruenzsysteme lösbar
|
||||
sind und wie diese Lösungen aussehen:
|
||||
|
||||
\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]
|
||||
Seien $m_1, m_2, ..., m_n$ paarweise teilerfremde natürliche Zahlen und
|
||||
$a_1, a_2, \dots, a_n$ ganze Zahlen.
|
||||
|
||||
Dann ist das System linearer Kongruenzen
|
||||
\vspace{-0.4cm}
|
||||
\[x \equiv a_1 \imod{m_1},\;\;\; x \equiv a_2 \imod{m_2},\;\;\;\dots,\;\;\; x \equiv a_n \imod{m_n}\]
|
||||
lösbar. Alle Lösungen des Systems liegen in einer gemeinsamen
|
||||
Restklasse modulo $M=\prod_{i = 1}^n m_i$
|
||||
\end{mdframed}
|
||||
|
||||
\textbf{Beweis nach [Reiss], S. 221f:}
|
||||
\begin{enumerate}[label=(\Roman{*}),labelsep=0.5em,noitemsep]
|
||||
\item $M_j = \frac{M}{m_j}$ für $j = 1, \dots, n$
|
||||
\item $y_j \cdot M_j \equiv 1 \imod{m_j}$, $y_j$ mit dem erweitertem Euklidischem Algorithmus bestimmen
|
||||
\item $a_j \cdot y_j \cdot M_j \equiv a_j \imod{m_j}$ für $j = 1, \dots, n$\\
|
||||
Weil $m_j$ für $i \neq j$ ein Teiler von $M_i$ ist, gilt auch:
|
||||
\item $a_i \cdot y_i \cdot M_i \equiv 0 \imod{m_j}$ für alle $i, j = 1, \dots, n$ mit $i \neq j$
|
||||
\end{enumerate}
|
||||
|
||||
Da alle Summanden bis auf Einen ($j = i$) gleich Null sind, stimmt dieser Ausdruck:
|
||||
\begin{align*}
|
||||
a_i \cdot y_i \cdot M_i &\equiv \sum_{j=1}^n {a_j \cdot y_j \cdot M_j} \imod{m_i}\\
|
||||
a_i &\equiv \sum_{j=1}^n {a_j \cdot y_j \cdot M_j} \imod{m_i}\text{, da }y_i \cdot M_i \equiv 1 \imod{m_i}
|
||||
\end{align*}
|
||||
|
||||
$a_i$ ist die Lösung des Kongruenzsystems. Alle Lösungen liegen in dieser Restklasse.
|
||||
|
||||
|
||||
\subsubsection*{Beispielaufgabe}
|
||||
Folgende Aufgabe wurde [Berendt] entnommen:
|
||||
|
||||
\hangindent2em
|
||||
\hangafter=0
|
||||
17 chinesische Piraten erbeuten eine Truhe mit Goldstücken. Beim Versuch, diese gleichmäßig zu verteilen, bleiben 7 Goldstücke übrig. Um diese entbrennt ein heftiger Streit, bei dem einer der Piraten das Leben lässt. Die verbleibenden 16 versuchen erneut, die Goldstücke gerecht zu verteilen, behalten jedoch elf Stücke übrig. Bei der folgenden Auseinandersetzung geht wieder einer der Streitenden über Bord. Den 15 Überlebenden gelingt dann die Teilung. Wie viele Goldstücke müssen es mindestens gewesen sein?
|
||||
|
||||
\subsubsection*{Restklassensystem} % This should semantically rather be subsubsubsection
|
||||
\begin{align*}
|
||||
x &:= \text{Anzahl der Goldstücke}\\
|
||||
x &\equiv 7 \imod{17}\\
|
||||
x &\equiv 11 \imod{16}\\
|
||||
x &\equiv 0 \imod{15}
|
||||
\end{align*}
|
||||
|
||||
\subsubsection*{Lösung}
|
||||
I Produkte
|
||||
\begin{align*}
|
||||
M &= 17 \cdot 16 \cdot 15 = 4080\\
|
||||
M_1 &= \frac{4080}{17} = 240\\
|
||||
M_2 &= \frac{4080}{16} = 255\\
|
||||
M_3 &= \frac{4080}{15} = 272
|
||||
\end{align*}
|
||||
|
||||
II Multiplikativ Inverses der Restklassensysteme
|
||||
\begin{align*}
|
||||
9 \cdot 240 &\equiv 1 \imod{17}\\
|
||||
15 \cdot 255 &\equiv 1 \imod{16}\\
|
||||
8 \cdot 272 &\equiv 1 \imod{15}
|
||||
\end{align*}
|
||||
|
||||
III Multiplikation der Restklassensysteme mit $a_j$
|
||||
\begin{align*}
|
||||
7 \cdot 9 \cdot 240 &\equiv 7 \imod{17}\\
|
||||
11 \cdot 15 \cdot 255 &\equiv 11 \imod{16}\\
|
||||
8 \cdot 272 &\equiv 0 \imod{15}
|
||||
\end{align*}
|
||||
|
||||
IV Berechnung der Lösung des Restklassensystem
|
||||
\begin{align*}
|
||||
x = \sum_{j = 1}^3 a_j \cdot y_j \cdot M_j \imod{15 \cdot 16 \cdot 17} = 7 \cdot 240 \cdot 9 + 11 \cdot 255 \cdot 15 = 57195\\
|
||||
57195 \equiv 75 \imod{4080}\\
|
||||
75 \text{ ist die kleinste positive Lösung des Kongruenzsystems.}
|
||||
\end{align*}
|
||||
|
||||
\subsubsection*{Antwort:}
|
||||
Die Anzahl der von den Piraten erbeuteten Goldstücken muss mindestens $75$ betragen, kann aber auch $75 + 1 \cdot 4080$, $75 + 2 \cdot 4080$ oder ein beliebiger anderer positiver Vertreter dieser Restklasse$\imod{4080}$ sein.
|
77
publications/facharbeit-rsa/Kapitel-6.tex
Normal file
77
publications/facharbeit-rsa/Kapitel-6.tex
Normal file
|
@ -0,0 +1,77 @@
|
|||
\section{Multiplikativ inverses Element}\label{sec:Multiplikativ-Inverses}
|
||||
\subsection{Definition und Beispiele}
|
||||
Das multiplikativ inverse Element $d$ von $e$ ergibt bei der
|
||||
Multiplikation mit $e$ das neutrale Element der Multiplikation, also
|
||||
die Eins: $d \cdot e = 1$
|
||||
|
||||
In $\mathbb{R} \setminus \Set{0}$ hat jedes Element ein multiplikativ
|
||||
Inverses, den Kehrbruch. In $\mathbb{Z}/7 \mathbb{Z}$ ist das
|
||||
multiplikativ Inverse von zwei in der Restgruppe von vier, da
|
||||
$2 \cdot 4 = 8$ und $8 \equiv 1 \imod{7}$.
|
||||
Mit dem erweitertem euklidischem Algorithmus kann man das
|
||||
multiplikativ Inverse von $a$ in $\mathbb{Z}/n \mathbb{Z}$ finden.
|
||||
|
||||
\subsection{Erweiterter euklidischer Algorithmus}
|
||||
Sind zwei Zahlen $a > b$ gegeben und will deren größten gemeinsamen
|
||||
Teiler berechnen, so kann man den erweiterten euklidischen
|
||||
Algorithmus anwenden:
|
||||
|
||||
\begin{enumerate}
|
||||
\item Größtmögliches $q$ wählen, so dass gilt $a = q_1 \cdot b + r_1$
|
||||
\item $b = q_2 \cdot r_1 + r_2$
|
||||
\item $r_1 = q_3 \cdot r_2 + r_3$
|
||||
\item \dots
|
||||
\item bis $r_{n-2} = q_n \cdot r_{n-1} + r_n$ mit $r_n = 0$
|
||||
\end{enumerate}
|
||||
|
||||
Dann ist $r_{n-1} = ggT(a,b)$
|
||||
|
||||
Mit diesem Algorithmus kann man nun das multiplikativ Inverse von $a$
|
||||
in $\mathbb{Z}/n \mathbb{Z}$ finden, wenn der größte gemeinsame Teiler von $a$ und
|
||||
$n$ gleich 1 ist. Da im vorletzten Schritt $r_{n - 1} = 1$ ist, kann man 1 als
|
||||
Linearkombination der Reste von $r_{n - 3}$ und $r_{n - 2}$
|
||||
darstellen. Diese Reste kann man wiederum als Linearkombination
|
||||
vorhergehender Reste darstellen. Dies setzt man so lange fort,
|
||||
bis man eine Linearkombination mit $a$ und $n$ von 1 hat. Da wir im
|
||||
Restklassenring $n$ sind, muss man nur das Produkt mit $a$ betrachten
|
||||
und kann das multiplikativ Inverse zu $a$ im Restklassenring
|
||||
$\mathbb{Z}/n \mathbb{Z}$ ablesen.
|
||||
|
||||
|
||||
Hier ein Beispiel zur Veranschaulichung:
|
||||
|
||||
Sei $a = (\text{Primzahl}_1 - 1) \cdot (\text{Primzahl}_2 - 1) =(3 - 1) \cdot (47 - 1) = 92$ und $b=71$
|
||||
|
||||
Gesucht ist das multiplikativ Inverse $b \in \mathbb{Z} / a \mathbb{Z}$ von $x \cdot 71 \equiv 1 \imod{92}$:
|
||||
|
||||
\begin{tabular}{lll}
|
||||
\textbf{Schritt 1}: euklidischer Algorithmus & & \textbf{Schritt 2}: nach Rest auflösen\\
|
||||
$91=1 \cdot 71 + 21$ \myDownArrow & $\rightarrow$ & $21 = 92 - 71$ \myUpArrow\\
|
||||
$71=3 \cdot 21 + 8$ & $\rightarrow$ & $8 = 71 - 3 \cdot 21$\\
|
||||
$21=2 \cdot 8 + 5$ & $\rightarrow$ & $5 = 21 - 2 \cdot 8$\\
|
||||
$ 8=1 \cdot 5 + 3$ & $\rightarrow$ & $3 = 8 - 1 \cdot 5$\\
|
||||
$ 5=1 \cdot 3 + 2$ & $\rightarrow$ & $2 = 5 - 1 \cdot 3$\\
|
||||
$ 3=1 \cdot 2 + 1$ & $\rightarrow$ & $1 = 3 - 1 \cdot 2$
|
||||
\end{tabular}
|
||||
|
||||
\textbf{Schritt 3}: so lange Reste einsetzen, bis eine Linearkombination der Form
|
||||
$1 = x \cdot 92 + y \cdot 71$ gefunden ist:
|
||||
|
||||
\begin{align*}
|
||||
1 &= 3 - (5 - 3) &&= 2 \cdot 3 - 5 \\
|
||||
1 &= 2 \cdot (8 - 5) - (21 - 2 \cdot 8) &&= 4 \cdot 8 - 2 \cdot 5 - 21 \\
|
||||
1 &= 4 \cdot 8 - 2 \cdot (21 - 2 \cdot 8) - 21 &&= 8 \cdot 8 - 3 \cdot 21 \\
|
||||
1 &= 8 \cdot (71 - 3 \cdot 21) - 3 \cdot (92 - 71) &&= 11 \cdot 71 - 24 \cdot 21 - 3 \cdot 92 \\
|
||||
1 &= 11 \cdot 71 - 3 \cdot 92 - 24 \cdot (92 - 71) &&= 35 \cdot 71 - 27 \cdot 92
|
||||
\end{align*}
|
||||
|
||||
Das bedeutet 35 ist das multiplikativ Inverse zu 71 in
|
||||
$ \mathbb{Z} / 92 \mathbb{Z}$ und erfüllt damit die Kongruenzgleichung
|
||||
$35 \cdot 71 \equiv 1 \imod{92}$.
|
||||
|
||||
Zusätzlich hat man damit weitere multiplikativ Inverse gefunden:
|
||||
\begin{itemize}
|
||||
\item $-27 \cdot 92 \equiv 1 \imod{71}$
|
||||
\item $-27 \cdot 92 \equiv 1 \imod{35}$
|
||||
\item $35 \cdot 71 \equiv 1 \imod{27}$
|
||||
\end{itemize}
|
281
publications/facharbeit-rsa/Kapitel-7.tex
Normal file
281
publications/facharbeit-rsa/Kapitel-7.tex
Normal file
|
@ -0,0 +1,281 @@
|
|||
\section{RSA-Verfahren}\label{sec:RSA-Verfahren}
|
||||
Das RSA-Verfahren ist ein asymmetrisches Kryptosystem, das von
|
||||
Ronald Linn \textbf{R}ivest, Adi \textbf{S}hamir und Leonard
|
||||
\textbf{A}dleman entwickelt und im August 1977 veröffentlicht wurde\footnote{[msri], S. 2}.
|
||||
|
||||
Da das RSA-Verfahren asymmetrisch ist, wird sowohl ein öffentlicher
|
||||
Schlüssel als auch ein privater Schlüssel benötigt. Der öffentliche
|
||||
Schlüssel dient der Verschlüsselung und besteht aus dem RSA-Modul $N$
|
||||
und dem Verschlüsselungsexponenten $e$. Der private Schlüssel
|
||||
besteht aus dem Entschlüsselungsexponenten $d$ und dem selben RSA-Modul $N$.
|
||||
|
||||
Die Erzeugung dieser drei Zahlen $N$, $e$ und $d$ für das RSA-Verfahren
|
||||
kann, in An-lehnung an [wiki-RSA], in fünf Schritte unterteilt werden:
|
||||
|
||||
\begin{description}
|
||||
\item[Schritt 1:] Als erstes werden zwei große Primzahlen gewählt.
|
||||
Je größer diese Primzahlen sind, desto sicherer
|
||||
ist die Verschlüsselung.
|
||||
(vgl. \cref{sec:Security})
|
||||
\item[Schritt 2:] In diesem Schritt wird RSA-Modul $N = p \cdot q$
|
||||
berechnet, das ein Teil des öffentlichen
|
||||
Schlüssels ist.
|
||||
\item[Schritt 3:] Schritt 3: Nun wird der Wert der Eulerschen
|
||||
$\varphi$-Funktion bei $N$ berechnet. Da $p$
|
||||
und $q$ Primzahlen sind, gilt $\varphi(N) = (p-1) \cdot (q-1)$ (vgl. \cref{sec:Eulersche-Phi-Funktion})
|
||||
\item[Schritt 4:] Nachdem $\varphi(N)$ ermittelt wurde, kann der
|
||||
zweite Teil des öffentlichen Schlüssel, der
|
||||
Verschlüsselungsexponent $e$, ermittelt werden.
|
||||
Folgende Bedingungen müssen für $e$ gelten:
|
||||
$1 < e < \varphi(N) $ und $ggT(e, \varphi(N)) = 1$
|
||||
\item[Schritt 5:] Es folgt die Berechnung des Entschlüsselungsexponenten
|
||||
$d$ als multiplikativ Inverses von $e$
|
||||
bezüglich des Modules $\varphi(N)$. Es soll
|
||||
also folgende Kongruenz gelten:
|
||||
$e \cdot d \equiv 1 \imod{\varphi(N)}$
|
||||
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsection{Verschlüsselung mit dem öffentlichen Schlüssel}
|
||||
Ein Text wird verschlüsselt, indem er in Zahlen umgewandelt wird. Für
|
||||
diese Umwandlung kann der ASCII-Code verwendet werden. Sobald man
|
||||
Zahlen hat, kann man den unverschlüsselten Klartext $K$ mit folgender
|
||||
Kongruenzgleichung in den verschlüsselten Geheimtext $G$ umwandeln: $G \equiv K^e \imod{N}$.\\
|
||||
Die Zahl $N$ sollte deutlich größer sein als K\footnote{vgl. [Reiss], S. 288}.
|
||||
|
||||
In folgendem Beispiel wird der Klartext "`12"' verschlüsselt. Dazu
|
||||
werden als Erstes alle benötigten Variablen erzeugt oder berechnet:
|
||||
|
||||
\begin{description}
|
||||
\item[Schritt 1:] $p := 347$ und $q := 379$
|
||||
\item[Schritt 2:] $N = p \cdot q = 347 \cdot 379 = 131513$
|
||||
\item[Schritt 3:] $\varphi(N) = \varphi(131513) = (347 - 1) \cdot (379 - 1) = 346 \cdot 378 = 130788$
|
||||
\item[Schritt 4:] $1 < (e := 877) < \varphi(N) $
|
||||
\item[Schritt 5:] $877 \cdot d \equiv 1 \imod{130788}$
|
||||
\end{description}
|
||||
|
||||
Um ein $d$ zu finden, das diese Kongruenz erfüllt, wird der
|
||||
erweiterte euklidische Algorithmus angewendet:
|
||||
|
||||
\begin{tabular}{lll}
|
||||
\textbf{Schritt 1}: euklidischer Algorithmus & & \textbf{Schritt 2}: nach Rest auflösen\\
|
||||
$130788 = 149 \cdot 877 + 115$ \myDownArrowB & $\rightarrow$ & $115 = 130788 - 149 \cdot 877$ \myUpArrowB\\
|
||||
$877= 7 \cdot 115 + 72$ & $\rightarrow$ & $72 = 877 - 7 \cdot 115$\\
|
||||
$115= 1 \cdot 72 + 43$ & $\rightarrow$ & $43 = 115 - 72$\\
|
||||
$72= 1 \cdot 43 + 29$ & $\rightarrow$ & $29 = 72 - 43$\\
|
||||
$43= 1 \cdot 29 + 14$ & $\rightarrow$ & $14 = 43 - 29$\\
|
||||
$29= 2 \cdot 14 + 1$ & $\rightarrow$ & $1 = 29 - 2 \cdot 14$
|
||||
\end{tabular}
|
||||
|
||||
\textbf{Schritt 3}: so lange Reste einsetzen, bis eine Linearkombination der Form
|
||||
$1 = x \cdot 877 + y \cdot 130788$ gefunden ist:
|
||||
|
||||
\begin{align*}
|
||||
1 &= 29- 2 \cdot (43-29) \\
|
||||
1 &= 3 \cdot 29 - 2 \cdot (115 - 72) \\
|
||||
1 &= 3 \cdot (72 - 43) - 2 (130788-149 \cdot 877) + 2 \cdot (877 - 7 \cdot 115) \\
|
||||
1 &= 3 \cdot (877 - 7 \cdot 115) -3 \cdot (115 - 72) - 2 \cdot 130788 + 300 \cdot 877 -14 \cdot 155 \\
|
||||
1 &= 303 \cdot 877 - 2 \cdot 130788 - 38 \cdot 115 + 3 \cdot 72 \\
|
||||
1 &= 303 \cdot 877 - 2 \cdot 130788 - 38 \cdot (130788-149 \cdot 877) + 3 \cdot (877 - 7 \cdot 115) \\
|
||||
1 &= 5968 \cdot 877 - 40 \cdot 130788 - 21 \cdot (130788-149 \cdot 877) = 9097 \cdot 877 - 61 \cdot 130788
|
||||
\end{align*}
|
||||
|
||||
$\rightarrow d = 9097$
|
||||
|
||||
Probe:
|
||||
|
||||
\[\frac{d \cdot e - 1}{\varphi(N)} = \frac{877 \cdot 9097 - 1}{130788} = 61\]
|
||||
|
||||
Nun wird der Geheimtext $G$ mit dem Verschlüsselungsexponenten $e$
|
||||
aus dem Klartext $K$ berechnet:
|
||||
|
||||
\begin{align*}
|
||||
G &\equiv K^e \imod{N}\\
|
||||
G &\equiv 12^877 \equiv 12 \cdot (12^6)^{2 \cdot 73} \equiv 12 \cdot 92698^{2 \cdot 73} \equiv 12 \cdot 122810^{73} \imod{131513} \\
|
||||
G &\equiv 12 \cdot 122810 \cdot 122810^{2 \cdot 2 \cdot 2 \cdot 3 \cdot 3} \equiv 27077 \cdot 122234^{2 \cdot 2 \cdot 3 \cdot 3} \equiv 27077 \cdot 90339^{2 \cdot 3 \cdot 3} \imod{131513} \\
|
||||
G &\equiv 27077 \cdot 95706^{9} \equiv 27077 \cdot 9189^{3} \equiv 27077 \cdot 56590 \imod{131513} \\
|
||||
G &\equiv 29467 \imod{131513}
|
||||
\end{align*}
|
||||
|
||||
\subsection{Entschlüsselung mit dem privaten Schlüssel}\label{sec:Decryption}
|
||||
\subsubsection{Entschlüsselung ohne den Chinesischen Restsatz}
|
||||
Der Geheimtext wird entschlüsselt, indem man ihn mit $d$ potenziert
|
||||
und dann denn kleinsten positiven Repräsentanten der Restklasse $N$
|
||||
berechnet: $K \equiv G^d \imod{N}$
|
||||
|
||||
Im Folgenden wird die Entschlüsselung auf das vorhergehende Beispiel
|
||||
angewendet:
|
||||
|
||||
\begin{align*}
|
||||
G &= 29467 ~~~ N= 131513 ~~~ d = 9097 \\
|
||||
K &\equiv G^d \imod{N}\\
|
||||
K &\equiv 29467^{9097} \imod{131513}\\
|
||||
K &\equiv 29467 \cdot (29467^2)^{2 \cdot 2 \cdot 3 \cdot 379} \equiv 29467 \cdot (55263^2)^{2 \cdot 3 \cdot 379} \equiv 29467 \cdot 4283^{2 \cdot 3 \cdot 379} \imod{131513} \\
|
||||
K &\equiv 29467 \cdot 89937^{2 \cdot 3} \equiv 29467 \cdot 88417^3 \equiv 29467 \cdot 24587 \imod{131513} \\
|
||||
K &\equiv 12 \imod{131513}
|
||||
\end{align*}
|
||||
|
||||
\subsubsection{Entschlüsselung mit dem Chinesischen Restsatz}
|
||||
Falls der Entschlüsselungsexponent $d$ sehr groß ist, kann das
|
||||
Potenzieren lange dauern. Dies kann mit dem Chinesischem Restsatz
|
||||
beschleunigt werden\footnote{[Paixão], S. 1}.
|
||||
Diese Idee wurde [Paixão] entnommen:
|
||||
|
||||
Der Geheimtext $G$ und der Exponent $d$ wird folgendermaßen geteilt:
|
||||
|
||||
\begin{tabular}{llll}
|
||||
$\begin{aligned}
|
||||
G_p &\equiv G \imod{p} \\
|
||||
G_q &\equiv G \imod{q}
|
||||
\end{aligned}$ & und &
|
||||
$\begin{aligned}
|
||||
d_p &\equiv d \imod{p-1} \\
|
||||
d_q &\equiv d \imod{q-1}
|
||||
\end{aligned}$ &, da $e \cdot d \equiv 1 \imod{(p-1) \cdot (q-1))}$
|
||||
\end{tabular}
|
||||
|
||||
Dies funktioniert, da der folgende Hilfssatz gilt:
|
||||
|
||||
\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]
|
||||
$K^ed \equiv G \imod{p \cdot q} \Leftrightarrow K^{ed} \equiv G \imod{p} \land K^{ed} \equiv G \imod{q}$
|
||||
\end{mdframed}
|
||||
|
||||
Nun wird dieser kleinere Teil von G mit den kleineren Exponenten "`entschlüsselt"':
|
||||
|
||||
\begin{align*}
|
||||
K_p &\equiv {G_p} ^ {d_p} \imod{p}\\
|
||||
K_q &\equiv {G_q} ^ {d_q} \imod{q}
|
||||
\end{align*}
|
||||
|
||||
Der Chinesische Restsatz ermöglicht es nun, eine Lösung $K$ für die
|
||||
folgenden Kongruenzen zu finden:
|
||||
|
||||
\begin{align*}
|
||||
K &\equiv K_p \imod{p}\\
|
||||
K &\equiv K_q \imod{q}
|
||||
\end{align*}
|
||||
|
||||
Dazu müssen die multiplikativ inversen Elemente ermittelt werden:
|
||||
\begin{align*}
|
||||
y_p \cdot p \equiv 1 \imod{q}\\
|
||||
y_q \cdot q \equiv 1 \imod{p}
|
||||
\end{align*}
|
||||
|
||||
Nun wird der Klartext zusammengesetzt:
|
||||
\[K \equiv (K_p \cdot y_p \cdot q + K_q \cdot y_q \cdot p) \imod{N}\]
|
||||
|
||||
Diese Methode ist etwa vier mal schneller als die Entschlüsselung mit $d$\footnote{[Paixão], S. 2}.
|
||||
|
||||
\subsection{Entschlüsselung ohne den privaten Schlüssel}
|
||||
Ist der Entschlüsselungsexponent $d$ unbekannt, so kann dieser durch
|
||||
Faktorisierung von $N$ zurückgewonnen werden. Faktorisiert man $N$, so
|
||||
kann $\varphi(N)$ berechnet werden und die Kongruenz $e \cdot d \equiv 1 \imod{\varphi(N)}$ gelöst werden.
|
||||
|
||||
Als praktische Arbeit wurde mir folgende Aufgabe gestellt:
|
||||
|
||||
\begin{mdframed}[tikzsetting={draw=black,very thick}, innertopmargin=0.6cm]
|
||||
\begin{verbatim}
|
||||
N := 65937_24735_90338_11941_75738_06421_27758_89771;
|
||||
e := 47;
|
||||
# geheime Botschaft:
|
||||
y := 65087_24329_19692_65260_21005_67465_76581_27499;
|
||||
\end{verbatim}
|
||||
Wie lautet die Botschaft im Klartext?
|
||||
\end{mdframed}
|
||||
|
||||
Um diese Aufgabe zu lösen, versucht man den privaten Schlüssel mit
|
||||
Hilfe des öffentlichen Schlüssels wiederherzustellen.
|
||||
|
||||
Der private Schlüssel $d$ muss die Kongruenzgleichung
|
||||
$e \cdot d \equiv 1 \imod{\varphi(N)}$ erfüllen, allerdings sind
|
||||
$\varphi(N)$ und $d$ nicht bekannt. Um $\varphi(N)$ zu berechnen,
|
||||
werden die Primfaktoren $p$ und $q$, aus denen $N$ besteht, benötigt.
|
||||
$N$ muss also faktorisiert werden. Sobald ein Faktor von $N$ bekannt
|
||||
ist, kann man $N$ durch diesen Faktor teilen und man erhält den
|
||||
zweiten Faktor. Dann kann man wie in \cref{sec:RSA-Verfahren} vorgehen und $d$
|
||||
berechnen. Mit $d$ kann man wie in \cref{sec:Decryption} beschrieben die
|
||||
Geheimbotschaft entschlüsseln.
|
||||
|
||||
Wird das Aribas-Skript im Anhang ausgeführt, das diese Schritte
|
||||
ausführt, erhält man den Klartext "`\textbf{RSAribas}"'.
|
||||
|
||||
|
||||
\subsection{Sicherheit des RSA-Algorithmus}\label{sec:Security}
|
||||
Der RSA-Algorithmus kann, wie oben beschrieben, "`geknackt"' werden,
|
||||
indem der öffentliche Schlüssel faktorisiert wird. Allerdings ist das
|
||||
bei großen Zahlen nahezu unmöglich, da die Algorithmen sehr lange
|
||||
Laufzeiten haben\footnote{[RSA-2190]}.
|
||||
Wie lange die Faktorisierung dauert hängt einerseits vom Algorithmus,
|
||||
andererseits von der Hardware ab.
|
||||
|
||||
Um ein Gefühl dafür zu bekommen was "`sehr lange"' bedeutet, kann man
|
||||
die "`RSA Factoring Challenge"' als Beispiel betrachten. Eine
|
||||
193-stellige Zahl sollte Faktorisiert werden. Für diese Aufgabe
|
||||
wurde am 18. März 1991 ein Preisgeld von 20.000 US-Dollar
|
||||
ausgeschrieben. Ein Team des Instituts für Experimentelle Mathematik
|
||||
in Essen hat am 2. November 2005 diese Aufgabe gelöst und dafür
|
||||
über fünf Monate benötigt. Der Rechenaufwand betrug etwa 30
|
||||
2.2GHz-Opteron-CPU Jahre\footnote{[RSA-2964]}.
|
||||
|
||||
Das Faktorisieren wird zwar immer schneller, da man über bessere und
|
||||
billigere Computer sowie effizientere Algorithmen verfügt, allerdings
|
||||
steigt mit den Hardwareverbesserungen die Sicherheit des
|
||||
RSA-Algorithmus. Mit einer besseren Hardware können deutlich größere
|
||||
Primzahlen erzeugt werden und damit auch ein deutlich längerer
|
||||
öffentlicher Schlüssel generiert werden, der zur Verschlüsselung der
|
||||
Nachricht dient.
|
||||
|
||||
Ein verbesserter Faktorisierungsalgorithmus würde die Sicherheit des
|
||||
RSA-Kryptosystems gefährden. Es ist jedoch unwahrscheinlich, dass ein
|
||||
solcher Algorithmus gefunden wird, da das Problem als schwer
|
||||
angesehen wird.\footnote{[RSA-2191]}
|
||||
|
||||
Ein weiterer möglicher Angriff auf das RSA-Kryptosystem wäre die
|
||||
$e$-te Wurzel $\imod{n}$ zu finden. Da $G \equiv K^e \imod{N}$ ist,
|
||||
wäre $K \equiv \sqrt[e]{K^e} \imod{N}$. Allerdings ist kein Angriff,
|
||||
der so funktioniert, bekannt4. Um zu veranschaulichen, dass bei einer
|
||||
Kongruenzgleichung nicht wie gewohnt die Wurzel gezogen werden kann,
|
||||
betrachte man folgendes Beispiel: $4 \equiv 16 \imod{3}$, aber
|
||||
$\sqrt{4} \neq \sqrt{16} \imod{3}$.
|
||||
|
||||
\subsection{Warum der RSA-Algorithmus funktioniert}
|
||||
Der Geheimtext $G$ wird durch potenzieren mit $e$ gewonnen ($G \equiv K^e \imod{N}$)
|
||||
und der Klartext durch potenzieren mit $d$ ($K \equiv G^d \imod{N}$).
|
||||
Zu zeigen ist, dass
|
||||
$K \equiv K^{e \cdot d} \imod{N}$ mit $ed \equiv 1 \imod{\varphi(N)}$ gilt.
|
||||
|
||||
Es kann folgende Umformung durchgeführt werden:
|
||||
\begin{align*}
|
||||
ed &\equiv 1 \imod{\varphi(N)}\\
|
||||
ed &= 1 + x \cdot \varphi(N) \text{mit } x \in \mathbb{Z}
|
||||
\end{align*}
|
||||
|
||||
Daraus folgt:
|
||||
\[K^{e \cdot d} = K^{1 + x \cdot \varphi(N)} = K \cdot K^{x \cdot \varphi(N)}\]
|
||||
|
||||
Nun wird der \textbf{Satz von Fermat-Euler} als Hilfssatz eingeführt:
|
||||
\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]
|
||||
$K^{\varphi(N)} \equiv 1 \imod{N}$ für $K, N \in \mathbb{N}$ und $ggT(N, K) = 1$
|
||||
\end{mdframed}
|
||||
|
||||
Beweis nach [Reiss], S. 218 f.:
|
||||
\hangindent2em
|
||||
\hangafter=0
|
||||
Es gibt $\varphi(N)$ verschiedene, zu $N$ teilerfremde Reste. Da $K$
|
||||
zu $N$ teilerfremd ist, muss auch jedes der Produkte
|
||||
$K \cdot r_1 , K \cdot r_2 , \dots, K \cdot r_{\varphi(N)}$ zu $N$
|
||||
teilerfremd sein.
|
||||
|
||||
Es gilt:
|
||||
\begin{align*}
|
||||
\prod_{i=1}^{n=\varphi(N)} K \cdot r_i &\equiv \prod_{i=1}^{n=\varphi(N)} r_i \imod{N}\\
|
||||
K^{\varphi(N)} \prod_{i=1}^{n=\varphi(N)} r_i &\equiv \prod_{i=1}^{n=\varphi(N)} r_i \imod{N}
|
||||
\end{align*}
|
||||
|
||||
Da alle $r_i$ teilerfremd zu N sind, kann man durch das Produkt teilen. Daraus ergibt sich:
|
||||
\[K^{\varphi(N)} \equiv 1 \imod{N}\]
|
||||
|
||||
Das bedeutet für den RSA-Algorithmus:
|
||||
\[K \cdot K^{x \cdot \varphi(N)} \equiv K \cdot (K^{\varphi(N)})^x \equiv K \cdot 1^x \equiv K \imod{N}\]
|
||||
|
28
publications/facharbeit-rsa/Literatur.bib
Normal file
28
publications/facharbeit-rsa/Literatur.bib
Normal file
|
@ -0,0 +1,28 @@
|
|||
@BOOK{Beutelspacher,
|
||||
AUTHOR = {Beutelspacher, Albrecht AND Neumann, Heike B. AND Schwarzpaul, Thomas},
|
||||
YEAR = {2005},
|
||||
TITLE = {Kryptografie in Theorie und Praxis},
|
||||
%EDITION = {2. Aufl. 2010},
|
||||
%ISBN = {978-3-834-80977-3},
|
||||
PUBLISHER = {Vieweg+Teubner Verlag},
|
||||
ADDRESS = {Wiesbaden},
|
||||
}
|
||||
|
||||
@BOOK{Brill,
|
||||
AUTHOR = {Brill, Manfred},
|
||||
YEAR = {2004},
|
||||
TITLE = {Mathematik für Informatiker},
|
||||
%EDITION = {2. vollständig überarbeitete Auflage},
|
||||
%ISBN = {344-6-228-020-},
|
||||
PUBLISHER = {Hanser Verlag},
|
||||
ADDRESS = {Wien},
|
||||
}
|
||||
|
||||
@BOOK{,
|
||||
AUTHOR = "Otto Forster",
|
||||
YEAR = "1996",
|
||||
TITLE = "Algorithmische Zahlentheorie",
|
||||
PUBLISHER = "Vieweg Braunschweig/Wiesbaden",
|
||||
ISBN = {978-3528065805}
|
||||
ADDRESS = "Wiesbaden",
|
||||
}
|
86
publications/facharbeit-rsa/Literatur.tex
Normal file
86
publications/facharbeit-rsa/Literatur.tex
Normal file
|
@ -0,0 +1,86 @@
|
|||
\section{Literaturverzeichnis}
|
||||
|
||||
\textbf{Beutelspacher, A., Neumann, H. B. und Schwarzpaul, T.:}\\
|
||||
Kryptografie in Theorie und Praxis.\\
|
||||
Wiesbaden, Vieweg+Teubner Verlag, 2005.
|
||||
|
||||
\textbf{Brill, M.:}\\
|
||||
Mathematik für Informatiker.\\
|
||||
Wien, Hanser Verlag, 2004.
|
||||
|
||||
\textbf{Forster, O.:}\\
|
||||
Algorithmische Zahlentheorie.\\
|
||||
Wiesbaden, Vieweg Braunschweig/Wiesbaden, 1996.
|
||||
|
||||
\textbf{Pethö, A. und Pohst, M.:}\\
|
||||
Algebraische Algorithmen.\\
|
||||
Wiesbaden, Vieweg+Teubner Verlag, 1999.
|
||||
|
||||
\textbf{Reiss, K. und Schmieder, G.:}\\
|
||||
Basiswissen Zahlentheorie.\\
|
||||
Berlin Heidelberg, Springer-Verlag, 2007.
|
||||
|
||||
\textbf{Rothe, J.:}\\
|
||||
Komplexitätstheorie und Kryptologie.\\
|
||||
Berlin, Springer, 2008.
|
||||
|
||||
\textbf{Wrixon, F. B.:}\\
|
||||
Geheimsprachen.\\
|
||||
Königswinter, Tandem Verlag GmbH, 2006.
|
||||
|
||||
\newpage
|
||||
\subsection*{Internetadressen}
|
||||
{\footnotesize
|
||||
\begin{tabular}{lp{12cm}}
|
||||
{[Berendt]} &
|
||||
Berendt, Gerhard.\newline
|
||||
Seminar über Zahlentheorie/Kryptographie.\hfill10.04.2008\newline
|
||||
URL: http://userpage.fu-berlin.de/$\sim$berendt/lehre2008\_neu.html\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[Birthälmer]} &
|
||||
Birthälmer, Melita.\newline
|
||||
Kryptografie\hfill13.04.2008\newline
|
||||
URL: http://www.birthaelmer.com/fileadmin/birthaelmer/portfolio/Kryptografie\_web.pdf\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[msri]} &
|
||||
SIAM News.\newline
|
||||
Still Guarding Secrets after Years of Attacks, RSA Earns Accolades for its Founders.\hfill17.06.2003\newline
|
||||
URL: http://www.msri.org/people/members/sara/articles/rsa.pdf\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[Paixão]} &
|
||||
Paixão, Cesar A. M.. \newline
|
||||
An efficient variant of the RSA cryptosystem.\hfill11.08.2009\newline
|
||||
URL: http://eprint.iacr.org/2003/159.pdf\newline
|
||||
{[Stand: 26.11.2009]} \\
|
||||
{[Petitcolas]} &
|
||||
Petitcolas, Fabien. \newline
|
||||
DESIDERATA DE LA CRYPTOGRAPHIE MILITAIRE.\hfill20.06.2009\newline
|
||||
URL: http://www.petitcolas.net/fabien/kerckhoffs/la\_cryptographie\_militaire\_i.htm\#desiderata \newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[RSA-2190]} &
|
||||
RSA Laboratories.\newline
|
||||
What are the best factoring methods in use today?\hfill03.11.2009\newline
|
||||
URL: http://www.rsa.com/rsalabs/node.asp?id=2190\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[RSA-2191]} &
|
||||
RSA Laboratories.\newline
|
||||
What improvements are likely in factoring capability?\hfill03.11.2009\newline
|
||||
URL: http://www.rsa.com/rsalabs/node.asp?id=2191\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[RSA-2216]} &
|
||||
RSA Laboratories.\newline
|
||||
What would it take to break the RSA cryptosystem?\hfill03.11.2009\newline
|
||||
URL: http://www.rsa.com/rsalabs/node.asp?id=2216\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[RSA-2964]} &
|
||||
RSA Laboratories.\newline
|
||||
RSA-640 factored!\hfill03.01.2010\newline
|
||||
URL: http://www.rsa.com/rsalabs/node.asp?id=2964\newline
|
||||
{[Stand: 09.01.2010]} \\
|
||||
{[wiki-RSA]} &
|
||||
Ladenthin, Bernhard.\newline
|
||||
RSA-Kryptosystem.\hfill08.01.2010\newline
|
||||
URL: http://de.wikipedia.org/wiki/RSA-Kryptosystem\#Erzeugung\_des\_öffentlichen\_und\_privaten\_Schlüssels\newline
|
||||
{[Stand: 09.01.2010]}
|
||||
\end{tabular}
|
||||
}
|
8
publications/facharbeit-rsa/Makefile
Normal file
8
publications/facharbeit-rsa/Makefile
Normal file
|
@ -0,0 +1,8 @@
|
|||
SOURCE = facharbeit-rsa
|
||||
make:
|
||||
pdflatex -shell-escape $(SOURCE).tex -output-format=pdf
|
||||
pdflatex -shell-escape $(SOURCE).tex -output-format=pdf
|
||||
make clean
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.toc *.bbl *.blg *.pyg
|
11
publications/facharbeit-rsa/README.md
Normal file
11
publications/facharbeit-rsa/README.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
Dies ist eine LaTeX-Version meiner Facharbeit. Die Original
|
||||
OpenOffice-Facharbeit ist unter `Facharbeit-Martin-Thoma-2.odt` zu
|
||||
finden. Damals wurde es wie in `Facharbeit-Martin-Thoma-2.pdf`
|
||||
angezeigt.
|
||||
|
||||
Bekannte Probleme:
|
||||
-----------------
|
||||
* Internetadressen werde nicht gut angezeigt
|
||||
* Internetadressen sind nicht direkt verlinkt
|
||||
* Anhang wurde nicht richtig geparst (minted issue 85)[https://code.google.com/p/minted/issues/detail?id=85]
|
||||
* Selbststaendigkeitserklaerung schaut nicht so schön aus
|
|
@ -0,0 +1,9 @@
|
|||
\vspace{10cm}
|
||||
|
||||
Ich erkläre, dass ich die Facharbeit ohne fremde Hilfe angefertigt
|
||||
und nur die im Literaturverzeichnis angeführten Quellen und
|
||||
Hilfsmittel benützt habe.
|
||||
|
||||
\vspace{10cm}
|
||||
|
||||
\titledate{Ort, Datum}
|
28
publications/facharbeit-rsa/Titelseite.tex
Normal file
28
publications/facharbeit-rsa/Titelseite.tex
Normal file
|
@ -0,0 +1,28 @@
|
|||
\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
{\Huge Paul-Klee-Gymnasium}
|
||||
|
||||
|
||||
Facharbeit aus der Mathematik
|
||||
|
||||
|
||||
|
||||
Thema:
|
||||
|
||||
Asymmetrische Verschlüsselungsverfahren
|
||||
am Beispiel des RSA-Kryptosystems
|
||||
|
||||
|
||||
|
||||
\begin{tabular}{lll}
|
||||
Verfasser &:& Martin Andreas Thoma\\
|
||||
Kursleiter &:& Claudia Wenninger\\
|
||||
Abgegeben am &:& 20.01.2010 (verändert am 06.04.2010)\\
|
||||
\\
|
||||
\\
|
||||
Erzielte Note &:& \line(1,0){120}\\
|
||||
Erzielte Punkteanzahl &:& \line(1,0){120}\\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
BIN
publications/facharbeit-rsa/facharbeit-rsa.pdf
Normal file
BIN
publications/facharbeit-rsa/facharbeit-rsa.pdf
Normal file
Binary file not shown.
115
publications/facharbeit-rsa/facharbeit-rsa.tex
Normal file
115
publications/facharbeit-rsa/facharbeit-rsa.tex
Normal file
|
@ -0,0 +1,115 @@
|
|||
\documentclass[a4paper,12pt]{scrartcl}
|
||||
\usepackage{amssymb, amsmath} % needed for math
|
||||
\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[top=3cm, bottom=3cm, left=4cm, right=2cm]{geometry} %layout
|
||||
\usepackage{hyperref} % links im text
|
||||
\usepackage{color}
|
||||
\usepackage{framed}
|
||||
\usepackage{enumerate} % for advanced numbering of lists
|
||||
\usepackage{pdfpages} % Signatureinbingung und includepdf
|
||||
\usepackage{parskip} % spaces instead of intendation between paragraphs
|
||||
\usepackage{cite}
|
||||
\usepackage[scaled=.90]{helvet}% Helvetica, served as a model for arial
|
||||
\linespread{1.45} % 1,45-Facher Zeilenabstand
|
||||
|
||||
\usepackage{titlesec}
|
||||
%\titlespacing{command}{left spacing}{before spacing}{after spacing}[right]
|
||||
\titlespacing\section{0pt}{12pt plus 3pt minus 2pt}{0pt plus 2pt minus 1pt}
|
||||
\usepackage[framemethod=tikz,xcolor=true]{mdframed}
|
||||
|
||||
\usepackage{enumitem}
|
||||
\usepackage{braket} % needed for nice printing of sets
|
||||
|
||||
\usepackage{fancyhdr} % needed for the footer
|
||||
\usepackage{lastpage} % needed for the footer
|
||||
|
||||
\usepackage{tikz} % needed for arrow in document
|
||||
\usetikzlibrary{shapes.arrows} % needed for arrow in document
|
||||
|
||||
\clubpenalty = 10000 % Schusterjungen verhindern
|
||||
\widowpenalty = 10000 % Hurenkinder verhindern
|
||||
|
||||
\hypersetup{
|
||||
pdfauthor = {Martin Thoma},
|
||||
pdfkeywords = {Asymmetrische Verschlüsselungsverfahren; RSA-Kryptosystems},
|
||||
pdftitle = {Asymmetrische Verschlüsselungsverfahren am Beispiel des RSA-Kryptosystems},
|
||||
pdfborder = {0 0 0} % remove red box around hyperlinks
|
||||
}
|
||||
\usepackage[german,nameinlink]{cleveref}
|
||||
\crefname{section}{Kapitel}{Kapitel}
|
||||
\pagestyle{fancy}
|
||||
\fancyhf{}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
\fancyfoot[R]{Seite~\thepage~von \pageref{LastPage}}
|
||||
|
||||
% From http://www.matthewflickinger.com/blog/archives/2005/02/20/latex_mod_spacing.asp
|
||||
% Thanks!
|
||||
\makeatletter
|
||||
\def\imod#1{\allowbreak\mkern10mu({\operator@font mod}\,\,#1)}
|
||||
\makeatother
|
||||
|
||||
\usepackage{minted} % needed for the inclusion of source code
|
||||
|
||||
|
||||
\newcommand{\titledate}[2][2.5in]{%
|
||||
\noindent%
|
||||
\begin{tabular}{@{}p{#1}@{}}
|
||||
\\ \hline \\[-.75\normalbaselineskip]
|
||||
#2
|
||||
\end{tabular} \hspace{1in}
|
||||
\begin{tabular}{@{}p{#1}@{}}
|
||||
\\ \hline \\[-.75\normalbaselineskip]
|
||||
Unterschrift
|
||||
\end{tabular}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\def\myDownArrow{\smash{\begin{tikzpicture}[baseline=6mm]\useasboundingbox (-2,0);\node[single arrow,draw=black,fill=black!10,minimum height=4cm,minimum width=1.2cm,shape border rotate=270] at (0,-1) {};\end{tikzpicture}}}
|
||||
\def\myUpArrow{\smash{\begin{tikzpicture}[baseline=6mm]\useasboundingbox (-2,0);\node[single arrow,draw=black,fill=black!10,minimum height=4cm,minimum width=1.2cm,shape border rotate=90] at (0,-1) {};\end{tikzpicture}}}
|
||||
|
||||
\def\myDownArrowB{\smash{\begin{tikzpicture}[baseline=6mm]\useasboundingbox (-1,0);\node[single arrow,draw=black,fill=black!10,minimum height=4cm,minimum width=1.2cm,shape border rotate=270] at (0,-1) {};\end{tikzpicture}}}
|
||||
\def\myUpArrowB{\smash{\begin{tikzpicture}[baseline=6mm]\useasboundingbox (-1,0);\node[single arrow,draw=black,fill=black!10,minimum height=4cm,minimum width=1.2cm,shape border rotate=90] at (0,-1) {};\end{tikzpicture}}}
|
||||
|
||||
\setcounter{page}{0}
|
||||
\pagenumbering{roman}
|
||||
|
||||
%\input{Titelseite}
|
||||
\includepdf[pages=1]{Titelseite.pdf}
|
||||
\clearpage
|
||||
|
||||
\thispagestyle{empty}
|
||||
\tableofcontents
|
||||
\clearpage
|
||||
|
||||
|
||||
\pagenumbering{arabic}
|
||||
\setcounter{page}{2}
|
||||
|
||||
% Start der eigentlichen Arbeit
|
||||
\input{Kapitel-1}
|
||||
\clearpage
|
||||
\input{Kapitel-2}
|
||||
\input{Kapitel-3}
|
||||
\clearpage
|
||||
\input{Kapitel-4}
|
||||
\input{Kapitel-5}
|
||||
\clearpage
|
||||
\input{Kapitel-6}
|
||||
\clearpage
|
||||
\input{Kapitel-7}
|
||||
\clearpage
|
||||
|
||||
\input{Literatur}
|
||||
\clearpage
|
||||
|
||||
\input{Anhang}
|
||||
\clearpage
|
||||
|
||||
\newpage
|
||||
\input{Selbststaendigkeitserklaerung}
|
||||
|
||||
\end{document}
|
2
publications/write-math-ba-paper/README.md
Normal file
2
publications/write-math-ba-paper/README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
This example is now in a private repository. If you want to get access, please
|
||||
ask info@martin-thoma.de
|
Loading…
Add table
Add a link
Reference in a new issue