Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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,在工作中,我面临一个算法问题。这个问题的广义版本是 给定两个变量(大于或小于)之间的一组比较。找出至少一个等式,其中包含符合上述比较的所有变量 例如,有A>B,B>C,D>A,E>C。一个答案是D>A>B>E>C。请注意,可以有多个答案,但只有一个答案就足够了。也可能存在没有答案的冲突 我想知道这类问题是否有一个名称,以及在不必检查所有组合的情况下解决这类问题的最佳实践是什么 谢谢 是的,一个好问题。你听说过图论中的拓扑排序吗 我想是这样的x>y表示有一条从x到y的定向边(如x--->y)。所以

在工作中,我面临一个算法问题。这个问题的广义版本是

给定两个变量(大于或小于)之间的一组比较。找出至少一个等式,其中包含符合上述比较的所有变量

例如,有A>B,B>C,D>A,E>C。一个答案是D>A>B>E>C。请注意,可以有多个答案,但只有一个答案就足够了。也可能存在没有答案的冲突

我想知道这类问题是否有一个名称,以及在不必检查所有组合的情况下解决这类问题的最佳实践是什么


谢谢

是的,一个好问题。你听说过图论中的拓扑排序吗

我想是这样的
x>y
表示有一条从
x到y
的定向边(如
x--->y
)。所以,基本上你有一个连接顶点的有向边网络。申请得到答案


拓扑排序基本上意味着在排序后获得的顶点列表中,如果存在从x到y的有向边,
x
将始终出现在
y
之前。

听起来拓扑排序是将问题转化为图论领域。我相信一个更准确的术语是“好吧,我不知道偏序到底是什么。但是,拓扑排序可以解决他的问题,如果他有一个邻接列表,不是吗?如果我错了,请纠正我。如果你不知道什么是偏序,你可以转到我在前面的评论中提供的链接,阅读并学习。毕竟,这就是为什么我们在Stackoverflow(学习)不是吗?:)@对不起(我确实看了链接)。但我从来没有真正喜欢过数学。我懂一点图论,使用DFS和完成时间,OP可以轻松解决他的问题。谢谢!拓扑排序是我正在寻找的。比较中的冲突也被描述为循环图。关于偏序,我试图理解,但仍然没有运气。也许我会坚持拓扑排序。