[Ответить в тред] Ответить в тред

15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!
30/09/16 - BREAKING NEWS ШОК АБУ ПРОДАЛСЯ МЭЙЛУ (на самом деле нет)


Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 26 | 1 | 7
Назад Вниз Каталог Обновить

Аноним 02/12/16 Птн 01:47:09  141305683  
20.png (9Кб, 466x217)
сегодня опять никто не вкатывается в программирование, поэтому мы будем решать задачу для стажераТМ:
дана регулярка, надо посчитать сколько строк длины Х под нее подходит.
регулярки сегодня имеют следующий формат
regex
: 'a' | 'b'
| '(' regex '*)'
| '(' regex regex ')'
| '(' regex '|' regex ')'
;

Аноним 02/12/16 Птн 01:54:21  141306005
>>141305683 (OP)
Ты ебанутый? 2 ^ X.
Аноним 02/12/16 Птн 01:54:51  141306024
Я даже не знаю, что такое "регулярка", из задания вообще ничего не понял.

Мимо программирую на Visual Basic.
Аноним 02/12/16 Птн 01:57:47  141306159
>>141306024
Двачаю
1с сеньор
Аноним 02/12/16 Птн 01:58:26  141306193
>>141305683 (OP)
что можно сказать про распределение длин строк для регулярки r. рассмотрим сначала частные случаи.
если регулярка константа - она равна только сама себе. в этом случае если Х равно длине константы, то строка одна, иначе ноль. запишем этот факт в виде F(Literal(s))=x^len(s)
это такой формальный степенной ряд, также известный как производящая функция.
Аноним 02/12/16 Птн 02:07:00  141306527
>>141306193
если строка длины Х генерится с помощью Concat(r1,r2), то она может быть получена как строка длины 0, подходящая под r1 и строка длины X подходящая под r2, аналогично 1,X-1 итд.
это дает формулу count(r1r2)(X) = count(r1)(0)count(r2)(X)+count(r1)(1)count(r2)(X-1)..=
что представляет собой X-й коэффициент для произведения рядов для r1 и r2. таким образом получаем F(Concat(x,y))=F(x)*F(y)
Аноним 02/12/16 Птн 02:18:36  141306947
>>141306527
для альтернативы два распределения складываются: строки получаются из левой альтернативы и из правой. то есть F(Alt(x,y))=F(x)+F(y)
Аноним 02/12/16 Птн 02:29:53  141307298
>>141306947
теперь мы можем опередить функцию для замыкания.
т.к. r* = epsilon + r+ r^2+.. то сделанные выше выводы позволяют нам заключить что F(Star(r)) = 1 + F(r) + F(r)^2 + ...
эта геометрическая прогрессия очевидно сворачивается в 1/(1-F(r))
Аноним 02/12/16 Птн 02:50:49  141307940
>>141305683 (OP)
паскалееб/приплюснытый сишник в отставке, кодивший под mfc, но даже я смутно понял опа.

в памяти что-то вспывает на тему "обратная польская запись"

пора спать нахуй
Аноним 02/12/16 Птн 03:02:40  141308288
>>141305683 (OP)
Лучше бы это было так
НОНЧЕ МЫ БУДЕМ ВКАТЫВАТЬСЯ В ПОГРОМИРОНЬЕ, И БУДЕМ ПИЛИТЬ СВОЙ ПАРСЕР\ХУЯРСЕР\АНАЛИЗАТОР ГОВНА
Много уже слышал советов, что лучше свои проекты пилитьдаже если не знаешь чего пилить
Аноним 02/12/16 Птн 03:05:51  141308390
>>141307298
пример.
возьмем регулярное выражение
r=(a )((b(a )) ) и найдем сколько строк длины 10 под него подходит:
F(r)=1/(1-a)
(1/(1-b/(1-a)))=1/(1-a-b)
это соовтетствует ряду 1/1-2x = sum i 2^i x^n
т.е. под данное выражение подходят вообще все строки. впрочем 1/(1-a-b) как бы намекало на (a+b) *

Аноним 02/12/16 Птн 03:06:49  141308428
тред одного семёна
Аноним 02/12/16 Птн 03:08:28  141308497
>>141308428
соврешенно верно.
Аноним 02/12/16 Птн 03:09:31  141308526
Все задачки с хакерренка решаешь
Аноним 02/12/16 Птн 03:10:03  141308541
>>141308526
надо же как-то развлекаться.
Аноним 02/12/16 Птн 03:12:25  141308618
>>141308541
Росскожи о себе, работаешь или учишься? Поглядел, задачки вроде трудные
Аноним 02/12/16 Птн 03:15:07  141308702
>>141308618
а какой смысл простые делать.

работаю в крупной компании, 200к в секунду.
Аноним 02/12/16 Птн 03:25:03  141309015
>>141308390
а теперь почему это решение не будет работать. причин для этого две.
1. производящая функция, которую мы построили в этом решении, считает не количество разных строк, которые принадлежат языку, а количество разных выводов для этой грамматики. если одна строка может быть получена несколькими способами, например a star star или a star a star, то выведенная формула посчитает не то, что от нее требуется. чтобы этого избежать надо привести регулярное выражение к такому виду, в котором принятие любой строки будет происходить однозначно. во-первых, не очевидно почему в принципе должна быть возможна такая нормализация. во-вторых не очевидно как ее получить. например мне кажется что в этом случае стоит смотреть в сторону минимального dfa, просто потому что ничего лучше все равно нет, но никаких гарантий это не дает.
2. вторая проблема состоит в том, что для получения замкнутого выражения k-го коэффициента разложения произвольной рациональной функции потребуется реализовать некоторое подмножество операций для символьных вычислений, которые можно найти в системах компьютерной алгебры, и которые иногда не совсем тривиальны. в частности в этом случае надо будет раскладывать на неприводимые дроби, т.е. факторизовывать многочлены, а это занятие для сильных духом.
2.
Аноним 02/12/16 Птн 03:25:39  141309040
>>141308702
Не спорю, никакого. Просто интересно стало, какая база нужна для их решения,
Аноним 02/12/16 Птн 03:26:08  141309060
>>141309040
да никакой, берешь и решаешь.
Аноним 02/12/16 Птн 03:36:34  141309378
>>141309015
поэтому делать надо так.
парсим регулярку, строим nfa, строим dfa, строим матрицу инцидентности, возводим ее в степень Х
Аноним 02/12/16 Птн 03:44:20  141309629
>>141309378
как известно, для графа возведение матрицы инцидентности в степень n дает в (i,j) количество путей длины n между этими нодами. что для автомата означает количество слов между состояниями. если в качестве начального состояния выбрать, как бы это не было странно, начальное, и просуммировать пути во все конечные, получится нужное число. конечно, с нами может случиться экспоненциальный взрыв, и в dfa закончится память. а если матрицу мы храним как dense, то еще раньше память закончится в матрице.
Аноним 02/12/16 Птн 03:47:43  141309710
А можешь пояснить за клеточные автоматы?
Аноним 02/12/16 Птн 03:49:53  141309767
>>141309710
conway's game of life видел?
Аноним 02/12/16 Птн 03:50:07  141309772
>>141309710
Американская разрабоотка. Стреляешь по неграм, а они не умирают, а попадают в клетку. И все довольны.
Аноним 02/12/16 Птн 03:50:50  141309791
>>141309767
Ну да, я так понимаю что это простейший пример?
Аноним 02/12/16 Птн 03:51:23  141309806
>>141309791
кому и rule 110 простейший пример.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 26 | 1 | 7
Назад Вверх Каталог Обновить

Топ тредов
Избранное