5大算法策略

算法策略和算法的区别

算法策略是面向问题的,算法是面向实现的。二者又不可分割,通过算法策略找到解决问题的算法,而不同算法求解的问题算法策略是不一样。

算法的正确性分析

一个算法是正确的,如果它对于每一个输入都是最终停止,而且产生正确的输出。
一个错误的算法包括,在某一个输入上不停止,或者对所有输入都停止,但是对某一个输入产生不正确的结果。
算法正确性的证明
证明算法对所有的输入都停止,证明对每个输入都能产生正确的结果。

算法的复杂性分析

目的:预测算法对不同输入所需要的资源量
复杂性测度:时间,空间,I/O 等,是输入大小的函数
用途:为求解一个问题选择最佳算法、最佳设备
涉及到的数学学科:离散数学,组合数学,概率论,代数

算法复杂度的度量

时间复杂度:一个算法特定输入的时间复杂性是指该算法对输入产生结果需要的原子操作或者步数
空间复杂度:一个算法特定输入的空间复杂性是指该算法对该输入结果产生结果所需要的存储空间大小,一般指内存
最坏复杂性:比如插入排序,逆序数组
最优复杂性:比如插入排序,有序数组
平均复杂性:比如插入排序,随机数组
比如一段代码
sum=0; //执行1次
for(i=1;i<=n;i++) //执行n次
for(j=1;j<=n;j++) //执行n2次
sum++; //执行n2次
本程序段的T(n)=2n2 +n+1,时间复杂度应取指数级别最高的,所以为O(n2)。

计算复杂性函数的阶

增长的阶,如果描述算法的效率,阶描述的是增长率,忽略低阶项和常系数
常用的阶 O(1), O(N),O(N平方),O(lnN)

5大算法策略

算法策略的中心思想是用算法的基本工具循环机制或者递归机制实现算法

分治法

该问题的规模缩小到一定的程度就可以容易地解决
该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质
利用该问题分解出的子问题的解可以合并为该问题的解
应用场景
求解斐波那契数列;
递归与HANOI塔问题;
二分法求方程近似解;
合并排序;
求最大值和最小值的分治算法;
快速排序;
线性时间选择;
最接近点对问题;
循环赛日程表;
大整数乘法;
棋盘覆盖;

最优化原理

问题中的状态必须满足最优化原理;
问题中的状态必须满足无后效性。
所谓的无后效性是指:“下一时刻的状态只与当前状态有关,而和当前状态之前的状态无关,当前的状态是对以往决策的总结”。
动态规划法的应用:
最长公共子序列(LCS)
最长递增子序列(LIS)
背包问题
用动态规划实现导弹拦截
最大化投资回报问题的实现
矩阵连乘
走金字塔
凸多边形最优三角剖分
双调欧几里得旅行商问题

贪心算法

在对问题求解时,总是做出在当前看来是最好的选择.一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。
贪心算法应用:
最小生成树之Prim算法
最小生成树之kruskal算法
Dijkstra算法(求解最短路径)
Huffman编码
再论背包问题
钱币找零问题
活动选择问题
小船过河问题
区间覆盖问题
销售比赛

回溯法

回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”.以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
数的划分
运动员最佳配对问题
解决汽车加油次数最少问题
找出n个自然数中取r个数的全排列
八皇后问题
图的着色问题
装载问题
批处理作业调度问题
再再论背包问题
最大团问题
连续邮资问题
符号三角形问题

分支限界法

分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。
常见的两种分支限界法:
队列式(FIFO)分支限界法
按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。
优先队列式分支限界法
按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。
应用场景
分支限界法之装载问题
分支限界法之布线问题
分支限界法之0 1背包问题
分支限界法之旅行售货员问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式--结构型--适配器模式】

设计模式--结构型--适配器模式 适配器模式概述结构案例类适配器模式对象适配器模式 应用场景 适配器模式 概述 将一个类的接口转换成客户希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类适配器模式和对象适配器模式…

Java解决不同路径问题2

Java解决不同路径问题2 01题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中…

RUST与RUSTful简介

RUST与RUSTful 1、背景2、RUST的起源3、RUST与RUSTful4、总结 1、背景 随着互联网&#xff08;Internet&#xff09;的发展&#xff0c;越来越多的人开始意识到&#xff0c;网站即软件&#xff0c;而且是一种新型的软件。这种"互联网软件"采用客户端/服务器&#xff…

服务器数据恢复-raid5故障导致上层分区无法访问的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台服务器上3块硬盘组建了一组raid5磁盘阵列。服务器运行过程中有一块硬盘的指示灯变为红色&#xff0c;raid5磁盘阵列出现故障&#xff0c;服务器上层操作系统的分区无法识别。 服务器数据恢复过程&#xff1a; 1、将故障服务器上磁…

机器学习算法--朴素贝叶斯(Naive Bayes)

实验环境 1. python3.7 2. numpy > 1.16.4 3. sklearn > 0.23.1 朴素贝叶斯的介绍 朴素贝叶斯算法&#xff08;Naive Bayes, NB) 是应用最为广泛的分类算法之一。它是基于贝叶斯定义和特征条件独立假设的分类器方法。NB模型所需估计的参数很少&#xff0c;对缺失数据不…

基于YOLOv8的草莓病害检测,加入EMA注意力和GPFN提升病害检测能力

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的草莓病害检测&#xff0c;加入EMA注意力和GPFN性能分别从mAP0.5从原始的0.815提升至0.818和0.831 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。Y…

​ Python代码库和插件 FAQ​

目录 代码库和插件 FAQ 通用的代码库问题 如何找到可以用来做 X 任务的模块或应用&#xff1f; math.py&#xff08;socket.py&#xff0c;regex.py 等&#xff09;的源文件在哪&#xff1f; 在 Unix 中怎样让 Python 脚本可执行&#xff1f; Python 中有 curses/termcap 包…

Swift 周报 第四十期

文章目录 前言新闻和社区53.5亿美元&#xff01;传苹果今明两年或将采购 2.3 万台 AI 服务器&#xff01;TestFlight 让管理测试员变得更加简单推送通知控制面板现已推出新交付指标Apple Vision Pro 开发者实验室现已扩展到纽约市和悉尼 提案正在审查的提案 Swift论坛推荐博文话…

关于B+树的总结

B树(B-tree) B树属于多叉树又名平衡多路查找树&#xff08;查找路径不只两个&#xff09;&#xff0c;数据库索引技术里大量使用着B树和B树的数据结构 规则&#xff1a; &#xff08;1&#xff09;排序方式&#xff1a;所有节点关键字是按递增次序排列&#xff0c;并遵循左小…

Nginx快速入门:安装目录结构详解及核心配置解读(二)

0. 引言 上节我们讲解了nginx的应用场景和安装&#xff0c;本节继续针对nginx的各个目录文件进行讲解&#xff0c;让大家更加深入的认识nginx。并通过一个实操案例&#xff0c;带大家来实际认知nginx的核心配置 1. nginx安装目录结构 首先nginx的默认安装目录为&#xff1a;…

SQL注入绕过正则及无列名注入

渗透测试 一、select\b[\s\S]*\bfrom正则二、科学计数法绕过三、过滤information四、无列名注入1、利用 join-using 注列名。2、无列名查询 五、报错注入7大常用函数1.ST_LatFromGeoHash()&#xff08;mysql>5.7.x&#xff09;payload 2.ST_LongFromGeoHash&#xff08;mysq…

vcomp140.dll丢失怎么办,vcomp140.dll丢失解决方法详解

在我多年的电脑使用经历中&#xff0c;我曾经遇到过一个非常棘手的问题&#xff0c;那就是vcomp140.dll丢失。这个问题让我苦恼了很久&#xff0c;但最终我还是找到了解决方法。今天&#xff0c;我想和大家分享一下我的经历&#xff0c;以及vcomp140.dll是什么&#xff0c;它丢…

基于博弈树的开源五子棋AI教程[1 位棋盘]

0 引子 常见的五子棋棋盘大小为15x15&#xff0c;最直观的表示就是一个二维数据。本文为了易于拓展一开始使用的是QVector<QVector>的数据&#xff0c;但是在分支因子为10的情况下只能搜索到4层左右&#xff0c;后面深度加深&#xff0c;搜索时间呈指数倍数增长。这种实…

Python中的复数

复数一般表示为abi(a、b为有理数)&#xff0c;在python中i被挪着它用&#xff0c;虚数单位是不区分大小写的J。 (笔记模板由python脚本于2023年12月19日 18:58:39创建&#xff0c;本篇笔记适合认识复数的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https:/…

2.3万字长文,全方位介绍oCPC广告策略设计与投放实践(广告主版)

各位观众、广告主、优化师读者&#xff0c;你们好&#xff01; 不知道此时此刻&#xff0c;你们是否还在全年无休地盯账户、做投放&#xff1f;是否遇到各种难以理解堪称玄学的投放问题&#xff1f;比如相同的素材&#xff0c;投放效果却完全不同&#xff1b;刚上的广告效果快…

Just Laws -- 中华人民共和国法律文库,简单便捷的打开方式

链接&#xff1a;JustLaws | Home 一个简洁便捷的中华人民共和国法律文库&#xff0c;而且收录比较完善&#xff0c;都是平常网民可能用到比较多的法律知识&#xff0c;目前包括宪法及宪法相关法、民商法、行政法、经济法、社会法、刑法和程序法等等 页面以文档的风格展示每一…

vue打包内存问题解决办法<--- Last few GCs ---><--- JS stacktrace --->

**<— Last few GCs —> [18484:0000026763669610] 106760 ms: Mark-sweep 4016.0 <— JS stacktrace —> FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory** 解决办法&#xff1a; set NODE_OPTION…

设计模式(三)-结构型模式(3)-装饰模式

一、为何需要装饰模式&#xff08;Decorator&#xff09;? 在软件设计中&#xff0c;某个对象会组合很多不同的功能&#xff0c;如果把所有功能都写在这个对象所在的类里&#xff0c;该类会包含很多复杂的代码逻辑&#xff0c;导致代码不美观且难以维护。于是就有了再定义一些…

数据分析的基本步骤有哪些?

数据分析的基本步骤如下&#xff1a; 1. 问题定义和目标设置&#xff1a; 确定需要解决的具体问题或目标&#xff0c;明确分析的目的。例如&#xff0c;希望了解某个产品的销售趋势、预测未来的市场需求等。 2. 数据收集和整理&#xff1a; 收集与问题相关的数据&#…

微信小程序开发者工具

微信小程序开发者工具是一款由微信官方推出的工具软件&#xff0c;旨在帮助开发者快速便捷地进行微信小程序的开发和调试。它集成了开发、调试、预览、发布等功能&#xff0c;为开发者提供了全方位的支持。本文将介绍微信小程序开发者工具的主要功能&#xff0c;并详细说明如何…