gpt4 book ai didi

php - 在一对多关系中至少获取一次包含所有 child 的 parent 列表

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

我在 Report 和 Location 之间有一个一对多的关系。我的目标是将我的报告列表缩小到尽可能少的报告,其中包含所有代表的位置。

如果我将它简化为数字列表,它将如下所示,键是报告,数组是位置列表:

{
1:[1,2],
2:[1],
3:[2,3],
4:[1,3,4]
}

理想的解决方案是选择报告 1 或 34。可以选择 13,因为它们都包含位置 2 并且与 Report 重复位置 1 4。需要选择报告 4,因为它是唯一具有位置 4 的报告。

效率不是主要问题。使用 PHP 缩小列表范围的最佳方法是什么?

最佳答案

NP 完备性再次出现。

您要解决的问题称为 Set Cover , 果然是 NP-Complete .

这意味着不太可能存在“高效”(读取,多项式时间)算法。

好消息是,有一些简单的近似算法可以为您提供合适的近似值。

参见 this “明显的”贪心算法(在每个点,选择具有最多未覆盖位置的报告)如何为您提供 log (R) 近似值,其中 R 是报告的数量(实际上,它甚至比这更好)。

关于php - 在一对多关系中至少获取一次包含所有 child 的 parent 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577420/

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