This document provides an annotated bibliography of the key papers that define and construct the SCDAWG and related structures.
Full Citation:
Blumer, A., Blumer, J., Haussler, D., McConnell, R., & Ehrenfeucht, A. (1987). "Complete Inverted Files for Efficient Text Retrieval and Analysis." Journal of the ACM, 34(3), 578-595.
Key Contributions:
𝒪(n) space complexityUsed In This Implementation:
Key Definitions from the Paper:
imps(x) = γxβ where γ, β are maximal context strings
P(S) = {imps(x) : x ∈ F(S)} = set of prime subwords
C2S = (V, E_R, E_L) where V = P(S)
Full Citation:
Blumer, A., Blumer, J., Haussler, D., Ehrenfeucht, A., Chen, M.-T., & Seiferas, J. (1985). "The Smallest Automaton Recognizing the Subwords of a Text." Theoretical Computer Science, 40, 31-55.
Key Contributions:
𝒪(n) construction algorithmUsed In This Implementation:
Key Theorem:
Two strings x, y belong to the same equivalence class iff end-pos(x) = end-pos(y)
Full Citation:
Inenaga, S., Hoshino, H., Shinohara, A., Takeda, M., & Arikawa, S. (2001). "On-Line Construction of Symmetric Compact Directed Acyclic Word Graphs." Proceedings of the 8th International Symposium on String Processing and Information Retrieval (SPIRE), 96-110.
Key Contributions:
𝒪(n) algorithm for SCDAWG constructionUsed In This Implementation:
Key Theorem (Theorem 2):
The sext link of node v in CDAWG(w) corresponds to an edge
in CDAWG(w^rev), enabling O(n) SCDAWG construction.
Full Citation:
Inenaga, S., Hoshino, H., Shinohara, A., Takeda, M., Arikawa, S., Mauri, G., & Pavesi, G. (2005). "On-line construction of compact directed acyclic word graphs." Discrete Applied Mathematics, 146(2), 156-179.
Key Contributions:
𝒪(n) CDAWG construction algorithmUsed In This Implementation:
𝒪(1) extensionKey Algorithm (Figure 17):
update(c):
while not check_end_point(c):
if is_implicit(active_point):
r = split_edge()
else:
r = active_point.node
create_edge(r, sink)
update_suffix_links(r)
active_point = canonize(suffix(active_point))
Full Citation:
Crochemore, M., & Vérin, R. (1997). "Direct Construction of Compact Directed Acyclic Word Graphs." Proceedings of the 8th Annual Symposium on Combinatorial Pattern Matching (CPM), 116-129.
Key Contributions:
Used In This Implementation:
Full Citation:
Gerdjikov, S., Mihov, S., & Schulz, K. U. (2013). "A Symmetric Approach to Efficiently Computing Edit-Distance-Based Similarity of Words in a Dictionary." Language Processing and Knowledge in the Web, 70-80.
Key Contributions:
Used In This Implementation:
Key Requirements:
(1a) Given V ∈ Σ*, decide if V is a factor of some dictionary word
(1b) Right extension: given V is a factor, navigate to V·σ
(1c) Left extension: given V is a factor, navigate to σ·V
Full Citation:
Weiner, P. (1973). "Linear Pattern Matching Algorithms." 14th Annual Symposium on Switching and Automata Theory, 1-11.
Contribution: First linear-time suffix tree construction algorithm.
Full Citation:
McCreight, E. M. (1976). "A Space-Economical Suffix Tree Construction Algorithm." Journal of the ACM, 23(2), 262-272.
Contribution: Simplified suffix tree construction with explicit suffix links.
Full Citation:
Ukkonen, E. (1995). "On-line Construction of Suffix Trees." Algorithmica, 14(3), 249-260.
Contribution: On-line suffix tree construction, inspiring similar CDAWG approaches.
Blumer et al. (1985) Weiner (1973)
Suffix Automaton Suffix Tree
│ │
▼ ▼
┌────────────────────────────────────────┐
│ │
│ Crochemore & Vérin (1997) │
│ Direct CDAWG Construction │
│ │
└────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Inenaga et al. (2005) │
│ On-line CDAWG Construction │
│ Multi-string Support │
└────────────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
▼ ▼
Blumer et al. (1987) Inenaga et al. (2001)
SCDAWG Definition On-line SCDAWG with
IS Features Sext Links
│ │
└───────────┬─────────────┘
│
▼
┌─────────────────┐
│ OUR │
│ IMPLEMENTATION │
│ (Hybrid) │
└─────────────────┘
│
▼
Gerdjikov et al. (2013)
WallBreaker Algorithm
(Validation Criteria)
| Paper | Used For |
|---|---|
| Blumer (1987) | SCDAWG definition, IS features, prime subwords |
| Blumer (1985) | Equivalence class theory, suffix links |
| Inenaga (2001) | Sext link insight, left extension construction |
| Inenaga (2005) | On-line CDAWG algorithm, multi-string support |
| Crochemore (1997) | Space bounds, compaction understanding |
| Gerdjikov (2013) | WallBreaker requirements, validation |
We combine:
This yields an SCDAWG that:
𝒪(n) time𝒪(∣pattern∣) substring searchCan you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |