【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )

简介: 【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )

文章目录

一、时间复杂度时间单位

二、算法分析

三、算法复杂性分析





一、时间复杂度时间单位


图灵机计算时间 是根据 步数 进行定义的 , 图灵机走 1 11 步 , 时间加一 ,


每一步的时间可能不一致 , 有些步需要花费少量时间 , 有些步需要花费大量时间 ,


在计算理论中 , 只讨论步数 , 不讨论具体精确的时间 ;



f ( n ) \rm f(n)f(n) 是长度为 n \rm nn 的字符串 , 输入到图灵机中进行计算时 , 所需要的 步数的最大值 ;


步数的最大值就是最坏情况下走的最多的步数 ;






二、算法分析


给定语言 : A = { 0 k 1 k : k ≥ 0 } \rm A = \{ 0^k1^k : k \geq 0 \}A={0

k

1

k

:k≥0}



构造图灵机 M 1 \rm M_1M

1


 认识上述语言 : 设计过程如下 :


在图灵机带子上放入 0 k 1 k 0^k1^k0

k

1

k

 字符 , 如 000111 000111000111 , 如何识别该字符串 , 一定在 A \rm AA 语言中 ,


首先检查 01 0101 的相对顺序 , 0 00 一定要出现在 1 11 的前面 , 如果顺序紊乱就进入拒绝状态 , 如果顺序正确 , 继续向下执行 ;


每遇到一个 0 00 就划掉一个 1 11 , 如果最后发现都没有剩余 , 那么该图灵机进入接受状态 , 否则进入拒绝状态 ;



M 1 \rm M_1M

1


 图灵机算法设计如下 : 算法的描述是双引号 “” 中的内容 , 这是操作意义上的图灵机 , 只描述图灵机读头操作 , 没有必要将图灵机指令整体设计出来 ;


M 1 = \rm M_1 =M

1


= "在长度为 n \rm nn 的字符串 w \rm ww 上进行如下计算 :


① 扫描整个带子上的字符串 , 查看 0 00 和 1 11 的顺序 , 所有的 0 00 必须在所有的 1 11 前面 ; 如果顺序错误 , 进入拒绝状态 ;


② 扫描整个带子 , 遇到一个 0 00 , 就划掉一个 1 11 ; 如果带子上存在 0 00 和 1 11 , 该操作重复进行 ;


③ 如果最后只剩下 0 00 或只剩下 1 11 , 说明 两个数字的个数不等 , 进入拒绝状态 ; 如果最后带子上只剩下空白字符 , 说明两个数字个数相等 , 进入接受状态 ; "






三、算法复杂性分析


现在讨论上述算法的复杂性 , 假设给定字符串长度为 n \rm nn , 那么讨论在最坏的情况下 , 所花费的时间最大值 ;


最坏的情况就是在每个步骤中 , 都达到计算的最大值 , 最坏的情况就是 0 00 的个数与 1 11 的个数一样多 , 都是 n 2 \rm \cfrac{n}{2}

2

n


 个 , 并且 0 00 在前面 , 1 11 在后面 , 这是计算步数最多的情况 ;



如 : 第一步如果 1 11 就出现在第一个 , 执行 1 11 步就进入了拒绝状态 , 此时肯定是最少的执行步数 ;


目录
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
63 4
|
2月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
68 6
|
2月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
63 0
|
2月前
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
2月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
32 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
2月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
67 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
41 0