`
yiminghe
  • 浏览: 1460593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

最大间隔问题

阅读更多

给定  n 个实数 ,找出这n个数在实轴上相邻两个数 的 最大差值

如输入  2.3, 3.1, 7.5, 1.5, 6.3  (注意 无序哦)

最大差值:6.3-3.1=3.2

赫赫 ,不要先想排序 ! 

提示:

利用 鸽笼原理  :5个数,设 6个相同大小的桶在实轴上覆盖5个数 , 则必有一桶里没有数字 ,则知道最大差值了吧 ,嘿嘿,线性算法!


代码:

 

/**
 * Author: yiminghe
 * Date: 2008-10-7
 * Time: 23:14:27
 * Any problem ,contact yiminghe@fudan.edu.cn.
 */
public class GapSearch {

    //类内 函数内 变量初始化 

    private static double getMin(double[] data) {
        if (data.length < 1)
            throw new IllegalArgumentException("argument error");
        double min = data[0];
        for (int i = 1; i < data.length; i++) {
            min = Math.min(min, data[i]);
        }
        return min;

    }

    private static double getMax(double[] data) {
        if (data.length < 1)
            throw new IllegalArgumentException("argument error");
        double max = data[0];
        for (int i = 1; i < data.length; i++) {
            max = Math.max(max, data[i]);
        }
        return max;

    }

    private static double gap(double[] data) {

        double min = getMin(data);
        double max = getMax(data);
        if (data.length == 2)
            return max - min;
        int bucket = data.length + 1;
        int[] count = new int[bucket];
        double[] low = new double[bucket];
        double[] high = new double[bucket];
        for (int i = 0; i < bucket; i++) {
            low[i] = max;
            high[i] = min;
        }

        double gapV = (max - min) / bucket;

        for (int i = 0; i < data.length; i++) {
            int gapC = (int) ((data[i] - min) / gapV);
            gapC = (gapC == bucket) ? gapC - 1 : gapC;
            count[gapC]++;
            low[gapC] = Math.min(low[gapC], data[i]);
            high[gapC] = Math.max(high[gapC], data[i]);
        }

        double left = high[0];
        double maxGap = 0;
        for (int i = 1; i < bucket; i++) {
            if (count[i] != 0) {
                System.out.println(low[i] + "  -  " + high[i]);
                maxGap = Math.max(maxGap, low[i] - left);
                left = high[i];
            }
        }

        return maxGap;

    }


    public static void main(String[] args) {

        double[] data = new double[]{2.3d, 3.1d, 7.5d, 1.5d, 6.3d};

        System.out.println(gap(data));
    }
}
 

 

分享到:
评论

相关推荐

    最大间隔矩阵分解

    最大间隔矩阵分解是一种用于处理评分数据的方法,特别适用于推荐系统中的用户评分预测问题。该方法旨在通过构建一个低维空间来表示用户和物品,从而更好地估计用户对未评分物品的兴趣度。 - **定义**:MMMF的目标是...

    基于最大间隔准则的鲁棒多流形判别局部图嵌入算法.pdf

    本文主要介绍了一种名为“基于最大间隔准则的鲁棒多流形判别局部图嵌入算法”(RMMDLGE/MMC),该算法旨在解决多流形人脸识别中的噪声问题,提高分类识别的准确性。多流形人脸识别是一种利用多维几何结构分析人脸...

    支持向量机之最大间隔.pdf

    ### 支持向量机(SVM)之最大间隔解析 #### 一、基础知识与概念介绍 **支持向量机(SVM)**是一种监督学习模型,主要用于分类和回归分析。在机器学习领域,SVM因其在高维空间中的强大表现而受到广泛的关注。本文将...

    小球大间隔方法.zip

    而"ss2lm"可能代表一种特定的算法或模型,如"小球到最大间隔二阶线性方法",这是一种可能的优化间隔最大化的技术,它可能涉及到线性代数和优化理论,用于调整模型参数,使间隔最大化的同时保持模型的稳定性和准确性...

    基于最大间隔的决策树归纳算法.docx

    基于最大间隔的决策树归纳算法通过将SVM的最大间隔概念与决策树的构建相结合,为解决决策树泛化能力不足的问题提供了一种新的思路。这种方法不仅保留了决策树易于理解和解释的优点,还提高了模型的泛化能力。未来的...

    OPTIMASI_ALGORITMA_SUPPORT_VECTOR_MACHIN_paper_pdf_SVM_

    在实际应用中,SVM的优化问题通常转化为求解凸优化问题,如解决最大间隔问题,这涉及到处理大型数据集时的计算复杂性和内存需求。因此,有效的优化算法对于SVM的性能至关重要。 "paper pdf SVM"标签表明这是一个...

    SVM数学理论深入浅出的总结

    在这种情况下,最大间隔问题可以转化为求解以下优化问题: \[ \begin{aligned} & \min_{w,b} & & \frac{1}{2} ||w||^2 \\ & \text{s.t.} & & y_i(w \cdot x_i + b) \geq 1, \quad i = 1, \ldots, n \end{aligned} \]...

    SMO代码 (python)

    SMO是解决最大间隔问题的有效算法,尤其在处理大型数据集时,它通过将原问题转化为一系列的二次优化问题来求解线性可分或非线性可分的支持向量。 描述中提到,这个资源不仅包含了SMO算法的Python实现,还提供了原始...

    SVM分类程序

    - `SVM4.m`:可能包含了SVM的主要算法实现,包括构建拉格朗日乘子,求解最大间隔问题,以及优化问题的解决过程,例如使用SMO(Sequential Minimal Optimization)算法。 - `calF.m`:可能用于计算预测函数的值,...

    最大时间间隔误差启发的盲自适应均衡器均衡性能分析的新方法

    在本文中,我们提出了一个额外的工具(ISI,MSE和BER的补充),用于基于最大时间间隔误差(MTIE)准则分析收敛区域中的均衡性能,该准则用于规范时钟稳定性要求。电信标准。 与缺少该信息的已知工具(BER,ISI,MSE...

    libSVM组件

    3. **优化算法**:libSVM采用了基于SMO(Sequential Minimal Optimization)的优化算法,这是一种有效的求解SVM最大间隔问题的方法,能有效处理大规模数据集。 4. **参数调优**:libSVM内置了网格搜索(Grid Search...

    支持向量机(一)-最大间隔法和核函数

    最大间隔法(Maximum Margin)是SVM的核心原理之一,它基于几何间隔的概念,通过最大化不同类别数据点与决策边界(即超平面)之间的距离,来提高模型的泛化能力。SVM的目标是找到一个最优超平面,使得数据集中离超...

    QSVM_algorithm.rar

    3. **量子求解器**:在训练阶段,QSVM利用量子计算机的量子近似优化算法(如Grover搜索)或量子模拟器来求解最大间隔问题。这些量子算法在特定情况下可以提供指数级的加速。 4. **测量与后处理**:训练完成后,量子...

    一种集成式Beta过程最大间隔一类分类方法.docx

    一种集成式Beta过程最大间隔一类分类方法是一种针对一类分类问题的新型算法,旨在解决样本分布复杂,特别是多模分布情况下的分类性能下降问题。一类分类,又称为单类分类,其目标是仅根据目标类样本区分其他非目标类...

    论文研究 - 具有极端事件联系的间隔方法的最大乘积的最佳阈值确定

    但是,通过这种方法对数据进行建模时会遇到一个问题,即当超出范围时,该方法就会失效。 这项研究提供了一种解决数据建模的方法,即使该数据包含联系也是如此。 为此,确定了一个最佳阈值,该阈值为极端事件提供了...

    My97DatePicker:开始时间和结束时间的最大间隔为10天,并且不大于当前时间

    在这个特定的应用场景中,我们关注的是如何限制用户选择的开始时间和结束时间,以确保它们之间的最大间隔不超过10天,并且这两个时间都不大于当前服务器时间。 1. **时间范围限制**: - 开始时间:用户选择的开始...

    论文研究-生物信息学.基于少量异常数据的最大间隔新奇检测方法.pdf

    针对此问题,提出一种基于少量负类样本的最大间隔方法,其基本思想是:先构造一个超球面,让它包含尽可能多的正常实例,同时,球表面到正常实例之间的间隔越大越好,从而得到一个围绕正常实例的闭合而又紧贴异常实例...

Global site tag (gtag.js) - Google Analytics