一种分组方法、装置、及计算机设备
技术领域
本说明书实施例涉及数据处理技术领域,尤其涉及一种分组方法、装置、及计算机设备。
背景技术
目前,在诸多应用场景中会涉及到分组算法,例如涉及到资源调度、任务执行等应用场景。简单来说,分组算法所要解决的问题是:将N个待分组对象进行分组,使得每一个分组内对象成员的总和不超过预设阈值,分组的数量尽可能地少,且各分组之间较为平衡,也即各分组之间的方差尽可能地小。为了解决这一问题,现有技术中提出了穷举法与贪心算法,其中,穷举法即穷举出所有的分组结果,从所有的分组结果中选取出一个最优解;贪心算法即尽可能地将多个对象成员分配到同一个分组中,直至分组内对象成员的总和不超过预设阈值。
然而,穷举法的计算复杂度较高,从而导致分组效率较低;贪心算法相对于穷举法而言虽然较为高效,但并无法实现各分组之间的相对平衡。
发明内容
针对上述技术问题,本说明书实施例提供一种分组方法、装置、及计算机设备,技术方案如下:
根据本说明书实施例的第一方面,提供一种分组方法,所述方法包括:
利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足以下条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;
利用以下步骤进行迭代处理,直至满足预设的迭代停止条件:
在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组;
在所述第一分组中确定满足预设条件的目标对象成员;
将所述目标对象成员从所述第一分组调配至所述第二分组。
根据本说明书实施例的第二方面,提供一种分组装置,所述装置包括:
初始分组模块,用于利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足以下条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;
第一确定模块,用于在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组;
第二确定模块,用于在所述第一分组中确定满足预设条件的目标对象成员;
重调配模块,用于将所述目标对象成员从所述第一分组调配至所述第二分组。
根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本说明书实施例提供的分组方法。
本说明书实施例所提供的技术方案,通过利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;利用以下步骤进行迭代处理,直至满足预设的迭代停止条件:在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组,在第一分组中确定一个满足预设条件的目标对象成员,将该目标对象成员从第一分组调配至第二分组,可以实现得到满足分组数量最少、分组之间的方差最小,且分组中对象成员之和不超过预设阈值的分组结果,且由于分组过程的复杂度仅与迭代次数相关,从而分组效率较高。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书一示例性实施例提供的一种分组方法的实施例流程图;
图2为本说明书一示例性实施例提供的一种分组装置的实施例框图;
图3示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
请参见图1,为本说明书一示例性实施例提供的一种分组方法的实施例流程图,该方法可以包括以下步骤:
步骤102:利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足以下条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少。
在本说明书实施例中,可以利用贪心算法对待分组对象进行分组,且该贪心算法基于以下量度标准:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少。
其中,上述所述的“所有可穷举出的分组结果”是指,在所得到的任一分组中包括的对象成员之和不超过预设阈值的前提条件下,利用穷举法所能穷举出的所有分组结果。
由此可见,基于上述量度标准,利用贪心算法对待分组对象进行分组,则可以使得所得到的分组结果满足“所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少”这一条件。
步骤104:在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组。
步骤106:在所述第一分组中确定一个满足预设条件的目标对象成员。
步骤108:将目标对象成员从第一分组调配至第二分组。
步骤110:确定是否满足预设的迭代停止条件,若满足,则结束流程;若不满足,则返回执行步骤104。
如下,对步骤104至步骤110进行描述:
假设通过执行步骤102得到M个分组,并假设该M个分组各自所包括的对象成员之和分别是A1、A2、A3、……、Am(其中,A1至Am是按照从小到大的顺序排列),此时,该M个分组的方差S0 2可通过如下公式(一)计算得出:
后续,假设将对象成员之和为Ak这一分组中某一对象成员n调配至对象成员之和为Aj这一分组中,此时,该M个分组的方差S1 2相对于上述S0 2的变化量则可通过如下公式(二)计算得出:
由上述公式(二)可知,若想使得重新分组之后方差减小,也即方差S1 2小于方差S0 2,则满足Ak-Aj>m即可。
由上述公式(二)可知,若想使得重新分组之后方差减小,也即方差S1 2小于方差S0 2,满足Ak-Aj>m即可。
再假设将对象成员之和为Ak这一分组中某一对象成员n调配至对象成员之和为Ai这一分组中,其中,Ai>Aj,并假设Ai=Aj+k(k大于0),此时,该M个分组的方差S2 2相对于上述S0 2的变化量则可通过如下公式(三)计算得出:
结合公式(二)与公式(三)可知,方差S2 2小于方差S1 2,从而,可以得出以下结论:若想使得重新分组之后的方差尽可能地小,则可以将m重新分配给对象成员之和最小的分组。基于此,在步骤104中,可以将当前的各个分组,按照其包括的对象成员之和从小到大的顺序进行排序,确定其中对象成员之和最大的分组,与对象成员之和最小的分组,为了描述方便,将该对象成员之和最大的分组称为第一分组,将该对象成员之和最小的分组称为第二分组。
后续,在步骤106中,可以在第一分组中确定一个满足预设条件的对象成员,为了描述方便,将该满足预设条件的对象成员称为目标对象成员,进一步,在步骤108中,则可以将该目标对象成员从第一分组重新调配至第二分组。
基于上述“由上述公式(二)可知,若想使得重新分组之后方差减小,也即方差S1 2小于方差S0 2,则满足Ak-Aj>m即可”这一描述可知,在本说明书实施例中,预设条件可以为:对象成员小于指定值,该指定值为第一分组所包括的对象成员之和,与第二分组所包括的对象成员之和之间的差值。由此可见,通过将第一分组中一个满足预设条件的目标成员重新调配至第二分组,可以使得重新分组之后的方差减小。
此外,在第一分组中,可能存在不止一个满足预设条件的对象成员,在该种情况下,则可以将满足预设条件的对象成员中的最小者确定为上述目标对象成员。通过该种处理,可以实现分组之间的微调,逐步提高分组之间的平衡性。
后续,在步骤110中,确定是否满足预设的迭代停止条件,若满足,则可以结束流程,得到最终的分组结果;若不满足则可以返回执行步骤104,继续进行一轮迭代处理,也即继续优化分组结果。
在一实施例中,迭代停止条件可以为:迭代次数达到预设的次数阈值。
在另一实施例中,迭代停止条件可以为:当前迭代处理后的分组结果与前一次迭代处理后的分组结果相同,也即分组结果不再发生变化。
本说明书实施例所提供的技术方案,通过利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;利用以下步骤进行迭代处理,直至满足预设的迭代停止条件:在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组,在第一分组中确定一个满足预设条件的目标对象成员,将该目标对象成员从第一分组调配至第二分组,可以实现得到满足分组数量最少、分组之间的方差最小,且分组中对象成员之和不超过预设阈值的分组结果,且由于分组过程的复杂度仅与迭代次数相关,从而分组效率较高。
作为一示例性应用场景,在风控业务***中,包括诸多任务,例如特征自动展开、特征元数据的提取、特征元数据的过滤等任务,不同的任务在执行时所需的内存资源大小不同,而***的内存容量有限,那么,则可以应用本说明书实施例提供的分组方法对待处理任务进行分组,以使得分组数量尽可能地少,且任一分组中各待处理任务所需内存资源的总和不超过***的内存容量,并且,分组之间尽量均衡。通过该种处理,可以提高风控业务***对任务的处理效率,节省计算资源。
本领域技术人员可以理解的是,上述所描述的将本说明书实施例提供的分组方法应用于风控业务***仅仅作为举例,在实际应用中,还可以将该分组方法应用至其他应用场景,例如涉及资源调度的应用场景,本说明书实施例对此不作限制。
相应于上述方法实施例,本说明书实施例还提供一种分组装置,参见图2所示,为本说明书一示例性实施例提供的一种分组装置的实施例框图,该装置可以包括:初始分组模块21、第一确定模块22、第二确定模块23,以及重调配模块24。
其中,初始分组模块21,可以用于利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足以下条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;
第一确定模块22,可以用于在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组;
第二确定模块23,可以用于在所述第一分组中确定满足预设条件的目标对象成员;
重调配模块24,可以用于将所述目标对象成员从所述第一分组调配至所述第二分组。
所述初始分组模块21具体用于:
在预设的量度标准下,利用贪心算法对待分组对象进行分组,其中,所述量度标准包括:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少。
在一实施例中,所述预设的迭代停止条件包括下述其中一项:
迭代次数达到预设的次数阈值;
当前迭代处理后的分组结果与前一次迭代处理后的分组结果相同。
在一实施例中,所述预设条件包括:
对象成员小于指定值,其中,所述指定值为所述第一分组所包括的对象成员之和,与所述第二分组所包括的对象成员之和之间的差值。
在一实施例中,所述第二确定模块23包括(图2中未示出):
第一确定子模块,用于在所述第一分组中确定满足预设条件的对象成员;
第二确定子模块,用于若所述满足预设条件的对象成员为两个以上,则将所述满足预设条件的对象成员中的最小者确定为目标对象成员。
可以理解的是,初始分组模块21、第一确定模块22、第二确定模块23,以及重调配模块24作为四种功能独立的模块,既可以如图2所示同时配置在装置中,也可以分别单独配置在装置中,因此图2所示的结构不应理解为对本说明书实施例方案的限定。
此外,上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的分组方法。该方法至少包括:利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足以下条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;利用以下步骤进行迭代处理,直至满足预设的迭代停止条件:在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组;在所述第一分组中确定满足预设条件的目标对象成员;将所述目标对象成员从所述第一分组调配至所述第二分组。
图3示出了本说明书实施例所提供的一种更为具体的计算机设备硬件结构示意图,该设备可以包括:处理器310、存储器320、输入/输出接口330、通信接口340和总线350。其中处理器310、存储器320、输入/输出接口330和通信接口340通过总线350实现彼此之间在设备内部的通信连接。
处理器310可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器320可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器320可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器320中,并由处理器310来调用执行。
输入/输出接口330用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口340用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线350包括一通路,在设备的各个组件(例如处理器33、存储器320、输入/输出接口330和通信接口340)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器310、存储器320、输入/输出接口330、通信接口340以及总线350,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的分组方法。该方法至少包括:利用设定算法对待分组对象进行分组,其中,所得到的分组结果满足以下条件:所得到的任一分组中包括的对象成员之和不超过预设阈值,且所得到的分组的数量在所有可穷举出的分组结果中最少;利用以下步骤进行迭代处理,直至满足预设的迭代停止条件:在当前的多个分组中确定其所包括的对象成员之和最大的第一分组,与其所包括的对象成员之和最小的第二分组;在所述第一分组中确定满足预设条件的目标对象成员;将所述目标对象成员从所述第一分组调配至所述第二分组。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。