Здравствуйте, Acid the Programmer, Вы писали:
ATP>Зацикливание происходит и в такой ситуации:
ATP>автомат: ((first|third)*|second)*
ATP>строка: firstsecondfirstsecondttt
на картинке пометки дуг не хватает

а вообще алгоритм построения НКА по рег выражению см. ахо, сети, ульман: построение компиляторов (если память не изменяет), твой близко не совсем похож на то, что должнО быть