cs335计算理论(一)
写在前面真的痛苦而且这部分内容对于大二的学生过于晦涩难懂了,而大三大四乃至研究生学生也不至于看这篇博客所以这一篇文章更适合那些同在MIEC受苦,且本质快速阅览的学生如果要一步一步学,建议去观看油管或者B站计算理论的相关视频
正文CS335 lecture1OutlineAutomata and Language TheoryComputability TheoryComplexity TheoryBook: ntroduction to the Theory of Computation,Sipser, 3rd Edition US本课程是关于计算理论的,它试图回答以下问题1.计算机硬件和软件的数学属性是什么?2.什么是计算,什么是算法?我们能对这些概念给出严格的数学定义吗?3.计算机的局限性是什么?“一切”都可以计算吗?(这个问题的答案是“不”)
是否可解决若可以,设计一个算法/模型来解决选择的方法的复杂度(时间、内存等)怎样
AIM: 开发反映现实世界计算机的计算的正式数学模型
理论知识预备Set集合
Set是一个单位所代表的对象的集合
1.集合中的对象 Object ...
cs335计算理论(三)
写在前面真的痛苦而且这部分内容对于大二的学生过于晦涩难懂了,而大三大四乃至研究生学生也不至于看这篇博客所以这一篇文章更适合那些同在MIEC受苦,且本质快速阅览的学生如果要一步一步学,建议去观看油管或者B站计算理论的相关视频
正文Lecture6-7 可归纳性 ReducibilityThe Reducibility Method
如果我们知道某个问题(比如 TM)是不可判定的,我们可以用它来证明其他问题是不可判定的If we know that some problem (say TM) is undecidable, we can use that to show other problems are undecidable
被称为可归约性的方法,可以被用来证明“某个问题在计算上是不可解的”这一问题归约旨在将一个问题转换为另外一个问题,并且使得可以用第二个问题解决第一个问题
停机问题$A_TM$是不可判定的,即确定一个图灵机是否接受一个给定的输入问题是不可判定的。下面我们考虑一个与之相关的问题:$HALT_TM$,即确定一个图灵机对给定的输入是否停机(通过接受或拒绝) ...
cs335计算理论(二)
写在前面真的痛苦而且这部分内容对于大二的学生过于晦涩难懂了,而大三大四乃至研究生学生也不至于看这篇博客所以这一篇文章更适合那些同在MIEC受苦,且本质快速阅览的学生如果要一步一步学,建议去观看油管或者B站计算理论的相关视频
正文Lecture3上下文无关语法 Context Free Grammars(CFGs)上下文无关法是一种更强大的描述语言的方法这种语法可以描述具有递归结果的某种特征,使得它们在各种应用中都很有用
一个CFG拥有1.替换规则substitution rule的集合,也被称作产生式 Productions.每个规则在语法中显示为一行,包括一个符号和一个用箭头分割的字符串2.上述的“符号”,我们把它称作变元 variable3.字符串由变量和其它被叫做“终结符 terminals” 的符号组成
比如有语法G0:A → 0A1A → BB → #其中,它的变元就是A和B,这里A就是起始变元 start variable它的终结符是0,1,和#
它可以对左边进行缩写,即:A → 0A1 | BB → #
语法生成字符串1.写下起始变元2.根据规则来替换变元,重 ...
如何修改hexo主题
简介本文以butterFly主题的安装与自定义为例子,介绍如何修改应用hexo主题照例先挂作者:gitHub仓库:A Hexo Theme: Butterfly作者的博客(详细的自定义可以在里面找到):https://butterfly.js.org/
本人在这里只主要介绍了几个常用的设置,想要更详细的说明可以去看Butterfly作者的博客教程(就是上面那个)
顺带一提作者的默认语言是繁体中文,在右下角可以切换为简体
如何修改hexo主题首先找到你喜欢的主题,然后下载下来。一般这一步利用gitHub完成
个人建议是下载到原本hexo目录下的themes文件夹下,方便管理和调取
之后打开hexo目录下的_config注意,是hexo目录下的_config,因为主题中也会有一个下拉,一般是倒二配置,可以看见
1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme: butterfly
更改theme: 后为你想要使用的主题,这样就OK了
配置基 ...
快速入门Kotlin(1)
写在最前面这系列文章是总结《第一行代码》中对Kotlin的介绍而写下的,是自己的总结和经验分享适合有过Java使用经验,或者有面向对象编程经验的读者速成Kotlin如果您是完全的0基础,可能阅读上会有一些困难
分号kotlin中是不需要在结尾加分号的
变量只能使用val 和 var 作为变量val:不可变的变量var:可变的变量
显示声明我们可以显式声明变量,直接告诉kt我们生成的变量的类型
1val a:Int = 10
指定了不可变变量a的类型是int
对象数据类型在Kotlin中,原本Java的基本数据类型都变成了数据对象类型,拥有自己的方法和继承结构,对应下来为:Int Long Short Float Double Boolean Char Byte
函数定义函数比方说
123fun methodName(param1:Int , param2:Int):Int { return 0 }
methodName就是方法名,没什么好说的括号内的是参数列表,每个的格式是“参数名字:类型”,多个之间使用 , 分开冒号后面是返回类 ...
AndroidStudio下的Project布局介绍
文件布局小记以AndroidStudio下的Project布局为准
布局大布局**app:**记录的项目中的代码、资源等内容**gradle:**包含了gradle-wrapper的配置文件。AS默认就是使用gradle wrapper方式如果想要使用离线模式,可以在File-Settings-Build,Execution,Deployment-Gradle下进行更改**gitignore:**排除于版本控制之外的文件(目录)
其余基本上是不会用到的,自动生成的文件
app**libs:**存放第三方jar包的位置。如果项目用到了某些第三方的jar包,就需要把这些jar包放在libs目录下。该目录之下的jar包会被自动添加到项目的构建路径当中去**java:**放代码的地方,无论是Java还是Kt都会存放在这里**res:**存放资源的地方,图片、布局、字符串等资源都在这里**AndroidManifest.xml:**整个Android项目的配置文件
其余基本上是不会用到的,自动生成的文件
res资源目录**drawable:**存放图片资源**mipma ...
快速入门Kotlin(2)
继承Kotlin的类默认是不能继承的,需要添加open关键字才可以继承
123open classs Person(){ ...}
而在继承的时候则通过:XXX()来继承,比如:
123class Student:Person(){ ...}
构造函数kotlin有主构造函数和次构造函数的区别
主构造函数体主构造函数是没有函数体的,直接在类名之后定义,如:
123class Student(val sno:String , val grade:Int){ ...}
如你想指定在构造时的额外逻辑,使用init
12345class Student(val sno:String , val grade:Int){ init{ println("OK") }}
遵循Java的规定:子类构造函数必须调用父类构造函数,因此我们在继承的时候写的是 :XXX()
值得注意的是,当我们继承的父类有有参构造的时候, ...
快速入门Kotlin(3)
这篇还没写完哦QAQ
Lambda编程集合的创建和遍历listOf()listOf()是一个方便的,直接创建List的方法,但是创建出来的List是不可变集合 val list = listOf("Apple","Banana","Orange","Pear")
mutableListOf()创建可变集合,之后可以利用list.add()来加入
SET对于Set而言是同理的,分别是setOf()和mutableSetOf()
这里顺带提醒了:Set是不会存放重复元素的
Map在kotlin中,我们可以使用传统的写法
123val map = HashMap<String , Int>()map.put("A",1)map.put("B",2)
这是接近Java的写法,而kotlin实际上并不推荐你使用put()和get(),它更倾向于让你使用类似下标的写法:
12map["A"] = 1val number ...
利用GithubPage配置博客
简介本文将介绍如何使用githubPage+hexo来配置属于你自己的个人博客本文参考了该教程 使用hexo+github搭建免费个人博客详细教程 并加以概述和总结此外,在阅读过程中如遇到困难,您也可以参考:GitHubPage的官方的介绍: https://docs.github.com/en/pages/getting-started-with-github-pagesHEXO: https://hexo.io/
配置在开始进行操作之前,请确保你拥有:windows8.1及其以上node.js@5.5.0及其以上git@1.9.2及其以上
相关知识:不需要任何相关知识,不过了解git以及github使用,node.js以及npm会方便您的阅读体验
前期准备首先进行一个node.js和npm的装点击这里下载node.js一般而言,安装node.js的时候就会帮你把 ...
postName
以下是正文