Page 217 - 《软件学报》2020年第11期
P. 217

3532                                Journal of Software  软件学报 Vol.31, No.11, November 2020

                    3.      L 0 .delete(y 0 );
                    4. end if
                    5. if (VTs(y 0 )≤VTs(Front(y 0 ))∧(VTe(Back(y 0 ))≤VTe(y 0 )) then
                    6. d 0 =[VTs(Front(y 0 )),VTe(Back(y 0 )));
                    7.      if d 0 ∉L next  then
                    8.         L 0 .delete(y 0 );
                    9.         a new PLOB is jointed and formed by the Front(y 0 ) and Back(y 0 );
                    10.    else if d 0 ∈L next  then
                    11.         a new PLOB is Linear Order joined and formed by the Front(y 0 ) and Back(y 0 );
                    12.      L next .delete(y 0 );
                    13.      a new L next  is Linear Order joined and formed by the Front(d 0 ) and Back(d 0 )
                    14.     end if
                    15. end if
                    16. if (VTs(Front(y 0 ))<VTs(y 0 ))∧(VTe(Back(y 0 ))≤VTe(y 0 )) then
                    17. t 0 =[VTs(Front(y 0 )),VTe(Back(y 0 )));
                    18.     if t 0 ∉L 0  then
                    19.        L next .delete(y 0 );
                    20.        a new PLOB is Linear Order joined and formed by the t 0  joining Front(y 0 ) and Back(y 0 );
                    21.     else if t 0 ∈L 0  then
                    22.        L next .delete(y 0 );
                    23.        a new PLOB is Linear Order joined and formed by the y 0  joining Front(y 0 ) and Back(y 0 );
                    24.    end if
                    25. end if
                    例 5:由算法 4 可得,TPindex 在进行删除更新时,同样会引起 3 种不同情况的变化.在第 1 种情况中,在某一线
                 序分枝汇总删除首元节点或尾元节点而不引起其他分枝的变化.如图 6(a)所示,删除节点[6,10]或删除[7,6],则将
                 删除节点从原有的线序分枝序列中移除,再由离删除节点最近的其他节点变成新的首元节点或尾元节点;在第 2
                 种情况中,删除线序分枝内部中的节点,但不引起其他分枝分结构变化.如图 6(b)所示,删除节点[7,9],则在原有的
                 分枝中,分别断开[7,10]与[7,9]、[7,9]与[7,8]的连接,再将[7,10]与[7,8]进行连接;在第 3 种情况中,删除某一分枝内
                 部中的节点,会引起其他分枝结构的变化.如图 6(c)所示,删除[3,7]节点,则原有的[2,7]与[3,7]、[3,7]与[3,4]之间的
                 连接会断开,[2,8]与[2,7]形成新的线序分枝,而在首元节点[3,8]则会断开与[4,8]之间的连接,转向与[3,4]建立连
                 接,这样[3,8],[3,4]与[4,4]形成新的线序分枝.而断开连接后的[4,8]成为新的首元节点,与[4,7],[5,7],[5,5]构成新的
                 线序分枝.
                    综上所述,在 PLOB 的结构基础上,对 TPindex 进行时态数据的增加和删除操作时,只需要对相应的 PLOB
                 进行时态拼接即可得到更新后的索引结构,而不用对全部的时态数据进行更新,极大地提高了索引的更新效率
                 和利用效率.设时态索引更新共有 k 个线序分枝,每个分枝中共有 m 个元素,则算法 3 的平均时间复杂度均为
                 kO(logm),最小的时间复杂度为 O(1).算法 4 的最小时间复杂度也同样为 O(1).可见其具有较好的时态数据维护
                 效率和性能.
   212   213   214   215   216   217   218   219   220   221   222