Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск закономерностей в последовательности 
:(
    Опции темы
MastEdm
Дата 2.5.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Master
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.12.2005
Где: Москва, МГИУ

Репутация: нет
Всего: 2



Добрый день.

Есть последовательность символов. В ней нужно попытаться найти закономерности. Интересуют закономерности типа циклов. В простейшем случае точные циклы (то есть точное совпадение символов). Посложнее: "циклы" вида 
Код

f(x, a) = f(y, b) = ... = f(z, c),

где x, y, z - подпоследовательности исходной последовательности; a, b, c - некоторые произвольные числа; f - некоторая функция. В случае с точным циклом f(x, a) = x

Подскажите, в каком направлении копать? 
PM MAIL   Вверх
esperanto
Дата 3.5.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



Наверное если вы спросите на более понятном языке, вам смогут помочь
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
MastEdm
Дата 3.5.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Master
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.12.2005
Где: Москва, МГИУ

Репутация: нет
Всего: 2



Приведу пример: 

Пусть есть последовательность: 'sdfaqwertyqwertyqwertydsdf'. Алгоритм должен найти в ней повторенную трижды подпоследовательность 'qwerty'. Это случай для "точного цикла" (в кавычках, потому что не знаю как это правильно называется)

А для такой последовательности: "zxabcaabcbabcdabceqw" - циклом будет подпоследовательность "abc*", где * - произвольный символ.

Уточню также, что подпоследовательностью в данной задаче я считаю подряд идущие символы исходной последовательности.
PM MAIL   Вверх
_Y_
Дата 3.5.2010, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Может стоит покопать в направлении биоинформатики? Например применяется такой способ. Последовательности расставляются в виде заголовков по вертикали и горизонтали, отмечаются одинаковые символы.

Вот что получается в первом варианте:
Код

 sdfaqwertyqwertyqwertydsdf
sX----------------------X--
d-X--------------------X-X-
f--X----------------------X
a---X----------------------
q----X-----X-----X---------
w-----X-----X-----X--------
e------X-----X-----X-------
r-------X-----X-----X------
t--------X-----X-----X-----
y---------X-----X-----X----
q----X-----X-----X---------
w-----X-----X-----X--------
e------X-----X-----X-------
r-------X-----X-----X------
t--------X-----X-----X-----
y---------X-----X-----X----
q----X-----X-----X---------
w-----X-----X-----X--------
e------X-----X-----X-------
r-------X-----X-----X------
t--------X-----X-----X-----
y---------X-----X-----X----
d-X--------------------X-X-
sX----------------------X--
d-X--------------------X-X-
f--X----------------------X


Во втором варианте
Код

 zxabcaabcbabcdabceqw
zX-------------------
x-X------------------
a--X--XX---X---X-----
b---X---X-X-X---X----
c----X---X---X---X---
a--X--XX---X---X-----
a--X--XX---X---X-----
b---X---X-X-X---X----
c----X---X---X---X---
b---X---X-X-X---X----
a--X--XX---X---X-----
b---X---X-X-X---X----
c----X---X---X---X---
d-------------X------
a--X--XX---X---X-----
b---X---X-X-X---X----
c----X---X---X---X---
e-----------------X--
q------------------X-
w-------------------X

Потом смотришь последовательности из крестиков по диагонали. Где последовательность достаточной длины и с малым количеством пропусков, там и сходство.

Вот простейший Java код, который это делает:
Код

public class Temp {

    public static void main(String args[]) {            
        
        String stringIn = "zxabcaabcbabcdabceqw";
        String[] dataArray = stringIn.split("");
        
        String[][] results = new String[dataArray.length][dataArray.length];
        
        for(int r = 1; r < dataArray.length; r++){
            for(int c = 1; c < dataArray.length; c++){
                if(dataArray[r].equals(dataArray[c])){
                    results[r][c] = "X";
                } else {
                    results[r][c] = "-";
                }            
            }
        }
        
        System.out.println(" " + stringIn);
        for(int r = 1; r < dataArray.length; r++){
            System.out.print(dataArray[r]);
            for(int c = 1; c < dataArray.length; c++){
                System.out.print(results[r][c]);        
            }
            System.out.println();
        }
    }
}




--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
MastEdm
Дата 4.5.2010, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Master
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.12.2005
Где: Москва, МГИУ

Репутация: нет
Всего: 2



_Y_, спасибо, интересный подход, посмотрю на эту тему. Правда тут сложность квадратичная получается, но по-любому наверное можно соптимизировать  smile 
PM MAIL   Вверх
_Y_
Дата 4.5.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(MastEdm @ 4.5.2010,  09:02)
но по-любому наверное можно соптимизировать

Наверное. Это же алгоритм в основном для визуализации. Что знал - доложил smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.