CN109284424B - 构造滑动情况表的方法 - Google Patents
构造滑动情况表的方法 Download PDFInfo
- Publication number
- CN109284424B CN109284424B CN201811111894.6A CN201811111894A CN109284424B CN 109284424 B CN109284424 B CN 109284424B CN 201811111894 A CN201811111894 A CN 201811111894A CN 109284424 B CN109284424 B CN 109284424B
- Authority
- CN
- China
- Prior art keywords
- voting
- value
- bit
- variable
- data
- 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
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
构造滑动情况表的方法:用于实现数据搜索;步骤B1、分配内存;步骤B2、包含子步骤:B2.1、构建一个第一循环,B2.1.1、分配一个比特位数量位8的变量临时操作标识,临时操作标识;B2.1.2、将变量计次的值赋予给临时操作标识;B2.1.3、依次判断临时操作标识的各个比特位是否为1,如果为1,则进行以下两个步骤:B2.1.3.1、对匹配情况表的序号与变量计次的数值相等的单元进行赋值,所赋予的值等于当前比特位在临时操作标识中的比特位序号。数据搜索方法,采用所述的构造滑动情况表。基于大数据的机器学习系统,采用所述的数据搜索方法。本发明可以提高时间效率,提高空间效率,提高计算机资源的利用率,提供了一条新思路。
Description
技术领域
本发明涉及计算机数据处理领域,具体涉及构造滑动情况表的方法、数据搜索方法、计算机信息传播系统、基于大数据的机器学习系统。
技术背景
数据搜索方法也可以称为数据匹配方法,数据搜索是计算机技术的重要运用,在实时文本的处理,文件搜索系统,实时数据分析,大数据分析、舆情自动调查系统等等技术中常常用到。现有技术面向全新数据的时间效率存在改进空间,现有技术的空间效率存在改进空间,现有技术对计算机资源的运用不充分存在改进空间。
发明内容
本发明提出了构造滑动情况表的方法、数据搜索方法、计算机信息传播系统、基于大数据的机器学习系统,可以提高时间效率,提高空间效率,提高计算机资源的利用率。
本发明的技术内容具体如下:
1、投票标识,其特征在于:用于储存数据串匹配状况投票,投票标识用于投票的比特位数小于或等于所应用计算机一次处理数据的比特位数;投票标识用于储存数据串的元素对整个数据串各个位置与需搜索子串的匹配状况的支持权限或否决权限,投票标识整体对应一个数据串,投票标识中各个比特位各自单独对应数据串的一个元素。
2、投票标识,其特征在于:投票标识用于投票的比特位数,小于投票标识的比特位总数。
3、如技术内容1所述投票标识,其特征在于:投票标识中比特位与数据串元素的对应方式是按序对应。
4、如技术内容2所述投票标识,其特征在于:投票标识中比特位与数据串元素的对应方式是同序对应,即投票标识中第一个比特位对应数据串的第一个元素,投票标识中第二个比特位对应数据串的第二个元素,投票标识中第三个比特位对应数据串的第三个元素,依此类推。
5、如技术内容2所述投票标识,其特征在于:投票标识中比特位与数据串元素的对应方式是逆序对应,即投票标识中第一个比特位对应数据串的倒数第一个元素,投票标识中第二个比特位对应数据串的倒数第二个元素,投票标识中第三个比特位对应数据串的倒数第三个元素,依此类推。
6、如技术内容1~4所述投票标识,其特征在于:投票标识中比特位以1代表支持,以零代表否决。
7、如技术内容1~4所述投票标识,其特征在于:投票标识中比特位以1代表否决,以零代表支持。
8、投票标识表,其特征在于:针对技术内容1~6中任一技术内容所述的投票标识的储存;将多个投票标识数据整合成投票标识表,所有的投票标识的比特位数均相等;
投票标识表拥有两个查询变量,第一查询变量对应数据串元素在数据串中的序列位置,第二查询变量对应数据串中序号等于第一查询变量的值的数据串元素的值。
9、投票标识表的构造方法,其特征在于:针对技术内容7所述投票标识表的构造方法;
所有的投票标识数据均对应同一个需搜索的子串;
为了方便表述,设投票标识表中某个元素的第一查询变量为j、第二查询变量为ca,将投票标识表的该元素表述为biao[j][ca],假设数据串的第一个元素的序号为w;
biao[j][ca]所储存的投票标识对在数据串中位置序号大于j的数据串元素的匹配状况没有否决权限;(比如j=4,子串长度为3,则biao[j][ca]所储存的投票标识对数据串的下标大于4的数据串元素的匹配状况没有否决权限;
biao[j][ca]所储存的投票标识对在数据串中位置序号小于j且序号到j的步长大于子串长度的数据串元素的匹配状况没有否决权限;(比如j=4,子串长度为3,则biao[j][ca]所储存的投票标识对数据串的下标小于1的元素的匹配状况没有否决权限);
如果ca与序号为k的子串元素的值相等,那么biao[j][ca]所储存的投票标识对数据串中位置序号等于j-k+w的数据串元素的匹配状况为支持票;
如果ca与序号为k的子串元素的值不相等,那么biao[j][ca]所储存的投票标识对数据串中位置序号等于j-k+w的数据串元素的匹配状况为否决票;
以上规则,没有时间上的先后顺序限定。
10、投票标识表的构造方法,其特征在于:针对技术内容7所述投票标识表的构造方法;
所有的投票标识数据均对应同一个需搜索的子串;
为了方便表述,设投票标识表中某个元素的第一查询变量为j、第二查询变量为ca,将投票标识表的该元素表述为biao[ca][j],假设数据串的第一个元素的序号为w;
biao[ca][j]所储存的投票标识对在数据串中位置序号大于j的数据串元素的匹配状况没有否决权限;
biao[ca][j]所储存的投票标识对在数据串中位置序号小于j且序号到j的步长大于子串长度的数据串元素的匹配状况没有否决权限;
如果ca与序号为k的子串元素的值相等,那么biao[ca][j]所储存的投票标识对数据串中位置序号等于j-k+w的数据串元素的匹配状况为支持票;
如果ca与序号为k的子串元素的值不相等,那么biao[ca][j]所储存的投票标识对数据串中位置序号等于j-k+w的数据串元素的匹配状况为否决票;
以上规则,没有时间上的先后顺序限定。
11、如技术内容9或10所述的投票标识表的构造方法,其特征在于:所述的序号从0开始计数即w的值0。
12、如技术内容9或10所述的投票标识表的构造方法,其特征在于:所述的序号从1开始计数即w的值1。(部分编程语言的数组访问计数从1开始,比如易语言)
13、数据匹配获取方法,其特征在于:用于判断数据串与需搜索子串的匹配状况;
数据串的长度小于或等于投票标识表的投票标识的比特位数量;
流程a、利用技术内容8或9所述的投票标识表的构造方法根据需搜索子串的数据构建投票标识表biao[][];
流程b、将数据串各个元素的位置序号作为第一查询变量,将数据串各元素的值作为第二查询变量(Bz1.1),在特位序列表中查询到数据串各个元素对应的投票标识(Sj1.3),并统计投票信息,获得的统计数据获得数据串各个位置与子串的投票结果序列;
在时间顺序上流程a在流程b之前。
流程a、b在时间上可以相衔接,也可以在流程a、b之间插入其他流程。
14、如技术内容10所述的,数据搜索方法,其特征在于:采用一票否决的方式进行统计获得投票结果序列(Bz2.3)。
15、如技术内容10所述的,数据搜索方法,其特征在于:采用累加支持票的方式进行统计,如果数据串某元素的累加值等于需查找子串的长度值,则说明该数据元素为完全匹配位置。
16、数据搜索方法,其特征在于:
用于向被搜索的母串(bei->str)中获取需搜索的子串(xu->str)的匹配位置,母串 (bei->str)长度(bei->size)大于或等于子串(xu->str)的长度(xu->size);
母串元素的取值范围固定,母串元素的取值范围在母串加载之前可以预见,子串元素的取值范围固定,子串元素的取值范围在子串加载之前可以预见;
包含以下流程:
流程a、利用技术内容8或9所述的投票标识表的构造方法根据需搜索子串的数据构建投票标识表biao[][];
流程b、利用流程a构造的投票标识表biao[][]对母串进行匹配操作,匹配规则如下:
步骤1、依据母串的排列顺序,取数据串,所取数据串长度的数量等于投票标识表biao[][]的元素所储存投票标识中用于投票的比特位的总数;参见附图中的(youmo)
步骤2、查询数据串中尚未查询过的数据的投票标识,上次执行本步骤时已经查询过的元素则不查询,将数据串各个元素的位置序号作为第一查询变量,将数据串各元素的值作为第二查询变量(Bz1.1、Bz1.2、Bz1.3),在投票标识表中查询到数据串各个元素对应的投票标识(Sj1.1、Sj1.2、Sj1.3),采用一票否决(Bz2.1、Bz2.2、Bz2.3)的方式统计数据串中所有元素的投票信息,包括上次执行本步骤所保留的投票信息,获得投票结果序列(Sj2.1、Sj2.2、Sj2.3);
设有数据串中位置k,如果k到数据串的尾部的步长大于等于‘子串 (xu->str)的长度(xu->size)减1的结果数’,则k位于匹配区(pipei);
如果k到数据串的尾部的步长小于‘子串(xu->str)的长度(xu->size) 减1的结果数’,则k位于滑动区(hudong);
如果k的序号大于滑动区的最大序号,则k无意义(Sj2.3中ny);
位于匹配区的且投票结果为支持的位置是匹配位置,对匹配位置进行记录(BZ3.1、BZ3.2、BZ3.3);
位于滑动区的且投票结果为支持的位置集中序号最小的位置为滑动位置;
步骤3、如果当前获得的匹配位置的总数小于需要找到的匹配位置的数量,且数据串未取到母串最末端,则进入步骤4,否则进入流程c;
步骤4、如果A2所得投票结果序列(Sj2.1)中具有滑动位置,则将投票结果序列(Sj2.1)中对应滑动位置及滑动位置之后的投票信息保留下来,将其他信息抹除,以滑动位置为步骤1取数据串的首位置进入步骤1(参见图2中左下角);
如果A2所得投票结果序列(Sj2.1)中没有滑动位置,则在不保留投票结果序列(Sj2.1)中的任何信息的情况下,以当前数据串尾端所对应的母串元素的位置的下一个位置为步骤1取数据串的首位置进入步骤1。
流程c、完成。
17、如技术内容13所述的数据搜索方法,其特征在于:将投票结果序列(Sj2.1)中对应滑动位置及滑动位置之后的投票信息保留下来,将其他信息抹除,方法是利用计算机的位操作指令进行位移操作(图2的BZ6)。
18、如技术内容14所述的数据搜索方法,其特征在于:所述的位操作指令是位移指令。
19、文件搜索系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
20、文件管理系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
21、数据搜索系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
22、数据管理系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
23、文本搜索系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
24、文本管理系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
25、搜索引擎,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
26、实时数据分析系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
27、大数据分析系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
28、基于大数据的机器学习系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。
技术效果说明:
本发明可以提高时间效率,提高空间效率,提高计算机资源的利用率,能够充分的利用计算机处理器资源,使得获取数据匹配的速度加快。
本发明提供了一条新思路。
附图说明
图1是本发明的原理图的示意图,为了帮助阅读者理解,图1中绘制了用于取数据串的youmo 的逻辑结构,youmo并非具体存在,youmo具有8个虚构的逻辑单元,youmo的第一个单元y0与母串bei->str的下标为i的元素对应,youmo的第二个单元y1与母串bei->str的下标为i+1的元素对应,以此类推,按顺序对应;图1中Bz1.1是在投票标识表中查询数据串各个元素对应的投票标识(Sj1.1);图1中B2.1代表对Sj1.1的各个投票标识的投票信息进行一票否决式统计,图1中Sj2.1是B2.1统计所获得的‘投票结果序列’,其中pipei段中值为1的比特位所对应的位置为匹配位置,huadong段中值为1的比特位所对应的位置为滑动位置。图1中Sj1.1、Sj2.1的下方的顺序排列的数字为各个比特位在投票标识中的序号。图1中bei->str下方的顺序排列的数字为各个元素在母串中的序号。
图2是本发明的原理图的示意图,在时间顺序上承接于图1,由于图1获得了一个滑动位置 6,所以图2的游youmo的第一个单元y0对应bei->str[6]。图2中Sj2.1即图1中的Sj2.1,由于图1中获得了滑动位置,图2对图1的huadong段的内容通过位移操作(Bz6)进行了保留,位移操作后Sj2.1的第7位(下标为6)和第8位(下标为7)保留在Sj3的第1位(下标为0)和第二位(下标为1);为了不影响后续的投票,将Sj3和Sj4进行位或操作(BZ4) 得到投票标识Sj5作为投票信息;由于bei->str[6]、bei->str[7]在图1中已经被读取过,bei->str[6]、bei->str[7]的投票信息也被保存在Sj5中,所以不必重复读取,所以查表操作从对应bei->str[8] 的y2开始。
图3是本发明的原理图的示意图,在时间顺序上承接于图2,由于图2中没有滑动位置,图 3的滑动从14开始(6+8=14);由于youmo取到了bei->str的末端,所以搜索结束。由于图 3中代表数据串的长度只有7,而投票标识的长度为8,导致代表投票结果的‘投票结果序列’Sj2.3中存在无意义区ny;
图4是本发明实施例1的代码运行结果的截图。
具体实施例
实施例1,一种搜索方法,其特征在于:
用于计算机数据的搜索处理,依赖数字计算机而实现;
用于向被搜索的母串(母串->字符串)中获取需搜索的子串(子串->字符串)的匹配位置,母串(母串->字符串)成员的最大序号(母串->最大序号)大于或等于子串(子串->字符串) 的成员的最大序号(子串->最大序号),母串元素的取值范围固定,母串元素的取值范围在母串加载之前可以预见,子串元素的取值范围固定,子串元素的取值范围在子串加载之前可以预见;
母串的成员的序号、子串的成员的序号都是从零开始计算的,即第一个成员的序号为零;
分配投票标识表是具有两个维度的投票标识集合,第一维度的最大序号为256,第二维度的最大序号为投票标识用于投票的比特位的数量;投票标识表所包含的投票标识单元均具有以下特征“用于储存数据串匹配状况投票,投票标识用于投票的比特位数小于或等于所应用计算机一次处理数据的比特位数;投票标识用于储存数据串的元素对整个数据串各个位置与需搜索子串的匹配状况的支持权限或否决权限,投票标识整体对应一个数据串,投票标识中各个比特位各自单独对应数据串的一个元素,投票标识中比特位与数据串元素的对应方式是按序对应,投票标识中比特位以1代表支持,以零代表否决,投票标识中比特位与数据串元素的对应方式是同序对应,即投票标识中第一个比特位对应数据串的第一个元素,投票标识中第二个比特位对应数据串的第二个元素,投票标识中第三个比特位对应数据串的第三个元素,依此类推”;
需要分配以下变量,这些变量的作用域覆盖整个搜索方法:
1、变量投票标识表数据区指针,投票标识表数据区指针指向的数据类型为投票标识;伪代码表达为:投票标识_64位*投票标识表数据区指针=NULL;
2、变量尾端模板尾端模板指向的数据类型为投票标识;伪代码表达为:投票标识_64 位*尾端模板=NULL;
还包含以下数据处理方法:
A、构造匹配情况表的方法,其特征在于:
是一种数据处理方法,用于数字计算机实现数据搜索;
依赖匹配情况结构体的数据结构实现;注意,数据结构,是数据的组织形式;
匹配情况结构体包含以下成员:
匹配数据,匹配数据是一个具有八个整数型成员的数组;
数量,数量数个整数型变量;
构造匹配情况表具有256个匹配情况结构体;
构造方法如下:
步骤A1、为匹配情况表分配内存,伪代码表达为:匹配情况结构体*临时匹配表=(匹配情况结构体*)malloc(sizeof(匹配情况结构体)*256);
步骤A2、将匹配情况表的内存,初始化为零;伪代码表达为:memset(临时匹配表,0, 256*sizeof(匹配情况结构体));
步骤A3、本步骤包含以下的子步骤:
A3.1、构建一个第一循环,为第一循环分配一个变量计次,变量计次的初始值为零,变量计次的值每循环一次增加1,变量计次的作用域只在第一循环之内;如果计次大于或等于256则循环停止;第一循环内部包含以下流程;伪代码表达为:for (size_t计次=0;计次<256;计次++){};
A3.1.1、分配一个比特位数量位8的变量临时投票标识,临时投票标识的作用域只在第一循环之内;共用体_8bit临时投票标识;共用体_8bit临时投票标识;
A3.1.2、将变量计次的值赋予给临时投票标识;伪代码表达为:临时投票标识.整数=计次;
A3.1.3、分配一个指针变量整数指针,整数指针所指向的类型与匹配情况结构体的匹配数据的成员的类型一致,整数指针的作用域只在第一循环之内;伪代码表达为:unsigned int*整数指针;
A3.1.4、将整数指针指向匹配情况表的序号与计次的值相等的匹配情况结构体的第一个匹配数据;伪代码表达为:整数指针=&临时匹配表[计次].匹配数据 [0];
A3.1.5、依次判断临时投票标识的各个比特位是否为1,如果为1,则进行以下三个步骤:
A3.1.5.1、将整数指针所指向的数值增加,增加的数值为当前比特位在临时投票标识的序号;
A3.1.5.2、将整数指针的指向,向后移动一个单元;伪代码表达为:整数指针++;
A3.1.5.3、将匹配情况表的序号与计次的值相等的匹配情况结构体的数量变量增加1;伪代码表达为:临时匹配表[计次].数量++;
步骤A4、结束;
B、构造滑动情况表的方法,其特征在于:
是一种数据处理方法,用于数字计算机实现数据搜索;
构造方法如下:
步骤B1、为匹配情况表分配内存;伪代码表达为:unsigned char*临时滑动表=(unsigned char*)malloc(256*sizeof(unsigned char));
步骤B2、本步骤包含以下的子步骤:
B2.1、构建一个第一循环,为第一循环分配一个变量计次,变量计次的初始值为零,变量计次的值每循环一次增加1,变量计次的作用域只在第一循环之内;如果计次大于或等于256则循环停止;第一循环内部包含以下流程;伪代码表达为:for(size_t计次=0;计次<256;计次++){};
B2.1.1、分配一个比特位数量位8的变量临时投票标识,临时投票标识的作用域只在第一循环之内;共用体_8bit临时投票标识;共用体_8bit临时投票标识;
B2.1.2、将变量计次的值赋予给临时投票标识;伪代码表达为:临时投票标识.整数=计次;
B2.1.3、依次判断临时投票标识的各个比特位是否为1,如果为1,则进行以下两个步骤:
B2.1.3.1、对匹配情况表的序号与变量计次的数值相等的单元进行赋值,所赋予的值等于当前比特位在临时投票标识中的比特位序号;
B2.1.3.2、跳到第一循环的循环尾;
B2.1.4、对匹配情况表的序号与变量计次的数值相等的单元进行赋值,所赋予的值等于8;
B2.2、结束;
C、构造搜索结果储存容器的方法,其特征在于:用于解析搜索结果数据,搜索结果数据为储存或运行于数字计算机中的数据;
搜索结果数据以各个比特位的数值(0或1)代表该位置是否为匹配位置;
依赖于被命名为匹配结果结构体的数据结构体;
匹配结果结构体包含:最大容量;匹配数量;*匹配位置数列指针;上限;
进行下列操作:
C1,构造一个匹配结果结构体的实例称之为结果;
C2,确定结果的最大容量的值,也就是说确定结果所能够支持最大匹配数值的数量,也就是给结果中最大容量这一成员赋值;
C3,申请内存并将申请到的内存的首地址赋值给结果的数据空间首地址;内存尺寸是结果的最大容量这一成员的值乘以结果的匹配位置的数据尺寸;
C4,确定使用者所需上限的数值的值,也就是说操作者所需要的搜索结果的个数,也就是给结果的上限这一成员赋值;
D、构造投票标识表的方法,其特征在于:
D1、为投票标识表开辟内存空间;伪代码表达为:
投票标识表=(投票标识_64位**)malloc(sizeof(投票标识_64位*)*256);
投票标识表数据区指针=(投票标识_64位*)malloc(256*sizeof(投票标识_64位)*计算机位数);
for(unsigned int计次=0;计次<256;计次++)
{
投票标识表[计次]=投票标识表数据区指针+计次*计算机位数;
}
D2、为尾端模板分配内存;伪代码表达为:尾端模板=(投票标识_64位 *)malloc(sizeof(投票标识_64位)*计算机位数);
D3、构造一个循环,该循环具有一个整数型变量叫计次,变量计次的初始值等于零,计次的数值大于等于计算机位数的时候终止循环,循环每执行一次,计次的值增加1,循环内具有如下操作步骤:
D3.1、对所有比特位都为1的投票标识进行左移位移操作,左移位移操作的比特位数为计次的值加1所得和;伪代码表达为:尾端模板[计次].整数=投票标识_所有比特位都为1<<(计次+1);
D3.2、对所有比特位都为1的投票标识进行右移位移操作,右移位移操作得比特位数量为计算机位数减去计次的值所得差,将右移位移操作所得值赋予给投票标识表中第一维度序号为0第二维度序号等于计次的值的投票标识单元;伪代码表达为:投票标识表[0][计次].整数=投票标识_所有比特位都为1>>(计算机位数-计次);
D4、将投票标识表的第一维度序号为零,第二维度序号为零的单元赋值为零;伪代码表达为:投票标识表[0][0].整数=0;
D5、结束;
E、搜索正式执行之前,进行预处理,预处理流程包含:
E1、利用前述的构造匹配情况表的方法,构造匹配情况表;伪代码表达为:匹配情况表=构造匹配情况表();
E2、利用前述的构造滑动情况表的方法,构造匹配情况表;伪代码表达为:滑动情况表=构造滑动情况表();
E3、利用前述的构造投票标识表的方法构造投票标识表;伪代码表达为:构造投票标识表();
E4、利用前述的构造搜索结果储存容器的方法对变量结果进行处理;伪代码表达为:预处理直观结果实例()
E1,E2,E3,E4之间没有时序限制,即没有执行先后的限制;
F、搜索正式执行之前,预处理结束之后,进行子串信息的处理流程:
F、子串信息的处理流程如下:
F1、将尾端模板的各个单元依序拷贝到投票标识表的第一维序号为1的各个单元中;伪代码表达为:memcpy(投票标识表[1],尾端模板,sizeof(投票标识_64 位)*计算机位数);
F2、分配一个整数型变量,称之为第一整数,并对第一整数进行赋值为计算机位数减1再加上子串的最大序号,第一整数的作用域为子串信息的处理流程;
F3、构造一个循环,称之为第一循环,第一循环具有一个用于计数的整数型变量,称之为计次,计次的初始值为子串的最大序号,第一循环每执行一次,计次的值增加 1,当计次的值大于等于计算机位数时循环停止,计次的作用域时第一循环之内,第一循环内具有以下操作步骤:
F3.1、将投票标识表中第一维度序号为0第二维度序号为计次的值的投票标识单元赋值零;伪代码表达为:投票标识表[0][计次].整数=0;
F3.2、将所有比特位都为1的投票标识产量进行右移位移操作,右移位移操作的比特位位数等于第一整数的值减计次的值所得差,将右移位移操作结果、投票标识表中第一维度序号为1第二维度序号等于计次的值的投票标识单元,二者进行位或操作,将位或操作结果赋予给投票标识表中第一维度序号为1第二维度序号等于计次的值的投票标识单元;伪代码表达为:投票标识表[1][计次]. 整数|=(投票标识_所有比特位都为1>>(第一整数-计次));
F4、构造一个循环,称之为第二循环,第二循环具有一个用于计数的整数型变量,称之为计次,计次的初始值为子串的最大序号,第二循环每执行一次,计次的值增加 1,当计次的值大于等于256时循环停止,计次的作用域时第二循环之内,第二循环内具有以下操作步骤:
F4.1、将投票标识表中第一维度序号为1的投票标识单元,依序拷贝到投票标识为计次的值的单元中;伪代码表述为:memcpy(&投票标识表[计次][0], &投票标识表[1][0],sizeof(投票标识_64位)*计算机位数);
F5、本步骤包含以下子步骤:
步骤F5.1、构建第一计次循环,第一计次循环中具有变量第一计次,变量第一计次的初始值为投票标识用于投票的比特位数,第一计次循环每循环一次则变量第一计次减少1,当变量第一计次小于零时循环停止,第一计次循环的每次循环都包含如下操作过程:
步骤F5.1.1、分配变量第一临时变量;
步骤F5.1.2、将变量第一计次的值赋予给第一临时变量;
步骤F5.1.3、如果变量第一计次大于子串的最大序号则将子串的最大序号赋予给第一临时变量;伪代码表达为:if(第一计次>子串->最大序号)第一临时变量=子串->最大序号;
步骤F5.1.4、构建第二计次循环,第二计次循环中具有变量第二计次,变量第二计次的初始值为第一临时变量的值,第一计次循环每循环一次则变量第二计次减少1,当变量第二计次小于零时循环停止,第二计次循环的每次循环都包含如下操作过程:
步骤F5.1.4.1、将序号为0的比特位值位1其他比特都为0的投票标识进行左移位移操作,左移位移操作的比特位数位第一计次的值减去第二计次所得的差,将左移位移操作所得值与投票标识表的单元进行位或操作,该单元在投票标识表中第一维度的序号等于子串的序号等于第二计次的值的字符的值,该单元在投票标识表中第二维度的序号等于第一计次的值,将位或操作所得值赋予给该单元;伪代码表达为:投票标识表[子串->字符串[第二计次]][第一计次].整数|=投票标识_序号为零的比特位值为1其他都为零<<(第一计次-第二计次);
F6、结束;
G、对母串的搜索,在子串信息处理流程之后才能执行,对母串的搜索流程如下:
G1、将结果的成员匹配数量赋值为0;伪代码表达为:结果.匹配数量=0;
G2、分配一个变量称之为匹配结果指针,将匹配结果指针指向结果的成员匹配位置数量的第一个单元,即序号为零的单元;伪代码表达为:unsigned int* 匹配结果指针=结果.匹配位置数列;
G3、分配一个整数型变量称之为分界,进行运算,运算规则时将计算机位数减去子串最大序号所得值除以8得到分界值,将分界值赋予给分界;伪代码表达为: unsigned int分界=(计算机位数-子串->最大序号)/8;
G4、判断分界是否小于1,如果小于1,则将1赋予给分界;;伪代码表达为:if (分界<1)分界=1;
G5、分配两个投票标识变量,分别是去滑动信息模板,去匹配信息模板;
G6、对去滑动信息模板进行处理,本步骤包含以下子步骤:
G6.1、将去滑动信息模板的每一个比特位都赋值为1;伪代码表达为:去滑动信息模板.整数=0XFFFFFFFFFFFFFFFF;
G6.2、对去滑动信息模板进行右移位移操作,右移位移操作的位数为子串的最大序号减去1,并将右移位移操作的结果复制给去滑动信息模板;伪代码表达为:去滑动信息模板.整数>>=(子串->最大序号-1);
G7、对去匹配信息模板进行处理,本步骤包含以下子步骤:
G7.1、将去匹配信息模板的每一个比特位都赋值为1;伪代码表达为:去匹配信息模板.整数=0XFFFFFFFFFFFFFFFF;
G7.2、对去匹配信息模板进行左移位移操作,左移位移操作的位数为计算机位数减去子串的最大序号,并将左移位移操作的结果赋值给去匹配信息模板;伪代码表达为:去匹配信息模板.整数<<=(计算机位数-子串->最大序号);
G7.3、对去匹配信息模板进行左移位移操作,左移位移操作的位数为1,并将左移位移操作的结果赋值给去匹配信息模板;伪代码表达为:去匹配信息模板.整数<<=1;
G8、分配两个投票标识变量,分别是第一投票标识;伪代码表达为:投票标识_64位第一投票标识;
G9、将第一投票标识的每个位都赋值位1;伪代码表达为:第一投票标识.整数=0XFFFFFFFFFFFFFFFF;
G10、分配一个整数型变量游模起点,并对游模起点赋值为零;伪代码表达为: int游模起点=0;
G11、分配一个整数型变量滑动步长,并对滑动步长赋值为零;伪代码表达为:unsigned int滑动步长=0;
G12、分配一个搜索终点,并将母串的最大序号减去子串的最大序号,再减去1所得的值赋予给搜索终点;伪代码表达为:unsigned int搜索终点=母串-> 最大序号-子串->最大序号-1;
G13、构造一个循环,称之为搜索循环,当游模起点的值大于游模终点时,搜索循环终止,搜索循环内具有以下操作步骤:
G13.1、分配一个字符串指针称之为游模指针,并将字符串指针指向母串的序号等于游模起点的值的字符;伪代码表达为:unsigned char*游模指针= &(母串->字符串[游模起点]);
G13.2、分配一个变量称之为游模终点,将母串最大序号减去游模起点的值所获得的结果赋值给游模终点;伪代码表达为:unsigned int游模终点=母串->最大序号-游模起点;
G13.4、判断游模终点是否小于计算机位数减去1,如果判断结果为是,则将第一投票标识进行右移位移操作,右移位移操作的位数为计算机位数减去游模终点所得的值,将右移位移操作的操作结果赋予给第一投票标识:如果判断结果为否,则将计算机位数减去1所得的值赋予给游模起点;伪代码表达为:
if(游模终点<(计算机位数-1))
{
第一投票标识.整数>>=计算机位数-游模终点;
}
else游模终点=(计算机位数-1);
G13、5、构造一个循环,称之为投票循环,投票循环内具有一个用于计数的变量称之为计次,计次的初始值为滑动步长的值,计次的作用域在投票循环内,投票循环每执行依次计次的值增加1,当计次的值大于或等于游模终点的值时,投票循环终止,投票循环内具有以下操作步骤:
G13.5.1、取得投票标识表中,第一维度序号等于以游模指针为0序号起点的序号为计次的值,第二维度序号等于计次的值的投票标识单元的值,将该单元的值和第一投票标识的值进行位与操作,将位与操作结果赋予给第一投票标识;
G13.6、判断第一投票标识的是否存在不为零的比特位,如果存在不为零的比特位则执行以下子步骤:
G13.6.1、分配一个投票标识变量,称之为第二投票标识;伪代码表达为:投票标识_64位第二投票标识;
G13.6.2、将第一投票标识与去滑动信息模板进行位于操作,然后将位与操作所得的值赋予给第二投票标识;伪代码表述为:第二投票标识.整数=第一投票标识.整数&去滑动信息模板.整数;
G13.6.3、判断第二投票标识,是否存在值为1的比特位,如果不存在则进入G13.6.4,如果存在则执行以下子步骤:
G13.6.3.1、分配一个只有八个比特位的指针变量,称之为八位指针,将第二投票标识的地址赋予给八位指针,使八位指针指向第二投票标识;伪代码表述为:单字节_8位*八位指针=(单字节_8位*)& 第二投票标识.整数;
G13.6.3.2、构建一个循环,用于解析第二投票标识中所包含的匹配信息,称之为匹配解析循环,匹配解析循环具有一个整数型变量称之为计次,计次的初始值为零,匹配解析循环每执行依次计次的值增加一次,当计次的值小于或等于分界时,匹配解析循环终止,匹配解析循环包含以下子步骤:[注意,匹配解析循环的伪代码表达为:for (size_t计次=0;计次<=分界;计次++)]
G13.6.3.2.1、判断八位指针所指向的内存中八个比特位是否存在等于1的比特位,如果不存在则进入G13.6.3.2.2,如果存在则执行以下子步骤:
G13.6.3.2.1.1、分配一个整数型变量,称之为临时变量,临时变量的作用域覆盖G13.6.3.2.1的所有子步骤,将计次的值乘以8再加上游模起点的值所获得的结果值赋予给临时变量;伪代码表达为:unsigned int临时变量=游模起点+8*计次;
G13.6.3.2.1.2、分配一个匹配情况结构体变量称之为匹配情况,将匹配情况表中的序号等于八位指针的值的单元的值赋予给匹配情况;伪代码表达为:匹配情况结构体匹配情况=匹配情况表[八位指针->整数];
G13.6.3.2.1.3、将匹配情况的匹配数据的八个成员的值一次拷贝到匹配结果指针所执行的内存;伪代码表达为:memcpy(匹配结果指针,&匹配情况.匹配数据[0],8*4);
G13.6.3.2.1.4、将匹配结果指针所指向的内存的8个单元的值均进行增加操作,增加的值等于临时变量的值;伪代码表达为:
匹配结果指针[0]+=临时变量;
匹配结果指针[1]+=临时变量;
匹配结果指针[2]+=临时变量;
匹配结果指针[3]+=临时变量;
匹配结果指针[4]+=临时变量;
匹配结果指针[5]+=临时变量;
匹配结果指针[6]+=临时变量;
匹配结果指针[7]+=临时变量;
G13.6.3.2.1.5、对结果的匹配数量的值进行增加操作,增加的值等于匹配情况的成员数量的值;伪代码的表达为:结果.匹配数量+=匹配情况.数量;
G13.6.3.2.1.6、将匹配结果指针所指向的位置进行向后移动,使得匹配结果指针移动,移动的单元数量等于匹配情况的数量的值;伪代码表达为:匹配结果指针+=匹配情况.数量;
G13.6.3.2.2、将八位指针向后移动一个位置;伪代码代表为:八位指针++;
G13.6.3.2.3、如果结果的成员匹配数量的值大于或等于结果的成员上限的值,则退出搜索;伪代码表达为:if(结果.匹配数量>=结果.上限){goto搜索结束;}
G13.6.4、将第一投票标识与去匹配信息进行位与操作,并把位与操作所得的值赋予给第二投票标识;伪代码表达为:第二投票标识.整数=第一投票标识. 整数&去匹配信息模板.整数;
G13.6.5、判断第二投票标识是否存在值为1的比特位,如果不存在则进入G13.6.6,如果存在则执行以下子步骤:
G13.6.5.1、构建一个整数型指针I32,I32所指向的数据的比特位数量为投票标识的一半,将第二投票标识的地址赋予给I32,如果 I32指向的数据的值等于零则I32向后移动一位;伪代码表达为:
unsigned int*I32=(unsigned int*)&第二投票标识;
I32+=!I32[0];
G13.6.5.2、构建一个整数型指针I16,I16所指向的数据的比特位数量为I32所指向的数据的比特位的数量的一半,将I32的地址赋予给I16,如果I16指向的数据的值等于零则I16向后移动一位;
G13.6.5.3、依次G13.6.5.5类推,每次都构建一个整数型指针,且该指针所指向数据得尺寸是前面步骤所构建的指针所指向数据的尺寸的一半,将前面步骤的地址赋予给该指针,如果该指针指向的数据的值等于零则该指针向后移动一位,......直到所构建的整数型指针 I8,I8所指向的数据的比特位数量为八位,将I16的地址赋予给I8,如果I8指向的数据的值等于零则I8向后移动一位;伪代码表达为: I8+=!I8[0];
G13.6.5.4、分配一个字符变量Y,将I8指针的地址与第二投票标识指针的地址之间相隔的字符单元数量赋予给Y;伪代码表达为: unsigned char Y=I8-(unsignedchar*)&第二投票标识.整数;
G13.6.5.5、将Y的值和8线程得到的乘积加上滑动情况表的序号为I8所指向变量的值的单元的值;伪代码表达为:滑动步长=Y*8 +滑动情况表[*I8];
G13.6.5.6、将游模起点的值进行增加操作,所增加的值等于滑动步长;伪代码表达为:游模起点+=滑动步长;
G13.6.5.7、将第一投票标识的二进制数值进行右移位移操作,右移位移操作的比特位数量为滑动步长的数值,并八右移位移操作所获得的值赋予给第一投票标识;伪代码表达为:第一投票标识.整数>>=滑动步长;
G13.6.5.8、将计算机位数减去1所得的值减去滑动步长的值所获得值赋予给滑动步长;伪代码表达为:滑动步长=(计算机位数-1) -滑动步长;
G13.6.5.9、将所有比特位都为1的投票标识右移位移操作,右移位移操作的比特位数数量为滑动步长的值,将第一投票标识的值与右移位移操作所得值进行位或操作,将位或操作所得得值赋予给第一投票标识;
G13.6.5.10、跳转到搜索循环的尾部;伪代码表达为:continue;
G13.7、对游模起点的值进行增加操作,增加操作的值等于将计算机位数减1的所得值,并将滑动步长的值设置为零,并将第一投票标识的每一个比特位都赋值为1;伪代码表达为:游模起点+=(计算机位数-1);滑动步长=0;第一投票标识.整数=投票标识_所有比特位都为1;
G14、搜索结束。
本实施例的代码如下;以下代码已经清晰向本领域技术人员清晰的表达了本发明的数据搜索方法,且详细的进行了备注,即使是技术水平很差的新手,也可以以复制粘贴以下代码的方式实现本实施例,所以本发明的公开是清晰的。
/*代码开始*/
/*代码结束*/
以上示例展示了本发明的实现方式,以上代码所体现的内容不是对本发明的专利权保护范围的限定,以上代码已经编译通过,且能够正常运行,但申请人无法保证在资料的保存和传输过程中出现改变,如果阅读者编译通不过,阅读者应该结合本领域常识对代码进行修复,如果修复仍旧难以运行,可以联系申请人获得以上代码。
Claims (1)
1.构造滑动情况表的方法,其特征在于: 是一种数据处理方法,用于数字计算机实现数据搜索; 构造方法如下: 步骤B1、为匹配情况表分配内存; 步骤B2、本步骤包含以下的子步骤: B2-1、构建一个第一循环,为第一循环分配一个变量计次,变量计次的初始值为零,变量计次的值每循环一次增加1,变量计次的作用域只在第一循环之内;如果计次大于或等于256则循环停止;第一循环内部包含以下流程; B2-1-1、分配一个比特位数量位8的变量临时操作标识,临时操作标识的作用域只在第一循环之内; B2-1-2、将变量计次的值赋予给临时操作标识; B2-1-3、依次判断临时操作标识的各个比特位是否为1,如果为1,则进行以下两个步骤: B2-1-3-1、对匹配情况表的序号与变量计次的数值相等的单元进行赋值,所赋予的值等于当前比特位在临时操作标识中的比特位序号; B2-1-3-2、跳到第一循环的循环尾; B2-1-4、对匹配情况表的序号与变量计次的数值相等的单元进行赋值,所赋予的值等于8; B2-2、结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811111894.6A CN109284424B (zh) | 2018-09-21 | 2018-09-21 | 构造滑动情况表的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811111894.6A CN109284424B (zh) | 2018-09-21 | 2018-09-21 | 构造滑动情况表的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109284424A CN109284424A (zh) | 2019-01-29 |
CN109284424B true CN109284424B (zh) | 2021-10-19 |
Family
ID=65181547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811111894.6A Active CN109284424B (zh) | 2018-09-21 | 2018-09-21 | 构造滑动情况表的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109284424B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241115A (zh) * | 2018-09-26 | 2019-01-18 | 长沙学院 | 构造匹配情况表的方法、搜索方法、计算机舆情监控系统、人工智能系统 |
CN109344301A (zh) * | 2018-09-26 | 2019-02-15 | 长沙学院 | 构造投票标识表的方法、计算机数据处理系统、信息管理系统 |
CN109213808A (zh) * | 2018-09-26 | 2019-01-15 | 长沙学院 | 搜索方法、互联网信息库、基于搜索的舆情分析系统 |
CN109376279A (zh) * | 2018-09-26 | 2019-02-22 | 长沙学院 | 构造搜索结果储存容器的方法、数据搜索系统、计算机信息处理系统、人工智能系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6590586B1 (en) * | 1999-10-28 | 2003-07-08 | Xerox Corporation | User interface for a browser based image storage and processing system |
CN101084487A (zh) * | 2004-08-02 | 2007-12-05 | 国际商业机器公司 | 用于保证对不安全数据存储设备的查询的结果的新鲜度的方法 |
CN101753610A (zh) * | 2008-12-19 | 2010-06-23 | 华为技术有限公司 | 分布式网络构造方法、装置和系统以及任务处理方法 |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件系统元数据管理方法 |
CN103930890A (zh) * | 2013-10-30 | 2014-07-16 | 华为技术有限公司 | 数据处理方法、装置及重删处理器 |
CN104679885A (zh) * | 2015-03-17 | 2015-06-03 | 北京理工大学 | 一种基于语义特征模型的用户搜索串机构名识别方法 |
CN107122067A (zh) * | 2017-05-04 | 2017-09-01 | 网易(杭州)网络有限公司 | 物理介质表面位置编解码的方法、装置和可读存储介质 |
-
2018
- 2018-09-21 CN CN201811111894.6A patent/CN109284424B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6590586B1 (en) * | 1999-10-28 | 2003-07-08 | Xerox Corporation | User interface for a browser based image storage and processing system |
CN101084487A (zh) * | 2004-08-02 | 2007-12-05 | 国际商业机器公司 | 用于保证对不安全数据存储设备的查询的结果的新鲜度的方法 |
CN101753610A (zh) * | 2008-12-19 | 2010-06-23 | 华为技术有限公司 | 分布式网络构造方法、装置和系统以及任务处理方法 |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件系统元数据管理方法 |
CN103930890A (zh) * | 2013-10-30 | 2014-07-16 | 华为技术有限公司 | 数据处理方法、装置及重删处理器 |
CN104679885A (zh) * | 2015-03-17 | 2015-06-03 | 北京理工大学 | 一种基于语义特征模型的用户搜索串机构名识别方法 |
CN107122067A (zh) * | 2017-05-04 | 2017-09-01 | 网易(杭州)网络有限公司 | 物理介质表面位置编解码的方法、装置和可读存储介质 |
Non-Patent Citations (2)
Title |
---|
"Sliding Window Update Using Suffix Arrays";A. Ferreira 等;《2011 Data Compression Conference》;20110411;第456-456页 * |
"基于安卓平台的行为指纹安全认证";黄珂 等;《实验科学与技术》;20170228;第60-64页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109284424A (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284424B (zh) | 构造滑动情况表的方法 | |
CN109271507B (zh) | 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统 | |
CN106815203B (zh) | 一种裁判文书中的金额解析方法及装置 | |
JP3077765B2 (ja) | 語彙辞書の検索範囲を削減するシステム及び方法 | |
CN102870116B (zh) | 内容匹配方法和装置 | |
CN105574156A (zh) | 文本聚类方法、装置及计算设备 | |
CN111159497A (zh) | 正则表达式的生成方法及基于正则表达式的数据提取方法 | |
CN109558735A (zh) | 一种基于机器学习的恶意程序样本聚类方法及相关装置 | |
CN109376292B (zh) | 一种构建比特位序列表的方法、数据搜索方法、舆情监控系统、信息传播系统 | |
CN104885060B (zh) | 数据漏更新检查装置、数据漏更新检查方法 | |
CN109376281B (zh) | 比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统 | |
CN112559465A (zh) | 一种日志压缩方法、装置、电子设备及存储介质 | |
CN1695206A (zh) | 检测对持久存储器写错的方法与装置 | |
US8805891B2 (en) | B-tree ordinal approximation | |
CN110147516A (zh) | 页面设计中前端代码的智能识别方法及相关设备 | |
CN109213808A (zh) | 搜索方法、互联网信息库、基于搜索的舆情分析系统 | |
CN115563116A (zh) | 一种数据库表扫描方法、装置以及设备 | |
CN113468866A (zh) | 非标准json串的解析方法及装置 | |
CN109376279A (zh) | 构造搜索结果储存容器的方法、数据搜索系统、计算机信息处理系统、人工智能系统 | |
Meyer et al. | I/O-efficient shortest path algorithms for undirected graphs with random or bounded edge lengths | |
CN108133012B (zh) | 一种标签设置方法及装置 | |
CN109241115A (zh) | 构造匹配情况表的方法、搜索方法、计算机舆情监控系统、人工智能系统 | |
CN109344301A (zh) | 构造投票标识表的方法、计算机数据处理系统、信息管理系统 | |
CN116910770B (zh) | 一种基于密度的固件基址识别系统及方法 | |
CN113609860B (zh) | 文本切分方法、装置及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20190129 Assignee: Ningxiang Yuquanzhi Drinking Water Co.,Ltd. Assignor: CHANGSHA University Contract record no.: X2022980021638 Denomination of invention: Method of constructing slip table Granted publication date: 20211019 License type: Common License Record date: 20221115 |