- 博客(13)
- 收藏
- 关注
原创 Windows系统安装Pytorch 1.8.0 GPU记录
**Windows系统下的Pytorch 1.8.0 GPU版本安装步骤记录**在此记录自己安装CUDA、cuDNN、Pytorch 1.8.0以及tensorflow 1.14.0的整个过程。一、CUDA的安装首先确定了自己的电脑是可以安装CUDA的,之后确定本机的一些相关配置,包括驱动版本、CUDA版本来下载对应的CUDA toolkit。菜单栏点击进入NVIDIA Control Panel,左下角点击系统设置查看相应的驱动版本和CUDA版本如下图:一般而言,不同版本的CUDA要求不同的
2021-12-02 17:35:07
2841
原创 算法导论第十五章动态规划学习总结(1)
本章介绍了设计和分析高效算法的三种重要技术之一的动态规划,书中列举了四个常见问题,分析如何采用动态规划方法进行解决。基本概念动态规划通常应用于最优化问题,此类问题可能包含多个可行解。每个解有一个值,而我们期望找到最大或者最小的解。动态规划适用于子问题不是独立的情况,与分治法不同,动态规划只对子问题求解一次,将其结果保存在一张表中,从而避免了每次遇到各个子问题时重新计算的情况。动态规划算法设计步骤动态规划算法设计步骤如下:1、描述最优解的结构。2、递归定义最优解的值。3、按自底向上的方式计算最优
2020-08-10 15:30:41
347
原创 算法导论第十四章数据结构扩张学习总结
本章主要介绍两种通过扩张红黑树构造出的数据结构,一种是动态顺序统计树,另一种是区间树,之后介绍了如何扩张现有数据结构的一个通用方法。动态顺序统计秩:一个元素在集合线性序中的位置顺序统计树:在红黑树上新增加1个size属性,这个属性包含了以x为根的子树(包括x本身)的(内)结点数,则该红黑树为顺序统计树,如下图所示:查找具有给定秩的元素:找出T中的第i个小的元素,调用OS-SELECT(T,i),伪代码如下:确定一个元素的秩:返回对T进行中序遍历后得到的线性序中x的位置,伪代码如下:对子树规
2020-08-10 15:30:09
241
原创 算法导论第十三章红黑树学习总结
本章介绍二叉搜索树中的红黑树,包括其定义性质、左右旋转、插入和删除操作,重点分析了在红黑树中插入和删除元素的过程,分情况进行详细讨论。红黑树红黑树是一种在每个结点上增加了一个存储位表示结点颜色(可以是RED或者BLACK)的二叉搜索树。通过对任何一条从根到叶子的路径上各个着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而红黑树是一种平衡的二叉查找树。红黑树的性质如下:1、每个结点或是红色,或是黑色。2、根结点是黑色。3、每个叶子结点(NIL)是黑色。4、如果有一个结点是红色,则它
2020-08-03 15:09:23
247
原创 算法导论第十二章二叉搜索树学习总结
本章讲解了二叉搜索树的定义及基本性质,介绍了遍历二叉搜索树的方法以及按序输出各值,二叉搜索树的查找、插入以及删除方法。二叉搜索树二叉搜索树是具有如下性质的二叉树:设x是二叉搜索树中的一个节点,如果y是x左子树中的一个节点,那么y.key ≤ x.key。如果y是x右子树中的一个节点,那么 y.key ≥ x.key。此外,二叉查找树上执行的基本操作的时间与树的高度成正比。定理12.1:如果x是一棵有n个节点子树的根,那么调用INORDER-TREE-WALK(x)需要θ(n)时间。二叉搜索树的性质使
2020-08-03 15:08:57
207
原创 算法导论第十一章散列表学习总结
散列表是可以实现字典操作(INSERT、SEARCH和DELETE)的一种有效数据结构,是普通数组概念的推广,把关键字k映射到槽h(k)上的过程称为散列,多个关键字映射到同一个数组下标位置称为冲突,好的散列函数应使每个关键字都等可能地散列到m个槽位中,以上即为本章介绍的主要内容。直接寻址表直接寻址表也即是数组,其中每个位置称为槽,一个槽对应一个关键字,是一种简单而有效的技术,但有一个明显的问题:若域U很大,要在机器中存储大小为|U|的一张表T就有点不切实际,且当实际要存储的关键字集合K相对数组的域U来说
2020-07-27 16:50:27
224
原创 算法导论第十章基本数据结构学习总结
本章讨论的是如何利用指针的简单数据结构表示动态集合以及由数组构造对象和指针的方法,其中涉及的几种基本结构有:栈、队列、链表和有根树。动态集合:由数学集合定义所衍生出来的,由算法操作的可以发生增大、缩小或其他变化的,我们称这样的集合是动态的栈和队列栈:动态集合,实现的是一种后进先出(LIFO)策略,先删除的元素是最后插入的元素,栈的操作有两个,分别为压入(PUSH)与弹出(POP),若对空栈执行pop操作,会导致错误栈下溢(underflow),若栈顶元素超出栈的大小,则导致另一个错误为栈上溢(over
2020-07-20 16:03:51
103
原创 算法导论第九章中位数和顺序统计量学习总结
本章讨论从一个由n个互异的元素构成的集合中选择第i个顺序统计量的问题,提出了顺序统计量、中位数(上中位数、下中位数)的概念,讨论了从一个集合中选择最小元素和最大元素的问题,并分析讨论了两种算法。第i个顺序统计量:在由n个元素组成的集合中,第i小的元素,如最小值为第1个顺序统计量,最大值为第n个顺序统计量中位数:集合中的“中点元素”下中位数:上中位数:最小值和最大值从一个有n个元素的集合中,找出其最大元素与最小元素。若分别找出最大值与最小值,总共需进行n-1次比较;若同时找出最大值与最小值,最多
2020-07-13 15:34:25
343
1
原创 算法导论第八章线性时间排序学习总结
本章围绕四小节展开,第一小节证明任何比较排序在最坏情况下都要经过Ω(nlgn) 次比较,第二、三、四小节分别讨论计数排序、基数排序、桶排序三种线性时间复杂度的排序算法。排序算法的下界比较排序算法具备的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。比较排序可以被抽象为一棵决策树,决策树是一棵完全二叉树,它可以表示在给定输入规模情况下,某一特定排序算法对所有元素的比较操作。定理:在最坏情况下,任何比较排序算法都需要做Ω(nlgn) 次比较。推论:堆排序和归并排序都是渐进最优的比较排序算法
2020-07-06 17:47:41
222
原创 算法导论第七章快速排序学习总结
快速排序快速排序是一种最坏情况下时间复杂度为O(n^2)的排序算法,虽然最坏情况下性能较差,但快速排序通常是实际排序应用中的最好的选择,因为它的平均性能非常好,其期望时间复杂度为O(nlgn),且O(nlgn)中隐含的常数因子非常小,且能够进行原址排序,在虚存环境中也能很好地工作,快速排序是一种不稳定的排序算法。快速排序采用的思想和合并排序是一样的,即分治法。快速排序的分治思想表现为:1、首先从待排序的数中选择一个作为基数,基数的选择对于排序的性能有很大的影响,也是快排改进的关键所在。2、分治,将比
2020-07-06 17:46:29
151
原创 算法导论第六章堆排序(heapsort)学习总结
本章主要介绍了堆排序与堆应用中的优先队列,堆排序引用了称为“堆”的数据结构进行信息管理,堆不仅用于对排序中,也可以构造一种有效的优先队列。堆堆可以被看成是一个近似的完全二叉树,则表示堆的数组A有两个属性:length[A]给出数组元素的个数,heapsize[A]是存储在数组中的堆元素个数,即A[heapsize[A]之后的元素都不属于这个堆。堆有两种:最大堆和最小堆。最大堆中,最大堆特性是指除了根以外的所有结点i, 有A[PARENT(i)] >= A[i],即每个结点的值至多和其父结点的值一
2020-06-29 17:41:29
321
原创 算法导论第四、五章学习总结
第四章主要讲递归式(recurrence),递归式是一组等式或不等式,它所描述的函数是用在更小的输入下该函数的值来定义的。本章提到三种方法来解递归式,分别是代入法,递归树方法,主方法。1.代入法(Substitution method)求解步骤:猜测解的形式;用数学归纳法求出解的常数,并证明解是正确的。应用:用于确定一个递归式的上界或下界。缺点:只能用于解的形式很容易猜的情形。总结:这种方法需要经验的积累,可以通过转换为先前见过的类似递归式来求解。2.递归树方法(Recursion-tree
2020-06-22 13:27:59
184
原创 算法导论第二章(算法基础)代码实现
算法导论第二章(算法基础)代码实现本章介绍了一个证明算法正确性的方法——循环不变式,对算法运行时间的简单分析,以及分治法。循环不变式循环不变式主要用来帮助理解算法的正确性,主要证明三条性质:初始化:循环的第一次迭代之前,它为真保持:若循环的某次迭代之前为真,则下次迭代之前仍未真终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的分治法分治法的基本思想为:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解
2020-06-15 12:21:23
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人