`
fantasy
  • 浏览: 516265 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

支配点

J# 
阅读更多
import java.util.Arrays;

/**
 * 支配点问题: 支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支配点;比如int[] a =
 * {3,3,1,2,3};3为支配数,0,1,4分别为支配点; 要求:返回任何一个支配点
 * 
 * @author fangtengfei
 * @date 2010-5-15
 */
public class ControlPoint {

 public static void main(String[] args) {
  int[] a1 = { 3, 3, 1, 2, 3, 3, 1, 3, 4 };
  int[] a2 = { 1, 1, 1, 2, 3, 3, 1, 3, 4 };
  int[] a3 = { 3, 1, 3, 1, 2, 3, 1, 1, 1 };
  System.out.println(getControlPoint(a1));
  System.out.println(getControlPoint(a3));
  System.out.println(getControlPoint(a2));
 }

 private static int getControlPoint(int[] a) {
  // 只有长度大于二的数组才可能有支配数
  if (a == null || a.length < 2) {
   return -1;
  }
  // 先排序,找出中位数,如果存在支配数,必是中位数
  int[] b = a;
  Arrays.sort(b);
  int median = b[b.length / 2];
  int controlPointIndex = -1;
  int controlPointLength = 0;
  // 中位数
  for (int j = 0; j < a.length; j++) {
   int k = a[j];
   if (median == k) {
    controlPointIndex = j;
    controlPointLength++;
   }
  }
  if (controlPointLength > a.length / 2) {
   return controlPointIndex;
  }
  return -1;
 }
}

 

分享到:
评论

相关推荐

    非支配点:该函数的主要目标是确定非支配点-matlab开发

    这个函数得到的非支配点是一组解 idxs = getNonDominates(解决方案) 解决方案是 amxn 矩阵,其中 m 是点数(解决方案) n 是目标的数量。 idxs 包含非支配点的索引。

    ICPC2023 西安区域赛 题解.pdf

    首先,我们可以找到第一个支配点,然后使用引理来找到第二个支配点。最后,我们可以使用图论算法来计算答案。 本文档提供了五个题目的解题思路和技术分析,涵盖了哈希技术、Lucas 定理、字符串自动机、猫树和图论等...

    论文研究-2-连通2-支配集的集中式构造.pdf

    在无线传感器网络中,通常采用连通支配集来构成一个虚拟骨干网进行分层路由,对重要的目标或环境需要构造容错性高,可靠性好...后一种算法是首先保证每个非支配点都要变成2-被支配点,然后再使图中所有支配点构成回路。

    计算支配点:该函数返回多目标优化的一组解的帕累托点-matlab开发

    在多目标优化问题中,计算支配点是至关重要的一步,因为这些点代表了解空间中的最优解集合,它们在各个目标函数之间达到了平衡。帕累托最优是多目标优化中的核心概念,它指的是没有任何一个目标可以改善而不恶化其他...

    xxl.rar_skyline algorithm_skyline java_skyline查询_skyline查询算法_xxl

    Skyline查询,也被称为 skyline operator 或者 Pareto frontier,在数据挖掘领域中,是一种用于找出多维度数据集中的非支配点的算法。这些非支配点在各个维度上没有其他点能够全面优于它们,也就是说,不存在一个点...

    基于分享度的最小连通支配集求解算法 (2013年)

    从根节点开始,将具有局部最大分享度的节点作为支配点,选择连接点与已确定的支配点连通,逐步构造网络的支配树,分析支配树的直径,计算支配树的平均跳数距离(AHD),从而评价网络的通信成本。实验结果表明,与CDS-...

    NSGA-II非支配排序算法

    - **交叉**:通常采用单点或多点交叉策略,交换两个父代个体的部分基因以产生子代。 - **变异**:通过随机改变个体的部分基因来引入新的解决方案,增加种群多样性。 4. **拥挤距离**:在非支配排序之后,NSGA-II...

    论文研究-无线传感网中一种改进的分布式数据聚集调度算法.pdf

    在数据聚集树的构造过程中,对于两个相距两跳的支配点,它们共同的、相距两跳的支配点,通过距sink最近的支配点加入数据聚集树;而在数据调度过程中,采用一种新的选择标准从竞争集中选择节点进行数据调度。通过这两...

    分治算法求解二维极大点问题的求解.docx

    在二维空间中,如果X1≥X2且Y1≥Y2,那么称点(X1,Y1)支配点(X2,Y2)。如果一个点没有其他点支配,那么称其为极大者。己知有 n 个点的集合,求极大点问题是指找出在 n 个点中的所有极大点。 二、分治算法求解二维极大...

    二分图匹配

    #### 四、支配点、支配集与支配数 - **定义**:在无向图中,一个顶点集合V*被称为支配集,如果V中除了V*自身外的每个顶点至少与V*中的一个顶点相邻。 - **极小支配集**:极小支配集是指满足支配条件但无法通过移除...

    NSGA-II.rar_NSGA_拥挤距离_排序_非支配_非支配排序

    5. 变异和交叉操作:对下一代种群应用遗传操作,如单点交叉、均匀交叉和变异,以生成新的解决方案。 6. 重复步骤2-5,直到满足停止条件(如达到最大迭代次数或满足特定性能指标)。 通过以上步骤,NSGA-II能够有效...

    基于支配边界逆转的多变量_函数摆放算法

    - 对于相同层级的合并节点,迭代计算这些节点上的φ节点集的固定点。 - 在这个过程中,不需要显式计算DFI集合,而是采用了一个变量集来保存φ节点。 - **算法特点**: - 直接在支配树上工作,避免了额外的数据...

    一种分布式环境下的skyline查询算法.pdf

    Skyline查询的目标是从大规模数据集中找出这样的无支配点集合,这对于理解和概括数据集的关键特征至关重要。 在分布式环境下处理Skyline查询,由于数据通常分布在多个节点上,因此需要设计高效的算法来合并各个节点...

    python排序算法

    python排序算法:

    MATLAB源码集锦--改进非支配邻域免疫算法目标优化代码

    本篇将详细介绍MATLAB源码集锦中的改进非支配邻域免疫算法目标优化代码的相关知识点。 首先,我们要理解非支配概念。在多目标优化中,非支配解是指没有其他解在所有目标函数上都优于或等于它。第一层非支配解是最优...

    带精英策略的非支配排序遗传算法(NSGA-II)

    非支配排序遗传算法第二代(Non-Dominated Sorting Genetic Algorithm II,简称NSGA-II)是一种多目标优化算法,广泛应用于解决复杂、多目标的优化问题。在IT领域,尤其是在工程设计、机器学习和人工智能中,NSGA-II...

    非支配排序遗传算法(NSGA-II) 的实现,一种Python 中 的多目标优化算法_python_Jupyter _代码_下载

    5. **交叉和变异操作**:传统的遗传操作如单点、均匀或部分匹配交叉以及位变异在NSGA-II中得到应用,以生成下一代种群。 6. **迭代与终止条件**:算法持续迭代,直到达到预设的代数限制或其他终止条件。 **Python...

    Skyline_Analysis_CreateFlood

    Skyline Analysis 的核心思想是找到数据集中那些没有支配点的点,这些点在所有维度上都不比其他点差。在洪水淹没分析中,这可能意味着找出那些无论降雨量如何变化,都无法避免被淹没的区域。例如,这些区域可能是...

Global site tag (gtag.js) - Google Analytics