Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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
Java n元树中多个节点的最低共同祖先_Java_Tree_Nlp_Text Processing_Graph Algorithm - Fatal编程技术网

Java n元树中多个节点的最低共同祖先

Java n元树中多个节点的最低共同祖先,java,tree,nlp,text-processing,graph-algorithm,Java,Tree,Nlp,Text Processing,Graph Algorithm,我试图在java中实现n元树中多个节点的LCA。我正在处理句子的解析树,因此可以合理地假设一个节点的子节点数我利用短语的节点是连续的这一事实解决了这个问题,即在解析树的叶节点列表中有连续的索引 让segment1具有从start1到end1的索引。segment2=(start2,end2)的情况也一样 (start1,end1)和(start2,end2)所需的共同祖先是索引为min(start1,start2)和max(end1,end2)的节点的共同祖先。我认为复杂性是O(n.k)而不是O

我试图在java中实现n元树中多个节点的LCA。我正在处理句子的解析树,因此可以合理地假设一个节点的子节点数我利用短语的节点是连续的这一事实解决了这个问题,即在解析树的叶节点列表中有连续的索引

segment1
具有从
start1
end1
的索引。
segment2=(start2,end2)
的情况也一样


(start1,end1)
(start2,end2)
所需的共同祖先是索引为
min(start1,start2)
max(end1,end2)

的节点的共同祖先。我认为复杂性是O(n.k)而不是O(n.log(k))。您将拥有k/2、k/4.的日志(k)步骤。。这就是O(k)。@VSOverFlow我有log(k)个步骤,每个步骤都有O(n),因此,总的来说是O(nlog k)。你的计算中O(k)是什么?我假设LCA(2,n)是O(n)。构建二叉树时,LCA调用的总数为O(k)(k/2+k/4+…)。所以总的运行时复杂度是O(n*k)(即O(n)的k个调用)。每个log(k)步骤都有许多O(n)步骤(k/2,k/4,k/8,…),你能给出完整的方法吗?我无法将您的算法转换为实际代码。我的想法是,如果所有节点都是连续的叶节点,那么所有这些节点的LCA将是第一个和最后一个节点的LCA。