All Projects → PistonDevelopers → History_tree

PistonDevelopers / History_tree

Licence: mit
A persistent history tree for undo/redo

Programming Languages

rust
11053 projects

Labels

Projects that are alternatives of or similar to History tree

Texturesynthesis
Texture synthesis from examples
Stars: ✭ 709 (+4070.59%)
Mutual labels:  algorithm
Android Notes
Android开发核心知识点笔记(不断更新中🔥)
Stars: ✭ 737 (+4235.29%)
Mutual labels:  algorithm
Torbot
Dark Web OSINT Tool
Stars: ✭ 821 (+4729.41%)
Mutual labels:  algorithm
Dc Notes
自己的学习笔记。包含:21届秋招经历、🐂客面经问题按照频率总结、Java一系列知识、数据库、分布式、微服务、前端、技术面试、工具教程等(持续更新)
Stars: ✭ 714 (+4100%)
Mutual labels:  algorithm
Imageai
A python library built to empower developers to build applications and systems with self-contained Computer Vision capabilities
Stars: ✭ 6,734 (+39511.76%)
Mutual labels:  algorithm
Algorithm
Algorithm is a library of tools that is used to create intelligent applications.
Stars: ✭ 787 (+4529.41%)
Mutual labels:  algorithm
Tech Refrigerator
🍰 기술 냉장고입니다. 🛒 기술 면접 , 전공 시험 , 지식 함양 등 분명 도움될 거예요! 🤟
Stars: ✭ 699 (+4011.76%)
Mutual labels:  algorithm
100 Days Of Ios Datastructure Algorithm
100天iOS数据结构与算法实战
Stars: ✭ 836 (+4817.65%)
Mutual labels:  algorithm
2021 Postgraduate 408
💯✍备考2021年研究生-408
Stars: ✭ 730 (+4194.12%)
Mutual labels:  algorithm
Competitivequestion
Question solved on various competitive sites 🤘
Stars: ✭ 5 (-70.59%)
Mutual labels:  algorithm
Examples
A collection of TLA+ specifications of varying complexities
Stars: ✭ 720 (+4135.29%)
Mutual labels:  algorithm
Android Notes
✨✨✨这有一包小鱼干,确定不要吃嘛?( 逃
Stars: ✭ 732 (+4205.88%)
Mutual labels:  algorithm
Rake Nltk
Python implementation of the Rapid Automatic Keyword Extraction algorithm using NLTK.
Stars: ✭ 793 (+4564.71%)
Mutual labels:  algorithm
Turf
A modular geospatial engine written in JavaScript
Stars: ✭ 6,659 (+39070.59%)
Mutual labels:  algorithm
Javascript Algorithms
Stars: ✭ 6,893 (+40447.06%)
Mutual labels:  algorithm
Light Tips
Some code tips about algorithms, php and more 🔥
Stars: ✭ 705 (+4047.06%)
Mutual labels:  algorithm
Pyswarms
A research toolkit for particle swarm optimization in Python
Stars: ✭ 742 (+4264.71%)
Mutual labels:  algorithm
Xstrings
Implements string functions widely used in other languages but absent in Go.
Stars: ✭ 888 (+5123.53%)
Mutual labels:  algorithm
Naive Bayes Classifier
Naive Bayes classifier is classification algorithm. It uses Naive based Bernoulli and Multinomial equation to classify documents(Text) as ham or spam.
Stars: ✭ 6 (-64.71%)
Mutual labels:  algorithm
Vscode Leetcode
Solve LeetCode problems in VS Code
Stars: ✭ 6,982 (+40970.59%)
Mutual labels:  algorithm

history_tree

A persistent history tree for undo/redo

This data structure makes programming of editors easier when the editor environment is open ended, such as editors that are hosting other editors. It makes it possible to create game engines where scripted components are interdependent and basis for new editor functionality.

A persistent data structure is one that stores immutable data efficiently. This allows a programming pattern that does not rely on undoing and redoing by mutating a data structure. Instead, you store data in blocks that is referenced by index in the history tree.

The relations between the blocks is controlled by reading out child relations. Data blocks can reference earlier data blocks safely. The history tree does not need to know how these references are represented, because the consistency is guaranteed by replicating the same state of earlier trees.

This history tree stores records that points to previous version and parent. The tree is a function of these records plus a cursor. The cursor determine which records are active.

When a record is pointed to by a new active record, it gets overriden. A record is considered child of a parent when it points to the parent or any previous version.

.add/.change/.delete are O(1) operations.

.children is O(N * M) operation where N is number of parent versions and M is records.

To make .children fast, records are stored with only indices.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].