寻找一种具有尽可能少的比较操作的排序算法

2024-01-24

我想对由人类执行比较的项目进行排序:

  • Pictures
  • 工作项目的优先级
  • ...

对于这些任务,比较次数是性能的限制因素。

  • 需要的最少比较次数是多少(我假设>N for N items)?
  • 哪种算法可以保证这个最小数量?

为了回答这个问题,我们需要做出很多假设。

假设我们正在按可爱程度对图片进行排序。目标是在最短的时间内从人类那里获得最大的可用信息。这种交互将主导所有其他计算,因此它是唯一重要的一种。

正如其他人提到的,人类可以很好地在一次交互中订购多个商品。假设我们每轮可以按相对顺序获得八个项目。

每轮将七个边引入有向图中,其中节点是图片。如果节点 A 可从节点 B 访问,则节点 A 比节点 B 更可爱。请记住此图。

现在,让我告诉你一个海军和空军以不同方式解决的问题。他们都希望快速、有序地召集一群人。海军告诉人们排队,如果你比前面的人矮,就交换位置,然后重复直到完成。最坏的情况是N*N比较。

空军告诉人们要站在方格内。他们对 sqrt(N) 个人进行从前到后的洗牌,这意味着最坏情况 sqrt(N)*sqrt(N) == N 比较。然而,人们只能按照一个维度进行排序。因此,人们面向左,然后再次进行相同的洗牌。现在我们进行了 2*N 次比较,排序仍然不完美,但对于政府工作来说已经足够了。有一个短角,对面有一个高角,还有明显的对角线高度梯度。

如果您不关心完美,您可以看到空军方法如何在更短的时间内获得结果。您还可以了解如何有效地达到完美。您已经知道最矮和最长的人位于两个角落。第二矮的可能在最矮的后面或旁边,第三矮的可能在他的后面或旁边。一般来说,某人的身高等级也是他距短角球的最大可能曼哈顿距离。

回顾一下图的类比,每轮呈现的八个节点是当前最长入站路径最常见长度的八个节点。最长入站路径的长度也表示节点的最小可能排序等级。

遵循此计划,您将使用大量 CPU,但您将最大限度地利用您的人力资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

寻找一种具有尽可能少的比较操作的排序算法 的相关文章

  • 当 docvalues=true 时,小写过滤器工厂不起作用

    我正在尝试使用 Solr 实现不区分大小写的排序并面临这个问题 https stackoverflow com questions 31745713 solr case insensitive sort not working Copied
  • Python带有负数的排序列表[重复]

    这个问题在这里已经有答案了 为了尝试通过练习来学习Python 我正在尝试使用Python来实现和测试快速排序算法 实现本身并不困难 但是排序的结果有点令人费解 当我对列表进行排序时 35 1 2 7 8 3 4 20 6 53 结果给了我
  • 数组中最远的相等元素

    假设你有一个未排序的数组 你如何找到两个相等的元素 使它们成为数组中最远的元素 例如8 7 3 4 7 5 3 9 3 7 9 0ans 将是7 9 7 1 8 我想到了以下几点 initialise max 0 using hashing
  • 运行时间为 O(n) 且就地排序的排序算法

    有没有运行时间为O n 并且还分类到位 在某些情况下 最好的情况是 O n 但这可能是因为项目集合已经排序 你正在看 O nlogn 一些较好的平均值 话虽如此 排序算法的 Wiki 还是相当不错的 有一个表格比较了流行的算法 说明了它们的
  • 更合适地说插入未排序动态数组的摊销 O(1) 与 O(n) ?

    这属于 stackoverflow com help on topic 中的 软件算法 在本例中 是一种将项目添加到动态未排序数组的软件算法 This is chart we made in class about the runtimes
  • 如何检查无向图是否有奇数环

    我试图找到一个 O V E 时间算法来检查是否已连接 无向图有或没有奇数环 我正在考虑对图进行广度优先搜索 并尝试将顶点标记为黑色和白色 以便没有两个标记为相同颜色的顶点相邻 是否有任何已知的更简洁的算法可以在线性时间内解决这个问题 你的方
  • 神经网络的层和神经元

    我想更多地了解神经网络 我正在开发一个 C 程序来制作神经网络 但我坚持使用反向传播算法 很抱歉没有提供一些工作代码 我知道有很多库可以用多种语言创建神经网络 但我更喜欢自己制作一个 关键是我不知道要实现特定目标 例如模式识别或函数近似或其
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • 按属性对对象列表进行排序 C#

    我有这门课 public class Leg public int Day get set public int Hour get set public int Min get set 我有一个获取腿列表的函数 称为 GetLegs Lis
  • javascript中的父子关系排序

    我有以下结构 category id 1 parent category null category id 2 parent category 1 category id 3 parent category 1 category id 4
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 定点数学比浮点运算快吗?

    多年前 即 20 世纪 90 年代初期 我构建了图形软件包 该软件包基于定点算术和预先计算的 cos sin 表格以及使用牛顿近似方法进行 sqrt 和对数近似的缩放方程来优化计算 这些先进技术似乎已经成为图形和内置数学处理器的一部分 大约
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 使用 php 在多维数组中按键排序[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中对多维数组进行排序 https stackoverflow com questions 2059255 sorting multidimensional array in php 如何在
  • Python 旅行商贪婪算法 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 因此 我为旅行推销员问题创建了一种排序 并按 x 坐标和 y 坐标进行排序 我正在尝试实施贪婪搜索 但无法做到 此外 每
  • 在 C# 中对 Directory.GetFiles 的结果进行排序

    我有这段代码来列出目录中的所有文件 class GetTypesProfiler static List
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是

随机推荐