算法
wilson_go
这个作者很懒,什么都没留下…
展开
-
红黑树
二叉查找树(Binary Search Tree)1.左子树上所有节点的值均小于或等于它的根结点的值2.右子树上所有节点的值均大于或等于它的根结点的值3.左,右子树也是二叉查找树二分查找的思想 查找所需要的最大次数等同于二叉树的高度二叉查找树 插入,删除 性能低红黑树 Red Black Tree红黑树最早被称为平衡二叉B数,红黑树虽然非常复杂,但是它的最坏情况运行时间也是非常良好,并且在实践中是高效的:它可以在O(log n)时间内做查找,插入和删除,n是树中元素的数目。性质1.节点是红原创 2021-01-26 16:54:14 · 143 阅读 · 1 评论 -
权重衰减 L2正则化
正则化方法:防止过拟合,提高泛化能力避免过拟合的方法有很多:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout。权重衰减(weight decay)L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化。L2正则化与权重衰减系数L2正则化就是在代价函数后面再加上一个正则化项:其中C0原创 2020-08-16 14:22:50 · 604 阅读 · 0 评论 -
偏差(bias)和方差(variance)的不同
偏差(bias)和方差(variance)区别:偏差指的是算法的期望预测与真实预测之间的偏差程度, 反应了模型本身的拟合能力;方差度量了同等大小的训练集的变动导致学习性能的变化, 刻画了数据扰动所导致的影响。当模型越复杂时, 拟合的程度就越高, 模型的训练偏差就越小。 但此时如果换一组数据可能模型的变化就会很大, 即模型的方差很大。 所以模型过于复杂的时候会导致过拟合。当模型越简单时, 即使我们再换一组数据, 最后得出的学习器和之前的学习器的差别就不那么大, 模型的方差很小。 还是因为模型原创 2020-06-06 21:10:50 · 721 阅读 · 0 评论 -
最大子序和 动态规划
解法一给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。def maxSubArray(nums): length = len(nums) for i in range(1, length...原创 2019-06-21 20:10:54 · 208 阅读 · 0 评论 -
二分查找
二分查找def binary_search(alist,item): low=0 high=len(alist)-1 while low<=high: mid=(low+high)//2 if item==alist[mid]: return True elif item>alist[mi...原创 2019-06-18 20:42:11 · 150 阅读 · 0 评论 -
循环单链表
循环单链表class Node: def __init__(self, item): self.item = item self.next = Noneclass CycleLinkedList: def __init__(self): self.head = Nonedef is_empty(self): ret...原创 2019-07-02 09:09:38 · 196 阅读 · 0 评论 -
设计模式
设计模式 分为创建性,结构性,行为性模式创建性:共建单元结构性:十香袋组装外桥行为性:命中观测解责备,迭状模仿原创 2019-07-06 13:08:33 · 177 阅读 · 0 评论 -
两数之和
给定一个数字列表和一个目标值,找出列表中和为目标值的两个数 def two_sum(list, target): for i in range(len(list)): a = target - list[i] if a in list: print([i, list.index(target - l...原创 2019-06-24 18:59:44 · 165 阅读 · 0 评论 -
双向链表
双向链表节点创建创建判断空求长度遍历头插法尾插法任意位置插入删除搜索创建节点的时候比普通的单链表多一个prev指针初始化链表的时候和普通的单链表是一样的判断空和普通的单链表是一样的遍历的时候和普通链表是一样的头插法在插入非首节点的时候, head指针的prev指向node节点尾插法的时候新建的节点的prev指向cur节点搜索是一样的在任意位置插入的时候,cur指...原创 2019-07-06 13:04:38 · 140 阅读 · 0 评论 -
单向循环链表
单向循环链表class Node: def __init__(self, item): self.item = item self.next = None self.prev = Noneclass CycleLink: def __init__(self): self.head = None def...原创 2019-07-14 10:51:47 · 239 阅读 · 0 评论 -
算法分类
分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时...原创 2019-06-17 10:00:00 · 437 阅读 · 0 评论 -
中英文语料网址链接
中文:https://github.com/candlewill/Dialog_Corpus 这个是一个集合,包括之前答主的答案! 包含的语料包括了 1)小黄鸡 xiaohuangji50w_nofenci.conv.zip 2)dgk_shooter_min.conv.zip 中文电影对白语料,噪音比较大,许多对白问答关系没有对应好 3)smsCorpus_zh_xml_2015....原创 2018-10-24 18:45:50 · 3436 阅读 · 0 评论 -
时间片轮转调度算法
时间片轮转简称为时间轮,可以把时间轮作为一个表盘来进行理解,在表盘上有多个刻度,每个刻度之间有一定的距离,每个刻度都可能指向多个timer。通过一定的哈希散列算法将timer添加到某个刻度所对应的组中。每隔interval的间隔时间,时间轮进行转动,取出刻度所标记的timer集合进行处理。时间片轮转算法如上图所示,假设一个格子为1秒,整个一圈表示的时间为8秒,此时需要添加5秒后执行的任务,则此...原创 2019-01-02 12:53:20 · 8606 阅读 · 1 评论 -
算法基础
KMPdef KMP_algorithm(string, substring): ''' KMP字符串匹配的主函数 若存在字串返回字串在字符串中开始的位置下标,或者返回-1 ''' pnext = gen_pnext(substring) n = len(string) m = len(substring) i, j = 0, 0...原创 2019-06-12 19:55:04 · 184 阅读 · 0 评论 -
快速排序
快速排序def quick_sort(alist,start,end): if start>=end: return mid=alist[start] low=start high=end while low<high: while low<high and alist[high]>mid: ...原创 2019-06-18 20:43:08 · 132 阅读 · 0 评论 -
动态规划 最长公共字符串
思想:首先通过构造二维数组,较长字符串a作为行,较短字符串b作为列。将第一行和第一列初始化全初始化为1,通过递推式,如果当前两个字符串相等,则为左上角的数字加1,否则为0。找出最大的数字,最大的数字表示公共字符串的长度。找出公共字符串在字符串a的角标,从后往前数公共字符串个长度即为公共字符串。word_a="yawilsonafasfs32fda"word_b="iwilsonolnm...原创 2019-06-14 20:22:05 · 284 阅读 · 0 评论 -
选择排序
选择排序def selectsor(list): for i in range(len(list)): min=i for j in range(i+1,len(list)): if list[j]<list[min]: min=j if min!=i: ...原创 2019-06-19 19:51:30 · 134 阅读 · 0 评论 -
shell排序
def shell_sort(list):n=len(list)gap=n//2while gap > 0:print([i for i in range(gap,n)],’------------’)for i in range(gap,n):j=iwhile j>=gap and list[j-gap]>list[j]:list[j-gap],list[j]=...原创 2019-06-19 19:51:52 · 121 阅读 · 0 评论 -
排序算法
排序算法冒泡排序:n-i模型插入排序: i,0模型选择排序:选择一个小值归并排序: 分解 合并快速排序:基准 low high希尔排序:初始步长,新的步长...原创 2019-06-19 19:55:17 · 123 阅读 · 0 评论 -
归并排序
归并排序 def merge(left, right): '''合并操作,将两个有序数组left[]和right[]合并成一个大的有序数组''' #left与right的下标指针 l, r = 0, 0 result = [] while l<len(left) and r<len(right): ...原创 2019-06-19 20:02:11 · 133 阅读 · 0 评论 -
单链表
is_empty() 链表是否为空length() 链表长度travel() 遍历整个链表add(item) 链表头部添加元素append(item) 链表尾部添加元素insert(pos, item) 指定位置添加元素remove(item) 删除节点search(item) 查找节点是否存在class Node: def __init__(self,item): ...原创 2019-06-20 19:41:48 · 185 阅读 · 0 评论 -
Gossip算法详解
Gossip算法因为Cassandra而非常有名Gossip背景Gossip算法如其名,灵感来自办公室八卦,只要一个人八卦一下,在有限的时间内所有的人都会知道该八卦的信息,这种方式也与病毒传播类似,因此Gossip有众多的别名“闲话算法”、“疫情传播算法”、“病毒感染算法”、“谣言传播算法”。但Gossip并不是一个新东西,之前的泛洪查找、路由算法都归属于这个范畴,不同的是Goss...原创 2018-09-13 17:25:28 · 2499 阅读 · 0 评论