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;
}
}
分享到:
相关推荐
这个函数得到的非支配点是一组解 idxs = getNonDominates(解决方案) 解决方案是 amxn 矩阵,其中 m 是点数(解决方案) n 是目标的数量。 idxs 包含非支配点的索引。
首先,我们可以找到第一个支配点,然后使用引理来找到第二个支配点。最后,我们可以使用图论算法来计算答案。 本文档提供了五个题目的解题思路和技术分析,涵盖了哈希技术、Lucas 定理、字符串自动机、猫树和图论等...
在无线传感器网络中,通常采用连通支配集来构成一个虚拟骨干网进行分层路由,对重要的目标或环境需要构造容错性高,可靠性好...后一种算法是首先保证每个非支配点都要变成2-被支配点,然后再使图中所有支配点构成回路。
在多目标优化问题中,计算支配点是至关重要的一步,因为这些点代表了解空间中的最优解集合,它们在各个目标函数之间达到了平衡。帕累托最优是多目标优化中的核心概念,它指的是没有任何一个目标可以改善而不恶化其他...
Skyline查询,也被称为 skyline operator 或者 Pareto frontier,在数据挖掘领域中,是一种用于找出多维度数据集中的非支配点的算法。这些非支配点在各个维度上没有其他点能够全面优于它们,也就是说,不存在一个点...
从根节点开始,将具有局部最大分享度的节点作为支配点,选择连接点与已确定的支配点连通,逐步构造网络的支配树,分析支配树的直径,计算支配树的平均跳数距离(AHD),从而评价网络的通信成本。实验结果表明,与CDS-...
- **交叉**:通常采用单点或多点交叉策略,交换两个父代个体的部分基因以产生子代。 - **变异**:通过随机改变个体的部分基因来引入新的解决方案,增加种群多样性。 4. **拥挤距离**:在非支配排序之后,NSGA-II...
在数据聚集树的构造过程中,对于两个相距两跳的支配点,它们共同的、相距两跳的支配点,通过距sink最近的支配点加入数据聚集树;而在数据调度过程中,采用一种新的选择标准从竞争集中选择节点进行数据调度。通过这两...
在二维空间中,如果X1≥X2且Y1≥Y2,那么称点(X1,Y1)支配点(X2,Y2)。如果一个点没有其他点支配,那么称其为极大者。己知有 n 个点的集合,求极大点问题是指找出在 n 个点中的所有极大点。 二、分治算法求解二维极大...
#### 四、支配点、支配集与支配数 - **定义**:在无向图中,一个顶点集合V*被称为支配集,如果V中除了V*自身外的每个顶点至少与V*中的一个顶点相邻。 - **极小支配集**:极小支配集是指满足支配条件但无法通过移除...
5. 变异和交叉操作:对下一代种群应用遗传操作,如单点交叉、均匀交叉和变异,以生成新的解决方案。 6. 重复步骤2-5,直到满足停止条件(如达到最大迭代次数或满足特定性能指标)。 通过以上步骤,NSGA-II能够有效...
- 对于相同层级的合并节点,迭代计算这些节点上的φ节点集的固定点。 - 在这个过程中,不需要显式计算DFI集合,而是采用了一个变量集来保存φ节点。 - **算法特点**: - 直接在支配树上工作,避免了额外的数据...
Skyline查询的目标是从大规模数据集中找出这样的无支配点集合,这对于理解和概括数据集的关键特征至关重要。 在分布式环境下处理Skyline查询,由于数据通常分布在多个节点上,因此需要设计高效的算法来合并各个节点...
python排序算法:
本篇将详细介绍MATLAB源码集锦中的改进非支配邻域免疫算法目标优化代码的相关知识点。 首先,我们要理解非支配概念。在多目标优化中,非支配解是指没有其他解在所有目标函数上都优于或等于它。第一层非支配解是最优...
非支配排序遗传算法第二代(Non-Dominated Sorting Genetic Algorithm II,简称NSGA-II)是一种多目标优化算法,广泛应用于解决复杂、多目标的优化问题。在IT领域,尤其是在工程设计、机器学习和人工智能中,NSGA-II...
5. **交叉和变异操作**:传统的遗传操作如单点、均匀或部分匹配交叉以及位变异在NSGA-II中得到应用,以生成下一代种群。 6. **迭代与终止条件**:算法持续迭代,直到达到预设的代数限制或其他终止条件。 **Python...
Skyline Analysis 的核心思想是找到数据集中那些没有支配点的点,这些点在所有维度上都不比其他点差。在洪水淹没分析中,这可能意味着找出那些无论降雨量如何变化,都无法避免被淹没的区域。例如,这些区域可能是...