Здравствуйте.
Вопрос по битовые величины, чьи значения точно неизвестны.
Обычно значения битовых операций &,^, ... задаются в т.ч. с помощью таблиц истинности.
например
A | B | A&B
Необходимо провести вычисления как обычными с битами, но с условием, что точное значение бита неизвестно, а есть лишь вероятность(от 0 до 1).
Т.е. рассматриваем значение переменной, как вероятность того, что она равен "1".
Тогда результат вычисления битовых операций можно найти как:
P(a AND b) = Pa * Pb
P(a OR b) = Pa+Pb-Pa*Pb
P(a XOR b) = (1-(Pa*Pb))*(Pa+Pb-Pa*Pb)
P(NOT a) = 1 - Pa
Казалось бы, всё просто, но стоит попробовать функцию чуть посложнее...
Мне досталась:
z = (a & b) ^ ((~a) & c)
Её таблица истинности:
Всего вариантов наборов входящих значений 8, и они равновероятны для случайных a,b,c.
На выходе функции - 4 нуля и 4 единицы, следовательно при случайных входящих данных вероятность на выходе получить единицу равна 1/2
Матмоделирование (именем святого RANDOM-а) также дало результат, близкий к 0.5
Однако, если в формулу для Z подставить a=b=с=1/2, вычислить выражения (a AND b) = (~a AND с) = 1/4 , а затем вычислить от них XOR:
0.25 ^ 0.25,
то Z принимает значение 0.41
Растолкуйте, пожалуйста, почему отличаются результаты и как правильно работать с подобными вложенными вероятностями?
В каком разделе математики изучают подобные вещи? В каком учебнике объясняются такие задачки?
Заранее спасибо!