无线网络仿真:6G网络仿真_(7).网络层仿真

网络层仿真

1. 网络层的基本概念

网络层是无线网络仿真中一个非常重要的层次,它负责将上层的传输数据包从源节点路由到目的节点。网络层的主要功能包括路由选择、拥塞控制、流量管理等。在6G网络仿真中,网络层仿真不仅要考虑传统无线网络的特性,还要应对更高的数据传输速率、更低的延迟和更大的连接密度等新挑战。

1.1 路由选择

路由选择是指在网络中选择一条从源节点到目的节点的路径。在6G网络中,由于节点数量大幅增加,路由选择算法需要更加高效和智能。常见的路由选择算法包括最短路径算法(如Dijkstra算法)、泛洪算法、多路径算法等。

1.1.1 最短路径算法

最短路径算法是一种常用的路由选择算法,它通过计算节点之间的最短路径来确定最佳路由。Dijkstra算法是最短路径算法的一种,其基本思想是从源节点开始,逐步找到到所有其他节点的最短路径。

importheapqdefdijkstra(graph,start):""" 使用Dijkstra算法计算最短路径 :param graph: 有权重的图,表示为字典 :param start: 起始节点 :return: 从起始节点到所有其他节点的最短路径长度 """# 初始化距离字典,所有节点的初始距离为无穷大distances={node:float('inf')fornodeingraph}distances[start]=0# 优先队列,存储 (距离, 节点) 的元组priority_queue=[(0,start)]whilepriority_queue:# 弹出当前距离最小的节点current_distance,current_node=heapq.heappop(priority_queue)# 如果当前距离大于已知的最短距离,则跳过ifcurrent_distance>distances[current_node]:continue# 遍历当前节点的邻居forneighbor,weightingraph[current_node].items():distance=current_distance+weight# 如果找到了更短的路径ifdistance<distances[neighbor]:distances[neighbor]=distance heapq.heappush(priority_queue,(distance,neighbor))returndistances# 示例图graph={'A':{'B':1,'C':4},'B':{'A':1,'C':2,'D':5},'C':{'A':4,'B':2,'D':1},'D':{'B':5,'C':1}}# 计算从节点A到所有其他节点的最短路径distances=dijkstra(graph,'A')print(distances)

1.1.2 泛洪算法

泛洪算法是一种简单的路由选择算法,其基本思想是每个节点将收到的数据包转发给所有邻居节点,直到数据包到达目的节点。虽然泛洪算法简单,但容易导致网络拥塞和广播风暴。

defflood(graph,start,end):""" 使用泛洪算法计算从源节点到目的节点的路径 :param graph: 无权重的图,表示为字典 :param start: 起始节点 :param end: 目的节点 :return: 从起始节点到目的节点的路径 """# 初始化队列和访问字典queue=[start]visited={node:Falsefornodeingraph}visited[start]=Trueparent={node:Nonefornodeingraph}whilequeue:current_node=queue.pop(0)# 如果到达目的节点,构造路径并返回ifcurrent_node==end:path=[]whilecurrent_nodeisnotNone:path.append(current_node)current_node=parent[current_node]returnpath[::-1]# 遍历当前节点的邻居forneighboringraph[current_node]:ifnotvisited[neighbor]:visited[neighbor]=Trueparent[neighbor]=current_node queue.append(neighbor)returnNone# 示例图graph={'A':['B','C'],'B':['A','C','D'],'C':['A','B','D'],'D':['B','C']}# 计算从节点A到节点D的路径path=flood(graph,'A','D')print(path)

1.1.3 多路径算法

多路径算法通过选择多条路径来提高网络的可靠性和负载均衡。常见的多路径算法包括MPLS(多协议标签交换)和ECMP(等价多路径)等。

deffind_multiple_paths(graph,start,end,max_paths=3):""" 使用多路径算法计算从源节点到目的节点的多条路径 :param graph: 无权重的图,表示为字典 :param start: 起始节点 :param end: 目的节点 :param max_paths: 最多返回的路径数量 :return: 从起始节点到目的节点的多条路径 """# 初始化队列和访问字典queue=[([start],0)]visited={node:set()fornodeingraph}paths=[]whilequeueandlen(paths)<max_paths:current_path,current_cost=queue.pop(0)current_node=current_path[-1]# 如果到达目的节点,记录路径ifcurrent_node==end:paths.append(current_path)continue# 遍历当前节点的邻居forneighboringraph[current_node]:ifneighbornotinvisited[current_node]:visited[current_node].add(neighbor)new_path=current_path+[neighbor]new_cost=current_cost+1queue.append((new_path,new_cost))returnpaths# 示例图graph={'A':['B','C'],'B':['A','C','D'],'C':['A','B','D'],'D':['B','C']}# 计算从节点A到节点D的多条路径paths=find_multiple_paths(graph,'A','D',max_paths=3)print(paths)

1.2 拥塞控制

拥塞控制是指在网络中控制数据流量,避免网络拥塞,提高网络性能。在6G网络中,由于更高的数据传输速率和更多的节点,拥塞控制变得更加关键。常见的拥塞控制算法包括TCP拥塞控制、窗口机制、ECN(显式拥塞通知)等。

1.2.1 TCP拥塞控制

TCP拥塞控制是一种常见的拥塞控制机制,它通过调整发送窗口的大小来控制数据流量。TCP拥塞控制包括慢启动、拥塞避免、快速重传和快速恢复等阶段。

classTCPCongestionControl:def__init__(self,initial_window=1):""" 初始化TCP拥塞控制 :param initial_window: 初始拥塞窗口大小 """self.cwnd=initial_window# 拥塞窗口self.ssthresh=64# 慢启动阈值defslow_start(self):""" 慢启动阶段 """self.cwnd*=2defcongestion_avoidance(self):""" 拥塞避免阶段 """self.cwnd+=1/self.cwnddeffast_retransmit(self):""" 快速重传阶段 """self.ssthresh=self.cwnd/2self.cwnd=self.ssthresh+3deffast_recovery(self):""" 快速恢复阶段 """self.cwnd=self.ssthreshdefsimulate(self,packets,loss_rate=0.1):""" 模拟TCP拥塞控制过程 :param packets: 发送的数据包数量 :param loss_rate: 数据包丢失率 """for_inrange(packets):ifself.cwnd<self.ssthresh:self.slow_start()else:self.congestion_avoidance()ifrandom.random()<loss_rate:self.fast_retransmit()else:self.fast_recovery()returnself.cwnd# 示例importrandom tcp=TCPCongestionControl()cwnd=tcp.simulate(100,loss_rate=0.1)print(f"最终的拥塞窗口大小:{cwnd}")

1.2.2 窗口机制

窗口机制是拥塞控制中的一种基本方法,通过控制发送窗口的大小来调节数据流量。发送窗口的大小决定了发送方可以连续发送的数据包数量,接收方通过ACK(确认应答)来反馈接收情况。

classWindowControl:def__init__(self,initial_window=1,max_window=64):""" 初始化窗口控制 :param initial_window: 初始窗口大小 :param max_window: 最大窗口大小 """self.window=initial_window self.max_window=max_windowdefincrease_window(self):""" 增加窗口大小 """ifself.window<self.max_window:self.window+=1defdecrease_window(self,factor=0.5):""" 减小窗口大小 :param factor: 减小的比例 """self.window=int(self.window*factor)defsimulate(self,packets,loss_rate=0.1):""" 模拟窗口控制过程 :param packets: 发送的数据包数量 :param loss_rate: 数据包丢失率 """for_inrange(packets):ifrandom.random()<loss_rate:self.decrease_window()else:self.increase_window()returnself.window# 示例window_control=WindowControl()window_size=window_control.simulate(100,loss_rate=0.1)print(f"最终的窗口大小:{window_size}")

1.2.3 ECN(显式拥塞通知)

ECN是一种在网络层和传输层之间进行拥塞通知的机制。通过在网络层的IP包头中添加显式拥塞标志,传输层可以根据这些标志调整发送速率。

classECNControl:def__init__(self,initial_window=1,max_window=64):""" 初始化ECN控制 :param initial_window: 初始窗口大小 :param max_window: 最大窗口大小 """self.window=initial_window self.max_window=max_window self.congested=Falsedefreceive_ecn(self,ecn_flag):""" 接收ECN标志 :param ecn_flag: ECN标志位 """self.congested=ecn_flagdefadjust_window(self):""" 根据ECN标志调整窗口大小 """ifself.congested:self.window=max(1,self.window-1)self.congested=Falseelse:ifself.window<self.max_window:self.window+=1defsimulate(self,packets,ecn_rate=0.1):""" 模拟ECN控制过程 :param packets: 发送的数据包数量 :param ecn_rate: ECN标志出现的概率 """for_inrange(packets):ecn_flag=random.random()<ecn_rate self.receive_ecn(ecn_flag)self.adjust_window()returnself.window# 示例ecn_control=ECNControl()window_size=ecn_control.simulate(100,ecn_rate=0.1)print(f"最终的窗口大小:{window_size}")

1.3 流量管理

流量管理是指在网络层中对数据流量进行管理和控制,以确保网络的高效运行。常见的流量管理技术包括流量整形、流量监控、队列管理等。

1.3.1 流量整形

流量整形是指在网络层中对数据流量进行平滑处理,以避免瞬时的流量高峰导致网络拥塞。常见的流量整形算法包括令牌桶算法和漏桶算法。

1.3.1.1 令牌桶算法

令牌桶算法通过一个令牌桶来控制数据流量。令牌桶以固定速率生成令牌,数据包只有在令牌桶中有足够令牌时才能发送。

classTokenBucket:def__init__(self,capacity,rate):""" 初始化令牌桶 :param capacity: 令牌桶容量 :param rate: 令牌生成速率 """self.capacity=capacity self.rate=rate self.tokens=0self.last_time=time.time()defadd_tokens(self):""" 生成令牌 """now=time.time()elapsed_time=now-self.last_time tokens_to_add=elapsed_time*self.rate self.tokens=min(self.capacity,self.tokens+tokens_to_add)self.last_time=nowdeftry_consume(self,tokens):""" 尝试消耗令牌 :param tokens: 需要消耗的令牌数量 :return: 是否成功消耗令牌 """self.add_tokens()ifself.tokens>=tokens:self.tokens-=tokensreturnTruereturnFalsedefsimulate(self,packets,packet_size=1):""" 模拟流量整形过程 :param packets: 发送的数据包数量 :param packet_size: 每个数据包的大小 :return: 成功发送的数据包数量 """successful_packets=0for_inrange(packets):ifself.try_consume(packet_size):successful_packets+=1returnsuccessful_packets# 示例importtime token_bucket=TokenBucket(capacity=10,rate=2)successful_packets=token_bucket.simulate(packets=20,packet_size=1)print(f"成功发送的数据包数量:{successful_packets}")
1.3.1.2 漏桶算法

漏桶算法通过一个漏桶来控制数据流量。漏桶以固定速率流出数据,数据包只有在漏桶中时才能发送。

classLeakyBucket:def__init__(self,capacity,rate):""" 初始化漏桶 :param capacity: 漏桶容量 :param rate: 数据流出速率 """self.capacity=capacity self.rate=rate self.bucket=0self.last_time=time.time()defadd_packets(self,packets):""" 添加数据包到漏桶 :param packets: 添加的数据包数量 """self.bucket=min(self.capacity,self.bucket+packets)defflow_out(self):""" 数据流出漏桶 """now=time.time()elapsed_time=now-self.last_time tokens_to_remove=elapsed_time*self.rate self.bucket=max(0,self.bucket-tokens_to_remove)self.last_time=nowdefsimulate(self,packets,packet_size=1):""" 模拟流量整形过程 :param packets: 发送的数据包数量 :param packet_size: 每个数据包的大小 :return: 成功发送的数据包数量 """successful_packets=0for_inrange(packets):self.add_packets(packet_size)self.flow_out()ifself.bucket>=packet_size:self.bucket-=packet_size successful_packets+=1returnsuccessful_packets# 示例leaky_bucket=LeakyBucket(capacity=10,rate=2)successful_packets=leaky_bucket.simulate(packets=20,packet_size=1)print(f"成功发送的数据包数量:{successful_packets}")

1.3.2 流量监控

流量监控是指在网络层中对数据流量进行实时监控,以发现和处理异常流量。常见的流量监控技术包括流量统计、异常检测等。

1.3.2.1 流量统计

流量统计通过记录网络中的数据流量,帮助网络管理员了解网络的使用情况。常见的流量统计方法包括流量计数和流量速率统计。

classTrafficMonitor:def__init__(self):""" 初始化流量监控器 """self.packet_count=0self.total_size=0self.start_time=time.time()defreceive_packet(self,packet_size):""" 接收数据包并更新统计信息 :param packet_size: 数据包大小 """self.packet_count+=1self.total_size+=packet_sizedefget_traffic_rate(self):""" 获取流量速率 :return: 流量速率(字节/秒) """elapsed_time=time.time()-self.start_timereturnself.total_size/elapsed_timedefsimulate(self,packets,packet_size=1):""" 模拟流量监控过程 :param packets: 发送的数据包数量 :param packet_size: 每个数据包的大小 """for_inrange(packets):self.receive_packet(packet_size)returnself.get_traffic_rate()# 示例traffic_monitor=TrafficMonitor()traffic_rate=traffic_monitor.simulate(packets=100,packet_size=1)print(f"流量速率:{traffic_rate}字节/秒")

1.3.2.2 异常检测

异常检测是指在网络层中检测异常流量,及时发现并处理潜在的网络问题。常见的异常检测方法包括基于阈值的检测和基于机器学习的检测。

1.3.2.2.1 基于阈值的检测

基于阈值的检测方法通过设定一个流量速率的阈值来判断流量是否异常。如果当前的流量速率超过阈值,则认为网络中存在异常流量。

classThresholdAnomalyDetector:def__init__(self,threshold=1000):""" 初始化基于阈值的异常检测器 :param threshold: 异常检测的阈值(字节/秒) """self.threshold=threshold self.traffic_rates=[]defadd_traffic_rate(self,traffic_rate):""" 添加流量速率 :param traffic_rate: 流量速率(字节/秒) """self.traffic_rates.append(traffic_rate)defdetect_anomaly(self):""" 检测异常流量 :return: 是否检测到异常流量 """current_rate=self.traffic_rates[-1]ifcurrent_rate>self.threshold:returnTruereturnFalsedefsimulate(self,packets,packet_size=1):""" 模拟异常检测过程 :param packets: 发送的数据包数量 :param packet_size: 每个数据包的大小 :return: 检测到的异常次数 """traffic_monitor=TrafficMonitor()anomaly_count=0for_inrange(packets):traffic_rate=traffic_monitor.simulate(1,packet_size)self.add_traffic_rate(traffic_rate)ifself.detect_anomaly():anomaly_count+=1returnanomaly_count# 示例threshold_detector=ThresholdAnomalyDetector(threshold=100)anomaly_count=threshold_detector.simulate(packets=200,packet_size=1)print(f"检测到的异常次数:{anomaly_count}")
1.3.2.2.2 基于机器学习的检测

基于机器学习的检测方法通过训练模型来识别网络流量的正常模式和异常模式。这种方法可以更准确地检测到异常流量,但需要大量的训练数据和计算资源。

fromsklearn.ensembleimportIsolationForestimportpandasaspdclassMachineLearningAnomalyDetector:def__init__(self,model=IsolationForest(contamination=0.1)):""" 初始化基于机器学习的异常检测器 :param model: 用于异常检测的模型 """self.model=model self.traffic_rates=[]defadd_traffic_rate(self,traffic_rate):""" 添加流量速率 :param traffic_rate: 流量速率(字节/秒) """self.traffic_rates.append(traffic_rate)deftrain(self):""" 训练异常检测模型 """data=pd.DataFrame(self.traffic_rates,columns=['traffic_rate'])self.model.fit(data)defdetect_anomaly(self,traffic_rate):""" 检测异常流量 :param traffic_rate: 流量速率(字节/秒) :return: 是否检测到异常流量 """prediction=self.model.predict([[traffic_rate]])returnprediction[0]==-1defsimulate(self,packets,packet_size=1):""" 模拟异常检测过程 :param packets: 发送的数据包数量 :param packet_size: 每个数据包的大小 :return: 检测到的异常次数 """traffic_monitor=TrafficMonitor()anomaly_count=0for_inrange(packets):traffic_rate=traffic_monitor.simulate(1,packet_size)self.add_traffic_rate(traffic_rate)# 训练模型self.train()# 再次模拟,检测异常fortraffic_rateinself.traffic_rates:ifself.detect_anomaly(traffic_rate):anomaly_count+=1returnanomaly_count# 示例ml_detector=MachineLearningAnomalyDetector()anomaly_count=ml_detector.simulate(packets=200,packet_size=1)print(f"检测到的异常次数:{anomaly_count}")

1.4 总结

在网络层仿真中,路由选择、拥塞控制和流量管理是三个重要的方面。6G网络的高数据传输速率、低延迟和大连接密度对这些方面提出了更高的要求。通过上述的算法和示例代码,我们可以更好地理解和模拟这些网络层功能,为6G网络的设计和优化提供支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌重新拥抱被冷落的JPEG XL图像格式

谷歌已将JPEG XL&#xff08;JXL&#xff09;图像格式支持添加到开源Chromium代码库中&#xff0c;这一决定逆转了2022年放弃该技术的立场。最近的一次代码提交集成并启用了JXL解码器&#xff0c;这意味着未来发布的Google Chrome和其他基于Chromium的浏览器将包含处理和显示JX…

直接画圆或输入半径(关键字和选择状态并列)

if (pointResult.Status PromptStatus.Keyword) else if (pointResult.Status PromptStatus.OK){// 用户直接指定了点&#xff0c;使用默认半径画圆CreateCircle(db, ed, pointResult.Value, radius);}else{// 用户取消return;}public static void DrawCircleWithDirectOptio…

内存短缺意外带来好处:AI PC炒作降温

内存价格飙升对今年想要购买、组装或升级电脑的人来说是坏消息&#xff0c;但对那些厌倦了所谓"AI PC"宣传的人来说&#xff0c;这可能是个好消息。据Ars Technica报道&#xff0c;由生成式AI热潮推动的数据中心需求不断增长&#xff0c;导致内存和闪存芯片短缺&…

CAD倒圆角——CAD自带倒圆角 VS c#重写的倒圆角

经测试CAD2024中闭合多段线倒圆角&#xff08;半径1&#xff09;&#xff0c;效果如下&#xff1a;对比发现&#xff0c;这种情况CAD自身命令F P 选择多段线生成的倒圆角出现了bug&#xff0c; 通过重写倒圆角算法避免了此种bug出现。

急刹事件作为道路风险评估新指标研究

我们通过分析Android Auto收集的急刹事件&#xff08;HBEs&#xff09;与实际道路事故率之间的关系&#xff0c;确立了两者之间的正相关性。研究证实&#xff0c;急刹事件频率较高的道路段确实具有显著更高的事故风险&#xff0c;这表明此类事件可以作为道路安全评估的前瞻性指…

AI自适应降噪耳机改变听觉体验

在AI技术快速融入智能手机、笔记本电脑、平板电脑和耳机的竞赛中&#xff0c;最引人注目的AI功能通常会受到最多关注。当耳机使用AI进行实时翻译服务或支持免提访问生成式AI聊天机器人时&#xff0c;你会明显感知到。但还有一种你的耳机使用AI的方式&#xff0c;虽然不那么令人…

RS485 双串口通信 + LCD 实时显示(DMA版)

目录 一、前言二、DMA 通信核心原理简述三、CubeMX 的 DMA 串口配置四、FreeRTOS DMA 收发任务代码开发五、总结六、结尾 一、前言 前文我们已经完成了串口 RS485 通信的查询方式与中断方式开发&#xff0c;两种方式各有适配场景。本次笔记将在此基础上&#xff0c;讲解串口…

板凳----------(枯藤 )vs2026+win10(第六章-6)

《伤寒论》OCR 读书笔记项目的清晰小结&#xff0c;涵盖 安装步骤 代码调试关键点&#xff0c;方便复盘、备份或分享&#xff1a; &#x1f9e9; 一、整体目标 将扫描版 PDF《伤寒论》通过 OCR 自动识别 → 提取方剂组成 → 生成结构化 Markdown 笔记&#xff08;含口诀、比例…

“AI 电影,你敢买票吗?”——《团圆令》与《红孩儿》开启国产动画新赛道

随着人工智能&#xff08;AIGC&#xff09;技术的迅猛发展&#xff0c;国产动画电影正经历着一次颠覆性的变革。2025年12月20日&#xff0c;中国首部院线AIGC动画电影《团圆令》在北京举行点映礼&#xff0c;随后《红孩儿&#xff1a;赤焰之心》在上海松江举行开机仪式&#xf…

2026年计算机领域重点支持方向(参考)

截至2026年初&#xff0c;计算机及相关技术领域在中国正处于“十四五”收官、“十五五”开启的关键节点。一、2026年国家政策重点支持方向 ✅ 1. 人工智能&#xff08;AI&#xff09;与大模型 政策依据&#xff1a;《新一代人工智能发展规划》持续深化&#xff1b;2026年中央经…

新年氛围营造:新疆/西藏/甘肃/青海购物中心美陈设计公司盘点

当新年的脚步踏遍西北大地&#xff0c;新疆的丝路驼铃、西藏的雪域风情、甘肃的敦煌文脉、青海的河湟古韵&#xff0c;都在购物中心这个城市核心场景中寻找新的表达。作为节日氛围营造的关键载体&#xff0c;美陈设计早已跳出 “静态装饰” 的局限&#xff0c;成为融合地域文化…

压测 把自己 压进去了

凌晨一点&#xff0c;城中村的出租屋里&#xff0c;只有电脑屏幕的蓝光映着小李的脸。作为一名自由后端开发者&#xff0c;他不用受公司制度约束&#xff0c;日常接些接口开发、bug修复的散活&#xff0c;大把空闲时间都耗在了钻研技术上——而压测各类接口&#xff0c;成了他藏…

全网最全9个AI论文网站,专科生毕业论文轻松搞定!

全网最全9个AI论文网站&#xff0c;专科生毕业论文轻松搞定&#xff01; AI 工具如何助力论文写作&#xff0c;让专科生轻松应对毕业挑战 在当前的学术环境中&#xff0c;越来越多的专科生开始借助 AI 工具来提升论文写作效率。尤其是那些对写作技巧不熟悉、时间紧张的学生来说…

《创业之路》-852- 价值投资者的七步法:如何系统地看懂一个企业

价值投资者要真正“看懂一个企业”&#xff0c;不仅仅是看财务报表或估值数字&#xff0c;而是要深入理解企业的本质、护城河、管理层、商业模式和长期前景。正如巴菲特所说&#xff1a;“用合理的价格买入一家伟大的企业&#xff0c;远胜于用便宜的价格买入一家平庸的企业。”…

《创业之路》-855- 商业模式案例分析 - 中兴通讯

商业模式案例分析&#xff1a;中兴通讯&#xff08;ZTE Corporation&#xff09;中兴通讯&#xff08;ZTE&#xff09;成立于1985年&#xff0c;是中国领先的综合通信技术与解决方案提供商之一&#xff0c;也是全球主要的电信设备制造商和智能终端供应商。作为中国信息通信产业…

Vue3:泛型类型声明 vs 运行时选项声明 语法对比

Vue 3 提供了两种 props 声明方式&#xff1a;泛型类型声明和运行时选项声明。泛型类型声明&#xff08;defineProps<{prop:Type}>()&#xff09;在编译时进行类型检查&#xff0c;完全支持 TypeScript&#xff0c;适合新项目和追求类型安全的场景。运行时选项声明&#…

《创业之路》-857- 商业模式案例分析:阿里、百度、腾讯、字节、滴滴、美团、京东、拼多多 全面对比

商业模式案例分析&#xff1a;阿里、百度、腾讯、字节、滴滴、美团、京东、拼多多 全面对比在中国数字经济的版图中&#xff0c;阿里巴巴、百度、腾讯、字节跳动、滴滴出行、美团、京东、拼多多是八家最具代表性的科技企业。它们虽同属“互联网”时代产物&#xff0c;但因创始基…

交通仿真软件:SUMO_(15).高级仿真技术:微观与宏观仿真结合

高级仿真技术&#xff1a;微观与宏观仿真结合 在交通仿真领域&#xff0c;微观仿真和宏观仿真各自具有不同的优势和应用场景。微观仿真可以详细模拟每个车辆的行为&#xff0c;而宏观仿真则关注于交通流的整体特性。为了充分利用这两种仿真的优点&#xff0c;许多交通仿真软件提…

洛谷 T478345:循环数组 ← 单调队列 + 破环成链

【题目来源】 https://www.luogu.com.cn/problem/T478345 【题目描述】 给你一个循环的数组 A[1], A[2], A[3], ...., A[n]。循环的数组意思是 A[1] 的左边是 A[n]&#xff0c;A[n] 的右边是 A[1]&#xff0c;也就是可以理解为他们连成了一个环。 现在你的任务是找到一个字串&…

基于小程序的篮球场馆预订系统-计算机毕业设计源码+LW文档

摘 要 随着国家的迅猛发展和互联网技术的持续飞跃&#xff0c;现代生活节奏显著加快。为了更有效地管理时间、提升个人及工作效率&#xff0c;大众愈发倾向于借助互联网平台处理各类日常事务&#xff0c;这一趋势直接催生了微信小程序的蓬勃兴起。在此背景下&#xff0c;人们对…