system: [SYSTEM]

user: 4. 计划或安排问题 活动计划是综合考虑用户的兴趣爱好、用户居住地到召集活动地点的距离和用户的社交好友关系等特征，给用户安排令其满意度较大的活动。本节的内容将结合线上线下的社交关系介绍基于事件的社交网络服务的活动计划或安排问题。 4.1. 活动计划或安排的问题定义 首先，给出活动计划的形式化定义。有一张社交网络图G = (U， E， W)，其中U表示社交网络图上的用户的集合；E是社交网络图的边的集合；W是社交网络图上边的权重的集合，代表着人与人之间的好友关系。然后再有一些活动V，目的是要找到一个活动计划或者安排 [ 53 ]，使得用户满意度最大。如图5(a)，圆圈里面的代表用户，三角形代表活动，图上边上的数字表示人与人之间的好友关系，图5(b)表示所有用户到所有活动的欧式距离。在没有其他限制条件的情况下，可以把u 1 ， u 2 ， u 3 安排到活动v 2 ，把u 4 ， u 5 安排到活动v 1 。这是图5在没有其他条件约束的情况下的一种活动安排。 4.2. 活动计划或安排的方法 活动计划或安排的目标是根据用户以及活动的属性给用户找到一个令所有用户都满意的活动计划或者路径行程。核心思想是根据用户居住地离活动召集地点的距离、用户对活动的兴趣程度和用户的社交关系 [ 53 ]来决定给用户安排什么活动或者行程路径。根据用户参加活动个数，活动计划或安排的方法包括基于亲密度最大的方法、基于最优策略的方法、基于最大–最小的方法和基于活动冲突的方法。 4.2.1. 基于亲密度最大化的方法 亲密度指的是用户与用户之间的好友关系和用户与活动的相似度，这种方法的目的是找到一个用户最感兴趣的活动，并且一个活动里面用户与用户之间的友好关系最大。Shuai等人 [ 12 ]给出用户与用户的亲密度以及用户对活动的兴趣程度，目的是找到一些列的用户去参加一个活动，使得活动里面的用户亲密度最大。如图6，图上的圆圈代表用户，圆圈里面的数字是用户对活动的兴趣程度，边的数字代表用户与用户之间的好友关系。有一个活动，假设它的容量为3，目的是从这4个人中选出3个人去参加活动，使得他们的满意度最大。如果是贪心算法，首先会安排u 1 去参加活动，接着安排u 1 的朋友u 2 一起去参加活动，此时亲密度为2.1。但是目前的人数还没达到活动的容量，因此再选一个用户去参加活动，根据贪心算法，会选择u 3 可以得到当前最大的亲密度，此时的亲密度为2.7。但是在这个例子中，如果选{u 2 ， u 3 ， u 4 }，则得到的亲密度为3.0，由此可知贪心算法并不能很好的解决这个问题。于是Shuai等人提出了随机算法(CBAS) [ 54 ]，假设首先基于用户与用户之间的关系和用户对活动的兴趣度之和最大选两个用户，例如图6： u 2 = 0.2 + 0.4 + 0.4 + 0.7 = 1.7 ； u 3 = 0.4 + 0.6 + 0.4 = 1.4 。接着随机增加这两个用户的好友，以此来扩大活动的用户数，最后选出一个亲密度之和最大的安排，目前在这个例子中，认为安排u 4 一起去参加活动是比较适合。因此，此时基于亲密度最大安排的用户为{u 2 ， u 3 ， u 4 }，这个安排的用户满意度为3.0，比用贪心算法的效果好 [ 55 ]。Shuai等人在随机算法的基础上加以改进(CBAS-ND)，改进的方法是在随机算法的第二步以一定的概率去选择用户的朋友参加活动，并在所有条件相同的条件下，近似比会比随机贪心好。 图5. 活动计划的例子 图6. 亲密度方法 此外，Li等人 [ 1 ]也提出基于亲密度之和最大的方法来给用户安排活动，但活动有上下限的要求，即如果参加活动的人数达不到活动要求下限的人数，则认为该活动无法举行；如果报名参加活动的人数已达到活动的上限人数，则认为该活动就不能再接纳其他用户的报名。先前也有研究者针对匹配问题设置了容量的限制 [ 56 ]，而活动的计划或安排本质上也是一个匹配问题。Li等人在活动计划或安排上是基于亲密度之和最大的方法，该方法的基本思想是：在活动人数约束的条件下，找到一个活动安排，使得在同一个活动中，用户与用户之间的好友关系与用户对活动的兴趣程度线性之和最大。 如图6，假设有4个用户u 1 ，u 2 ，u 3 ，u 4 ，两个活动v 1 ，v 2 ，其中活动v 1 的上限为1，下限为2；活动v 2 的上限也为1，下限为3。圆圈的数字是用户对活动v 1 的兴趣程度，用户对活动v 2 的兴趣程度分别为0.3，0.5，0.3，0.8，Li等人给出了一种既简单又直观的方法，贪心算法。首先，计算每一对<用户，活动>的亲密度，接着选一对<用户，活动>亲密度最大的，其次检索未被安排的用户，再接着计算亲密度，最后找到一个匹配，使得所有用户到活动的兴趣和好友与好友之间的亲密度线性之和最大，则在图6的例子中最后得出的活动计划为 <1， 1>，<2， 1>，<3， 2>，<4， 2>，尖括号第一个数字表示用户，第二个数字表示活动。活动的计划或安排问题是组合优化问题，Li等人针对此问题给出相对应的理论证明 [ 57 ]，当用户量达到一定的数目时，在多项式时间内找不到一个解，此外该研究团队还认为此问题在线性时间内没有常数近似比。 4.2.2. 基于最优策略的方法 最优策略指的是用户想去参加活动时，每次都会选择使自己满意度最大的策略。Armenazoglou等人 [ 14 ]基于博弈论 [ 58 ]的方法给出了活动安排的最优策略，考虑了用户到活动的欧式距离以及用户和用户之间的好友关系，但是Armenazoglou等人给出的定义中考虑的是在不同的活动中用户和用户之间的关系与用户到活动的距离线性之和最小，即目标函数为： C o s t ( G ， A ， α ) = α ⋅ ∑ u ∈ U d ( u ， A u ) + ( 1 − α ) ⋅ ∑ ( u ， v ) ∈ E ∧ A u ≠ A v w u ， v (6) 其中，A是活动，A u 表示用户u参加的活动，d(u，A u )表示用户u到他所参加的活动的距离，w u，v 表示用户u和用户v分别参加不同的活动的友好关系，α是权衡式(6)的第一项和第二项的系数。该方法的主要思想是：用户在式(6)的两项中对自己的策略进行权衡，这个算法最后终止是算法收敛至纳什均衡，即所有用户都不愿意改变自己的策略。基于这个想法，回到图5(a)中的例子，这个例子有5个用户u 1 ，u 2 ，u 3 ，u 4 ，u 5 ，2个活动v 1 ，v 2 ，图5(b)中的例子是用户到活动的欧式距离，在这种情况下，找到一个最佳的活动安排使得所有用户的满意度最大。首先，把所有用户随机分配到活动中，即用户u 1 ，u 2 ，u 3 分配到活动v 1 ，把用户u 4 ，u 5 分配到活动v 2 ，则最后每个用户的策略为u 1 (0.450， 0.275)，u 2 (0.355， 0.400)，u 3 (0.400， 0.425)，u 4 ( 0.400， 0.300)，u 5 (0.050， 0.575)，括号的第一个数字代表用户去的第一个活动的满意度，第二个数字代表用户去的第二个活动的满意度，如用户u 1 去活动v 1 的满意度为0.450，去活动v 2 的满意度为0.275，因此活动v 2 为用户u 1 的最佳策略，下划线为用户的最优策略。Armenazoglou等人在这个问题上用博弈论来求解，并给出了理论的结果值：最好的纳什均衡与原问题最优解的比(PoS)和最坏的纳什均衡与原问题的最差情况的解的比(PoA)，其中PoS = 2； P o A = 1 + 1 − α α d e g a v g ⋅ w a v g 2 ⋅ c a v g * (7) w a v g = 1 | E | ∑ e ∈ E w e (8) c a v g * = 1 | U | ∑ u ∈ U min A u ∈ A d ( u ， A u ) (9) 其中deg avg 是度的平均数，w e 是边的权重。该算法的时间复杂度为 Θ ( k ⋅ | U | + | E | ) ，其中k表示用户初始选择的策略数。 4.2.3. 基于最大–最小的方法 基于最大–最小的方法综合考虑了影响活动计划的三个因素，用户到活动的距离、用户对活动的兴趣程度和用户的社交关系 [ 59 ]。考虑这三个因素理由如下，例如用户a同时对活动p 1 ，p 2 感兴趣，并且这两个活动都有用户a的朋友参加，其中活动p 1 举办的时间段为某天周六上午8:30~10:30，活动p 2 举办的时间段为同一天周六上午11:00~下午1:00，而从活动p 1 的举办地点到活动p 2 的举办地点需要一个小时的车程，在这种情况下，如何找到一个使得用户较满意的安排？Tong等人 [ 60 ]针对这个情景给出了最大–最小的方法，即通过分析人类参加活动的社交行为 [ 61 ]，认为给用户安排活动的决定两项因素时：用户对活动的兴趣度最大，但用户到活动的距离最小，优化目标为： C o s t ( u ， a ) = α ⋅ ( 1 − d ( u ， a ) M a x D ¯ ) + ( 1 − α ) ⋅ σ ( u ， a ) (10) M a x D ¯ = M a x D + ε (11) 其中，MaxD是任何一个用户到任何一个活动的理论最大距离，σ(u，a)是用户对活动的兴趣程度， ε 是一个极小的任意正数。Tong等人基于最大–最小方法给出一个有效的活动计划或安排，其本质是混合了空间信息等因素的匹配问题 [ 65 ]，Tong等人针对此问题给出了启发式的方法，即Max-minBaseline (MB)、贪心(Max-minGreedy， MG)、随机贪心(Max-minRondomGreedy， MRG)和局部搜索四个算法，其中前三个算法的时间复杂度分别为 O ( | A | | U | 3 ) 、 O ( | A | | U | ( | U | + log | U | + δ ) ) 、 O ( | A | | U | 3 ) 。因为这几个算法都没有近似比，则通过它们的时间复杂度比较，发现 Max-minBaseline (MB)与随机算法一样好，而贪心比这两个算法都略差。启发式算法的基本思想是：首先随机选择一个用户；接着综合考虑用户对活动的兴趣程度、用户到活动的距离，并且由于场地的规模问题，活动应该有容量限制 [ 62 ]；然后基于最大–最小方法给该用户安排活动；其次看已经被安排了活动的用户的好友，如果该用户有好友，并且活动还没达到活动容量的情况下，就可以给该用户的好友安排活动，直到所有的用户被安排或者没有有效的活动为止。假设在图5中，各个用户对各个活动的兴趣程度如表1所示，其中活动括号的数字是表示活动的容量。首先，安排u 2 去活动v 1 ，接着安排u 5 也去参加活动v 1 ，然后u 1 ，u 3 因为离活动v 2 比较近，而且这两个用户的友好关系也比其他用户的友好关系更亲密一些(0.4)，因此安排u 1 ，u 3 去活动v 2 ，u 4 综合考虑三方面的因素及活动所能容纳的人数，最后给u 4 安排活动v 2 。 4.2.4. 基于活动冲突的方法 基于活动冲突的方法是考虑一个用户参加多个活动时，这些活动有时间上的冲突情况。假设用户a Table 1 The Similarity of users and event u 1 u 2 u 3 u 4 u 5 v 1 (4) 0.2 0.6 0.5 0.4 0.2 v 2 (3) 0.8 0.3 0.8 0.6 0.1 表1. 用户与活动的相似度 同时对活动p 1 ，p 2 感兴趣，其中活动p 1 举办的时间段为某天周六上午8:30~10:30，活动p 2 举办的时间段为同一天周六上午10:00~12:00，在这种情况下，只能给用户a安排一个活动，在这种情况下，该给用户a安排哪个活动？She等人 [ 16 ][ 19 ]针对此类情况给出了活动冲突的解决办法，设置一个冲突的选项，当给用户安排活动的时候，会考虑冲突的选项。例如表2，有5个用户u 1 ，u 2 ，u 3 ，u 4 ，u 5 ，3个活动v 1 ，v 2 ，v 3 ，用户旁边括号的数字表示用户可以参加的活动个数，活动旁边括号的数字表示活动的容量，表2的数字是安排用户去参加活动的“接受能力”，表格最后一列表示活动的冲突信息，表格中的黑体表示在考虑活动无冲突的情况下，给用户安排的活动，给用户u 1 安排了活动v 1 ，给用户u 4 安排活动v 2 ，v 3 。She等人针对这个问题使用了最小成本流算法(MinCostFlow) [ 63 ]和贪心算法来求解，这两个都给出了相应的近似比，则前一个算法的近似比为1/(maxc u )，后一个算法的近似比为1/(1 + maxc u )，其中c u 是用户可以参加的最大活动个数，比如在表2的例子中，maxc u = 3。若单纯从近似比来比较这两个算法的优劣，则贪心算法比最小成本流算法要好。 此外，She等人从上述的静态场景扩展到了动态场景，即用户是一个一个抵达，She等人针对动态场景提出了贪心算法，即每来一个用户，基于当前的情况考虑令其满意度最大的活动，一旦被安排，就不能再撤销。该研究团队针对贪心算法在动态场景也给出了理论证明，并且算法的时间复杂度为 O ( | V | log | V | + | V | c u ) ，近似比为： 1 2 ⌈ − log 2 w min ⌉ ( max c u + 2 ) (12) 其中，w min 是用户对活动最小的满意度，在表2的例子中，w min 是0.19，V是活动的集合。同时，She等人 [ 13 ]考虑给用户安排多个无冲突活动时，结合了用户的时间和费用开销情况 [ 13 ]，给用户规划行程路径。 4.3. 活动计划或安排的方法总结 活动的计划或安排是随着用户增多，会产生爆炸性组合优化的问题，当用户达到千万的数量级时，是很难在多项式时间内给出一个解。因此，活动的计划或安排是一个NP-hard难问题。大部分研究者都给出了近似算法，并且给出相应的理论证明，但是每个问题的约束条件不一样，每个问题对应的假设条件也有所不同，因此很难说哪个算法比哪个算法更优。下面对上述中的几种方法进行总结和比较。 4.3.1. 基于亲密度最大的方法 这类问题仅考虑了用户对活动的兴趣程度和在一个活动中用户与用户之间的好友关系，没有考虑用户到活动的距离。在距离方面的欠缺考虑，可能会导致用户被安排到离用户居住地很远的活动，因此这会使得用户的满意度降低。 4.3.2. 基于最优策略的方法 这类方法是基于博弈论的方法，将每个用户看成一个参与者，在每次做出选择时，都会选一个使自己满意度最大的策略。此类方法用在活动没有容量的情况下，用户可以达到最好的纳什均衡；而这类方 Table 2 Activity plannin u 1 (3) u 2 (1) u 3 (1) u 4 (2) u 5 (3) 冲突信息 v 1 (5) 0.93 0.43 0.84 0.64 0.65 v 3 v 2 (3) 0 0.35 0.19 0.21 0.4 无 v 3 (2) 0.86 0.57 0.78 0.79 0.6 v 1 表2. 活动安排表 法没有在活动有容量限制的情况下进行讨论。 4.3.3. 基于最大–最小的方法 这类方法是考虑用户对活动的兴趣程度最大，但是用户到活动的距离最小。此类方法用了启发式的方法来解决，在很多情况下，给用户安排的活动可能并不是用户满意度最大的活动，可能会导致用户体验效果欠佳。 4.3.4. 基于活动冲突的方法 这类方法跟其他方法最大的区别是给用户安排多个活动时，考虑了一个用户同时几个活动，而活动与活动存在时间冲突的情况。一般来说，会给出一个冲突的信息，当两个活动存在冲突时，就选择一个令用户满意度较大的计划。同时，此类方法稍微增加了一些约束，比如用户的花费开销，从家到活动的距离，活动到活动的距离等信息，就可以给用户安排行程路径。