Skip to content

TODO #2

@Validark

Description

@Validark

Demo

  • Make transition from Completion Trie to decomposed trie animate the vertical linked lists into the parent nodes
  • Dark mode
  • Shift the Completion Trie and subsequent diagrams upwards slightly by default?

Paper

  • Fix font inconsistency across platforms
    • Currently, Figures 1-3 use the "serif" font-family, which becomes the default serif font on whatever the target platform is. For consistency, a dynamically loaded font should be used or the text should be converted to paths.
      • At present, I'd prefer a dynamically loaded font
    • Change the Big-Theta from Georgia to a dynamically loaded font
    • Consider moving all diagrams to monospace or the KaTeX_Main font?
  • Where $\large n$ and $\large bp[i]$ are identical, we should remove $\large n$ in favor of $\large bp[i]$
  • Add an "Experimental Analysis" section
    • The main problem I have with this is that performance characteristics may vary by implementation. Maybe I will support an analysis for each of them, but without scripts only one will be shown?
    • Decide: Should I have a performance comparison with an implementation of the Completion Trie? Just horizontally sorted or should I include the totally unsorted Completion Trie as well?
    • Diagrams I am thinking to include:
      • How $\large k$ correlates with runtime
        • This will only use those prefix queries which are in the top-10 or top-100 of number of total completions in the entire dataset
      • How number of completions to a query (for all possible prefix string queries) correlates with runtime (when $\large k$ is set to 10)
  • Submit to some academic platforms

Code

  • Add implementations!
    • I am open to Pull Requests from others for more implementations!

    • C-sharp This was the original version!
    • TypeScript The initial implementation only exists to closely match the pseudocode in the paper, and the pseudocode was actually based on the C# version. The problem with the direct port is that the C# version wraps nodes in tuples, which are values, not actual objects with lifetimes. However, in TS/JS, there is no such concept, just objects. Hence, the TS version should have the LCP values moved into the node that it actually describes, to cut the number of JS objects in half.
    • Lua Should be pretty easy to port from TypeScript, especially given my extensive experience developing https://roblox-ts.com/. Could probably be largely auto-generated.
    • Java Should be pretty similar to C#, right?
    • Zig All your codebase are belong to us!
      • Maybe do some nice compression of the data structure?
    • Python I don't actually "know python" yet, but the constructs I need to write this library should be pretty trivial.
    • Go fast!
    • Markdown Make a table that displays the supported features for each version. More than likely, the initial implementation for many languages may not have numeric compression initially.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions