最优服务次序问题算法c语言,《算法分析与设计》最优服务次序问题的答案-20210414020541.docx-原创力文档...
最优服务次序问题
设有n个顾客同时等待同一项服务。顾客i需要的服务时间为ti,1<=iv=n 应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间 是n个顾客等待服务时间的总和除以 n。
参考答案
一、最优服务次序问题
二、运行环境(软、硬件环境)
运行软件:Window7 64位
硬件:华硕PC机
编写程序:C++语言
编译环境:VC++6.0
三、算法设计的思想
首先,要使n个顾客平均等待时间最小,即为:让 n个顾客等待服务时间总 和最小。因为,平均等待时间=等待服务时间总和/n。
接着,由于每个顾客i的服务时间为ti,要实现等待服务时间总和最小,应 该尽可能安排ti值小的顾客,进行服务。
因此,本题属于局部最优的设计问题,即为贪心算法。
四、算法的流程图
五、算法设计分析
假设原问题的时间为T,已经知道了某个最优服务系列,最优解为min={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(n);
那么,总的等待时间,即为最优解
T min=n*t(1)+(n-1)*t(2)+(n-2)*t(3)……+(n+1-i)*t(i)+……+2*t( n-1)+1*t( n);
由于,平均等待时间是n个顾客等待时间总和除以n,则本题转化为求使得 顾客等待时间总和最小的服务次序问题。
六、源代码
#includevfstream . h>
#include
#include
#include
long n=-1 ;//顾客数为n
long *wait ;〃顾客各自等待时间wait
void in putData ()
{〃输入数据n,等待时间wait
ifstream fin ;
fin . open(*input . txt ,‘ los::nocreate);
if(!fi n){
cout<< “ File Open ErroF<
return;
}
fin?n ;
wait==new long[n];
for(1ong i=0 ; i
{
fin>>wait[i];
)
fin . close0;
}
void ShellSort(lo ng *x)
(//Shell排序,实现数据从小到大排序
long i , j, temp. gap=n/2;
while(gap>0){
for(i=gap ; i
j=i-gap ;
while(j>=0){
if(x[j]>x[j+gap])
{
temp=x[j] ; x[j]=x[j+gap] ; x[j+gap]=temp ;〃实现大小交换
j=j-gap ;
}
else{j=-1 ; }
}
}
gap=gap/ 2 ;
}
}
/ **
函数名:AveWaitO
描述:计算平均等待时问
参数:各顾客等待时间
** / double AveWait(lo ng *x)
{
double ave=0.0;
ShellSort(x);
for(long i=0 ; i
{
ave+=1.0*( n-i)*x[i];
}
ave/ =n ;〃求平均等待时间
retur n ave;
)
void outputData(double out)
(//输出结果
ofstream fout;
fout. open("output. txt");
fout<
<
fout. close0;
)
void mai n0
{//主调函数
inputData();
if(n !=-1)(
double avewait=AveWait(wait);
outputData(avewait):
}
}
七、运行结果分析
试验结果:
in put. txt:
12 56 22 l9 90 1002 234 33 45 97 810
output. txt:
532. 00
八、收获及体会
本题将顾客平均等待时间最小,转化为服务等待时间总和最小。利用局部最 优,通过贪心算法来解决该题。
通过本题,也更深入了解贪心算法的本质,今后对于其他类似的局部最优问 题、最优子结构问题,都可米用贪心算法解决。
最优服务次序问题算法c语言,《算法分析与设计》最优服务次序问题的答案-20210414020541.docx-原创力文档...相关推荐
- 常子楠主编 c语言程序设计答案,4G下的C语言程序设计教学研究-教学研究论文-教育论文(8页)-原创力文档...
4G下的C语言程序设计教学研究 摘要:普通高等院校本科非计算机专业学生学习C语言程序设计可以培养较好的锻炼逻辑分析能力和计算思维能力.本文分析了4G环境下C语言课程教学中存在的一些问题,结合移动互联网 ...
- c语言程序水准路线,C++语言在水准路线简易平差中的应用实例(17页)-原创力文档...
C语言在水准路线简易平差中的应用实例C语言在水准路线简易平差中的应用实例 PAGE C++语言在水准路线简易平差中的应用实例 [摘 要]:水准测量工作分为野外数据采集和内业计算,白天测得的大量数据,晚 ...
- c语言错误stray,C语言20条编程中遇到的错误提示(4页)-原创力文档
C语言20条编程中遇到的错误提示 代码: 编译器提示错误:error: 'else' without a previous 'if' 错误原因解读:'else'的前面没有匹配的'if' 代码: 编译器 ...
- 蓄水池问题c语言编程,基于51单片机的蓄水池自动控制系统(35页)-原创力文档...
广西民族大学 第二次综合课程设计报告 论文题目 : 基于 51 单片机的蓄水池自动控制系统 学 院: 物理与电子工程学院 专 业 : 自动化 年 级 : 2007 级 学 号 : 1072630101 ...
- 文件上传服务器jvm调优,JVM性能调优解决方案(12页)-原创力文档
精品文档 JVM性能调优解决方案(总结) 一.引言 本文的读者是技术支持人员.阅读本文后,你将理解 jboss 的启动脚本文件 (run.sh )中有一系列的 JVM配置参数的含义,以及如何调整它们, ...
- 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...
书山有路勤为径 学海无涯苦作舟 一.思考题. 1.你如何向别人解释清楚什么是编程.什么是计算机语言? 2.什么是C语言? 二.解答题. 1.用C语言编写程序:求任意两个整数的和.如果是小数的话,要求输 ...
- 设计计算机程序时 要考虑计算的过程,算法和程序设计练习题复习课程(6页)-原创力文档...
算法和程序设计练习题 一.选择题: 1.使用计算机解题的步骤,以下描述正确的是:__ B__. A .正确理解题意→设计正确算法→寻找解题方法→编写程序→调试运行 B .正确理解题意→寻找解题方法→设 ...
- go语言服务器 行情,Go语言在证券期货行情系统中的实践(32页)-原创力文档
Go语言在证券期货 行情系统中的实践 金大师 张泽武 目录 CONTENTS 项 目故事 行情系统 接入服务 项 目故事 l 项目启动 l 团队组建 l 项目计划 接入二级平台或交易所的数据 启动 提 ...
- x_html语言名词解释,第2章++XHTML标记语言(97页)-原创力文档
第2章 XHTML标签语言 2.1 XHTML基础 2.2 段落和文字标签 2.3 列表标签 2.4 超级链接标签 2.5 插入图片标签 2.6 页面布局标签 2.7 框架标签 2.8 表单标签 2. ...
最新文章
- 数字双胞胎技术和物联网如何帮助企业取得成功
- Matlab画地球剖面图,分享用matlab显示地震记录的波形变面积图
- lunix系统安装及分区补充安装包
- Python 的运算符
- 深度学总结:CNN Decoder, Upsampling的处理
- 数据中心节能制冷---冷却塔帮忙
- 下载丨10月数据库技术通讯:HAIP在两个私网网卡上发生互换,导致ASM实例启动失败...
- 动态加载网上或者本地场景的后续
- 菜鸟学Linux 第079篇笔记 mysql备份lvm
- numpy数组及处理:效率对比
- java非静态内部类如何创建对象实例
- Java HTTPS客户端如何处理证书
- c语言 取结构体地址,结构体赋值,对用不用取地址符有些困惑?
- dbcp 出现的connection is closed的问题
- 深度学习实战-图像风格迁移
- Mac中搜狗输入法在各应用中默认中英文状态
- java @Scheduled注解执行定时任务
- Shell--如何定义及遍历数组、字符串数组【工作笔记】
- 如何通过cmd开一个本地服务器
- 嵌入式实践教程--ASOC之Codec