随笔分类 - [41]Algorithm算法
-
基于ReliefF和K-means算法的医学应用实例
摘要:基于ReliefF和K-means算法的医学应用实例数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。数据挖掘(DataMiriing),指的是从大型数据库或数据仓库中提取人们感兴趣的知识,这些知识是隐含的、事先未知的潜在有用信息,数据挖掘是目前国际上,数据库和信息决策领域的最前沿研究方向之一。因此分享一下很久以前做的一个小研究成果。也算是一个简单的数据挖掘处理的例子。1.数据挖掘与聚类分析概述数据挖掘一般由以下几个步骤:(l)分析问题:源数据数据库必须经过评估确认其是否符合数据挖掘标准。以决定预期结果,也就选择了这项工作的最优算法。(2)提取、清洗和校验数据 阅读全文
-
K-Means算法
摘要:K-Means算法K-Means算法的输入N,K和一个size为N的向量组vector.输出K个两两互不相交的向量组.其本质是将给定的向量组划分成K个类别,使得同类别的向量相似度比较大,而不同类别的向量之间的相似度较小. 比如以下这个图,人肉眼能看出有四个点团,但计算机不知道,为了让计算机明白这一点,可以将点的坐标提取到向量组中,而向量之间的相似度定义为点之间的距离的相反数或者倒数.从而将这些点分开. 实现过程: (1)从n个数据对象任意选择k个对象作为初始聚类中心; (2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分; (3)重新 阅读全文
-
并查集与最小生成树
摘要:并查集与最小生成树 拨开云雾见天日……一.问题引入 昨晚和老婆深入交流了下,得出了重大结论:必须要创业。 最后一次给孩子们讲课讲的这个,不过效果不怎么理想,一问才知道大一的说只要一涉及到树就不懂了,我就怀疑讲树哥们怎么讲的(呵呵,纯属调侃,勿怪),竟然让孩子们连入门都没有,不过在这么久我也见怪勿怪了,很多老师都只是空谈,何谈入门,怪不得美国重视启蒙教育。 我坚信:没有不好的学生,只有垃圾的教育。话虽这么说,但是我即便讲得再好也没有多少人会感激我(想起了组成刘静老师),没有利益关系,算了,社会就这样,不过我是真心感谢王老师……二.理论准备 说之前,我想再说一下,树图等只是一种逻辑表示,存在于脑海 阅读全文
-
图的遍历
摘要:图的遍历《算法设计手册》面试题解答 第五章:图的遍历 附:DFS应用之找挂接点第五章面试题解答5-31. DFS和BFS使用了哪些数据结构?解析: 其实刚读完这一章,我一开始想到的是用邻接表来表示图,但其实用邻接矩阵也能实现啊?后来才发现应该回答,BFS用队列实现;DFS可以用栈实现也可以改写成递归形式。用栈来消除递归改写DFS也出现在《算法导论》的练习题22.3-6。5-32. 写一个函数,在遍历二叉查找数的时候,输出第i个结点。解析: 模仿DFS遍历时维护一个进入时间数组和完成时间数组的特点,维护一个全局变量n,在中序遍历的时候,每遍历一个结点就n++,直到n=i时打印这个结点,或... 阅读全文
-
排序和搜索
摘要:排序和搜索 如果给你1,000,000个整数来排序,你会选择什么算法?消耗的时间和空间呢?解析: 我个人倾向于用随机化的快速排序。 首先是它在平均意义上来看比同样O(nlogn)的归并排序和堆排序快(见4-41)。 另外,和堆排序相比,快速排序的元素扫描是线性的,而且交换常被限制在一个有限范围内。假如这所有的整数不能存入内存,那么发生缺页中断的次数也小于堆排序。当然,当数据量更大时,问题就会牵扯到内部排序(英文维基/百度百科)和外部排序(英文维基/百度百科)的讨论。 同时,在《编程珠玑》上看到,如果这些数字有特征,如不重复出现,且范围不是很大,那么可以设计出专门的算法来完成,比如使用... 阅读全文
-
Single Image Haze Removal Using Dark Channel Prior
摘要:《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果及其他。Posted on2013-08-25 23:36Imageshop阅读(242) 评论(3)编辑收藏 【由于周五写的很匆忙,导致文中内容不详细,周末又仔细的整理和汇总了下,做了大量的修改,因此把原文删除重新发布了】。 在图像去雾这个领域,几乎没有人不知道《Single Image Haze Removal Using Dark Channel Prior》这篇文章,该文是2009年CVPR最佳论文。作者何凯明博士,2007年清华大学毕业,201. 阅读全文
-
海量数据相似度计算之simhash和海明距离
摘要:海量数据相似度计算之simhash和海明距离通过采集系统我们采集了大量文本数据,但是文本中有很多重复数据影响我们对于结果的分析。分析前我们需要对这些数据去除重复,如何选择和设计文本的去重算法?常见的有余弦夹角算法、欧式距离、Jaccard相似度、最长公共子串、编辑距离等。这些算法对于待比较的文本数据不多时还比较好用,如果我们的爬虫每天采集的数据以千万计算,我们如何对于这些海量千万级的数据进行高效的合并去重。最简单的做法是拿着待比较的文本和数据库中所有的文本比较一遍如果是重复的数据就标示为重复。看起来很简单,我们来做个测试,就拿最简单的两个数据使用Apache提供的 Levenshtein fo 阅读全文
-
GC算法精解(五分钟教你终极算法---分代搜集算法)
摘要:GC算法精解(五分钟教你终极算法---分代搜集算法)引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极。说不定若干年以后,还会有新的终极算法,而且几乎是一定会有,因为LZ相信高人们的能力。 那么分代搜集算法是怎么处理GC的呢?对象分类 上一章已经说过,分代搜集算法是针对对象的不同特性,而使用适合的算法,这里面并没有实际上的新算法产生。与其说分代搜集算法是第四个算法,不如说它是对前三个算法的实际应用。 首先我们来探讨一下对象的不同特性,接下来LZ和各位来一起给这些对象选择GC算法。 内存中的对象按照生命周期的长短大致可以分为三种,以下命名均为... 阅读全文
-
冒个泡、排个序
摘要:冒个泡、排个序在C#中说到排序的方法,相信大家都会首先想到冒泡排序,当然也还有其它的排序办法,如选择排序等等,本文就讲解一下平常用的最多的冒泡排序。首先我们看一下冒泡排序的原理,我们声明一个数组: //这种声明的话数组长度和后面的值必须保持一致才可以, //比如说你声明的数组长度是5,那么你后面必须有5个数值。 int[] Temp01 = new int[5] { 10, 5, 28, 19 ,33}; //集合,这样比较灵活,不必要指定长度 List list01 = new Lis... 阅读全文
-
决策树分类算法
摘要:数据挖掘系列(6)决策树分类算法从这篇开始,我将介绍分类问题,主要介绍决策树算法、朴素贝叶斯、支持向量机、BP神经网络、懒惰学习算法、随机森林与自适应增强算法、分类模型选择和结果评价。总共7篇,欢迎关注和交流。 这篇先介绍分类问题的一些基本知识,然后主要讲述决策树算法的原理、实现,最后利用决策树算法做一个泰坦尼克号船员生存预测应用。一、分类基本介绍 物以类聚,人以群分,分类问题只古以来就出现我们的生活中。分类是数据挖掘中一个重要的分支,在各方面都有着广泛的应用,如医学疾病判别、垃圾邮件过滤、垃圾短信拦截、客户分析等等。分类问题可以分为两类: 归类:归类是指对离散数据的分类,比如对根据一个... 阅读全文
-
《算法设计手册》面试题解答 第一章
摘要:《算法设计手册》面试题解答 第一章目录系列简介不用*和/计算整数除法25匹马找出前5名估算题样例系列简介: 《算法设计手册》(The Algorithm Design Manual)是本比较经典的算法书了。如果说《算法导论》偏向于数学,那么《算法设计手册》更偏向于工程应用(至于《计算机程序设计艺术》,目前我是没时间通读,只是偶尔当工具书查查,就不提了)。前者的课后题中的面试题部分挺潮的,如果在google上搜索一下,发现很多都是名企考过的,或许是因为第二版出版时间比较近的缘故?我不大相信是作者自己出的然后被大公司拿去面试的,而是作者收录的考过的面试题。有了这一层筛选,这些面试题质量有保证啊。. 阅读全文
-
肤色检测算法 - 基于不同颜色空间简单区域划分的皮肤检测算法
摘要:肤色检测算法 - 基于不同颜色空间简单区域划分的皮肤检测算法由于能力有限,算法层面的东西自己去创新的很少,很多都是从现有的论文中学习,然后实践的。 本文涉及的很多算法,在网络上也有不少同类型的文章,但是肯定的一点就是,很多都是不配代码的,或者所附带的代码都是象征性的,速度慢,不优雅,不具有实用价值,本文努力解决这些问题。 文中各算法出现的顺序并不代表算法的优越性,仅仅是作者随机排布的而已。 2、基于RGB颜色空间的简单阈值肤色识别在human skin color clustering for face detection一文中提出如下简单的判别算式: R>95 And G>40 阅读全文
-
二分图最大匹配
摘要:二分图最大匹配Posted on2013-08-15 14:13DM张朋飞阅读(167) 评论(0)编辑收藏一.理论准备 这两天看到了图论的二部图,闲着没事就水了一道。 先看增广路的定义:增广路,也称增广轨或交错轨:若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。 由增广路的定义可以推出下述三个结论:P的路径长度必定为奇数,第一条边和最后一条边都不属于M。不断寻找增广路可以得到一个更大的匹配M’,直到找不到更多的增广路,M为G的最大匹配当且仅当不存在M的增广路径。最大匹配数M+最大独立数N=总的结点数 阅读全文
-
七大排序的个人总结(三)
摘要:七大排序的个人总结(三)堆排序(Heap):要讲堆排序之前先要来复习一下完全二叉树的知识。定义:对一棵具有n个结点的二叉树按层序编号,如果编号为i(0 = 0; i--) { adjust(array, i, array.length); }} private static void adjust(int[] array, int n, int size) { int temp = array[n]; // 先拿出数据 int child = n * 2 + 1; // 这个是左孩子 while (child array[child]) { ... 阅读全文
-
七大排序的个人总结2
摘要:七大排序的个人总结(二)归并排序(Merge Sort):归并排序是一个相当“稳定”的算法对于其它排序算法,比如希尔排序,快速排序和堆排序而言,这些算法有所谓的最好与最坏情况。而归并排序的时间复杂度是固定的,它是怎么做到的?两个有序数组的合并:首先来看归并排序要解决的第一个问题:两个有序的数组怎样合成一个新的有序数组:比如数组1{ 3,5,7,8 }数组2为{ 1,4,9,10 }:首先那肯定是创建一个长度为8的新数组咯,然后就是分别从左到右比较两个数组中哪一个值比较小,然后复制进新的数组中:比如我们这个例子:{3,5,7,8 } {1,4,9,10 } { }一开始新数组是空的。然后两个指针 阅读全文
-
红黑树(一) 原理和算法详细介绍
摘要:红黑树(一) 原理和算法详细介绍红黑树(一) 原理和算法详细介绍 作者:Sky Wang 于 2013-08-08 概述:R-B Tree,又称为“红黑树”。本文参考了《算法导论》中红黑树相关知识,加之自己的理解,然后以图文的形式对红黑树进行说明。本文的主要内容包括:红黑树的特性,红黑树的时间复杂度和它的证明,红黑树的左旋、右旋、插入、删除等操作。 请尊重版权,转载注明出处:http://www.cnblogs.com/skywang12345/p/3245399.html1 R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为... 阅读全文
-
2013腾讯编程马拉松初赛
摘要:2013腾讯编程马拉松初赛(3月24日)1 题目一小Q系列故事——最佳裁判 这道题就是找最大值和最小值的题目,学过c的应该都没问题的。2 题目二小明系列问题——小明序列 这道题目是最长上升子序列的一种变形吧,就是子序列中相邻数的下标之差必须大于d(开始看错题目,以为是相邻数之差大于d,结果wa了好多次,最后看了别人的discuss才恍然大悟啊!)。用二分查找在子序列中要替换的位置,注意在处理第i个数时,才更新第i-d个数在子序列中的位置就行了,而不是原来更新第i个数在子序列中的位置。 1 #include 2 3 #define INIFITE 100000000 4 int n, d... 阅读全文
-
绘制基本图形和线型(StrokeStyle)的设置详解
摘要:绘制基本图形和线型(StrokeStyle)的设置详解目前,在博客园上,相对写得比较好的两个关于Direct2D的教程系列,分别是万一的Direct2D系列和zdd的Direct2D系列。有兴趣的网友可以去看看。本系列也是介绍Direct2D的教程,是基于Windows API Code Pack 1.1的Direct2D的教程,如果要调试文中的代码的话,还得参考前文Direct2D教程I——简介及首个例子下载导入Windows API Code Pack 1.1的动态库在前文Direct2D教程I——简介及首个例子简单介绍了Direct2D,并给了一个简单的示例。接下来,本文对一些基本的绘图 阅读全文
-
字符串匹配的KMP算法详解及C#实现
摘要:字符串面试题系列之七:字符串全排列编译环境本系列文章所提供的算法均在以下环境下编译通过。【算法编译环境】Federa 8,linux 2.6.35.6-45.fc14.i686【处理器】 Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz【内存】 2025272 kB前言这是一道排列组合的题目。对于排列组合的题目在面试当中也是十分常见,主要考察小伙伴们的思维的有序性和解决问题的能力。本题就曾出自腾讯的笔试当中。一般这类题目大家做的时候用树的方式来帮助思考会有一些效果。本系列文章均系笔者所写,难免有一些错误或者纰漏,如果小伙伴们有好的建议或者更好的算法,请不吝 阅读全文
-
实现Avl平衡树
摘要:实现Avl平衡树一、介绍 AVL树是一种自平衡的二叉搜索树,它由Adelson-Velskii和Landis于1962年发表在论文《An algorithm for the organization of information》中。AVL树的特点是,其左右子树的高度差的绝对值小于2(空树的高度定义为 -1,无子树的树高度为0)。如下图所示,左边的二叉树为AVL树,而右边的二叉树root节点的左子树高度为2,右子树高度为0,高度差为2,不是AVL树。与普通二叉树相同的是查找和遍历;但是插入和删除操作可能会破坏AVL的平衡结构,这也是实现AVL树的难点所在。二、定义 AVL的特点是平衡,每个.. 阅读全文