pgr_transitiveClosure - 实验

pgr_transitiveClosure — 有向图的传递闭包图。

_images/boost-inside.jpeg

Boost 图内部

Warning

可能服务器崩溃

  • 这些功能可能会导致服务器崩溃

Warning

实验功能

  • 它们不是当前版本的正式版本。

  • 它们可能不会正式成为下一个版本的一部分:

    • 这些函数可能不使用 ANY-INTEGER 和 ANY-NUMERICAL

    • 名称可能会改变。

    • 签名可能会改变。

    • 功能可能会改变。

    • pgTap 测试可能丢失。

    • 可能需要 c/c++编码。

    • 可能缺乏文档。

    • 文档(如果有)可能需要重写。

    • 可能需要自动生成文档示例。

    • 可能需要社区的大量反馈。

    • 可能取决于 pgRouting 的拟议功能

    • 可能依赖于 pgRouting 的已弃用函数

可用性

  • 版本3.0.0

    • 实验 函数

描述

将输入有向图转换为图的传递闭包。

主要特点是:

  • 过程对于有向图有效。

    • 无向图的传递闭包产生簇图

    • 当无向图上的顶点属于同一连通分量时,就会发生它们之间的可达性。(参阅 pgr_connectedComponents

  • 返回值未排序

  • 返回的图被压缩

  • 运行时间: \(O(|V||E|)\)

签名

总结

pgr_transitiveClosure 函数具有以下签名:

pgr_transitiveClosure(Edges SQL)
Returns set of (seq, vid, target_array)
示例:

子图的可达性

SELECT * FROM pgr_transitiveclosure(
  'SELECT id, source, target, cost, reverse_cost
  FROM edges WHERE id IN (2, 3, 5, 11, 12, 13, 15)')
ORDER BY vid;
 seq | vid |    target_array
-----+-----+--------------------
   1 |   6 | {}
   6 |   8 | {12,17,16}
   2 |  10 | {12,17,16,11,6}
   4 |  11 | {12,17,16}
   5 |  12 | {17,16}
   3 |  15 | {12,17,16,10,11,6}
   8 |  16 | {17,16}
   7 |  17 | {17,16}
(8 rows)

参数

参数

类型

描述

Edges SQL

TEXT

Edges SQL 如下所述。

内部查询

Edges SQL

类型

默认

描述

id

ANY-INTEGER

边的标识符。

source

ANY-INTEGER

边的第一个端点顶点的标识符。

target

ANY-INTEGER

边的第二个端点顶点的标识符。

cost

ANY-NUMERICAL

边(source, target)的权重

reverse_cost

ANY-NUMERICAL

-1

边(target, source)的权重

  • 当为负时:边( target, source )不存在,因此它不是图的一部分。

其中:

ANY-INTEGER:

SMALLINT, INTEGER, BIGINT

ANY-NUMERICAL:

SMALLINT, INTEGER, BIGINT, REAL, FLOAT

结果列

Returns set of (seq, vid, target_array)

类型

描述

seq

INTEGER

\(1\) 开始的连续数值

vid

BIGINT

边来源的标识符

target_array

BIGINT

边目标的标识符

  • 从顶点 v 可到达的顶点的标识符。

另请参阅

索引和表格