用于网络译码及高速缓存辅助内容分配的装置及方法与流程

文档序号:11142924阅读:199来源:国知局
用于网络译码及高速缓存辅助内容分配的装置及方法与制造工艺

本申请案依据35U.S.C.§119(e)主张2014年1月22日申请的第61/930,072号临时美国申请案的优先权,所述临时美国申请案的全部内容以引用的方式并入本文中。



背景技术:

目前,内容分配网络(CDN)面临与请求式音频/视频流的流行度的增加相关联的容量及效率问题。解决这些问题的一个途径是通过网络高速缓存及网络译码。举例来说,常规内容分配网络(CDN)解决方案采用集中式算法将内容副本放置在网络内的高速缓存位置中。常规解决方案还包含高速缓存替换策略(例如,LRU(最近最少使用)或LFU(最不常用))以局部管理分布式高速缓存以便提高高速缓存命中率。其它常规解决方案使用随机线性网络译码以按群组传输数据包,这可提高容量有限的网络的处理量。

然而,常规网络高速缓存及网络译码解决方案未考虑高速缓存及传输资源的相对效率。这导致每递送对象或文件的次优化成本。此外,常规内容递送解决方案未利用网络高速缓存及网络译码的可能的组合益处。



技术实现要素:

根据至少一个实例实施例,一种用于在网络中传输数据文件的方法包含接收来自目的地装置的针对所述数据文件的数据包的请求。所述方法包含构造冲突图使得(i)由每一目的地装置请求的每一数据包由所述冲突图的多个顶点中的不同顶点表示,(ii)所述多个顶点与所述目的地装置相关联,及(iii)基于所述多个顶点中的哪些表示同一请求数据包及哪些请求数据包存储在属于目的地装置的高速缓存中而在所述多个顶点之间创建链路。所述方法包含基于所述链路将所述多个顶点指派到群组。所述方法包含基于所述指派对所述多个顶点着色以标记所述请求数据包。所述方法包含组合由具有相同颜色的顶点表示的数据包。所述方法包含发送所述经组合的数据包。

根据至少一个实例实施例,创建所述链路使得所述多个顶点中的第一者与第二者之间存在链路,条件是(i)所述第一及第二顶点不表示同一数据包,及(ii)由所述第一顶点表 示的数据包未存储在与所述第二顶点相关联的目的地装置的高速缓存中,或由所述第二顶点表示的所述数据包未存储在与所述第一顶点相关联的目的地装置的高速缓存中。

根据至少一个实例实施例,所述群组指示到所述多个顶点的若干链路。

根据至少一个实例实施例,所述着色包含确定所述多个顶点中的哪些具有最少数目的链路且所述多个顶点中的哪些具有最多数目的链路。所述着色包含基于到具有最少数目的链路的所述顶点的链路的数目及到具有最多数目的链路的所述顶点的链路的数目而计算阈值。所述着色包含基于所述阈值构造所述多个顶点的子集。

根据至少一个实例实施例,所述着色包含从所述子集选择顶点,确定连结到所述选定顶点的顶点的颜色,以及基于所述确定对所述选定顶点着色。

根据至少一个实例实施例,所述确定颜色将连结到所述选定顶点的顶点的颜色标识为第一组颜色且将所述冲突图的现有颜色标识为第二组颜色。所述对所述选定顶点着色包含在所述第一组颜色与所述第二组颜色不一致的情况下使用所述第二组中的所要颜色对所述选定顶点着色,以及在所述第一组颜色与所述第二组颜色一致的情况下使用新颜色对所述选定顶点着色。

根据至少一个实例实施例,执行所述着色直到所述多个顶点被着色。

根据至少一个实例实施例,所述方法包含更新所述第二组颜色以包含所述多个经着色的顶点的颜色。

根据至少一个实例实施例,所述方法包含对所述多个经着色的顶点执行局部搜索以减少所述第二组中的颜色的数目。所述局部搜索包含从所述冲突图的现有颜色中选择一种颜色,用所述选定颜色标识顶点,以及在未使用不同颜色对连结到所述经标识的顶点的顶点着色的情况下用从所述现有颜色选择的所述不同颜色替代所述选定颜色。

根据至少一个实例实施例,所述组合对由具有相同颜色的顶点表示的数据包执行异或运算或其它线性组合运算。

应理解,可由通信网络中的网络元件(例如,内容源)来执行以上方法。

附图说明

从以下本文中给出的具体实施方式及附图将更全面理解实例实施例,其中相似元件由相似参考数字表示,其仅以说明的方式给出且因此未限制实例实施例。

图1展示根据至少一个实例实施例的内容分配网络。

图2为说明根据实例实施例的网络元件的实例结构的图式。

图3A到3B为说明图2中的网络元件的实例操作的流程图。

图4说明根据至少一个实例实施例的递送阶段的实例操作。

图5说明根据至少一个实例实施例的构造无向冲突图的实例操作。

图6说明根据至少一个实例实施例的对冲突图着色的实例操作。

图7A到7D说明根据至少一个实例实施例对冲突图着色。

具体实施方式

现将参考附图更全面描述各种实例实施例,其中展示一些实例实施例。

本文揭示详细说明性实施例。然而,出于描述实例实施例的目的,本文揭示的特定结构及功能细节仅为代表性的。然而,本发明可体现在许多替代形式中且不应被解释为仅限于本文所阐述的实施例。

因此,虽然实例实施例能够具有各种修改及替代形式,但实施例仅以图式中实例的方式展示且在本文中将不对其进行详细描述。然而,应理解,不希望将实例实施例限于所揭示的特定形式。相反,实例实施例将涵盖落入本发明范围内的所有修改、等效物及替代。相似数字贯穿图式描述指代相似元件。

虽然可在本文中使用术语第一、第二等等以描述各种元件,但这些元件不应受这些术语限制。这些术语仅用于区分一个元件与另一个元件。举例来说,在不脱离本发明的范围的情况下,第一元件可被称为第二元件,且类似地,第二元件可被称为第一元件。如本文中使用,术语“及/或”包含相关列举项中的一或多者的任何及全部组合。

当称元件为“连接”或“耦合”到另一元件时,其可直接连接或耦合到其它元件或可存在介入元件。相反,当称元件为“直接连接”或“直接耦合”到另一元件时,不存在介入元件。应以相似方式解释用于描述元件之间的关系的其它词语(例如,“位于……之间”对“直接位于……之间”、“邻近”对“直接邻近”等等)。

本文使用的术语仅用于描述特定实施例的目的且不希望为限制性的。如本文所使用,希望单数形式“一”及“所述”还包含复数形式,除非上下文以其它方式明确指示。进一步将理解,当在本文中使用术语“包括”及/或“包含”时,指定所陈述的特征、整体、步骤、操作、元件及/或组件的存在,但不排除一或多个其它特征、整体、步骤、操作、元件、组件及/或其群组的存在或添加。

还应注意的是,在一些替代实施方案中,所指出的功能/动作可不按照图式中所指出的顺序发生。举例来说,连续展示的两个图式事实上可大体上并发地执行或有时可按相反顺序执行,这取决于所涉及的功能性/动作。

以下描述中提供特定细节以提供对实例实施例的透彻理解。然而,所属领域的技术 人员将理解,可在不具有这些特定细节的情况下实践实例实施例。举例来说,可在框图中展示系统以便不在不必要的细节方面使实例实施例混淆。在其它情况中,无需展示众所周知的过程、结构及技术的不必要的细节以便避免使实例实施例混淆。

在下文描述中,将参考操作的动作及符号表示(例如,以流程图表、流程图、数据流程图、结构图、框图等等的形式)描述说明性实施例,操作可被实施为程序模块,或功能过程包含例程、程序、对象、组件、数据结构等等,其执行特定任务或实施特定抽象数据类型且可使用在现有网络元件(例如,基站、基站控制器、NodeB、eNodeB等等)处的现有硬件来实施。此现有硬件可包含一或多个中央处理器(CPU)、数字信号处理器(DSP)、专用集成电路、现场可编程门阵列(FPGA)计算机或类似物。

虽然流程图可将操作描述为循序过程,但可并行、并发或同时执行许多操作。另外,可重新布置操作的顺序。虽然过程可在其操作完成时终止,但还可具有未包含于图式中的额外步骤。过程可对应于方法、函数、程序、子例程、子程序等等。当过程对应于函数时,其终止可对应于函数返回到调用函数或主函数。

如本文揭示,术语“存储媒体”或“计算机可读存储媒体”可表示用于存储数据的一或多个装置,其包含只读存储器(ROM)、随机存取存储器(RAM)、磁性RAM、磁芯存储器、磁盘存储媒体、光学存储媒体、快闪存储器装置及/或用于存储信息的其它有形机器可读媒体。术语“计算机可读媒体”可包含(但不限于)便携式或固定存储装置、光学存储装置及能够存储、含有或携载指令及/或数据的各种其它媒体。

此外,可由硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合来实施实例实施例。当在软件、固件、中间件或微码中实施时,执行必要任务的程序代码或代码段可存储在机器或计算机可读媒体(例如计算机可读存储媒体)中。当在软件中实施时,一个专用处理器或多个专用处理器将执行必要任务。

代码段可表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任何组合。可通过传递及/或接收信息、数据、自变量、参数或存储器内容将代码段耦合到另一代码段或硬件电路。可经由任何合适途径(包含存储器共享、消息传递、令牌传递、网络传输等等)传递、转发或传输信息、自变量、参数、数据等等。

图1展示根据至少一个实例实施例的内容分配网络。

如图1中所展示,内容分配网络(CDN)可包含连接到多个目的地装置200的网络元件151。网络元件151可为用于分配数据文件(例如电影文件)的内容源(例如多播源)。目的地装置200可为从所述内容源请求数据的终端用户装置。举例来说,每一目的地装置 200可为允许用户存取所请求数据的装置的部分或与所述装置相关联。举例来说,每一目的地装置200可为机顶盒、个人计算机、平板计算机、移动电话或用于流式音频及视频的任何其它相关联装置。目的地装置200中的每一者可包含用于存储从网络元件151接收的数据的存储器。以下将参考图2及3更详细描述网络元件151及目的地装置200的结构及操作。

图2为说明根据实例实施例的网络元件的实例结构的图式。根据至少一个实例实施例,网络元件151可经配置以用于通信网络(例如,图1的内容分配网络(CDN))。参考图2,网络元件151可包含(例如)数据总线159、发射器152、接收器154、存储器156及处理器158。虽然为简明起见,此处不包含单独描述,但应理解,每一目的地装置200可具有与网络元件151相同或类似的结构。

发射器152、接收器154、存储器156及处理器158可使用数据总线159相互发送数据及/或接收数据。发射器152是包含用于经由到通信网络中的其它网络元件的一或多个无线连接来发射无线信号(其包含(例如)数据信号、控制信号及信号强度/质量信息)的硬件及任何必要软件的装置。

接收器154是包含用于经由到通信网络中的其它网络元件的一或多个无线连接来接收无线信号(其包含(例如)数据信号、控制信号及信号强度/质量信息)的硬件及任何必要软件的装置。

存储器156可为能够存储数据的任何装置,其包含磁性存储装置、快闪存储装置等等。

处理器158可为能够处理数据的任何装置,其包含(例如)专用处理器,所述专用处理器经配置以基于输入数据执行特定操作,或能够执行包含于计算机可读码中的指令。举例来说,应理解,下文所描述的修改及方法可存储在存储器156上且由网络元件151内的处理器158实施。

此外,应理解,可由上文所描述的网络元件151的元件中的一或多者执行下文修改及方法。举例来说,接收器154可执行“接收”、“获取”及类似行为的步骤;发射器152可执行“发射”、“输出”、“发送”及类似行为的步骤;处理器158可执行“确定”、“产生”、“关联”、“计算”及类似行为的步骤;且存储器156可执行“存储”、“保存”及类似行为的步骤。

图3A到3B为说明图2中的网络元件的实例操作的流程图表。举例来说,图3A到3B展示用于执行通信网络中的高速缓存方法的实例操作。图4到6展示用于在已执行高速缓存方法之后递送数据文件的实例操作。

应理解,图3A到3B用于执行与下文的算法1相关的高速缓存分配方法,其中每一数据文件‘f’被分成‘B’相等大小的数据包(由有限域的符号表示)且属于库‘F’:

算法1:高速缓存算法

在算法1中,‘pu=[pu,1,...pu,m]’是‘u’目的地装置200的高速缓存分配,其中其中u=1、…、n,且0≤pu,f≤1/Mu,u=1、…、n,‘m’是由网络元件151托管的文件的数目,且‘Mu’是在目的地装置‘u’(即,目的地装置200)处的高速缓存的存储容量且Mu,f=pu,fMuB表示在用户u处高速缓存的文件f的数据包。网络元件151执行算法1使得目的地装置‘u’装置200高速缓存文件‘f’的Mu,f=pu,fMuB数据包。此外,算法1的随机性质允许网络装置151执行操作使得,如果两个目的地装置高速缓存给定文件‘f’的相同数目的数据包,那么两个目的地装置200中的每一者高速缓存同一文件‘f’的不同数据包。可由网络元件151根据下文图3A到3B中所描述的操作来实施算法1。

参考图3A,在操作300中,网络元件151可确定多个数据文件的流行度。数据文件可为(例如)视频及/或音频文件。网络元件151可基于来自目的地装置200中的至少一者的针对多个数据文件的请求(例如用户请求)而确定流行度。用户请求可形成数据文件的需求分布。网络元件151可根据所有目的地装置200的需求分布确定流行度。在此情况中,需求分布可遵循齐夫(Zipf)分布。替代地,网络元件151可确定每目的地装置的流行度,其中每一目的地装置200具有相关联的需求分布。

网络元件151可基于来自目的地装置200的针对数据文件的请求的数目确定流行度。举例来说,网络元件151确定由目的地装置200请求100次的数据文件比被请求50次的数据文件具有更高的流行度。因此,流行度可基于哪些数据文件被目的地装置200的用户最经常请求及查看。

网络元件151可将每一数据文件分成多个数据包。举例来说,网络元件151可将每一数据文件分成相同数目的数据包(例如三个数据包)。因此,在操作中310,网络元件151可基于操作300中确定的流行度而将多个数据文件的随机数据包发送到至少一个目的地装置。举例来说,网络元件151可将每一数据文件的随机数据包发送到目的地装置200使得随机数据包存储(或高速缓存)于每一目的地装置200处。

网络元件151可发送随机数据包使得每一目的地装置200基于确定的流行度及输入参数(例如,目的地装置的数目、流行度分布、每一目的地装置的高速缓存大小、位于网络元件151处的数据文件库的大小等等)接收针对数据文件中至少一者的给定数目的随机数据包。举例来说,如果目的地装置200具有相同大小的高速缓存及相同需求分布(例如,目的地装置是均匀的),那么网络元件151可将相同数目的数据包发送到每一目的地装置200。在一个实例中,假设存在两个目的地装置1及2及两个文件A及B(分成十个数据包)。如果(i)目的地装置1及2以相同频率请求文件A及文件B,且文件A以比文件B更高的频率被两个目标请求,及(ii)两个目的地装置1及2具有相同高速缓存大小(例如,按数据包计为六个单元),那么网络元件151将执行高速缓存方法,使得两个目的地装置1及2高速缓存文件A的四个数据包及文件B的两个数据包。

如果网络元件151在操作300中基于每个目的地装置确定流行度,那么网络元件151可在操作310中基于每个目的地装置发送随机数据包。举例来说,如果目的地装置200具有不同大小的高速缓存或不同需求分布,那么网络元件151可将不同数目的数据包发送到每一目标。在此情况中,参考以上的实例,目的地装置1可接收文件A的七个数据包及文件B的三个数据包,而目的地装置2可接收文件A的两个数据包及文件B的五个数据包。此可归因于以下事实:目的地装置1请求文件A比请求文件B多得多,且按数据包计具有十个单元的总高速缓存大小,而目的地2装置请求文件A比请求文件B少得多,且按数据包计具有七个单元的总高速缓存大小。

图3B说明可根据需要在操作300与310之间执行的网络元件151的实例操作。举例来说,在图3A中的操作300之后,网络元件151可基于所确定的流行度对数据文件进行排名。举例来说,在操作301中,网络元件151可使用操作300中所确定的流行度对数据文件从最流行的数据文件到最不流行的数据文件进行排名。

在操作302中,网络元件151可基于排名选择(针对每一数据文件)若干随机数据包。举例来说,网络元件151根据每一数据文件的相应排名及网络的输入参数(例如,目的地装置的数目、流行度分布、每一目的地装置的高速缓存大小、位于网络元件151处的数据文件库的大小等等)中的至少一者针对每一目标200及针对数据文件中的每一者选择 不同数目的随机数据包。在操作302之后,网络元件151可行进回到图3A中的操作310以发送针对每一数据文件的选定数目的随机数据包。

应了解,操作302可包含网络元件151基于至少一个阈值将经排名的数据文件至少分成第一子集及第二子集。所述至少一个阈值可基于经验证据及/或用户定义。第一子集可含有比第二子集排名更高的数据文件。因此,在操作310中,网络元件151可发送仅针对第一子集中的数据文件的选定数目的随机数据包。相较于常规多播技术,这可允许数据包在目的地装置200处的更有效的高速缓存,且减少递送期间的传输数目。

应理解,参考图3A及3B描述的操作允许网络改进性能,这是因为相较于常规多播技术,方案能够高速缓存更流行文件的更多数据包,增加(或替代地,最大化)由目的地装置200共同高速缓存的每一文件的不同数据包的量,且减少递送期间的传输数目。

结合以上描述的高速缓存方法,本申请案揭示用于递送阶段的实例方法,其中数据文件的请求的数据包经递送到目的地装置200。用于递送阶段的实例方法是基于图论。

图4说明根据至少一个实施例的递送阶段的实例操作。参考图4,在操作400中,网络元件151从目的地装置200(或用户装置)接收对数据文件的数据包的请求。由于网络元件151已执行以上所描述的高速缓存方法,因此每一目的地装置200仅请求未经高速缓存(或存储)的那些数据包作为高速缓存方法的结果。因此,递送阶段包括:向每一目的地装置200提供所请求的文件的丢失部分,即,从目的地装置200的存储器丢失的数据包。

在操作410中,网络元件151构造具有多个顶点的冲突图,使得由每一目的地装置200请求的每一数据包由所述冲突图的多个顶点中的不同顶点表示。因此,即使同一数据包由K个不同用户请求,所述数据包也被表示为冲突图中的K个不同顶点。换句话说,冲突图中的每一顶点与唯一一对目的地装置200及所请求的数据包相关联。因此,可以说,冲突图的每一顶点与目的地装置200相关联且表示由那个目的地装置200请求的数据包。此外,网络元件151可基于所述多个顶点中的哪些表示同一请求数据包及哪些请求数据包存储在属于目的地装置200的高速缓存中而构造冲突图。下文参考图5及6进一步详细描述操作410。

仍参考图4,在操作420中,网络元件151可将多个顶点指派到群组。每一群组可指示到多个顶点的若干链路。举例来说,每一顶点可具有到周围顶点的给定数目的链路。在一个实例中,如果顶点A及顶点B各自具有到其它顶点的三个链路,且顶点C及顶点D各自具有到其它顶点的四个链路,那么顶点A及B属于一个群组(例如群组3)且顶点C及D属于不用群组(例如群组4)。

在操作445中,网络元件151对多个顶点着色作为标记冲突图上的所请求的数据包的途径。举例来说,网络元件151基于操作430中所指派的群组对多个顶点着色。下文参考图6进一步详细论述操作445。

在操作480中,网络元件151组合由具有相同颜色的顶点表示的所请求的数据包。举例来说,网络元件151对由具有相同颜色的顶点表示的数据包执行异或(XOR)运算(或有限域上的其它线性组合运算)。

在操作490中,网络元件151发送经组合的数据包。举例来说,网络元件151经由多播传输将经组合的数据包发送到目的地装置200。通过在传输之前组合数据包,应理解,根据至少一个实例实施例的递送方法可减少网络元件151的传输数目,这可减少消耗并提高网络效率。应理解,目的地装置200可使用XOR运算(或有限域上的其它线性组合)接收并解码所传输的经组合的数据包。举例来说,目的地装置200可使用存储在高速缓存中作为密钥的数据包解码经组合的数据包。

图5说明根据至少一个实例实施例构造冲突图的实例操作。举例来说,图5进一步详细论述图4的操作410。图5说明用于构造无向冲突图的实例操作。可结合着色方案使用无向冲突图,所述着色方案在本申请案中是指贪心随机算法搜索程序(GRASP)着色方案。下文参考图6更详细描述此着色方案。

参考图5,在操作511中,网络元件151分析来自在操作410中填入的多个顶点的两个顶点‘Vi’及‘Vj’。在操作513中,如果网络元件确定顶点Vi及Vj表示同一所请求的数据包,那么网络元件151在操作515中不创建所述两个顶点之间的链路(或边)。接着,网络元件151进行到操作531以确定是否已分析冲突图中的所有顶点。

在操作513中,如果网络元件151确定顶点Vi及Vj不表示同一所请求的数据包,那么网络元件151进行到操作517且检查请求由顶点Vi表示的数据包的与顶点Vi相关联的目的地装置200的高速缓存(或存储器)。在操作519中,如果网络元件151确定表示顶点Vj的数据包在请求由顶点Vi表示的数据包的与顶点Vi相关联的目的地装置200的高速缓存中不可用,那么在操作521中网络元件151创建顶点Vi与顶点Vj之间的链路。接着,网络元件151进行到操作531以确定是否已分析冲突图中的所有顶点。

在操作519中,如果网络元件151确定表示顶点Vj的数据包在请求由顶点Vi表示的数据包的与顶点Vi相关联的目的地装置200的高速缓存中可用,那么在操作523中网络元件151检查请求由顶点Vj表示的数据包的与顶点Vj相关联的目的地装置200的高速缓存。在操作525中,如果表示顶点Vi的数据包在请求由顶点Vj表示的数据包的与顶点Vj相关联的目的地装置200的高速缓存中不可用,那么网络元件151在进行到 操作431之前在操作527中创建顶点Vi与Vj之间的链路以确定是否已分析冲突图中的所有顶点。

在操作525中,如果网络元件151确定表示顶点Vi的数据包在请求由顶点Vj表示的数据包的与顶点Vj相关联的目的地装置200的高速缓存中可用,那么网络元件151在操作529中不创建顶点Vi与Vj之间的链路。接着,网络元件151进行到操作531以确定是否已分析冲突图中的所有顶点。

一旦网络元件151已分析冲突图中的所有顶点,那么网络元件151在操作533中返回经构造的冲突图。

鉴于图5,应理解,图4中的构造操作410可通过创建多个顶点中的第一者与第二者之间的链路的操作来总结,条件是(i)第一顶点及第二顶点不表示同一数据包,且(ii)由第一顶点表示的数据包未存储在与第二顶点相关联的用户装置的高速缓存中,或由第二顶点表示的数据包未存储在与第一顶点相关联的用户装置的高速缓存中。

图6说明根据至少一个实例实施例的对冲突图着色的实例操作。在此应用中,着色方案可称为贪心随机算法搜索程序(GRASP)着色方案。图6中的操作可对应于以下算法。以下是一般GRASP着色方案算法:

将函数“BuildGreedyRandAdaptive”定义为:

将函数“MakeRCL”定义为:

将函数“GetColor”定义为:

将函数“LocalSearch”定义为:

在以上的伪代码中,HM,W=(V,E)表示(无向)冲突图,其中V及E分别表示如上文参考图5所论述而构造的无向冲突图HM,W的顶点及边(或链路)的集合。在HM,W中,对于每一顶点i∈V,Adj(i)={j∈V|[i,j]∈E}。cbest是表示通过所述算法找到的最佳关联颜色-顶点。对于所有i∈V,令d(i)=|Adj(i)|为顶点i的度数(或到顶点i的链路的数目)。令为构造解,即,顶点的集合已被指派到颜色(最初是空集),且令(最初为空集)为关联到cbest中的至少一个顶点的颜色的集合。在每一迭代处,执行以下运算:

1.对于所有i∈V,令d(i)=|Adj(i)|为顶点i的度数(或到顶点i的链路的数目)。令为构造解(最初是空集),即,顶点的集合已被指派到颜色,且令(最初为空集)为关联到cbest中的至少一个顶点的颜色的集合。

2.随机均匀地在[0,1]中选择参数β。

3.计算(参见函数MakeRCL):

gmin,最小贪心值:

gmax,最大贪心值:

阈值tau(τ):

τ=gmin+[β·(gmax-gmin)],其中β∈[0,1];且

RCL作为其度数为至少τ的候选未经着色的顶点的子集:

RCL={i∈V\c|d(i)≥τ};

4.执行以下运算直到所有顶点被着色:

a.从RCL随机选择顶点i(参见函数BuldGreedyRandAdaptive的行4,即,i=SelectIndex(RCL))。注意β∈[0,1]的值确定待于每一迭代处插入RCL中的顶点的选择中的贪心度对随机度的百分比。举例来说,对于β=1,选择为完全贪心且仅具有度数gmax的顶点插入RCL中。作为另一实例,对于β=0,选择为完全随机的且所有候选顶点插入RCL中(即,RCL=W);

b.选定顶点i,且分析其邻近顶点(参见函数GetColor);可发生四种可能情况:

I.所有邻近顶点仍未被着色且集合在此情况中,新颜色c被指派到顶点i且C=C∪{c}(图7A);

II.所有邻近顶点仍未被着色且集合在此情况中,使用可用的第一颜色c∈C对顶点i着色(图7B);

III.用颜色c∈C对至少一个邻近顶点着色且所有当前使用的颜色c∈C已被指派到至少一个邻近顶点:在此情况中,用新颜色c'对顶点i着色且C=C∪{c'}(图7C);且

IV.用颜色c∈C对至少一个邻近顶点着色且存在未被指派到任一邻近顶点的颜色c'∈C:在此情况中,用颜色c'对顶点i着色(图7D)。

c.顶点i被插入构造解(c[i]=c'或c[i]=c,根据情况(I)到(IV)及目标函数值一致地更新(即,f(c)=|C|)。

5.一旦冲突图的所有顶点被着色,那么函数BuldGreedyRandAdaptive返回解cbest

6.实施局部搜索,其将cbest作为输入且返回新有效颜色c*(参见函数LocalSearch)。迭代地,对于每一颜色c∈C计算用颜色c着色的所有顶点的集合Gc(函数LocalSearch的行2)且执行以下步骤:

a.对于每一顶点i∈Gc,搜索顶点Adj(i),即,邻近于顶点i的顶点。如果存在未指派到任何邻近顶点j∈Adj(i)的颜色c'∈C,c'≠c,那么用颜色c'对顶点i着色;

b.当且仅当可能用某种颜色c'(c'≠c)替代与每一顶点i∈Gc相关联的c时,将颜色c从集合C移除。

7.如果c*中使用的颜色的数目小于cbest中使用的颜色的数目,那么集合cbest等于c*,否则将cbest保持为部分解。(参见GRASP算法的行8到12)。

8.重复所有以上运算1到7直到k=MaxIterations且返回cbest作为解。

从以上描述,应了解,GRASP着色方案执行所要数目的迭代,直到满足停止准则(例如(举例来说)最大数目的迭代或所要运行时间)。在每一迭代处,贪心-随机自适应解c从c开始构建作为初始解,且局部搜索阶段经执行以返回局部最优解c*。在迭代结束时,最佳局部最优解cbest(即,对应于最佳函数目标值f(cbest)的解)被返回作为最终解且算法停止。

GRASP着色方案能够解决以任何图形拓扑、密度/稀疏度及任何大小为特征的问题实例。局部搜索策略通过专注于每一顶点(一次一个)检查冗余颜色。

现将参考图6描述以上算法。在操作600中,网络元件151设置初始条件。举例来说,网络元件151设置将针对GRASP着色方案而被执行的若干迭代“maxiter”。迭代“maxiter”的数目可为用户定义的及/或基于经验证据。在以下操作中,‘V’是冲突图的顶点的集合,‘V_1’是经着色的顶点的集合,且‘V_2’是未经着色的顶点的集合。在第一迭代处,V_1是空集且V_2=V。

在操作605中,网络元件151基于经指派为‘gmin’的群组确定V中顶点中的哪些具有最少数目的链路(或边)。举例来说,如果存在群组2到6,其中群组2顶点具有两个链路,群组3顶点具有三个链路,等等,那么对于整个冲突图来说,两个链路是到顶点的最少数目的链路,且将gmin设置为‘2’。在操作610中,网络元件151基于经指派为‘gmax’的群组确定V中顶点中的哪些具有最多数目的链路(或边)。在以上实例中,由于最大群组数目是群组6,因此可将gmax设置为‘6’,这就意味着到冲突图中的顶点中的任一者的最大数目的链路是6个链路。在操作615中,网络元件151基于‘gmin’及‘gmax’计算阈值tau。举例来说,网络元件151可计算阈值使得tau=gmin+β(gmax-gmin),其中β为用户定义的及/或基于经验证据的常数(例如,可在[0,1]中均匀随机选择β)。

在操作620中,网络元件151可构造属于具有大于或等于阈值tau的链路的数目的群组的未经着色的顶点的子集(或受限候选列表“RCL”)。应理解,β的值取决于在待包含于子集中的顶点的选择中的“贪心度”的量对“随机度”的量。举例来说,对于β=1,由于仅那些具有最大数目的链路的顶点将包含于子集中,因此选择是完全贪心的。如果(举例来说)β=0,那么所有顶点将包含于子集中。

在操作625中,网络元件151从在操作620中创建的子集选择(例如随机选择)顶点“Vi”。在操作630中,网络元件151将邻近于(或连结到)顶点Vi的顶点的颜色标识为第一组颜色。作为操作630的部分,网络元件151也可将冲突图的现有颜色标识为第二 组颜色。在操作635中,网络元件151确定是否可将冲突图的现有颜色指派到顶点Vi。举例来说,在操作640中,在第一组颜色与第二组颜色不一致的情况下,网络元件151用来自第二组的所要颜色对顶点Vi着色。否则,在操作645中,如果第一组颜色与第二组颜色一致,那么网络元件151选择新颜色,且在操作650中将所述新颜色指派到顶点Vi且使所述新颜色包含于用于对冲突图着色的现有颜色的集合。下文参考图7A到7C更详细论述操作635。

在操作655中,网络元件151确定是否所有顶点皆被着色。如果并非所有顶点皆被着色,那么网络元件151返回到操作605。如果所有顶点皆被着色,那么网络元件151在操作660中执行局部搜索(例如上文的LocalSearch算法)以减少用于冲突图的颜色的数目(即,减少来自集合V_1的颜色的数目)。举例来说,网络元件151可从冲突图的现有颜色选择颜色,用选定颜色标识顶点,且在未使用不同颜色对连结到所标识的顶点的顶点着色的情况下使用选自现有颜色的不同颜色替代选定颜色。因此,将选定颜色从现有颜色的集合消除。

在操作665中,网络元件可从由局部搜索产生的解选择最佳解(即,导致用于冲突图的最少数目的颜色的解)。在操作670中,网络元件151确定当前迭代“iter”是否小于操作600中设置的迭代“maxiter”的数目。如果当前迭代“iter”小于操作600中设置的迭代“maxiter”的数目,那么网络元件151返回到操作600且使迭代“iter”的数目增加一(即,设置iter=iter+1)。作为操作670的部分,网络元件151可将局部搜索的结果存储在存储器中(其中结果是经着色的冲突图)。如果网络元件151确定迭代“iter”的当前数目等于“maxiter”,那么网络元件151进行到操作680且返回在由每一迭代发现的所存储的解当中的最佳解。举例来说,网络元件151返回使用最少数目的颜色的冲突图。

图7A到7D说明根据至少一个实例实施例的经着色的冲突图。举例来说,图7A到7D展示与图6中的操作625到650相关的实例。在图7A到7D中,操作625中选择的顶点Vi由顶点“i”表示,且在操作630中将顶点“j”、“k”、“x”及“y”标识为邻近于(或连结到)顶点“i”(即,Adj(i)={j,k,x,y})。

图7A表示所有邻近顶点j、k、x及y皆未被着色的情况。图中现有颜色的集合(即,图6中的V_1)为空集。在此情况中,网络元件151在操作645中选择新颜色‘c’(即,黄色)且将颜色黄色指派到顶点i。现有颜色的集合V_1经更新以包含颜色黄色。图7B说明另一情况,其中现有颜色的集合V_1已包含颜色黄色(且还包含蓝色)。此处,由于顶点j、k、x及y皆未用黄色着色,因此网络元件151通过将黄色(或甚至蓝色,因为仍未对其它顶点着色)指派到顶点i来执行操作640。

图7C展示现有颜色的集合V_1包含已被指派到连结到顶点i的顶点的颜色的情况。在此情况中,网络元件151执行操作645及650以选择新颜色‘c’(即,黄色)且更新现有颜色的集合V_1以包含颜色黄色。

图7D展示网络元件151将颜色蓝色指派到顶点‘i’的情况,因为连结到顶点‘i’的顶点都不具有颜色蓝色且因为颜色蓝色已在现有颜色的集合V_1中。

应理解,上文描述的操作允许网络的改进性能,这是因为实例实施例允许能够在目的地装置200处高速缓存更流行文件的更多数据包,增加(或替代地,最大化)由目的地装置200共同高速缓存的每一文件的不同数据包的量,且允许数据文件的所请求的数据包的完整集合内的经译码的多播传输。此外,通过在传输之前组合所请求的数据包,应理解,根据至少一个实例实施例的递送方法及/或装置可减少网络元件151的传输数目,这可减少消耗且提高网络效率。

实例实施例的变型不应被视为脱离实例实施例的精神及范围。所属领域的技术人员将清楚,所有此类变型希望包含于本发明的范围内。

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