
基础知识 延伸-计算理论:P和NP问题
一、P 和 NP 问题 二、NPC 和 NP-hard 问题 三、总结 在计算机科学中,有一个专门的分支研究问题的可计算性,叫做计算理论。 我们用计算机算法来解决一个问题,如果一个问题被证明很难计算,或者只能暴力枚举来解决,那么我们就不必花...
一、P 和 NP 问题 二、NPC 和 NP-hard 问题 三、总结 在计算机科学中,有一个专门的分支研究问题的可计算性,叫做计算理论。 我们用计算机算法来解决一个问题,如果一个问题被证明很难计算,或者只能暴力枚举来解决,那么我们就不必花...
一、复杂度主方法 二、举例 有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来。 一、复杂度主方法 主方法,也可以叫主定理。对于那些用分治法,有递推关系式的算法,可以很快...
一、算法复杂度 二、算法规模 三、渐进符号 3.1. 渐进符号:Θ 3.2. 渐进符号:O 3.3. 渐进符号:Ω 3.4. 渐进分析 四、总结 一、算法复杂度 首先每个程序运行过程中,都要占用一定的计算机资源,比如内存,磁盘等,这些是空间...
基础知识 学习数据结构和算法。我们要知道一些基础的知识。 一、什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等。在计算机科技里,它表示什么呢? 计算机,顾名思义是用来计算的机器。...
一、递归 二、例子:斐波那契数列 三、例子:二分查找 在计算机科学中,分治法是一种很重要的算法。 字面上的解释是分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题。 直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合...
一、并发介绍 二. 协程和 go 关键字 三、信道 chan 四、锁实现并发安全 Golang 语言提供了 go 关键字,以及名为 chan 的数据类型,以及一些标准库的并发锁等,我们将会简单介绍一下并发的一些概念,然后学习这些 Golan...
[TOC]## 一、避免重复造轮子 官方提供了很多库给我们用,是封装好的轮子,比如包 fmt,我们多次使用它来打印数据。 我们可以查看到其里面的实现: package fmt func Println(a ...interface{}) (...
一、值,指针和引用 二、结构体 三、方法 三、关键字 new 和 make 四、内置语法和函数,方法的区别 一、值,指针和引用 我们现在有一段程序: package main import "fmt" func main() { // a,...
一、数据类型 interface{} 1.1.基本使用 1.2.判断具体类型 二. 接口结构 interface 在 Golang 世界中,有一种叫 interface 的东西,很是神奇。 一、数据类型 interface{} 如果你事前并...
一、条件语句 二、循环语句 计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次。主要有条件和循环语句。 Golang 只有一种循环:for,只有一种判断:if,还有一种特殊的 switch 条件选择语句。 一、条件...