一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于深度优先搜索的QC-LDPC码环数检测方法、计算机装置和存储介质与流程

2021-12-14 23:30:00 来源:中国专利 TAG:

基于深度优先搜索的qc

ldpc码环数检测方法、计算机装置和存储介质
技术领域
1.本发明涉及通信编码技术领域,尤其是一种基于深度优先搜索的qc

ldpc码环数检测方法、计算机装置和存储介质。


背景技术:

2.qc

ldpc是quasi

cyslic low

density parity

check codes的缩写,即准循环低密度奇偶校验码,可用于5g通信编码等领域。在qc

ldpc码的编码、校验和译码等过程中需要使用校验矩阵。对于qc

ldpc码的译码性能,通常用qc

ldpc码的校验矩阵对应的tanner图中最短循环的长度即环长进行评价,其中环长又可以称为围长(girth)。由于在构造qc

ldpc 码时既不能完全没有循环,又不能太多循环,又希望能获得较大的环长,因此对给定的环长检测环数能够很好地反映qc

ldpc码的译码性能,该过程相当于分析对于给定的环长, qc

ldpc码的校验矩阵对应的tanner图有多少个等于这个给定环长的最短循环。
3.目前对qc

ldpc码进行环数检测的相关技术中,通常需要先分析出所有具有给定环长的不同形状的环,然后根据校验矩阵中指定环长的环形状来依次检测不同环长对应的环数。相关技术的计算复杂度是以环长为指数的指数级复杂度,当给定的环长增大时,检测环数所需的计算量将急剧增大。


技术实现要素:

4.针对上述至少一个技术问题,本发明的目的在于提供一种基于深度优先搜索的qc

ldpc 码环数检测方法、计算机装置和存储介质。
5.一方面,本发明实施例包括一种基于深度优先搜索的qc

ldpc码环数检测方法,包括:
6.确定待检测环长;
7.获取qc

ldpc码对应的基矩阵;
8.根据所述待检测环长,获取所述基矩阵对应的全部子矩阵;
9.设置环数的初始值为零,遍历所有符合条件的所述子矩阵以累计所述环数;对于其中每个所述子矩阵,当成立,则对所述环数累加1,反之则所述环数不累加,其中和均为所述子矩阵中根据环路路径确定的元素,所述环路路径是根据所述待检测环长,使用深度优先搜索算法进行搜索获得的,0≤i
k
≤m

1,0≤j
k
≤n

1, i
k
≠i
k 1
,j
k
≠j
k 1
,i0=i
m
,j0=j
m
,p为所述基矩阵对应的扩展因子,所述待检测环长和所述环路路径的长度均为2m,所述基矩阵的大小为m
×
n;
10.获取所述环数的最终累计值作为所述待检测环长对应的环数。
11.进一步地,每个所述子矩阵的阶数均为m。
12.进一步地,基于深度优先搜索的qc

ldpc码环数检测方法还包括:
13.根据所述待检测环长使用深度优先搜索算法进行搜索,获得所述待检测环长对应的环路路径。
14.进一步地,所述根据所述待检测环长使用深度优先搜索算法进行搜索,获得所述待检测环长对应的环路路径,包括:
15.根据所述待检测环长获取环领域矩阵;
16.获取所述环领域矩阵对应的邻接矩阵;
17.使用深度优先搜索算法,遍历所述邻接矩阵中的每两个节点进行搜索;
18.获取搜索到的各条环路路径。
19.进一步地,所述根据所述待检测环长获取环领域矩阵,包括:
20.获取位置编号矩阵;所述位置编号矩阵的大小为m
×
m,所述位置编号矩阵中元素的值等于该元素所在的位置编号;
21.根据所述位置编号矩阵确定所述环领域矩阵;所述环领域矩阵的大小为m2×
m2,所述环领域矩阵中的主对角线上的元素的值均为0;当所述位置编号矩阵中值为a的元素与值为b的元素在位于所述位置编号矩阵中的同一行或同一列,则所述环领域矩阵中第a行第b列的元素的值为1,反之所述环领域矩阵中第a行第b列的元素的值为0。
22.进一步地,所述使用深度优先搜索算法,遍历所述邻接矩阵中的每两个节点进行搜索,获取搜索到的各条环路路径,包括:
23.设定多个集合;各所述集合分别具有对应的环长,不同所述集合的环长各不相同;
24.当所述集合中没有存储与搜索到的环路路径相同的环路路径,将搜索到的所述环路路径存储到具有相同环长的所述集合中,反之则删除搜索到的所述环路路径。
25.进一步地,基于深度优先搜索的qc

ldpc码环数检测方法还包括:
26.设定所述深度优先搜索算法的最大搜索环长,使所述深度优先搜索算法仅搜索环长不大于所述最大搜索环长的环路路径。
27.进一步地,m=2、3、4、5或6。
28.另一方面,本发明实施例还包括一种计算机装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行实施例中的基于深度优先搜索的qc

ldpc码环数检测方法。
29.另一方面,本发明实施例还包括一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于执行实施例中的基于深度优先搜索的qc

ldpc 码环数检测方法。
30.本发明的有益效果是:实施例中的基于深度优先搜索的qc

ldpc码环数检测方法,通过深度优先搜索算法搜索得到环路路径,然后在计算环长的过程中调用,通过深度优先搜索算法降低了搜索环路径过程中的复杂度,使得实施例中的基于深度优先搜索的qc

ldpc码环数检测方法整个过程的复杂度降低,有利于对大环长求解相应的环数。
附图说明
31.图1为实施例中基于深度优先搜索的qc

ldpc码环数检测方法的流程图;
32.图2为实施例中环长为4的环路路径的示意图;
33.图3为实施例中环长为6的环路路径的示意图;
34.图4为实施例中环长为8的环路路径的示意图;
35.图5为实施例中环长为10的环路路径包含的节点的示意图;
36.图6为实施例中环长为10的环路路径的示意图。
具体实施方式
37.本实施例中,参照图1,基于深度优先搜索的qc

ldpc码环数检测方法包括以下步骤:
38.s1.确定待检测环长;
39.s2.获取qc

ldpc码对应的基矩阵;
40.s3.根据待检测环长,获取基矩阵对应的全部子矩阵;
41.s4.设置环数的初始值为零,遍历所有子矩阵以累计环数;
42.s5.获取环数的最终累计值作为待检测环长对应的环数。
43.步骤s1中,所确定的待检测环长为2m,其中m的取值可以是2、3、4、5、6或者其他数值,也就是步骤s1

s5可以检测4、6、8、10、12等环长分别对应的环数,针对每个具体的m可以分别执行一次步骤s1

s5,其原理是相同的,因此在介绍步骤s1

s5的具体执行方式时可以不讨论m的具体取值。
44.步骤s2中,qc

ldpc码的校验矩阵h通常是一个由相同大小的循环置换矩阵(cem) 和全零矩阵组成的阵列。如果只考虑校验矩阵h中循环置换矩阵移位值,可以得到一个新的矩阵e,可以称这个矩阵e为基矩阵,也可以称为这个矩阵e为置换移位矩阵。
45.反过来,将基矩阵e中的元素替换成一个大小为p
×
p的循环置换矩阵(cem)或者全零矩阵,可以得到准循环ldpc码的校验矩阵h,这样,替换后所得到的循环置换矩阵和全零矩阵就可以看成是基矩阵的子矩阵。这里的p可以被称为扩展因子,扩展因子p不仅可以是素数,还可以是任意正整数。因此,从构造qc

ldpc码的角度出发,已知一个基矩阵e和扩展因子p,就可以得到一个qc

ldpc码。那么,构造好的qc

ldpc码其实就是设计一个好的置换移位矩阵e。
46.具体地,qc

ldpc码的校验矩阵h对应的置换移位矩阵即基矩阵e可以表示为
[0047][0048]
这个基矩阵的大小为m
×
n。
[0049]
步骤s3中,根据给定的待检测环长2m,获取上述基矩阵e对应的全部m阶子矩阵。
[0050]
步骤s4中,可以先建立环数计数变量,然后将环数的初始值设置为0,开始对基矩阵e 对应的全部m阶子矩阵的遍历过程。具体地,可以通过任意顺序对基矩阵e对应的全部m阶子矩阵进行排序,从第1个m阶子矩阵开始,使用深度优先搜索算法(depth first search, dfs),根据待检测环长2m进行搜索,获得待检测环长2m对应的环路路径。确定在该子矩阵中属于环路路径的元素和等,将这些元素代入公式中,该
公式中,0≤i
k
≤m

1,0≤j
k
≤n

1,i
k
≠i
k 1
,j
k
≠j
k 1
,i0=i
m
,j0=j
m
,该公式的意义是环路路径在该子矩阵中所经过的元素的累加和,然后判断这个累加和是否能够整除扩展因子p,也就是判断是否成立,如果成立,表明这个累加和能够整除扩展因子p,那么对环数累加1,如果不成立,表明这个累加和不能整除扩展因子p,那么对环数不累加或者累加0;完成上述第1 个m阶子矩阵对应的累加或不累加操作后,接着对第2个m阶子矩阵,使用形状相同或不同的环路路径确定在第2个m阶子矩阵中所经过的元素,然后代入判断是否成立,并根据判断结果对环数累加1或不累加。对于第3个、第4个以至最后一个m阶子矩阵,也是按照相似的过程确定对环数累加1或不累加。
[0051]
当完成了最后一个m阶子矩阵对应的环数累加或不累加过程,执行步骤s5,获取最后累加所得的环数,作为待检测环长对应的环数,也就是本实施例中所执行的基于深度优先搜索的qc

ldpc码环数检测方法的检测结果。
[0052]
步骤s4是基于如下的一个定理:对于qc

ldpc码来说,如果基矩阵中存在一个长度为2m的环,则对应的校验矩阵h中必然也存在p个同样大小与之对应的环。并且如果基矩阵中存在以下序列(p1,p2,

,p
i
,p
2m
),其中任意相邻元素p
i
和p
i 1
(当p
i
=p
2m
时p
i 1
=p1)位于同一行或者同一列,不相邻元素位于不同行且不同列,则该序列(p1,p2,

,p
i
,p
2m
)构成长度为2m的环的充分必要条件为其中0≤i
k
≤m

1,0≤j
k
≤ n

1,i
k
≠i
k 1
,j
k
≠j
k 1
,i0=i
m
,j0=j
m
。这个公式就是在确定是否累加环数时所使用的公式。具体地,p1,p2,

,p
i
,p
2m
等表示基矩阵e中的元素,表示基矩阵e中的元素被替换后所得的循环置换矩阵中的元素。
[0053]
本实施例中,步骤s4中所使用的环路路径可以预先获取并存储起来,当执行步骤s1

s5 时可以不执行计算环路路径的过程,而是直接调用预先获取到的环路路径。
[0054]
本实施例中,根据待检测环长使用深度优先搜索算法进行搜索,获得待检测环长对应的环路路径的过程包括以下步骤:
[0055]
p1.根据待检测环长获取环领域矩阵;
[0056]
p2.获取环领域矩阵对应的邻接矩阵;
[0057]
p3.使用深度优先搜索算法,遍历邻接矩阵中的每两个节点进行搜索;
[0058]
p4.获取搜索到的各条环路路径。
[0059]
其中,步骤p1

p4可以在执行步骤s1

s5之前执行,步骤p1

p4可以仅执行一次,每次执行步骤s1

s5时调用执行步骤p1

p4所得的环路路径即可。
[0060]
步骤p1的原理在于,对于环长为2m的的环,其环形状只会出现在大小为m2的环领域矩阵m中。环形状即环领域矩阵m中各个点之间连接关系,也即邻接向量,因此需要先确定各个连接节点连接关系,即其中一点和其余各点的连接关系,就可确认环形状。
[0061]
因此,为了根据待检测环长获取环领域矩阵m,可以先设定大小为m
×
m的位置编号
矩阵,位置编号矩阵中元素的值等于该元素所在的位置编号。例如,当待检测环长为2m=6,那么m=3,则设定一个大小为3
×
3的位置编号矩阵,位置编号矩阵中第1行第1列的元素为第1个元素,其值为1,第1行第2列的元素为第2个元素,其值为2,第1行第3列的元素为第3个元素,其值为3,第2行第1列的元素为第4个元素,其值为4,如此类推,所得的位置编号矩阵为
[0062]
接着,根据位置编号矩阵确定环领域矩阵。对于位置编号矩阵中的元素,如果值为a的元素与值为b的元素在位于位置编号矩阵中的同一行或同一列,则环领域矩阵中第a行第b列的元素的值为1;如果值为a的元素与值为b的元素既不在同一行也不在同一列,反之环领域矩阵中第a行第b列的元素的值为0。这个规则的意义是将位置编号矩阵中的每个元素分别看作一个点,如果两个点在位置编号矩阵属于同行或者同列,那么认为这两个点是连接关系,以这两个点为行数和列数,能够在环领域矩阵中能够确定一个元素,将环领域矩阵中的这个元素设为1;反之,如果两个点在位置编号矩阵既不同行也不同列,那么认为这两个点不连接,将环领域矩阵中的相应元素设为0;认为一个点与其本身总是连接的,将环领域矩阵中的相应元素设为0。
[0063]
例如,位置编号矩阵中,元素“1”与自身位于同一行同一列,那么就将环领域矩阵中第1行第1列的元素设为0;元素“1”与元素“2”位于同一行,那么就将环领域矩阵中第1行第2列的元素设为1;元素“1”与元素“3”位于同一行,那么就将环领域矩阵中第1行第3列的元素设为1;元素“1”与元素“4”位于同一列,那么就将环领域矩阵中第1行第4列的元素设为1;元素“1”与元素“5”既不在同一行也不在同一列,那么就将环领域矩阵中第1行第5列的元素设为0;元素“1”与元素“6”既不在同一行也不在同一列,那么就将环领域矩阵中第1行第6列的元素设为0;元素“1”与元素“7”位于同一列,那么就将环领域矩阵中第1行第7列的元素设为1;元素“1”与元素“8”既不在同一行也不在同一列,那么就将环领域矩阵中第1行第8列的元素设为0;元素“1”与元素“9”既不在同一行也不在同一列,那么就将环领域矩阵中第1行第9列的元素设为0。通过上述过程,可以得到环领域矩阵中的第一行为[0,1,1,1,0,0,1,0,0]。
[0064]
通过上述规则,可以获得当位置编号矩阵为时,得到的环领域矩阵为:
6个节点分别属于校验矩阵中的第3行和第3列,由此可以得到围长为6的环的不同形状个数为6,这6个环路路径可以存储在集合2中。
[0077]
步骤p3中,所得的环长为2m=8的环路路径,其包含8个节点,这8个节点分别属于校验矩阵中的第4行和第4列,如果环长为8环由4行中选取,每列限制2个节点,那么列的选取方式有6种,由此可以得到围长为6的环的不同形状个数为6,其中3种形状如图4所示,这6个环路路径可以存储在集合3中。
[0078]
步骤p3中,所得的环长为2m=10的环路路径,参照图5,其包含10个节点,这10个节点分别属于校验矩阵中的第5行和第5列,如果环长为10环由5行中选取,每列限制2个节点,那么列的选取方式有10种,然后可用分支法搜索所有可能的列组合成环长为10的12 种形状,这12种形状如图6所示,这12个环路路径可以存储在集合4中。
[0079]
步骤p4中,将集合1、集合2、集合3和集合4存储在同一存储空间中,从而获得不同环长下不同形状的环路路径。在执行步骤s1

s5时,可以直接从这个存储空间中读取与待检测环长相同环长的环路路径,以供步骤s4调用。
[0080]
步骤s1

s5和步骤p1

p4的原理在于:对于qc

ldpc码,只要保证基矩阵中没有短环,那么校验矩阵中就无短环。所以说,大环长qc

ldpc码的构造归根结底取决于基矩阵的设计。由于上述介绍公式时所提到的定理指出:基矩阵e中满足公式的环都具有特定的固定环形状,且数量固定,因此步骤p1

p4 通过深度优先算法,找到所有环长分别为4、6、8、10等长度的环的环形状组合,再将这些环组合存储下来。步骤s1

s5在基矩阵e中,找到所有的2阶、3阶、4阶、5阶等子矩阵,并验证所有的存储环组合在基矩阵e的子矩阵中是否满足公式如果满足,则相应长度的环的数量就被累加。最终通过一次计算即可计算校验矩阵h的全部环的种类及数量,从而实现了qc

ldpc码环数的快速检测。
[0081]
以下分析本实施例中的基于深度优先搜索的qc

ldpc码环数检测方法,以及目前两种相关算法的计算复杂度,这两种相关算法分别是基于校验矩阵环分析算法和基于基矩阵e环分析算法。分析过程中,假设qc

ldpc码的变量节点个数为pn个,校验节点个数为pm 个,基矩阵e的大小为m
×
n,循环置换矩阵(cpm)大小为p
×
p,要检测环长为girth的环对应的环数是多少。
[0082]
对于基于校验矩阵环分析算法,其计算复杂度随着检测的环长度的增加而增加,且增长速度与校验节点数量pm呈指数关系。其计算复杂度为o(pn*(pm)2) o(pn*(pm) 3
) o(pn*(pm)4) o(pn*(pm)5) o(pn*(pm)6)
……

[0083]
对于基于基矩阵e环分析算法,其计算复杂度随着检测的环长度的增加而增加,其计算复杂度为o((n*m)2) o((n*m)3) o((n*m)4) o((n*m)5) o((n*m) 6
)
……

[0084]
对于本实施例中的基于深度优先搜索的qc

ldpc码环数检测方法,由于通过深度优先搜索算法可以一次搜索得到环路路径,并且可以将环路路径存储起来供每次执行时调用,从而无需每次使用都重新计算,因此省略了搜索环路径,其计算复杂度主要是由路径求
和带来的,具体地:
[0085]
对于检测环长4的环,基矩阵e的2阶子矩阵数量为(n

1)*(m

1),需要计算1条路径,2次加法,一次比较;
[0086]
对于检测环长6的环,基矩阵e的3阶子矩阵数量为(n

2)*(m

2),需要计算6条路径,3次加法,一次比较;
[0087]
对于检测环长8的环,基矩阵e的4阶子矩阵数量为(n

3)*(m

3),需要计算72条路径,73次加法,一次比较;
[0088]
对于检测环长10的环,基矩阵e的5阶子矩阵数量为(n

4)*(m

4),需要计算1440 条路径,1440次加法,一次比较。
[0089]
综上,本实施例中的基于深度优先搜索的qc

ldpc码环数检测方法的计算复杂度为o (n*m) o(n*m) o(n*m) o(n*m)
……
。与基于校验矩阵环分析算法和基于基矩阵e环分析算法相比,本实施例中的基于深度优先搜索的qc

ldpc码环数检测方法的计算复杂度大幅降低。
[0090]
可以通过编写执行本实施例中的基于深度优先搜索的qc

ldpc码环数检测方法的计算机程序,将该计算机程序写入至计算机装置或者存储介质中,当计算机程序被读取出来运行时,执行本实施例中的基于深度优先搜索的qc

ldpc码环数检测方法,从而实现与实施例中的基于深度优先搜索的qc

ldpc码环数检测方法相同的技术效果。
[0091]
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本实施例所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本实施例说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本实施例所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
[0092]
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本实施例所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
[0093]
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术
‑ꢀ
包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
[0094]
此外,可按任何合适的顺序来执行本实施例描述的过程的操作,除非本实施例另外指示或以其他方式明显地与上下文矛盾。本实施例描述的过程(或变型和/或其组合)可
在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
[0095]
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本实施例所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
[0096]
计算机程序能够应用于输入数据以执行本实施例所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
[0097]
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/ 或实施方式可以有各种不同的修改和变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献