关于算法设计与分析学习报告

关于算法设计与分析学习报告

…………………………………………………………

学习前概述

应学校的教导委员决定,算法设计与分析由学生自学完成本课程的知识,让我们拥有更加强的自学的能力与社会生存技能。本课程经过本人一个多月的刻苦学习,在学习中不断总结课本知识,在学习中克服难题,并进行了总结在此篇报告中进行总结我的学习情况。
本教材总由12章。我的学习计划是学前思考,认真学习与学后总结三大部分组成。

第1章 概论

  • 概论:介绍算法的概念、算法分析方法和STL在算法设计中的应用。

  • 算法概念,算法是求解问题的一系列计算步骤,用来将输入数据转换成输出结果。算法设计应满足以下几个目标,正确性、可使用性、可读性、健壮性、高效率与低存储量需求。算法具有以下5个重要特性:有限性、确定性、可行性、输入性、输出性。应用型参数名前需加上&,表示这样的形参在执行后会将结果回传给对应的实参。

  • 算法分析,两种权衡算法效率的方法:事后统计法和事前分析估算法。算法的时间复杂度分析,算法的执行是时间主要与问题规模有关。渐进符号有以下几个特性:传递性、自反性、对称性、算术运算;算法的最好、最坏和平均情况、非递归算法的时间复杂度分析;递归算法的时间复杂度分析。算法空间复杂度分析

  • 算法设计工具——STL。STL是一个功能强大的基于模板的容器库,通过直接使用这些现成的标准化组件可以大大提高算法设计的效率和可靠性。STL主要有container(容器)、algorithm(算法)、和iterator(迭代器)三大部分构成,容器用于存放数据对象,算法用于操作容器中的数据对象。STL容器就是一种数据结构如链表、栈和队列。STL是用来操作容器中数据的模板函数。STL迭代器用于访问容器中的数据对象。常用的STL容器大致分为顺序容器、适配器容器、和关联容器3种类型

第2 章 递归算法设计技术

  • 递归算法设计技术:介绍递归的概念、递归诉法设计方法和相关示例递归算法到非递归算法的转化以及递推式的计算
  • 递归的定义,递归是指在函数的定义中又调用函数本身的方法,递归一般来说,能够用递归解决的问题应该满足以下3个条件:
    (1) 需要解决的问题可以转化为一个或多个子问题来求解,而这些子问题的求解方法与原问题完全相同,只是在数量规模上不同。
    (2) 递归调用的次数必须是有限的。
    (3) 必须有结束递归的条件来终止递归。
  • 递归算法设计,递归模型基本步骤如下:
    (1) 对原问题f(x0)进行分析,抽象出合理的“小问题”f(sn-1)
    (2) 假设f(xn-1)是可解的,在此基础上确定f(sn)的解,即给出f(sn)与f(sn-1)之间的关系
    (3) 确定一个特定情况(如f(x)或f(x))的解,由此作为递归出口
    递归算法设计示例有简单选择排序和冒泡排序和求解n皇后问题

第3章 分治法

  • 分治法:介绍防治法的策略和求解过程,讨论采用分治法求解排序问题、查找问题、最大连接子序列和问题、大整数乘法问题及矩阵乘法问题的典型算法,并简要介绍了并行算法的概念。
  • 分治法的特征:
    (1) 该问题的规模缩小到一定的程度就可以容易地解决。
    (2) 该问题可以分解为若干个规模较小的相似问题。
    (3) 利用该问题分解出的子问题的解可以合并为该问题的解。
    (4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包括公共的子问题
  • 分治法的求解过程
    (1) 分解成若干个子问题
    (2) 求解子问题
    (3) 合并子问题
  • 求解排序问题,快速排序归并排序
  • 求解查找问题,查找最大和次大元素,折半查找
  • 求解组合问题,求解最大连接子序列和问题,求解棋盘覆盖问题,求解循环日程 安排日程,最大整数乘法和矩阵乘法问题。
  • 并行计算,并行计算法是用多台处理器联合求解问题的方法和步骤。PRAM模型,BSP模型

第4章 蛮力法

  • 蛮力法:介绍蛮力法的特点、蛮力法的基本应用示例、递归在蛮力法中的应用以及图的深度优先和广度优先遍历算法。
  • 蛮力法也称为穷举法或暴力法,蛮力法基本思路是对问题的所有可能转态意义测试,直到找到解或将全部可能转态都测试为止。
  • 蛮力法的优点:逻辑清晰,编写程序简洁、可以用来解决广阔领域的问题、对于一些重要的问题,它可以产生一些合理的算法、可以解决一些小规模的问题、可以作为其他高效算法阿道衡量标准。
  • 使用蛮力算法有以下几种情况:搜索所有的解空间、搜索所有的路径、直接计算、模拟和仿真。
  • 蛮力算法的基本应用,简单选择排序和冒泡排序,字符串匹配,求最大连接子序列和问题,求解幂集问题,求解简单0/1背包问题,求解排序问题,求解任务分配问题
    图的深度优先和广度优先遍历

第5章 回溯法

  • 回溯法:介绍解空间概念和回溯法算法框架,讨论采用会输发求解0/1背包问题、装载问题、子集和问题、n皇后问题、图的m着色问题、任务分配问题、活动安排时间问题和流水作业调度问题的典型算法。
  • 回溯法是一个类似穷举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足条件时就“回溯”(即回退),尝试其他路径。
  • 算法设计的关键点有3个:
  • (1)结点是如何扩展的
  • (2)在解空间树中安什么方式搜索
  • (3)解空间通常是十分庞大的如何高效地找到问题的解
    回溯法与深度优先遍历的不同点:访问次序不同,访问次数不同,剪枝不同。

第6章 分枝限界法

  • 分枝限界法:介绍分枝限界法的特点和算法框架、队列式分枝限界法和优先队列式分枝限界法,讨论采用分枝限界法求解0/1背包问题、图的单源最短路径、任务分配问题和流水作业调度问题的经典算法。
  • 分枝限界法类似于回溯法,也是一种在问题的解空间树上搜索问题的解的算法,限界函数设计需根据具体问题来分析。一般先要确定问题解的特性,如果目标函数是求解最大值,则设计上限界函数ub,若s1是s2的双亲结点,则应满足ub(s1)>=ub(s2),找到一个可行解ub(s1)后将所有小于ub(s1)的结点剪枝。
  • 队列式分枝限界法步骤:
    -①将根结点加入活结点队列,
    ②从活结点队列中取出队头结点作为当前扩展结点,
    ③对于当前扩展结点,先从左到右产生它的所有结点,用约束条件检查,把所有满足约束条件的子结点加入活结点队列。
    ④重复步骤②和③,直到找到一个解惑活结点队列为空为止。还有优先队列式分枝限界发。
  • 分枝限界发3个关键问题,
    ①如何确定合适的限界函数,
    ②如何组织处理的活结点表,
    ③如何确定解向量的各个分量。

第7章 贪心法

  • 贪心法:介绍贪心法的策略、求解过程和贪心法求解问题应具有的性质,讨论采用贪心法求解活动安排问题、背包问题、最优转载问题、田忌赛马问题、多机遇问题、哈夫曼编码和流水作业调度问题的典型算法。
  • 贪心法是一种典型的算法设计策略,用于求解问题的最优解。贪心法的基本思路是在对问题求解时总是做出在当前看来是最好的选择,也就是说在贪心法不从整- - 体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。
  • 贪心算法的一般求解过程:
    -①建立数学模型来描述问题。
    -②把求解的问题分解成若干个子问题;
    ③对每一个子问题求解,得到子问题的局部最优解,
    ④把子问题的局部最优解合成原来解问题的一个解。

第8章 动态规划

  • 动态规划:介绍动态规划的原理和字节步骤,讨论采用动态规划法求解整数拆分问题、最大连续子序列和问题、三角形最小路径问题、最长公共子序列问题、最长递增子序列问题、编程距离问题、0/1背包问题、安全背包问题、资源分配问题、会议安排问题和滚动数组的典型算法。
  • 动态规则是将多阶段决策问题进行公式化的一种技术。动态规划是一种解决多阶段决策问题最优化方法,把多阶段过程转化成一系列单阶段问题,利用各阶段之间的关系逐个求解。
  • 动态规划中的几个基本概念
    ①阶段和阶段变量
    ②状态和转态变量
    ③决策和策略
    ④转态状态方程。
  • 动态规划求解的几个步骤
    ①最优性原理
    ②无后效性是
    ③有重叠子问题。
  • 动态规划的设计有一定的模式,一般有以下步骤:
    ①划分阶段,
    ②确定状态和状态变量
    ③确定决策并写出状态转移方程。
    ④寻找边界条件。

第9章 图算法设计

  • 图算法设计:讨论结构最小生成树的两种算法、求图的最短路径的4种算法,并采用5种䒦策略求解旅行商问题,最后介绍网络流的相关概念以及求最大流和最小费用最大流的算法。
  • 图是一类常用的数据结构。求图的最小生成树,是一个连通图的生成树是一个极小连通子图。有普里姆算法构造最小生成树;克鲁斯卡尔算法,是一种按权值的递增次序选择合适的边来构造最小生成树的方法。狄克斯特拉算法、贝尔曼-福特- - 算法、SPFA算法、弗洛伊德算法。
    网络流,在日常中有大量的网络,例如电网、交通运输网、通信网、生产管理网。
  • 一个流量函数应该满足以下条件:
    ①容量限制
    ②斜对称
    ③流守恒

第10章 计算几何

  • 计算几何:介绍计算几何汇总常用的矢量运算以及求解凸包问题、最近对问题和最远点对问题的典型算法。
  • 计算几何作为计算机科学中的一个分支,主要研究解决几何问题的算法,在计算机图形学,科学计算可视化和图形用户界面有广泛应用。
  • 求最近点问题,用蛮力法求最近点对的过程是分别计算每一对点之间的距离,然后找出距离最小的一对;用分治法求解最近点对;求最远点也是同理。

第11章 计算复杂性理论简介

  • 计算复杂性理论简介:介绍图灵机计算模型、P类和NP类问题以及NPC问题
  • 求解问题按算法的时间复杂度可分成三大类:
    第一类是存在多项式算法的问题,
    第二类是肯定不存在多项式算法问题,
    第三类是尚未找到多项式算法,也不能证明其不存在多项式算法的问题。
    第三类问题介于第一类问题和第二类问题之间。
  • 图灵机模型,图灵机模型的基本结构包括一条向右无限延伸的输入带、一个有限状态控制器和连接控制器与输入带的读写头。
  • P类和NP类问题,P类问题用确定性图灵机以多项式时间界可解的问题,P指确定性图灵机上的具有多项式算法的问题集合。用非确定性图灵机以多项式时间界可解的问题称为NP类问题。
  • NPC问题,NPC问题的概念表明找到某个问题的有效算法至少和找NP中所有问题的有效算法那一样难。

第12章 概率算法和近似算法

  • 概率算法和近似算法:介绍着两类算法的特点和基本的算法设计方法
    概率算法和近似算法是两种另类算法,概率算法在算法执行中引入随机性,近似诉法采用近似方法来解决优化问题。
  • 概率算法也叫随机算法,允许算法在执行过程中随机地选择下一个计算步骤。概率算法通常讨论以下两种期望时间,①平均的期望时间:所有输入实例上平均的期望执行时间。②最坏的期望时间:最坏的输入实例上的期望执行时间。概率算法大概分为以下4类:①数字概率算法②蒙特卡罗算法③拉斯维加斯算法。④舍伍德算法。
发布了40 篇原创文章 · 获赞 16 · 访问量 5273

猜你喜欢

转载自blog.csdn.net/CSDNWuZhiChun/article/details/103286150