This is probably not what is desired but exploits DiscreteMarkovProcess
mat = {{0, 0.5`, 0.5`, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0,
0.5`, 0.5`, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0.5`,
0.5`, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0.8`, 0.2`,
0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6`, 0.4`, 0, 0,
0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6`, 0.4`, 0, 0}, {0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2`, 0.8`}, {0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1}};
labels = {1 -> "root", 2 -> "A", 3 -> "Not A", 4 -> "A-F",
5 -> "A-Not F", 6 -> "Not A-F", 7 -> "Not A-Not F", 8 -> "A-F-S",
9 -> "A-F-Not S", 10 -> "A-Not F-S", 11 -> "A-Not F-Not S",
12 -> "Not A-F-S", 13 -> "Not A-F-Not S", 14 -> "Not A-Not F-S",
15 -> "Not A-Not F-Not S"};
dm = DiscreteMarkovProcess[1, mat];
sd = StationaryDistribution[dm]
Graph[dm]
prob[j_] :=
Row[{"Probability(", j /. labels, "):",
Probability[x[Length[StringSplit[j /. labels, "-"]]] == j,
x \[Distributed] dm]}]
Column[prob /@ Range[2, 15]]
