C++数据结构学习笔记(一)

本文探讨了计算科学与计算机科学的关系,强调计算的本质是信息处理,并通过实例展示了算法的正确性和成本评估方法。同时介绍了图灵机模型及其应用。

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

计算机科学 = 计算科学?

计算机只是工具,计算才是最终的目的。(即如何有效和高效的计算) by  Dijkstra


 计算 = 信息处理

借助某种工具,遵循一定的规则,以明确而机械的形式进行


计算模型 = 计算机 = 信息处理工具


实例1

Hailstone(n) 序列具有以下性质

{1}  n<=1

{n}U Hailstones(n/2)  n偶

{n}U Hailstone(3n+1) n奇 

我们来计算Hailstione这个序列的长度

int Hailstone(int n)
{
	int length = 1;
	while(1<n)
	{
		(n%2)? n=3*n:n/=2;
		length++;
	}
	return length;
}


DSA : 数据结构和算法


DSA分析:

正确性:算法功能与要求一致?

成本:运行时间+所需存储空间


TA(P)=算法A求解问题实例P的计算成本 

因为实例过多,因此需要归纳概括

划分等价类:问题实例的规模,往往是决定计算成本的主要因素


TA(n)=用算法求解某一问题规模为n的实例,所需要的计算成本

讨论特定算法A,计作T(n)


T(n) = max{T(p)| |p| = n}

在规模同为n的所有实例中,只关注成本最高者


图灵机模型

TM:Turing Machine

Tape(带) 一次均匀划分为单元格,各注有某一字符,默认为‘#’

Alphabet(字符表) 字符有限

Head(读写头) 总是对准某一单元格,并可读取和改写其中的字符,每经过一个节拍,可转向左侧或右侧的邻格

State TM总是处于有限状态中的某一种,每经过一个节拍,可(根据规则)转向另一种状态

Transition Function : (q,c;d,L/R,p) 若当前状态q且当前字符为c,则将当前字符改写成d;转向左侧/右侧的邻格;转入p状态,一旦转入特定的状态‘h’,则停机


实例2

使用图灵机将二进制非负整数+1

 算法:

全‘1’的后缀反转为全‘0’

原最低位的‘0’或‘#’反转为‘1’


# # x x x 0 1 1 1 1 # #  

# # x x x 0 0 0 0 0 # # 

# # x x x 1 0 0 0 0 # #


(<,1,0,L,<) //左行,1->0

(<,0,1,R,>) //掉头,0->1

(<,#,1,R,>)//进位

(>,0,0,R,>)//右行

(>,#,#,L,h)//复位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值