Алгоритм МакНотона-Ямады-Томпсона основан на формализме производных Бржозовски.
Во избежание путаницы введём оператор \(\partial_s(r)\)
производная регулярного выражения \(/r/\) по строке \(s\)
\(\partial_u(r)\) – регулярное выражение
может быть вычислено посимвольно относительно строки \(u\) следующим образом:
Остаётся определить посимвольные производные регулярных выражений
Определим \(\delta(r)\), такую, что если аргумент принимает ε, то она возвращает ε, иначе – \(\varnothing\).
\(\varnothing\) – регулярное выражение, не принимающее никакую входную строку. Конкатенация с \(\varnothing\) с любой стороны очевидно даёт \(\varnothing\).
Тогда можем записать:
Если производная \(\partial_u(r)\) принимает пустую строку, то \(/r/\) принимает \(u\).
Owens S., Reppy J., Turon A. Regular-expression derivatives re-examined //Journal of Functional Programming. – 2009. – Т. 19. – №. 2. – С. 173-190.