![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
tishaishii |
|
||||||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Когда-то я разработал алгоритм для поиска наиболее точных шаблонов для многих строк.
Рассмотрим на 2х, т.к. писать много, но работает для многих. Есть строки A="abckd" и B="dacbdaf". Представляешь строки в виде массивов символов, нумеруешь каждый символ. Составляешь матрицу типа:
Т.е., например, A по горизонтали, B - по вертикали. 1 - совпадение символов в строках, 0 - сам понимаешь. Удаляешь все строки и столбцы (с номерами), в которых нет единиц. Нумерацию символов обязательно сохраняешь.
Рассматриваешь получившуюся матрицу посимвольно с точки зрения A. Получается, что A(1)="a" принадлежит B(2, 6), A(2) принадлежит B(4), ... Т.е. строишь списки:
Т.е., по-синтаксису выше, A(i):{B(j[k[u]])}, а, по-математике, A(i) принадлежит {B(j[k[u]])}. Вот надо искать самые длинные списки таких B[j[k[u]]], что B[j[k[u]]]<B[j[k[u+1]]]. Ну, сложно выразился. Посмотри глазами. Надо, чтобы позиция каждой предыдущей буквы из B была меньше следующей. Посмотри глазами (ещё раз). Предполагаемое ре Добавлено @ 22:25 Глюк темплейта форума, не могу редактировать сообщение. Ошибка в формулировке:
Если строк много, то следует пересмотреть все строки с позиции каждой строки без повторений, порядок строк при пересмотре не имеет значения. В максимальных результатах пересмотра ищи наиболее короткие шаблоны - они будут соответствовать шаблонам для всех строк. Это сообщение отредактировал(а) tishaishii - 23.3.2007, 22:21 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |