用贪心算法求解最优服务次序问题.doc

用贪心算法求解最优服务次序问题.doc

ID:55037692

大小:23.50 KB

页数:7页

时间:2020-04-26

用贪心算法求解最优服务次序问题.doc_第1页
用贪心算法求解最优服务次序问题.doc_第2页
用贪心算法求解最优服务次序问题.doc_第3页
用贪心算法求解最优服务次序问题.doc_第4页
用贪心算法求解最优服务次序问题.doc_第5页
资源描述:

《用贪心算法求解最优服务次序问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最优服务次序问题:设有n个顾客同时等待同一项服务,顾客i需要的服务时间为ti,n>=i>=1,应如何安排这n个顾客的服务次序才能使平均等待时间达到最小。平均等待时间是n个顾客等待服务时间的总和除以n。贪心选择策略假设原问题为T,而我们已经知道了某个最优服务系列,即最优解为A={t(1),t(2),….t(n))(其中t(i)为第i个用户需要的服务时间),则每个用户等待时间为:T(1)=t(1);T(2)=t(1)十t(2):T(n)---t(1)+t(2)十t(3)+……t(n);那么总等待时间,即最优值为:TA=n。t(1)+(rrl)‘t(2)十…+(n+l—i)‘t(i)

2、+…2’t(n-1)+t(n)由于平均等待时问是n个顾客等待时间的总和除以n,故本题实际上就是求使顾客等待时间的总和最小的服务次序。本问题采用贪心算法求解,贪心策略如下:对服务时间最的顾客先服务的贪心选择策略。首先对需要服务时问最短的顾客进行服务,即做完第一次选择后,原问题T变成了需对n-1个顾客服务的新问题T’。新问题和原问题相同,只是问题规模由n减小为n一1。基于此种选择策略,对新问题T’,选择n-l顾客中选择服务时间最短的先进行服务.如此进行下去,直至所有服务都完成为止。#include#nclude#include

3、ib.h>#includelongn:_1://顾客数nLong*wait;N各自等待时间voidinputDataO{//输入数据n、waitifstreamfin;fin.open(*input.txt’,los::nocreate);if(!fin){cout<<“FileOpenError!"<>n;Wait==newlong[n];for(1ongi=0;i>wait[i];)fin.close0;}voidShellSort(10ng*a)(//Shell排序,实现数据从小到大排序lo

4、ngi,j,x.gap=n/2;while(gap>0){for(i=gap;i=0){if(a[J]>a[j+gap]){x=a[j];a[j]=a[j+gap];a[j+gap]=x;j=j-gap;}else{j一1;}}}gap=gap/2;}}/函数名:AveWait0描述:计算平均等待时问参数:各顾客等待时间/doubleAveWait(10ng*a){doubleave=0.0;’ShellSort(a);.for(10ngi=0;i

5、ave;)voidoutputData(doubleout)(∥输出结果ofstreamfout;fout.open("output.Txt");fout<

6、最优服务次序问题:设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti,1<=i<=n。共有s处可以提供此项服务。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。(输入的数据要求从文件input.txt中读到程序中,输出结果要求写入文件output.txt中。)法一:#include#includeusingnamespacestd;voidCountingSort(intt[],intn,intr[],inte,intq[]){inti;//计数排序for(i=0;i

7、)q[i]=0;//把数组元素全部赋初值为0for(i=0;i0;i--)//将顾客等待时间从小到大排列{r[q[t[i-1]]-1]=t[i-1];q[t[i-1]]-=1;}}voidmain(){inti=0,sum=0,n,max=0,u;//n为顾客个数floatvt,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。