グラフ アルゴリズムがどのように機能するかを示すために、Beamer でスライドをいくつか作成したいと思います。
必要なのは、最初にグラフを作成できることです。ノードの外側にラベルを追加し、エッジに重みを付け、エッジの色を変更できるようにします。グラフに必要な機能の例として、以下の画像を添付しましたが、調査した後、これらすべてを実現する方法は見つかりませんでした。
各ステップで、グラフに少し変更を加えたいので (1 つのノードを黒くマークしたり、エッジの色を変更したり、ノードの外側のラベルを変更したり)、1 つの解決策は、コードを別のフレームにコピーすることです。より簡単に、より少ないフレームでプログラムすることは可能ですか?
答え1
label
状態の外側のテキストや、エッジにラベルを付けるノードに使用できます。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}
\tikzset{%
node distance=2cm,
State/.style={%
draw,circle,
thick,
color=black!60!green,
inner sep=0pt,
minimum size=10mm,
fill=blue!40!green,
text=white,
},
StateMark/.style={%
State,
fill=black},
Edge/.style={%
color=blue!40!green,
very thick,
-{Triangle[scale=1.1]},%% Try Latex instead oc Triangle
text=black,
},
EdgeMark/.style={%
Edge,
color=blue!90!green,
text=black,
}
}
\begin{document}
\begin{tikzpicture}
\node[StateMark,label=90:r] (S1) {$\infty$};
\node[StateMark,label=90:s,right=of S1] (S2){0};
\node[State,label=90:t,right=of S2] (S3){2};
\node[State,label=90:x,right=of S3] (S4){6};
%%
\draw[Edge] (S1) -- node[above,pos=0.5]{5} (S2);
\draw[Edge] (S1) to[bend right] node[below,pos=0.5]{5} (S3);%% Default bend = 30 degrees
\draw[EdgeMark] (S2) -- node[above,pos=0.5]{2} (S3);
\draw[EdgeMark] (S2) to[bend left=40] node[above,pos=0.5]{5} (S4);
\draw[Edge] (S3) -- node[above,pos=0.5]{7} (S4);
\end{tikzpicture}
\end{document}
State
コードを簡素化するために、定義を次のように変更することでラベルテキストを入力として与えることができます。
State/.style={%
draw,circle,
thick,
color=black!60!green,
inner sep=0pt,
minimum size=10mm,
fill=blue!40!green,
text=white,
label=90:#1,
},
StateMark/.style={%
State=#1,
fill=black},
そして、州を次のように描きます
\node[StateMark=r] (S1) {$\infty$};
\node[StateMark=s,right=of S1] (S2){0};
\node[State=t,right=of S2] (S3){2};
\node[State=x,right=of S3] (S4){6};