计算理论

NP完全性理论与近似算法

本小妞迷上赌 提交于 2020-01-23 07:19:46
一、图灵机 根据有限状态控制器的当前状态及每个读写头读到的带符号,图灵机的一个计算步可实现下面3个操作之一或全部。 (1)改变有限状态控制器中的状态。 (2)清除当前读写头下的方格中原有带符号并写上新的带符号。 (3)独立地将任何一个或所有读写头,向左移动一个方格(L)或向右移动一个方格(R)或停在当前单元不动(S)。 k带图灵机可形式化地描述为一个7元组(Q,T,I,δ,b,q0,qf),其中: (1) Q是有限个状态的集合。 (2)T是有限个带符号的集合。 (3)I是输入符号的集合 。 (4)b是唯一的空白符,b∈T-I。 (5)q0是初始状态。 (6)qf是终止(或接受)状态。 (7)δ是移动函数。 它是从Q×Tk的某一子集映射到Q×(T×{L,R,S})k的函数。 图灵机M的时间复杂性T(n)是它处理所有长度为n的输入所需的最大计算步数。如果对某个长度为n的输入,图灵机不停机,T(n)对这个n值无定义。 图灵机的空间复杂性S(n)是它处理所有长度为n的输入时,在k条带上所使用过的方格数的总和。如果某个读写头无限地向右移动而不停机,S(n)也无定义。 确定型图灵机 有限状态集Q,状态q0:初始状态;qy:接受状态;状态qn:不接受状态。 字符集合{0, 1, b} ;其中b是空格符。 转换功能: 输入x = 101000b 执行顺序: q0输入1 (q0,r)右移磁头到0

程序语言编年史

喜欢而已 提交于 2019-12-11 16:18:48
程序语言编年史 概述 这次咱们聊下程序语言的发展史,除了程序语言,还会着重讲下程序语言密切相关的计算机的发展史,顺带讲下同时期与程序语言和计算机相关领域的发展,为什么要把程序语言和计算机相关领域放到一块讲, 因为这些领域和计算机的关系太密切了, 程序语言是 程序员 和计算机沟通交流唯一方式, 计算机的计算模型的发展, 还有计算机的应用领域的发展都对程序语言有着深刻的影响. 通过计算机相关领域的发展, 我们能从中可以找到一些影响程序语言关键因素, 看看 这些因素是如何推动程序语言一步步发展成今天这个样子的. 计算机发展史 计算机的发展可以分为两条线进行追溯, 一条是计算理论的发展, 一条是计算机实体的发展, 下面我们看看计算理论和计算机的发展轨迹. 理论模型的演变 计算理论是近现代才出现的一个数学分支,主要研究可计算性,计算的复杂度,计算模型(计算理论中两大计算模型:图灵机,lambda演算),形式语言(编程语言也是一种形式语言).我们可以看到计算理论主要研究的对象的名字中有三个带了 计算 ; 计算 这个词很常见,好像和这些词汇所表达的意思挺相近:四则运算,数值计算,逻辑运算.本节就以 计算 为主线介绍下计算是什么,以及其演变历史,还有它和计算理论的关系. 史前数学:数值计算 公元前2500年,在美索不达米亚的一块泥板上记录着谷仓里面有1152000,每个人分7分,可以分给多少人

理解图灵机模型、计算机科学概念内涵,懂得存储程序及计算机的结构

感情迁移 提交于 2019-12-05 11:12:46
首先,图灵机模型是由英国数学家图灵提出的,图灵机模型理论是计算学科最核心的理论之一,它的出现为计算机设计指明了方向,在今天的学习中图灵机模型发挥着不可或缺的用处,是我们算法分析和程序语言设计的基础理论。下面是它的定义: 所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。 然后,计算机科学概念的内涵较为广泛,计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,可以肯定的是它是一门学科,而不仅仅是一门技术或者是一种工具。计算机科学的基本思路涵盖从理论研究、模型抽象到工程设计三个方面。有时公众会误以为计算机科学就是解决计算机问题的事业(比如信息技术),或者只是与使用计算机的经验有关,如玩游戏、上网或者文字处理。其实计算机科学所关注的,不仅仅是去理解实现类似游戏、浏览器这些软件的程序的性质,更要通过现有的知识创造新的程序或者改进已有的程序,这才是我们计算机科学应该做的事情。 下面是计算机中储存程序的原理: “存储程序”原理,是将根据特定问题编写的程序存放在计算机存储器中

图灵机与计算理论

匿名 (未验证) 提交于 2019-12-03 00:30:01
图灵机和计算理论是人工智能乃至整个计算机科学的理论基础,邱奇-图灵论题告诉我们一切可计算过程都可以用图灵机模拟。 图灵机,又称图灵计算、图灵计算机,是由数学家艾伦・麦席森・图灵(1912~1954)提出的一种抽象计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算。 图灵机指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。 每一个会决策、会思考的人都可以被抽象地看成一台图灵机。该模型主要有四要素:输入集合、输出集合、内部状态和固定的程序。如果把人进行抽象,那么输入集合就是所处环境中所看到、听到、闻到、感觉到的一切;输出集合就是人的每一言每一行,还有表情动作;内部状态集合则可以把神经细胞的状态组合看成一个内部状态,所有可能的状态集合将是天文数字。 人有记忆,图灵机有没有?有,它有了内部状态就可以看成有记忆,内部状态会记录所经历过的世界。 很多现象似乎都能被图灵机包括,如人了IDE情绪和情感,可以看成某种内部状态,心情好的情绪下,输入和输出是一套规则,而心情不好的情况下

简析 NP 问题 和P问题

丶灬走出姿态 提交于 2019-12-02 18:05:08
简析 NP 问题 和P问题 最简单的解释: P:算起来很快的问题 NP:算起来不一定快,但对于任何答案我们都可以快速的验证这个答案对不对 NP-hard:比所有的NP问题都难的问题 NP-complete:满足两点: 是NP hard的问题 是NP问题 严谨的定义: 问题: ​ 对于一个包含由0和1组成的字符串集合S,以某个01字符串x作为输入,要求某个图灵机判断x在不在S里面。这里的图灵机可以先想象成平时我们用的计算机,S也可以被看成我们要解决的问题。注意我们的问题非常简单,就是要判断某个字符串x是否在某个集合S里面,下面是定义: P:有一个图灵机在多项式时间内能够判断x是否在S里面 NP:有一个图灵机M,如果某个字符串x在S里面,那么存在一个验证字符串u(注意这个u是针对这个x的,而且长度必须是x长度的多项式 关系),M以x和u作为输入,能够验证x真的是在S里面。 NP-hard:如果某个问题S是NP-hard,那么对于任意一个NP问题,我们都可以把这个NP问题在多项式时间之内转化为S,并且原问题的答案和转化后S的答案是相同的。也就是说只要我们解决了S,那么就解决了所有的NP问题。 NP-complete:一个问题既是NP-hard,又在NP里面;也就是说 解决了这个问题我们就解决了所有NP问题 这个问题本身也是个NP问题 好,下面先来解释为什么会有人搞出来这么莫名其妙的定义

哈工大(深圳)《计算理论》课程project

情到浓时终转凉″ 提交于 2019-11-28 10:14:29
HIT_SZ计算理论project 一、project 1 实验一 实验二 二、project 2 三、源代码 所有实验均在Ubuntu下编写和测试,亲测在Windows下结果不正确。 一、project 1 实验一 实验内容:编写程序实现利用正则表达式匹配IP地址。要求能够正确匹配合法的IP地址格式。 很简单,没什么好说的。但听说有很多同学用“调包”的方法,但我至今也没弄清楚调的是什么包。(手动笑哭emoj) 直接放上实验报告里的Design部分。 A. Design In this experiment, I construct a program to read a regular a ipv4 address and check it if it is a correct one. Specially, we regard those ipv4 address which consist of four number between and 255 and separated by three dots as correct addresses. So I just read characters into a buffer until meeting a dot, then transform them to corresponding integers and

那传说中的P、NP以及NPC问题

泪湿孤枕 提交于 2019-11-26 11:35:37
那传说中的P、NP以及NPC问题 (这里只是自己的一些总结) 在讲这几个问题之前,有几个东西是必须要说的,包括时间复杂度、空间复杂度、图灵机什么的。那么我们就慢慢来一一说来。 图灵机: 图灵机其实就是一个计算模型,是由图灵提出来的。图灵机号称可以模拟实际计算机的所有计算行为,计算能力还超过现有的计算机。但是还是有图灵机无法做到的事情,就好像计算机并不能处理所有的事情一样。 定义: 1)有一个无限长的带子作为无限存储。 2)有一个读写头,能在带子上读、写和左右移动。 3)有一套控制规则,根据当前机器所处的状态以及当前读写头所指的格子符号来确定下一步的动作,另机器进入一个新的状态。 4)一个状态寄存器,用来保存图灵机当前所处的状态。 工作方式: 在图灵机的计算过程中,当前状态、当前带内容和读写头当前位置组合一起称为图灵机的格局。包括起始格局、接受格局、拒绝格局。 图灵机读取纸袋上的内容,结合读写头的当前状态,根据一组控制规则决定下一步的动作。可以认为这是一台理想的,能够处理所有的“人类计算”。 我们可以想象,一个问题如果在理论上是可解的,但是计算它所需要的时间和空间的资源是我们无法承受的,那么这个问题对我们来说就是没有用的。当然这里说明一个问题是否理论上可解,用到图灵机什么的一箩筐东西,这里就不说明这些问题。 时间复杂度: 对于一个算法的时间复杂度一般采用大O表示