|
Algorithm 2 Sequence Reconstruction |
|
Input: |
|
Sequence S; CS-tree CT constructed based on candidate k-sequences Ck; |
|
Maximal Length Constraint lmax; |
Output: |
|
Sequence Ŝ; |
1: |
subCT ← build_CSTree (CT, S); |
2: |
for each candidate sequence cs in S
do
|
3: |
cs.GN ← find_GNodes (cs, subCT); |
4: |
cs.score ← sum_childNodes (cs.GN); |
5: |
end for |
6: |
s ← Select a candidate sequence; |
7: |
insert (Ŝ, s); update_tree(subCT, s); |
8: |
while |Ŝ| < lmax
do
|
9: |
GN ← find_GNodes (Ŝ, subCT); |
10: |
if
GN.childNodeNum() ≠ 0 then
|
11: |
for each g-node gn in GN
do
|
12: |
Item_GNode_Map ← map_item_g-node (gn); |
13: |
end for
|
14: |
item i ← find_item (Item_GNode_Map); |
15: |
insert (Ŝ, i); update_Tree (subCT, i, Item_GNode_Map); |
16: |
else
|
17: |
for each c-node cn in subCT
do
|
18: |
cs ← cn's associated sequence; |
19: |
cs.GN ← find_GNodes (cs, subCT); |
20: |
cs.score ← sum_childNodes (cs.GN); |
21: |
end for
|
22: |
s ← Select a candidate sequence; |
23: |
insert (Ŝ, s); update_Tree(subCT, s); |
24: |
end if
|
25: |
end while |
26: |
return Ŝ; |
|