Simple Graph Suchalgorithmus in SQL (PostgreSQL)

9

Ich habe ein Diagramm von Knoten in PostgreSQL implementiert (kein Baum)

Die Struktur der Tabelle ist in diesem Format

%Vor%

Dies zeigt die Beziehungen zwischen dem Knoten 1 und den Knoten, mit denen er verbunden ist.

Mein Problem

... ist, dass ich eine Funktion oder Methode brauche, um einen bestimmten Knotenpfad in sql zu finden.

Ich möchte eine Funktion wie SELECT getGraphPath (startnode, targetnode) aufrufen und dies wird den Pfad in jeder Form (Zeilen oder Strings) anzeigen

z.B. SELECT getGraphPath (1,18) ergibt:

%Vor%

oder sogar Zeilen:

%Vor%

Ich würde auch gerne wissen, wie man das Diagramm durchsucht, indem man die erste Suche und die erste Tiefensuche verwendet.

    
J146 02.11.2010, 03:47
quelle

3 Antworten

7

In etwa so:

%Vor%

(erfordert PostgreSQL 8.4 oder höher)

    
a_horse_with_no_name 03.12.2010 11:24
quelle
5

SQL ist nicht am besten geeignet, um Graphen zu manipulieren und Pfade zu finden. Sie sollten das Diagramm wahrscheinlich besser in eine prozedurale Sprache laden und den Floyd-Warshall-Algorithmus oder Johnsons Algorithmus , um einen Pfad zwischen Knoten zu finden.

Wenn Sie jedoch wirklich SQL verwenden müssen, schlage ich vor, dass Sie eine Kopie von Joe Celkos SQL for Smarties abholen > In SQL steht ein ganzes Kapitel zu Graphen.

    
Tony 02.11.2010 09:19
quelle
2

Sie können die Graphdatenbank direkt verwenden, um Ihr Problem zu lösen: Ссылка - & gt; Grafik als MySQL Storage Engine

    
aris 30.01.2011 00:36
quelle

Tags und Links