gpt4 book ai didi

algorithm - 最小范围3套

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:17 26 4
gpt4 key购买 nike

我们有三套s1,s2,s3。我需要找到x,y,z这样
x E S1号
是S2
Z E S3区
设min表示x,y,z中的最小值
让max表示x,y,z的最大值
max min表示的范围应该是可能的最小值

最佳答案

当然,IVlad所描述的完全BruttFrand解决方案简单,因此编写更容易和更快,但其复杂性是O(n3)
根据你的algorithm标签,我想发布一个更复杂的算法,它有一个O(n2)最坏的情况和O(nlogn)平均复杂度(几乎可以肯定,但是我懒得做个证明)。
算法描述
考虑考虑一些抽象的元组我们想要找到一个元组,它的最大和最小元素之间的距离最小。我们可以说,距离实际上是由我们的最大元素和最小元素创建的。因此,它们之间的元素的价值其实并不重要,只要它位于最大值和最小值之间。
所以,这是方法我们分配一些额外的集合(我们称之为(X, Y, Z)),并将每个初始集合(SXY)合并为一个集合。我们还需要一种查找刚刚创建的集合中每个元素的初始集合的能力(因此,如果我们指向Z中的某个元素,我们可以说S并询问“这家伙是从哪里来的?”,我们的应用程序应该回答“他来自S[10]”。
之后,让我们根据新集合的键对其进行排序(在某些情况下,这将是o(n logn)或o(n))。
确定最小距离
现在有趣的部分来了。我们要做的是计算一些人工值,我们称之为最小距离,并将其标记为Y,其中S是来自d[x]的某个元素。该值是指使用序列中当前元素的前置/后继元素可以达到的最小x距离。
考虑下面的例子-这是我们的S集合(第一行显示索引,第二行-值和字母max - minSX表示初始集合):

0 1 2 3 4  5  6  7
------------------
1 2 4 5 8 10 11 12
Y Z Y X Y Y X Z

假设我们要计算索引为4的元素的最小距离事实上,最小距离意味着可以使用所选元素构建的最佳 Y元组。
在我们的例子中( Z),我们可以说我们的 (x, y, z)对看起来肯定像 S[4],因为它应该有我们计算距离的元素(很明显,呵呵)。
现在,我们必须填补空白我们知道我们要寻找的元素应该来自 (x, y, z)(something, 8, something)。我们希望这些元素在 X距离方面是最好的有一个简单的方法来选择它们。
我们进行双向运行(从当前元素向左运行,从当前元素向右运行),寻找第一个元素,而不是从- Z中在这种情况下,我们将从两个方向的 max - minY中寻找两个最近的元素(总共4个元素)。
这个发现方法正是我们所需要的:如果我们在跑步时选择from X的第一个元素(左/右,无关紧要),那么这个元素在距离上比任何其他元素都更适合我们。这是因为我们的 Z集合被排序了。
在我的示例中(计算索引数 X的元素的距离),我们将从右侧标记索引 S4的元素,从左侧标记索引 67的元素。
现在,我们必须测试4个可能发生的情况-并采取这样的情况,我们的距离是最小的。在我们的特殊情况下,我们有以下(前一个例程返回的元素):
Z  X  Y   X  Z
2 5 8 11 12

我们应该测试可以使用这些元素构建的每个(x,y,z)元组,使用最小距离的元组并为元素保存该距离。在这个例子中,我们可以说 1元组的最佳距离是 3。所以,我们存储 (11, 8, 12)(这里是元素索引)。
产生结果
现在,当我们知道如何找到距离时,让我们对 4集合中的每个元素都这样做(在最坏的情况下,这个操作将花费 d[5] = 4时间,比如平均 5)。
对集合中的每个元素都有了距离值后,只需选择距离最小的元素,然后再次运行距离计数算法(如上所述),但现在保存 S元组。这就是答案。
伪码
这里是伪代码,我试图使其易于阅读,但它的实现会更复杂,因为您需要编写代码集lookups*(“determinesetforeelement”)。还要注意,determine tuple和determine distance例程基本相同,但第二个例程生成实际的tuple。
COMBINE (X, Y, Z) -> S 
SORT(S)

FOREACH (v in S)
DETERMINE_DISTANCE(v, S) -> d[v]

DETERMINE_TUPLE(MIN(d[v]))

附笔
我很确定这个方法可以很容易地用于(—-元组搜索,仍然导致良好的算法复杂性。

关于algorithm - 最小范围3套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2856175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com