Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PostgreSQL pgrouting函数在两个具有最多K条边的几何点之间找到最短路径?_Postgresql_Shortest Path_Dijkstra_Pgrouting - Fatal编程技术网

如何使用PostgreSQL pgrouting函数在两个具有最多K条边的几何点之间找到最短路径?

如何使用PostgreSQL pgrouting函数在两个具有最多K条边的几何点之间找到最短路径?,postgresql,shortest-path,dijkstra,pgrouting,Postgresql,Shortest Path,Dijkstra,Pgrouting,我已经建立了包含顶点和边(表示机场和机场之间的路线)的表。 使用下面的查询,我能够得到两点之间的最短路径 SELECT p.seq, p.node, p.cost, r.geom as edge_geom, c.name FROM pgr_dijkstra( 'SELECT id, source, target, distance AS cost FROM airport_route', (SELECT id FROM airport WHERE code = '

我已经建立了包含顶点和边(表示机场和机场之间的路线)的表。 使用下面的查询,我能够得到两点之间的最短路径

SELECT p.seq, p.node, p.cost, r.geom as edge_geom, c.name
FROM
pgr_dijkstra(
        'SELECT id, source, target, distance AS cost FROM airport_route',
        (SELECT id FROM airport WHERE code = 'HEL'),
        (SELECT id FROM airport WHERE code = 'LAS'),
        TRUE
    ) AS p
    LEFT JOIN airport_route AS r ON p.edge = r.id
    LEFT JOIN airport AS c ON p.node = c.id
ORDER BY
p.seq;
结果如下:

问题是

如何找到这两个具有最多K边的点之间的最短路径

安装postgis和pgrouting;已创建网络拓扑


经过大量的研究,我发现Dijkstra本质上不能限制边的数量;因此,我必须以贝尔曼·福特为灵感创建一个算法

有关详细信息,请查看以下存储库: