`
fantasy
  • 浏览: 513733 次
  • 性别: 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) 的实现,一种Python 中 的多目标优化算法_python_Jupyter _代码_下载

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

    Skyline_Analysis_CreateFlood

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

    Voronoi图形生成软件,用于生成png格式的泰森多边形彩图,或区块图。也可用于现有jpg、png图像的泰森多边形艺术化处理。

    泰森多边形,也称为冯洛诺伊图,是一种几何分割方法,它将平面分割成多个区域,每个区域都由特定点集中的一个点“支配”,并且该区域内所有其他点到该点的距离都比到任何其他支配点的距离更近。这种图形在各种领域都...

Global site tag (gtag.js) - Google Analytics