首页 > 编程语言 >【离散数学·算法】(复习)

【离散数学·算法】(复习)

时间:2024-06-22 21:00:11浏览次数:27  
标签:复习 复杂度 元素 美分 离散数学 算法 搜索 贪心

一、

1.算法的属性:

1.输入。2.输出。3.正确性。4.有穷性(有限步数)。5.有效性(有限时间内正确执行每个步骤)。6.泛化性。

2.指定算法:

可用 语言 or 伪代码 来描述

二、三类问题

1.搜索问题:

(1) 线性搜索:

从头到尾一个一个检查。

(2) 二分搜索:(假设排列是按递增顺序的)

(找到:返回位置;未找到:返回0;)

2.排序问题:

(二分,插入,冒泡,选择,合并,快速,锦标赛)

(1)冒泡排序

(2)插入排序:

从第二个元素开始。将第二个元素与第一个元素进行比较,如果不大于第一个元素,则将其放第一个元素之前。

(3)选择排序:

首先找出列表中最小元素。把这个元素移到前面。然后找出剩余元素里的最小元素并且把它放到第二个位置。重复这个过程,直到整个列表都已经排好序为止(直到只剩下1个元素未选择)。(别忘了交换位置)

3.最优化问题:(通常可用贪心(贪婪)算法来解决)

贪心算法:在每一步做出“最佳”选择。

但有时贪心算法并不是整个问题的最优解(只是很多情况下由贪心算法得出的都是最优解)

(1)例1:用25美分,10美分和1美分(但是没5美分)硬币找出 兑换:

   a)76美分, b) 69美分   对于 a、b , 贪心算法是否都为最优解?

(使用硬币数量尽可能少)

  

(2)例2:安排会议

对于n个讲座,用蛮力算法:O(n^2·2^n)

用贪婪算法:选择结束时间最早的会议

三、函数的增长率

1.大O表示

(1)存在常数C和k,当x>k时,有 |f(x)|<=C|g(x)| : f(x)是g(x)的大O表示(f=O(g)),或g是f的上限。

(2)几种常见的复杂度比较:

幂指>阶乘>指数>幂(n)>O(nlogn)>幂(根号n)>O(logn)>常数(O(1))(指数小于1),其中,对数:O(nlogn)>O(logn)

例:

2.大Ω表示

(1)存在常数C和k,当x>k时,有 |f(x)|>=C|g(x)| : f(x)是g(x)的大Ω表示。(下界)(下界的阶越高,越精确)

3.大θ表示(来自1.和2.)

四、时间复杂度  (以下为最坏时间复杂度)

1.线性搜索:O(n)。

2.二分搜索:O(logn)。

3.冒泡排序:O(n^2)

4.插入排序:O(n^2)

例题:

标签:复习,复杂度,元素,美分,离散数学,算法,搜索,贪心
From: https://blog.csdn.net/2301_80102216/article/details/139883444

相关文章

  • 内容安全复习 7 - 对抗攻击与防御
    文章目录概述攻击对抗性攻击的目的攻击的损失函数如何攻击FGSM黑盒与白盒真实世界的攻击防御被动防御主动防御概述动机(1)不仅要在实验室中部署机器学习分类器,也要在现实世界中部署;实际应用(2)分类器对噪声具有鲁棒性和在“大多数情况下”有效是不够的。(3)想要鲁棒的......
  • 基于BP神经网络的64QAM解调算法matlab性能仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022A 3.部分核心程序%第一部分:加载并可视化数据%loaddata.matreal1=[-7-7-7-7-7-7-7-7-5-5-5-5-5-5-5-5...-1-1-1-1-1-1-1-1-3-3-3-3-3-3-3-3...+7+7......
  • 【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
    一、介绍球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集'美式足球','棒球','篮球','台球','保龄球','板球','足球','高尔夫球','曲棍球','冰球','橄榄球',&#......
  • 【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
    一、介绍球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集‘美式足球’,‘棒球’,‘篮球’,‘台球’,‘保龄球’,‘板球’,‘足球’,‘高尔夫球’,‘曲棍球’,‘冰球’,‘橄榄球’,‘羽毛球’,‘乒乓球......
  • 机器学习课程复习——决策树
    Q:这三个算法哪一个可以用来做回归?CART Q:这学期学过的分类算法有哪些?支持向量机、决策树、k近邻、逻辑回归、朴素贝叶斯、ANN(注意区分分类算法与聚类算法)Q:计算题根据以上条件,生成相应的决策树 1.ID3算法2.C4.5算法3.CART算法Q:剪枝的逻辑?(由于决策树容易......
  • 常微分方程算法之编程示例一(欧拉法)
    目录一、研究问题二、C++代码三、计算结果一、研究问题    前面几节内容介绍了常微分方程有限差分格式的推导。为加强对本专栏知识的理解,从本节开始,我们补充一些具体算例及相应的编程。    欧拉法的原理及推导请参考:常微分方程算法之欧拉法(Euler)_欧拉......
  • 如何用GO语言实现快速排序算法?
    本章教程,介绍一下如何用GO语言实现基础排序算法中的快速排序。快速排序(Quicksort)是一种高效的排序算法,它采用分治法策略,将一个数组分成两个子数组,然后递归地对这两个子数组进行排序。一、程序代码packagemainimport( "fmt" "math/rand" "time")//quickSo......
  • 算法课程笔记——蓝桥云课第23次云课
    算法课程笔记——蓝桥云课第23次云课......
  • 算法课程笔记——Kruskal & Prim
    算法课程笔记——Kruskal&Prim......
  • 模拟退火算法(Simulated Annealing, SA)及微优化(入门)
    模拟退火算法(SimulatedAnnealing,SA)是一种启发式搜索算法,常用于解决优化问题。该算法以概率的方式搜索问题的解空间,并在搜索过程中逐渐降低温度,从而有助于找到全局最优解。模拟退火算法的基本原理如下:初始化:随机生成一个初始解。迭代过程:生成一个新解,这个新解通过一......