2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Количество упорядоченных вхождений подпоследовательности
Сообщение16.11.2016, 00:45 
Аватара пользователя


15/11/16
4
Добрый день, уважаемые знатоки!

В ходе своих исследований, столкнулся с задачей подсчета количества упорядоченных непересекающихся вхождений подпоследовательности в последовательность, далее для краткости просто количество вхождений подпоследовательности.
Под "упорядоченным" подразумевается что порядок элементов в последовательности будет идентичен порядку элементов в подпоследовательности.
Под "непересекающимся" подразумевается что один элемент может быть использован только один раз при подсчете.

Например, пусть дана последовательность: 1, 2, 1, 2, 1, 2, 3, 1, 2, 1.
Необходимо подсчитать количество вхождений подпоследовательности: 1, 2, 1.
Ответ: количество вхождений равно 2, т.к. 3й элемент относится к первой найденной подпоследовательности.

Написать алгоритм для подобного дела не трудно, по сути линейный перебор и подсчет.
Однако, мне необходимо понять - возможно ли это выразить математической функцией.

Глобально, пытаюсь адаптировать теорию последовательных шаблонов под новую область, где требуется расчет точной поддержки на уровне одной последовательности, а не просто факт поддерживается/нет.
Насколько нашел, в теории ассоциативных правил и последовательных шаблонов функция для поддержки просто указывается как sup(...), либо как некоторое значение, а дальше расшифровываются правила вычисления поддержки.
Но мне это не нравится, хочется описать всё одной функцией, чтобы удобнее было рассчитывать оптимизацию, хотя возможно я и заблуждаюсь, и оно мне не надо.

Буду благодарен любым мыслям в данном направлении!

 Профиль  
                  
 
 Re: Количество упорядоченных вхождений подпоследовательности
Сообщение16.11.2016, 00:54 
Заслуженный участник
Аватара пользователя


18/01/13
12044
Казань
Хм... а что вы понимаете под "функцией"? В особенности "математической"? Какую-то формулу? И что в нее может входить? Многочлены? Логарифмы? Или, не дай бог, синусы?

 Профиль  
                  
 
 Re: Количество упорядоченных вхождений подпоследовательности
Сообщение16.11.2016, 01:12 
Аватара пользователя


15/11/16
4
provincialka в сообщении #1169350 писал(а):
Хм... а что вы понимаете под "функцией"? В особенности "математической"? Какую-то формулу? И что в нее может входить? Многочлены? Логарифмы? Или, не дай бог, синусы?


Где то могу ошибаться с терминами (с математикой только недавно начал дружить плотнее), но вроде это будет и правильным называть функцией.
Вот что именно будет входить для такого подсчета, пока сам пытаюсь понять.

Глобально, мне потребуется составить целевую функцию для оптимизации, где будет использоваться в том числе и количество вхождений.
Насколько понял, целевая функция в принципе может описываться и в т.ч. с использованием предописанных функций типа sup(...), как в теории шаблонов, но с другой стороны, зачем разбивать описание, если получится всё соединить.

 Профиль  
                  
 
 Re: Количество упорядоченных вхождений подпоследовательности
Сообщение16.11.2016, 01:19 
Заслуженный участник


27/04/09
28128
Здесь очень сильно стоит ожидать, что в лучшем случае выражение для функции будет точной записью алгоритма. Как я понимаю, люди обычно ожидают, что «функция» — это нечто более быстро считающееся, чем «алгоритм». На самом же деле, когда до таких мыслей доходит, надо просто разбираться, где можно и как нужно оптимизировать имеющийся код — или писать этот код, если его ещё нет. (Ну или ничего не делать, и просто не думать о ерунде.)

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

 Профиль  
                  
 
 Re: Количество упорядоченных вхождений подпоследовательности
Сообщение16.11.2016, 01:27 
Аватара пользователя


15/11/16
4
arseniiv в сообщении #1169353 писал(а):
На самом же деле, когда до таких мыслей доходит, надо просто разбираться, где можно и как нужно оптимизировать имеющийся код — или писать этот код, если его ещё нет. (Ну или ничего не делать, и просто не думать о ерунде.)


Выше вот немного уточнил, зачем мне это - для формальной постановки задачи с целевой функцией.
Родилась мысль, возможно ли полностью обойтись без пояснений для функции, включив в неё сразу всё необходимое.
UPD: Алгоритмы посмотрю, спасибо за мысль, существует и правда много интересных (даже хотя бы здесь описанных https://habrahabr.ru/post/111449/, http://algolist.manual.ru/search/esearch/), может чего придумается.

 Профиль  
                  
 
 Re: Количество упорядоченных вхождений подпоследовательности
Сообщение16.11.2016, 01:52 
Заслуженный участник


27/04/09
28128
Nikita_Danilov в сообщении #1169354 писал(а):
Выше вот немного уточнил, зачем мне это - для формальной постановки задачи с целевой функцией.
Ну, с моей низкой колокольни не видно, чем тут может помешать то, что функцию удобнее описать реализующим её алгоритмом.

Потом, формально-то функция описывается вообще-то проще некуда. Вот у вас алфавит $A$, строка $\sigma\in A^*$, «тестовая подстрока» $\alpha\in A^+$. Максимальное $n$, для которого существуют строки $\gamma_0,\ldots,\gamma_n\in A^*$ такие что $\sigma = \gamma_0\alpha\gamma_1\alpha\ldots\alpha\gamma_n$, и есть значение интересующей функции. Это значение определно однозначно (разве что можно дописать, что для $n=0$ равенство выше имеет вид $\sigma=\gamma_0$ и всегда выполнимо). Можно придумать и другие, более изощрённые, определения — например, как число применений определённого правила определённой грамматики при порождении $\sigma$.

 Профиль  
                  
 
 Re: Количество упорядоченных вхождений подпоследовательности
Сообщение11.12.2016, 10:43 
Аватара пользователя


15/11/16
4
arseniiv в сообщении #1169359 писал(а):
Максимальное $n$, для которого существуют строки $\gamma_0,\ldots,\gamma_n\in A^*$ такие что $\sigma = \gamma_0\alpha\gamma_1\alpha\ldots\alpha\gamma_n$, и есть значение интересующей функции. Это значение определно однозначно (разве что можно дописать, что для $n=0$ равенство выше имеет вид $\sigma=\gamma_0$ и всегда выполнимо).


Спустя почти месяц, когда подошел вплотную к описанию этого блока у себя, я понял что это значит! :-)
Спасибо! В принципе может этого и хватит, попробую сформировать мысль, посмотрю что скажет науч.рук.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

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



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

Сейчас этот форум просматривают: LILILILILI


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

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