Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法问题分类_Algorithm - Fatal编程技术网

Algorithm 算法问题分类

Algorithm 算法问题分类,algorithm,Algorithm,在一个algo竞赛网站上有一个很大的问题。我花了5天时间试图解决这个问题。我不是要你帮我解决这个问题,因为我对算法还不熟悉,我想请你帮我分类这类问题,有没有人解决过这样的问题,NP问题的类型是什么。请不要以为我要求你为我解决这个问题,我的目的只是学习算法,而这个问题对我来说已经够难了: 这个谜题的目的是确定在哪里放置一组气体 使其离机场最近。机场利用一个 飞机加油需要大量的汽油,所以关闭加油站是非常困难的 具有战略重要性 输入规范您的程序应该只接受一个命令 行参数:输入文件(传入argv、arg

在一个algo竞赛网站上有一个很大的问题。我花了5天时间试图解决这个问题。我不是要你帮我解决这个问题,因为我对算法还不熟悉,我想请你帮我分类这类问题,有没有人解决过这样的问题,NP问题的类型是什么。请不要以为我要求你为我解决这个问题,我的目的只是学习算法,而这个问题对我来说已经够难了:

这个谜题的目的是确定在哪里放置一组气体 使其离机场最近。机场利用一个 飞机加油需要大量的汽油,所以关闭加油站是非常困难的 具有战略重要性

输入规范您的程序应该只接受一个命令 行参数:输入文件(传入argv、args、arguments) 取决于语言)。输入文件的格式如下:

第一行包含一个整数:n机场的数量n 以下各行包含2个浮点值席义 代表第i个机场的坐标,如下所示 包含要分析的案例数p(p始终小于5) 以下p行各包含一个整数gi,表示 所需加油站

输出规格: 你的程序应该输出 标准输出的结果(printf、print、echo、write):您的 输出应包含p行,每行提供gj坐标 加油站的xj,yj。您的解决方案分数将由 解决方案的质量。溶液的质量通过以下方法测量: 总距离,总距离D是和的平方根 从每个机场到最近加油站的平方距离。这个 总距离D越小,得分越高


对于gi=1的情况。这很简单-你只需要计算重心/质量(从所有机场,你甚至可以用每个机场消耗的燃油量来增加机场的重量,这样就可以使加油站更靠近耗油量大的机场,但这不是必需的,所以你可以给所有机场相同的重量)。这将产生一个最优解(这也是一个很好的例子,非线性全局优化并不一定意味着NP难)


我的想法是将机场集合划分为gi集合,然后将重心/质量应用于每个集合。这将被归类为一个集群问题(或者可能是一个分区,取决于您如何表述它)。(实际上,我会应用k-means聚类来解决这个问题)。(如果你想得到完美的结果,这确实是一个NP难问题,但也许有人能想出另一个好的解决方案)

这个问题就是规范的无监督k-均值分类问题。有关详细信息,请参见此处:


对于一个快速提示(如果你想避免完全破坏者),k-means只需从为你的加油站挑选随机位置开始。它通过一次一个地降低每个加油站的成本来改进此后每次迭代的解决方案。它通过移动加油站来实现这一目标,目的是最大限度地降低目前为其提供燃料的一组机场的成本。

这似乎是该计划的一个变体。寻找最优位置是NP困难的,但许多近似方法可用于在一定的最优保证距离内找到解。或者,如其他答案中所建议的,可以使用诸如聚类之类的软方法

机场的数量最多为1000个,加油站的数量为256个。这个问题不在NP中,因为它不是一个决策问题。然而,回答“是否有一个至少与k一样好的解决方案”这个问题可能是NP难的