2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-25 06:18:05 +02:00

starke Überarbeitung

This commit is contained in:
Martin Thoma 2014-01-12 17:20:36 +01:00
parent 36425299c5
commit 899cd5afe2
9 changed files with 97 additions and 77 deletions

View file

@ -2,18 +2,15 @@
DYCOS (\underline{DY}namic \underline{C}lassification DYCOS (\underline{DY}namic \underline{C}lassification
algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
wurde. Er klassifiziert Knoten, indem mehrfach Random Walks startend wurde. Er klassifiziert einzelne Knoten, indem $r$ Random Walks der Länge $l$,
bei dem zu klassifizierenden Knoten $v$ gemacht werden und die Labels startend bei dem zu klassifizierenden Knoten $v$ gemacht werden. Dabei
der besuchten Knoten gezählt werden. Das Label, das am häufigsten werden die Labels der besuchten Knoten gezählt. Das Label, das am häufigsten
vorgekommen ist, wird als Label für $v$ gewählt. vorgekommen ist, wird als Label für $v$ gewählt.
DYCOS nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass DYCOS nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass
Knoten, die nur wenige Hops von einander entfernt sind, häufig auch Knoten, die nur wenige Hops von einander entfernt sind, häufig auch
ähnlich sind \cite{bhagat}. ähnlich sind \cite{bhagat}. Der DYCOS-Algorithmus nimmt jedoch nicht
einfach den Graphen für dieses Verfahren, sondern erweitert ihn mit
Der DYCOS-Algorithmus nimmt jedoch nicht einfach den Graphen für Hilfe der zur Verfügung stehenden Texte.\\
dieses Verfahren, sondern erweitert ihn mit Hilfe der zur Verfügung
stehenden Texte.
Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann
und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird, und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird,
@ -24,6 +21,12 @@ Knoten, die der Graph zuvor hatte, werden nun \enquote{Strukturknoten}
genannt. genannt.
Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$ Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$
verbunden, wenn $w$ in einem Text von $v$ vorkommt. verbunden, wenn $w$ in einem Text von $v$ vorkommt.
Der DYCOS-Algorithmus betrachtet also die Texte, die einem Knoten
zugeornet 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] \begin{figure}[htp]
\centering \centering
@ -43,10 +46,9 @@ die strukturellen Sprünge und inhaltliche Mehrfachsprünge:
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$ Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$
ein \textbf{struktureller Sprung}. ein \textbf{struktureller Sprung}.
\end{definition} \end{definition}
\goodbreak
Im Gegensatz dazu benutzten inhaltliche Mehrfachsprünge Im Gegensatz dazu benutzten inhaltliche Mehrfachsprünge
tatsächlich die Grapherweiterung: tatsächlich die Grapherweiterung:
\begin{definition} \begin{definition}
Sei $G_t = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der 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. um die Wortknoten $W_{t}$ erweiterte Graph.
@ -60,46 +62,13 @@ tatsächlich die Grapherweiterung:
Jeder inhaltliche Mehrfachsprung beginnt und endet also in einem Strukturknoten, Jeder inhaltliche Mehrfachsprung beginnt und endet also in einem Strukturknoten,
springt über einen Wortknoten und ist ein Pfad der Länge~2. springt über einen Wortknoten und ist ein Pfad der Länge~2.
Bevor der DYCOS-Algorithmus im Detail erklärt wird, sei noch auf eine Ob in einem Sprung der Random Walks ein struktureller Sprung oder
Besonderheit hingewiesen: ein inhaltlicher Mehrfachsprung gemacht wird, wird jedes mal zufällig
Der DYCOS-Algorithmus betrachtet die Texte, die einem Knoten neu entschiden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
zugeornet sind, als eine Multimenge von Wörtern. Das heißt, zum einen gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird eine struktureller
wird nicht auf die Reihenfolge der Wörter geachtet, zum anderen wird Sprung durchgefürt und mit einer Wahrscheinlichkeit
bei Texten eines Knotens nicht zwischen verschiedenen von $(1-p_S)$ ein modifizierter inhaltlicher Mehrfachsprung, wie er in
Texten unterschieden. Jedoch wird die Anzahl der Vorkommen \cref{sec:sprungtypen} erklärt wird, gemacht. Dieser
jedes Wortes berücksichtigt.
\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 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 \enquote{Wort} die Anzahl der Vorkommen von
\enquote{Wort} 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.
\item An einigen Stellen macht ein assoziatives Array, auch
\enquote{dictionary} oder \enquote{map} genannt, sinn.
Zustätzlich ist es nützlich, wenn diese Datenstruktur für
unbekannte Schlüssel keinen Fehler ausgibt, sondern für diese
Schlüssel den Wert 0 annimmt. Eine solche Datenstruktur
wird in Python \texttt{defaultdict} genannt und ich werde
im Folgenden diese Benennung beibehalten.
\end{itemize}
\input{Sprungtypen}
\input{Vokabularbestimmung}
\subsection{Der Algorithmus}
Der DYCOS-Algorithmus verwendet nun für jeden Knoten der gelabelt wird
$r$ Random Walks der Länge $l$, wobei mit einer Wahrscheinlichkeit
$p_S$ ein struktureller Sprung und mit einer Wahrscheinlichkeit
von $(1-p_S)$ ein inhaltlicher Mehrfachsprung gemacht wird. Dieser
Parameter gibt an, wie wichtig die Struktur des Graphen im Verhältnis Parameter gibt an, wie wichtig die Struktur des Graphen im Verhältnis
zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des
@ -108,14 +77,12 @@ Graphen.
Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt
werden, muss es aber nicht. werden, muss es aber nicht.
In \cref{alg:DYCOS} wurde der DYCOS-Algorithmus als In \cref{alg:DYCOS} wird der DYCOS-Algorithmus als
Pseudocode vorgestellt. Dafür werden die beiden Hilfsfunktionen Pseudocode vorgestellt.
für den strukturellen Sprung sowie den inhaltlichen Mehrfachsprung
benötigt.
\begin{algorithm} \begin{algorithm}
\begin{algorithmic}[1] \begin{algorithmic}[1]
\Require \\$G_t = (V_t, E_t, V_{L,t})$ (Netzwerk),\\ \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),\\ $r$ (Anzahl der Random Walks),\\
$l$ (Länge eines Random Walks),\\ $l$ (Länge eines Random Walks),\\
$p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs),\\ $p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs),\\
@ -154,3 +121,29 @@ benötigt.
\caption{DYCOS-Algorithmus} \caption{DYCOS-Algorithmus}
\label{alg:DYCOS} \label{alg:DYCOS}
\end{algorithm} \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 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 \enquote{Wort} die Anzahl der Vorkommen von
\enquote{Wort} 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.
\item An einigen Stellen macht ein assoziatives Array, auch
\enquote{dictionary} oder \enquote{map} genannt, sinn.
Zustätzlich ist es nützlich, wenn diese Datenstruktur für
unbekannte Schlüssel keinen Fehler ausgibt, sondern für diese
Schlüssel den Wert 0 annimmt. Eine solche Datenstruktur
wird in Python \texttt{defaultdict} genannt und ich werde
im Folgenden diese Benennung beibehalten.
\end{itemize}
\input{Sprungtypen}
\input{Vokabularbestimmung}

Binary file not shown.

View file

@ -28,6 +28,7 @@
\usepackage{tikz} \usepackage{tikz}
\usepackage{enumitem} \usepackage{enumitem}
\usepackage[german,nameinlink]{cleveref} \usepackage[german,nameinlink]{cleveref}
\usepackage{braket}
\allowdisplaybreaks \allowdisplaybreaks
\usetikzlibrary{backgrounds} \usetikzlibrary{backgrounds}
\usepackage{mystyle} \usepackage{mystyle}

View file

@ -4,7 +4,7 @@ vorgeschlagen, die es allerdings noch zu untersuchen gilt.
\subsection{Schwächen von DYCOS} \subsection{Schwächen von DYCOS}
\subsubsection{Anzahl der Labels} \subsubsection{Anzahl der Labels}
So, wie er vorgestellt wurde, können nur Graphen bearbeitet werden, So, wie der DYCOS-Algorithmus vorgestellt wurde, können nur Graphen bearbeitet werden,
deren Knoten höchstens ein Label haben. In vielen Fällen, wie z.~B. deren Knoten höchstens ein Label haben. In vielen Fällen, wie z.~B.
Wikipedia mit Kategorien als Labels haben Knoten jedoch viele Labels. Wikipedia mit Kategorien als Labels haben Knoten jedoch viele Labels.
@ -24,18 +24,18 @@ zählen.
\subsubsection{Überanpassung und Reklassifizierung} \subsubsection{Überanpassung und Reklassifizierung}
Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche
Knoten der Klassifizierungsalgorithmus angewand werden soll. Jedoch Knoten der Klassifizierungsalgorithmus angewendet werden soll. Jedoch
ist die Reihenfolge der Klassifizierung relevant. Dazu folgendes ist die Reihenfolge der Klassifizierung relevant. Dazu folgendes
minimale Beispiel: Minimalbeispiel:
Gegeben sei ein dynamischer Graph ohne textuelle Inhalte. Zum Zeitpunkt Gegeben sei ein dynamischer Graph ohne textuelle Inhalte. Zum Zeitpunkt
$t=1$ habe dieser Graph genau einen Knoten $v_1$ und $v_1$ sei $t=1$ habe dieser Graph genau einen Knoten $v_1$ und $v_1$ sei
mit dem Label $A$ beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht-gelabelter mit dem Label $A$ beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht-gelabelter
Knoten $v_2$ sowie die Kante $(v_1, v_2)$ hinzu.\\ Knoten $v_2$ sowie die Kante $(v_2, v_1)$ hinzu.\\
Nun wird der DYCOS-Algorithmus auf diesen Knoten angewendet und Nun wird der DYCOS-Algorithmus auf diesen Knoten angewendet und
$v_2$ mit $A$ gelabelt.\\ $v_2$ mit $A$ gelabelt.\\
Zum Zeitpunkt $t=3$ komme ein Knoten $v_3$, der mit $B$ gelabelt ist, Zum Zeitpunkt $t=3$ komme ein Knoten $v_3$, der mit $B$ gelabelt ist,
und die Kante $(v_3, v_2)$ hinzu. und die Kante $(v_2, v_3)$ hinzu.
\begin{figure}[ht] \begin{figure}[ht]
\centering \centering
@ -52,6 +52,10 @@ und die Kante $(v_3, v_2)$ hinzu.
\input{figures/graph-t3.tex} \input{figures/graph-t3.tex}
\label{fig:graph-t3} \label{fig:graph-t3}
}% }%
\subfloat[$t=4$]{
\input{figures/graph-t4.tex}
\label{fig:graph-t4}
}%
\label{Formen} \label{Formen}
\caption{Minimalbeispiel für den Einfluss früherer DYCOS-Anwendungen} \caption{Minimalbeispiel für den Einfluss früherer DYCOS-Anwendungen}
\end{figure} \end{figure}
@ -66,7 +70,7 @@ Knoten einfügt:
Wird zum Zeitpunkt $t=4$ ein ungelabelter Knoten $v_4$ und die Kanten Wird zum Zeitpunkt $t=4$ ein ungelabelter Knoten $v_4$ und die Kanten
$(v_1, v_4)$, $(v_2, v_4)$, $(v_3, v_4)$ hinzugefügt, so ist die $(v_1, v_4)$, $(v_2, v_4)$, $(v_3, v_4)$ hinzugefügt, so ist die
Wahrscheinlichkeit, dass $v_4$ mit $A$ gelabelt wird bei $75\%$. Wahrscheinlichkeit, dass $v_4$ mit $A$ gelabelt wird bei $\frac{2}{3}$.
Werden die als ungelabelten Knoten jedoch erst jetzt und alle gemeinsam Werden die als ungelabelten Knoten jedoch erst jetzt und alle gemeinsam
gelabelt, so ist die Wahrscheinlichkeit für $A$ als Label bei nur $50\%$. gelabelt, so ist die Wahrscheinlichkeit für $A$ als Label bei nur $50\%$.
Bei dem DYCOS-Algorithmus findet also eine Überanpassung and vergangene Bei dem DYCOS-Algorithmus findet also eine Überanpassung and vergangene
@ -78,16 +82,17 @@ könnten eine Lebenszeit bekommen (TTL, Time to Live). Ist diese
abgelaufen, wird der DYCOS-Algorithmus erneut auf den Knoten angewendet. abgelaufen, wird der DYCOS-Algorithmus erneut auf den Knoten angewendet.
\subsection{Schwächen des Papers} \subsection{Schwächen des Papers}
Die Ergebnise der experimentelle Analyse können aus folgenden Gründen In \cite{aggarwal2011} wurde eine experimentelle Analyse mithilfe
des DBLP-Datensatzes\footnote{http://dblp.uni-trier.de/} und des
CORA-Datensatzes\footnote{\href{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}} durchgeführt.
Die Ergebnise dieser Analyse können aus folgenden Gründen
nicht überprüft werden: nicht überprüft werden:
\begin{itemize} \begin{itemize}
\item DYCOS verwendet als Vokabular die Top-$m$-Wörter mit dem \item Der Parameter $a \in \mathbb{N}$, der die Anzahl der ausgehenden Kanten
höchsten Gini-Index aus einer Sample-Menge von Texten, die aller Wortknoten beschränkt, wird erst mit der Experimentellen
wie in \cite{Vitter} beschrieben Analyse auf S.~362 eingeführt.
erzeugt wird. Allerdings wird niemals erklärt, wie $m \in \mathbb{N}$ Es ist nicht klar, wie entschieden wird welche Kanten
bestimmt wird. Es ist nicht einmal klar, ob $m$ für den gespeichert werden und welche nicht.
Algorithmus als konstant anzusehen ist oder ob $m$ sich
bei der Vokabularbestimmung ändern könnte.
\item DYCOS beschränkt sich bei inhaltlichen Mehrfachsprüngen \item DYCOS beschränkt sich bei inhaltlichen Mehrfachsprüngen
auf die Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten auf die Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten
gemessen mit der Aggregatanalyse. Auch hier wird nicht erklärt wie gemessen mit der Aggregatanalyse. Auch hier wird nicht erklärt wie
@ -95,10 +100,10 @@ nicht überprüft werden:
wurde. Allerings ist hier wenigstens klar, dass $q$ für wurde. Allerings ist hier wenigstens klar, dass $q$ für
den DYCOS-Algorithmus konstant ist. Für die Experimentelle den DYCOS-Algorithmus konstant ist. Für die Experimentelle
Analyse wurde zwar erwähnt, dass $q$ ein Parameter des Analyse wurde zwar erwähnt, dass $q$ ein Parameter des
Algorithmus ist\cite[S. 362]{aggarwal2011}, aber nicht welcher Algorithmus ist \cite[S. 362]{aggarwal2011}, aber nicht welcher
Wert in der Analyse des DBLP-Datensatzes genutzt wurde. Wert in der Analyse des DBLP-Datensatzes genutzt wurde.
Für den CORA-Datensatz wurde $q=10$ gewählt\cite[S. 364]{aggarwal2011}. Für den CORA-Datensatz wurde $q=10$ gewählt\cite[S. 364]{aggarwal2011}.
\item Für die Analyse der CORA-Datensatzes\footnote{inzwischen unter \href{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}} analysiert. \item Für die Analyse der CORA-Datensatzes analysiert.
Dieser beinhaltet Forschungsarbeiten, wobei die Dieser beinhaltet Forschungsarbeiten, wobei die
Forschungsgebiete die in einen Baum mit 73 Blättern Forschungsgebiete die in einen Baum mit 73 Blättern
eingeordnet wurden. Aus diesen 73 Blättern wurden 5 Klassen eingeordnet wurden. Aus diesen 73 Blättern wurden 5 Klassen

View file

@ -1,4 +1,4 @@
\subsection{Sprungtypen} \subsection{Sprungtypen}\label{sec:sprungtypen}
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung Die beiden bereits definierten Sprungtypen, der strukturelle Sprung
sowie der inhaltliche Mehrfachsprung werden im folgenden erklärt. sowie der inhaltliche Mehrfachsprung werden im folgenden erklärt.
\goodbreak \goodbreak

View file

@ -3,7 +3,13 @@ Da die größe des Vokabulars die Datenmenge signifikant beeinflusst,
liegt es in unserem Interesse so wenig Wörter wie möglich ins liegt es in unserem Interesse so wenig Wörter wie möglich ins
Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse, Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse,
die in fast allen Texten vorkommen, wie im Deutschen z.~B. die in fast allen Texten vorkommen, wie im Deutschen z.~B.
\enquote{und}, \enquote{mit} und die Pronomen. \enquote{und}, \enquote{mit} und die Pronomen. Es ist wünschenswert
Wörter zu wählen, die die Texte möglichst start 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, 20}$ auf die Klassifikationsgüte
untersucht und festegestellt, dass für $m \in \Set{5,10}$ die Klassifikationsgüte
sehr ähnlich ist.
Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen. oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.

View file

@ -3,6 +3,6 @@
\begin{tikzpicture}[scale=1,framed] \begin{tikzpicture}[scale=1,framed]
\node (a)[vertex,label=$A$] at (0,0) {$v_1$}; \node (a)[vertex,label=$A$] at (0,0) {$v_1$};
\node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$}; \node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$};
\draw[->] (a) -- (b); \draw[->] (b) -- (a);
\node (struktur)[label={[label distance=-0.2cm]0:$t=2$}] at (-2,1) {}; \node (struktur)[label={[label distance=-0.2cm]0:$t=2$}] at (-2,1) {};
\end{tikzpicture} \end{tikzpicture}

View file

@ -4,7 +4,7 @@
\node (a)[vertex,label=$A$] at (0,0) {$v_1$}; \node (a)[vertex,label=$A$] at (0,0) {$v_1$};
\node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$}; \node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$};
\node (c)[vertex,label=$B$] at (2,0) {$v_3$}; \node (c)[vertex,label=$B$] at (2,0) {$v_3$};
\draw[->] (a) -- (b); \draw[->] (b) -- (a);
\draw[->] (c) -- (b); \draw[->] (b) -- (c);
\node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {}; \node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {};
\end{tikzpicture} \end{tikzpicture}

View 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}