从零到壹深入解析算法——算法概述

从零到壹深入解析算法——算法概述

  • 欢迎查看E·udemon在线博客
    • 一、算法与程序
      • 1.1算法
      • 1.2程序
    • 二、算法复杂性分析
      • 2.1算法复杂性
      • 2.2渐进意义
    • 三、NP完全性理论
      • 3.1NP、NPC
      • 3.2常见场景

欢迎查看E·udemon在线博客

你好! 从零到壹深入解析算法系列博客,是以计算机算法设计与分析为基础,针对算法概念与例题编程实践理解稍有疑惑的朋友,此博客将会详细地讲解概念与代码的含义。

一、算法与程序

1.1算法

算法是由若干条指令组成的又穷序列,是解决问题的一种通用模型或基本方法。并且满足以下五条性质:

  1. 输入:有零个或者多个输入,零个指算法自身定义的初始条件,多个指由外部提供的量
  2. 输出:至少有一个量作为输出,否则算法是没有意义的
  3. 确定性:要求算法指令清晰,没有歧义
  4. 有穷性:每条指令执行的次数有限,执行每条算法的时间有限。

1.2程序

程序就是算法使用某种程序设计语言(C,C++,Java,Python…)的具体实现
可以不满足算法的性质4,可以无限循环执行程序。例如,while(true)。

二、算法复杂性分析

2.1算法复杂性

在能解决问题的前提下,通常以算法的时间复杂性与空间复杂性来衡量算法的优劣
时间复杂性:
算法的时间复杂性是一个函数,描述了算法需要的时间资源。量级,只关注算法复杂度的最高项。一般考虑三种情况下的时间复杂性: 最坏情况、最好情况、平均情况。

for(i=0;i<n;i++)                              //n
	{
     
		for(j=0;j<n;j++)                      //n
		{
     
		sum + = sum;//sum = sum + 1
		}
	}
sum = sum +1;                                 //1
//算法的时间复杂度:T(n)=n2+1=O(n2)

空间复杂性:
描述了算法需要的空间资源

*由于空间复杂性分析相对简单,本系列博客主要讨论算法的时间复杂性

2.2渐进意义

渐进意义的记号O(上界)、Ω(下界)、θ(紧却界)、o(非紧上界)、ω(非紧下界)
从零到壹深入解析算法——算法概述_第1张图片
*渐进阶从低到高排序
在这里插入图片描述

三、NP完全性理论

3.1NP、NPC

NP类问题:所有的非确定性多项式时间可解的判定问题构成NP类问题。
NPC问题(NP完全问题):NP中的某些问题的复杂性与整个类的复杂性相关联.这些问题中任何一个如果存在多项式时间的算法,那么所有NP问题都是多项式时间可解的.这些问题被称为NPC问题(NP完全问题)。

3.2常见场景

-合取范式的可满足性问题:给定一个合取范式,判定它是否可满足。(如果一个布尔表达式是一些因子和之积,则称它为合取范式)
-子集和问题
-哈密顿回路问题:给定无向图G(V,E),判定其是否含有一条哈密回路。
-旅行售货员问题

#博客原创,转载请注明出处,欢迎交流指导意见,谢谢!

你可能感兴趣的:(算法)