그래프 알고리즘 표시

그래프 알고리즘 표시

그래프 알고리즘이 작동하는 방식을 보여주기 위해 Beamer에 대한 슬라이드 몇 개를 만들고 싶습니다.

나에게 필요한 것은 처음에 그래프를 가질 수 있는 것입니다. 노드 외부에 노드에 대한 추가 레이블을 가질 수 있고 가장자리에 가중치를 부여하고 가장자리의 색상을 변경할 수 있습니다. 그래프에 포함할 기능에 대한 예를 들어 아래 그림을 첨부했지만 몇 가지 조사를 한 후에도 해당 항목을 모두 포함할 수 있는 방법을 찾지 못했습니다.

모든 단계에서 그래프를 약간 변경하고 싶습니다. 하나의 노드를 검정색으로 표시하고, 가장자리의 색상을 변경하고, 노드 외부 레이블을 변경하려면 한 가지 해결책은 코드를 다른 프레임에 복사하는 것입니다. 더 쉽고 더 적은 프레임에서 프로그래밍할 수 있도록 프로그래밍할 수 있나요?

이것은 내 그래프가 어떻게 보이길 원하는지에 대한 예입니다.

답변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};

관련 정보