高级算法复习

时间代价

主定理

在这里插入图片描述
在这里插入图片描述

递归树

排序

在这里插入图片描述

贪心算法

  • 贪心选择性(Greedy-choice property):
    通过做出局部最优(贪婪)选择,可以得出全局最优解——这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别

  • 最优子结构性质(Optimal substructure property):
    当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质——最优子结构性质是该问题可用 动态规划算法 or 贪心算法 求解的关键特征

英语:全局最优解optimum solution
与动态规划区别:是否产生最优解;贪心选择更简单高效;对应问题都具有最优子结构,但贪心算法要满足贪心选择性,动态规划满足重合子问题(overlapping subproblem)

动态规划

矩阵链乘法(Matrix-chain Multiplication)

最长公共子序列(Longest Common Subsequence)

凸多边形的三角形分解(Triangle Decomposition of Convex Polygon)

最优二叉搜索树(The Optimal Binary Search Trees)

B树

  • B树=B-树
  • B树的value在每个节点,B+树的value在叶子节点(内部节点只有key),2-3-4树是4阶B树(4 order)(子树个数可能有2,3,4个,也就是节点key可能有1,2,3个)
  • B树的最小度数(minimum degree)为t,代表每个节点最少有t个子树(根节点除外,根节点可以只有2个子树),即有t-1个key;并且每个节点最多有2t个子树,即有2t个key。题目中介绍B树会说:a B-tree with minimum degree 2
  • B树的阶数(order)=节点子树的上限,B树节点的最小度数t=这棵树的阶数为2t(4阶B树最多有4个子树,节点最小度为2)
  • B树节点的分裂:B树最小度为t,当节点有2t-1个key时也就是full时,如果进行分裂,则左子树有t-1个,右子树有t-1个key,把中间剩下的key移到上一层
  • B树的插入:直接按大小顺序插入到底层,往下走的过程中碰到full节点就分裂(这就避免了最底层节点分裂造成的网上连续分裂),走到底层碰到full节点就先分裂再插入

红黑树

五条性质

在这里插入图片描述

高,黑高,节点个数

在这里插入图片描述
黑高是高的一半: bh = h/2
高为h的树的节点总数2h-1
在这里插入图片描述

红黑树插入节点

1.父叔都是红
在这里插入图片描述
2.父红叔不红----一定接3
在这里插入图片描述
3.父红叔不红
在这里插入图片描述

哈希

chain

用链表解决哈希
The expected time for an unsuccessful search for a record with a given key is = Θ(1 + α)。α是装载因子

开放寻址法

linear probing
  • Given an ordinary hash function h’(k), linear probing uses the hash function h(k,i) = (h’(k) +i) mod m.
Quadratic probing
  • h(k,i) = (h’(k) +c1i+c2i2) mod m.
    Where h’(k) is an auxiliary hash function, c1 and c2 ≠0 are auxiliary constants.
Double hashing
  • h(k,i) = (h1(k) +ih2(k)) mod m.

证明要1/(1–α)个探针才能找到元素

  • Given an open-addressed hash table with load factor α= n/m< 1, the expected number of probes in an unsuccessful search is at most 1/(1–α).

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Redis 实现生成分布式全局唯一ID(使用SpringBoot环境实现)

目录 一、前言二、如何通过Redis设计一个分布式全局唯一ID生成工具2.1、使用 Redis 计数器实现2.2、使用 Redis Hash结构实现 三、通过代码实现分布式全局唯一ID工具3.1、编写获取工具3.2、测试获取工具 四、总结 一、前言 在很多项目中生成类似订单编号、用户编号等有唯一性数…

创建云端服务器

1.申请云端服务器 每个账户有三个月的免费试用 我的服务器选择是centos7 &#xff0c;别选成win了。 2.创建实例 创建实例的步骤&#xff0c;阿里云有文档 介绍 大致就是 左边点实例 -》 顶部选你申请服务器时的地区-》下面就出现一条实例-》点更多 -》要重置实例密码 -》同一…

Docker安装ewomail

ewomail相关链接 官网官方安装文档gitee 开始安装 快速安装 wget -c https://down.ewomail.com/install-03.sh && sh install-03.sh 域名docker安装 创建docker容器 docker run -idt \-p 25:25 \-p 110:110 \-p 143:143 \-p 465:465 \-p 587:587 \-p 993:993 \-…

【带头学C++】----- 三、指针章 ---- 3.10 函数指针(补充基础知识)

1.函数指针 1.1 函数的返回值类型为指针类型 将函数内部的合法地址通过返回值 返回给函数外部使用 注意:函数不要返回普通局部变量的地址 分析&#xff1a; 在这段代码中&#xff0c;函数getAddr()返回一个指向局部变量data地址&#xff08;作用域是函数内部&#xff09;的指…

DevOps简介

DevOps简介 1、DevOps的起源2、什么是DevOps3、DevOps的发展现状4、DevOps与虚拟化、容器 1、DevOps的起源 上个世纪40年代&#xff0c;世界上第一台计算机诞生。计算机离不开程序&#xff08;Program&#xff09;驱动&#xff0c;而负责编写程序的人&#xff0c;被称为程序员&…

Django ModelSerializer 实现自定义验证详解

随着 Web 开发的日益复杂化&#xff0c;对数据验证的需求也日益增加。Django REST framework 提供了一套强大的、灵活的验证系统&#xff0c;帮助开发者轻松处理各种复杂情况。本文将重点探讨 Django ModelSerializer 中如何实现自定义验证。 1. 简介 Django ModelSerializer…

深度学习 opencv python 实现中国交通标志识别 计算机竞赛_1

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

2023面试笔记四

1、gc导致的cpu冲高 排查是否为gc导致&#xff0c;看如下两点&#xff1a; gc频率和耗时 内存占用率 &#xff08;1&#xff09;gc频率和耗时有两种手段看&#xff1a; 第一种&#xff1a;根据gc日志的打印时间&#xff0c;可确定每次gc间隔的时间和耗时&#xff1a; 使用…

一个界面现代美观,色彩年轻化的Vue3+SpringBoot3前后端分离中后台管理脚手架

&#x1f4da; 在线文档 | ✨ 提交需求 | &#x1f680; 演示地址&#xff08;账号/密码&#xff1a;admin/admin123&#xff09; 简介 ContiNew Admin &#xff08;Continue New Admin&#xff09;中后台管理框架/脚手架&#xff0c;持续以最新流行技术栈构建&#xff0c;拥…

[git] cherry pick 将某个分支的某次提交应用到当前分支

功能&#xff1a;将某个分支的某次提交应用到当前分支 应用场景&#xff1a; 在合并分支时&#xff0c;是将源分支的所有内容都合并到目标分支上&#xff0c;有的时候我们可能只需要合并源分支的某次或某几次的提交&#xff0c;这个时候我们就需要使用到git的cherry-pick操作…

单链表(4)

看尾插函数 尾插函数跟头插函数唯一的不同就是找尾巴 尾插函数&#xff1a; 首先是动态申请一个新结点 把val放到新结点里面当新结点的data 然后在单链表里面找尾巴 比如说指针p找到尾巴了&#xff0c;现在将指针p指向新的结点&#xff0c;尾插就好了 这里的p类似于头插函…

Presto资源管理之Resource Groups And Selector

文章目录 前言资源组配置选择器规则 Selector Rules全局配置 Global Properties选择器属性配置案例配置 prestoDb 前言 资源组对资源使用进行限制&#xff0c;并可以对在其中运行的查询执行队列策略&#xff0c;或将资源分配给子组。查询属于单个资源组&#xff0c;并且从该组…

ESP32建立TCP连接

ESP32建立TCP连接 1.搭建ESP-IDF开发环境 搭建开发环境直接从官网下载即可。 https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1.1/esp32s3/index.html https://dl.espressif.com/dl/esp-idf/?idf4.4 使用官方的下载器下载好&#xff0c;就可以自动安装&#xff0…

Java poi给docx中的关键字标记颜色

Java poi给docx中的关键字标记颜色 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId>&l…

用于图像处理的高斯滤波器 (LoG) 拉普拉斯

一、说明 欢迎来到拉普拉斯和高斯滤波器的拉普拉斯的故事。LoG是先进行高斯处理&#xff0c;继而进行拉普拉斯算子的图像处理算法。用拉普拉斯具有过零功能&#xff0c;实现边缘岭脊提取。 二、LoG算法简述 在这篇博客中&#xff0c;让我们看看拉普拉斯滤波器和高斯滤波器的拉普…

Java 并发编程面试题——重入锁 ReentrantLock

目录 1.ReentrantLock 是什么&#xff1f;2.✨什么是重入锁&#xff1f;ReentrantLock 是如何实现可重入特征的&#xff1f;3.公平锁和非公平锁有什么区别&#xff1f;ReentrantLock 分别是如何实现的&#xff1f;4.✨ReentrantLock 的实现原理是什么&#xff1f;5.为什么 Reen…

Sui与SUMM3R推出NFT增长计划,毕业即提供5万美元资助

为了寻找并支持专注于NFT的高质量初创企业&#xff0c;我们自豪地宣布在Sui上推出NFT增长计划SUMM3R。这是一个为种子期和初创期公司提供的综合计划&#xff0c;该加速器将利用Sui独特的NFT技术&#xff0c;为它们提供无与伦比的知识、连接和资源&#xff0c;以建立可持续的业务…

k8s 部署mqtt —— 筑梦之路

mqtt是干嘛的&#xff0c;网上有很多资料&#xff0c;这里就不再赘述。 --- apiVersion: apps/v1 kind: Deployment metadata:labels:app: mqttname: mqttnamespace: default spec:replicas: 1selector:matchLabels:app: mqttstrategy:rollingUpdate:maxSurge: 25%maxUnavaila…

Leetcode_2:两数相加

题目描述&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff…

远程运维如何更高效的远程管理?向日葵的这几项功能会帮到你

具备一定规模的企业&#xff0c;其IT运维需求普遍会面临设备数量众多、难以统一高效管理、始终存在安全敞口等问题&#xff0c;尤其是针对分部广泛的无人值守设备时&#xff0c;更是如此。 举一个简单的例子&#xff0c;一台位于商圈的无人值守可互动广告机设备&#xff0c;所…