Fonction TSP
La fonction tsp
est définie comme suit :
CREATE OR REPLACE FUNCTION tsp(sql text, ids varchar, source_id integer)
RETURNS SETOF path_result
Les arguments sont :
- sql
- un requête SQL qui devrait retourner un ensemble de lignes ayant les colonnes suivantes :
- source_id: un int4 identifiant du noeud
- x: la coordonée x du noeud
- y: la coordonée y du noeud
- ids
- une chaîne de charactères contenant les idetifiants (int4) des noeuds séparés par une virgule.
- source_id
- identifiant (int4) du point de départ
La fonction renvoie un ensemble de lignes. Il y a une ligne pour chaque arc travsersé et une en plus contenant le noeud final. Les colonnes de chaques lignes sont les suivantes :
- vertex_id: l'identidiant du noeud source de chaque arc. Il y a une ligne supplémentaire après le dernier arc qui contient l'identifiant du noeud final du chemin.
- edge_id: innutilisé, vaut toujours 0
- cost: innutilisé, vaut toujours 0
Exemple:
SELECT * from tsp('select distinct source as source_id,
x1::double precision as x,
y1::double precision as y from dourol
where source in (83593,66059,10549,18842,13)',
'83593,66059,10549,18842,13', 10549);
vertex_id | edge_id | cost
----------+---------+------
10549 | 0 | 0
83593 | 0 | 0
66059 | 0 | 0
18842 | 0 | 0
13 | 0 | 0
(5 rows)
Ensuite la colonne vertex_id peut être utilisée pour le calcul du plus court chemin.