
Algorithm
文章平均质量分 72
lewutian
这个作者很懒,什么都没留下…
展开
-
ACM POJ分类
多版本的POJ分类Sempr 发表于 2006-3-30 16:47:00 多版本pku题目分类及算法分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码)短代码:0.01K--0.50K;中短代码:0.51K--1.00K;中等代码量:1.01K--2.00K;长代码:2.01K以上。短:1147、1163、1922、2211、2215、2229、2232、2234、2242、2245转载 2009-08-04 18:30:00 · 733 阅读 · 0 评论 -
二叉排序树
本次讨论的重点是 二叉排序树的插入删除(由此引入查找一般二叉树中结点的中序直接前驱和后继) 与一般二叉树的非递归遍历,对Hash查找(有冲突时)的平均长度也进行了深入的分析。1 哈希表(散列) 在基于“比较”的一系列查找方法中,记录的关键字和记录的相对位置之间没有确定的关系,查找效率依赖于比较次数。而哈希表查找是利用记录的关键字与它的存储位置之间的关系f(即Hash函数) ,不需比转载 2009-08-10 14:51:00 · 1754 阅读 · 0 评论 -
Hash Trees
An Hash tree stores all candidate k-itemsets and their counts. The root is empty and its children are the frequent 1-itemsets. Any node at depth = k will denote and frequent k-itemset. An example for转载 2009-08-10 15:23:00 · 567 阅读 · 0 评论 -
Trie—单词查找树
l 简介Trie,又称单词查找树、前缀树,是一种哈希树的变种。应用于字符串的统计与排序,经常被搜索引擎系统用于文本词频统计。 含有单词“tea”“tree”“A”“ZSU”的一棵Trie。l 性质n 根节点不包含字符,除根节点外的每一个节点都只包含一个字符。n 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。n 每个节点的所有子节点包含转载 2009-08-10 14:26:00 · 707 阅读 · 0 评论 -
Adjacency Lists + DFS.
// Adjacency Lists + DFS.#ifndef _IOSTREAM_H#include #include #define _IOSTREAM_H#endifenum Boolean { FALSE, TRUE};template class List;template class ListIterator;template转载 2009-08-30 00:35:00 · 799 阅读 · 0 评论 -
Data Structures, Fall 2007
Data Structures, Fall 2007 ���Ƶ��cCourse InformationInstructorIris Hui-Ru Jiang (hrjiang@faculty.nctu.edu.tw) ext. 31211, ED540 Lecture TimeMondays B, Thursdays EF@EC016(from转载 2009-08-30 00:40:00 · 4803 阅读 · 0 评论 -
数据结构基础(C++语言版)(第2版)
数据结构基础(C++语言版)(第2版) 查看选用该教材的高校 精彩评论 点击看大图市场价 :¥49.00 普通会员 : ¥41.65 1-3星会员: ¥40.67 4-5星会员: ¥39.20 校园优惠价 :¥40.67(83折) (马上了解) 加入教材预订单 new (50天教材预留服务)转载 2009-08-30 00:41:00 · 1863 阅读 · 1 评论 -
有向图强连通分量的Tarjan算法
有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两转载 2009-08-30 11:48:00 · 1406 阅读 · 0 评论 -
Robert Endre. Tarjan
Robert Endre. Tarjan(04/30/1948–)图灵奖获得时间: 1986年。第二十一位图灵奖 (1986年)获得者。图灵奖引用(Turing Award Citation) : For fundamental achievements in the design and analysis of algorithms and data structures.【转载 2009-08-30 13:30:00 · 1221 阅读 · 0 评论 -
无向图双连通分量
虽然暂时用不到,还是花时间学习了一下,看网上玩ACM的大牛们都在做图论的题目,我也眼红了。。。 因为需要用到求强连通分量来判断AOE/PERT中的环路,先研究研究无向图的双连通分量。对今天的学习做个总结:无向图的连通分支(连通子图): 判断一个无向图是否连通,如果进行dfs或者bfs之后,还有未访问到的顶点,说明不是连通图,否则连通。求解无向图的所有连通分支: 只需要重复调用dfs或者bfs转载 2009-08-30 15:11:00 · 1748 阅读 · 0 评论 -
有向图的强连通分量算法
tarjan基于这样一个定理:在任何深度优先搜索中,同一强连通支内的所有顶点均在同一棵深度优先树中。也就是说,强连通分量一定是有向图的某个深搜树子树。证明:在强连通支内的所有结点中,设r第一个被发现。因为r是第一个被发现,所以发现r时强连通支内的其他结点都为白色。在强连通支内从r到每一其他结点均有通路,因为这些通路都没有离开该强连通支(据引理1),所以其上所有结点均为白色(未染色,未访问)。因此根转载 2009-08-30 15:20:00 · 2123 阅读 · 0 评论 -
宽度优先搜索 BFS
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。已知图G=(V,E)和一个源顶点s,宽度优先搜索以一种系统的方式探寻G的边,从而“发现”s所能到达的所有顶点,并计算s到所有这些顶点的距离(最少边数),该算法同时能生成一棵根为s且包括所有可达顶点的宽度优转载 2009-08-30 15:36:00 · 821 阅读 · 0 评论 -
拓扑排序
本节说明了如何用深度优先搜索,对一个有向无回路图进行拓扑排序。有向无回路图又称为dag。对这种有向无回路图的拓扑排序的结果为该图所有顶点的一个线性序列,满足如果G包含(u,v),则在序列中u出现在v之前(如果图是有回路的就不可能存在这样的线性序列)。一个图的拓扑排序可以看成是图的所有顶点沿水平线排成的一个序列,使得所有的有向边均从左指向右。因此,拓扑排序不同于通常意义上对于线性表的排序。有向无转载 2009-08-30 15:38:00 · 747 阅读 · 0 评论 -
重连通分量 (Biconnected Component)
重连通分量 (Biconnected Component) 在无向连通图G中,当且仅当删去G中的顶点 v及所有依附于v的所有边后,可将图分割成两个或两个以上的连通分量,则称顶点v为关节点。 没有关节点的连通图叫做重连通图。在重连通图上, 任何一对顶点之间至少存在有两条路径, 在删去某个顶点及与该顶点相关联的边时, 也不破坏图的连通性。一个连通图G如果不是重转载 2009-08-30 00:23:00 · 3969 阅读 · 0 评论 -
POI 1999 仓库管理员 Store−keeper
这道题描述的是我们玩过的经典的小游戏,推箱子。由于要求步数最少,基本的想法是BFS,记录人的位置和箱子的位置两个状态。但是状态数过多,有100*100*100*100,进一步思考可以发现记录人的绝对位置是没有必要的,因为只有人在箱子旁边的单元格内,才能推箱子,所以只需记录箱子的位置和人在箱子的方向,只有100*100*4个状态。BFS过程中,状态扩展分类两种情况,一种是向前推箱子,步数要加1,转载 2009-08-30 11:45:00 · 2380 阅读 · 3 评论 -
深度优先搜索 DFS
正如算法名称那样,深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图。在深度优先搜索中,对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续汉下去。当结点v的所有边都己被探寻过,搜索将回溯到发现结点v有那条边的始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个进程反复进行直到所有结点都被发现为止。和转载 2009-08-30 15:35:00 · 634 阅读 · 0 评论 -
动态规划
Dynamic ProgrammingStarfish (starfish.h@china.com)摘要本文介绍了动态规划的基本思想和基本步骤,通过实例研究了利用动态规划设计算法的具体途径,讨论了动态规划的一些实现技巧,并将动态规划和其他一些算法作了比较,最后还简单介绍了动态规划的数学理论基础和当前最新的研究成果。目录引言 动态规划的基本概念 动态规划的基本定理和基转载 2009-08-30 15:43:00 · 4225 阅读 · 0 评论 -
C脚本递归算法-计算八皇后问题
C脚本和虚拟机是作者在EcHmi组态软件中应用的技术,本文用递归算法计算八皇后问题来展示C脚本和虚拟机的语法和功能。///////////////////////////////////////////////////////////////////// C脚本编译编译器测试程序 exp3.sc//// 该例子使用递归算法计算八皇后问题,该例子显示信息比较长,// 在Win2000转载 2009-09-06 16:55:00 · 917 阅读 · 0 评论 -
欧拉图 欧拉回路 欧拉通路
昨天做题用到了欧拉图,本来刚看到这个名词我是不知道什么是欧拉图的,wiki了一下发现原来欧拉图就是小学奥数做腻了的"一笔画"问题...图论起源于18世纪,1736年瑞士数学家欧拉(Eular)发表了图论的第一篇论文:哥尼斯堡七桥问题"。在当时的哥尼斯堡城有一条横贯全市的普雷格尔河,河中的两个岛与两岸用七座桥联结起来,见图(1)。当时那里的居民热衷于一个难题:游人怎样不重复地走遍七桥转载 2009-09-06 17:15:00 · 940 阅读 · 0 评论 -
欧拉图和哈密顿图
欧拉图:欧拉图是一笔画出的边不重复的回路. 1. 定义 2. 无向欧拉图的判别法 定理15.1 无向图G是欧拉图当且仅当G连通且无奇度数顶点 .定理15.2 无向图G是半欧拉图当且仅当G连通且恰有两个奇度 数顶点. 3.有向欧拉图的判别法定理15.3 有向图D是欧拉图当且仅当D是强连通的且每个顶点的入度都等于出度转载 2009-09-06 17:19:00 · 3825 阅读 · 0 评论 -
最小生成树Prim算法朴素版 C语言实现
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。前几天研究Kruskal算法,直接上手就是并查集优化,朴素算法压根就没写。这两天看Prim算法也想略过朴素版O(n^2)直接用二叉堆优化,可是发现不看朴素算法根本写不出来...囧,看来还是不能忽略基础...草稿纸上画图模拟推演了半天,终于搞清楚Prim算法朴素版的C语言实现,拿出那天转载 2009-09-06 18:28:00 · 1645 阅读 · 0 评论 -
最小生成树kruskal算法并查集版 C语言实现
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。今天数据结构课讲了最小生成树的Kruskal算法和Prim算法,不过都只是概念,可能是怕他们听不懂吧,反正算法实现一概不讲...囧下午抱着《算法导论》跑去图书馆看Kruskal算法,发现《算法导论》真的是牛XXXX的书啊,看完之后豁然开朗,而且惊讶地发现Kruskal算法居然用到转载 2009-09-06 18:29:00 · 3396 阅读 · 2 评论 -
线性表玩具之链表版本(C语言)
2009年3月26日 12:41 Slyar 发表评论 阅读评论 文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。本来不想发这么水的代码,可是最近也没什么好写的...纯当凑文章数目吧...这是一个线性表操作的小玩具,此篇为链表版本,也就是用指针和动态内存分配的。 123456转载 2009-09-06 18:35:00 · 529 阅读 · 0 评论 -
字符串匹配算法:KMP学习心得
2009年4月22日 12:56 Slyar 发表评论 阅读评论 文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。这周的数据结构课讲的是串,本以为老师会讲转载 2009-09-06 18:51:00 · 833 阅读 · 0 评论 -
8 Queens Solution with Genetic Algorithm
Download demo - 18.3 Kb Download source - 2.32 Kb Genetic Algorithm, TheoryThere are so many books and so many resources on the Web about Genetic Algorithms. The best that I can do is quo转载 2009-09-06 22:38:00 · 1089 阅读 · 0 评论 -
Factorial!
Factorial!http://www.animatedrecursion.com/ Submitted by Anonymous on Wed, 2006-10-18 10:22.-->Perhaps the simplest example of recursion is the factorial function. In mathematical notat转载 2009-09-06 22:59:00 · 698 阅读 · 0 评论 -
递归算法详细分析
C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。 许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。 这里有一转载 2009-09-06 23:29:00 · 1332 阅读 · 0 评论 -
八皇后问题 回溯递归 C语言版
八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。今天听陈星火老师(火爷)的讲座提到了八皇后问题,正好今天没写的,于是晚上上完课回来就写了一段回溯递归解决八皇后问题的代码,当然也可以解决N皇后问题。运行后得到解为转载 2009-09-06 16:58:00 · 1498 阅读 · 0 评论 -
二叉树任意两点间最短路径长度 C语言暴力版
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。数据结构课的实验题目,涉及到LCA问题,这次暴力解决了,以后学了NB算法回来做个对比...问题描述:设计一个算法,计算出给定二叉树中任意2个结点之间的最短路径。编程任务:对于给定的二叉树,和二叉树中结点对,编程计算结点对之间的最短路径。数据输入:由文件input.转载 2009-09-06 18:30:00 · 2258 阅读 · 0 评论 -
已知二叉树的中序序列和前序序列(或后序)求解树
2009年5月11日 23:34 Slyar 发表评论 阅读评论 文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。今天数据结构课讲树的存储和遍历,老师讲的很简单,也没什么代码要发...唯一看到一个比较重要的东西,总结一下算法好了。这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略转载 2009-09-06 18:32:00 · 5054 阅读 · 1 评论 -
单链表的操作C语言版
2009年3月24日 13:04 Slyar 发表评论 阅读评论 文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。昨天数据结构课在讲单链表,所以写了一份单链表的操作C语言实现代码。如果代码有什么不完善的地方,还请指出,谢谢。操作中包括单链表的创建、插入、查找、删除和销毁等。 1234转载 2009-09-06 18:51:00 · 829 阅读 · 0 评论 -
几个复杂指针类型的分析与对比
2009年2月10日 22:42 Slyar 发表评论 阅读评论 文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。上星期某个夜深人静的夜里Slyar小研究了一下C语言中的指针,对于复杂指针类型的分析偶有所得,写出来谨供互相讨论学习。int p;p是一个普通的整型变量。int *p;1、p与*结合,说明p是一个指转载 2009-09-06 18:52:00 · 520 阅读 · 0 评论 -
堆排序(Heap Sort) 算法实现 C语言版
2008年10月18日 13:52 Slyar 发表评论 阅读评论 文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。n个关键字序列Kl,K2,…,Kn称为堆(Heap),当且仅当该序列满足如下性质(简称为堆性质):ki≤K2i且ki≤K2i+1 或 Ki≥K2i且ki≥K2i+1(1≤i≤ n)若将此序列所存储的向量转载 2009-09-06 19:02:00 · 899 阅读 · 0 评论 -
回溯
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为: 一、定义一个解空间,它包含问题的解。 二、利用适于搜索的方法组织解空间。 三、利用深度优先法搜索解空间。 四、利用限界函数避免移动到不可能产生解的子空间。 回溯-解释 问题的解空间通常是在转载 2009-09-05 15:57:00 · 943 阅读 · 0 评论 -
回溯法的基本思想
1、确定问题的解空间 子集树问题:装载问题、符号三角形问题、0-1背包问题、最大团问题 排列树问题:批处理作业调度、n后问题、旅行售货员问题、圆排列问题、电路板排列问题 其他:图的m着色问题 2、找出适当的剪枝函数 约束函数 限界函数3、以深度优先的方式搜索解空间 递归回溯 迭代回溯转载 2009-09-05 16:36:00 · 4161 阅读 · 0 评论 -
初识回溯算法
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为: 一、定义一个解空间,它包含问题的解。 二、利用适于搜索的方法组织解空间。 三、利用深度优先法搜索解空间。 四、利用限界函数避免移动到不可能产生解的子空间。 问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回转载 2009-09-05 20:18:00 · 646 阅读 · 1 评论 -
回溯法:子集树与排列树
当所给问题是从n个元素的集合S中找出满足某种性质的子集时,解空间为<a onclick="function onclick(){tagshow(event, %E5%AD%90%E9%9B%86%E6%A0%91);}" href="javascript:;" target="_self">子集树。 当所给问题是从n个元素的集合S中找出满足某种性质的排列时,解空间为<a o转载 2009-09-05 20:30:00 · 1598 阅读 · 0 评论 -
20皇后有多少解
利用八皇后的C语言实现一文中实现的方法计算各种不同的数目的皇后有多少种解,我最后得到了以下4个结果8皇后:耗时:0结果:92总共步数:3, 92010皇后:耗时:31结果:724总共步数:69, 61812皇后:耗时:750结果:14200总共步数:1, 683, 96415皇后:耗时:217828结果:2, 279, 184总共步数:337, 699, 759这里耗时是以毫秒转载 2009-09-06 16:39:00 · 1011 阅读 · 0 评论 -
不相交集合 - 并查集
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。恩,前两周学习了并查集,是时候总结一下了。等价关系与等价类从数学上看,等价类是一个对象(或成员)的集合,在此集合中的所有对象应满足等价关系。若用符号"≡"表示集合上的等价关系,那么对于该集合中的任意对象x,y, z,下列性质成立:1、自反性:x ≡ x2、对称性:若 x转载 2009-09-06 17:06:00 · 907 阅读 · 0 评论 -
二叉树的非递归遍历 C语言版
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。上周数据结构课在讲二叉树的遍历,老师只讲递归算法,没有什么技术含量,遂自己琢磨非递归算法实现...前序遍历:先访问根节点,再访问左子树,最后访问右子树。设置一个栈,出栈即为访问节点。先将根节点进栈,在栈不空时一直如下循环:出栈,访问,将其右孩子进栈,再将左孩子进栈。中序遍历:先访转载 2009-09-06 18:31:00 · 3811 阅读 · 0 评论