Algorithm 3.
RecursiveSearch(S, a, Δ, timestampSet, minTime, maxTime, λ, m, k, l, minedSubgraphs).
| 1 | if |E(S)| ≥ l then |
| 2 | return |
| 3 | for each e = (u, a, t) ∈ Inc(v) ∧ e ∉ E (S) do |
| 4 | if t ∈ [minTime, maxTime + λ] then |
| 5 | if u ∉ V(S) then |
| 6 | if |V (S)| ≤ (k − 1) then |
| 7 | V(S) = V(S) ∪ {u} |
| 8 | added = true |
| 9 | else |
| 10 | continue |
| 11 | E(S) = E(S) ∪ {e} |
| 12 | if S ∉ minedSubgraphs then |
| 13 | timestampSet = timestampSet ∪ {t} |
| 14 | minedSubgraphs = minedSubgraphs∪S |
| 15 | UpdateBounds (timestampSet, Δ, minTime, maxTime, λ) |
| 16 | M = StandardizeTimestamps (S) |
| 17 | C = ComputeCanonization (M) |
| 18 | UpdateOccurrences (m, canonicalForm) |
| 19 | RecursiveSearch (S, u, Δ, timestampSet, minTime, maxTime, λ, m, k, l, minedSubgraphs) |
| 20 | RecursiveSearch (S, a, Δ, timestampSet, minTime, maxTime, λ, m, k, l, minedSubgraphs) |
| 21 | timestampSet = timestampSet\{e.t} |
| 22 | E(S) = E(S)\{e} |
| 23 | if added = true then |
| 24 | V(S) = V(S)\{u} |
| 25 | added = false |
| 26 | UpdateBounds (timestampSet, Δ, minTime, maxTime, λ) |
| 27 | return |