![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构/算法
shengxiaweizhi
这个作者很懒,什么都没留下…
展开
-
Solving "Vietnam snake" puzzle with constraint logic programming
Recently the Guardian posted a "Vietnam snake" math puzzle:The puzzle asks to fill empty cells with integer numbers 1..9, using every number only once, such that the equality holds(order of oper转载 2015-05-30 22:33:53 · 398 阅读 · 0 评论 -
数学之美:Hacker News的热门排名算法
Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由Paul Graham 的创业孵化器Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票。简而言之,Hacker News 允许提交任何可以被理解为“任何满足人转载 2015-08-03 21:32:07 · 644 阅读 · 0 评论 -
如何设计一个内存分配器
通常工程里不推荐自己写内存分配器,因为你费力写一个出来99%可能性没有内置的好,且内存出bug难调试不过看书之余,你也可以动手自己试试,当个玩具写写玩玩:1. 实现教科书上的内存分配器:做一个链表指向空闲内存,分配就是取出一块来,改写链表,返回,释放就是放回到链表里面,并做好归并。注意做好标记和保护,避免二次释放,还可以花点力气在如何查找最适合大小的内存快的搜索上,减少内存碎片,有空你转载 2015-08-02 13:56:53 · 568 阅读 · 0 评论 -
算法题:顶点覆盖问题
顶点覆盖问题可以用几种不同的算法来实现,本篇文章使用的是分支限界法来实现,或许以后会介绍其他的实现算法,嘿嘿。 1.问题描述给定一个N个点M条边的无向图G(点的编号从1至N),问是否存在一个不超过K个点的集合S,使得G中的每条边都至少有一个点在集合S中。例如,如下图所示的无向图G(报告中算法分析过程中一直使用下面的图G)(1)如果选择包含点1,2,6这3个点的集合S不能满足条件转载 2015-05-25 23:26:29 · 29542 阅读 · 4 评论 -
什么是垃圾回收机制
The following is an example from our Garbage Collection Handbook which will be published in the forthcoming weeks. In the meanwhile, take your time to get yourself familiar with the basics of the Garb转载 2015-05-25 21:03:47 · 601 阅读 · 0 评论 -
地理围栏算法解析
地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界,当手机进入、离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告。如下图所示,假设地图上有三个商场,当用户进入某个商场的时候,手机自动收到相应商场发送的优惠券push消息。地理围栏应用非常广泛,当今移动互联网主要app如美团、大众点评、手淘等都可看到其应用身影。图1 地理围栏示意转载 2015-05-25 23:34:29 · 2318 阅读 · 0 评论 -
算法题:删除 K 位数字
1.问题描述现有一个 n 位数,你需要删除其中的 k 位,请问如何删除才能使得剩下的数最大?比如当数为 2319274, k=1 时,删去 2 变成 319274 后是可能的最大值。 2.问题分析[1]贪心解法这题可以使用贪心策略,每次从高位向低位数,删除高位比低位数字小的那位上的数字,直到删除了k位之后,得到的数字肯定是最大值。(1)删数问题具有最优子结构:(转载 2015-05-25 23:23:31 · 2848 阅读 · 0 评论 -
Netflix工程总监眼中的分类算法:深度学习优先级最低
【编者按】针对Quora上的一个老问题:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain近日给出新的解答,他根据奥卡姆剃刀原理依次推荐了逻辑回归、SVM、决策树集成和深度学习,并谈了他的不同认识。他并不推荐深度学习为通用的方法,这也侧面呼应了我们之前讨论的问题:深度学习能否取代其他机器学习算法。不同分类算法的优势是什么?例如有大量的训练数据集,上万的实例,超转载 2015-05-25 19:45:42 · 590 阅读 · 0 评论 -
计算机中的黑魔法:尾递归
前言 声明:本文是作者在学习SICP有关过程抽象知识的理解,由于书中的语句有些晦涩,所以将作者的理解共享给大家希望帮助一些朋友。原书对尾递归并没有太多介绍,但是这里给出了详细的解释。目前是凌晨1点48分。嗯,刚刚写完这篇日志。忍不住想说点什么,或许是当一个不好的书托。可能这些内容对于很多人来说是没有用的,他们甚至会鄙视我写的东西,觉得为这些东西花费时间不值得。对于这些人,我想说,每一个转载 2015-05-25 23:27:07 · 473 阅读 · 0 评论 -
算法题:矩阵链乘问题
矩阵链乘问题是最典型的动态规划问题,要理解下面的内容请先阅读这篇动态规划的总结。 1.问题描述矩阵链乘问题的描述如下,就是说要确定一个完全加括号的形式使得矩阵链乘需要进行的标量计算数目最少,矩阵Ai的维数为pi−1×pi,如果穷举所有可能形式的话,时间复杂度是指数级的!因为该问题满足最优子结构,并且子问题存在重叠,所以我们可以借助动态规划来求解。 2.问题分析我们需要确转载 2015-05-25 23:24:56 · 1123 阅读 · 0 评论 -
算法题:最长公共子序列
最长公共子序列(LCS)是典型的动态规划问题,如果不理解动态规划请移步先看这篇动态规划的总结,否则本篇文章中的代码实现会不理解的哟!LCS问题的一个变种就是求最长单调递增子序列,它的一种简易求解方法就是先将原序列A进行排序得到序列B,然后求解序列A和序列B的最长公共子序列。 1.问题描述 2.最优子结构和子问题重叠 3.5种实现方式根据LCS的递推公式转载 2015-05-25 23:22:00 · 507 阅读 · 0 评论 -
Elliptic Curve Cryptography: a gentle introduction
Those of you who know what public-key cryptography is may have already heard ofECC, ECDH or ECDSA. The first is an acronym for Elliptic Curve Cryptography, the others are names for algorithms based转载 2015-05-25 19:50:45 · 675 阅读 · 0 评论 -
程序员是否必须会算法
本章的标题既然是“程序员与算法”,就必然要涉及一个基本问题,那就是“程序员是否必须会算法”。这是一个充满争议的问题,虽然并不像“生存还是毁灭”之类的选择那样艰难而沉重,但也绝不是一个轻松的话题。朋友们在我的“算法系列”博客专栏上发表的评论和回复,并不都是我所期待的赞美和鼓励,也常常会有一些冷言冷语。比如,“穷举也算是算法吗”或者“请你说明一下算法在XX系统中能起到什么作用”。有一次,一个网友通转载 2015-06-04 20:27:51 · 774 阅读 · 0 评论 -
趣题:构造多边形使得过边界上某一点的任意直线均能等分面积
这是 2008 年莫斯科数学竞赛中的一个问题。构造一个多边形,使得这个多边形的边界上存在这样的一个点 O :经过点 O 的任意直线均会把该多边形分成面积相等的两份。这看起来不大可能对吧?但其实构造却并不困难。你能想出来吗?转载 2015-07-23 20:32:48 · 1051 阅读 · 0 评论