c++ - 从一组有序对 (x, y) 中找到最长链的最有效算法是什么?

标签 c++ seq chain

我有一组有序对 (x, y),其中 x != y 但其他情况下是任意的。
如何在不重复有序对的情况下找到最长的链?

例如让

S = {(-1, 1.2), (4, 2), (1.2, 3), (3, 5.2), (4.2, -1), (5.2, 1), (3, 2)} .
最长链由 (-1, 1.2), (1.2, 3), (3, 5.2), (5.2, 1) 组成。
还有一条链 (-1, 1.2), (1.2, 3), (3, 2) 但不是最长的。

迭代整个集合是一种解决方案,但效率不高。

最佳答案

我不会编写代码。但这可能会对您有所帮助。

您必须了解图形算法。认为你的对是一个有输入端和输出端的节点。然后考虑您可以绘制的所有边缘。然后简化图表并使用一些最长路径搜索算法用于图表。 https://en.wikipedia.org/wiki/Longest_path_problem

关于c++ - 从一组有序对 (x, y) 中找到最长链的最有效算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007215/

相关文章:

scala - scala.collection.Seq.groupBy() 函数是否保留顺序?

java - 过滤scala中对象列表的列表属性

seq - 尼姆 : Find index of element in seq based on predicate

android parcelable 引用另一个 parcelable 循环依赖

c++ - OpenCV 中用于不失真图像的重映射功能如何工作?

c++ - 二叉查找树递归显示函数,不知道是怎么实现的?

algorithm - 如何干净/安全地从异步通信链中删除链接

javascript - 调用 ajax 调用序列的模式?

c++ - 有哪些不同的可能方法可以降低给定程序中 vector 数组实现堆栈的时间复杂度……?

c++ - 用 less 子句结构聚合初始化,为什么它初始化所有东西?