最新 | 最热门 | 最高评价

+0  Prolog 语言入门教程

Tag: Algorithm
阮一峰 发于 2019年01月28日 09:17 | 点击: 556 | 展开摘要
Prolog 是一种与众不同的语言,不用来开发软件,专门解决逻辑问题。比如,"苏格拉底是人,人都会死,所以苏格拉底会死"这一类的问题。

Prolog 就是"逻辑编程"(programming of Logic)的意思。只要给出事实和规则,它会自动分析其中的逻辑关系,然后允许用户通过查询,完成复杂的逻辑运算。

本文简单介绍如何使用 Prolog 语言,主要参考了 xmonader 的教程。

一、SWI-Prolog

学习之前,请安装 Prolog 的运行环境 SWI-P

查看全文: http://www.udpwork.com/item/17363.html

+0  哈希碰撞与生日攻击

Tag: Algorithm
阮一峰 发于 2018年09月05日 20:41 | 点击: 673 | 展开摘要
一、哈希碰撞是什么?

所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。

如果不同的输入得到了同一个哈希值,就发生了"哈希碰撞"(collision)。

举例来说,很多网络服务会使用哈希函数,产生一个 token,标识用户的身份和权限。

AFGG2piXh0ht6dmXUxqv4nA1PU120r0yMAQhuc13i8

上面这个字符串就是一个哈希值。如果两个不同的用户,得到了同样的 token,就发生

查看全文: http://www.udpwork.com/item/17077.html

+0  彩票的数学知识

Tag: Algorithm
阮一峰 发于 2018年04月07日 23:22 | 点击: 778 | 展开摘要
彩票怎样才能中奖?

理论上,只能靠运气。但是,如果规则设计得不好,就可以钻漏洞。

2005年2月,美国的一个彩票品种,就出现了漏洞,被麻省理工学院的学生发现了。随后的七年,这个学生反复购买这个品种,一共赚到了300万美元。

本文介绍他怎么做的,以及其中的数学原理。我依据的材料,主要来自数学教授 Jordan Ellenberg 在斯坦福大学的一次演讲(Youtube)。

一、期望值

彩票最重要的数学概念,叫做"期望值"(expected value),即同一种行为多

查看全文: http://www.udpwork.com/item/16773.html

+0  图像与滤波

Tag: Algorithm
阮一峰 发于 2017年12月13日 08:16 | 点击: 999 | 展开摘要
我对图像处理一直很感兴趣,曾经写过好几篇博客(1,2,3,4)。

前几天读到一篇文章,它提到图像其实是一种波,可以用波的算法处理图像。我顿时有一种醍醐灌顶的感觉,从没想到这两个领域是相关的,图像还可以这样玩!下面我就来详细介绍这篇文章。

一、为什么图像是波?

我们知道,图像由像素组成。下图是一张 400 x 400 的图片,一共包含了 16 万个像素点。

每个像素的颜色,可以用红、绿、蓝、透明度四个值描述,大小范围都是0 ~ 255,比如黑色是[0, 0, 0, 25

查看全文: http://www.udpwork.com/item/16538.html

+0  LeetCode付费题目(一)

Tag: Algorithm & Data Structure | LeetCode
四火 发于 2017年11月07日 03:30 | 点击: 2062 | 展开摘要
LeetCode 300题以内需要付费才能查看的所有题目解答。

156

Binary Tree Upside Down

157

Read N Characters Given Read4

158

Read N Characters Given Read4 II – Call multiple times

159

Longest Substring with At Most Two Distinct Characters

161

One Edit

查看全文: http://www.udpwork.com/item/16493.html

+0  正态分布为什么常见?

Tag: Algorithm
阮一峰 发于 2017年08月02日 07:33 | 点击: 1645 | 展开摘要
统计学里面,正态分布(normal distribution)最常见。男女身高、寿命、血压、考试成绩、测量误差等等,都属于正态分布。

以前,我认为中间状态是事物的常态,过高和过低都属于少数,这导致了正态分布的普遍性。最近,读到了 John D. Cook 的文章,才知道我的这种想法是错的。

正态分布为什么常见?真正原因是中心极限定理(central limit theorem)。

"多个独立统计量的和的平均值,符合正态分布。"

上图中,随着统计量个数的增加,它们和的平

查看全文: http://www.udpwork.com/item/16373.html

+0  求第K个数的问题

Tag: Algorithm & Data Structure | Recommended | PriorityQueue | | 快排
四火 发于 2017年07月14日 13:01 | 点击: 1031 | 展开摘要
一道经典的题目。给一堆乱序的数,如果它们从小到大排好,求第k个是多少。假设排列的下标从1开始,而非0开始。

这个问题如此之简单而熟悉,可它却可以是很多现实问题的某一个子问题的抽象。它本身相关的问题其实就不少,而且还可以不断演进,成为不同复杂程度的问题。

看到这个问题,脑海里的第一反应是一左一右红蓝两条分支——堆排序或者快排。Java中快排用Arrays.sort就可以了,如果是堆排序需要用到PriorityQueue。 用Arrays.sort写起来最简单(这里的参数校验

查看全文: http://www.udpwork.com/item/16349.html

+0  神经网络入门

Tag: Algorithm
阮一峰 发于 2017年07月13日 06:33 | 点击: 1169 | 展开摘要
眼下最热门的技术,绝对是人工智能。

人工智能的底层模型是"神经网络"(neural network)。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于它。学习人工智能,一定是从它开始。

什么是神经网络呢?网上似乎缺乏通俗的解释。

前两天,我读到 Michael Nielsen 的开源教材《神经网络与深度学习》(Neural Networks and Deep Learning),意外发现里面的解释非常好懂。下面,我就按照这本书,介绍什么是神经网络

查看全文: http://www.udpwork.com/item/16346.html

+0  LeetCode题目解答——第311到371题

Tag: Algorithm & Data Structure | LeetCode
四火 发于 2017年01月19日 13:19 | 点击: 1048 | 展开摘要
老规矩,跳过需要付费的题目。题目是越来越不好做,我尽量把自己的思路写下来。

371

Sum of Two Integers 

51.9%
Easy

368

Largest Divisible Subset 

31.9%
Medium

367

Valid Perfect Square 

36.9%
Medium

365

Water and Jug Problem 

24.7%
Medium

363

Ma

查看全文: http://www.udpwork.com/item/16069.html

+0  如何识别图像边缘?

Tag: Algorithm
阮一峰 发于 2016年07月22日 07:39 | 点击: 977 | 展开摘要
图像识别(image recognition)是现在的热门技术。

文字识别、车牌识别、人脸识别都是它的应用。但是,这些都算初级应用,现在的技术已经发展到了这样一种地步:计算机可以识别出,这是一张狗的照片,那是一张猫的照片。

这是怎么做到的?

让我们从人眼说起,学者发现,人的视觉细胞对物体的边缘特别敏感。也就是说,我们先看到物体的轮廓,然后才判断这到底是什么东西。

计算机科学家受到启发,第一步也是先识别图像的边缘。

加州大学的学生 Adit Deshpande 写了一

查看全文: http://www.udpwork.com/item/15689.html

+0  LeetCode题目解答——第227到310题

Tag: Algorithm & Data Structure | LeetCode
四火 发于 2015年12月16日 14:56 | 点击: 1474 | 展开摘要
LeetCode的题目是不断在更新。还是老规矩,跳过了那些需要付费才能做的题目。下面的解法可能不是最好的,具体问题我们可以讨论。截至目前我解答的全部的LeetCode放在了这里。

#

Title

Acceptance

Difficulty

310
Minimum Height Trees
24.0%
Medium

309
Best Time to Buy and Sell Stock with Cooldown
33.7%
Medium

307
Range Su

查看全文: http://www.udpwork.com/item/14858.html

+0  Cuckoo Filter:设计与实现

Tag: C/C++语言 | 数据库 | 程序设计 | 趣味问题 | Algorithm | filter | hashing | 海量数据
Leo 发于 2015年09月02日 09:18 | 点击: 2248 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

对于海量数据处理业务,我们通常需要一个索引数据结构,用来帮助查询,快速判断数据记录是否存在,这种数据结构通常又叫过滤器(filter)。考虑这样一个场景,上网的时候需要在浏览器上输入URL,这时浏览器需要去判断这是否一个恶意的网站,它将对本地缓存的成千上万的URL索引进行过滤,如果不存在,就放行,如果(可能)存在,则向远程服务端发起验证请求,并回馈客户端给出警告。

索引的存储又分为有序和无序,前者使用关联式容器,比如B树,后者使用哈希

查看全文: http://www.udpwork.com/item/14563.html
|<<<1234567>>>| 一共8页, 93条记录