
算法
文章平均质量分 72
xwchao2014
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法员而非程序员
作为第四届图灵奖得主,AI奠基人之一的Marvin,他发表的演讲主题是关于形式和内容的讨论。他的主论调就是内容要强于形式,而且我们目前过分关注了形式而导致计算机的发展轨迹产生了偏差。他的观点一经发出就引来了诸多的争论,有支持也有批判。本着辩证唯物的观点,我的看法是,有选择的接受。我的观点是:计算机理论的发展需要形式化,然而计算机软件应用则应该更加关注它的内容实质而非形式。论文中他主要从计算转载 2015-03-13 10:43:08 · 483 阅读 · 0 评论 -
数据结构—栈和队列的相互模拟
1、两个栈模拟一个队列栈是LILO,而队列是FIFO,所以可以:入队,直接进A号栈;出队,先判断B号栈是否有元素,有元素就直接弹出栈顶即队首,如果B号栈没有元素,则将A号栈的元素顺序弹出并进B号栈。原创 2015-05-18 16:00:20 · 558 阅读 · 0 评论 -
斐波那契数列C实现
斐波那契数列的描述:斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)(百度百科)。递归实现(效率特低,建议不使用)long fibonacci(int n){ if(n<2) return 1; ret原创 2015-05-10 16:52:10 · 3106 阅读 · 0 评论 -
算法导论—动态规划之钢条切割
动态规划和分治策略相似,不同的是,它针对的问题所分解出的小问题数量很多且很多是重复的。动态规划就是使得这些重复的小问题只需要计算一次,避免重复计算。 钢条切割问题:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...,n)求切割钢条方案,使得销售收益rn最大。 注意,如果长度为n英寸的钢条的价格pn足够大,最优解可能就是完全不需要切割(具体问题描述见算法导论第三版第15原创 2015-03-18 19:43:03 · 677 阅读 · 0 评论 -
数据结构—处理对列的上溢和下益问题
对应于算法导论中的P131,重写ENQUEUE和DEQUEUE,使之能够处理队列的上溢和下益#include #include using namespace std;#define MaxSize 100typedef struct queue{ int data[MaxSize]; int head,tail;}SqQueue;/*两个假定,队尾指针指示队尾元素在数组中的原创 2015-05-18 15:50:46 · 1246 阅读 · 0 评论 -
数据结构—数组实现两个栈,不上溢
问题描述:说明如何用一个数组A[1..n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢,注意PUSH和POP操作的时间应为O(1)。(算法导论第三版P131)思路:stack1,stack2的base分别在数组的两端。stack1每次push的时候top + 1,stack2每次push时top-1,初始时top1=base1,top2=base2,判断是否用空余空间可以用原创 2015-05-18 10:45:29 · 813 阅读 · 0 评论 -
EM算法
(EM算法)The EM Algorithm在使用高斯混合模型时需要用到EM算法,故在此处转载一篇写的比较好的文章。 EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法。在之后的MT中的词对齐中也用到了。在Mitchell的书中也提到EM可以用于贝叶斯网络中。下面主要介绍EM的整个推导过程。1.转载 2015-03-23 14:25:27 · 686 阅读 · 0 评论 -
高斯混合模型
这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation)。 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示。与k-means的硬指定不同,我们首先认为是满足一定的概率分布的,这里我们认为满足多项式分布,,其中,有k个值{1,…,k}可以选取。而且我们认为在给定后,满足多值高斯分布,即。由此可转载 2015-03-23 16:09:04 · 1100 阅读 · 0 评论 -
约瑟夫问题c++
问题描述:一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(n个)按照1-m的顺序围坐一圈,从第1开始数,每数到第m个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。解决1:使用数组存放#define Maxsize 100void jose(int n,int m){ int mon[Maxsize];int i,d,count;原创 2015-05-05 20:36:53 · 663 阅读 · 0 评论 -
面试题1——栈的最大值问题
面试题——栈的最大值问题常数时间求栈的最大值问题描述:一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。算法描述:一个存储所有最大值转载 2015-05-06 22:04:39 · 1447 阅读 · 0 评论 -
数据结构—单链表的插入
数据结构—单链表的插入关于单链表的概念以及一些基本的知识就不说明了,直接上代码!整个链表有一个根节点,用以指向第一个元素,在插入的过程中要考虑几个问题:1、插入的位置是不是第一个节点与根节点之间2、插入的位置是否是在最后(要考虑当前链表是否为空)代码1:#include #include typedef struct NODE{ struct NODE *lin原创 2015-05-13 21:52:29 · 1049 阅读 · 0 评论 -
机器学习导论
在本篇文章中,我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。这篇文档也算是 EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。当然,本文也面对一般读者,不会对阅读有相关的前提要求。在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅读完这篇非常长的文章呢?转载 2015-05-04 16:07:31 · 1475 阅读 · 0 评论 -
数据结构—单链表的排序以及逆置
1、单链表排序:单链表的排序中,只需要交换两个节点的值即可,不需要改变指向typedef struct student{int data;struct student *next;}node;//head指向表头,head->next才是第一个节点void sort(node *head){node *p=head->next;int len=len原创 2015-05-05 08:36:33 · 889 阅读 · 0 评论 -
数据结构—希尔排序
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序,是非稳定排序算法。基本思想:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入排序,使最终数组成为有序。代原创 2015-05-06 10:21:16 · 595 阅读 · 0 评论 -
基数排序与桶排序C实现
一. 算法描述基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到高位依次比较各个位。主要分为两个过程:(1)分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则放入3号桶中)(2)收集,再将放置在0~9号桶中的数据按顺序放到数组中重复(1)(2)过程,从个位到最高位(比如32位无符号整形最大数4294967296,最高位10位)以【52转载 2015-04-01 11:05:05 · 3307 阅读 · 0 评论