Stanford-Coursera 算法Week1 笔记

news2025/1/16 17:43:17

题外话:全文免费放心食用,作者在此求个 三连+关注

1. Integer Multiplication(引入)

(很小的时候我们就学过:两个数字相乘的算法——将输入(两个数字)转换为输出(它们的乘积)的一组定义良好的规则;算法就是类似的:一个计算问题(输入和期望的输出),然后描述一个或多个解决该问题的算法)

1)定义计算问题:在整数乘法问题中,输入是两个n位数,我们称之为x和y, x和y的长度n可以是任意正整数;整数乘法问题的期望输出就是x·y

2)定义primitive operations:

     (i) 两个个位数相加;(ii) 两个个位数相乘;(iii)在数字的开头或结尾添加零  

e.g:  x = 5678 and y = 1234 (so n = 4).

计算会有n=4行,每行最多2n个操作(primitive operations)

所以最多会有 n · 2n 次 primitive operations

3)改进——下一节 3Karatsuba Multiplication

2.Karatsuba Multiplication

1)为了将x的前半部分和后半部分看作独立的数字,a = 56,b = 78,c = 12,d = 34

2)执行一系列只涉及两位数a, b, c和d的运算

3)将所有项集合在一起,得到x和y的乘积

第一步:计算a·c = 56·12 = 672

第二步:计算b·d = 78·34 = 2652

第三步:计算(a + b)·(c + d) = 134·46 = 6164

第四步:用第三步的结果减去前两步的结果:6164 - 672 - 2652 = 2840

第五步:计算104·672 + 102·2840 + 2652 = 6720000 + 284000 + 2652 = 70066552

2.1  A Recursive Algorithm(引入方便理解)

整数乘法递归方法

偶数n位:

伪代码(有个印象就行):

2.2 转回Karatsuba乘法

Karatsuba乘法是RecIntMult算法的优化版本

我们并不真正关心a·d或b·c,而是它们的和a·d + b·c

因此:只有个量——a·c, a·d + b·c和b·d

Step 1: Recursively递归 compute a · c 

Step 2: Recursively compute b · d

Step 3: Compute a + b and c + d , and recursively compute (a + b) · (c + d)——至此:三次递归

Step 4:用Step 3的结果减去前两步的结果,得到a·d + b·c

Step 5:乘10n次方在step 1的answer,乘10(n/2)次方在step 3的answer,最后把所有结果相加

因此,Karatsuba乘法只进行三次递归调用! 节省递归调用可以节省总体运行时间

3.MergeSort Algorithm

特点

  • Canonical divide-and-conquer algorithm 规范的分治算法:将问题分解为更小的子问题,递归地求解子问题,最后将子问题的解合并为原始问题的解
3.1 Sorting—拓展:十种基本的排序

1.0 十大经典排序算法 | 菜鸟教程 (runoob.com)

3.2 MergeSort—Example

1.递归

As a recursive divide-and-conquer algorithm作为递归分治算法, MergeSort 拆分成了两部分进行递归;第一组递归对前半部分进行排序,返回数组{1,4,5,8};第二组递归调用返回数组{2,3,6,7};最后合并两组

2.合并 Merge Subroutine 子程序

使用索引 k 遍历输出数组,并使用索引 i 和 j 遍历已排序的子数组。所有三个数组都是从左到右遍历的

第3行中的for循环实现了对输出数组的传递。在第一次迭代中,子例程识别C或D中的最小元素,并将其复制到输出数组b的第一个位置。总的来说,最小元素要么在C中(在这种情况下,它是C[1],因为C是排序的),要么在D中(在这种情况下,它是D[1],因为D是排序的)。

3.3 MergeSort—分析

因为mergesort相当于是递归+merge,所以会涉及到对递归树的分析

层数计算:

每一层的子问题&子问题大小:

4. Asymptotic Analysis 渐进分析

4.1 Big-O Notation 基础

是什么?

  • 为了讨论算法的设计和分析——为讨论算法的high-level performance提供了一个最佳点
  • 粗糙:压制住想要忽略的细节,细节取决于architecture、programming language、compiler...
  • 敏锐:常见问题的不同高级算法间进行预测性比较,尤其是large inputs

 “O”---为了找到解决问题的最佳高级算法

意思就是:

suppress constant factors & lower-order terms

抑制常数项和低阶项

结合下面例子:

抑制6n和“6”

所以running time是“big-O of nlog n” 即  O(nlogn)

例子1:

running time:O(n)

例子2:

running time:O(n)

为啥呢?其实是2n但2被抑制了

例子3:

running time:O(n^{2})

例子4:

running time:O(n^{2})

解释:外部循环从1到n,内部循环从i+1到n。内部循环的迭代次数取决于外部循环的当前迭代次数。

考虑最坏的情况,数组A中的所有元素都是相同的。在这种情况下,内部循环的迭代次数为: 1 + 2 + 3 + ... + (n-1) = n*(n-1)/2,总的迭代次数为n*(n-1)/2

4.2 Big-O Notation 正式定义

Big-O notation 关注 T(n),n = 1, 2,....

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

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

相关文章

MVSnet 代码详解(pytorch)

大致过一下MVSnet 论文中核心的点对应代码应该怎么写。 forward 函数需要 照片,映射矩阵,以及深度值。 照片的shape是 (1,5,3,1184,1600)代表着1个batch,5张图片,然后一次是每张图片的channel和…

LeetCode547省份数量

题目描述 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给…

彩色进度条(C语言版本)

.h文件 #include<stdio.h> #include<windows.h>#define NUM 101 #define LOAD_UP 50 #define LOAD_DOWN 60 #define SLEEP_SLOW 300 #define SLEEP_FAST 70 版本1&#xff1a;&#xff08;初始版&#xff09; //v1 #include "progress.h" int main() …

使用 Sonatype Nexus Repository Manager 如何安装npm.md

1. 安装与启动 Nexus2. 登录 Nexus Web UI3. 创建 npm 仓库4. &#xff08;可选&#xff09;配置 npm 代理仓库5. 创建 npm 仓库组6. 配置 npm 客户端7. 测试和使用 Sonatype Nexus Repository Manager (通常简称 Nexus) 是一个强大的二进制管理系统&#xff0c;用于存储和管理…

北京大学肖臻老师《区块链技术与应用》P20(挖矿难度调整)和P21(权益证明)

1️⃣ 参考 北京大学肖臻老师《区块链技术与应用》 P20 - ETH挖矿难度调整篇P21 - ETH权益证明篇 2️⃣0️⃣ ETH挖矿难度调整 在ETH中最长合法链也是最难合法链&#xff08;Total Difficulty&#xff09; 比特币与以太坊难度的宏观比较 比特币以太坊调整难度隔2016个区块…

LiveGBS流媒体平台GB/T28181用户手册-版本信息:查看机器码、切换查看流媒体服务

LiveGBS流媒体平台GB/T28181用户手册--版本信息:查看机器码、切换查看流媒体服务 1、版本信息1.1、查看机器码1.2、多个流媒体服务1.3、提交激活 2、搭建GB28181视频直播平台 1、版本信息 版本信息页面&#xff0c;可以查看到信令服务 流媒体服务相关信息&#xff0c;包含硬件…

MySQL5个查询

# 总查询 EXPLAIN SELECT * FROM city; # 范围查询 EXPLAIN SELECT * from city where ID>5 and ID<20; #主键查询 EXPLAIN SELECT * from city where ID5; # 索引查询 EXPLAIN SELECT * from city where CountryCodeNLD; # 普通索引 EXPLAIn SELECT * from cit…

鸿蒙OS开发:【一次开发,多端部署】(多设备自适应能力)实例

多设备自适应能力 介绍 此Demo展示在JS中的多设备自适应能力&#xff0c;包括资源限定词、原子布局和响应式布局。 效果预览 使用说明 1.本示例中的资源限定词和响应式布局针对常见设备类型做了适配&#xff0c;可以在预览器中开启"Multi-profile preview"进行多…

创建桌面快捷方式

①点击桌面任务栏中的【开始图标】>点击【所有应用】 ②将【EndNote】图标拖到电脑桌面。

用kimi一键绘制《庆余年》人物关系图谱

《庆余年》里面人物关系复杂&#xff0c;如果能画出一个人物关系图谱&#xff0c;可以直观的理解其中人物关系&#xff0c;更好的追剧。 首先&#xff0c;用kimi下载庆余年的分集剧情&#xff0c;常见文章《AI网络爬虫&#xff1a;批量爬取电视猫上面的《庆余年》分集剧情》&am…

【WebGIS实例】(15)GeoServer 备份地图服务器

笔者GeoServer版本号&#xff1a;2.23.4 官方教程文档&#xff1a;Backup and Restore Documentation — GeoServer 2.26.x User Manual 一、下载社区插件 选择对应的版本&#xff1a;Index of /geoserver/进入插件列表&#xff1a;Index of /geoserver/2.23.x/community-late…

无人机监测系统:天空之眼,精准掌握地球脉动

在当今信息化快速发展的时代&#xff0c;无人机技术以其独特的优势&#xff0c;正在成为资源调查、环境监测和规划支持的重要工具。无人机监测系统通过搭载多种传感器和设备&#xff0c;能够快速、高效地获取地表信息&#xff0c;为决策提供科学依据。 项目背景 随着全球环境…

如何在Mac上恢复未保存的Excel文件

您是否不小心关闭了 Excel&#xff0c;而没有将工作保存在 Mac 上&#xff1f;不要惊慌&#xff01;本指南概述了帮助您在 Mac 上恢复未保存的 Excel 文件的简单方法。 由于断电、系统崩溃或关闭它而不保存而意外丢失您的 Excel 文件可能会造成挫败感&#xff0c;因为您可能在…

创建型模式之单例

文章目录 概述定义场景小结 概述 设计模式包括创建型模式&#xff0c;结构型模式&#xff0c;行为型模式。 今天先看看创建型模式&#xff0c;而单例是创建型模式中的第一个而且是常用的&#xff0c;就从它开始吧。 定义 单例模式用来创建全局唯一的对象。一个类只允许创建一…

GNU Radio之OFDM Divide和Matrix Transpose底层C++实现

文章目录 前言一、OFDM Divide 模块1、简介2、模块作用3、参数意义4、C 具体实现 二、Matrix Transpose 模块1、简介2、参数意义3、C 具体实现 前言 gr-radar 中的 OFDM Divide 模块是GNU Radio中的一个组件&#xff0c;专门用于处理正交频分复用&#xff08;OFDM&#xff09;…

防火墙技术基础篇:配置基本转发策略(安全策略)

防火墙基础基础篇&#xff1a;配置基本转发策略&#xff08;安全策略&#xff09; 1 什么是安全策略&#xff1f; 安全策略指的是用于保护网络的规则。它是由管理员在系统中配置&#xff0c;决定了哪些流量可以通过&#xff0c;哪些流量应该被阻断。安全策略是防火墙产品的一…

智能科技的新风潮:探索Web3与物联网结合

引言 随着科技的不断进步和创新&#xff0c;智能科技正成为新时代的主旋律。在这个充满活力和变革的时代&#xff0c;Web3技术与物联网的结合成为了一股新的风潮。本文将深入探讨这一新趋势&#xff0c;揭示Web3与物联网结合的意义、挑战和前景。 Web3技术的特点与优势 区块链…

Git系列:git init 深入理解及其使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

好的架构是进化来的,不是设计来的

很多年前&#xff0c;读了子柳老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书&#xff0c;书中的一句话像种子一样深埋在我的脑海里&#xff1a;“好的架构是进化来的&#xff0c;不是设计来的”。 2015 年&#xff0c;我加入神州专车订单研发团队&#xff0c;亲历了专…

抄表:现代生活中的数据采集关键

1.界定与发源 抄表&#xff0c;简单的说&#xff0c;指从各种各样计量机器设备(如智能水表、电度表、天然气表等)载入做好记录使用量的全过程。这一概念自工业化时代至今就出现了&#xff0c;最初由人工进行&#xff0c;伴随着科技创新&#xff0c;如今已经演化出自动化和远程…