【基础】基础算法学习笔记(状态空间)

举报
小哈里 发表于 2022/05/11 01:02:50 2022/05/11
【摘要】 基础算法学习笔记(状态空间) 一、状态空间 1、定义(什么是状态空间):一个实际问题的各种可能情况构成的集合。(解释:为什么需要算法来和程序来处理问题?如果一道题可以手算得到答案,换句话说就是存在通过...

基础算法学习笔记(状态空间)

一、状态空间

1、定义(什么是状态空间):一个实际问题的各种可能情况构成的集合。(解释:为什么需要算法来和程序来处理问题?如果一道题可以手算得到答案,换句话说就是存在通过代入某个数学式子就直接得到答案的,那么这道题就不是一道算法题,或者他的解直接就是O(1)的。那算法和程序题还有什么意义呢。但是实际是现实生活中我们的很多问题都不是可以直接计算的,我们往往只能大致确定一个范围,然后在这个范围之中再去逐一排除不可行不够优的答案,得到最终答案。这些在逐一判断之前不能确定,都有可能成为答案的解构成的集合就是状态空间。)

2、与基础算法的关系:通过划分,归纳,提取,抽象来帮助提高程序遍历状态空间的效率。

  • 遍历方式(程序语法上的实现):递推(循环for),递归(函数)
  • 遍历顺序:模拟(问题的直接表述形式),枚举(大多都是线性的方式),搜索(形成一颗搜索树解答树,带有一定的选择性决策性)
  • 遍历过程中的决策方法:贪心(每步决策时采取局部最策略,当前意义下,局部约束条件下的最优解),DP(基于全局考量的分阶段,按维度,无重复的遍历)
  • 状态空间中各状态的映射方式:二分,倍增,排序。(划分,等价,代表)

3、状态空间的一些特点

  • 规模大小(时空复杂度)
    • 多项式,nk,k n k , k ,递推
    • 指数,kn,k k n , k ,递归|位运算
    • 排列,n! n ! ,递归|next_permutation
    • 组合,Cmn C n m ,递归+剪枝
  • 占坑待填

二、基础算法

1、分类:枚举,模拟,搜索,递推,递归,二分,倍增,贪心,DP等。
2、作为基础算法,简单易懂却又蕴含着巧妙而深刻的思想。
3、作为构建算法与数据结构体系的基本单位,贯穿整个程序设计竞赛的始末。
4、对于理解后面的复杂算法有着极大的帮助,也对创造新算法具有重要作用。

三、常说的暴力指的是

模拟,枚举,搜索。
(理论上讲所有算法都是暴力。)
(yql说,NOIP暴力能打到580分。)

文章来源: gwj1314.blog.csdn.net,作者:小哈里,版权归原作者所有,如需转载,请联系作者。

原文链接:gwj1314.blog.csdn.net/article/details/81161624

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。