【问题标题】:Probabality that given given sequnce has a value给定序列具有值的概率
【发布时间】:2020-07-20 13:51:04
【问题描述】:

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

例子:

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

当字符串中的操作数不止一个位时,任何人都可以帮助我。

【问题讨论】:

    标签: algorithm dynamic probability probability-theory


    【解决方案1】:

    你不说,但我假设字符串的解释是通过从左到右关联来完成的(即0^1&0 表示(0^1)&0)。我将使用|&^ 来表示或、与、异或。

    s 是一个任意字符串,其中n 个Xs 的计算结果为0,t 是一个任意字符串,n 个Xs 的计算结果为1。

    然后,具有 n+1 Xs 且计算结果为 1 的字符串看起来像以下之一:t|0s|1t|1t&1s^1t^0。评估为 0 的有 s|0s&1s&0t&0s^0t^1

    固定一个运算符序列,令 S(n) 是具有 n Xs 且使用给定运算符计算为 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)=|
    • S(n+1), T(n+1) = 2S(n)+T(n), T(n) 如果 O(i)=&
    • S(n+1), T(n+1) = S(n)+T(n), S(n)+T(n) 如果 O(i)=^

    这些递归关系很容易在 O(n) 动态程序中编码。

    【讨论】:

    • 我没有提到从左到右,例如考虑 (1&0^1|1&0)=1 和其中 (1&0)^((1|1)&0) =0 ,两者具有相同的组成,但用括号分隔。 .我们需要考虑甚至括号,因为它们会有所不同。
    猜你喜欢
    • 2018-10-11
    • 2015-05-18
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多