Coder Social home page Coder Social logo

viktorslavkovic / fenwick Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 0.0 17 KB

Analysis, Implementation and Applications of Fenwick Trees

License: MIT License

Python 3.17% C++ 96.83%
fenwick-tree fenwick binary-indexed-tree rmq rmq-problem algorithms data-structures

fenwick's Introduction

Analysis, Implementation and Applications of Fenwick Trees

Here you can find implementation of Fenwick tree data structure and it's applications to Dynamic RMQ and Dynamic Partial Sums (and it's variations) problems. What's covered:

  • Standard operations with Fenwick trees (solves 1D Dynamic Partial Sums problem)
    • Prefix Sum
    • Point Update
    • Range Sum
    • Optimized Range Sum
    • Read Single
    • Optimized Read Single (O(1) on average!)
    • Search (for an index with specified prefix sum)
    • Optimized Search
    • Construction from an array in O(n) and in O(n log n)
  • Point-Update Range-Query (covered above)
  • Range-Update Point-Query
  • Range-Update Range-Query (with 2 trees)
  • 2D Fenwick Tree
    • 2D Prefix Sum
    • 2D Range Sum
    • Point Update
  • Dynamic RMQ Structure with a regular and a counter Fenwick tree

There are some random tests and benchmarks included as well. However, if all you care about are the implementations, .h files are all you need.

What's coming:

  • A paper with explanation of the structures and operations and detailed complexity analysis (with all the proofs!) in English and Serbian
  • Benchmark plots

fenwick's People

Contributors

viktorslavkovic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.