我将如何实施此算法?

时间:2009-01-30 16:04:06

标签: algorithm compression brute-force

前段时间我试图强行发送一个12位二进制“密钥”的遥控器。

我制作的设备有效,但速度非常慢,因为它以每秒约50位的速度尝试每个组合(4096个代码= 49152位= ~16分钟)

我打开接收器,发现它使用移位寄存器检查代码,尝试之间不需要延迟。这意味着接收器只是查看要接收的最后12位,看它们是否与密钥匹配。

这意味着如果发送了流111111111111000000000000,则它已经有效地尝试了所有这些代码。

111111111111    111111111110    111111111100    111111111000
111111110000    111111100000    111111000000    111110000000
111100000000    111000000000    110000000000    100000000000
000000000000

在这种情况下,我使用了24位来尝试13个12位组合(> 90%压缩)。

有没有人知道一种算法可以通过利用这个来减少我发送的49152位?

2 个答案:

答案 0 :(得分:13)

你所说的是de Bruijn sequence。如果您不关心它是如何工作的,您只需要结果here it is

答案 1 :(得分:0)

在我的头顶上,我想在每个12位序列中翻转一位会处理另外13个组合,例如111111111101000000000010,然后是111111111011000000000100等。但是你仍然需要做很多排列,即使是我认为你还有一点需要做111111111101000000000100等。然后在一侧翻转两位,在另一侧翻转1,等等。