具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“***”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的***所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
本说明书涉及一种公交路径确定方法和***。公交路径确定方法可以根据用户出行的起点和终点确定公交站点序列,并可以确定公交站点序列中换乘次数最少的一条或多条公交路径。在一些实施例中,本说明书所涉及的公交路径确定方法可以应用于出行导航、出行线路推荐等场景。例如,用户可以在终端应用(如电子地图)中输入起点和终点,该终端应用可以根据公交路径确定方法向用户推荐一条或多条公交路径。在一些实施例中,本说明书所涉及的公交路径确定方法还可以应用于公交模拟负载的分析。例如,可以基于用户出行的起点和终点找出换乘次数最少的所有公交路径,并进一步确定后续线路流量的分配方案。
图1是根据本说明书一些实施例所示的公交路径确定方法的示例性流程图。如图1所示,公交路径确定方法100可以包括:
步骤110,获取公交站点序列,以及公交站点序列中每个公交站点对应的公交线路。具体的,该步骤110可以由获取模块310执行。
公交站点可以理解为乘客等候公交车的地点。每个公交站点可以对应一个固定的经纬度信息。在一些实施例中,一个公交站可以对应一个或多个公交站点,相同公交站的不同公交站点所对应的公交线路可以相同、部分相同或不同。公交站点所对应的公交线路可以理解为经停该公交站点的公交线路。例如,一个公交站可以分别在马路两侧设置公交站点,其中一个公交站点对应的公交线路为A和B,另一个公交站点对应的公交线路为A、C和D。在一些实施例中,获取模块310可以根据公交线网图或者其他任意合理方式获取每个公交站点对应的公交线路。
在一些实施例中,公交站点序列可以理解为按序排列的多个公交站点。例如,公交站点序列可以是某条路线沿途经过的多个公交站点的集合。在一些实施例中,获取模块310可以基于两个公交站点获取从其中一个公交站点到另一个公交站点的路线沿途经过的多个公交站点,并与该两个公交站点共同组成公交序列。在一些实施例中,获取模块310也可以通过其他方式获取公交序列。例如,获取模块310可以获取用户出行的起点和终点;获取模块310可以基于起点和终点,确定从起点到终点的公交站点链;获取模块310可以根据公交站点链确定公交站点序列。关于获取公交站点序列的更多细节可以参见图2及其相关描述。
步骤120,基于公交站点序列以及每个公交站点对应的公交线路,确定每个公交站点的每条公交线路的权重。具体的,该步骤120可以由权重确定模块320执行。
在一些实施例中,权重确定模块320可以基于马尔可夫链确定每个公交站点的每条公交线路的权重。具体来说,当前站点的每条公交线路的权重只取决于前一个公交站点的公交线路的权重以及两个站点之间公交线路的重合情况。
在一些实施例中,权重确定模块320可以基于前一个公交站点公交线路的权重以及公交线路间的状态转移值确定当前公交站点的公交线路的权重,所述状态转移值与换乘次数负相关。在一些实施例中,状态转移值可以用于反映当前公交站点的某条公交线路与前一个公交站点的某一条公交线路之间是否需要换乘。具体的,不同公交线路之间(即需要换乘)的状态转移值可以为0,相同公交线路之间(即无需换乘)的状态转移值可以为正数(如1、2等)。当已知相邻两个公交站点上对应的公交线路后,即可以得到相邻两个公交站点上任意两条公交线路之间的状态转移值。
在一些实施例中,公交站点序列的第一个公交站点的每条公交线路的权重可以为一设定的初始值。在一些实施例中,可以设定公交站点序列的第一个公交站点的每条公交线路的被选中概率是相同的,因此其权重可以为相同的初始权重。例如,初始权重可以为预设值(如1)。在一些实施例中,每个公交站点的每条公交线路的权重可以为以下中的最大值:前一个公交站点的任意一条不同公交线路的权重,或者在前一个公交站点的相同公交线路的权重的基础上增加基于状态转移值(正数)设定的增量或乘以基于该正数设定的倍数。在一些实施例中,当该正数作为增量时,该正数可以为大于零的正数(如0.5、1、2等)。当该正数作为倍数时,该正数可以为大于1的正数(如1.5、2等)。关于确定每个公交站点的每条公交线路的权重的更多细节可以参见图3-7及其相关描述。
步骤130,根据公交站点的公交线路的权重,确定公交站点序列中换乘次数最少的一条或多条公交路径。具体的,该步骤130可以由公交路径确定模块330执行。
在一些实施例中,公交路径可以理解为公交站点序列中从第一个公交站点至最后一个公交站点的公交出行方案。在一些实施例中,公交站点序列的各个公交站点之间可以通过公交换乘到达。进一步,公交站点序列的各个公交站点之间还可以均包含相同的公交线路(即无需换乘)。在一些替代性实施例中,公交站点序列的至少两个相邻公交站点之间可以没有共同的公交线路,在此情况下,用户在该两个相邻公交站点之间需通过其他方式换乘(如从一个公交站点通过步行、骑行等方式前往下一个公交站点)。
在一些实施例中,公交路径确定模块330可以通过回溯法确定公交站点序列中换乘次数最少的一条或多条公交路径。具体的,公交路径确定模块330可以基于公交站点序列的最后一个公交站点中权重最大的公交线路进行回溯,以确定公交站点序列中换乘次数最少的一条或多条公交路径。
在一些实施例中,公交路径确定模块330(如父线路确定单元332)可以基于公交站点序列的最后一个公交站点中权重最大的公交线路,在其前面的各公交站点中确定出与该公交线路相关的父线路。父线路为前一个公交站点中能够使得后一个公交站点的对应公交线路获得所述权重的任意线路。具体的,父线路确定单元332可以根据最后一个公交站点中权重最大的公交线路,确定前一个公交站点中的父线路;再依次根据后一个公交站点中的父线路,确定其在前一个公交站点中的父线路,直至确定公交站点序列的第一个公交站点中的父线路。在一些实施例中,最后一个公交站点中权重最大的公交线路可以包括一条或多条。在一些实施例中,与最后一个公交站点中权重最大的公交线路对应的前一个公交站点中的父线路可以包括一条或多条。在一些实施例中,与后一个公交站点中的父线路对应的前一个公交站点中的父线路也可以包括一条或多条。
在一些实施例中,公交路径确定模块330(如公交路径确定单元334)可以组合各公交站点的父线路进而获得公交站点序列中换乘次数最少的一条或多条公交路径。具体的,公交路径确定单元334可以基于最后一个公交站点中权重最大的公交线路,选择前一个公交站点中的其中一条父线路;再依次根据后一个公交站点中所选择的父线路,选择其在前一个公交站点中的其中一条父线路,直至选择出公交站点序列的第一个公交站点中的其中一条父线路。在此基础上,公交路径确定单元334可以将最后一个公交站点中权重最大的公交线路和所有其他站点中选择出的其中一条父线路作为公交站点序列中换乘次数最少的其中一条公交路径。通过类似的方式,公交路径确定单元334可以确定出公交站点序列中换乘次数最少的其他公交路径,以获得多条乃至所有的换乘次数最少的公交路径。
应当注意的是,上述有关公交路径确定方法的描述仅仅是为了示例和说明,而不限定本申请的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对公交路径确定方法进行各种修正和改变。然而,这些修正和改变仍在本申请的范围之内。例如,在获取公交站点序列时,若两个公交站点P1和P3均包含公交线路A,但在该两个公交站点之间的另一个公交站点P2不包含公交线路A(即公交线路A不经停站点P2),则公交站点序列中可以不包含公交站点P2。
图2是根据本说明书一些实施例所示的公交站点序列获取方法的示例性流程图。如图2所示,公交站点序列获取方法200包括:
步骤210,获取用户出行的起点和终点。具体的,该步骤210可以由获取单元312执行。
在一些实施例中,获取单元312可以基于用户终端获取用户出行的起点和终点。例如,获取单元312可以获取用户在用户终端中输入的出行的起点和/或终点。又例如,获取单元312可以基于用户终端的定位确定用户出行的起点。在一些实施例中,获取单元312还可以从数据库中获取历史用户出行的起点和终点。
步骤220,基于起点和终点,确定从起点到终点的公交站点链。具体的,该步骤220可以由公交站点链确定单元314执行。
在一些实施例中,公交站点链可以理解为从起点(或起点附近)的公交站点到终点(或终点附近)的公交站点之间按序排列的多个公交站点。
在一些实施例中,公交站点链确定单元314可以采用A星算法确定从起点到终点的公交站点链。A星算法为用于获取最短路径的算法,在检查最短路径中每个公交站点时会引入全局信息,如会对当前公交站点距终点的距离做出估计,并作为评价该公交站点处于最短路线上的可能性的量度。在一些实施例中,全局信息可以为道路拥堵情况、时间最短、换乘次数最少、步行时间最短等。在一个具体实施例中,公交站点链确定单元314可以确定从起点到终点用时最短的公交站点链。
在一些实施例中,公交站点链确定单元314可以基于公交线网图确定从起点到终点的公交站点链。例如,公交站点链确定单元314可以基于公交线网图确定从起点到终点用时较短的公交站点链。当确定公交站点链的用时情况时,公交站点链确定单元314可以综合考虑起点到第一个公交站点的距离和/或时间、最后一个站点到终点的距离和/或时间、公交站点之间需要异站换乘的距离和/或时间等一种或多种的任意组合。
步骤230,根据公交站点链确定公交站点序列。具体的,该步骤230可以由公交站点序列确定单元316执行。
在一些实施例中,公交站点序列可以为完整的公交站点链。在一些实施例中,公交站点序列也可以为公交站点链的一部分。例如,公交站点序列确定单元316可以将公交站点链划分为两条或多条公交站点序列。
在一些实施例中,当公交站点链的两个相邻公交站点之间没有相同的公交线路时,该两个相邻公交站点之间需要通过其他方式换乘(如从一个公交站点通过步行、骑行等方式前往另一个公交站点)。在此情况下,该两个相邻公交站点之间必然会存在一次换乘(而且是异站换乘)。公交站点序列确定单元316可以将该两个相邻公交站点划分至不同公交站点序列中。通过将公交站点链根据是否存在异站换乘而划分为两条或多条公交站点序列,可以在保证计算结果准确(即确定换乘次数最少的公交路径)的情况下,降低计算工作量,提升计算效率。
图3是根据本说明书一些实施例所示的公交路径确定***的模块图。如图3所示,该公交路径确定***可以包括获取模块310、权重确定模块320和公交路径确定模块330。
获取模块310可以用于获取公交路径确定过程中的信息/数据。例如,获取模块310可以获取公交站点序列,以及公交站点序列中每个公交站点对应的公交线路。在一些实施例中,获取模块310可以进一步包括获取单元312、公交站点链确定单元314和公交站点序列确定单元316。
获取单元312可以获取用户出行的起点和终点。获取单元312可以基于用户终端获取用户出行的起点和终点。
公交站点链确定单元314可以基于起点和终点,确定从起点到终点的公交站点链。例如,公交站点链确定单元314可以确定从起点到终点用时最短的公交站点链。又例如,公交站点链确定单元314可以基于公交线网图确定从起点到终点的公交站点链。
公交站点序列确定单元316可以根据公交站点链确定公交站点序列。例如,公交站点序列确定单元316可以将公交站点链划分为两条或多条公交站点序列。
权重确定模块320可以用于确定每个公交站点的每条公交线路的权重。例如,权重确定模块320可以基于公交站点序列以及每个公交站点对应的公交线路,确定每个公交站点的每条公交线路的权重。又例如,权重确定模块320可以基于前一个公交站点公交线路的权重以及公交线路间的状态转移值确定当前公交站点的公交线路的权重。
公交路径确定模块330可以用于确定公交站点序列中换乘次数最少的公交路径。例如,公交路径确定模块330可以根据公交站点的公交线路的权重,确定公交站点序列中换乘次数最少的一条或多条公交路径。例如,公交路径确定模块330可以通过回溯法确定公交站点序列中换乘次数最少的一条或多条公交路径。在一些实施例中,公交路径确定模块330可以进一步包括父线路确定单元332和公交路径确定单元334。
父线路确定单元332可以基于公交站点序列的最后一个公交站点中权重最大的公交线路,在其前面的各公交站点中确定出与该公交线路相关的父线路。例如,父线路确定单元332可以根据最后一个公交站点中权重最大的公交线路,确定前一个公交站点中的父线路;再依次根据后一个公交站点中的父线路,确定前一个公交站点中的父线路,直至确定公交站点序列的第一个公交站点中的父线路。
公交路径确定单元334可以组合各公交站点的父线路进而获得公交站点序列中换乘次数最少的一条或多条公交路径。
应当理解,图3所示的***及其模块可以利用各种方式来实现。例如,在一些实施例中,***及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和***可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的***及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于公交路径确定***及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该***的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子***与其他模块连接。例如,图3中披露的获取模块310、权重确定模块320和公交路径确定模块330可以是一个***中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
图4是根据本说明书一些实施例所示的用户出行起点和终点间的公交站点链实例;图5是根据本说明书一些实施例所示的根据公交站点链确定公交站点序列的具体实例;图6是根据本说明书一些实施例所示的公交站点上每条线路的权重确定实例;图7是根据本说明书一些实施例所示换乘次数最少的公交路径确定实例。以下将结合图4-7对本说明书实施例所涉及的公交路径确定方法进行详细说明。值得注意的是,以下实施例仅仅用以解释本申请,并不构成对本申请的限定。
如图4所示,BO为用户出行的起点,BD为用户出行的终点。P0-P8为公交站点链确定单元314基于起点BO和终点BD确定的公交站点链。P0-P8分别表示一个公交站点,每个公交站点下方的字母代表该公交站点对应的公交线路。如公交站点P0对应的公交线路包括A线路和B线路。在本实例中,公交站点P5对应的公交线路包括C线路和F线路,公交站点P6对应的公交线路包括G线路和H线路,P5和P6两个相邻公交站点之间没有相同的公交线路。因此,如图5所示,公交站点序列确定单元316可以将P0-P8公交站点链划分为P0-P5和P6-P8两条公交站点序列。以下将以P0-P5这条公交站点序列为例,阐述公交路径确定方法的具体步骤。值得注意的是,公交路径确定方法同样适用于以P0-P8公交站点链为公交站点序列的情形。
如图6所示,对于公交站点序列P0-P5,权重确定模块320可以确定相邻两个公交站点上任意两条公交线路之间的状态转移值。基于相邻两个公交站点上任意两条公交线路之间的状态转移值,可以确定状态转移矩阵trans_P。设Pi站对应的线路名为{r1,r2,r3},下一站Pj对应的线路名为{r1,r2,r4},则Pi和Pj之间的转移矩阵trans_P为:
Pi\Pj |
r1 |
r2 |
r4 |
r1 |
1 |
0 |
0 |
r2 |
0 |
1 |
0 |
r3 |
0 |
0 |
0 |
例如,公交站点P0对应公交线路A和B,公交站点P1对应公交线路A和B,则可以确定:公交站点P0的公交线路A转移到公交站点P1的公交线路A的状态转移值为1,公交站点P0的公交线路A转移到公交站点P1的公交线路B的状态转移值为0,公交站点P0的公交线路B转移到公交站点P1的公交线路A的状态转移值为0,公交站点P0的公交线路B转移到公交站点P1的公交线路B的状态转移值为1。
在本实例中,权重确定模块320可以将第一个公交站点P0的每条公交线路的权重设为1。权重确定模块320可以进一步基于前一个公交站点公交线路的权重以及公交线路间的状态转移值确定后续公交站点的公交线路的权重。权重计算表达式可以为:V[p][r]=max(V[p-1][r0]+trans_P[r0][r]),其中p为公交站点序列中的当前公交站点,p-1为公交站点序列中的前一个公交站点,r表示当前站点的某一线路,r0表示前一个站点的某一线路,V[p][r]表示当前站点p的线路r的权重,V[p-1][r0]表示前一个公交站点p-1的线路r0的权重,trans_P[r0][r]表示前一个站点的线路r0和当前站点的线路r之间的状态转移值。
根据前述权重计算表达式,权重确定模块320可以根据P0的公交线路的初始权重,依次计算P1-P5对应的各公交线路的权重。例如,公交站点P1的公交线路A的权重计算过程如下:
V[P1][A]=max(V[P0][r0]+trans_P[r0][A])=V[P0][A]+trans_P[A][A]=1+1=2。又例如,公交站点P2的公交线路C的权重计算过程如下:
V[P2][C]=max(V[P1][r0]+trans_P[r0][C])=V[P1][A]+trans_P[A][C]=2+0=2。依次类推,权重确定模块320可以确定出P0-P5每个公交站点对应的每条公交线路的权重,计算结果如图6所示,图6中数字表示每个公交站点对应的每条公交线路的权重,其后括号内表示前一公交站点中使得该公交站点的该公交线路取权重(即以下中的最大值:前一个公交站点的任意一条不同公交线路的权重,或者在前一个公交站点的相同公交线路的权重的基础上增加基于所述正数设定的增量或乘以基于所述正数设定的倍数)的公交线路。
公交路径确定模块330可以进一步根据公交站点P0-P5对应的各公交线路的权重,确定公交站点序列P0-P5中换乘次数最少的一条或多条公交路径。在本实例中,父线路确定单元332可以基于公交站点序列P0-P5的最后一个公交站点P5中权重最大的公交线路C,确定与其对应的前一个公交站点P4中的父线路为C。进一步,父线路确定单元332可以基于公交站点P4中的父线路C,确定前一个公交站点中的父线路为A、B和C。与此类似,父线路确定单元332可依次根据后一个公交站点中的父线路,确定前一个公交站点中的父线路,直至确定公交站点序列的第一个公交站点P0中的父线路。父线路确定单元332所确定的各公交站点的父线路情况如图7所示。
公交路径确定模块330(如公交路径确定单元334)可以进一步组合各公交站点的父线路进而获得公交站点序列P0-P5中换乘次数最少的一条或多条公交路径。如图7所示,箭头表示回溯方向,沿着箭头方向依次得到的公交站点组成的路径即为换乘次数最少公交路径。如图7所示,公交站点序列P0-P5中换乘次数最少的公交路径共有6条,分别为:
(1)A→A→A→A→C→C;
(2)B→B→B→B→C→C;
(3)A→A→A→C→C→C;
(4)B→B→B→C→C→C;
(5)A→A→C→C→C→C;
(6)B→B→C→C→C→C。
以公交路径(3)为例,其可以表示:从公交站点P0乘坐公交线路A到达公交站点P3,并在P3换乘公交线路C,乘坐公交线路C直至该序列P0-P5中的最后一个公交站点P5;上述公交路径的换乘次数为1次。
本说明书实施例可能带来的有益效果包括但不限于:(1)能够根据用户出行的起点和终点,确定用时最短的公交站点链;(2)能够确定公交站点序列中换乘次数最小的最优路径;(3)能够方便地确定出公交站点序列中换乘次数最小的所有最优路径。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“***”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行***、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的说明书实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的***组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的***。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个说明书实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对应的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。