【发布时间】:2013-04-26 21:26:01
【问题描述】:
我有一个数据结构,其中包含如下图所示的图表:
在这棵树中,一个节点可以有任意数量的来自其下层的唯一子节点。 图中的树表示一组路径。 其中每条路径都应以级别 1 的节点开始,并以“*”标记的节点结束。 所以图中树的路径是:
A then C then G
A then C then G then J
A then D then G
A then D then G the J
A then D then K, and so on...
实际上我的原始树很大(大约 200 万个序列),每个级别的最大节点数是 61 个(共 11 个级别)。因此,它会在我的应用程序(SAMSUNG 的计算机视觉应用程序)中导致许多内存消耗问题。
我的目标是有一个迭代算法,以更紧凑的字符串格式表示这些路径。所以我认为我们把问题分为以下三个步骤。我已经构建了树数据结构(第 2 步),但仍然无法派生迭代算法从树中获取第 3 步中的输出字符串/序列。
1- 输入字符串:
(A C G) | (A C G J) | (A D G) | (A D G J ) | (A D K) | ....,
其中“|”代表替代品。
2- 构建这些路径的树形数据结构。
3- 必需的输出字符串:
(A (C G [J]) | (D (G [J]) | K)) | (B ....).
哪里哪里“|”表示备选方案,“[]”包含选项。目标输出字符串应该被优化,因为没有更多的共同因素可以用来更简化它。
【问题讨论】:
-
那是一个 DAG,不是吗?
-
我认为您可以将其视为 DAG。此外,一个节点可以有任意数量的来自其下层的唯一子节点。
-
你的输入字符串排序了吗? IE。所有以
A开头的路径都是连续的吗? -
@HeshamERAQI 我认为魏子尧的意思是,您的图不是任何标准定义的树。您应该编辑您的问题以避免混淆。
-
@mitchus 嗯,谢谢。我做到了:)
标签: c regex algorithm optimization graph