Что то подобное сейчас пишу, но на питоне. У меня взвешенный граф состояний и переходов, у переходов есть вероятности. Граф рисуется в редакторе Dia, потом питонический парсер парсит файл этого редактора и строит доменную модель. В модели есть корневой элемент, с которого начинается обход этого графа