Skip to content
This repository was archived by the owner on May 30, 2023. It is now read-only.

stavegan/placements-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tree of Placements

I consent to the transfer of this crate to the first person who asks help@crates.io for it.

The placements-tree crate allows you to create an n to k tree of placements based on a key in the range 0..=n. This key will be used as the root and leaves of the tree. So other vertices will be taken in the ranges 0..key and key + 1..=n.

The structure is used to quickly respond to queries to update vertices or edges in a weighted directed graph with edges of negative weight.

Example

use placements_tree::PlacementsTree;

fn main() {
    let ptree = PlacementsTree::new(3, 2, 0, 0);
    let _shortest = ptree.update_vertex(1, 1);
    let _shortest = ptree.update_edge(0, 1, 2);
}

The PlacementsTree::new(3, 2, 0, 0) creates a 3 by 2 tree of placements based on key 0 with initial value 0:

0
├── 1
│   ├── 2
│   │   └── 0
│   └── 3
│       └── 0
├── 2
│   ├── 1
│   │   └── 0
│   └── 3
│       └── 0
└── 3
    ├── 1
    │   └── 0
    └── 2
        └── 0

The ptree.update_vertex(1, 1) updates vertex 1 with value 1, so the tree will be recalculated, returning the shortest distance of the recalculated paths:

0
├── 1
│   '-- 2
│   '   '-- 0
│   '-- 3
│       '-- 0
├── 2
│   ├── 1
│   │   '-- 0
│   └── 3
│       └── 0
└── 3
    ├── 1
    │   '-- 0
    └── 2
        └── 0

The ptree.update_edge(0, 1, 2) updates edge from 0 to 1 with value 2, so the tree will be recalculated, returning the shortest distance of the recalculated paths:

0
'-- 1
│   '-- 2
│   '   '-- 0
│   '-- 3
│       '-- 0
├── 2
│   ├── 1
│   │   └── 0
│   └── 3
│       └── 0
└── 3
    ├── 1
    │   └── 0
    └── 2
        └── 0

Usage

[dependencies]
placements-tree = "0.1"

License

Licensed under either of

at your option.

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages