
数据结构与算法研究
pstrunner
超越自我,没有做不到,只有想不到。
展开
-
strtoul, strtol实现代码
#define TOLOWER(x) ((x) | 0x20)#define isxdigit(c) (('0' <= (c) && (c) <= '9') / || ('a' <= (c) && (c) <= 'f') / || ('A' <= (c) &&...原创 2009-06-08 17:25:00 · 8242 阅读 · 1 评论 -
关于机器学习与人类学习不同点的思考
关于机器学习与人类学习不同点的思考当前人工智能现状人类是如何识别新事物人类的学习,不应该仅仅是计算;但是计算机最大且唯一的能力就是计算怎样提高机器的学习效率当前人工智能现状现在的人工你智能跟大数据密切相关的。为什么需要大量的数据,因为有一个叫“深度学习”的神级网络模型,它需要大量的输入(训练)、提取特征因子、大概率逼近和输出。理论上来说,输入越多,识别的概率就会越高。可能中间会进行一些人工标识...原创 2019-02-13 13:42:39 · 3283 阅读 · 0 评论 -
Bug?!
作为程序员,遇到Bug是很稀松平常的:)Bug千奇百怪,分很多种,有平台相关的、有第三方工具相关的、有其它人开发的相关模块,当然也有自己的:)在遇到Bug时,不同的人解决办法也是千差万别的。有的人马上感觉很紧张,特别是在接收别人的代码进行维护时,出现了莫名其妙的错误,马上头大。当面临着时间压力时,更加慌不择路。经过几天的调查,例会上,也无法说明Bug的原因,此时人的心态就会发生变化。有的会...原创 2019-01-29 15:09:11 · 168 阅读 · 0 评论 -
代码重构实践之分层重要性
对于大型软件(有效代码量在10万以上)分层很重要。很多人也知道在软件开发中需要分层,但是因为每个人见识不同,差异很大。软件分层,到底依据什么进行分层最合适呢?根据业务逻辑?还是根据软件的功能点?还是根据对接外部的或者提供给外部的接口进行分层?其实这些都不是重点,我觉得最重要的是首先根据需求。如果一个软件离开了具体的需求,具体的应用场景,可能都是空谈,都是海市蜃楼。每种软件都会有其特定的应用场景...原创 2019-01-28 15:03:33 · 843 阅读 · 0 评论 -
代码重构实践之复用改造
怎样识别哪些地方需要重构代码?个人觉得应该有两个层次。第一个层次是直观感觉。例如当你看到很多相似的代码时,肯定是代码的复用没有做好,应该从加强代码复用;当你看到很多全局变量,应该是数据的隐蔽性没有做好,应该需要加强数据隐蔽性;当你看到没有使用类,而是结构体,应该需要加强类的使用频率,因为这样才会对于继承、数据保护、多态、设计模式等高阶的应用开发思想进行更大力度的重构。第二个层次是主观分析。...原创 2019-01-27 12:39:40 · 426 阅读 · 1 评论 -
代码重构实践之背景
从事代码重构已经很多年,特别是目前手头维护的几个软件,在开始接手时,面临着没有交接、代码基本没有注释、代码风格各种各样,接手该软件的人员也是已经换了2,3波了。总体来看,代码是没有开发经验的人员写的,虽然是用C++编写的代码,但是风格还是C风格。基本没有Class,更加没有面向对象的思想在具体代码中的应用。整个代码逻辑是面向过程的,99%都是结构体的数据结构。维护的人员,可能没有弄懂代码逻辑,...原创 2019-01-26 13:54:19 · 471 阅读 · 0 评论 -
机器自主学习之基本要素
机器如何做到自主智能识别现实世界?通常的做法,都是人类通过建立模型并机器语言告诉机器该如何识别。这是机器的被动识别方式。我总是在思考,被动识别非常繁琐,并且对建立该模型的“人”有非常高的要求。他不仅需要具有非常高的抽象能力,并具有翻译成机器语言的能力。我们有没有其它路径简化这个过程,让机器能够自主识别和学习。我总是在留意小孩从出生开始,不断接触现实世界和学习的过程。他们刚生下来...原创 2018-10-06 11:19:02 · 1818 阅读 · 0 评论 -
哈夫曼树
URL:http://baike.baidu.com/view/127820.htm?func=retitle在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径转载 2009-06-14 12:13:00 · 906 阅读 · 0 评论 -
二叉树
URL:http://baike.baidu.com/view/88806.htm在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有转载 2009-06-14 12:07:00 · 488 阅读 · 0 评论 -
哈希函数
一、哈希表的概念及作用一般的线性表,树中,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较。这一类查找方法建立在“比较“的基础上,查找的效率依赖于查找过程中所进行的比较次数。 理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对转载 2009-06-10 10:55:00 · 554 阅读 · 0 评论 -
若干经典的字符串哈希函数
// RS Hash Function unsigned int RSHash( char * str) { unsigned int b = 378551 ; unsigned int a = 63689 ; unsigned int hash = 0 ; while ( * str)原创 2009-06-10 10:45:00 · 545 阅读 · 0 评论 -
哈希基本概念
基本知识 Hash,一般翻译做“散列”,也有直接音译为”哈希“的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 HASH主转载 2009-06-10 11:21:00 · 681 阅读 · 0 评论 -
一些常规小算法【长期更新】
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestAlgorithms{ class MyAlgorithms { /// /// 获取字符中各种字符出现的个数原创 2009-06-08 11:13:00 · 550 阅读 · 0 评论 -
动态规划算法实现
动态规划算法说明:最优化原理 1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。一些静态模型,只要人为地引进“时间”因素,分成时段,就可以转化成多阶段的动态模型,用动态规划方法去处理。与此同时,他提出了解决这类问题的“最优化原理”(Principle of optimality): “一个过程的最原创 2009-06-08 15:03:00 · 1967 阅读 · 0 评论 -
【深度学习】神经网络入门(最通俗的理解神经网络)
参考:https://blog.youkuaiyun.com/lyl771857509/article/details/78990215先从回归(Regression)问题说起。我在本吧已经看到不少人提到如果想实现强AI,就必须让机器学会观察并总结规律的言论。具体地说,要让机器观察什么是圆的,什么是方的,区分各种颜色和形状,然后根据这些特征对某种事物进行分类或预测。其实这就是回归问题。如何解决回归问题...转载 2019-07-27 18:31:46 · 393 阅读 · 0 评论