2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

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



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Проверка слова на маску.
Сообщение11.01.2011, 16:42 
Заслуженный участник


12/08/10
1677
Задача такая(если это программирование перенесите тему туда).
Есть слово W из маленьких английских букв длинны m, и слово S из n больших английских букв.
Надо проверить можно ли получить W из S, заменив большие буквы словами из маленьких букв маленькими.
Одинаковые буквы должны заменяться одинаковыми словами.
Пример:
S=AA
слова aa,abab,cdccdc -представимы, ab,aba,acacac -нет.
S=ABA
Любое слово представимо если A - пустое.
S=ABBA
abbbab,cc -представимы, aba,abbaab,bbaababa -нет.

Лучше перебора по длинам заменяющих слов не придумывается. Как это сделать быстрее?
n<10..15 m<1000..5000

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 18:04 
Заслуженный участник


26/07/09
1559
Алматы
Может быть попробовать что-нибудь вроде Z-функции?

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 19:05 
Заслуженный участник


09/09/10
3729
Это сильно смахивает на pattern-matching.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 19:48 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Я вот тут недавно читал Yacc is dead, мб тут тоже можно этот метод прикрутить?
Например, если мы хотим сматчить $ABCABC$ и прочитали первую букву $x$, то оставшееся должно сматчиться с $A'BCxA'BC$ либо (если $A$ пустое) с $B'CxB'C$, либо с $C'xC'$

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 19:55 
Заслуженный участник


04/05/09
4587
Xaositect в сообщении #398230 писал(а):
Например, если мы хотим сматчить $ABCABС$
Первая мысль - если хоть один символ в маске встречается только один раз, то эта маска подходит к любому слову.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 19:58 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Ой, у меня первая C правильная, а вторая почему-то русская.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 20:07 
Заслуженный участник


12/08/10
1677
В вашем алгоритме на каждом шаге варианты множатся. $2^m$ - больно много.

А если завести массив размера $O(m^2 n^2)$ где $a[i,j,k,l]$- можно ли получить слово $W[i..j]$ из маски $S[k..l]$, только он очень большой и его считать долго.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 20:26 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Null в сообщении #398243 писал(а):
В вашем алгоритме на каждом шаге варианты множатся. $2^m$ - больно много.
В конкретно этом случае не множатся, если еще немного подумать. Там все мои три варианта на самом деле являются частными случаями первого. Но вполне возможно, что иногда будут, да.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 20:28 
Заслуженный участник


12/08/10
1677
Xaositect в сообщении #398260 писал(а):
Null в сообщении #398243 писал(а):
В вашем алгоритме на каждом шаге варианты множатся. $2^m$ - больно много.
В конкретно этом случае не множатся, если еще немного подумать. Там все мои три варианта на самом деле являются частными случаями первого. Но вполне возможно, что иногда будут, да.


Это потому что ваша маска эквивалентна $AA$ или я чего-то не понял?

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 20:29 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Null в сообщении #398264 писал(а):
Xaositect в сообщении #398260 писал(а):
Null в сообщении #398243 писал(а):
В вашем алгоритме на каждом шаге варианты множатся. $2^m$ - больно много.
В конкретно этом случае не множатся, если еще немного подумать. Там все мои три варианта на самом деле являются частными случаями первого. Но вполне возможно, что иногда будут, да.


Это потому что ваша маска эквивалентна $AA$ или я чего-то не понял?
Да, Вы правы, предложенный мной подход тут не сработает.

-- Вт янв 11, 2011 20:58:21 --

Null в сообщении #398243 писал(а):
А если завести массив размера $O(m^2 n^2)$ где $a[i,j,k,l]$- можно ли получить слово $W[i..j]$ из маски $S[k..l]$, только он очень большой и его считать долго.
Тут кстати все равно перебор нужен, так как если добавляется буква, которая уже была, то надо знать не только, что слово можно получить, но и как его можно получить.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 21:05 
Заслуженный участник


27/04/09
28128

(Оффтоп)

Joker_vD в сообщении #398202 писал(а):
Это сильно смахивает на pattern-matching.
Мне тоже так кажется. А там есть готовые решения?

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 21:07 
Заслуженный участник


09/09/10
3729
А давайте строить ДКА для строчки из больших букв, и скармливать ему строчку из маленьких?

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 21:15 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Так не конечный же автомат будет.

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 21:30 
Заслуженный участник


09/09/10
3729
А почему не будет-то?

 Профиль  
                  
 
 Re: Проверка слова на маску.
Сообщение11.01.2011, 21:35 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Joker_vD в сообщении #398324 писал(а):
А почему не будет-то?
Так ведь даже $\{ww|w\in A^*\}$ - нерегулярный язык, а дальше - больше. $\{www|w\in A^*\}$ даже не контекстно-свободный.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group