首页 > 编程语言 >算法设计与分析复习总结(一)

算法设计与分析复习总结(一)

时间:2024-06-23 20:03:17浏览次数:28  
标签:总结 拉斯维加斯 复习 模型 问题 算法 计算 NP

算法分析与设计复习总结

第一章 算法概述

算法与程序

算法的四条性质

输入:0个或多个
输出:至少产生一个量进行输出
确定性:组成算法的每条指令是清晰的,无歧义的。
有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。

程序的特点

程序是算法用某种程序设计语言的具体实现,可以不满足有限性,无限循环执行。

算法复杂度分析

算法的复杂性是算法运行需要的计算机资源的量。
在算法复杂性的表示法中:
Θ Θ Θ (big-theta):紧致界 / 紧确界。
O O O (大欧):上界。
o o o(小欧):非紧的上界。
Ω Ω Ω(大欧米伽):下界。
ω ω ω(小欧米伽):非紧的下界。
在这里插入图片描述

时间复杂度

在这里插入图片描述
注意:在一般输入数据的程序里,输入多多少少会影响到算法的计算复杂度,为消除这种影响可用拉斯维加斯算法对输入进行预处理。

关于拉斯维加斯算法

拉斯维加斯算法是一类随机化算法,它的显著特点是总是返回正确的结果,尽管它的运行时间可能是随机的。这类算法在不同的运行中可能花费不同的时间完成计算,但每次运行都保证了结果的正确性。要理解为什么拉斯维加斯算法找到的解一定是正确的,我们需要看其工作原理:

工作原理

拉斯维加斯算法利用随机性来提高效率,但它在验证结果正确性上有一个明确的机制。其基本步骤通常包括:

  1. 随机选择一个候选解或进行一次随机试验。
  2. 检查这个候选解是否满足问题的要求(即是否是正确解)。
  3. 如果解不正确,则重新选择或重新试验,直到找到正确解为止。
保证正确性的原因
  1. 结果验证:拉斯维加斯算法在每次生成候选解后都会进行验证。这一步是确定性的,不会出错。如果候选解不正确,算法会继续尝试其他候选解,直到找到正确解。这一特性保证了当算法终止时,返回的解一定是正确的。

  2. 正确性的前提:拉斯维加斯算法设计的一个关键前提是存在一种有效的方式来验证解的正确性。验证过程是准确的,不会有误判。

  3. 不确定的是时间,而非结果:拉斯维加斯算法的不确定性在于运行时间,因为它可能需要多次尝试才能找到正确解,但结果的正确性是有保障的。它不会在没有找到正确解之前终止。

例子:快速选择算法(Quickselect)

快速选择算法用于在无序数组中找到第k小的元素。它是拉斯维加斯算法的一种,利用快速排序的分区方法,但只处理一个子数组。尽管分区的位置是随机的,它总是能通过不断调整分区来最终找到正确的元素。

形式化证明

考虑一个问题和拉斯维加斯算法如下:

  • 对于给定的输入,算法通过随机选择某些候选解来处理。
  • 每次随机选择后,算法验证该候选解是否满足问题的要求。

如果我们设候选解集合为 S S S,正确解集合为 S ∗ S^* S∗(其中 S ∗ ⊆ S S^* \subseteq S S∗⊆S),拉斯维加斯算法每次从 S S S中随机选择一个解并验证是否属于 S ∗ S^* S∗。由于验证过程是确定性的,算法不会停止直到选到一个属于 S ∗ S^* S∗的解。

因此,可以总结为:

  • 拉斯维加斯算法的输出结果总是正确的,因为它在找到正确解之前不会停止运行。
结论

拉斯维加斯算法通过随机化提高效率,同时依赖确定性的验证步骤来保证结果正确性。即使算法的运行时间可能是随机的,返回结果的正确性是有保证的。这种特性使得拉斯维加斯算法在需要高可靠性和正确性的计算任务中非常有用。

计算模型

建立计算模型的目的是为了使问题的计算复杂性分析有一个共同的客观尺度

基本计算模型是用于研究和描述计算过程的抽象工具,它们在计算理论中扮演着重要角色。
这些模型被称为基本计算模型的原因如下:

抽象性:这些模型提供了一种简化且抽象的方式来描述计算过程,帮助研究者分析和理解计算的基本原理和极限。

通用性:这些模型能够描述各种计算问题和算法,并用于证明计算的可行性和复杂性。

理论基础:基本计算模型如图灵机、RAM等构成了计算理论的基础,是计算复杂性、可计算性和算法分析等领域的重要工具。

简化计算过程:通过抽象掉不必要的细节,这些模型使得研究者能够专注于计算的核心概念和过程,提高研究效率。
基本计算模型

RAM(Random Access Machine,随机存取机器):
这是一种理论计算模型,它将计算机看作一个拥有无限内存的机器,每个内存单元可以直接存取。RAM模型用于分析算法的时间复杂度和空间复杂度,是计算复杂性理论中的重要工具。

RASP(Random Access Stored Program,随机存取存储程序机器):
RASP模型是对RAM模型的扩展,它包含一个程序存储器,可以存储并执行程序指令。这种模型更加接近实际的计算机系统。

TM(Turing Machine,图灵机):
图灵机是由艾伦·图灵提出的一种抽象计算模型,它由无限长的纸带和一个读写头组成。图灵机是计算理论中的一个基本概念,用于定义计算的可计算性和研究计算的极限。图灵机模型是现代计算机理论的基础。

NP完全性理论

约化的概念

在这里插入图片描述

几类问题的韦恩关系图

韦恩图

P问题(Polynomial,多项式)

定义:可以在多项式时间复杂度内解决的问题
注意:P类问题是NP问题的子集
举例:n个数的排序问题,时间复杂度为 O ( n 2 ) O(n^2) O(n2)

NP问题(Nondeterministic Polynomial,非确定性多项式)

定义:可以在多项式时间内验证一个解的问题,即给出一个答案,可以很快地(在多项式时间内)验证这个答案是对的还是错的,但不一定能在多项式时间内求出正确的解
举例:数独问题、判断一个图是否存在哈密顿(Hamilton)回路问题

NP难问题(NPH,NP-Hard)

定义:任意NP问题可以在多项式时间内约化成该问题,即为了解决NP问题A,先将问题A约化为另一个问题B,解决问题B的同时也解决了问题A,问题B就是一个NP难问题。
举例:求旅行商的最短回路问题
注意 :NP难问题不一定是NP问题,因为一个问题约化过后会更难,就不一定还可以在多项式时间复杂度内验证答案。
求旅行商最短回路 问题

NP完全问题(NPC,NP-complete)

定义:所有既是NP问题,又是NP难问题的问题。
即一个NP问题,任意的NP问题可以约化到它。
举例:旅行商的在限制花费时是否可行问题
注意:NPC问题才是只能暴力搜索解决的问题,而NP问题并不是那种只有暴力搜索才能解决的问题。
NP完全问题

标签:总结,拉斯维加斯,复习,模型,问题,算法,计算,NP
From: https://blog.csdn.net/m0_74337962/article/details/139812606

相关文章

  • 计算机组成原理复习总结(一)
    第一章计算机系统发展概述计算机发展历程计算机系统的层次结构计算机硬件的基本组成早期冯诺依曼机(以运算器为中心)现代计算机的结构(以存储器为中心)各个硬件的工作原理计算机系统的层次结构计算机的性能指标计算机发展历程电子管晶体管中小规模集成电路超大规模......
  • 算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码
    卡码网110字符串接龙这题一开始用的邻接表+dfs,不幸超时#include<iostream>#include<list>#include<string>#include<vector>usingnamespacestd;intminLen=501;boolcount(stringa,stringb){intnum=0;for(inti=0;i<a.lengt......
  • 基础算法(1)
    文章目录数学函数math.h(cmath)头文件float.h头文件拆位拆位进阶奇偶判断质数判断在c++中,会涉及到一些算法,例如递归、递推、动态规划(DP)、深搜(DFS)、广搜(BFS)……今天我们要说的是一些简单的算法数学函数math.h(cmath)头文件选择任意一个头文件#include<cmath>//仅......
  • 大数据复习练习
    大数据复习练习题填空题简答题简单分析题程序设计题程序设计题填空题(数据)过观察、实验或计算得出的结果。(消息)是较为宏观的概念,它是由数据的有序排列组合而成。大数据的数据类型包括(结构化数据)和(非结构化数据),前者占10%左右,后者占90%左右。HDFS伪分布式配置中属性df......
  • 【Matlab】LSTM长短期记忆神经网络分类算法(附代码)
      资源下载: https://download.csdn.net/download/vvoennvv/89465998 分类算法资源合集:https://download.csdn.net/download/vvoennvv/89466519 目录MatlabSVM支持向量机分类算法MatlabRF随机森林分类算法MatlabRBF径向基神经网络分类算法MatlabPSO-BP基于粒子......
  • Oracle 11gR2 RAC 集群服务启动与关闭总结
      关闭过程(CRS集群关闭->关闭数据库)1.关闭数据库:用oracl用户执行srvctl命令语法:srvctlstopdatabase-ddbname[-oimmediate]作用:可以一次性关闭dbname的所有实例[oracle@rac1 ~]$ srvctl stop database -d racdb  -停止所有节点上的实例然后查看状态:[oracle@ra......
  • [算法篇] 简单讲讲一维前缀和与差分
    前缀和:先给定义:指某序列的前n项和是不是与我们高中所学的数列求和类似?给出用途: 如我们于一组长度为n的整数序列中询问m次,每次询问中输出区间[l,r]中数之和倘若我们先不使用前缀和,预测一下思路将会是:m次询问中,每一次都求和数组[l,r]时间复杂度为O(n),思路很简单但若m非常大则将......
  • 三种好用的controller跳转thmleaf页面的方法总结!!
    一、直接在Controller中写跳转方法,最简单也是最普通的方法【不推荐使用】@Controller//页面跳转是直接用Controller:ResponstController他会默认给页面所有的方法加上ResponstBoring,他会返回对象,而不是页面跳转@Slf4jpublicclassLoginController{@RequestMapping(val......
  • 【面经】超全版本AIGC算法工程师面经
    AIGC算法工程师面经1.个人项目介绍1.1如何介绍1.2加分点1.3注意事项2.深度学习基础2.1公式理解类2.2模型训练通识3.细分算法3.1NLP问题3.2Transformer细节问题3.3大模型问题本篇为来自各大厂从业者等业内人士做的免费面经总结,希望能为想进入或者即将入......
  • [模式识别复习笔记] 第9章 神经网络及BP算法
    1.基本概念1.1神经元神经网络是很多的神经元模型按照一定的层次结构连接起来所构成的。1.2激活函数\(\text{ReLU}\)函数:修正线性单元ReLU,是一种人工神经网络中常用的激活函数。\[\text{ReLU}(x)=\max(0,x)\]\(\text{sgn}\)阶跃函数:它将输入值映射为......