自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leopold的博客

永远年轻,永远热泪盈眶

  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 图结构小结

总结学习了图抽象数据类型以及若干实现方法讨论了一些图的算法和应用1.广度优先搜索算法BFS,解决无权图的最短路径问题(词梯问题)2.带权图最短路径的Dijkstra算法3.图的深度优先搜索算法DFS(骑士周游问题)4.用于简化图的强连通分支算法5.用于关联任务排序的拓扑排序算法6.用于广播消息的最小生成算法...

2021-05-30 08:18:24 116 1

原创 最小生成树

文章目录1.最小生成树2.信息广播问题单播解法洪水解法最小生成树算法Prim算法Prim算法示例Prim算法:最小生成树视频地址推荐阅读1.最小生成树本算法涉及到在互联网中网游设计者和网络收音机所面临的问题:信息广播问题网游需要让玩家获知其他玩家所在的位置收音机则需要让所有听众获取直播的音频数据2.信息广播问题单播解法信息广播问题最简单的解法是由广播源维护一个收听者的列表。将每条信息向每个收听者发送一次如下图所示,每条信息会被发送4次,每个消息都采用最短路径算法到达收听者

2021-05-27 13:28:38 218

原创 图的应用:最短路径问题

最短路径问题当我们通过网络浏览网页,发送电子邮件、QQ消息传输的时候,数据在互联网设备之间流动计算机网络专业领域会详尽地研究网络各层面上的技术细节我们对Internet工作方式感兴趣的主要是其中包含的图算法PC上的浏览器向服务器请求一个网页时,请求信息需要:先通过本地局域网,由路由器A发送到Internet,请求信息沿着Internet中的众多路由器传播,最后到达服务器本地局域网所属的路由器B,从而传给服务器。标注"Internet"的云状结构,实际上是一个由路由器连接成的网络这些

2021-05-25 10:46:34 887

原创 图的应用:强连通分支

强连通分支关注一下互联网相关的非常巨大图:由主机通过网线(或无线)连接而成的图以及由网页通过超链接连接而形成的图网页所形成的图以网页(URL作为id)为顶点,网页内包含的超链接作为边,可以转换为一个有向图路德学院计算机系网站链接情况,有三个有趣的现象其中包含了许多路德学院其他系的网站还包括一些爱荷华其他大学学院的网站还有一些人文学院的网站我们可以猜想web的底层结构可能存在某些同类网站的聚集在图中发现高度聚集节点群的算法,即寻找"强连通分支Strongly Conne

2021-05-22 09:52:48 453

原创 《高效15法则:谷歌、苹果都在用的深度工作法》

伟大的事业是根源于坚韧不断的工作,以全副的精神去从事,不避艰苦。高效15法则一、数字1440的力量每天有1440分钟时间是你最宝贵也是最稀缺的资源如果你的每一天都把1440分钟过的充实有意义,那么你的人生将会发生巨大的变化。二、确立[要事]的优先地位认清你最重要的任务,并把它放在其他事情之前完成如果你不是忙着追寻自己的目标,那么你就是在为别人的目标而奔走利用早晨的最高效两小时第三章 停!不要再做任务清单了任务清单的问题1、不能区分任务2、容易让人去做『紧急』而不是

2021-05-16 16:50:53 183

原创 图的应用:拓扑排序

拓扑排序Topological Sort很多问题可以转化为图,利用图算法解决例如早餐吃煎饼的过程以动作为顶点,以先后次序为有向边问题是对整个过程而言一个人独自做时的先后次序从加料开始?还是从加热烤盘开始?从工作流程图得到工作次序排列的算法,称为拓扑排序拓扑排序处理一个DAG,输出顶点的线性序列使得两个顶点v,w,如果G中有(v,w)边,在线性序列中v就出现w之前拓扑排序广泛应用在依赖事件的排期上,还可以用在项目管理、数据库查询优化和矩阵乘法的次序优化上拓扑排序可以采用DF

2021-05-16 14:56:41 358

原创 通用的深度优先搜索

通用的深度优先搜索骑士周游问题是一种特殊的对图进行深度优先搜索其目的是建立一个没有分支的最深的深度优先树,表现为一条线性的包含所有节点的退化树一般的深度优先搜索目标是在图上进行尽量深的搜索,连接尽量多的顶点,必要时可以进行分支(创建了树)有时候深度优先搜索会创建多棵树,称为"深度优先森林"深度优先搜索同样要用到顶点的"前驱"属性,来构建树或森林另外要设置“发现时间”和“结束时间”属性前者是在第几步访问到这个顶点(设置灰色)后者是在第几步完成了此顶点探索(设置黑色)这两个属性

2021-05-13 17:12:31 251

原创 图应用:骑士周游问题

骑士周游问题在一个国际象棋棋盘上,一个棋子"马"(骑士),按照"马走日"的规则,从一个格子出发,要走遍所有棋盘格恰好一次把一个这样的走棋序列称为一次"周游"在8x8的国际象棋棋盘上,合格的"周游"数量有1.305x10^35这么多,走棋过程中失败的周游就更多了采用图搜索算法,是解决骑士周游问题最容易理解和编程的方案之一解决方案还是分为两步:首先将合法走棋次序表示为一个图采用图搜索算法搜寻一个长度为(行X列-1)的路径,路径上包含每个顶点恰一次将棋盘和走棋步骤构建为图的思路

2021-05-12 14:54:04 977

原创 实现广度优先搜索算法

实现广度优先搜索建立完单词关系图以后,需要继续在图中寻找词梯问题的最短序列需要用到"广度优先搜索Breadth First Search"算法进行搜索BFS是搜索图的最简单算法之一,也是其他一些重要的图算法的基础广度优先搜索给定图G,以及开始搜索的起始顶点sBFS搜索所有从s可到达顶点的边而且在达到更远的距离k+1的顶点之前,BFS会找到全部距离为k的顶点可以想象为以s为根,构建一棵树的过程,从顶部向下逐步增加层次广度优先搜索能保证在增加层次之前,添加了所有兄弟节点到树中从fool开始

2021-05-07 22:23:10 469

原创 数据结构与算法

图抽象数据类型的Python实现

2021-05-02 11:48:58 103 1

原创 数据结构与算法

图抽象数据类型抽象数据类型ADT Graph定义如下Graph():创建一个空的图addVertex(vert):将顶点vert加入图中addEdge(fromVert, toVert):添加有向边

2021-04-28 09:41:47 95

原创 数据结构与算法python

图(Graph)中文的"图画"在英文中有很多对应的单词。其意义大不相同Paint:用画刷画的油画Drawing:用硬笔画的素描Picture:真实形象所反映的画,照片等image:由印象而来的画,遥感影像等Figure:轮廓图的意思,某个侧面的轮廓Diagram:抽象的概念关系图,电路图、海洋环流图,类层次图Chart:有数字统计来的柱状图、饼图、折线图、map:地图、polt:地图上的一小块图Graph是比树更为一般的结构,也是由节点和边构成树是一种具有特殊结构的图图可以表示

2021-04-26 09:50:20 155

原创 数据结构与算法python第十六天

树结构小结树算法分类由于表达式解析和求值的二叉树用于实现ADT Map的二叉查找树BST树改进了性能,用于实现ADT Map的平衡二叉查找树AVL树实现了"最小堆"的完全二叉树:二叉堆各算法的时间复杂度数量级...

2021-04-14 22:00:19 104

原创 数据结构与算法python第十五天

AVL树的python实现AVL平衡树确实能够改进BST树的性能,避免退化向AVL树插入一个新key,如何才能保持AVL树的平衡性质作为BST,新key必定以叶节点形式插入到AVL树中叶节点的平衡因子是0,其本身无需重新平衡父节点的平衡因子会受到影响作为左子节点插入,则父节点平衡因子会增加1作为右子节点插入,则父节点平衡因子会减少1这种影响可能随着其父节点到根节点的路径一直传递上去,直到:传递到根节点为止或者某个父节点平衡因子被调整到0,不再影响上层节点的平衡因子为止(无论从-

2021-04-10 12:20:59 113

原创 数据结构与算法python第十四天

平衡二叉查找树:AVL树的定义AVL树:能够在key插入时一直保持平衡的二叉查找树利用AVL树实现ADT Map,基本上与BST的实现相同不同之处仅在与二叉树的生成与维护过程AVL树的实现中,需要对每个节点跟踪“平衡因子balance factor"参数根据节点的左右子树高度来定义平衡因子,确切的说,是左右子树高度差:balanceFactor - height(leftSubTree) - height(rightSubTree)如果平衡因子大于零,称为”左重left-heavy",小于零称

2021-04-08 21:28:33 108

原创 数据结构与算法python第十三天

二叉查找树的实现BST.delete方法有增就有减,最复杂的delete方法:用_get找到要删除的节点,然后调用remove来删除,找不到则提示错误def delete(self, key): if self.size > 1: #判断是否只剩一个节点 nodeToRemove = self._get(key, self.root) if nodeToRemove: se

2021-04-06 22:28:05 136

原创 数据结构与算法python第十一天

二叉搜索树的实现:BST.put方法put(key,val)方法:插入key构造BST首先看BST是否为空,如果一个节点都没有,那么key成为根节点root否则,就调用一个递归函数_put(key, val, root)来放置keydef put(self,key,val): if self.root: self._put(key, val, self.root) #哪里有根节点就插入key else: self.root = TreeNode(

2021-04-05 15:51:28 100 1

原创 数据结构与算法python第十二天

二叉查找树Binary Search Tree在ADT Map的实现方案中,可以采用不同的数据结构和搜索算法来保存和查找Key,前面已经实现了两个方案有序表数据结构+二分搜索算法散列表数据结构+散列及冲突解决算法试试用二叉查找树保存Key,实现key的快速搜索二叉查找树:ADT Map-ADT Map操作二叉查找树BST的性质-比父节点小的key都出现在左子树,比父节点大的key都出现在右子树二叉查找树的实现:节点和链接结构#二叉搜索树的实现#需要用到BST和TreeNode两个

2021-04-05 14:59:04 109

原创 Python数据结构与算法第十天

栈的应用十进制转二进制from pythonds.basic.stack import Stackdef divideBy2(decNumber): """十进制转二进制函数""" remstack = Stack() #栈 while decNumber > 0: #十进制数大于0 rem = decNumber % 2 #求余数 remstack.push(rem) #余数进栈

2020-11-05 21:57:42 118

原创 数据结构与算法python第九天

栈的应用简单括号匹配类似于这样的表达式:(5+6)*(7+8)/(4+3)有些函数语言,如Lisp,在函数定义的时候会用到大量的括号比如: (defun square(n)(* n n))这个语句定义一个计算平方值的函数括号遵循“平衡”规则对括号是否正确匹配的识别是很多语言编译器的基础算法构造括号匹配识别算法从左到右扫描括号串,最新打开的左括号,应该匹配最先遇到的右括号次序反转识别,符合栈的特性from pythonds.basic.stack import Stack

2020-09-29 22:18:14 177

原创 数据结构与算法python第八天

栈抽象数据类型及python实现什么是栈一种有次序的数据项集合生活中栈的应用盘子、托盘、书堆距离栈底越近的数据项,留在栈中的时间就越长而最新加入栈的数据项就会被先移除这种次序通常称"后进先出LIFO":Last in First out这是一种基于数据项保存时间的次序,时间越短的离栈顶越近,而时间越长的离栈底越近栈的特性: 反转次序进栈和出栈的次序正好相反某些计算机操作· 浏览器的"后退back"按钮,最先back的是最近访问的网页抽象数据类型Stack每个数据

2020-09-28 22:31:07 159 1

原创 数据结构与算法python第七天

线性结构-Linear Structure线性结构是一种有序数据项的集合,其中每个数据独有唯一的前驱和后继除了第一个没有前驱,最后一个没有后继新的数据项加入到数据集中时,只会加入到原有某个数据项之前或之后两端的称呼并不是关键,不同线性结构的关键区别在于数据项增减的方式有的结构只允许数据项从一段添加,而有的结构则允许数据项从两端移除从四种最简单且功能强大的结构入手,开始研究数据结构栈-Stack, 队列-Queue, 双端队列-Deque和列表List注: 这些数据的共同点在于,数据项

2020-09-26 19:58:11 98

原创 数据结构与算法python第六天

python数据类型的性能(下)List.pop的计时实验操作:pop( )从列表末尾移除元素, O(1)操作:pop(i)从列表中移除元素, O(n)Python所选择的实现方法从中间移除元素,要把移除元素后面的元素全部向前挪位复制一遍,看起来笨拙,这种方法能够保证按索引取值和赋值的操作很快,达到O(1),这也是一种对常用和不常用操作的折衷方案两种情况下的pop操作来实际计时对比相对同一个大小的List,分别调用pop( )和pop(0)对不同大小的List做计时时,期望的结果是·

2020-09-23 21:46:59 270

原创 数据结构与算法python第五天

python数据类型的性能中国大学链接学习python两种内置数据类型上各种操作的大O数量级列表list和字典dict通过运行估计各种操作运行时间数量级对比list和dict的操作类型ListDict索引自然数i不可变类型值key添加append、extend、insertb[k]=v删除pop、remove*pop更新a[i]=vb[k]=v正查a[i]、a[i:j]b[k]、 copy反查index(v)、coun

2020-09-22 21:18:55 153

原创 数据结构与算法python第四天

“变位词”判断问题(下)解法3:暴力法思路: 穷尽所有可能组合将s1中出现的字符进行全排列,再查看s2是否出现在全排列列表中困难: 产生s1所有字符得到全排列· 根据组合数学的结论,如果n个字符进行全排列,其所有可能的字符串个数为n!分析:n!增长速度超过2**n结论: 不是一个好算法解法4: 技术比较思路:对比两个词中每个字母出现的次数,如果26个字母出现的次数都相同,就是变位词做法: 为每个词设置一个26位的计数器,先检查每个词,在计数词中设定好每个字母出现的次数进入比较阶段

2020-09-21 21:57:52 192

原创 数据结构与算法python第三天

“变位词”判断问题中国大学链接问题描述所谓“变位词”是指两个词之间存在组成字母的重新排列关系如heartheearth, python和typhon解题目标写一个bool函数,以两个词作为参数,返回这两个词是否是变位词很好的展示同一问题的不同数量级算法解法一逐个检查def anagramSolution1(s1, s2): alist = list(s2) ->复制s2的列表 pos1 = 0 stillOK = True whi

2020-09-20 22:36:35 88

原创 数据结构与算法python第二天

大O表示法中国大学链接算法时间度量指标一个算法所实施的操作数量或步骤数可作为独立于集体程序/机器的度量指标赋值语句是一个合适的选择· 一条赋值语句同时包含了(表达式)计算和(变量)存储两个基本资源赋值语句的执行次数分析SumOfN的赋值语句执行次数·对于“问题规模” n·赋值语句数量T(n)=1+ndef sum0fN(n):1 theSum = 0n for i in range(1, n + 1): 1 theSum = theSum + i

2020-09-19 19:45:27 176

原创 数据结构与算法python第一天

小海的数据结构与算法python链接1.0 算法分析如何对比两个程序· 代码分格、可读性等等程序和算法的区别· 算法是对问题解决的分布描述· 程序则是采用某种编程语言实现得算法,同一个算法通过不同得程序员采用不同的编程语言,能产生 很多程序算法本身特性算法分析主要就是从计算资源消耗的角度来评判和比较算法累计求和问题从1到n的累加,输出总和· 设置累计变量=0· 从1到n循环,逐次累加到累计变量返回累计变量def sum0fN(n):

2020-09-18 12:57:38 133

空空如也

Tensorflow

2020-12-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除