Я пишу, чтобы спросить, знает ли кто, как это сделать. Мне не нужен код, я бы просто хотел, чтобы логика делала это. Поэтому у меня есть набор {A, B, C, D, E}. Теперь я хочу найти все комбинации операторов or или OR среди значений в наборе.Поиск всех логических комбинаций набора
Некоторые примеры ниже.
A and B and C and D and E
A and B and C and D or E
A and B and C or D and E
Из того, что я знаю, есть 2^n-1 возможности в приведенном выше случае. Поэтому в конкретном примере выше у нас было бы 8 комбинаций.
В дополнение к выше значения в наборе могут иметь две возможности. Для простоты, скажем, A может быть True или False. Точно так же B, C, D и E. Так что мы бы потенциально иметь что-то вроде следующего:
A=True and B=True and C=True and D=True and E=True
A=True and B=True and C=True and D=True and E=False
A=True and B=True and C=True and D=True or E=True
и так далее. Поэтому, учитывая это, мы имели бы 2^(2 * n-1) комбинации. Таким образом, в нашем конкретном примере выше мы имели бы 16 комбинаций для набора из 4.
Есть ли алгоритм, который уже делает это? Если бы не кто-нибудь есть какая-то логика, чтобы реализовать это в Java
Спасибо,
Вы говорите, что существуют возможности «2^n-1», которые зависят от того, что ваши элементы находятся в определенном порядке. Таким образом, ваши 'A, B, C, D, E' больше последовательности, чем набор. – khelwood
Число возможностей с присваиваниями удваивается для каждой переменной, поэтому оно равно 2^(2 * n-1), а не 2 * 2^(n-1). – dasblinkenlight
Вы хотите [таблицу истинности] (http://en.wikipedia.org/wiki/Truth_table)? – StackFlowed