Como desenhar um diagrama de cadeia de Markov tão complicado?

Como desenhar um diagrama de cadeia de Markov tão complicado?

Estou trabalhando em um artigo que precisa de um gráfico como a imagem a seguir. mas parece muito complicado, não tenho ideia de como desenhar facilmente, meu supervisor me disse que o Inkscape ou o xfig podem ser usados, embora eu não esteja familiarizado com essas duas ferramentas. O prazo para envio do meu artigo está chegando, então preciso terminar o rascunho do meu artigo em breve. Agradeço muito sua ajuda com meu desenho.

insira a descrição da imagem aqui

Responder1

Aqui estão alguns truques que podem ajudá-lo a atingir seu objetivo. Use um matrixque seja preenchido automaticamente. Esta é a grande matriz, na qual onde quer que você coloque um |[o]|automaticamente um nó com o conteúdo correto é preenchido. Isso é possível porque TikZ monitora os índices de linhas e colunas, para que possamos usar

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

para preencher o número apropriado.

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

insira a descrição da imagem aqui

Como você pode ver, a maioria dos nós do diagrama estão incluídos sem a necessidade de especificar nenhum número, basta colocar alguns |[o]|aqui e ali.

Para completar sua tarefa, você provavelmente desejará carregar a backgroundsbiblioteca e desenhar as conexões na camada de fundo (e adicionar fill=whiteà definição de circ). Eu nem tentei começar isso, a resposta é apenas mencionar o truque para adicionar automaticamente a maioria dos nós.

Responder2

Tikz pode fazer diagramas tão complicados

Exemplo fácil dos 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}

informação relacionada