【7】数据结构与算法
文章平均质量分 78
Demp_sey
学习数据挖掘ing
展开
-
动态规划-矩阵链乘
问题描述给定n个矩阵构成的一个链给定{A1,A2,…,An},其中i=1,2,...,n.矩阵Ai的维数为pi-1*pi,如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 最优子结构对乘积A1A2...An的任意加括号方法都会将序列在某个地方分成两部分,也就是最后一次乘法计算的地方,我们将这个位置记为k,也就是说首先计算A1...Ak和A原创 2014-03-09 12:37:41 · 169 阅读 · 0 评论 -
动态规划-装配线调度
问题描述:一个找出通过工厂装配线的最快方式的制造问题。共有两条装配线,每一条装配线上有n个装配站,编号为j = 0, 1, … , n – 1。装配线i(i = 0或1),在装配站S[i][j]上所需的装配时间记为a[i][j]。一个汽车底盘进入工厂,然后进入装配线i的进入时间为e[i],在通过一条线的第j个装配站后,这个底盘来到任一条线的第(j + 1)个装配站。如果留在相同的装配线原创 2014-03-09 17:16:36 · 240 阅读 · 0 评论 -
算法导论-贪心策略
贪心的基本步骤:1)决定问题的最优子结构;2)设计出一个递归解;3)证明在递归的任一阶段,最优选择之一总是贪心选择。那么,做贪心选择总是安全的;4)证明通过做贪心选择,只有一个子问题;5)设计出一个实现贪心策略的递归算法;6)将递归算法转换成迭代算法。更一般的,可以用下面的方式来描述:1)将优化问题转化成先做出选择,再解决原创 2014-03-08 21:18:19 · 190 阅读 · 0 评论 -
动态规划-最长上升子序列(LIS)
这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。利用LCS算法实现思路:设原序列为A[],将A[]进行排序后生成排好序的序列B[],利用LCS 算法查找A[],B[]的最长公共子序列即可找出LIC。时间复原创 2014-03-08 21:27:45 · 229 阅读 · 0 评论 -
贪心算法-活动选择
问题描述问题来自算法导论16.1。几个相互竞争的活动进行调度,他们要求以独占的方式使用某一公共资源。调度的目标是找出一个最大的相互兼容活动集合。思想:总是选择剩余活动中具有最早结束时间的活动。/*****************************************************************************Copyright:原创 2014-03-08 21:15:46 · 221 阅读 · 0 评论 -
动态规划-最长公共子序列
问题描述某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置而形成的新序列。给定两个序列X和Y,如果Z既是X的一个子序列又是Y的一个子序列,则称Z是X,Y的公共子序列。给定两个序列X={x1,x2...,xm}和Y={y1,y2...yn},找出Z={z0,z1,…,zk}为它们的最长公共子序列.最优子结构设X={x1,x2...,xm原创 2014-03-09 12:57:10 · 189 阅读 · 0 评论 -
动态规划-最优二叉搜索树
问题描述给定一个由n个互异的关键字组成的序列K={k1,k2,...,kn},且关键字有序,对于每一个关键字ki,一次搜索为ki的概率是pi。某些搜索的值可能不在K内,因此还有n+1个虚拟键d0,d1,...,dn代表不再K内的值。d0代表所有小于k1的值,dn代表所有大于kn的值,对于i=1,2,...,n-1,di代表所有位于ki和ki+1之间的值。对每个虚拟键di,一次搜索对应于di原创 2014-03-09 12:59:33 · 277 阅读 · 0 评论 -
算法导论-数据结构的扩张
首先给出数据结构的扩张的四个步骤:1)选择基础的数据结构;2)确定要在基础数据结构中添加哪些信息;3)验证可以用基础数据结构上的基本修改操作来维护这些新添加的信息;4)设计新的操作。算法导论书上给出的是红黑树的一种扩张-动态顺序统计。将容量为n的随机样本的各个测定值 (x1,x2,……,xn),从小到大顺序的排列,xi所在的顺序位置就是它原创 2014-03-09 13:03:02 · 166 阅读 · 0 评论