数据结构(严蔚敏)算法3.7理解

这篇博客详细解析了算法3.7,它模拟银行的业务流程,以事件驱动为核心,通过事件队列处理客户到达和离开。算法假设客户到达时间及办理业务所需时间均为随机,通过循环处理事件队列实现模拟。博主还探讨了摒弃事件驱动,转而使用时间驱动算法的复杂性和额外开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提要

算法3.7表达:银行业务模拟,获取客户平均等待时间

算法重点思路理解

算法模拟银行业务运用的主要思路:事件驱动。

由于该算法运用了事件驱动的设计思路,故算法中占据中心地位的是事件队列,整个算法的核心驱动力源自于对于事件队列的处理。其他的四个队列只是用于顾客堆栈,存储客户符号。

算法的假设

算法源自于对于银行事务的理解:

  1. 开门第一时间,第一位顾客到达,即刻办理业务;
  2. 客户办理业务所需时间是随机的,生成客户符号之后,便已经确定下来;
  3. 接下来的客户到达与本客户到达事件之间的间隔是随机的,算法中提前确定下来;
  4. 一位客户业务办理完成,离开银行,另一位客户开始办理业务;
  5. 耗时=客户离开时间-客户到达时间

算法的运行过程分析

第一步,首先在事件队列中存储一个到达事件,这个事件代表第一位顾客进入银行办理业务。

由于算法核心是事件驱动,因此这只是为后续处理过程添加了一个驱动事件,并不意味着第一位顾客相关事件的处理全部完成了,即使客户的到达事件也并没有处理。

第二步,抽取事件队列的事件符号,开始处理该事件,利用处理到达事件的子过程处理事件。

首先抽取事件队列到达事件,生成一个客户符号,将客户符号存入其中一个客户队列&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值