| Crates.io | pstree |
| lib.rs | pstree |
| version | 0.1.1 |
| created_at | 2023-05-30 15:46:48.612414+00 |
| updated_at | 2023-05-30 15:49:14.304967+00 |
| description | Segment Tree of Placements |
| homepage | |
| repository | https://github.com/stavegan/pstree |
| max_upload_size | |
| id | 878027 |
| size | 36,312 |
I consent to the transfer of this crate to the first person who asks help@crates.io for it.
The pstree crate allows you to create an n to k segment 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 designed to quickly respond to queries to change a vertex or edge in a weighted directed graph that allows edges of negative weight.
use pstree::PSTree;
fn main() {
let pstree = PSTree::new(3, 2, 0, 0);
let _shortest = pstree.update_vertex(1, 1);
let _shortest = pstree.update_edge(0, 1, 2);
}
The PSTree::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 pstree.update_vertex(1, 1) updates vertex 1 with value 1, so the distances will be recalculated, returning the shortest distance from key of length k:
0
├── 1
│ '-- 2
│ ' '-- 0
│ '-- 3
│ '-- 0
├── 2
│ ├── 1
│ │ '-- 0
│ └── 3
│ └── 0
└── 3
├── 1
│ '-- 0
└── 2
└── 0
The pstree.update_edge(0, 1, 2) updates edge from 0 to 1 with value 2, so the distances will be recalculated, returning the shortest distance from key of length k:
0
'-- 1
│ '-- 2
│ ' '-- 0
│ '-- 3
│ '-- 0
├── 2
│ ├── 1
│ │ └── 0
│ └── 3
│ └── 0
└── 3
├── 1
│ └── 0
└── 2
└── 0
[dependencies]
pstree = "0.1"
Licensed under either of
at your option.