Хорошо, я буду здесь как можно подробнее.
Представьте, что пользователь проходит набор «опций», которые он может выбрать. Каждый раз, когда он выбирает, он получает, скажем, 4 разных варианта. В этих 4 «слотах» может появиться много других опций. Каждый из них имеет определенную определенную и известную вероятность появления. Не все параметры одинаково вероятны для появления, а некоторые параметры требуют, чтобы другие уже были выбраны ранее - в сложном дереве взаимозависимости. (это я уже определил)
Когда пользователь выбирает один из 4, ему предоставляется еще один выбор из 4 вариантов. Пул опций определяется снова и может зависеть от того, что пользователь выбрал ранее.
Среди всех возможных «опций», которые могут когда-либо появиться, есть несколько избранных, которые являются особыми, назовите их КЛЮЧЕВЫМИ опциями.
При запуске программы пользователю предоставляются первые 4 варианта. Для каждого из этих 4 программе необходимо вычислить общую вероятность того, что пользователь «достигнет» всех опций KEY за период из (переменных) N вариантов.
например. если всего имеется 4 варианта, вероятность достижения любого из них равна 1, поскольку все они появляются в самом начале.
Если кто-нибудь может посоветовать мне, с какой логики мне начинать, я был бы очень благодарен.
Я думал о подсчете всех возможных последовательностей выбора и подсчете тех, которые приводят к тому, что KEY-параметры выбираются в течение N 'шагов', но проблема в том, что вероятность появления всех из них не одинакова, а также изменяется пул опций по мере пользователь выбирает и накапливает свои параметры.
У меня возникают трудности с реализацией четко определенных вероятностей и зависимостей опций в алгоритм, который может дать разумную общую вероятность. Таким образом, пользователь знает каждый раз, какой из 4 ставит его в наилучшее положение, чтобы в конечном итоге получить опции KEY.
Есть идеи?
EDIT:
Вот пример:
скажем, есть 7 вариантов в пуле. вариант1, ..., вариант7
option7 требует option6; опция6 требует опции 4 и опции 5;
Варианты с 1 по 5 ничего не требуют и могут появиться немедленно, с соответствующими вероятностями option1.p, ..., option5.p;
опция KEY - это, скажем, option7;
пользователь получает 4 случайно (но взвешенных) выбранных варианта из 1-5, и программа должна сказать что-то вроде:
«если вы выберете (сначала), у вас будет ##% шанс получить option7 не более чем за N попыток». аналогично для остальных 3 вариантов.
естественно, для некоторого низкого N невозможно получить option7, а для некоторого большого N это определенно. Можно выбрать N, но оно является фиксированным.
РЕДАКТИРОВАТЬ: Таким образом, точка здесь не пользователь выбирает случайно. Суть в том, что программа предлагает какой вариант выбрать, чтобы максимально увеличить вероятность того, что в конечном итоге после N шагов пользователю будут предложены все ключевые параметры.
Для приведенного выше примера; скажем, мы выбираем N = 4. поэтому программа должна сообщить нам, какие из первых 4 появившихся опций (любые 4 среди 1-5), какая из них при выборе дает наилучшие шансы на получение опции7. поскольку для опции 7 вам нужен вариант 6, а для этого вам нужны вариант 4 и вариант 5, ясно, что вы ДОЛЖНЫ выбрать либо вариант 4, либо вариант 5 в первом наборе вариантов. один из них обязательно появится, конечно.
Допустим, мы получаем это для первого выбора {option3, option5, option2, option4}. Затем программа говорит:
если вы выбрали вариант 3, вы никогда не получите вариант 7 в 4 этапа. р = 0;
если вы выбрали option5, вы можете получить option7, p = ....;
... option2, p = 0;
... option4, p = ...;
Независимо от того, что мы выберем, для следующих 4 опций, p пересчитываются. Понятно, что если мы выбрали вариант 3 или вариант 2, каждый последующий выбор имеет ровно 0 вероятностей того, что мы попадем в вариант 7 Но для option4 и option5 p> 0;
Теперь понятнее? Я не знаю, как получить эти вероятности с.