hoa / graph
Hoa\Graph 库。
Requires
- hoa/consistency: ~1.0
- hoa/exception: ~1.0
- hoa/iterator: ~2.0
Requires (Dev)
- hoa/test: ~2.0
This package is auto-updated.
Last update: 2021-09-20 08:31:01 UTC
README
Hoa 是一组 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。
Hoa\Graph
这个库允许创建和操作有向图,这是一种常见的数据结构。有向图基本上是一组顶点(又称节点)和顶点之间的有向边。
了解更多.
安装
使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/graph
$ composer require hoa/graph '~1.0'
有关更多安装程序,请参阅源代码页面。
测试
在运行测试套件之前,必须安装开发依赖项
$ composer install
然后,运行所有测试套件
$ vendor/bin/hoa test:run
有关更多信息,请参阅贡献者指南。
快速使用
作为一个快速概述,我们建议查看如何在内存中创建一个简单的有向图并将结果作为DOT 脚本导出,以便在 SVG 中可视化。图实现将使用邻接表结构。因此
// Create the graph instance. // By default, loops are not allowed and we would like loops for this example, // so we enable them. $graph = new Hoa\Graph\AdjacencyList(Hoa\Graph::ALLOW_LOOP); // Create 4 vertices (aka nodes). $n1 = new Hoa\Graph\SimpleNode('n1'); $n2 = new Hoa\Graph\SimpleNode('n2'); $n3 = new Hoa\Graph\SimpleNode('n3'); $n4 = new Hoa\Graph\SimpleNode('n4'); // Create edges (aka links) between them. $graph->addNode($n1); $graph->addNode($n2, [$n1]); // n2 has parent n1. $graph->addNode($n3, [$n1, $n2, $n3]); // n3 has parents n1, n2 and n3. $graph->addNode($n4, [$n3]); // n4 has parent n3. $graph->addNode($n2, [$n4]); // Add parent n4 to n2.
有向图在内存中创建。现在,让我们将其导出到 DOT 语言
echo $graph; /** * Will output: * digraph { * n1; * n2; * n3; * n4; * n1 -> n2; * n1 -> n3; * n2 -> n3; * n3 -> n3; * n3 -> n4; * n4 -> n2; * } */
然后,为了将此 DOT 脚本编译成 SVG 文档,我们将使用dot(1)
$ dot -Tsvg -oresult.svg <( echo 'digraph { … }'; )
结果应该如下所示
我们可以看到 n1
是 n2
和 n3
的父节点。n2
是 n3
的父节点。n3
是 n4
的父节点,也是它自己。最后,n4
是 n2
的父节点。
我们的有向图已创建。根据节点,我们可以在其上添加更多信息。使用了 SimpleNode
类。它扩展了 Hoa\Graph\Node
接口。
文档
Hoa\Graph 的黑客手册包含有关如何使用此库及其工作原理的详细信息。
要本地生成文档,请执行以下命令
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
更多文档可以在项目的网站上找到: hoa-project.net。
获取帮助
主要有两种方法可以获得帮助
- 在
#hoaproject
IRC频道上, - 在users.hoa-project.net论坛上。
贡献
你想贡献力量吗?谢谢!详细的贡献指南解释了你需要了解的一切。
许可证
Hoa采用新的BSD许可证(BSD-3-Clause)。请参阅LICENSE
获取详细信息。