(NLP学习)(二)基础储备

本文介绍了NLP学习中的基础储备,包括算法复杂度分析,重点讲解了时间复杂度和空间复杂度,特别是递归问题的时间复杂度。此外,还涉及动态规划的概念,并提到了P, NP, NP Hard和NP Complete的问题类别。" 109363221,9566500,分布式事务解决方案详解与实战,"['分布式事务', '数据库事务', 'Seata', '微服务', 'ACID属性', 'CAP理论', '消息队列', '事务管理']
摘要由CSDN通过智能技术生成

基础储备

算法复杂度分析

算法复杂度可以分为时间复杂度和空间复杂度,这里我跳过一些比较基础的分析,基础可以参考:算法的时间复杂度和空间复杂度-总结

我们主要来分析递归式的复杂度。

时间复杂度

时间复杂度其实并不是表示一个程序解决问题具体需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。
引入一个解决递归问题时间复杂度的最常用的方法:主方法
在这里插入图片描述
总结一下过程就是:

  1. 确定a,b的值
  2. 求出 n l o g b a n^{log_{b} a} nlogba,与 f ( n ) f(n) f(n)比较,取数量级大的那个。如果相等,乘一个 l o g n log n logn

空间复杂度

以Fibonanci number为例子,分析空间复杂度。


def fib(n):
	if n<3:
		return 1
	return fib(n-2)+fib(n-1)

占用内存空间的两种情况:变量和函数。变量就不在赘述,函数主要占用内存空间是通过栈(stack),即函数压栈。
递归计算Fibonanci number时,函数不断入栈出栈,最多情况下只会用到n个栈空间,所以空间复杂度为 O ( n ) O(n) O(n).

参考:斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)

动态规划

可以参考我的另一篇博文:(算法理论)动态规划(python)

P and NP and NP Hard and NP Complete

定义如下:
P问题:
一个问题可以在多项式(O(n^k))的时间复杂度内解决。
NP问题:
一个问题的解可以在多项式的时间内被验证。NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题。
NP-hard问题:
任意NP问题都可以在多项式时间内归约为该问题,但该问题本身不一定是NP问题。归约的意思是为了解决问题A,先将问题A归约为另一个问题B,解决问题B同时也间接解决了问题A。
NPC(NP Complete)问题:
既是NP问题,也是NP-hard问题。

一篇文章特别不错:NP问题真的很难理解

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值