算法理论
绝世好阿狸
这个作者很懒,什么都没留下…
展开
-
【算法理论】bin packing 装箱问题
Bin packing(装箱问题)Problem:给定n件物品和k个箱子,每一个箱子的容量为1,每一件物品的大小w为(0,1),要求使用最少数目的箱子来装上全部的物品。这个问题是NPC问题,只有approximation(近似)算法。一个2-approximation的多项式算法。算法:先打开一个箱子,然后逐一放入物品,如果当前的物品没有一个已打开的箱子可以放入,那么就新打开一原创 2016-12-27 11:21:44 · 28401 阅读 · 2 评论 -
【算法理论】Knapsack(背包)问题
Knapsack(背包)问题Problem:给定n件物品,每一件物品有价值vi和重量wi,给定一个容量为W的箱子,要求用在不超过箱子容量的前提下,装入价值尽可能多的物品。这个问题分为两个版本,一种是fractional,即每件物品是可拆分的,另一种是01类型的,即每件物品要么全拿要么不拿。Fractional版本:这个版本的问题存在得到最优解的贪心算法,属于P问题,即多项式可解。贪原创 2016-12-30 03:00:49 · 9160 阅读 · 0 评论 -
【算法理论】N NP NPC 问题
算法分析中会把问题分为若干类。P问题:指存在多项式时间解法的问题,比如二分查找NP问题:指存在多项式时间验证的问题,比如独立集问题,是否存在size至少为k的独立集,那么随便给定一个k大小的点集,验证是否为独立集肯定是多项式时间可以完成的。而且在NP中,一般都是针对判定性问题,即把一个optimization的问题转化为decision的问题。也就是说我们要解决一个optimiazatio原创 2016-12-30 07:47:48 · 4618 阅读 · 0 评论 -
【数据结构与算法】二分查找
二分查找 是logn的查找算法,思路是,只有在low=high的时候才判断是否相等,否则就一分为二,计算左边的结果和右边的结果,返回不是-1的,如果都没找到,返回-1.package main;public class Algorithm { public static int binarySearch(int[] array ,int k){ return search(arra原创 2016-12-30 08:36:39 · 295 阅读 · 0 评论 -
【Leetcode】72. Edit Distance
题目:https://leetcode.com/problems/edit-distance/?tab=Description题目要求最少的变换数目把s1变成s2,有三种操作,insert,change,delete。f(i,j)返回从s1从i位置以后的string变换到s2从j位置以后的string,最开始从两个sting的开头比较,如果一样,返回f(i+1,j+1)。否则有三种方式,如原创 2017-03-02 11:55:49 · 261 阅读 · 0 评论 -
【数据结构与算法】小于等于k的最大连续子序列和
使用Kadane算法可以在On内得到最大连续子序列和。如果要求得到和不超过k,那么该如何解决?首先要看能不能继续使用Kadane算法。答案是不能。回顾Kadane,Kadane中使用dp[i]存最后一个元素是array[i]的最大和,然后所有dp[i]的最大值。那么首先一个想法是,找出dp[i]中小于等于k的值中的最大值。这是不正确的,因为正常来讲,要求小于等于k的最大值,我们应该求出所有原创 2017-03-05 05:53:48 · 6260 阅读 · 1 评论