Вот гипотеза для регулярных выражений:
Для регулярного выражения пусть длина | R | быть количеством символов в нем, игнорируя скобки и операторы. Например | 0 ∪ 1 | = | ( 0 ∪ 1 ) ∗ | = 2
Гипотеза: если и L ( R ) содержит каждую строку длины | R | или меньше, то L ( R ) = Σ ∗ .
То есть, если является «плотным» до R длины «s, то R фактически производит все.
Некоторые вещи, которые могут быть актуальны:
- Только небольшая часть необходима для генерации всех строк. Например , в двоичном виде , R = ( 0 ∪ 1 ) * ∪ S будет работать для любого S .
- В какой-то момент в должна быть звезда Клини . Если этого не произойдет, будет пропущена строка размером меньше, чем | R | ,
Было бы неплохо увидеть доказательство или контрпример. Есть ли какой-то случай, когда я явно пропустил, что это неправильно? Кто-нибудь видел это (или что-то подобное) раньше?
symbols
operations
Ответы:
Ваша гипотеза опровергнута Китом Эллулом, Брайаном Кравцем, Джеффри Шаллитом и Мингвэй Ваном в их статье «Регулярные выражения: новые результаты и открытые проблемы». Пока статья не доступна онлайн, разговор есть.
В статье они определяют меру , который является количеством символов в R , не считая ϵ или ∅ . Однако, ∅ можно исключить из каждого выражения не создающего пустой язык, а выражение может быть «очищены» , так что число ε содержит самое большее | a l p h ( R ) | (Лемма на странице 10 выступления).| a l p h (R) | р ε ∅ ∅ ε | a l p h (R) |
На странице 51 для каждого они строят регулярное выражение размера O ( n ) над { 0 , 1 }, которое генерирует все строки размером не более Ω ( 2 n n ) , но не генерирует все строки. Обратите внимание, что «размер» здесь и в вашем смысле, и в их смысле, так как мы используем нотацию big-O. Они также ставят открытый вопрос, чтобы найти наилучшую зависимость между двумя параметрами.n ≥ 3 O ( n ) { 0 , 1 } Ω ( 2Nн )
источник