«Плотные» регулярные выражения порождают


25

Вот гипотеза для регулярных выражений:

Для регулярного выражения пусть длина | R | быть количеством символов в нем, игнорируя скобки и операторы. Например | 0 1 | = | ( 0 1 ) | = 2р|р||01|знак равно|(01)*|знак равно2

Гипотеза: если и L ( R ) содержит каждую строку длины | R | или меньше, то L ( R ) = Σ .|р|>1L(р)|р|L(р)знак равноΣ*

То есть, если является «плотным» до R длины «s, то R фактически производит все.L(р)рр

Некоторые вещи, которые могут быть актуальны:

  1. Только небольшая часть необходима для генерации всех строк. Например , в двоичном виде , R = ( 0 1 ) *S будет работать для любого S .ррзнак равно(01)*SS
  2. В какой-то момент в должна быть звезда Клини . Если этого не произойдет, будет пропущена строка размером меньше, чем | R | ,р|р|

Было бы неплохо увидеть доказательство или контрпример. Есть ли какой-то случай, когда я явно пропустил, что это неправильно? Кто-нибудь видел это (или что-то подобное) раньше?


являются и считается или как ? εsymbolsoperations
Ран Г.

@Ran Я считал их символами.
Лукас Кук

Ответы:


34

Ваша гипотеза опровергнута Китом Эллулом, Брайаном Кравцем, Джеффри Шаллитом и Мингвэй Ваном в их статье «Регулярные выражения: новые результаты и открытые проблемы». Пока статья не доступна онлайн, разговор есть.

В статье они определяют меру , который является количеством символов в R , не считая ϵ или . Однако, можно исключить из каждого выражения не создающего пустой язык, а выражение может быть «очищены» , так что число ε содержит самое большее | a l p h ( R ) | (Лемма на странице 10 выступления).|aLпчас(р)|рεε|aLпчас(р)|

На странице 51 для каждого они строят регулярное выражение размера O ( n ) над { 0 , 1 }, которое генерирует все строки размером не более Ω ( 2 n n ) , но не генерирует все строки. Обратите внимание, что «размер» здесь и в вашем смысле, и в их смысле, так как мы используем нотацию big-O. Они также ставят открытый вопрос, чтобы найти наилучшую зависимость между двумя параметрами.N3О(N){0,1}Ω(2NN)


Очень крутой результат, а также довольно удивительный :)
Алекс тен Бринк

Как выглядит это регулярное выражение?
svick

(a+б)(с+d)знак равноaс+бс+ad+бd

@Yuval Очень круто. Спасибо за ссылку!
Лукас Кук

2
@YuvalFilmus Кажется, что статья теперь доступна онлайн.
Антон Трунов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.