近似算法及其举例

主要来源于我们上课的PPT

1、负载均衡问题

m m m个独立的机器, n n n个任务,解决第 j j j 个任务所需要的时间为 t j t_j tj.

  • 一个任务只能在一台机器上连续的进行处理
  • 一台机器在同一个时间段只能处理一个任务(不能并行)

要求:将这 n n n个任务安排给 m m m台机器,并且最小化负载均衡。

定义:

J ( i ) J(i) J(i):分配给第 i i i 台机器的任务 组成的集合。

L ( i ) L(i) L(i):第 i i i 台机器的负载,有 L ( i ) = ∑ j ∈ J ( i ) t j L(i) = \sum_{j \in J(i)}t_j L(i)=jJ(i)tj

L L L:负载均衡(makespan),有 L = m a x i L ( i ) L = max_iL(i) L=maxiL(i)

算法一:List Scheduling

每次将任务分配给 当前 负载最小 的机器。【算法复杂度 O ( n l o g ( m ) ) O(nlog(m)) O(nlog(m)) 】。

在这里插入图片描述

结论:该算法是 2倍近似最优的,既 2 − a p p r o x i m a t i o n 2-approximation 2approximation.

证明

引理1 最优的负载均衡 L ∗ ≥ m a x j t j L^* \geq max_jt_j Lmaxjtj

引理2 最优的负载均衡 L ∗ ≥ 1 m ∑ j = 1 n t j L^* \geq \frac{1}{m}\sum_{j=1}^nt_j Lm1j=1ntj (反证法可证明)

假设具有最大负载的机器 i i i 完成的最后一个任务是 j j j,有:
L − t j < = 1 m ∑ k = 1 m L k = 1 m ∑ p = 1 n − 1 t p ≤ L ∗ L - t_j <= \frac{1}{m}\sum_{k=1}^mL_k =\frac{1}{m}\sum_{p=1}^{n-1}t_p \leq L^* Ltj<=m1k=1mLk=m1p=1n1tpL
又根据引理1:
t j ≤ L ∗ t_j \leq L* tjL
故:
L − t j + t j ≤ L ∗ + L ∗ = 2 L ∗ L - t_j + t_j \leq L^* + L^* = 2L^* Ltj+tjL+L=2L
所以 l i s t − s c h e d u l i n g list-scheduling listscheduling 算法是2倍近似最优的。

在这里插入图片描述

算法二:LPT Rule

先将 n n n个任务按处理时间的降序排列,再执行 l i s t − s c h e d u l i n g list-scheduling list

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值