您好 我的二进制字符串长度为n。我的目标是字符串中的所有位都等于“1”。 我可以翻转我想要的所有字符串,但是在对字符串的位进行翻转后,它会进行随机循环移位。(移位长度均匀分布在0 ... n-1之间)
我无法知道什么是初始状态,也不知道在进程中间我只知道它们都是“1”
据我所知,应该有一些策略可以保证我在这个字符串的真值表中做了所有的修改。
谢谢
答案 0 :(得分:2)
翻转第1位,直到所有设置为1.我没有看到没有测试位的任何更快的事情。
答案 1 :(得分:1)
Georg有最好的答案,如果字符串随机移动(假设0..n位均匀分布),他总是翻转第一位的策略迟早会成功。
不幸的是,根据字符串的长度,策略可能需要很长时间。
设置为1的位数的期望值平均为n / 2,因此位翻转成功的概率为0.5,对于设置的每个位,概率减少1 / n。 / p>
该过程可以被视为markov chain,其中处于所有位设置的状态0xff ... ff的概率被计算,因此可以计算达到该状态所需的平均试验次数