C#,K中心问题(K-centers Problem)的算法与源代码
2023-09-11 14:15:48 时间
k-centers problem: 寻找k个半径越小越好的center以覆盖所有的点。
比如:给定n个城市和每对城市之间的距离,选择k个城市放置仓库(或ATM或云服务器),以使城市到仓库(或ATM或云服务器)的最大距离最小化。
再如:考虑以下四个城市,0、1、2和3,以及它们之间的距离,如何在这四个城市中放置两台ATM,以使城市到ATM的最大距离最小化。
using System;
using System.Collections.Generic;
namespace Legalsoft.Truffer.Algorithm
{
public class K_Centers
{
private static int MaxIndex(int[] dist, int n)
{
int mi = 0;
for (int i = 0; i < n; i++)
{
if (dist[i] > dist[mi])
{
mi = i;
}
}
return mi;
}
public static List<int> Select_K_Cities(int[,] weights, int k)
{
int n = weights.GetLength(0);
int[] dist = new int[n];
List<int> centers = new List<int>();
for (int i = 0; i < n; i++)
{
dist[i] = Int32.MaxValue;
}
int max = 0;
for (int i = 0; i < k; i++)
{
centers.Add(max);
for (int j = 0; j < n; j++)
{
dist[j] = Math.Min(dist[j], weights[max, j]);
}
max = MaxIndex(dist, n);
}
List<int> list = new List<int>();
list.Add(dist[max]);
for (int i = 0; i < centers.Count; i++)
{
list.Add(centers[i]);
}
return list;
}
}
}
相关文章
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- C#,图像二值化(12)——基于谷底最小值的全局阈值算法(Valley-Minium Thresholding)与源代码
- C#,图论与图算法,图颜色问题(MCP,M-coloring problem)的回溯(Backtracking)算法与源代码
- C#,图论与图算法,有向图(Graph)之环(Cycle)判断的颜色算法与源代码
- C#,子集和问题(Subset Sum Problem)的算法与源代码
- C#,二进制数的按位旋转(Bits Rotate)算法与源代码
- C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码
- C#,铁蛋·奥纳奇数(Geek Onacci Number)的算法与源代码
- C#,超级阿格里数字(超级丑数,Super Ugly Number)的算法与源代码
- C#,广义斐波那契数(Generalised Fibonacci Numbers)的算法
- C#,欧拉数(Eulerian Number)的算法与源代码
- C#,煎饼排序问题(Pancake Sorting Problem)算法与源代码
- C#,机器学习的KNN(K Nearest Neighbour)算法与源代码
- C#,双向链表(Doubly Linked List)快速排序(Quick Sort)算法与源代码
- C#,因数分解(质因子分解)Pollard‘s Rho算法的源代码
- C#,字符串匹配(模式搜索)RK(Rabin Karp)算法的源代码
- C#,最大公约数(GCD)斯坦因(Stein)算法的源代码
- C#,码海拾贝(14)——实矩阵与复数矩阵“求逆”的高斯·约当算法,《C#数值计算算法编程》源代码升级改进版
- C#,码海拾贝(03)——积分Integral算法类,《C#数值计算算法编程》源代码升级改进版
- C#,数值计算(Numerical Recipes in C#),矩阵的奇异值分解(SVD,Singular Value Decomposition)算法与源代码
- C#,生成字符串整数校验码(Checksum)的谷歌(Google)算法与源代码
- C#查找算法
- c#代码规则,C#程序中元素的命名规范