
算法
文章平均质量分 63
nxiangbo
这个作者很懒,什么都没留下…
展开
-
求解最大子数组问题的三种方法
求解最大子数组问题的三种方法标签(空格分隔): 算法 分治 最大子数组算法导论中有这样一个例子来引出最大子数组问题: 在股市中,人们为了获取更大利益,希望“低价买进,高价卖出”,从而获得最大收益。然而,简单的以最低价格买入,最高价格卖出并不能获得最大收益。我们可以不直接观察每日股票的价格,而是考虑每日股票的价格变化值。第ii天的价格变化值定义为第ii天的价格减去第i−1i-1天的价格。如果将这些值原创 2015-10-31 21:55:07 · 879 阅读 · 0 评论 -
拟阵理论简述
拟阵 拟阵( matroid )是一个数学结构,是对(线性)独立的概括与归纳。常用于排列组合和图论等方面。 – 维基百科拟阵就是满足如下条件的序偶M=(S,I)M=(S,I): 1. SS是一个有限集合; 2. II是SS的子集的非空族,这些子集称为独立子集,使得ifif B∈IB\in I且A⊆BA\subseteq B,则A∈IA \in I。注意,∅∈I\emptyset \in I原创 2015-12-29 20:02:25 · 1559 阅读 · 0 评论 -
单源最短路径问题之Dijkstra算法详解
单源最短路径问题之Dijkstra算法详解单源最短路径:给定一个图G=(V,E)G=(V,E),找到从给定源结点s∈Vs \in V到每个结点v∈Vv \in V的最短路径。Dijkstra算法目标:是解决带权重的有向图的单源最短路径问题。 前提:假设对于所有的边(u,v)∈E(u,v) \in E,都有w(u,v)≥0w(u,v) \geq 0。 该算法会在运行过程中维护一个结点集合SS。符号原创 2015-12-30 22:05:40 · 2545 阅读 · 0 评论 -
最大流问题及Ford-Fulkerson方法
流网络流网络是一个有向图,G=(V,E)G=(V,E),图中的每条边有一个非负的容量值c(u,v)≥0c(u,v)\geq 0.如果(u,v)∉E(u,v) \notin E,则定义c(u,v)=0c(u,v)=0。且在流网络中含有两个特殊的点:源节点 ss和汇结点 tt。 流网络的形式化定义如下: 设G=(V,E)G=(V,E)为一个流网络,其容量函数为 cc。GG中的流是一个实值函数f:V×原创 2016-03-18 22:55:37 · 708 阅读 · 0 评论 -
Java 位操作符使用---Single Number
上篇文章(Java位操作符使用总结)整理了Java位操作符的使用方法。这篇文章为大家展示一下,如何巧妙的利用位操作符的特性解决实际的问题。 让我们先看一个题目,Single Number,描述如下。 Given an array of integers, every element appears twice except for one. Find that single one.题目的主原创 2016-03-20 22:01:45 · 407 阅读 · 0 评论 -
动态规划算法——钢条切割问题
动态规划是通过组合子问题的解来求解原问题。与分治方法不同的是,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。在这种情况下,分治策略会重复的计算那些公共子问题。而动态规划是对每个子子问题只求解一次,将其保存在一个表格中,从而避免重复计算这些问题。 动态规划通常用于求解最优化问题(optimization problem)。这类问题拥有多个解,我们希望从中计算出最优解。当然,有些问原创 2016-04-10 10:08:12 · 3747 阅读 · 0 评论