数据结构与算法
文章平均质量分 79
黄波波19
AI Trainer, 宝可梦训练师(未来)
展开
-
【面试高频题】从零实现神经网络的梯度反向传播算法
神经网络的训练就是梯度反向传播的过程,也是面试的时候手撕的重要考点之一!下面我搭建了两层神经网络,使用sigmoid激活函数,具体的公式推导就忽略了,但是要注意的是,记住公式是最为关键的。import numpy as npnp.random.seed(17)def sigmoid(x): return 1 / (1 + np.exp(-x))def sigmoid_grad(x): return (1.0 - sigmoid(x)) * sigmoid(x)def soft原创 2021-09-05 11:53:12 · 490 阅读 · 0 评论 -
教你一文破解连续区间分割问题:手撕矩阵链乘法与戳气球难题
一 矩阵链乘法问题1.1 基本知识1.1 两个矩阵的乘法复杂度:当两个矩阵A(p,q),B(q,r)进行乘法时,C(p,r) = AxB,时间复杂度是O(pqr)。1.2 三个及多个矩阵的复杂度:从下图看出三个矩阵进行乘法时,在不同位置进行结合,他们之间的复杂度不同!那么当有多个矩阵进行乘法时,是否能找到计算效率最高的方法?也就是让一下问题:如何确定相乘顺序(给矩阵链加括号),提高计算效率?1.2 矩阵链乘法问题由以上的铺垫,下面直接给出矩阵链乘法问题的动态规划转移方程。1)原创 2021-08-08 20:25:03 · 308 阅读 · 0 评论 -
二分查找法的介绍与应用
二分法介绍二分查找对具有指定左索引和右索引的连续序列进行操作。这就是所谓的查找空间。二分查找维护查找空间的左、右和中间指示符,并比较查找目标或将查找条件应用于集合的中间值;如果条件不满足或值不相等,则清除目标不可能存在的那一半,并在剩下的一半上继续查找,直到成功为止。如果查以空的一半结束,则无法满足条件,并且无法找到目标。https://leetcode-cn.com/leetbook/read/binary-search/xehmn2/总而言之,二分查找法直观简单,在很多题中二分查找是求解的重要组成部原创 2021-07-12 08:45:34 · 765 阅读 · 0 评论 -
使用贪心算法与动态规划团灭活动选择问题
一 活动选择问题:选择活动的最大个数1.1 问题背景1.2 贪心策略下面有三种贪心策略,只有第三种是正确的。这是因为策略3:最早结束活动优先选择最早结束的活动,可以给后面的活动留更大的选择空间。1.3 代码实现贪心算法的时间复杂度为O(nlogn),也就是排序的时间复杂度class Solution1: def activitierSelect(self, activities): # 把活动集合按照每个活动的结束时间升序排序 activiti原创 2021-07-07 22:31:14 · 542 阅读 · 2 评论 -
动态规划之编辑距离
Leetcode 72 编辑距离本文层层递进,一共使用了五种方法,用Python解决了编辑距离问题。其根本思想是使用动态规划算法,根据状态转移方程即可求解。给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符这个问题从直观上给人是很难的,但是在实际应用中非常常见。如下面的例子:输入法自动更正,当输入是左边的单词时,输入法会自动猜测到kitchen,而不是与实际输入差原创 2021-07-06 17:45:21 · 534 阅读 · 0 评论