I would create using tikz package this Markov chain but I encountered many problems. Who can post the right code to create the follow Markov chain?

enter image description here

  • 3
    I can! What are your problems? What have you tried? Where have you failed? – Qrrbrbirlbel Jan 7 '13 at 1:14
  • Usually all the nodes have to be connect among them...but in this case the last node at the right is not connected to anyone!! – Mazzy Jan 7 '13 at 1:15
  • 2
    There are lots of automata drawing questions on the site. Start here: Which package can be used to draw automata?. If you already have some code, post it (complete document, not a fragment) and then we can help you. – Alan Munn Jan 7 '13 at 1:19
  • 1
    Without a MWE one can hardly guess what’s wrong. It seems like you have placed a node between 2 and g but without any content or draw. You probably meant to use a coordinate. – Qrrbrbirlbel Jan 7 '13 at 1:19
  • 2
    To any down voters: we regularly get these type of draw-this-for-me question on the site; one down vote is enough. Please see meta.tex.stackexchange.com/questions/2879/… for further discussion – cmhughes Jan 7 '13 at 1:56
up vote 11 down vote accepted

The positioning library

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}
\node[state]                               (0) {0};
\node[state,right=of 0]                    (1) {1};
\node[state,right=of 1]                    (2) {2};
\coordinate[draw=none,right=of 2]          (2-g);
\node[state,right=of {2-g},text depth=0pt] (g) {g};

\draw[
    >=latex,
%   every node/.style={above,midway},% either
    auto=right,                      % or
    loop above/.style={out=75,in=105,loop},
    every loop,
    ]
     (g)   edge[loop above] node {$p_{gg}$}   (g)
           edge             node {$p_{gg-1}$} (2-g)
     (2-g) to               node {$p_{32}$}   (2)
           edge[loop above] node {$p_{22}$}   (2)
     (2)   edge             node {$p_{21}$}   (1)
     (1)   edge[loop above] node {$p_{11}$}   (1)
           edge             node {$p_{10}$}   (0)
     (0)   edge[loop above] node {$p_{00}$}   (0);
\end{tikzpicture}
\end{document}

Output

enter image description here


Replacing the \coordinate line with

\node[draw=none,right=of 2]           (2-g) {text};

you get:

enter image description here

The chains library

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{automata,chains}
\begin{document}
\begin{tikzpicture}[start chain=going right]
\node[state, on chain]                 (0) {0};
\node[state, on chain]                 (1) {1};
\node[state, on chain]                 (2) {2};
\node[on chain]                   (2-g) {text};
\node[state, on chain, text depth=0pt] (g) {g};

% The \draw path is like the one above.
\end{tikzpicture}
\end{document}

Output

enter image description here

  • Oh thanks you so much...you are so nice!!!THanks for having dedicate your free time to me!!! – Mazzy Jan 7 '13 at 1:42
  • 2
    @Mazzy while you're thanking people, you might want to check your other questions and accept some more of the answers that helped you. – Alan Munn Jan 7 '13 at 1:45
  • is It possible to add some text among the two state 2 and g. I would add ... among those two states. I tried using \text{...} but It gave me error – Mazzy Jan 7 '13 at 1:54
  • @AlanMunn If some questions are not accepted, this means they wasn't right for me...Not all the ans can be useful – Mazzy Jan 7 '13 at 1:55
  • @Mazzy \text is, unless otherwise defined, a math-mode macro defined by amstext that allows to pick up the text font outside the current math mode. You could place your usual \node, just like the others, replacing the \coordinate with \node[right=of 2] (2-g) {<text>};. See my updated answer. – Qrrbrbirlbel Jan 7 '13 at 1:59

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.