由于工作安排的原因,可能暂时不会再学python了。因此有关python的文章,这可能是最后一篇(目前)。但我会继续更新其他的东西。
这篇关于最小序列的问题。我目前知道的就两种方法,一种就是穷举,这种就是我这种吊丝程序员常用的方法。方法很有效,但遇到数据很大的时候,性能就很差。或者对时间复杂度有要求的话,再使用这种方法就行不通了。我这里使用的是下面一种方法。是通过建堆的方式。这种方式会牺牲一点内存空间。但性能很好。具体的就不说了。 看代码吧
# -*- coding: cp936 -*- #--------------------------------------------- # - #author chile - #version 1.0 - #since - #date 2014-02-27 - #desc 最小序列 - # - # - # - #--------------------------------------------- def mink(srcArr,mink): minArr = initSerial(srcArr,mink) #初始化目标数组 minArr = buildHeap(minArr) #将目标数组键最大堆 index = mink step = 1; while(index < len(srcArr)): print '构造步骤 ', step , ': ',minArr if srcArr[index] < minArr[0]: #当前堆与原数组中后面的数比较 minArr[0] = srcArr[index] #如果存在比当前堆中小的数,则替换 minArr = maxHeap(minArr,1,mink) #在重新键最大堆 index += 1 step += 1 return minArr #键最大堆 def buildHeap(minArr): heapsize = len(minArr) index = heapsize / 2; while(index > 0): temp = maxHeap(minArr,index,heapsize) minArr = temp index -= 1 return minArr #调整堆大小 def maxHeap(minArr,i, heapsize): largest , left , right = i , 2 * i , 2 * i + 1 if left <= heapsize and minArr[i - 1] < minArr[left - 1]: largest = left if right <= heapsize and minArr[largest - 1] < minArr[right - 1]: largest = right if largest != i: temp = minArr[i - 1] minArr[i - 1] = minArr[largest - 1] minArr[largest - 1] = temp maxHeap(minArr,largest,heapsize) return minArr def initSerial(srcArr,k): minArr = [] index = 0; for val in srcArr: if index == k: return minArr minArr.append(val) index += 1 return minArr srcArr = [4, 7, 8, 6, 10, 14, 16 ,5, 3, 1, 2] mixK = 4 print '原序列: ',srcArr minArr = mink(srcArr,mixK) print '最小序列:',minArr
相关推荐
这是利用序列最小优化算法求解多核学习问题的程序,C++编写
把一个包含n个正整数的序列划分成m个连续的子序列,每个整数刚好属于一个序列。设第i个序列的各数之和是S(i)。要求:让所有的S(i)的最大值尽量小。例如:序列1,2,3,2,5,4划分成3个序列的最优方案为123|25|4,...
给定n 个整数组成的序列,编程计算该序列的最优m 段分割,使m 段子序列的和的最大值达到最小。 Input 输入由多组测试数据组成。 每组测试数据输入的第1行中有2个正整数n和m。正整数n是序列的长度;正整数m是分割...
2、求解最小机器重量设计问题1 问题描述:设某一机器由n个部件组成,部件编号为1~n,每一种 部件都可以从m个不同的供应商处购得,供应商编号哦1~m。设 wij是从供应商j处购得的部件i的重量,cij 是相应的价格。试设计 ...
基于在线最小二乘支持向量机回归的混沌时间序列预测
把一个包含n个正整数的序列划分成m个连续的子序列,每个整数刚好属于一个序列。设第i个序列的各数之和是S(i)。要求:让所有的S(i)的最大值尽量小。例如:序列1,2,3,2,5,4划分成3个序列的最优方案为123|25|4,...
这是一个用序列最小优化算法进行训练得到的支持向量机实现代码。
把一个包含n个正整数的序列划分成m个连续的子序列,每个整数刚好属于一个序列。设第i个序列的各数之和是S(i)。要求:让所有的S(i)的最大值尽量小。例如:序列1,2,3,2,5,4划分成3个序列的最优方案为123|25|4,...
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列 {i1, i2,…, ik},使得对于所有j=...
最小二乘辨识 MATLAB实现 %LSeg1 u=[-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]; %系统辨识的输入信号为一个周期的M序列(模拟白噪声) z=zeros(1,16); %定义输出观测值的长度 for k=3:16 z(k)=1.5*z(k-1)-0.7*z(k-2)+...
可稳定处理至多10k大小的文件间的对比。最小公共序列. 使用了三种方法实现
LSBoost最小二乘树时间序列预测(Matlab完整程序和数据) LSBoost最小二乘树时间序列预测(Matlab完整程序和数据) LSBoost最小二乘树时间序列预测(Matlab完整程序和数据) LSBoost(最小二乘树)训练集平均绝对误差...
白噪声、M序列和最小二乘方法、递推最小二乘、增广递推最小二乘法
然后,利用样本数据结合最小二乘法确定两类字符串各自的优先级函数,并且逐步优化其参数使之达到稳定,提高了可信度.最后,根据优先级函数找出关键词,然后确定权数,用层次分析法对未知样本进行分类,并定出显著水平,从而...
详细介绍了M序列本原多项式公式和连接方法
该代码适用于线性回归。利用最小二乘拟合方法对时间序列进行趋势项提取,提取的线性项与原始序列之间的残差平方和为最小为原则,进行趋势项的估计。
支持向量机是一个非常出色的二分类分类方法,这是支持向量机笔记第二篇,介绍SMO算法,使用Matlab代码。
学习系统辨识的作业,最小二乘整批算法,输入为M序列,感兴趣的可以参考下
【问题描述】 序列a(1),a(2),…,a(n)以及正整数k。对于i>1,a(i)是满足下面2个性质的最小正整数: (1) a(i) > a(i-1); (2) a(i) 的各位数字的和与k×a(i-1)的各位数字的和相等。 例如,a(1)=1,k=2,n=6时,该...
最大堆最小堆 问题的提出 给定k个排好序的序列S1,S2…,Sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优...