¿Cómo dibujar un diagrama de cadena de Markov tan complicado?

¿Cómo dibujar un diagrama de cadena de Markov tan complicado?

Estoy trabajando en un artículo que necesita un gráfico como el de la siguiente imagen. pero parece muy complicado, no tengo idea de cómo dibujarlo fácilmente, mi supervisor me dijo que se pueden usar Inkscape o xfig, aunque no estoy familiarizado con esas dos herramientas. La fecha límite para enviar mi trabajo se acerca pronto, así que necesito terminar mi borrador en breve. Realmente aprecio su ayuda con mi dibujo.

ingrese la descripción de la imagen aquí

Respuesta1

Aquí te dejamos algunos trucos que pueden ayudarte a lograr tu objetivo. Utilice un matrixque se llene automáticamente. Esta es la gran matriz, en la que dondequiera que coloques |[o]|automáticamente se rellena un nodo con el contenido correcto. Esto es posible porque TikZ realiza un seguimiento de los índices de filas y columnas, por lo que podemos usar

execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},

para completar el número correspondiente.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[circ/.style={circle,draw,text width=1.2em,align=center,inner
  sep=1pt,font=\sffamily},
  o/.style={circ,
  execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},
  alias=o-\the\pgfmatrixcurrentcolumn-\the\numexpr17-\pgfmatrixcurrentrow},
  >=latex]
\matrix[matrix of nodes,column sep=3em,row sep=1em,
column 5/.style={nodes={thick}}] (big mat) {
|[o]| & |[o]| & |[o]| & |[o]| &  \\
 & |[o]| & |[o]| & |[o]| &  \\
 & & & & \\
 & & & & \\
 & & & & \\
 & & & & \\
 & |[o]| & |[o]| & |[o]| &  \\
 & |[o]| & |[o]| & |[o]| &  \\
|[o]| & |[o]| & |[o]| & |[o]| &  |[o]|\\
 &  & |[o]| & |[o]| &  |[o]|\\
 &  & |[o]| & |[o]| &  |[o]|\\
 &  & |[o]| & |[o]| &  |[o]|\\
|[o]| & |[o]| &  & |[o]| &  |[o]|\\
 &  &  & |[o]| &  |[o]|\\
|[o,yshift=-2em]| & |[o,yshift=-2em]| & |[o]|  & |[o]| &  |[o]|\\
& |[o,yshift=-2em]| & |[o]|  & |[o]| & \\
$W_t=16$ & $W_t=8$ & $W_t=4$ & $W_t=2$ &  \\
};
\path ([yshift=2.5em,xshift=2em]big mat.south east) 
    node[matrix of nodes,nodes={circ,thick},column sep=1em]
 (small mat) {0 & 0 & 0 & 0 & 0 & 0\\};
\foreach \X in {2,...,8} 
 {\draw[->] (o-5-\X) -- (o-4-\X);}
\foreach \X in {1,...,6} 
{\draw[->] (small mat-1-\X) to[out=90,in=0] (o-4-1.north);} 
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Como ves la mayoría de los nodos del diagrama están sin necesidad de especificar ningún número, sólo pon algunos |[o]|aquí y allá.

Para completar su tarea, probablemente desee cargar la backgroundsbiblioteca y dibujar las conexiones en la capa de fondo (y agregarlas fill=whitea la definición de circ). Ni siquiera intenté comenzar esto, la respuesta es solo mencionar el truco para agregar automáticamente la mayoría de los nodos.

Respuesta2

Tikz puede hacer diagramas tan complicados

Ejemplo sencillo de los documentos:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
  \draw[help lines] (0,0) grid (3,2);


\node[state,initial] (q_0) {$q_0$}; 
\node[state] (q_1) [above right=of q_0] {$q_1$}; 
\node[state] (q_2) [below right=of q_0] {$q_2$};
\node[state,accepting](q_3) [below right=of q_1] {$q_3$};

\path[->] (q_0) edge node {0} (q_1)
                edge node [swap] {1} (q_2)
          (q_1) edge node        {1} (q_3)
                edge [loop above] node        {0} ()
          (q_2) edge              node [swap] {0} (q_3)
                edge [loop below] node {1} (); 
\end{tikzpicture}

\end{document}

información relacionada