Опубликован: 11.02.2005 | Уровень: специалист | Доступ: платный
Лекция 12:

Переход от данных к конечному автомату

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >

Построение графа автомата, достаточного для решения задачи, но не обязательно оптимального, можно реализовать, используя следующее рекуррентное описание алгоритма.

  1. Если множество слов пустое, то граф задается структурой:


    Вершина, содержащая \n, объявляется выходной для графа в целом (есть горизонтальная исходящая из нее дуга, которая никуда не ведет). Она обозначается далее E. На данном этапе входной вершиной является та, которая пропускает все символы (по определению у нее нет вертикальной исходящей дуги).

  2. Пусть граф G определяет автомат, распознающий некоторое множество слов (\alpha _{1}, \alpha _{2}, \dots , \alpha _{n}), и пусть есть слово \alpha _{k+1}, которое нужно добавить к этому множеству. Добавление слова достигается с помощью следующих шагов:

    1. по слову \alpha _{k+1} \equiv  \alpha _{1}\dots \alpha _{m} строится список вида


      который рассматривается как заготовка для пополнения графа G

    2. если \alpha _{k+1} есть собственная часть какого-либо слова, то склейка заготовки с графом сводится к добавлению пометки k+1 у соответствующей горизонтальной дуги; в противном случае перейти к следующим пунктам;
    3. для каждого слова \alpha из \{ \alpha _{1},\alpha _{2},\dots ,\alpha _{k}\} ищутся такие \beta и \gamma \ne \varepsilon, \delta и \xi, что \alpha =\beta \gamma \delta, \alpha _{k+1}=\gamma \xi и (\delta =x\delta '&\xi =y\xi ' \Rightarrow  x\ne y). В графе G есть фрагменты, отвечающие за распознавание \gamma. Следовательно, надо склеить заготовку с каждым из таких фрагментов, т. е. вставить вертикальную дугу от последнего вертикального преемника вершины x x1,...,i к остатку заготовки:


    4. повторять третий пункт, пока можно найти соответствующие \beta, \gamma, \delta и \varepsilon.
  3. Последовательно выполнить процесс, описанный в пункте 2, для всех слов из набора.

Улучшение данного алгоритма возможно, в частности, за счет стандартного приема оптимизации задач, обрабатывающих сложно структурированную взаимосвязанную информацию. Этот прием состоит в упорядочении данных. Слова можно расположить таким образом, что будет минимизировано число проверок в каждом (вертикальном) состоянии автомата. Другая идея улучшения алгоритма — в некоторых случаях, когда линейные участки распознавания оказываются относительно независимыми, вычислить локально оптимальные последовательности и распознавать сразу их вхождения. Такое агрегирование данных также является стандартным приемом. Наконец, чуть-чуть повысит эффективность размножение выходной вершины графа. Подобные модификации алгоритма предлагается выполнить самостоятельно.

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Илья Ардов
Илья Ардов

Добрый день!

Я записан на программу. Куда высылать договор и диплом?

Феофан Миков
Феофан Миков
Россия, Томск, ТПУ, 2013
Виталий Лусников
Виталий Лусников
Россия, Киров, ВятГГУ, 2001