我在网上看到了一个挑战(在King的网站上)虽然我理解它背后的一般想法但我有点迷失 - 也许措辞有点不对?这是问题,我将在下面说明我不理解的内容:
错误纠正码用于各种应用程序 从卫星通信到音乐CD。这个想法是 将长度为k的二进制字符串编码为长度为n> k的二进制字符串, 称为码字,即使编码的某些位是 损坏(如果你在你的CD上划伤),原始的k位 字符串仍然可以恢复。有三个重要参数 与纠错码相关联:码字的长度(n), 维度(k)是未编码字符串的长度,和 最后是代码的最小距离(d)。两者之间的距离 码字被测量为汉明距离,即汉明数 代码字不同的位置:0010和0100在距离处 2.代码的最小距离是彼此最接近的两个不同代码字之间的距离。线性代码是a 简单类型的纠错码,具有几个不错的属性。 其中之一是最小距离是最小距离 任何非零码字都必须为零码字(码字 由n个零组成的总是属于长度为n的线性代码。 长度为n且尺寸为k的线性码的另一个不错的特性是 它们可以用零和0的n×k生成矩阵来描述 那些。对k位字符串进行编码是通过将其视为列向量来完成的 并将其乘以生成矩阵。以下示例显示了一个 生成矩阵以及字符串1001如何编码。 graph.png矩阵 乘法照常完成,除了additon以模2完成 (即,0 + 1 = 1 + 0 = 1且0 + 0 = 1 + 1 = 0)。这段代码的代码字集是 然后只需通过编码所有k位获得的所有向量 以这种方式的字符串。编写程序来计算最小距离 对于几个长度最多为30和30的线性纠错码 维度最多15.每个代码将作为生成矩阵给出。 输入您将获得几个生成器矩阵作为输入。首先 line包含一个整数T,表示测试用例的数量。该 每个测试用例的第一行给出参数n和k 1≤n≤30,1≤k≤15且n> 1。 k,由两个整数分隔一个空格。 以下n行描述了生成矩阵。每行都是一行 矩阵的k空格分隔条目为0或1。 输出对于每个生成器矩阵,输出最小的单行 相应线性码的距离。
示例输入1
2
7 4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 1 1 1
1 0 1 1
1 1 0 1
3 2
1 1
0 0
1 1
示例输出1
3
0
现在我的假设是问题是“编写一个程序,它可以采用矩阵形式的线性代码,并说出最小距离来自全零代码字”我只是不明白为什么有一个3第一个输入的输出和第二个输入的输出是什么?
很困惑。
有什么想法吗?
答案 0 :(得分:2)
第一个例子:
Input binary string: 1000
Resulting code: 1100001
Hamming distance to zero codeword 0000000: 3
第二个例子:
Input binary string: 11
Resulting code: 000
Hamming distance to zero codeword 000: 0
你的目标是找到有效非零码字(可以从一些非零k位输入字符串产生),汉明距离最小到零码字(用不同的词 - 用最少的二进制表示中的数量)并返回该距离。
希望有所帮助,问题描述确实有点难以理解。
修改即可。我在第一个例子中犯了错字。实际输入应 1 000 000 000 1 。此外,可能还不清楚输入字符串究竟是什么以及如何计算代码字。我们来看看第一个样本。
Input binary string: 1000
这个二进制字符串通常是不生成器矩阵的一部分。它只是所有可能的非零4位字符串之一。让我们乘以生成矩阵:
(1 0 0 0) * (1 0 0 0) = 1
(0 1 0 0) * (1 0 0 0) = 0
(0 0 1 0) * (1 0 0 0) = 0
(0 0 0 1) * (1 0 0 0) = 0
(0 1 1 1) * (1 0 0 0) = 0
(1 0 1 1) * (1 0 0 0) = 1
(1 1 0 1) * (1 0 0 0) = 1
找到产生“最小”码字的输入的一种方法是迭代所有2 ^ k-1个非零k比特串并计算每个码字的码字。对于k <= 15,这是可行的解决方案。
第一个测试用例0011的另一个例子(可能有多个输入产生“最小”输出):
(1 0 0 0) * (0 0 1 1) = 0
(0 1 0 0) * (0 0 1 1) = 0
(0 0 1 0) * (0 0 1 1) = 1
(0 0 0 1) * (0 0 1 1) = 1
(0 1 1 1) * (0 0 1 1) = 2 = 0 (mod 2)
(1 0 1 1) * (0 0 1 1) = 2 = 0 (mod 2)
(1 1 0 1) * (0 0 1 1) = 1
结果代码0011001还具有零码字的汉明距离3。没有4位字符串,其代码在二进制表示中少于3个。这就是为什么第一个测试用例的答案是3。