对象的匹配方法和装置与流程

文档序号:11432328阅读:247来源:国知局
对象的匹配方法和装置与流程

本发明涉及互联网领域,具体而言,涉及一种对象的匹配方法和装置。



背景技术:

随着科技的不断发展,网络游戏、金融(如股票、基金等)等越来越受到人们的欢迎和认可,但是在这些领域中普遍存在如下问题:在确定相匹配的两个对象(如游戏对象、金融产品等)时,由于需要遍历所有对象中任意的两两组合,所以效率较低。

例如,在目前的网络游戏中,pvp(playervsplayer,对战模式)是一种比较流行的玩法模式,在pvp对战模式下,服务器会从多个报名的队伍中,为进行对战的两个阵营分别选择一个队伍(即游戏对象),从而使得对战的两个阵营的能够进行对战。目前在进行队伍对战匹配时,为了得到战斗力相匹配的对战双方(即游戏对象),首先将所有的队伍按一定的顺序排列在一个队列中,然后通过遍历队列中任意的两两组合,从队列中选择战斗力相匹配的对战的两个阵营(即两个游戏对象),两个阵营的队伍总人数均满足一定数量要求。

类似地,在目前的金融活动中,为了得到两种在收益、风险等方面相当的金融产品的组合方式,也需要遍历所有的组合方式中的任意两种组合方式,通过比较确定出两种在收益、风险等属性上相当的金融产品的组合方式。

针对相关技术中在确定相互匹配的对象时效率较低的技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种对象的匹配方法和装置,以至少解决相关技术中在确定相互匹配的对象时效率较低的技术问题。

根据本发明实施例的一个方面,提供了一种对象的匹配方法,该匹配方法包括:接收到目标指令,目标指令用于指示获取相互匹配的两个对象;获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,第一集合用于保存预先创建的标识组,第一集合中的每个标识组包括至少一个标识;判断第二集合中是否存在第二对象,第二对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内,第二集合用于保存待匹配的对象,每个待匹配的对象用于表示多个第二标识组,待匹配的对象表示的多个第二标识组的标识数量与第一对象表示的多个第一标识组的标识数量相同;在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

根据本发明实施例的另一方面,还提供了一种对象的匹配装置,该匹配装置包括:接收单元,用于接收到目标指令,其中,目标指令用于指示获取相互匹配的两个对象;第一获取单元,用于获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,其中,第一集合用于保存预先创建的标识组,第一集合中的每个标识组包括至少一个标识;第一判断单元,用于判断第二集合中是否存在第二对象,其中,第二对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内,第二集合用于保存待匹配的对象,每个待匹配的对象用于表示多个第二标识组,待匹配的对象表示的多个第二标识组的标识数量与第一对象表示的多个第一标识组的标识数量相同;第一匹配单元,用于在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

在本发明实施例中,在接收到用于指示获取相互匹配的两个对象的目标指令时,获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,在判断出第二集合中存在与第一对象的目标属性值之间的差值在预设范围内的第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象,对于每一个新创建的对象,只需要与第二集合中的对象逐一比对即可找到相互匹配的对象,而不用将其放入第二集合中再对第二集合中的对象进行两两匹配,可以解决相关技术中在确定相互匹配的对象时效率较低的技术问题,进而达到提高匹配效率的技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的对象的匹配方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的对象的匹配方法的流程图;

图3是根据本发明实施例的一种可选的对象的匹配方法的流程图;

图4是根据本发明实施例的一种可选的对象的匹配方法的流程图;

图5是根据本发明实施例的可选的统计指标的示意图;

图6是根据本发明实施例的一种可选的对象的匹配装置的示意图;

图7是根据本发明实施例的一种可选的对象的匹配装置的示意图;以及

图8是根据本发明实施例的一种终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种对象的匹配方法的方法实施例。

可选地,在本实施例中,上述对象的匹配方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的对象的匹配方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的对象的匹配方法也可以是由安装在其上的客户端来执行。

下面以在服务器上运行该方法为例进行详细说明:

图2是根据本发明实施例的一种可选的对象的匹配方法的流程图,如图2所示,该方法可以包括以下步骤:

步骤s202,接收到目标指令,目标指令用于指示获取相互匹配的两个对象;

步骤s204,获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,第一集合用于保存预先创建的标识组,第一集合中的每个标识组包括至少一个标识;

步骤s206,判断第二集合中是否存在第二对象,第二对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内,第二集合用于保存待匹配的对象,每个待匹配的对象用于表示多个第二标识组,待匹配的对象表示的多个第二标识组的标识数量与第一对象表示的多个第一标识组的标识数量相同;

步骤s208,在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

通过上述步骤s202至步骤s208,在接收到用于指示获取相互匹配的两个对象的目标指令时,获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,在判断出第二集合中存在与第一对象的目标属性值之间的差值在预设范围内的第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象,对于每一个创建的对象,只需要与第二集合中的对象逐一比对即可找到相互匹配的对象,而不用将其放入第二集合中再对第二集合中的对象进行两两匹配,可以解决相关技术中在确定相互匹配的对象时效率较低的技术问题,进而达到提高匹配效率的技术效果。

本申请的上述方法可以应用于需要进行对象匹配的领域,如游戏领域、金融领域等。下面分别进行说明:

(一)对于金融领域,下面结合图2进行说明

在步骤s202提供的技术方案中,在相关技术中,在给定一定金融产品的组合方式(即第一对象)时,需要进行类推得到某些属性类似的其它组合方式,具体是以给出的第一对象作为参考,得到与第一对象在收益、风险等方面相当的金融产品的组合方式(即第二对象),并推荐给用户,上述的目标指令即用于触发执行上述的得到相互匹配的两个对象的指令。

在步骤s204提供的技术方案中,第一集合用于保存预先创建的标识组,标识组中的标识即基金、股票等金融产品的标识,标识组相当于一个较小的组合,其中包括的金融产品的组合往往在1到5个之间,每个标识组所标识的金融产品优选为同一类金融产品(如基金或股票等),也可以为不同类金融产品的组合;第一标识组即被选出的一个较小的金融产品组合,被选出的多个第一标识组被即为第一对象,第一对象相当于一个复合的更大的金融产品组合方式。

上述的获取第一集合中的多个第一标识组相当于选出多个较小的金融产品的组合方式,创建用于表示获取的多个第一标识组的第一对象相当于将选取出的多个较小的金融产品的组合方式组合在一起,形成更为复杂的第一对象,也即用于参考的对象。

在步骤s206提供的技术方案中,第二集合中的对象也相当于对多个较小的金融产品的组合方式的进一步组合,该对象所表示的每个第二标识组相当于一个较小的金融产品的组合方式,第二标识组中的金融产品的数量与第一标识组中金融产品的数量相同。

判断第二集合中是否存在第二对象,即判断第二集合中是否存在与第一对象在目标属性(如收益、风险等属性中的一个或多个)上相匹配的对象,即以第一对象为参考,选出与其在收益、风险等方面较为接近的对象。

在步骤s208提供的技术方案中,在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象,如在专家等给出一个投资方式(即第一对象)的情况下,通过匹配计算得到与之在收益、风险等方面相当的第二对象,以便于将第二对象和第一对象一起推荐给用户购买。

(二)对于游戏领域,下面结合图2进行说明

第一集合即用于保存待组成战团的战队的集合,集合中的每个标识组相当于一个战队,标识组中的标识相当于同一战队中帐号的标识(如帐号本身、昵称、标识字符串等);创建的用于表示多个第一标识组(战队)的第一对象即一个战团(记为第一战团)。

第二集合中保存的对象为待匹配的战团,待匹配的战团也由多个战队(即第二标识组)组成,第二战团中帐号数量(即标识数量)与第一战团中帐号数量相同。

目标属性可以为特定的一个属性,也可以是多个属性的组合,所涉及的属性包括但不局限于进攻属性(如进攻武器、进攻武器的熟练度、经验、敏捷度、智力等)、防御属性(如防御武器、防御武器的熟练度、恢复能力、治疗能力等)等。

上述的战队由一个或多个玩家(即帐号,如1到5个)组成;战团由多个战队组成,每个战团的玩家数目固定(如10个);战团组成是指挑选多个战队组成一个战团;战团匹配是指匹配战力值接近的两个战团进行战斗。

在步骤s202提供的技术方案中,考虑到游戏中存在多个战队组成大规模战团并进行匹配战斗的需要,本申请的方法可用于战团快速组成、匹配,并且使匹配的两方战团的战斗力尽可能接近,同时,尽量缩短玩家平均等待匹配的时间,减少等待时间过长的玩家的数目。上述的目标指令即用于触发战团快速组成、匹配的指令,所匹配的对象即战团。

在步骤s204提供的技术方案中,获取第一集合中的多个第一标识组的目的在于找到总的帐号数量为预设数量的多个战队(即第一标识组),以组成第一战团。具体可以使用如下两种方式进行战团组建:

(1)方式一,直接在第一集合中搜索

可选地,第一集合可采用双向链表存储方式,第一集合中的每个标识组(即战队)保存在双向链表中的一个节点上。

采用方式一组建战团时,遍历第一集合中的各个战队,按照预设数量查找双向链表中的多个节点,查询到总的帐号数量为预设数量的多个战队,并将查找到的多个战队组成战团。

由于第一集合中的帐号数量不定,可能是预设数量的整数倍,也可能不是预设数量的整数倍,对于后者,则存在始终不可能和其余战队组成战团的队伍,而在采用方式一进行遍历搜索时,每次搜索均会对所有队伍进行搜索,从而影响了搜索的效率,为了提高战团组建的效率,本申请还提供了方式二进行战团组建。

(2)方式二,删除多余的战队

在获取第一集合中的多个第一标识组时,先考虑第一集合中所有标识的标识数量(也即帐号数量),在第一集合中所有标识的标识数量不为预设数量的整数倍的情况下,删除第一集合中标识数量为目标数量的标识组,目标数量为第一集合中所有标识的标识数量与预设数量进行取余运算后的余数,通过该步骤可以保证第一集合中的帐号数量始终是预设数量的整数倍,也即每个标识组(战队)都是需要被用到的,从而避免了对不能组成战团的战队的搜索,提高了战团的组成效率。

需要说明的是,删除第一集合中标识数量为目标数量的标识组是指删除总的帐号数量为目标数量的标识组(即战队),即按照目标数量进行删除,可以删除一个或者多个战队,只要这一个或多个战队的总标识数量为目标数量即可。

在第一集合中所有标识的标识数量为预设数量的整数倍的情况下,或在删除第一集合中标识数量为目标数量的标识组之后,按照预设数量查找双向链表中的多个第一标识组,查找到的多个第一标识组中所有标识的标识数量为预设数量。

可选地,在删除第一集合中标识数量为目标数量的标识组之后,删除双向链表中的第一节点,并建立与第一节点相邻的两个第二节点之间的相邻关系,即将第一节点的前一个节点(记为第三节点)的用于指向第三节点的后一节点的指针,修改为指向第一节点的后一节点(记为第四节点),将第四节点的用于指向前一节点的指针,修改为指向第三节点,第一节点为双向链表中用于保存被删除的标识组的节点。

在上述实施例中,游戏客户端的玩家队伍发出组团战斗请求,后台服务器收到请求后,进行战团组成和战团匹配。为了快速的完成后台响应过程,本申请使用基于双向链表的深度优先搜索算法,双向链表中存放所有待选的战队,战团组成过程中深度优先搜索战队链表,在战团组成后,在链表中删除该战团中的所有战队,选用双向链表,便于在战团组成过程中频繁地接收新的战队并删除已组成战团的战队,双向链表十分适合这样频繁的插入和删除操作,能够提高组成战团的效率。

在步骤s206提供的技术方案中,游戏中需要战队之间进行匹配并战斗的情景,本申请通过判断第二集合中是否存在第二对象等方式来查找与第一对象匹配的对象,即查找与第一战团匹配的战团,对于每个新创建的第一战团,主要包括以下几次匹配机会,以将多个战队组成固定人数的战团,并尽量缩短玩家平均等待匹配的时间,减少等待时间过长的玩家的数目,并尽可能匹配战力值接近的战团进行战斗。

(1)第一次匹配

在第一次匹配的过程中,判断第二集合中是否存在第二对象可以通过如下方式实现:获取第一对象(第一战团)的目标属性值(如进攻属性和/或防御属性的属性值)和第二集合中任一对象(即待匹配战团)的目标属性值(如进攻属性和/或防御属性的属性值),第一对象的目标属性值为多个第一标识组中所有标识在目标属性上的属性值的平均值(也即是多个第一战队中每个帐号在进攻属性或防御属性的属性值的平均值),任一对象的目标属性值为任一对象表示的多个第二标识组中所有标识在目标属性上的属性值的平均值(也即是多个第二战队中每个帐号在进攻属性或防御属性的属性值的平均值);判断第一对象的目标属性值与任一对象的目标属性值之间的差值是否在预设范围内,目标属性值与第一对象的目标属性值之间的差值在预设范围内的任一对象为第二对象,在第一次匹配时,若存在第二战团,则相当于第一次匹配成功,由第二战团和第一战团进行团战。

可选地,在判断第二集合中是否存在第二对象之后,在判断出第二集合中不存在与第一对象匹配的第二对象的情况下,将第一对象作为一个待匹配的对象保存至第二集合中,以与后续创建的对象进行匹配。

对于创建的第一对象而言,若没有匹配到合适的第二对象,则此次匹配终止,第一对象被放入第二集合中。

对于第二集合而言,保存的对象均为创建之后在第一次匹配(与第二集合中的对象进行匹配)时未找到匹配对象的对象。

(2)第二次匹配

可选地,为了保证对每个新创建的第一对象(第一战团)能够匹配到对应的对象(战团),对于被保存在第二集合中的第一对象,还存在第二次匹配到对应的对象的机会。

在将第一对象作为一个待匹配的对象保存至第二集合中之后,获取第一集合中的多个第三标识组,并创建用于表示获取的多个第三标识组的第三对象(也即在创建第一战团之后新创建的第三战团),第三标识组与第一标识组为不同的标识组;判断第三对象(第三战团)的目标属性值与第二集合中的第一对象(第一战团)的目标属性值之间的差值是否在预设范围内;在判断出第三对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内的情况下,将第一对象和第三对象作为相互匹配的两个对象,也即第二次匹配成功匹配到合适的战团。

对于每一个在创建第一战团之后创建的第三战团,都需要与第二集合中的第一战团进行匹配,每个第三战团均有可能成为与第一战团对战的战团。

具体的匹配过程与上述的第一战团与第二战团之间的匹配方式相同,在此不再赘述。

(3)第三次匹配

对于超时未匹配到战团的第一战团,应该考虑尽量降低匹配门槛,优先进行匹配。

可选地,在将第一对象作为一个待匹配的对象保存至第二集合中之后,在预设时长内未查找到与第一对象匹配的对象的情况下,将第二集合中的第一对象转存至第三集合,第三集合用于保存超时(即超过预设时长)未查找到匹配对象的对象。

在将第二集合中的第一对象(第一战团)转存至第三集合之后,在接收到匹配指令(如计时器定时发送的指令、第三集合中数量达到固定值时触发的指令、系统根据算法计算后触发的指令等)时,对第三集合中的对象(即超时未匹配到对象的战团)按照目标属性值的大小进行排序;从目标属性值最大或者目标属性值最小的对象开始,将第三集合中排序相邻的两个对象作为相互匹配的两个对象。

例如,按照攻击属性值从大到小排列,将攻击属性值最大和次大的两个战团进行匹配,将攻击属性值第三大和第四大的两个战团进行匹配,以此类推,直至将第三集合中所有的战团(包括加入的第一战团)匹配完毕。

需要说明的是,若第三集合中的战团数量为双数,那么对于所有的战团,必然都能找到对应的匹配战团,极端情况下,若第三集合中的战团数量为单数,第一战团刚好处于队首或者对尾,刚好没有匹配到合适的战团,此时就需要进行第四次匹配。

(4)第四次匹配

在将第三集合中排序相邻的两个对象(战团)作为相互匹配的两个对象之后,在不存在与第三集合中的第一对象(第一战团)匹配的对象的情况下,查找第二集合中目标属性值与第一对象的目标属性值之间的差值最小的第四对象(即第四战团),也即在第二集合中查找一个与第一战团战斗力最接近的战团;将第一战团和第四战团作为相互匹配的两个战团。

在步骤s208提供的技术方案中,在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

相关技术多只有小规模的战队匹配,不支持将多支战队组成规模更大且固定人数的战团(如10人),更不支持战团匹配,本申请可将多支战队组成固定规模的战团,第一次和第二次匹配时尽可能匹配战力值接近的战团进行战斗,第三次和第四次匹配时尽量缩短玩家平均等待匹配的时间,尽量避免让玩家的等待时间超过规定的阈值(比如30秒),同时有效的安排超时未匹配的战团进行战斗。

为了使读者对本申请的技术方案更为理解,下面以游戏为例,结合图3和图4进一步详述本申请的实施例:

步骤s302,链表中加入新的战队。

游戏用户可以自己组建战队,或者加入已经组建的战队,组建的战队支持实时加入到团战中,此时战队会被添加至双向链表中。

步骤s304,计算链表中所有战队的当前总人数。

步骤s306,当前人数除以10的余数是否为0,若是则执行步骤s312,否则执行步骤s308。

步骤s308,深度搜索人数为上述余数的战队。

步骤s310,将搜索出来的战队从链表中删除。

步骤s312,搜索出能够组成10人战团的战队。

在组成战团的过程中,也即在对战队链表深度搜索过程中,首先通过取模操作快速判断链表中的战队是否存在一定不能组成战团的战队,如果存在,则根据模运算的余数从链表中删除无法组成战团的队伍,从而缩小搜索空间并避免错误的搜索路径。

具体而言,假设战团规模为m人(如10人),则在搜索战团之前,首先对链表中战队总人数n关于m取模,余数r=(nmodm),如果r为0,则调用深度搜索尝试组成战团;如果r不为0,则首先执行步骤s308,通过深度搜索能组成规模为r的战队,并将这些战队从链表中删除,再执行步骤s312,调用深度搜索尝试组成战团。

如果r不为0,但是战团人数只能为n,所以有r人无法参与战斗,因此可以首先在链表中搜索能组成r人的队伍,并将这些队伍从链表中删除,然后再从链表中搜索战队组成战团,通过进行优化,从而可以缩小搜索空间并避免错误的搜索路径,提高组建战团的效率。

步骤s314,已组战团(即待匹配战团)的战斗力与新组成的战团(即第一战团)的战斗力差值是否小于阈值,若是则执行步骤s316,否则执行步骤s318。

步骤s316,将匹配到的战团从已组战团中删除,并加入团战。

步骤s318,将第一战团加入待匹配战团。

在该实施例中,在进行战团匹配时,以10人大小的战团规模为例,当有新队伍想加入战团时,将该新队伍加入双向链表,根据玩家人数模10的余数,判断是否提前删除一些队伍,搜索到新战团group0以后,匹配战力值接近的战团group1和group0进行战斗。同时,执行图4所示的步骤,定时检查是否存在超时的战团,并按战力值匹配超时的战团进行战斗,如果仍然有超时战团未匹配(超时战团个数为奇数时),则安排超时战团和战力最接近的未超时战团进行战斗。

步骤s402,定时将已组战团(即第二集合)中超时的战团加入超时战团链表(即第三集合)。

战团匹配过程主要考虑挑选战斗力接近的战团进行对垒,为新组成的战团以及超时未匹配的战团挑选对垒战团。集合set0保存目前所有已成立但还未能匹配到对垒战团的战团,算法定时扫描集合set0(即第二集合),将其中超时未匹配(等待时间过长)的战团加入集合set1(即第三集合),并将这些战团从set0中删除,后续的战团匹配过程中则会考虑将集合set1中的战团相互匹配对垒,如步骤s404和步骤s406。

需要说明的是,对于set0,假设要为新成立的战团group0挑选对垒战团,则扫描集合set0,尝试找到与战团group0战斗力差值小于给定阈值的战团,如果能找到满足条件的战团group1,则将group1从已组战团中删除,安排group0和group1进行战斗,否则,则将group0加入集合set0,等待后续匹配。

步骤s404,对于超时战团链表,超时战团按照战斗力排序。

步骤s406,超时战团按照排序两两进行战斗。

步骤s408,判断是否还存在超时战团,若是则执行步骤s410,否则执行步骤s412。

为了尽快安排超时未匹配的战团进行对垒,将集合set1中的战团按战力值排序(由于超时战团数目少,set1的排序时间成本很低),排序完成后,从set1中每次拿出两个战力值最大和次大的两个战团进行战斗,并从set1中删除这两个战团,如果set1中仍然有未能匹配的战团,则将set1剩下战团和set0中战团进行匹配,找出战力值最接近的两个战团进行战斗,此时不再要求战力差小于阈值。

步骤s410,从已组战团中找出和超时战团战斗力最接近的战团进行战斗。

步骤s412,结束匹配。

本申请的上述方法通过实践验证切实可行,例如:实验模拟玩家人数从20到1000之间变化,仿真981次,每个玩家都属于一个队伍,每个队伍1到5人(实际情景中,没有加入任何队伍的玩家,可以认为是在人数为1的队伍中),多个队伍可以组成10人战团。玩家战力在1到4000,战团每次战斗时间5分钟,战斗总时间为40分钟,每次战斗完休息时间从5到30秒不等,也即每支战团最多战斗7次。战团的战力是10个玩家战力平均值,能进行战斗的两个战团之间的战力差不超过1000。玩家一场战斗结束到下一场战斗开始的时间间隔(不包括玩家主动休息时间)为玩家等待时间,最大等待时间为1000秒,如果战团内存在玩家等待时间超过1000秒,强制匹配,不考虑战力差。

仿真结果如图5所示,横坐标是玩家人数,纵坐标是百分比,橘红色曲线(即虚线下方的曲线b)是等待时间在30秒以上的玩家所占的比例,该统计指标可以表明该算法对多少数量的玩家是不可忍受的,蓝色曲线(即虚线上方的曲线a)是等待时间在10秒以下的玩家所占的比例,该统计指标可以表明该算法对多少数量的玩家可以用最短的时间匹配出结果。在初始时曲线a和曲线b存在相交的地方。在981次模拟中,每次模拟的时间包括每支战团最多达七次的匹配,结果表明算法每次模拟平均运行时间0.2599毫秒,此运行时间在40分钟的战斗总时间中微乎其微,说明算法实用性强。

在本申请提供的技术方案中,可将多支战队组成规模更大且固定人数的战团,并尽可能匹配战力值接近的战团进行战斗,同时有效的安排超时未匹配的战团进行战斗,实践证明算法平均可实现92.81%的玩家及时匹配,不能及时匹配的玩家只有4.2%,平均匹配时间只有0.2599毫秒,因此可以取得良好的匹配效果。

作为一种可选的实施例,本申请的上述方法还可以用于金融领域,用于匹配收益、风险相当的两种或多种金融产品的组合,其具体实现方式与游戏领域的实现方式类似,在此不再赘述。

可选地,本申请的上述方法除了在上述实施例中的服务器上运行以外,还可以在终端上,或在终端和服务器上共同执行,具体实现方式与在服务器上类似,后续不再赘述。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述对象的匹配方法的装置。图6是根据本发明实施例的一种可选的对象的匹配装置的示意图,如图6所示,该装置可以包括:接收单元62、第一获取单元64、第一判断单元66以及第一匹配单元68。

接收单元62,用于接收到目标指令,其中,目标指令用于指示获取相互匹配的两个对象;

第一获取单元64,用于获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,其中,第一集合用于保存预先创建的标识组,第一集合中的每个标识组包括至少一个标识;

第一判断单元66,用于判断第二集合中是否存在第二对象,其中,第二对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内,第二集合用于保存待匹配的对象,每个待匹配的对象用于表示多个第二标识组,待匹配的对象表示的多个第二标识组的标识数量与第一对象表示的多个第一标识组的标识数量相同;

第一匹配单元68,用于在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

需要说明的是,该实施例中的接收单元62可以用于执行本申请实施例1中的步骤s202,该实施例中的第一获取单元64可以用于执行本申请实施例1中的步骤s204,该实施例中的第一判断单元66可以用于执行本申请实施例1中的步骤s206,该实施例中的第一匹配单元68可以用于执行本申请实施例1中的步骤s208。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

通过上述模块,在接收到用于指示获取相互匹配的两个对象的目标指令时,获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,在判断出第二集合中存在与第一对象的目标属性值之间的差值在预设范围内的第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象,对于每一个创建的对象,只需要与第二集合中的对象逐一比对即可找到相互匹配的对象,而不用将其放入第二集合中再对第二集合中的对象进行两两匹配,可以解决相关技术中在确定相互匹配的对象时效率较低的技术问题,进而达到提高匹配效率的技术效果。

本申请的上述装置可以服务器的形式应用于需要进行对象匹配的领域,如游戏领域、金融领域等。下面分别进行说明:

(一)对于金融领域

在相关技术中,在给定一定金融产品的组合方式(即第一对象)时,需要进行类推得到某些属性类似的其它组合方式,具体是以给出的第一对象作为参考,得到与第一对象在收益、风险等方面相当的金融产品的组合方式(即第二对象),并推荐给用户,上述的目标指令即用于触发执行上述的得到相互匹配的两个对象的指令。

第一集合用于保存预先创建的标识组,标识组中的标识即基金、股票等金融产品的标识,标识组相当于一个较小的组合,其中包括的金融产品的组合往往在1到5个之间,每个标识组所标识的金融产品优选为同一类金融产品(如基金或股票等),也可以为不同类金融产品的组合;第一标识组即被选出的一个较小的金融产品组合,被选出的多个第一标识组被即为第一对象,第一对象相当于一个复合的更大的金融产品组合方式。

上述的获取第一集合中的多个第一标识组相当于选出多个较小的金融产品的组合方式,创建用于表示获取的多个第一标识组的第一对象相当于将选取出的多个较小的金融产品的组合方式组合在一起,形成更为复杂的第一对象,也即用于参考的对象。

第二集合中的对象也相当于对多个较小的金融产品的组合方式的进一步组合,该对象所表示的每个第二标识组相当于一个较小的金融产品的组合方式,第二标识组中的金融产品的数量与第一标识组中金融产品的数量相同。

判断第二集合中是否存在第二对象,即判断第二集合中是否存在与第一对象在目标属性(如收益、风险等属性中的一个或多个)上相匹配的对象,即以第一对象为参考,选出与其在收益、风险等方面较为接近的对象。

在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象,如在专家等给出一个投资方式(即第一对象)的情况下,通过匹配计算得到与之在收益、风险等方面相当的第二对象,以便于将第二对象和第一对象一起推荐给用户购买。

(二)对于游戏领域

第一集合即用于保存待组成战团的战队的集合,集合中的每个标识组相当于一个战队,标识组中的标识相当于同一战队中帐号的标识(如帐号本身、昵称、标识字符串等);创建的用于表示多个第一标识组(战队)的第一对象即一个战团(记为第一战团)。

第二集合中保存的对象为待匹配的战团,待匹配的战团也由多个战队(即第二标识组)组成,第二战团中帐号数量(即标识数量)与第一战团中帐号数量相同。

目标属性可以为特定的一个属性,也可以是多个属性的组合,所涉及的属性包括但不局限于进攻属性(如进攻武器、进攻武器的熟练度、经验、敏捷度、智力等)、防御属性(如防御武器、防御武器的熟练度、恢复能力、治疗能力等)等。

上述的战队由一个或多个玩家(即帐号,如1到5个)组成;战团由多个战队组成,每个战团的玩家数目固定(如10个);战团组成是指挑选多个战队组成一个战团;战团匹配是指匹配战力值接近的两个战团进行战斗。

可选地,第一获取单元在获取第一集合中的多个第一标识组时,先考虑第一集合中所有标识的标识数量(也即帐号数量),在第一集合中所有标识的标识数量不为预设数量的整数倍的情况下,删除第一集合中标识数量为目标数量的标识组,目标数量为第一集合中所有标识的标识数量与预设数量进行取余运算后的余数,可以保证第一集合中的帐号数量始终是预设数量的整数倍,也即每个标识组(战队)都是需要被用到的,从而避免了对不能组成战团的战队的搜索,提高了战团的组成效率。

需要说明的是,删除第一集合中标识数量为目标数量的标识组是指删除总的帐号数量为目标数量的标识组(即战队),即按照目标数量进行删除,可以删除一个或者多个战队,只要这一个或多个战队的总标识数量为目标数量即可。

第一获取单元还用于在第一集合中所有标识的标识数量为预设数量的整数倍的情况下,或在删除第一集合中标识数量为目标数量的标识组之后,按照预设数量查找双向链表中的多个第一标识组,查找到的多个第一标识组中所有标识的标识数量为预设数量。

可选地,第一获取单元还用于在删除第一集合中标识数量为目标数量的标识组之后,删除双向链表中的第一节点,并建立与第一节点相邻的两个第二节点之间的相邻关系,第一节点为双向链表中用于保存被删除的标识组的节点。

在上述实施例中,游戏客户端的玩家队伍发出组团战斗请求,后台服务器收到请求后,进行战团组成和战团匹配。为了快速的完成后台响应过程,本申请使用基于双向链表的深度优先搜索算法,双向链表中存放所有待选的战队,战团组成过程中深度优先搜索战队链表,在战团组成后,在链表中删除该战团中的所有战队,选用双向链表,便于在战团组成过程中频繁地接收新的战队并删除已组成战团的战队,双向链表十分适合这样频繁的插入和删除操作,能够提高组成战团的效率。

可选地,游戏中需要战队之间进行匹配并战斗的情景,本申请通过判断第二集合中是否存在第二对象等方式来查找与第一对象匹配的对象,即查找与第一战团匹配的战团,对于每个新创建的第一战团,主要包括以下几次匹配机会,以将多个战队组成固定人数的战团,并尽量缩短玩家平均等待匹配的时间,减少等待时间过长的玩家的数目,并尽可能匹配战力值接近的战团进行战斗。

(1)第一次匹配

第一判断单元在第一次匹配的过程中,判断第二集合中是否存在第二对象可以通过如下方式实现:获取第一对象(第一战团)的目标属性值(如进攻属性和/或防御属性的属性值)和第二集合中任一对象(即待匹配战团)的目标属性值(如进攻属性和/或防御属性的属性值),第一对象的目标属性值为多个第一标识组中所有标识在目标属性上的属性值的平均值(也即是多个第一战队中每个帐号在进攻属性或防御属性的属性值的平均值),任一对象的目标属性值为任一对象表示的多个第二标识组中所有标识在目标属性上的属性值的平均值(也即是多个第二战队中每个帐号在进攻属性或防御属性的属性值的平均值);判断第一对象的目标属性值与任一对象的目标属性值之间的差值是否在预设范围内,目标属性值与第一对象的目标属性值之间的差值在预设范围内的任一对象为第二对象,在第一次匹配时,若存在第二战团,则相当于第一次匹配成功,由第二战团和第一战团进行团战。

可选地,如图7所示,本申请的装置还可以包括:保存单元72,用于在判断第二集合中是否存在第二对象之后,在判断出第二集合中不存在与第一对象匹配的第二对象的情况下,将第一对象作为一个待匹配的对象保存至第二集合中,以与后续创建的对象进行匹配。

(2)第二次匹配

可选地,为了保证对每个新创建的第一对象(第一战团)能够匹配到对应的对象(战团),对于被保存在第二集合中的第一对象,还存在第二次匹配到对应的对象的机会。

本申请的装置还可以包括:第二获取单元,用于在将第一对象作为一个待匹配的对象保存至第二集合中之后,获取第一集合中的多个第三标识组,并创建用于表示获取的多个第三标识组的第三对象,其中,第三标识组与第一标识组为不同的标识组;第二判断单元,用于判断第三对象的目标属性值与第二集合中的第一对象的目标属性值之间的差值是否在预设范围内;第二匹配单元,用于在判断出第三对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内的情况下,将第一对象和第三对象作为相互匹配的两个对象。

对于每一个在创建第一战团之后创建的第三战团,都需要与第二集合中的第一战团进行匹配,每个第三战团均有可能成为与第一战团对战的战团。

具体的匹配过程与上述的第一战团与第二战团之间的匹配方式相同,在此不再赘述。

(3)第三次匹配

对于超时未匹配到战团的第一战团,应该考虑尽量降低匹配门槛,优先进行匹配。

可选地,本申请的装置还可以包括:转存单元,用于在将第一对象作为一个待匹配的对象保存至第二集合中之后,在预设时长内未查找到与第一对象匹配的对象的情况下,将第二集合中的第一对象转存至第三集合,其中,第三集合用于保存超时未查找到匹配对象的对象。

可选地,本申请的装置还可以包括:排序单元,用于在将第二集合中的第一对象转存至第三集合之后,在接收到匹配指令时,对第三集合中的对象按照目标属性值的大小进行排序;第三匹配单元,用于从目标属性值最大或者目标属性值最小的对象开始,将第三集合中排序相邻的两个对象作为相互匹配的两个对象。

例如,按照攻击属性值从大到小排列,将攻击属性值最大和次大的两个战团进行匹配,将攻击属性值第三大和第四大的两个战团进行匹配,以此类推,直至将第三集合中所有的战团(包括加入的第一战团)匹配完毕。

需要说明的是,若第三集合中的战团数量为双数,那么对于所有的战团,必然都能找到对应的匹配战团,极端情况下,若第三集合中的战团数量为单数,第一战团刚好处于队首或者对尾,刚好没有匹配到合适的战团,此时就需要进行第四次匹配。

(4)第四次匹配

第四次匹配可以通过本申请的装置包括的如下模块实现:查找单元,用于在将第三集合中排序相邻的两个对象作为相互匹配的两个对象之后,在不存在与第三集合中的第一对象匹配的对象的情况下,查找第二集合中目标属性值与第一对象的目标属性值之间的差值最小的第四对象;第四匹配单元,用于将第一对象和第四对象作为相互匹配的两个对象。

相关技术多只有小规模的战队匹配,不支持将多支战队组成规模更大且固定人数的战团(如10人),更不支持战团匹配,本申请可将多支战队组成固定规模的战团,第一次和第二次匹配时尽可能匹配战力值接近的战团进行战斗,第三次和第四次匹配时尽量缩短玩家平均等待匹配的时间,尽量避免让玩家的等待时间超过规定的阈值(比如30秒),同时有效的安排超时未匹配的战团进行战斗。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

实施例3

根据本发明实施例,还提供了一种用于实施上述对象的匹配方法的服务器或终端。

图8是根据本发明实施例的一种终端的结构框图,如图8所示,该终端可以包括:一个或多个(图中仅示出一个)处理器801、存储器803、以及传输装置805(如上述实施例中的发送装置),如图8所示,该终端还可以包括输入输出设备807。

其中,存储器803可用于存储软件程序以及模块,如本发明实施例中的对象的匹配方法和装置对应的程序指令/模块,处理器801通过运行存储在存储器803内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的对象的匹配方法。存储器803可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器803可进一步包括相对于处理器801远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置805用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置805包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置805为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器803用于存储应用程序。

处理器801可以通过传输装置805调用存储器803存储的应用程序,以执行下述步骤:接收到目标指令,其中,目标指令用于指示获取相互匹配的两个对象;获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,其中,第一集合用于保存预先创建的标识组,第一集合中的每个标识组包括至少一个标识;判断第二集合中是否存在第二对象,其中,第二对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内,第二集合用于保存待匹配的对象,每个待匹配的对象用于表示多个第二标识组,待匹配的对象表示的多个第二标识组的标识数量与第一对象表示的多个第一标识组的标识数量相同;在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

处理器801还用于执行下述步骤:获取第一对象的目标属性值和第二集合中任一对象的目标属性值,其中,第一对象的目标属性值为多个第一标识组中所有标识在目标属性上的属性值的平均值,任一对象的目标属性值为任一对象表示的多个第二标识组中所有标识在目标属性上的属性值的平均值;判断第一对象的目标属性值与任一对象的目标属性值之间的差值是否在预设范围内,其中,目标属性值与第一对象的目标属性值之间的差值在预设范围内的任一对象为第二对象。

采用本发明实施例,在接收到用于指示获取相互匹配的两个对象的目标指令时,获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,在判断出第二集合中存在与第一对象的目标属性值之间的差值在预设范围内的第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象,对于每一个创建的对象,只需要与第二集合中的对象逐一比对即可找到相互匹配的对象,而不用将其放入第二集合中再对第二集合中的对象进行两两匹配,可以解决相关技术中在确定相互匹配的对象时效率较低的技术问题,进而达到提高匹配效率的技术效果。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图8所示的结构仅为示意,终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图8其并不对上述电子装置的结构造成限定。例如,终端还可包括比图8中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图8所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行对象的匹配方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s11,接收到目标指令,其中,目标指令用于指示获取相互匹配的两个对象;

s12,获取第一集合中的多个第一标识组,并创建用于表示获取的多个第一标识组的第一对象,其中,第一集合用于保存预先创建的标识组,第一集合中的每个标识组包括至少一个标识;

s13,判断第二集合中是否存在第二对象,其中,第二对象的目标属性值与第一对象的目标属性值之间的差值在预设范围内,第二集合用于保存待匹配的对象,每个待匹配的对象用于表示多个第二标识组,待匹配的对象表示的多个第二标识组的标识数量与第一对象表示的多个第一标识组的标识数量相同;

s14,在判断出第二集合中存在第二对象的情况下,将第一对象和第二对象作为相互匹配的两个对象。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:

s21,获取第一对象的目标属性值和第二集合中任一对象的目标属性值,其中,第一对象的目标属性值为多个第一标识组中所有标识在目标属性上的属性值的平均值,任一对象的目标属性值为任一对象表示的多个第二标识组中所有标识在目标属性上的属性值的平均值;

s22,判断第一对象的目标属性值与任一对象的目标属性值之间的差值是否在预设范围内,其中,目标属性值与第一对象的目标属性值之间的差值在预设范围内的任一对象为第二对象。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1