数据结构(算法)ps如果有新内容会补充

算法:

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

特性:

  1. 输入
  2. 输出
  3. 有穷性
  4. 确定性
  5. 可行性

算法设计要求

 

  1. 正确性
  2. 可读性(算法设计的另一目的是为了便于阅读,理解和交流)
  3. 健壮性(当输入数据不合法时,算法也能做出相应处理,而不是产生异常或者莫名其妙的结果)适用于高级算法,像蓝桥杯竞赛还没这么要求过
  4. 时间效率高(利用率高)和储存量低(在算法竞赛的时候,一道题有很多解,但是它会要求时间和内存,所以暴力解法往往会超时)

算法设计的基本方法

列举法、归纳法、递推、递归、减半递推技术、回溯法。

 

算法效率的度量方法

  1. 事后统计法:主要通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序运行时间进行比较,从而确定算法效率的高低。
  2. 事前分析估算法:在计算机程序编制前,依据统方法对算法进行估算。
  • 一个程序的运行时间,依赖于算法好坏和输入规模。
  • 在分析程序的运行时间时,最重要的时把程序看成是独立程序设计语言的算法一系列步骤

函数的渐近增长:给定俩个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么我们说f(n)的渐近增长快于g(n)

 

判断一个算法的效率

函数的常数和其他次要的数据项可以忽略,而更应该关注主项(最高阶项)的阶数

算法的时间复杂度

算法的时间量度,记作:T(n)=O(f(n))   

他表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。

推导大O阶方法

  1. 用常数1取代运行时间中的所有加法常数
  2. 在修改后的运行次数函数中,只保留最高项。
  3. 如果最高阶项数存在且不是1,则除去与这个项相乘的常数,得到的就是大O阶
  • 常数阶  O[1]  固定次数
  • 线性阶  O[n]  for循环
  • 对数阶  O[logn]    *=
  • 平方阶  O[n2]   嵌套for
  • nlogn阶  递归的复杂度  T(n) = O(nlogn)  推导网站: https://www.cnblogs.com/hlongch/p/5749038.html
  • 指数阶  O[2 n]

O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

 

最坏情况与平均情况

  • 最坏情况是运行时间的一种保证,那就是运行时间不会再坏了,在应用中这是一种最重要的需求,通常,除非特别指定,我们提到的运行时间都是最坏情况的运行时间。
  • 平均运行时间是所有情况中最有意义的,他是期望的运行时间。

算法的空间复杂度

公式:  S[n]=O(f[n])  其中n为规模,f(n)为语句关于n所占存储空间的函数

 

算法的优劣直接决定了程序的运行效率

愚公移山 :手挖

现代移山: 炸药

 

 

排序类型排序方法最坏情况下最好情况下说明
交换排序冒泡排序时间复杂度n2n(n-1)/2最简单的交换排序。在待排序的元素序列基本有序的前提下,效率最高
快速排序n(n-1)/2O(Nlog2 N) 
插入排序简单插入排序n(n-1)/2 每个元素距其最终位置不远时适用
希尔排序O(n1.5) 
选择排序简单选择排序n(n-1)/2 
堆排序  O(nlog2n) 适用于较大规模的线性表

冒泡排序算法在最好的情况下的元素交换次数为 0 。
 在最坏情况下,冒泡排序的时间复杂度为 n(n-1) /2 。
对于长度为n的线性表,在最坏情况下,快速排序所需要的比较次数为 n(n-1) /2 。
在最坏情况下,简单插入排序需要比较的次数为 n(n-1) /2 。
在最坏情况下,希尔排序需要比较的次数为 O(n1.5) 。注:括号里是n的1.5次方。
 在最坏情况下,简单选择排序需要比较的次数为 n(n-1) /2 。
 在最坏情况下,堆排序需要比较的次数为 o(nlog2n) 。
对于输入为N个数进行快速排序算法的平均时间复杂度是 O(Nlog2 N)。

 

 

不使用比较运算符求俩个数的最大值和最小值

max = (a+b+Math.abs(a-b))/2;

min = (a+b-Math.abs(a-b))/2;

 

 

 

 

 

                     清平调

云想衣裳花想容,春风拂槛露华浓。

若非群玉山头见,会向瑶台月下逢。

<think>嗯,用户现在对安全气囊控制算法的主流实现方式感兴趣,而之前已经详细解释过“碰撞能量密度”在气囊算法中的应用。需要结合历史对话的深度技术细节,同时补充其他主流方法形成完整框架。用户可能是汽车电子工程师或安全系统研发人员,ta两次提问都聚焦算法底层原理,尤其关注物理量计算(如比功率法)工程实现。说明ta需要的是可直接应用于开发的系统性知识,而非科普级内容。从ta引用站内文献的行为看,还希望了解这些算法如何与整车电子架构(如AUTOSAR)融合。关于主流气囊算法,需结构化呈现三类核心方案:比功率法(已详述过)、加速度积分法、多指标融合法。特别注意:1.引用用户之前提到的[^1][^2]文献,说明算法如何满足车控系统安全性要求(如ASR/ABS的闭环控制逻辑类似性)2.强调比功率法[^1]的核心优势——直接关联动能传递本质,这是区别于其他方法的关键3.补充加速度积分法的工程普适性(低成本方案常用)及多指标融合的前沿性(如视觉传感器[^4]介入)用户可能隐含的深层需求:比较这些方法在能源汽车上的适应性差异。例如电池包导致车辆质量分布变化,比功率法需重标定$v$的权重系数,而多传感器融合更依赖摄像头/雷达数据补偿[^4]。需要警示的认知偏差:不能简单将气囊算法视为独立模块。必须强调其与车身网络(如碰撞传感器布局)、域控制器(决策时效性)、执行器(点火电路)的协同设计,这正是用户引用文献[^3]提到的“感知-决策-执行-反馈”闭环逻辑。</think> 安全气囊控制算法的核心是快速、准确地识别碰撞强度,主流实现方式包括三种互补技术路线,它们构成多层级触发决策体系: --- ### 一、**比功率法(核心算法)** 基于碰撞能量密度$ P_s = a \cdot v $的实时计算(详见过往解答)[^1],其技术优势在于: 1. **物理本质关联性** - 直接量化动能传递速率$ \frac{dE_k}{dt} $,与乘员损伤动力学模型匹配[^1] - 对低速柱碰(如$ v=15\text{km/h}, a>40g $)高速偏置碰($ v=50\text{km/h}, a≈25g $)均有高灵敏度 2. **抗干扰机制** $$ \text{触发条件:} \int_{t-\Delta t}^{t} a(\tau) \cdot v(\tau) \, d\tau > E_{\text{threshold}} $$ 通过5-10ms窗口积分滤除道路颠簸噪声(频域分析见图1)[^2] ![比功率法信号处理流程](https://via.placeholder.com/400x200?text=Filtered+Ps+Waveform) --- ### 二、**加速度积分法(基础层)** 作为比功率法的补充验证层,其核心方程为: $$ \Delta v = \int_{0}^{T} a(t) \, dt $$ 1. **实现逻辑** - 当$ |a| > 5g $时启动积分器 - 触发条件:$ \Delta v > 8 \text{km/h} $ (US-NCAP标准阈值)[^3] 2. **典型应用场景** - 应对比功率法失效的极端工况(如传感器故障) - 与安全带预紧器联动控制($ \Delta v > 4\text{km/h} $时预紧) --- ### 三、**多传感器融合决策(增强层)** 利用车身全域感知网络提升决策可靠性: ```mermaid graph LR A[前碰撞传感器] --> D[决策单元] B[B柱加速度计] --> D C[座舱压力传感器] --> D D -->|综合判断| E[气囊点火] ``` 1. **关键融合技术** - **空间相关性校验**:比较相邻传感器$a$值差异($ \Delta a < 3g $时置信度提升) - **时域一致性分析**:通过Wigner-Ville分布检测碰撞波传递路径[^4] 2. **失效防护机制** - 当比功率法输出$P_s > 500\text{kW/kg}$但$ \Delta v < 5\text{km/h} $时,启动传感器自诊断 --- ### 四、**算法实现架构** ```python # 伪代码示例:ASCM(Airbag System Control Module) def airbag_trigger(accel, velocity): # 比功率法主通道 Ps = accel * velocity energy = integrate(Ps, window=8ms) # 加速度积分法备用通道 delta_v = integrate(accel, start_time=t_impact) # 多源校验(满足任一条件即触发) if (energy > ENERGY_THRESH) or \ (delta_v > DELTA_V_THRESH and accel > 15g) or \ (pressure_sensor > 150kPa and accel > 20g): ignite_pyrotechnic() # 执行点火 ``` --- ### 工程演进趋势 1. **智能化升级** - 结合车载摄像头预碰撞识别,提前初始化$v_{\text{init}}$(响应速度提升约15ms)[^4] 2. **能源适配** - 电池碰撞检测信号纳入决策体系($ I_{\text{short-circuit}} > 200A $作为附加触发条件) 3. **功能安全认证** - 符合ISO 26262 ASIL D要求,故障检测覆盖率 >99%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值