给定序列的概率具有值

时间:2020-04-08 07:53:56

标签: algorithm dynamic probability probability-theory

考虑一个有效的字符串,其中包含按位操作数(即“ xor”,“ or”,“ and”)以及“ X”,其中X {0,1}中的整数。让我们考虑它们是n个“ X”的数目,然后是2 ** n个字符串的可能性。我们需要找到值为“ 0”和值为“ 1”的字符串的数目。

示例:

考虑4种可能的“ X&X”,只有3种值为0,只有1种值为1。

如果他们的字符串中有多个位的操作数,有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您没有说,但是我假设字符串的解释是通过从左到右关联来完成的(即0^1&0的意思是(0^1)&0)。我将使用|&^表示“或”和“或”。

s是n个X s的值为0的任意字符串,而t是n个X s的值为1的任意字符串。 / p>

然后,具有n + 1个X且其值为1的字符串看起来像以下之一:t|0s|1t|1t&1s^1t^0。评估为0的是s|0s&1s&0t&0s^0t^1

固定一个运算符序列,令S(n)为带有给定运算符的n个X的字符串数,其值等于0,而T(n)为值为1的字符串数。给定的第i个运算符是O(i)。然后,仅对每个运算符计算上一段中的组合,您便具有递归关系:

  • S(1)= T(1)= 1
  • S(n + 1),T(n + 1)= S(n),S(n)+ 2T(n)(如果O(i)= |
  • 如果O(i)= &,则S(n + 1),T(n + 1)= 2S(n)+ T(n),T(n)
  • 如果O(i)= {^

这些重复关系很容易在O(n)动态程序中进行编码。

相关问题