Sparse A*算法的时间复杂度

Sparse A*(SAS)算法是A*算法的变型算法,下面将结合A*算法的流程分析SAS的时间复杂度。对于SAS算法而言,其航迹规划的时间 T T T主要由两部分组成:

  • T s T_s Ts:在当前结点扩展可行子结点的时间;

  • T 0 T_0 T0:将产生的子节点插入到合适位置的时间。

    对于时间 T s T_s Ts而言,如下图所示,对该搜索区域构成的近似四棱锥体按纵向等距划分 M M M个扇区,按横向等距划分 S S S个扇区。

    在这里插入图片描述

​ 若每个扇区的结点搜索时间为 Δ T s \Delta T_s ΔTs,假设搜索到最优航迹需要扩展 N N N个结点,那么扩展完 N N N个结点的时间为:
T s = M × S × Δ T s × N T_s=M\times S\times \Delta T_s \times N Ts=M×S×ΔTs×N
​ 对于结点 T 0 T_0 T0而言,其插入时间主要包含两部分,一部分是在 O P E N OPEN OPEN表和 C L O S E D CLOSED CLOSED表中搜索是否存在相同节点的时间 T 1 T_1 T1,另一部分是将子节点按代价大小插入 O P E N OPEN OPEN表中合适位置的时间 T 2 T_2 T2

​ 下面假设 O P E N OPEN OPEN表和 C L O S E D CLOSED CLOSED表的存储结构都是列表。

​ 对于 T 1 T_1 T1而言,在扩展第 i i i个结点时,可以得到当前 C L O S E D CLOSED CLOSED表中有 i i i个结点,而 O P E N OPEN OPEN表中则有 ( M × S ) × i − i + 1 (M\times S)\times i -i + 1 (M×S)×ii+1个结点。

​ 在最坏的时间情况下对于一个结点而言,先搜索 O P E N OPEN OPEN表再搜索 C L O S E D CLOSED CLOSED表,则总共搜索 ( M × S ) × i + 1 (M\times S)\times i + 1 (M×S)×i+1个结点。而对于其 M × S M\times S M×S个结点而言,其平均比较的次数 n 1 n_1 n1为:
n 1 = ( M × S ) × { [ ( M × S ) × i + 1 ] + 1 } / 2 n_1=(M\times S)\times\{[(M\times S)\times i+1]+1\}/2 n1=(M×S)×{[(M×S)×i+1]+1}/2
​ 对于 T 2 T_2 T2而言,在最坏的时间情况下对于一个结点而言,单个子结点插入 O P E N OPEN OPEN表的次数为 ( M × S ) × i − i + 1 (M\times S) \times i - i + 1 (M×S)×ii+1。而对于其 M × S M\times S M×S个结点而言,其平均比较的次数 n 2 n_2 n2为:
n 2 = ( M × S ) × { [ ( M × S ) × i − i + 1 ] + 1 } / 2 n_2=(M\times S) \times \{[(M\times S)\times i - i +1] + 1\}/2 n2=(M×S)×{[(M×S)×ii+1]+1}/2
​ 那么扩展 M × S M\times S M×S个结点的总次数 n ( i ) n( i) n(i)为:
n ( i ) = n 1 + n 2 = ( M S ) 2 i + M S ( 2 − i 2 ) n(i)=n_1+n_2=(MS)^2i+MS(2-\frac{i}{2}) n(i)=n1+n2=(MS)2i+MS(22i)
​ 对于所有的扩展的 N N N个结点而言,可以得到累计的结点计算时间 T 0 T_0 T0
T 0 = ∑ i = 0 N n ( i ) Δ T 0 = [ ( M S ) 2 2 N ( N + 1 ) + M S ( 2 − N 4 ) ( N + 1 ) ] Δ T 0 T_0=\sum_{i=0}^N n(i)\Delta T_0\\=[\frac{(MS)^2}{2}N(N+1)+MS(2-\frac{N}{4})(N+1)]\Delta T_0 T0=i=0Nn(i)ΔT0=[2(MS)2N(N+1)+MS(24N)(N+1)]ΔT0
​ 在上面的情况下,设SAS算法扩展的最小步长为 L min ⁡ L_{\min} Lmin,最小分辨率为 h min ⁡ h_{\min} hmin。下面分析扩展的结点个数 N N N,假设从起点到终点的最优航迹上的点有 l l l个,最理想的情况应当是每次都能得到最优结点,最不理想的情况是每次都得到最坏的结点,这样需要的结点数目约为 min ⁡ { [ X max ⁡ Y max ⁡ Z max ⁡ h min ⁡ 3 ] , ( M S ) l } \min\{[\frac{X_{\max}Y_{\max}Z_{\max}}{h_{\min}^3}],(MS)^l\} min{[hmin3XmaxYmaxZmax],(MS)l},而实际上在时间的探索过程中,当最优航迹上的结点数目 l l l足够大时有 [ X max ⁡ Y max ⁡ Z max ⁡ h min ⁡ 3 ] < < ( M S ) l [\frac{X_{\max}Y_{\max}Z_{\max}}{h_{\min}^3}]<<(MS)^l [hmin3XmaxYmaxZmax]<<(MS)l。在 [ X max ⁡ Y max ⁡ Z max ⁡ h min ⁡ 3 ] [\frac{X_{\max}Y_{\max}Z_{\max}}{h_{\min}^3}] [hmin3XmaxYmaxZmax]个结点的基础上,SAS算法总共每隔 L min ⁡ L_{\min} Lmin的距离最少扩展 L min ⁡ 3 h min ⁡ \frac{L_{\min}}{\sqrt{3}h_{\min}} 3 hminLmin个结点,那么在不考虑结点重复扩展的情况下,每隔 L min ⁡ L_{\min} Lmin的距离 O P E N OPEN OPEN表和 C L O S E D CLOSED CLOSED表中累计扩展的结点数 N N N可以计算为:
N = [ X max ⁡ Y max ⁡ Z max ⁡ h min ⁡ 3 ] / ( L min ⁡ 3 h min ⁡ ) = [ 3 X max ⁡ Y max ⁡ Z max ⁡ h min ⁡ 2 L min ⁡ ] N=[\frac{X_{\max}Y_{\max}Z_{\max}}{h_{\min}^3}]/(\frac{L_{\min}}{\sqrt{3}h_{\min}})\\=[\frac{\sqrt{3}X_{\max}Y_{\max}Z_{\max}}{h_{\min}^2L_{\min}}] N=[hmin3XmaxYmaxZmax]/(3 hminLmin)=[hmin2Lmin3 XmaxYmaxZmax]
在此条件下,可以得到 T s T_s Ts的时间复杂度为 O ( M S N ) O(MSN) O(MSN) T 0 T_0 T0的时间复杂度为 O ( ( M 2 S 2 2 − M S 4 ) N 2 ) O((\frac{M^2S^2}{2}-\frac{MS}{4})N^2) O((2M2S24MS)N2)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt QPainter的使用方法

重点&#xff1a; 1.QPainter在QWidget窗口的paintEvent中使用。 2.QPainter通常涉及到设置画笔、设置画刷、绘图&#xff08;QPen、QBrush、drawxx&#xff09;三个流程。 class Widget : public QWidget {Q_OBJECTprotected:void paintEvent(QPaintEvent *event) Q_DEC…

基于51单片机的四位并行数据主从机传输设计

基于51单片机的四位并行数据主从机传输设计[proteus仿真] 主从机通信系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的四位并行数据主从机传输设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文…

机器学习---数据分割

之前的文章中写过&#xff0c;我们可以通过实验测试来对学习器的泛化误差进行评估并进而做出选择。 为此&#xff0c;需使用一个“测试集"(testing set)来测试学习器对新样本的判别能力&#xff0c;然后以测试集上的“测 试误差”(testing error)作为泛化误差的近似。通…

操作系统系列学习——内核级线程实现

文章目录 前言内核级线程实现 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【哈工…

Linux第71步_将linux中的多个文件编译成一个驱动模块

学习目的&#xff1a;采用旧字符设备测试linux系统点灯&#xff0c;进一步熟悉其设计原理。采用多文件参与编译&#xff0c;深度学习编写Makefile&#xff0c;有利于实现驱动模块化设计。 1、创建MyOldLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home…

softmax和sigmoid的区别

sigmoid 公式&#xff1a; s i g m o i d ( x ) 1 1 e − x sigmoid(x) \frac{1}{1 e^{-x}} sigmoid(x)1e−x1​ 函数曲线如下&#xff1a; 导数公式&#xff1a; f ( x ) ′ e − x ( 1 e − x ) 2 f ( x ) ( 1 − f ( x ) ) f(x)\prime \frac{ e^{-x}}{(1 e^{-x})…

备战蓝桥杯————二分搜索(一)

引言 一、二分查找 基本概念 代码框架 二、二分查找 题目描述 解题思路及代码 结果展示 三、寻找左侧边界的二分搜索 使用背景 基本代码 引言 在计算机科学的世界里&#xff0c;二分查找算法无疑是一种经典且强大的工具。它以其高效的性能&#xff0c;在有序数据集中…

95、评估使用多线程优化带来的性能提升

本节评估一下&#xff0c;通过对卷积的 co 维度进行多线程切分之后&#xff0c;对于模型的性能提升。 评估下性能 在进行多线程程序运行时&#xff0c;建议电脑中的 CPU 不要有其他繁重的任务执行。 在相同的环境下&#xff0c;分别运行 5th_codegen 和 6th_multi_thread 下的…

Pytorch 复习总结 6

Pytorch 复习总结&#xff0c;仅供笔者使用&#xff0c;参考教材&#xff1a; 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为&#xff1a;Pytorch 计算机视觉。 本文先介绍了计算机视觉中两种常见的改进模型泛化性能的方法&#xff1a…

香港投资+移民计划高峰论坛圆满落幕洞察趋势,探索未来财富之路

3月4日&#xff0c;由中国香港太阳联合资本有限公司牵头举办的「香港投资移民计划高峰论坛」在港交所圆满结束。吸引超260位高净值人士参加&#xff0c;已收到近600个投资移民意向。此次论坛汇聚了来自世界各地的投资移民专家、企业家、以及潜在投资者&#xff0c;共同探讨香港…

网络编程(3/4)

广播 ​ #include<myhead.h>int main(int argc, const char *argv[]) {//1、创建套接字int sfd socket(AF_INET, SOCK_DGRAM, 0);if(sfd -1){perror("socket error");return -1;}//2、将套接字设置成允许广播int broadcast 1;if(setsockopt(sfd, SOL_SOC…

docker部署前后端分离项目

docker部署前后端分离项目 前提&#xff0c;服务器环境是docker环境&#xff0c;如果服务器没有安装docker&#xff0c;可以先安装docker环境。 各个环境安装docker&#xff1a; Ubuntu上安装Docker&#xff1a; ubuntu离线安装docker: CentOS7离线安装Docker&#xff1a; Cen…

如何给Vue项目配置好一个nginx.conf文件?

如何给Vue项目配置好一个nginx.conf文件&#xff1f; 一般前端项目中&#xff0c;会有一个docker/nginx/nginx.conf文件&#xff0c;用于配置DockerFile配置等。 那么&#xff0c;如何给项目写好一个nginx.conf文件&#xff0c;以DockerFile为例&#xff1a; # 使用 Node.js …

【LeetCode】并查集OJ

目录 1.省份数量 2. 等式方程的可满足性 1.省份数量 题目地址&#xff1a; 547. 省份数量 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a;对于该题我们直接使用并查集&#xff0c;将可以直接的城市都归类一个集合&#xff0c;最后统计数组中集合的总数就是…

Qt入门(一)Qt概述

Qt是什么&#xff1f; Qt是一个跨平台应用开发框架。 Qt既包括了一系列的Qt库&#xff0c;还包括诸多配套的开发工具如QtCreater&#xff0c;GUI Designer。Qt本身是由C开发的&#xff0c;但是也提供了其他编程语言的接口。 Qt的定位以及同类 学一种技术&#xff0c;最重要的是…

WordPress建站入门教程:忘记数据库名称、用户名和密码了怎么办?

有时候我们需要进入phpMyAdmin管理一些数据库&#xff0c;但是登录phpMyAdmin时却需要我们输入数据库的用户名和密码&#xff0c;但是我们不记得了应该怎么办呢&#xff1f; 其实&#xff0c;我们只需要进入WordPress网站根目录找到并打开wp-config.php文件&#xff0c;就可以…

FPGA- RGB_TFT显示屏原理及驱动逻辑

下图是TFT显示屏的显示效果 该显示屏共分为 2 个版本&#xff0c;4.3 寸版本的 TFT4.3’’_V3.0 和 5.0 寸版本的 TFT5.0’’_V3.0。 两者 PCB 背板电路完全相同&#xff0c;接口脚位定义完全相同&#xff0c;接口时序完全相同&#xff0c;仅使用的显示屏 模组尺寸不同。设计两…

多线程相关面试题(2024大厂高频面试题系列)

1、聊一下并行和并发有什么区别&#xff1f; 并发是同一时间应对多件事情的能力&#xff0c;多个线程轮流使用一个或多个CPU 并行是同一时间动手做多件事情的能力&#xff0c;4核CPU同时执行4个线程 2、说一下线程和进程的区别&#xff1f; 进程是正在运行程序的实例&#xff…

【Linux】常见指令1(ls指令、pwd指令、cd指令、touch指令、mkdir指令、rmdir指令、man指令、cp指令、mv指令、cat指令)

目录 01.ls指令与ll指令 02.pwd指令 03.cd指令 04.touch指令 05.mkdir指令 06.rmdir指令&&rm指令 07.man指令 08.cp指令 09.mv指令 10.cat指令 01.ls指令与ll指令 ls指令&#xff1a; 原型&#xff1a;list directory contents 语法&#xff1a;ls[选项][目录…

于建筑外窗遮阳系数测试的太阳光模拟器模拟太阳光照射房屋视频

太阳光模拟器是一种用于测试建筑外窗遮阳系数的高科技设备。它能够模拟太阳光照射房屋的情景&#xff0c;帮助建筑师和设计师更好地了解建筑外窗的遮阳性能&#xff0c;从而提高建筑的能源效率和舒适度。 这种模拟器的工作原理非常简单&#xff0c;它通过使用高亮度的光源和精密…