当前位置: 首页 > news >正文

《计算机算法设计与分析》笔记

第一章 算法概述

1.1算法性质:

输入、输出、确定性、有限性

1.2时间复杂度

  1. 上界记号O:如果存在正的常数C和自然数N0,使得当N≧N0时有f(N)≦Cg(N),则f(N)有上界函数g(N),记为f(N)= O(g(N))。

  2. 同阶记号θ:f(N)=θ(g(N))表示f(N)和g(N)同阶 。

  3. 下界记号Ω:如果存在正的常数C和自然数N0,使得当N≧N0 时有f(N)≧Cg(N),则f(N)有下界函数g(N),记为f(N) = Ω(g(N))。

1.3NP完全性理论

P类问题:是指一类能够用确定性算法在多项式时间内求解的判定问题。其实,在非正式的定义中,我们可以把那些在多项式时间内求解的问题当作P类问题。

NP类问题:是指一类可以用不确定性多项式算法求解的判定问题。(不确定性算法:非确定(“猜想”)阶段+确定(“验证”)阶段)

第二章 递归与分治策略 

2.1 递归

递归算法是一个直接或间接地调用自己的算法。

例1:阶乘函数

int  fac(int n)
{ if (n==0) return 1;return n*fac(n-1);
}

 例2:Hanoi塔问题。

汉诺塔问题可以通过以下三个步骤实现:

(1)将塔A上的n-1个碟子借助塔C先移到塔B上。

(2)把塔A上剩下的一个碟子移到塔C上。

(3)将n-1个碟子从塔B借助塔A移到塔C上。  

void move(char x,char y)
{printf("%c->%c\n",x,y);
}void hanoi(int n, char a, char b, char c){if (n == 1) move(a,c);else {                                              hanoi(n-1, a, c, b); move(a,c);                         hanoi(n-1, b, a, c);             
}

例3:多变元递归——整数划分问题

例:整数划分问题:将一个正整数n表示为一系列正整数之和,n = n1 + n2 +…+nk    其中n1≥n2≥…≥nk≥1, k≥1。

 例如 p(6) = 11 ,即整数6的划分数为11种:  

6, 5+1, 4+2, 4+1+1,  3+3, 3+2+1, 3+1+1+1,  2+2+2, 2+2+1+1, 2+1+1+1+1, 1+1+1+1+1+1

最简单情形:(1) q(n, 1)=1,q(1, m) =1 n, m≥1;

递归关系: (2) q(n, n) = 1 + q(n, n–1),n>1;

产生的新情况: (3) q(n, m) = q(n, m–1) + q(n–m, m),  n>m>1          

划分中不含m的情况  划分中含m的情况 (4) q(n, m) = q(n, n),  n<m。

例4:多步递归——Fibonacci数列 

 

2.2分治法

解型为T(n)=aT(n/b)+O(nd)的递归方程

设a>=1和b>1是常数,f(n)是一个函数,

T(n)是定义在非负整数集上的函数:T(n)=aT(n/b)+ O(nd)

例1:二分搜索技术

int BinarySearch(Type a[ ], const Type &x, int n)
{int left=0;int right=n-1;while (left <= right ){ int middle = (left+right)/2;if (x == a[middle]) return middle;if (x < a[middle]) right = middle-1; else left = middle+1;}return -1;
}

例2:大整数的乘法

相关文章:

《计算机算法设计与分析》笔记

第一章 算法概述 1.1算法性质&#xff1a; 输入、输出、确定性、有限性 1.2时间复杂度 上界记号O&#xff1a;如果存在正的常数C和自然数N0&#xff0c;使得当N≧N0时有f(N)≦Cg(N)&#xff0c;则f(N)有上界函数g(N)&#xff0c;记为f(N) O(g(N))。 同阶记号θ&#xff1a;…...

智能指针怎么就智能了?

在C中&#xff0c;内存泄漏是一个不太容易发现但又有一定影响的问题&#xff0c;而且在引入了异常的机制之后&#xff0c;代码的走向就更加不可控&#xff0c;更容易发生内存泄露。【补充&#xff1a;内存泄露&#xff08;Memory Leak&#xff09;指的是在程序运行期间&#xf…...

mysql 限制用户登录次数超过3次就 锁定账户在一段时间内不运行操作

这里是引用 主要实现步骤&#xff1a; 1.目测安装的mysql版本得是5.7.40往上&#xff0c;因为我的版本是5.7.14发现里面没有控制等下限制这个插件&#xff0c;插件具体的查看是在你安装目录下的lib/pugin下面 比如我的&#xff1a;C:\zz\ProgramFiles\MySQL\MySQL Server 5.7\l…...

深度学习中的常用线性代数知识汇总——第二篇:行列式、逆矩阵、特征值与特征向量

文章目录 0. 前言1. 行列式1.1 行列式的定义1.2 行列式的计算方法1.3 行列式的性质1.4 行列式在深度学习中的应用 2. 逆矩阵2.1 逆矩阵的定义2.2 逆矩阵的计算方法2.3 逆矩阵的性质2.4 逆矩阵在深度学习中的应用 3. 特征值与特征向量3.1 特征值与特征向量的定义3.2 特征值和特征…...

《MaPLe: Multi-modal Prompt Learning》中文校对版

系列论文研读目录 文章目录 系列论文研读目录题目&#xff1a;《Maple&#xff1a;多模态提示学习》摘要1.简介2.相关工作视觉语言模型&#xff1a;提示学习&#xff1a;视觉语言模型中的提示学习&#xff1a; 3.方法3.1.回看CLIP编码图像&#xff1a;编码文本&#xff1a;Zero…...

MFC修改控件ID的详细说明

控件的ID可以在该对话框的.rc中修改 首先需要开启资源视图 然后在资源视图中打开该对话框 选中某个控件&#xff0c;就可以在属性面板中修改ID了 在此处修改ID后&#xff0c;对应Resource.h中也会发生变化 若在.rc中创建了一个控件时&#xff0c;Resource.h中会生成一个对应…...

MySQL高可用配置及故障切换

目录 引言 一、MHA简介 1.1 什么是MHA&#xff08;MasterHigh Availability&#xff09; 1.2 MHA的组成 1.3 MHA的特点 1.4 MHA工作原理 二、搭建MySQL MHA 2.1 实验思路 2.2 实验环境 1、关闭防火墙和安全增强系统 2、修改三台服务器节点的主机名 2.3 实验搭建 1、…...

AI模型一体机:智能办公的未来

引言 随着人工智能技术的飞速发展&#xff0c;我们正步入一个全新的智能办公时代。AI模型一体机&#xff0c;作为这个时代的先锋产品&#xff0c;正以其强大的功能和便捷的操作&#xff0c;改变着我们的工作方式。它不仅仅是一个硬件设备&#xff0c;更是一个集成了最新人工智…...

jina的Embedding Reranker

插入向量库是否需要使用 Jina 的 Embedding 和 Reranker 取决于你希望如何处理和优化语义搜索的质量。以下是使用 Jina Embedding 和 Reranker 的原因&#xff0c;以及它们如何作用于插入向量库的流程。 1. Jina 的 Embedding 作用 Jina 是一个流行的开源框架&#xff0c;用于…...

Prompt Engineer: 使用Thought来提升LLM的回复能力

这是一个小的实验, 用来测试思维导图这种表达形式对于LLM在答案组织上是否会有帮助 结构化Prompt 根据目前的测试来看, 结构化Ptompt在实践中有着很好的可读性以及可维护性. (通常来说我使用Markdown格式来作为输入的格式, 虽然在内容完整性上存在问题, 但是我是不喜欢写丑陋…...

tekton构建标准ci(clone repo, test, build push img)

场景介绍 我们在上一篇文章中构建了一个最简单的ci&#xff0c;接下来我们对我们的github的项目构建一个较标准的ci。 Tekton简介&#xff0c;安装和构建最简单ci/cd-CSDN博客文章浏览阅读239次&#xff0c;点赞2次&#xff0c;收藏2次。本文介绍了tekton是什么&#xff0c;如…...

【电力系统】复杂网络分析在电力系统规范中的应用

摘要 复杂网络分析在电力系统中的应用为理解和优化电力系统的运行提供了新的视角。本文探讨了复杂网络理论在电力系统规范中的应用&#xff0c;通过分析电力系统的拓扑结构、节点重要性和脆弱性&#xff0c;提出了优化电力系统设计和运行的新策略。仿真结果表明&#xff0c;复…...

CDGA|推动数据治理与传统产业深度融合:策略与实践路径

在数字化浪潮席卷全球的今天&#xff0c;数据已成为推动经济社会发展的关键生产要素。传统产业&#xff0c;作为国民经济的基石&#xff0c;正面临着前所未有的转型挑战与机遇。如何让数据治理这一现代管理理念与实践方法深度融入传统产业&#xff0c;促进其转型升级与高质量发…...

【FastAPI】离线使用Swagger UI 或 国内网络如何快速加载Swagger UI

在FastAPI中&#xff0c;默认情况下&#xff0c;当应用启动时&#xff0c;Swagger UI 会通过在线加载 Swagger UI 的静态资源。这意味着如果应用运行在没有互联网连接的环境中&#xff0c;默认的 Swagger 文档页面将无法加载。 为了在离线环境中使用 Swagger UI&#xff0c;你…...

Linux:从入门到放弃

目录 一、基础巩固Linux&#xff1a;常用命令 二、实战应用Linux&#xff1a;CentOS7基础配置Linux&#xff1a;CentOS7安装MySQL 三、常见问题Linux&#xff1a;yum源失效问题 一、基础巩固 Linux&#xff1a;常用命令 二、实战应用 Linux&#xff1a;CentOS7基础配置 Lin…...

SVM 监督学习

一、分类问题 利用一条直线分类存在很多问题 二、SVM 支持向量机 其核心思想是通过在特征空间中找到一个最优的超平面来进行分类&#xff0c;并且间隔最大。分类面尽可能远离样本点&#xff0c;宽度越大越好。 适用于中小型复杂数据集的分类。 三、硬间隔和软间隔 硬&#x…...

奖励模型的训练

文章目录 训练方法训练策略代码实践由于 RLHF 的训练过程中需要依赖大量的人类偏好数据进行学习,因此很难在训练过程中要求人类标注者实时提供偏好反馈。为此,我们需要训练一个模型来替代人类在 RLHF 训练过程中实时提供反馈,这个模型被称为奖励模型。在训练开始前,我们需要…...

Ubuntu22.04之禁止内核自动更新(二百六十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

kaggle题-房价预测(Pytorch),手把手教,全文代码解释

房价预测 本题是经典的通过表格数据去预测最终值&#xff0c;主要分为几大步骤&#xff1a; 一.将数据集修改为可以代入到网络模型的数字&#xff0c;因为给的数据大部分都是str类型&#xff0c;是无法直接放到网络模型里跑的&#xff0c;例如下图&#xff0c;很多标签值为str类…...

PulseSensor心率传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.接线图 2.引脚描述 3.工作原理&#xff1a;光电容积法原理 4.工作原理&#xff1a;心率采样数据处理算法 三、程序设计 main.c文件 adcx.h文件 adc.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 PulseSensor传感器是一种基…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...