CN103500178B - 一种fs算法最差情况下的快速多模式匹配方法 - Google Patents
一种fs算法最差情况下的快速多模式匹配方法 Download PDFInfo
- Publication number
- CN103500178B CN103500178B CN201310406833.3A CN201310406833A CN103500178B CN 103500178 B CN103500178 B CN 103500178B CN 201310406833 A CN201310406833 A CN 201310406833A CN 103500178 B CN103500178 B CN 103500178B
- Authority
- CN
- China
- Prior art keywords
- state
- dict
- dictionary
- depth
- skip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种FS算法最差情况下的快速多模式匹配方法。本方法为:1)将模式串集合转换成反向有限自动机,计算坏字符转移函数skip1和好后缀转移函数skip2;2)构建自动机中状态s在遇到字符c时发生失配所用词典,包括:匹配串u在其他模式串中的所有深度大于u的出现位置,后缀suffix(u)在其他模式串中的所有深度大于suffix(u)的出现位置;3)设置一倒计时值cdown;将待匹配文件与模式串集合进行匹配,当skip2跳转时,记录当前失配状态对应的词典,跳转后每匹配一个字符cdown减1;若发生skip1跳转,则cdown增加skip1的跳转值;4)当cdown为0且记录的词典不为空时,利用当前记录的词典搜索对应的子串终止状态,找到相应的跳转位置,继续匹配。
Description
技术领域
本发明涉及一种多模式匹配方法,尤其涉及一种FS算法最差情况下的快速多模式匹配方法。
背景技术
模式匹配算法是计算机科学领域的一类基础算法,在诸多领域都有重要的应用,例如:拼写检查、搜索引擎、计算机病毒特征码匹配、入侵检测、数据压缩以及DNA序列匹配等都离不开模式匹配算法。对入侵检测等应用而言,模式匹配算法不仅要在平均情况下有较快的检测速度,在最差情况下也要快速检测,防止被攻击者利用算法的最差性能发起对入侵检测系统的DDoS(Distributed Denial of Service)攻击。例如在入侵检测系统进行域名匹配过程中,当模式集中同时存在形如abcd.com和abcd.com.cn的域名记录时,如果攻击者构造形如abcd.com.cn.abcd.com.cn的域名查询,就会造成Fan-Su(FS)或AC-BM算法性能急剧下降。
Fan-Su(FS)算法在预处理时反向构建DFSA,并采用改进的BM算法思想增加跳跃距离,平均情况下效率比经典的Aho-Corasick(AC)算法和ACBM算法高。但是由于FS基于反向自动机从右向左匹配,因此在整个匹配过程中,会使得某些字符被多次扫描,导致最差情况下的时间复杂度为O(n*maxlen)。
发明内容
本发明的目的是为了提高FS算法在最差情况下的性能,减少FS算法的重复匹配次数,使其可以更安全地用于实时的域名匹配。
本发明的技术方案为:
一种FS算法最差情况下的快速多模式匹配方法,其步骤为:
1)将所选的模式串集合转换成反向有限自动机,同时根据模式串中的字符分布计算坏字符转移函数skip1和好后缀转移函数skip2;
2)构建该反向有限自动机中的状态s在遇到字符c时发生失配所用的词典dict(s,c),该词典dict(s,c)包括:已匹配串u在所述模式串集合其他模式串中的所有深度大于u的出现位置,以及已匹配串u的后缀suffix(u)在其他模式串中的所有深度大于suffix(u)的出现位置;其中,c∈Σ,Σ是所述模式串集中的所有字符的集合;
3)设置一个倒计时值cdown=skip2(s,c)-depth(s);将输入的待匹配文件与所述模式串集合进行匹配,当发生失配使用skip2跳转时,记录当前失配状态对应的词典dict,跳转后每匹配一个字符cdown减1;若发生skip1跳转,则cdown增加skip1的跳转值;其中,skip2(s,c)表示在状态s处遇到失配字符c后,利用skip2函数计算得到的跳转长度,depth(s)表示s在反向有限自动机中的深度;
4)当cdown为0且记录的词典不为空时,利用当前记录的词典dict来搜索到对应的子串终止状态,找到相应的跳转位置,然后匹配跳转到该位置,继续匹配。
进一步的,利用结构体Dict_Node记录所述词典dict(s,c)中每一元素的信息,包括:记忆子串的起始状态srcstate、记忆子串的终止状态deststate、记忆子串的宽度length,以及记忆子串中的输出信息missed_output。
进一步的,利用状态s的失效转移函数f(x)计算u在所述模式串集合其他模式串中的所有深度大于u的出现位置:对于所述反向有限自动机中的任一状态x,如果f(x)=s,则将状态x对应的串的位置加入到词典dict(s,c)中。
进一步的,当转向函数goto(s,c)=0时,构建所述词典dict(s,c);如果满足goto(x,c)≠0并且depth(x)=skip2(s,c)-depth(s),则创建的结构体Dict_Node满足公式 否则,创建的结构体Dict_Node满足公式 其中,depth(x)表示x在反向有限自动机中的深度;getAncestor(x,depth(s))为在状态x处沿着反向有限自动机向上找到第depth(s)个祖先状态,并且在寻找过程中记录经过的有输出的状态。
进一步的,对于词典dict(s,c)归并,得到已匹配串u的后缀suffix(u)在其他模式串中的所有深度大于suffix(u)的出现位置:对反向有限自动机进行宽度优先遍历,对于状态s及其父节点状态p,如果dict(s,c)=dict(s,c)∪dict(p),则归并时,如果出现两词典的相应结构体Dict_Node的srcstate相同,则取length较大者结构体Dict_Node作为归并后节点的Dict_Node;其中,dict(p)为不考虑失配字符构造的词典。
进一步的,设置一深度阈值depthT,如果状态s的状态深度小于该深度阈值,则对该状态s不予构造词典。
在单模匹配算法Turbo-BM对BM算法的最差时间复杂度改进中利用了跳过记忆子串的策略,本发明就是在FS算法中也借用了这一思想,针对每一个自动机的状态都建立一个词典,借助词典完成记忆子串的跳跃,减少FS算法中重复匹配次数,改进后的算法称为S_FS算法,算法流程如图1所示。
1、FS算法基础
FS算法将模式串集合转换成反向有限自动机,得到转向函数goto和输出函数output函数,同时根据模式串中的字符分布来计算skip1函数(坏字符转移函数)和skip2函数(好后缀转移函数)。当匹配第一个字符时发生失配,此时移动距离值利用skip1进行计算;当失配时已匹配字符数不为0时,则利用skip2计算。FS使用的是改进后的好后缀和坏字符规则:计算skip2函数值时将文本中导致失配的字符也考虑在内,坏字符仅指在窗口内第一次比较就发生失配时文本中的字符。
2、S_FS算法改进思想
文中所指的记忆子串也包括导致失配的字符。
当待匹配文本和模式集合匹配过程中发生失配采用skip2跳转(即已经存在部分匹配的好后缀)时,记已经匹配的串为u,此时有限自动机的状态对应的词典记录u记忆子串位置的集合,词典中的位置信息包括两部分,一部分是u在其他模式串中的所有深度大于u的出现位置,另一部分是u的后缀suffix(u)在其他模式串中的所有深度大于suffix(u)的出现位置;当然还包括子串的长度信息length。因此当u在模式集合中存在相同子串u′时,可以利用词典中的元素跳过u′的比较,当u不存在完全相同的子串时,也可以利用词典中的元素来避免u后缀的重复比较。
在多模匹配过程中,发生失配采用skip2进行跳转时,使用记忆词典来存储失配状态的位置信息,使得在后续的比较中利用该词典尽可能多地跳过重复的比较。记忆词典中存储了所有元素串的位置信息,包括起始状态、终止状态和子串长度,为了避免在状态的多步跳转中遗漏输出,还需要记录串跳过的所有输出节点。由于导致失配的字符c也参与FS算法的失配跳转计算,因此,导致失配的字符也可以加入到记忆子串中,从而避免该字符的重复比较。
3、S_FS算法预处理
S_FS算法首先构造反向有限自动机并沿用了原有的skip1和skip2函数的计算,添加了记忆词典的构造预处理。定义结构体Dict_Node,该结构体对应词典中的每一个元素。记反向有限自动机中的状态s在遇到字符c,c∈Σ(Σ是模式集中的所有字符的集合)时发生失配所用的词典为dict(s,c)。Dict_Node定义包括srcstate,deststate和length,以及missed_output(srcstate和deststate分别指记忆子串的起始状态和终止状态,length是记忆子串的宽度,missed_output数组保存记忆子串中的输出信息)。
对状态s构造记忆词典dict(s,c)的过程分为两步。首先计算词典dict(s,c)的第一部分。由于skip2的计算过程中已经得到了所有状态的失效转移函数f,因此可以利用f函数来计算。对状态s,若(s,x均是状态),则可将状态x对应的串的位置加入到dict(s,c)中。对于满足goto(s,c)≠0的情况,由于状态s在遇到字符c时不会触发记录词典的操作,因此可以不计算。仅考虑goto(s,c)=0,此时分为2种情况:
A)满足goto(x,c)≠0 and depth(x)=skip2(s,c)-depth(s),则记忆子串包括字符c,此时创建的Dict_Node满足以下公式,并加入状态s的词典中。
B)否则,此时创建的Dict_Node满足以下公式,并加入状态s的词典中。
注:
1.depth(x)表示x在自动机中的深度。
2.skip2(s,c)表示在状态s处遇到失配字符c后,利用skip2函数计算得到的跳转长度。
3.getAncestor(state s,size_t d)函数功能:在状态s处沿着自动机向上找到第d个祖先状态,并且在寻找过程中记录经过的有输出的状态。
对满足的情况计算完毕后,然后进行词典归并操作。归并操作将已匹配串后缀的所有记忆子串都加入到词典中。
归并时,对反向有限自动机进行宽度优先遍历,对于状态s和其父节点状态p,dict(s,c)=dict(s,c)∪dict(p),定义dict(p)为不考虑失配字符构造的词典。则归并时,如果遇到srcstate相同的两个Dict_Node,取length较大者作为最终归并后节点的Dict_Node。归并操作完成了词典dict(s,c)的第二部分的计算。
这样就完成了词典的构造过程。算法可以借助词典完成多步跳转,但并非所有情况下使用词典都能达到加速匹配的效果,当使用记忆词典的代价大于重复比较的代价时,对该状态不预计算词典。因此定义状态的深度阈值depthT,在构造词典时,对于深度(状态的深度本身在建立后缀树的时候就是存储在每个状态节点里面,是后缀树里面的每个状态节点到根节点的深度)小于阈值的状态不予构造词典,从而使得程序的性能能够得到最大程度的提升。
4、S_FS匹配过程
改进的算法是在FS匹配基础上增加了记录词典、搜索词典、利用词典进行状态转移这三个部分。
在匹配过程中,当发生失配使用skip2跳转时,记录当前失配状态s对应的词典dict(记录词典的入口位置,即记录词典),并设置一个倒计时值cdown,其中cdown=skip2(s,c)-depth(s),跳转后每匹配一个字符cdown减1,若发生skip1跳转,则cdown增加skip1的跳转值。当cdown为0且记录的词典不为空时,意味着匹配到达记忆子串的开始状态位置,此时就可以利用当前记录的词典dict来搜索到对应的子串终止状态(即搜索词典的部分),找到相应的跳转值(即Dict_Node中存储的length)然后实现状态的多步转移,继续匹配,从而达到跳过记忆子串的目的。如果跳转后的位置正好是某个模式串的末尾,那就是发生了匹配,然后就会输出匹配的串。
与现有技术相比,本发明的优点:
图2为一般情况下算法查找时间对比图,通过实验数据的分析,对比于现有的FS算法,本发明的方案拥有的优势是:充分利用了上一次匹配过程的匹配信息,减少了下一轮匹配过程中的字符串比较次数,尤其是在FS算法的最差情况下,能够提高算法的运行效率,算法效率接近AC算法性能,平均情况下S_FS算法性能也优于ACBM和AC算法。
附图说明
图1为本发明的匹配方法流程图;
图2为一般情况下算法查找时间对比图;其中,待匹配文本:Reuters-21578新闻文本,大小约27328KB,模式串集合:文本中长度在6以上的的高频词,模式串数目从10开始到150以20为单位递增,S_FS算法的深度阈值depthT取值为3;
图3为goto函数转移图。
具体实施方式
S_FS算法运行举例说明:假设待匹配的文本T是abcd.com.cn.abcd.com.cn.abcd.com.cn.,模式串集合P={abcd.com.cn.,abcd.com.},minlen=8。转移函数如图3所示。
若使用FS算法进行比较,则比较结果见下表1,竖线表示匹配窗口开始位置,下划线部分表示重复比较部分,加粗表示导致失配的字符。
表1、FS算法匹配过程
至此FS匹配过程中总比较次数64次,文本总长度为36。重复比较次数共28次,其中好后缀的重复比较24次,失配比较4次。
若使用S_FS算法,则首先预处理将得到记忆词典,构造时设定depthT=4。在阈值depthT作用下构造的词典结果见表2。
表2词典内容
state | char | dict(state,char) |
1~14 | Σ | NULL |
15 | Σ-{.} | {node1} |
15 | {.} | NULL |
16 | Σ-{d} | {node2} |
16 | {d} | NULL |
17 | Σ-{c} | {node3} |
17 | {c} | NULL |
18 | Σ-{b} | {node4} |
18 | {b} | NULL |
19 | Σ-{a} | {node5} |
19 | {a} | NULL |
20 | Σ | {node6} |
其中node1,node2的内容见表3:
表3词典DICT_NODE内容
srcstate | deststate | length | missed_output | |
node1 | 4 | 7 | 3 | / |
node2 | 4 | 8 | 4 | |
node3 | 4 | 9 | 5 | |
node4 | 4 | 10 | 6 | |
node5 | 4 | 11 | 7 | |
node6 | 4 | 12 | 8 | state12 |
S_FS算法的匹配过程见表4(注:Start of File简称为SoF,待匹配文本串的开始处;标下划线的表示使用词典跳过的子串,加粗字符表示失配字符):
表4、S_FS1算法匹配过程
在上述匹配过程中,总的比较次数是40次,其中失配字符重复比较次数为4次,与FS算法相比,省去了24次的重复比较。
最差情况下S_FS性能对比如表5,待匹配文本为(abc)n,文本大小为3328KB,模式集合为{abcabcabc,cabcabcabcab,abcabcabcabcabc}。
表5、各算法运行结果对比
算法 | 查找时间 | 平均比较数 | 词典平均跳过步数 |
AC | 66 | 1 | / |
ACBM | 237 | 9.189 | / |
FS | 308 | 8.8894 | / |
S_FS1 | 164 | 1.9915 | 11.5 |
S_FS2 | 186 | 2.2914 | 11 |
Claims (3)
1.一种FS算法最差情况下的快速多模式匹配方法,其步骤为:
1)将所选的模式串集合转换成反向有限自动机,同时根据模式串中的字符分布计算坏字符转移函数skip1和好后缀转移函数skip2;
2)构建该反向有限自动机中的状态s在遇到字符c时发生失配所用的词典dict(s,c),该词典dict(s,c)包括:已匹配串u在所述模式串集合其他模式串中的所有深度大于u的出现位置,以及已匹配串u的后缀suffix(u)在其他模式串中的所有深度大于suffix(u)的出现位置;其中,c∈Σ,Σ是所述模式串集中的所有字符的集合;
3)设置一个倒计时值cdown=skip2(s,c)-depth(s);将输入的待匹配文件与所述模式串集合进行匹配,当发生失配使用skip2跳转时,记录当前失配状态对应的词典dict,跳转后每匹配一个字符cdown减1;若发生skip1跳转,则cdown增加skip1的跳转值;其中,skip2(s,c)表示在状态s处遇到失配字符c后,利用skip2函数计算得到的跳转长度,depth(s)表示s在反向有限自动机中的深度;
4)当cdown为0且记录的词典不为空时,利用当前记录的词典dict来搜索到对应的子串终止状态,找到相应的跳转位置,然后匹配跳转到该位置,继续匹配;
其中:利用结构体Dict_Node记录所述词典dict(s,c)中每一元素的信息,包括:记忆子串的起始状态srcstate、记忆子串的终止状态deststate、记忆子串的宽度length,以及记忆子串中的输出信息missed_output;
利用状态s的失效转移函数f(x)计算u在所述模式串集合其他模式串中的所有深度大于u的出现位置:对于所述反向有限自动机中的任一状态x,如果f(x)=s,则将状态x对应的串的位置加入到词典dict(s,c)中;
当转向函数goto(s,c)=0时,构建所述词典dict(s,c);如果满足goto(x,c)≠0并且depth(x)=skip2(s,c)-depth(s),则创建的结构体Dict_Node满足公式否则,创建的结构体Dict_Node满足公式其中,depth(x)表示x在反向有限自动机中的深度;getAncestor(x,depth(s))为在状态x处沿着反向有限自动机向上找到第depth(s)个祖先状态,并且在寻找过程中记录经过的有输出的状态。
2.如权利要求1所述的方法,其特征在于对于词典dict(s,c)归并,得到已匹配串u的后缀suffix(u)在其他模式串中的所有深度大于suffix(u)的出现位置:对反向有限自动机进行宽度优先遍历,对于状态s及其父节点状态p,如果dict(s,c)=dict(s,c)∪dict(p),则归并时,如果出现两词典的相应结构体Dict_Node的srcstate相同,则取length较大者结构体Dict_Node作为归并后节点的Dict_Node;其中,dict(p)为不考虑失配字符构造的词典。
3.如权利要求1所述的方法,其特征在于设置一深度阈值depthT,如果状态s的状态深度小于该深度阈值,则对该状态s不予构造词典。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310406833.3A CN103500178B (zh) | 2013-09-09 | 2013-09-09 | 一种fs算法最差情况下的快速多模式匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310406833.3A CN103500178B (zh) | 2013-09-09 | 2013-09-09 | 一种fs算法最差情况下的快速多模式匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103500178A CN103500178A (zh) | 2014-01-08 |
CN103500178B true CN103500178B (zh) | 2017-01-11 |
Family
ID=49865389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310406833.3A Active CN103500178B (zh) | 2013-09-09 | 2013-09-09 | 一种fs算法最差情况下的快速多模式匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103500178B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824927B (zh) * | 2016-03-16 | 2019-06-14 | 中国互联网络信息中心 | 一种基于树状自动机的域名匹配方法 |
CN108153813B (zh) * | 2017-11-28 | 2021-09-17 | 北京亿赛通科技发展有限责任公司 | 一种数据匹配方法及系统 |
CN111178052A (zh) * | 2019-12-20 | 2020-05-19 | 中国建设银行股份有限公司 | 构建机器人流程自动化应用的方法和装置 |
CN111814009B (zh) * | 2020-06-28 | 2022-03-01 | 四川长虹电器股份有限公司 | 一种基于搜索引擎检索信息的模式匹配方法 |
CN113010882B (zh) * | 2021-03-18 | 2022-08-30 | 哈尔滨工业大学 | 一种适用于缓存丢失攻击的自定义位置顺序模式匹配方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551803A (zh) * | 2008-03-31 | 2009-10-07 | 华为技术有限公司 | 一种建立模式匹配状态机、模式识别的方法和装置 |
CN102646123A (zh) * | 2012-02-23 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 多模式匹配方法、装置和设备 |
-
2013
- 2013-09-09 CN CN201310406833.3A patent/CN103500178B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551803A (zh) * | 2008-03-31 | 2009-10-07 | 华为技术有限公司 | 一种建立模式匹配状态机、模式识别的方法和装置 |
CN102646123A (zh) * | 2012-02-23 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 多模式匹配方法、装置和设备 |
Non-Patent Citations (3)
Title |
---|
一种基于反向有限自动机的匹配算法;许一震 等;《高技术通讯》;20010228;30-33 * |
一种基于反向有限自动机的多模式匹配算法;关超 等;《计算机工程》;20100131;第36卷(第1期);208-210 * |
改进的多模式匹配算法;王永成 等;《计算机研究与发展》;20020131;第39卷(第1期);55-60 * |
Also Published As
Publication number | Publication date |
---|---|
CN103500178A (zh) | 2014-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103500178B (zh) | 一种fs算法最差情况下的快速多模式匹配方法 | |
US8510322B2 (en) | Enriched search features based in part on discovering people-centric search intent | |
US7792840B2 (en) | Two-level n-gram index structure and methods of index building, query processing and index derivation | |
CN101398820B (zh) | 一种大规模关键词匹配方法 | |
Koppula et al. | Learning url patterns for webpage de-duplication | |
Amir et al. | Pattern matching in hypertext | |
Tomohiro et al. | Palindrome pattern matching | |
Na et al. | Suffix tree of alignment: An efficient index for similar data | |
CN105426412A (zh) | 多模式的串匹配方法和装置 | |
Fujisato et al. | Right-to-left online construction of parameterized position heaps | |
Le Dang et al. | A new multiple-pattern matching algorithm for the network intrusion detection system | |
Tanimura et al. | A faster algorithm for computing maximal-gapped repeats in a string | |
Hon et al. | Towards an optimal space-and-query-time index for top-k document retrieval | |
Zhiyuli et al. | Modeling large-scale dynamic social networks via node embeddings | |
Sri et al. | String matching algorithms | |
Khanh et al. | Time series discord discovery using WAT algorithm and iSAX representation | |
Lewenstein et al. | Less space: Indexing for queries with wildcards | |
Nsira et al. | On-line string matching in highly similar DNA sequences | |
CN113065419B (zh) | 一种基于流量高频内容的模式匹配算法及系统 | |
Sachan et al. | A generalized links and text properties based forum crawler | |
Equi et al. | On the complexity of exact pattern matching in graphs: Binary strings and bounded degree | |
Gurung et al. | An analysis of the intelligent predictive string search algorithm: a probabilistic approach | |
CN115525801A (zh) | 网络安全系统的模式匹配算法 | |
Equi et al. | On the complexity of exact pattern matching in graphs: determinism and zig-zag matching | |
Kimmett et al. | Fuzzy joins in mapreduce: Edit and jaccard distance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210208 Address after: 100190 room 506, building 2, courtyard 4, South 4th Street, Zhongguancun, Haidian District, Beijing Patentee after: CHINA INTERNET NETWORK INFORMATION CENTER Address before: 100190 No. four, 4 South Street, Haidian District, Beijing, Zhongguancun Patentee before: Computer Network Information Center, Chinese Academy of Sciences |
|
TR01 | Transfer of patent right |