vertilia / algo-toposort
拓扑排序算法
v1.0.0
2023-07-27 14:37 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9
README
拓扑排序 实现 深度优先搜索 算法(Tarjan 1976)。
安装
composer require vertilia/algo-toposort
用法
拓扑排序的示例树
通过构造函数传递数组来调用
$values = [ 'a' => ['b', 'd', 'c', 'e'], 'b' => ['d'], 'c' => ['d', 'e'], 'd' => ['e'], 'e' => [], ]; $a = new TopoSort($values); $sorted = $a->sort(); print_r($sorted);
通过 addNode()
调用来形成初始数组
$a = new TopoSort(); $a->addNode('a', ['b', 'd', 'c', 'e']) ->addNode('b', ['d']), ->addNode('c', ['d', 'e']), ->addNode('d', ['e']), ->addNode('e', []); $sorted = $a->sort(); print_r($sorted);
通过 addLink()
调用来形成初始数组
$a = new TopoSort(); $a->addLink('a', 'b') ->addLink('a', 'd'), ->addLink('a', 'c'), ->addLink('a', 'e'), ->addLink('b', 'd'), ->addLink('c', 'd'), ->addLink('c', 'e'), ->addLink('d', 'e'); $sorted = $a->sort(); print_r($sorted);
输出
Array
(
[0] => a
[1] => c
[2] => b
[3] => d
[4] => e
)
结果顺序