随笔分类 - 算法
排列和组合的实现
摘要:每当学一门计算机语言,质数表、汉诺塔可以作为早期测试的话题之一。随着深入,都很想快速提高一下对这个语言的把握。这个时候,我觉得排列、组合是合适的。不仅排列、组合的程序相对复杂一些,而且在很多问题的解决上,排列、组合往往是解决中的一部分。以下我们的讨论都是针对有限集。
阅读全文
递归的编译优化(1)
摘要:本系列文章是想思考思考递归的编译优化问题,目标在于希望如何从编译、解释层次将树递归进行优化,从而避免过低效率运行。本章来讲讲树递归的问题。
阅读全文
深度学习分类网络的发展历史
摘要:人工智能(AI)是目前IT最前沿的领域之一,而深度学习(Deep Learning)则是AI中最火热的方向。深度学习是指深度的神经网络,这主要是因为网络深了之后才可以表现更广阔的意思,而神经网络最基本的问题是分类问题。本文从神经网络开始起,讲讲深度学习分类网络的发展历史以及其中用到的技术。
阅读全文
相互递归(3)
摘要:我们根据上一章最开始的相互递归转一般递归的方法,结合Y Combinator,来对第一章的append实现做一下测试。 上述实现中,append和_append互相递归。 按照第二章中相互递归转普通递归的方法,我们可以定义一个高阶函数append-high, 使得(append-high 1)就是a
阅读全文
相互递归(1)
摘要:相互递归就是多个函数互相定义,最常见的就是两个函数,比如f和g,f的定义中用到g,而g的定义中用到f。 相互递归一样有无限递归的可能,最简单的: f:x->g(x) g:x->f(x) 给个最简单的没有无限递归的例子,判断一个正整数是不是偶数或者是不是奇数,用C++来描述如下: 以上效率虽然不高(甚
阅读全文
状态的抽象:从狼羊白菜游戏和倒油问题说起
摘要:
数学中有一个重要概念,就是抽象。由数学开始发展的计算机科学,自然也离不开抽象。计算机语言、编程范式都为抽象提供了工具,函数、回调、泛型、算子、类…… 以下从两个问题开始,描述了一大类抽象。 问题 这一篇文章我们先引入两个问题。 狼、羊、白菜问题: 一个农夫带着一匹狼、一只羊、一筐白菜这三样东西,需要
阅读全文

Conway生命游戏
摘要:
1970年,英国数学家Conway发明了生命游戏。抛开元胞自动机的复杂概念,我们只是去感受一下二维的生命游戏,这其实是元胞自动机的一个特例。 生命游戏 我们先考虑有限的情况,对于mXn的方格,每个方格都会有一个状态,该状态有两个可能值:有生命、无生命。
阅读全文

汉诺塔——各种编程范式的解决
摘要:
1.文字、动画介绍汉诺塔
2.汉诺塔递归的实现
3.各种编程范式对于汉诺塔递归的实现
4.给出效率更高的递归以及各种编程范式的实现
5.给出现实中汉诺塔游戏的策略
6.文章最后给出了一些思考题
阅读全文

Scheme来实现八皇后问题(2)
摘要:上一章讲了用1~n的排序来表示n皇后的解,然后通过枚举1~n所有的排列、判定谓词过滤所有排列得到最终的所有解。 在此基础上,这一章我们思考是否存在更好的解法,从而深化这个问题。 效率问题 为了测试效率,在代码末尾加上 (queen (read)) 表示解决的皇后个数由输入的结果决定。 还是先把Sch
阅读全文
Scheme来实现八皇后问题(1)
摘要:看到有人写八皇后,那我就也写写这个吧。 八皇后问题 这个问题大家应该都不陌生,很多计算机教程都以八皇后为例题。 上面是一个国际象棋棋盘,总共8X8个格子。 皇后是国际象棋里杀力最强的子,它可以吃掉同一条横线、竖线上其他棋子,也可以吃掉所在的两条斜线上的其他棋子(当然在角上只有一条斜线)。 能否在棋盘
阅读全文
斐波那契数列的算法分析
摘要:看过我其他一些文章的人,可能想象不出我会写一篇关于斐波那契数列的文章。因为可能会感觉1,1,2,3…这样一个数列能讲出什么高深的名堂?嗯,本篇文章的确是关于斐氏数列,但我的目的还是为了说一些应该有95%以上程序员不明白的东西。如果能够跟着我弄明白文中分析的手法,其好处是不言而喻的。请听我细细道来。
阅读全文
一个简单的完全信息动态博弈的解答
摘要:前几天,看到博客园里有人给了一道博弈: 事先给定一个正整数N,两个人轮流给出一个2~9的整数。若之前两人所有的数和当前自己报的数,其乘积大于等于N,则赢。 比如给定数为8,A先报数8,则A赢;给定数为100,A先报9,B报2,A再报9,从而9*2*9>=100,A赢。 首先想到的是minmax算法,
阅读全文
为什么有导师的基于梯度下降的机器学习喜欢用欧氏距离来度量误差
摘要:版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7899171.html 作者:窗户 QQ:6679072 E-mail:6679072@qq.com bp神经网络为大家所熟知,推导中使用
阅读全文
什么是算法
摘要:版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7220028.html 作者:窗户 QQ:6679072 E-mail:6679072@qq.com 有人说程序=算法+数据结构,虽说这样
阅读全文
最多7次比较解决5个数的排序问题的解法
摘要:这一篇是上一篇《12(13)个球1个不同重量称3次称出的详细分析》的姊妹篇,分析手段同出一辙,此题源于《算法导论》。 和上面一样分析,5个数的排列总共有5!=120种,排序的本质是从这120种排列中确定其中的一种;而每次比较会有两种结果,小于、大于等于。7次比较总共有27=128种结果,用最多128
阅读全文
12(13)个球1个不同重量称3次称出的详细分析
摘要:因为网上这道题没有详细思路,我想我还是补个详细思路。这道题目描述是这样的: 有12个一模一样的球,其中11个重量一模一样,剩下的1个重量和其他的不一样。使用一个无砝码的天平称3次,找出重量不一样的这一个球,以及知道这个球比其他的球重还是轻。 这个题目似乎很早就出来了,估计有十几年吧,曾以不一样的身份
阅读全文
围棋规则的计算机实现
摘要:提到这个名字,很多人会想到前段时间让全世界振奋的围棋人工智能Alphago,想曾经我也了解过一些围棋的AI。我也正想花点时间说说alphago相关的东西,包括alphago的架构以及模型引申等,不过这篇文章里我只说围棋规则的实现,和人工智能无关。 规则 说到围棋规则的实现不得不先说围棋规则,一般来说
阅读全文
RSA简介(四)——求逆算法
摘要:此处所谓求逆运算,是指在模乘群里求逆。 第一节里提到互质的两个定义: (1)p,q两整数互质指p,q的最大公约数为1。 (2)p.q两整数互质指存在整数a,b,使得ap+bq=1。 只要明白了欧几里得算法,很容易就可以求出两整数的最大公约数,而这是一个小学时候就学习到的算法。这个算法有个可能让我们更
阅读全文