2014 dxdy logo

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

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


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


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

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

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

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

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



Начать новую тему Ответить на тему
 
 имитация, симуляция
Сообщение03.11.2014, 10:26 
Заслуженный участник
Аватара пользователя


22/01/11
2641
СПб
Посоветуйте к какому программному продукту обратиться и как!
Мне нужно чтобы прога формировала длинные слова в шестибуквенном алфавите с определёнными правилами допустимого следования букв. После любой буквы возможны две определенных буквы и мы пишем одну с некой вероятностью, а другую с дополнительной. Если возникают некие пары, то они сокращаются, а счетчик длины слова все равно их считает.
Т.е. на входе правила следования, вероятности и длина слова... Скажем 100000. А на выходе несократимое слово

Спасибо

 Профиль  
                  
 
 Re: имитация, симуляция
Сообщение03.11.2014, 13:06 
Заслуженный участник


25/02/11
1786
Это марковский процесс. В математике он реализован. Надо задать начальное распределение initdist (для первой буквы, которые там цифры) и переходную матрицу transprob. Правила удаления зададим в массиве pairstodelete. Для случая, когда пары удаляются в конце процесса и длины строки равной 100, можно так:
Код:
initdist = {1/6, 1/6, 1/6, 1/6, 1/6, 1/6};
transprob = {{1/2, 1/2, 0, 0, 0, 0}, {0, 1/2, 1/2, 0, 0, 0}, {0, 0, 1/2, 1/2, 0, 0}, {0, 0, 0, 1/2, 1/2, 0}, {0, 0, 0, 0, 1/2, 1/2}, {1/2, 0, 0, 0, 0, 1/2}};
P = DiscreteMarkovProcess[initdist, transprob];
pairstodelete = {"11", "22"};
data = StringJoin[ToString /@ RandomFunction[P, {1, 100}][[2, 1, 1]]]
result = StringReplace[data, pairstodelete -> ""]

Результат:
Код:
"2233333455666611222333455611233444561233445566612344561233456122222222222345561123456611223345666611"
"33333455666623334556233444561233445566612344561233456123455623456633456666"

Первая строка в ответе это data длины 100, а вторая получена в результате удаления нужных пар.

 Профиль  
                  
 
 Re: имитация, симуляция
Сообщение03.11.2014, 13:42 
Заслуженный участник
Аватара пользователя


22/01/11
2641
СПб
Vince Diesel
спасибо, попробую
конечно, МП

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

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



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

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


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

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