求助个最优服务次序问题

shypzms 2008-11-21 08:58:09
最优服务次序问题:设有n个顾客同时等待同一项服务,顾客i需要的服务时间为ti(1<i<n),如何安排这n个顾客的服务次序才能使平均等待时间达到最小。
平均等待时间是n个顾客等待服务时间的总和除以n。
假设n个顾客等待时间的总和为T,已知每个客户各自单独所需的服务时间序列为t={t1,t2,…,tn}(其中ti为第i个用户需要的服务时间),则每个用户等待时问Ti为:
T1=t1;T2=t1+t2;Tn=t1+t2+…+tn;
总时间就是T=T1+T2+…+Tn,平均等待时间就是T/n
我已经编了一个程序使用贪心策略按照ti从小到大的顺序安排服务。
现在我想写一个对比程序,使用动态规划来寻找最优解,应该怎么选策略呢?
目的是和贪心策略对比复杂度,证明贪心法针对这个问题比较简便
...全文
958 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
binbin8055 2009-10-11
  • 打赏
  • 举报
回复
如果使用matlab工具编程解决又该如何
  • 打赏
  • 举报
回复
如果非要说动态规划的话,贪心算法就是动态规划的一种特殊情况,只不过在状态转移的时候非常简单,直接“贪心”就一定可以得到最优解。
孰优孰劣一目了然,还要对比什么?直接去分析复杂度多省事。

象这种问题,明显按照服务时间升序排列就是最优解。知道这一点之后,贪心算法和动态规划就是一回事。
如果非要“假装不知道”,那只能和全排列去对比了。
shypzms 2008-11-22
  • 打赏
  • 举报
回复
T=T1+T2+…+Tn=n*t1+(n-1)*t2+…+(n+1-i)ti+…+tn
只有t1<=t2<=t3<=…<=tn时才能最小
现在的问题是这种子条件最优解就是问题最优解的问题能不能用动态规划解决,还是只能和全排列遍历对比?
shypzms 2008-11-21
  • 打赏
  • 举报
回复
这个我也证明了,主要是要求用两种算法解决这个问题,并比较优劣
  • 打赏
  • 举报
回复
多明显的事情,直接证明就是了。
干嘛还和动态规划对比?那还不如直接和全排列遍历方法对比呢。

某个服务次序是:T(1),T(2),T(3),...,T(i-1),T(i),T(i+1),...,T(n)
假设此时有T(i)>T(i+1),
令A=T(1)+T(2)+...+T(i-1),
那么T(i)等待的时间为A,T(i+1)的等待时间为A+T(i)

现在我们交换T(i)和T(i+1)的位置。很明前T(1~i-1)和T(i+2~n)的等待时间不变,
而此时T(i+1)的等待时间变为A,T(i)的等待时间变为A+T(i+1)

由于有T(i)>T(i+1),显然交换后是个更价的方案

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧