2014 dxdy logo

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

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




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

Спасибо

 
 
 
 Re: имитация, симуляция
Сообщение03.11.2014, 13:06 
Это марковский процесс. В математике он реализован. Надо задать начальное распределение 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 
Аватара пользователя
Vince Diesel
спасибо, попробую
конечно, МП

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group