在有向图(Digraph)中,由一个节点(Vertex)沿着边(Edge)可以到达的节点称为其 ancestor(祖先)。当两个不同节点拥有一个共同 ancestor 时,该 ancestor 称这两个节点的 Common Ancestor (共同祖先),Shortest Ancestral Path (SAP,最短祖先路径)即所有 common ancestor 中到两个节点路径之和最短的一个及其对应的路径。

Continue reading

假设在互联网中有两台计算机需要互相通信,那么该怎么确定它们之间是否已经连接起来还是需要架设新的线路连接这两台计算机。这就是动态连通性问题。动态连通性问题在日常生活中十分常见,比如上文所说的通信网络中的连通性问题,比如物理化学中的渗流问题。通过并查集这种数据结构及union-find算法可以解决动态连通性问题。

Continue reading

随着计算机处理数据量的增大,程序运行时消耗的时间与内存空间也逐步增加。对于同一个问题,不同的算法解决方案所耗费的代价不尽相同,对算法的性能进行合理、准确的分析可以为算法的选择、改进提供可靠的依据。 Continue reading

链表是一种基础的数据结构,在某些情况下链表比数组更适合用来表示集合类的抽象数据类型。链表的定义如下:

链表是一种递归的数据结构,它或者为空(null),或者是指向一个节点(node)的引用,该节点含有一个泛型的元素和一个指向另一条链表的引用。

在结构化存储数据集时,链表是数组的一种重要的替代方式

Continue reading

许多基础数据类型都和对象的集合有关。具体来说,数据类型的值就是一组对象的集合,所有的操作都是关于添加、删除或是访问集合中的对象。

本节介绍三种数据类型:背包(Bag)、队列(Queue)和栈(Stack),它们的不同之处在于删除或访问对象的顺序不同。同时还介绍了三种数据类型的数组实现及简单应用,在下一篇中介绍链表及这三种数据类型的链表实现。 Continue reading

Arthur

Happy coding, Happy life.


Whatever


China