【问题标题】:Algorithm sorting details, but without excluding算法排序细节,但不排除
【发布时间】:2021-07-24 23:16:12
【问题描述】:

我遇到了一个问题。 我不是在寻求帮助如何构建我正在寻找的东西,而只是为了引导我找到我正在寻找的东西! ??? 我想要创建的东西是某种“排序算法/机制”

示例: 想象一下,我有一个包含 1000 多张不同车辆图片的数据库。 一个人看到一辆车,他现在会尝试获取有关该车辆的尽可能多的信息和详细信息,例如:

  • 形状
  • 轮子数
  • 窗户的数量和形状
  • 灯光的数量和形状
  • 排气的数量和形状

等等……

然后他给了我他看到的那辆车的所有信息。 但是!没有告诉我任何关于: 制造和模型。 … 我现在将获取该信息并告诉我的数据库对每辆车进行分类,以便它根据给出的描述以最佳匹配方式排列所有 1000 辆车。 但不应排除任何车辆!

那么……

如果这个人告诉我这辆车只有 4 个轮子,但实际上它有 5 个(他可能没有看到第五个轮子),那么它应该只是在轮子数中得到一个坏分数。 但是,如果其他方面都与该车辆完美匹配,它仍然会获得高分。

这样我们就不会排除他看到的车辆,而且我们仍然可以找到正确的车辆。

如前所述,该机制的整个方面是排序最多,因此我们不需要查看 1000 辆汽车,我们只需要从 1000 辆汽车中筛选出 10 到 50 辆汽车(希望如此)的最佳匹配.

我尽量用一种不是“我父亲的语言”的语言来描述它。所以请耐心等待。

再一次,我不是在寻找任何人告诉我如何制作这个算法,我很确定没有人愿意有时间为我做这件事,而无需以某种方式获得报酬...... 但我只需要知道在学习和理解如何创建这种混乱的机制方面该去哪里找。

亲切的问候 绅士!

【问题讨论】:

    标签: database algorithm sorting


    【解决方案1】:

    假设您的所有图片都已使用相关字段(轮子数量、窗口形状...)进行索引,并且它们不是太多(对于计算机来说一千是花生),您可以按照以下步骤进行:

    • 对于每一个标准,权衡可能的差异(例如,一个轮子太多成本 5,一个轮子太少成本 10,坏窗户形状成本 8...)。以一种连贯的方式进行,以使标准的成本得到很好的平衡。

    • 要执行搜索,评估每辆车的总差异成本,并逐步对值进行排序。报告前十个。


    从技术上讲,您所追求的称为高维空间中的“最近邻搜索”。这个问题已经被很好地研究过了。有快速的解决方案,但它们非常复杂,在您的情况下绝对不值得使用。

    【讨论】:

    • 感谢您的明确答复!是的,图片将事先以不同的值索引到最小的细节中。刚查了一下,最近邻算法似乎是我必须查的东西! :) 对于我所描述的而言,这似乎太复杂了,但我所描述的并不是我正在做的事情。但类似的东西。再次感谢,非常感谢您的好答案! :)
    【解决方案2】:

    例如在人工智能中这样做的默认方法是将所有属性编码为一个向量,并对每个属性应用特定的权重。然后可以使用您喜欢的任何度量来计算距离。在您的情况下,曼哈顿距离应该没问题。所以在伪代码中:

    distance(first_car, second_car):
        return abs(first_car.n_wheels - second_car.n_wheels) * wheels_weight+ ... + 
               abs(first_car.n_windows - second_car.n_windows) * windows_weight
    

    这适用于简单的属性,例如轮子的数量。对于更复杂的属性,例如窗口的形状,您可能需要根据您对相似性的要求将其拆分为多个属性。

    如果权重的范围已知,则通常以标准化所有值的方式选择权重。可选地,可以乘以一个额外的因素来增加特定属性对总距离的影响。

    【讨论】:

    • 感谢您的回答。这是非常appriciated! :)
    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2022-01-08
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2022-01-24
    相关资源
    最近更新 更多