一种用于纵向联邦学习数据对齐的隐匿集合求交方法

文档序号:32308707发布日期:2022-11-23 10:51阅读:45来源:国知局
一种用于纵向联邦学习数据对齐的隐匿集合求交方法

1.本发明属于联邦学习技术领域,涉及一种隐匿集合求交方法,具体涉及一种用于纵向联邦学习数据对齐的隐匿集合求交方法,可用于纵向联邦学习中对不同数据集间的数据对齐并避免了数据泄露。


背景技术:

2.随着人工智能和大数据科学的发展,机器学习技术在各类应用场景中迅速发展,并取得了显著成效,但如今传统基于单一企业的数据模型逐渐难以满足需求,需要进行跨机构间数据协作来构建更加准确的模型,然而由于数据安全、隐私保护等监管要求日趋严厉,加剧了机构间数据合作的难度,“数据孤岛”问题普遍存在,基于此联邦学习技术被提出,以“数据可用不可见”的方式安全地构建跨行业数据共享,打通了企业间的数据孤岛,众多企业和研究机构利用该技术解决多方跨域机器学习相关业务的数据隐私问题。根据参与方数据分布的不同,联邦学习分为横向联邦学习和纵向联邦学习,纵向联邦学习本质是特征的联合,适用于各参与机构间用户重叠多,特征重叠少的场景,以一种隐私保护的方式计算训练损失和梯度,将不同的特征聚合在一起。纵向联邦学习在执行模型训练前要对数据进行预处理,各参与方持有的数据可能来自不同的样本空间,需要根据所选关键键值信息完成数据的对齐。
3.数据对齐是纵向联邦学习的数据预处理过程,各参与方依据所选关键键值信息实现样本的求交,并保护各自非交集数据的隐私,当前纵向联邦学习中数据安全对齐的实现借助隐匿集合求交方法psi来完成,通过psi参与方可以得到所有数据集合的交集数据,而无法获知或反推其他参与方的非交集部分数据,但在现有实现中,参与方可以得到交集数据的明文信息,进而可以反推得到其他参与方样本的关键键值信息和相关数据,其中可能包括用户身份证号、手机号等非常重要的个人隐私信息,需要加以防范。
4.例如神州融安数字科技(北京)有限公司在其拥有的专利技术“具有交集计数的psi获取交集信息的方法及装置”(专利申请号cn202111493660.4,申请公告号cn114374518a)中,公开了一种重构的基于dh的隐匿集合求交方法,该发明发送方用自己的私钥将自己的数据集合sa加密,并将加密后的数据集合sa发送给接收方,接收方用自己的私钥对发送方第一次加密的数据集合sa、自己的数据集合sb执行加密,并对二次加密的发送方数据集合sa进行随机置换,最后将乱序的二次加密发送方数据集合sa和一次加密的接收方数据集合sb传回给发送方,发送方用自己的私钥对第一次加密的接收方数据集合sb执行加密,然后计算二次加密的接收方数据集合sb与乱序的二次加密的发送方数据集合sa之间的交集,得到交集个数,接收方通过交集信息可以得到其明文信息,实现发送方统计交集数量和接收方得到正确交集的功能。该发明在协议流程中接收方可以获取两方集合的交集信息,但不能获得交集之外发送方的其他集合元素,发送方可以获得交集的个数,也不能获得其他信息,在一定程度上保护了用户的隐私信息,但是,该方法由于仅对发送方数据进行了随机置换,接收方可以通过计算得知的求交结果的明文信息反推出其他参与方样本的关键
键值信息和相关数据,仍然会导致参与方交集数据泄漏,此外,在计算过程中多次涉及加密和乱序计算,使得用户计算负担大,运行效率低。


技术实现要素:

5.本发明的目的是克服现有技术中的不足,提出一种用于纵向联邦学习数据对齐的隐匿集合求交方法,旨在解决现有技术中存在的用户隐私信息泄露的技术问题。
6.为实现上述目的,本发明采取的技术方案包括如下步骤:
7.(1)初始化参数:
8.初始化包括来自不同类型机构的两个参与方用户a和用户b的纵向联邦学习系统,用户a参与求交的用户信息为x0={x
01
,x
02
,...,x
0n
,...,x
0n
},x0对应的关键键值信息为d0={d
01
,d
02
,...,d
0n
,...,d
0n
},用户b参与求交的用户信息为x1={x
11
,x
12
,...,x
1n
,...,x
1n
},x1对应的关键键值信息为d1={d
11
,d
12
,...,d
1n
,...,d
1n
},用户a待映射的布谷鸟哈希表s0和用户b待映射的简单哈希表s1均包括m个分箱,用户a构建布谷鸟哈希表s0和用户b构建简单哈希表s1所用的哈希函数为f={f1,f2,...,fk,...,fk},其中,x
0n
表示a的第n个用户信息,d
0n
表示x
0n
对应的关键键值信息,x
1n
表示b的第n个用户信息,d
1n
表示x
1n
对应的关键键值信息,n表示用户a、用户b参与求交的用户信息的总数,n≥1,m=εn,ε表示超参数,ε≥1,fk表示第k个哈希函数,k表示哈希函数的总数,1≤k≤m;
9.(2)两个用户分别对各自的用户信息和关键键值信息进行映射:
10.用户a采用布谷鸟哈希表映射函数fc将第n个用户信息x
0n
及其对应的关键键值信息d
0n
映射至布谷鸟哈希表s0中的一个分箱中,得到x
0n
所在分箱映射值为d
0,n
||x
0,n
、其余m-n个分箱为空的布谷鸟哈希表s
′0;用户b采用简单哈希表映射函数fs将第n个用户信息x
1n
及其对应的关键键值信息d
1n
映射至简单哈希表s1中的k个分箱中,得到x
1n
所在第fk(d
1,n
||x
1,n
)个分箱的值为d
1,n
||x
1,n
的简单哈希表s
′1;
11.(3)两个用户对哈希表s
′0、s
′1进行编码:
12.(3a)用户a生成伪随机函数的密钥ka,用户b生成伪随机函数的密钥kb;
13.(3b)用户a和用户b按照不经意伪随机函数协议f
oprf
,并通过kb对布谷鸟哈希表s
′0进行编码,得到用户a的编码后的布谷鸟哈希表;
14.(3c)用户a对编码后的布谷鸟哈希表中的每个空分箱进行随机填充,并对随机填充得到的包含n个映射值和m-n个填充有随机值的布谷鸟哈希表复制log n-1次,然后通过ka对由随机填充后的布谷鸟哈希表及其m log n个复制结果组成的布谷鸟哈希表s
″0使用伪随机函数进行编码,得到包含用户信息x0和关键键值信息d
″′0的用户a布谷鸟哈希表s
′0的编码结果;
15.(3d)用户b对s
′1的m个分箱进行随机填充,得到由m个包含log n个元素的分箱组成的简单哈希表,并使用伪随机函数,通过伪随机函数密钥kb对该简单哈希表进行编码,得到用户b的编码后由m log n个元素组成的简单哈希表s
″1;
16.(3e)用户a和用户b按照不经意伪随机函数协议f
oprf
,并通过ka对向量s
″1进行编码,得到包含用户信息x1和关键键值信息d
″′1的用户b简单哈希表s
′1的编码结果

17.(4)两个用户对编码结果s
″′0、s
″′1进行混淆:
18.(4a)用户a对编码结果s
″′0中的用户信息x0进行加性秘密共享,得到用户a、用户b的x0的信息共享值《x0》a、《x0》b,用户b对编码结果s
″′1中的用户信息x1进行加性秘密共享,得到用户a、用户b的x1信息共享值《x1》a、《x1》b;
19.(4b)用户a计算用户信息共享值《x》a=《x0》a+《x1》a并将s
″′0中的关键键值信息d
″′0与《x》a进行拼接,得到拼接结果d
″′0||《x》a,用户b计算用户信息共享值《x》b=《x0》b+《x1》b并将s
″′1中的关键键值信息d
″′1与《x》b进行拼接,得到拼接结果d
″′1||《x》b;
20.(4c)用户a将随机选择的重排列规则ωa,用户b将d1″′
||《x》b作为混淆网络的输入,按照不经意混淆网络协议f
o-shuffle
,并通过重排列规则ωa对拼接结果d1″′
||《x》b进行混淆,得到d1″′
的混淆值ωa(d1″′
)和《x》b的混淆值ωa(《x》b),然后对ωa(d1″′
)和ωa(《x》b)进行加性秘密共享,得到用户a、用户b的混淆结果共享值《ωa(d1″′
)》a||《ωa(《x》b)》a、《ωa(d1″′
)》b||《ωa(《x》b)》b;
21.(4d)用户a使用ωa对d0″′
、《x》a分别进行混淆,得到混淆关键键值信息ωa(d0″′
)和混淆用户信息共享值ωa(《x》a),并计算《ωa(d1″′
)》a||《ωa(《x》b)》a的关键键值信息共享值《ωa(d1″′
)》a与混淆关键键值信息ωa(d0″′
)的差值α=《ωa(d1″′
)》
a-ωa(d0″′
),以及《ωa(d1″′
)》a||《ωa(《x》b)》a的混淆用户信息共享值《ωa(《x》b)》a与混淆加性秘密共享值ωa(《x》a)的和值β=《ωa(《x》b)》a+ωa(《x》a);
22.(4e)用户a将α和β的拼接结果α||β,用户b将随机选择的重排列规则ωb作为混淆网络的输入,按照不经意混淆网络协议f
o-shuifffle
,并通过ωb对α||β进行混淆,得到α的混淆值ωb(α)和β的混淆值ωb(β),然后对ωb(α)和ωb(β)进行加性秘密共享,得到用户a、用户b的混淆结果共享值《ωb(α)》a||《ωb(β)》a、《ωb(α)》b||《ωb(β)》b,再将《ωb(α)》a、《ωb(β)》a作为用户a的保留比特串共享值《res》a、混淆用户信息共享值《x

》a;
23.(4f)用户b使用ωb对混淆结果共享值《ωa(d1″′
)》b||《ωa(《x》b)》b中的《ωa(d1″′
)》b、《ωa(《x》b)》b分别进行混淆,得到混淆关键键值信息ωb(《ωa(d1″′
)》b)和混淆用户信息共享值ωb(《ωa(《x》b)》b),并将《ωb(α)》b+ωb(《ωa(d1″′
)》b)、《ωb(β)》b+ωb(《ωa(《x》b)》b)作为用户b的保留比特串共享值《res》b、混淆用户信息共享值《x

》b;
24.(5)用户获取隐匿集合求交结果:
25.(5a)初始化保留比特串res的项数为t,最大项数为t=m log n,并令t=1;
26.(5b)用户a和用户b通过加性秘密共享交换共享值《res》a和《res》b,计算项数为t的保留比特串res=《res》a+《res》b;
27.(5c)用户a和用户b判断res中第t项比特位的数值是否为0,若是,则用户a保留《x

》a中第t项位置的数据,用户b保留《x

》b中第t项位置的数据,否则,用户a删除《x

》a中第t项位置的数据,用户b删除《x

》b中第t项位置的数据;
28.(5d)用户a和用户b判断t=t是否成立,若是,用户a返回删除冗余信息后的混淆用户信息共享值《x

》a至用户b,用户b返回删除冗余信息后的混淆用户信息共享值《x

》b至用户a,用户a和用户b计算《x

》a与《x

》b的交集信息x

=《x

》a+《x

》b,否则,令t=t+1,并执行步骤(5c)。
29.本发明与现有技术相比,具有以下优点:
30.第一,本发明在用户对编码结果进行混淆阶段,是通过不经意混淆网络协议和随机选取的重排列规则对两用户的编码数据进行混淆,避免了现有技术由于仅对发送方数据进行了随机置换,即随机混淆导致的接收方可以通过计算得知的求交结果的明文信息反推出其他参与方样本的关键键值信息和相关数据的缺陷,有效提高了数据求交过程中的数据隐私安全性。
31.第二,本发明在用户对映射数据进行编码阶段,是通过不经意伪随机函数协议对映射哈希表进行编码,仅涉及少量的哈希编码计算,避免了现有技术由于对数据编码时使用大量公私钥加解密计算而产生的损耗问题,有效减轻了用户的计算负担,提高了集合求交过程的计算效率。
附图说明
32.图1是本发明的实现流程图。
具体实施方式
33.下面结合附图和具体实施例对本发明作进一步详细描述。
34.参照附图1,本发明包括如下步骤:
35.步骤1)初始化参数:
36.初始化包括来自不同类型机构的两个参与方用户a和用户b的纵向联邦学习系统,用户a参与求交的用户信息为x0={x
01
,x
02
,...,x
0n
,...,x
0n
},x0对应的关键键值信息为d0={d
01
,d
02
,...,d
0n
,...,d
0n
},用户b参与求交的用户信息为x1={x
11
,x
12
,...,x
1n
,...,x
1n
},x1对应的关键键值信息为d1={d
11
,d
12
,...,d
1n
,...,d
1n
},用户a待映射的布谷鸟哈希表s0和用户b待映射的简单哈希表s1均包括m个分箱,用户a构建布谷鸟哈希表s0和用户b构建简单哈希表s1所用的哈希函数为f={f1,f2,...,fk,...,fk},其中,x
0n
表示a的第n个用户信息,d
0n
表示x
0n
对应的关键键值信息,x
1n
表示b的第n个用户信息,d
1n
表示x
1n
对应的关键键值信息,n表示用户a、用户b参与求交的用户信息的总数,n≥1,m=εn,ε表示超参数,ε≥1,fk表示第k个哈希函数,k表示哈希函数的总数,1≤k≤m;
37.本实施例中,ε取2.4,用户构建布谷鸟哈希表和简单哈希表的哈希函数f(
·
),其表达式为:
38.f(
·
):{0,1}
l

[m]
[0039]
其中,{0,1}
l
表示长度为l的比特串,

表示生成操作;
[0040]
步骤2)两个用户分别对各自的用户信息和关键键值信息进行映射:
[0041]
用户a采用布谷鸟哈希表映射函数fc将第n个用户信息x
0n
及其对应的关键键值信息d
0n
映射至布谷鸟哈希表s0中的一个分箱中,得到x
0n
所在分箱映射值为d
0,n
||x
0,n
、其余m-n个分箱为空的布谷鸟哈希表s0';用户b采用简单哈希表映射函数fs将第n个用户信息x
1n
及其对应的关键键值信息d
1n
映射至简单哈希表s1中的k个分箱中,得到x
1n
所在第fk(d
1,n
||x
1,n
)个分箱的值为d
1,n
||x
1,n
的简单哈希表s1';
[0042]
本实施例中,布谷鸟哈希表为解决哈希冲突的问题而提出,利用较少计算换取了较大空间,每个存储分箱中只有一个元素,具有占用空间小、查询迅速等特性。简单哈希表将元素进行映射时,则不考虑其存储位置是否已经存在元素,一个分箱内可能有多个元素
存在,将元素映射至哈希表中,减小数据之间的比较次数;布谷鸟哈希表s0',以及简单哈希表s1',其获取步骤为:
[0043]
布谷鸟哈希表s0'的获取步骤为:用户a计算数据元素d
0,n
||x
0,n
的k个哈希值{f1(d
0,n
||x
0,n
),f2(d
0,n
||x
0,n
),...,fk(d
0,n
||x
0,n
),...,fk(d
0,n
||x
0,n
)},并判断从该k个哈希值随机选取的一个哈希值所在的分箱是否为空,若是,将d
0,n
||x
0,n
存储到该分箱中,否则,按照d
0,n
||x
0,n
计算哈希值以及判断方法对分箱中原有的数据进行处理,并将d
0,n
||x
0,n
存储到该分箱中,得到x
0n
所在分箱映射值为d
0,n
||x
0,n
、其余m-n个分箱为空的布谷鸟哈希表s0';
[0044]
简单哈希表s1'的获取步骤为:用户b计算d
1,n
||x
1,n
的k个哈希值{f1(d
1,n
||x
1,n
),f2(d
1,n
||x
1,n
),...,fk(d
1,n
||x
1,n
),...,fk(d
1,n
||x
1,n
)},对于k个哈希函数值fk(d
1,n
||x
1,n
),将d
1,n
||x
1,n
存储到简单哈希表的第fk(d
1,n
||x
1,n
)个分箱,得到x
1n
所在第fk(d
1,n
||x
1,n
)个分箱的值为d
1,n
||x
1,n
的简单哈希表s1';
[0045]
步骤3)两个用户对哈希表s0'、s1'进行编码:
[0046]
本实施例中,两个用户通过不经意伪随机函数协议f
oprf
和伪随机数生成器生成的密钥对映射数据后的哈希表进行编码,完成哈希表s0'、s1'的编码过程;
[0047]
步骤3a)用户a生成伪随机函数的密钥ka,用户b生成伪随机函数的密钥kb;
[0048]
本实例中,用户a生成伪随机函数的密钥ka,用户b生成伪随机函数的密钥kb,其生成方法为:用户a、用户b分别采用伪随机数生成器,并将伪随机数生成器生成的数字序列ka、kb作为用户a的伪随机函数的密钥、用户b的伪随机函数的密钥;
[0049]
步骤3b)用户a和用户b按照不经意伪随机函数协议f
oprf
,并通过kb对布谷鸟哈希表s0'进行编码,得到用户a的编码后的布谷鸟哈希表f
kb
(s0');
[0050]
本实施例中,用户使用不经意伪随机函数协议和伪随机函数密钥对映射哈希表进行编码,仅有少量的哈希编码计算,避免了大量运算,保证其运行效率优于其他计算协议,减轻隐匿集合求交过程的计算负担;
[0051]
用于对布谷鸟哈希表s0'进行编码的伪随机函数其表达式为:
[0052][0053]
其中,表示kb的比特串,表示s'0的比特串,

表示生成操作,

表示无效符号,{0,1}
σ
表示生成比特串;
[0054]
步骤3c)用户a对编码后的布谷鸟哈希表中的每个空分箱进行随机填充,并对随机填充得到的包含n个映射值和m-n个填充有随机值的布谷鸟哈希表复制log n-1次,然后通过ka对由随机填充后的布谷鸟哈希表及其m log n个复制结果组成的布谷鸟哈希表s
0”使用伪随机函数进行编码,得到包含用户信息x0和关键键值信息d
0”'的用户a布谷鸟哈希表s0'的编码结果
[0055]
步骤3d)用户b对s1'的m个分箱进行随机填充,得到由m个包含log n个元素的分箱组成的简单哈希表,并使用伪随机函数,通过伪随机函数密钥kb对该简单哈希表进行编码,得到用户b的编码后由m log n个元素组成的简单哈希表s
1”;
[0056]
本实施例中,步骤(3c)和(3d)中对布谷鸟哈希表和简单哈希表进行填充复制,得到包含m log n个元素的布谷鸟哈希表和简单哈希表,进行之后的计算;
[0057]
步骤3e)用户a和用户b按照不经意伪随机函数协议f
oprf
,并通过ka对向量s1″
进行编码,得到包含用户信息x1和关键键值信息d1″
的用户b简单哈希表s1′
的编码结果
[0058]
步骤4)两个用户对编码结果s0″′
、s1″′
进行混淆:
[0059]
本实施例中,为避免用户通过编码数据的顺序获取数据信息,此步骤对(3)中所得编码结果s0″′
、s1″′
进行混淆,得到混淆后的编码数据,并通过加性秘密共享将信息共享给用户,确保用户无法从顺序中获取编码信息;
[0060]
步骤4a)用户a对编码结果s0″′
中的用户信息x0进行加性秘密共享,得到用户a、用户b的x0的信息共享值《x0》a、《x0》b,用户b对编码结果s1″′
中的用户信息x1进行加性秘密共享,得到用户a、用户b的x1信息共享值《x1》a、《x1》b;
[0061]
步骤4b)用户a计算用户信息共享值《x》a=《x0》a+《x1》a并将s0″′
中的关键键值信息d0″′
与《x》a进行拼接,得到拼接结果d0″′
||《x》a,用户b计算用户信息共享值《x》b=《x0》b+《x1》b并将s1″′
中的关键键值信息d1″′
与《x》b进行拼接,得到拼接结果d1″′
||《x》b;
[0062]
步骤4c)用户a将随机选择的重排列规则ωa,用户b将d1″′
||《x》b作为混淆网络的输入,按照不经意混淆网络协议f
o-shuffle
,并通过重排列规则ωa对拼接结果d1″′
||《x》b进行混淆,得到d1″′
的混淆值ωa(d1″′
)和《x》b的混淆值ωa(《x》b),然后对ωa(d1″′
)和ωa(《x》b)进行加性秘密共享,得到用户a、用户b的混淆结果共享值《ωa(d1″′
)》a||《ωa(《x》b)》a、《ωa(d1″′
)》b||《ωa(《x》b)》b;
[0063]
本实施例中,采用不经意混淆网络协议f
o-shuffle
和随机选取的重排列规则ωa来对数据进行混淆,完成对数据的随机重排列,确保用户无法从结果中得知数据顺序信息;
[0064]
通过重排列规则ωa对拼接结果d1″′
||《x》b进行混淆,实现步骤为:用户a和用户b通过a随机选择的重排列规则ωa={ω
a1
,ω
a2
,...,ω
an
,...,ω
an
},对拼接结果d1″′
||《x》b中包含的d1″′
={d
11
″′
,d
12
″′
,...,d
1n
″′
,...,d
1n
″′
},以及《x》b={《x》
b1
,《x》
b2
,...,《x》
bn
,...,《x》
bn
}中的每一项进行重排列,实现对d1″′
||《x》b的混淆,得到d1″′
的混淆值和《x》b的混淆值其中,ω
an
表示ωa的第n个数据值,d
1n
″′
表示d1″′
的第n个数据,《x》
bn
表示《x》b的第n个数据,表示d1″′
的第ω
an
个数据,表示《x》b的第ω
an
个数据;
[0065]
步骤4d)用户a使用ωa对d0″′
、《x》a分别进行混淆,得到混淆关键键值信息ωa(d0″′
)和混淆用户信息共享值ωa(《x》a),并计算《ωa(d1″′
)》a||《ωa(《x》b)》a的关键键值信息共享值《ωa(d1″′
)》a与混淆关键键值信息ωa(d0″′
)的差值α=《ωa(d1″′
)》
a-ωa(d0″′
),以及《ωa(d1″′
)》a||《ωa(《x》b)》a的混淆用户信息共享值《ωa(《x》b)》a与混淆加性秘密共享值ωa(《x》a)的和值β=《ωa(《x》b)》a+ωa(《x》a);
[0066]
步骤4e)用户a将α和β的拼接结果α||β,用户b将随机选择的重排列规则ωb作为混淆网络的输入,按照不经意混淆网络协议f
o-shuffle
,并通过ωb对α||β进行混淆,得到α的混淆值ωb(α)和β的混淆值ωb(β),然后对ωb(α)和ωb(β)进行加性秘密共享,得到用户a、用户b的混淆结果共享值《ωb(α)》a||《ωb(β)》a、《ωb(α)》b||《ωb(β)》b,再将《ωb(α)》a、《ωb(β)》a作为用户a的保留比特串共享值《res》a、混淆用户信息共享值《x

》a;
[0067]
步骤4f)用户b使用ωb对混淆结果共享值《ωa(d1″′
)》b||《ωa(《x》b)》b中的《ωa(d1″′
)》b、《ωa(《x》b)》b分别进行混淆,得到混淆关键键值信息ωb(《ωa(d1″′
)》b)和混淆用户信息共享值ωb(《ωa(《x》b)》b),并将《ωb(α)》b+ωb(《ωa(d1″′
)》b)、《ωb(β)》b+ωb(《ωa(《x》b)》b)作为用户b的保留比特串共享值《res》b、混淆用户信息共享值《x

》b;
[0068]
步骤5)用户获取隐匿集合求交结果:
[0069]
本实施例中,得到混淆数据信息后,两个用户使用保留比特串res的判断方式删除冗余数据信息,获取隐匿集合求交结果,此步骤是在数据经过编码混淆的形式下进行的,用户最终获取的求交结果也是编码混淆后的,确保数据隐私安全;
[0070]
步骤5a)初始化保留比特串res的项数为t,最大项数为t=m log n,并令t=1;
[0071]
步骤5b)用户a和用户b通过加性秘密共享交换共享值《res》a和《res》b,计算项数为t的保留比特串res=《res》a+《res》b;
[0072]
步骤5c)用户a和用户b判断res中第t项比特位的数值是否为0,若是,则用户a保留《x

》a中第t项位置的数据,用户b保留《x

》b中第t项位置的数据,否则,用户a删除《x

》a中第t项位置的数据,用户b删除《x

》b中第t项位置的数据;
[0073]
步骤5d)用户a和用户b判断t=t是否成立,若是,用户a返回删除冗余信息后的混淆用户信息共享值《x

》a至用户b,用户b返回删除冗余信息后的混淆用户信息共享值《x

》b至用户a,用户a和用户b计算《x

》a与《x

》b的交集信息x

=《x

》a+《x

》b,否则,令t=t+1,并执行步骤5c)。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1