Skip to content
This repository has been archived by the owner on May 7, 2018. It is now read-only.
/ RangeMinQuery Public archive

Implementation in Python for Range Minimum Query Problem.

License

Notifications You must be signed in to change notification settings

chuanconggao/RangeMinQuery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPI version PyPI pyversions PyPI license

This library has been merged with extratools. Future development continues there.

This data structure solves the range minimum query problem of finding the minimal value in a sub-array of an array of comparable objects. Different from the original problem, this data structure also supports updating the values.

Installation

This package is available on PyPI. Just use pip install -U RangeMinQuery to install it. Then you can import it using from RangeMinQuery import SegmentTree.

Usage

Initialization

Use SegmentTree() to initialize the tree with a set of keys, in comparable and hashable type.

  • func=min specifies how the best value is computed for any range of keys.

  • default=None specifies the default value for each key.

  • maxChildNum=2 specifies the maximum number of children for each node.

tree = SegmentTree(
    {1, 2, 3, 4, 5},
    func=min, default=0, maxChildNum=2
)

The space complexity should be $O(n)$.

Updating

You need to use update() to initialize the values, or update the values if necessary, by specifying a dictionary of key/value pairs. Currently, adding new keys is not supported yet.

tree.update({1: 3, 4: 6})

Given m values updated, the time complexity should be $O(m^2)$.

Querying

Use query() to to find the best value of a range of keys. The range is denoted by a tuple (a, b), representing each key x such that a <= x < b. The range here is closed on the left side and open on the right side, consistent with Python tradition.

tree.query((1, 3))

The time complexity should be $O(log n)$.

About

Implementation in Python for Range Minimum Query Problem.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages