WO1996033470A1 - Abbildung eines graphen in einen speicher - Google Patents

Abbildung eines graphen in einen speicher Download PDF

Info

Publication number
WO1996033470A1
WO1996033470A1 PCT/EP1995/001450 EP9501450W WO9633470A1 WO 1996033470 A1 WO1996033470 A1 WO 1996033470A1 EP 9501450 W EP9501450 W EP 9501450W WO 9633470 A1 WO9633470 A1 WO 9633470A1
Authority
WO
WIPO (PCT)
Prior art keywords
graph
vertex
vertices
memory
search
Prior art date
Application number
PCT/EP1995/001450
Other languages
English (en)
French (fr)
Inventor
Enis Olgac
Original Assignee
International Business Machines Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corporation filed Critical International Business Machines Corporation
Priority to PCT/EP1995/001450 priority Critical patent/WO1996033470A1/de
Priority to US08/750,887 priority patent/US5878407A/en
Priority to DE19513960A priority patent/DE19513960A1/de
Publication of WO1996033470A1 publication Critical patent/WO1996033470A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/18Network design, e.g. design based on topological or interconnect aspects of utility systems, piping, heating ventilation air conditioning [HVAC] or cabling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/12Symbolic schematics
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Definitions

  • the invention relates to a method for mapping a graph into a memory, a method for graphically displaying a graph and a computer system for mapping a graph into a memory.
  • Graphs are used to represent relationships between objects. They are often used to model or represent a real process, procedure or structure. In particular for the representation of networks, e.g. B. a transport or communication network, graphs are used.
  • the method according to the invention makes it possible to display a graph using a triple of indices.
  • These indices can be stored in the memory of a computer system so that the graph can be analyzed using the computer. For example, the question of whether there is a relationship between a first node - in the further vertex - and a second vertex can be answered by a simple comparison operation of the indices in the memory. Likewise, the vertices lying on a path from a first to a second vertex in the graph can be determined by means of such comparison operations. The question of a shortest path between two vertices can also be answered using comparison operations.
  • the method according to the invention has the further advantage that the number of operations to be carried out to determine the triplets to be stored in the memory which describe the graph only increases linearly with the number of vertices and the edges of the graph.
  • Fields of application of the method according to the invention are in particular - in addition to the fields of application mentioned at the outset - control flow analysis, data flow analysis, the modeling of business processes, hardware and software configurations and network modeling.
  • the use of the method according to the invention for computer graphics offers particular advantages. If the triplets found by using the method according to the invention are understood as coordinates of the vertices in a coordinate system, this results in an ordered representation of the graph in several planar subgraphs layered one behind the other.
  • FIG. 2 the determination of a first image of the graph G
  • FIG. 3 the determination of a second image of the graph G
  • FIG. 4 the determination of a third image of the graph G
  • FIG. 5 shows the found triple of the graph G
  • FIG. 6 shows a further graph G 'and the associated triple of indices
  • FIG. 7 shows a further graph G ′′ and the associated triples of indices.
  • pre-clock the initial value of pre-clock is 0,
  • the initial value of post-clock is the number of vertices of the graph G if the depth search takes place in the forward direction, otherwise the initial value is 0,
  • the output content of the stack is all vertices at which the depth search can be started, the so-called sources of the graph G, if the depth search takes place in the forward direction, otherwise the output content is the so-called sinks of the graph G,
  • a data field for storing a vertex that is currently being processed hereinafter referred to as the current vertex.
  • the pointer Before performing the depth search, the pointer is in front of the first element in the successor list, - 5 -
  • pre-order a data field for storing the variable "pre-order"; the value of pre-order is initially 0,
  • post-order a field for storing "post-order"; the value of post-order is initially 0.
  • the depth search algorithm includes the following steps:
  • step 5 If the pointer of the successor list is the current vertex (u) at the end of the successor list: a) copy the content of the post-clock into the data field of the post-order number of the vertex (u) b) decrement the post-clock by 1 c) remove the vertex (u) from the stack d) go to step 1
  • step 1 add the vertex (v) to the beginning of the stack b) move the pointer one position to the right c) go to step 1
  • the pre-clock contains the number of vertices in the graph G
  • the post-clock is 0 if the depth search is in the forward direction, otherwise the number "n" of the vertices of the graph G. the stack is empty
  • the pre-order number contains the value of the pre-clock at the time when the vertex in question was discovered
  • the post-order number includes the value of the post-clock at the time when the relevant vertex was removed from the stack, or in other words when the processing of the relevant vertex was finished.
  • proc-clock the value of proc-clock is initially 0,
  • processing order a data field for storing the processing order - in the further "processing order"; initially the value of processing order is 0,
  • step 4 select the vertex (u) at the beginning of the queue as the current vertex b) increment the proc clock by 1 c) copy the content of the proc clock into the data field of the variable processing order of the vertex (u) d) go to step 4
  • step 4 add the vertex (v) to the end of the queue b) change the processing state of the vertex (v) to black c) move the pointer one position to the right d) go to step 4
  • the proc clock contains the number of vertices in the graph G. the queue is empty
  • the processing order contains the value that the proc clock had at the time when the vertex to which the processing order belongs was selected for processing
  • the logical state of processing state is black.
  • FIG. 1 shows a graph G to which an embodiment of the method according to the invention is to be applied.
  • the graph G consists of the vertices A, B, C, D, E, F, G, K, L, M, N, P, R, S and the associated edges - in the further Edges - as indicated in Fig. 1 above .
  • the graph G of Figure 1 is to be represented by means of the method according to the invention by indices which are stored in a memory, for. B. a computer.
  • the graph G is subjected to a first mapping, which results from a total of 5 depth searches and a breadth search:
  • FIG. 2a shows the initial values of the data structures used.
  • the output value of pre-clock is 0, the output value of post-clock is 15; there is initially no currently processed vertex "current vertex"; the stack contains only the source A of the graph G.
  • FIG. 2a shows the vertices of the graph G, the second column, the successors belonging to the respective vertex in the graph G “Successors”, the third column, the pre- Order number of each vertex and the fourth column, the post order number of each vertex.
  • FIG. 2 b shows the individual steps of the depth search algorithm used here in depth search No. 1. Figure 2b shows only those steps of the algorithm that are actually executed and the corresponding data that are changed thereby. The numbering of the steps in FIG. 2b corresponds to the numbering in the algorithm described above, just as otherwise a uniform numbering is followed.
  • FIG. 2c shows the result of depth search No. 1.
  • the pointers in the successor list are - as in FIG. 2a - symbolized by a "+”.
  • the pointers of all vertices are on the far right edge of the successor list after executing depth search No. 1.
  • FIG. 2d shows the data structures which are used for the subsequent breadth-first search in the graph G in the forward direction.
  • the proc clock is 0, a current vertex has not yet been defined because processing has not yet started; the queue contains the source A of the graph G.
  • the first column of FIG. 2d there is the list of vertices, in the second column the list of successors "Successors" everyone Vertex, in the third column the processing order, in the fourth column the logical processing state "State”, which is initially "White”.
  • the breadth-first search is based on the result of depth search No. 1, since the successor lists are sorted according to the post order found in depth search No. 1. This means that the successor list of each vertex is sorted according to the post order found in depth search no. 1, in descending order. The vertex in a successor list that has the largest number of post orders after executing the first depth search accordingly comes to the top of the successor list.
  • FIG. 2e shows the implementation of the breadth-first search using the algorithm described above, the numbering of the individual steps in FIG. 2e again corresponding to the steps in the breadth-first search algorithm described.
  • FIG. 2f shows the data structure of FIG. 2d after the breadth search has ended.
  • a further depth search is then carried out in the graph G based on the result of the breadth-first search.
  • the depth search No. 2 is carried out in the opposite direction, that is, in the reverse direction. In comparison to depth search no. 1, this means that the successor lists are replaced by corresponding lists of predecessors for each vertex.
  • the second column of FIG. 2g accordingly shows the predecessors of each vertex in the graph G - hereinafter referred to as "predecessors".
  • the vertex F has the predecessors "Predecessors" B, G, N, as can also be seen in FIG. 1.
  • the predecessor list in FIG. 2g is sorted based on the result of the breadth-first search. Each predecessor list is after the increasing processing Order of Figure 2f sorted, that is, that vertex in a predecessor list with the smallest processing order is at the beginning of the predecessor list, followed by the other vertices of the list in ascending order.
  • FIG. 2h shows the execution of the depth search in the reverse direction in the graph G, the numbering of the steps in FIG. 2h again corresponding to the steps in the depth search algorithm described above.
  • the difference to the depth search algorithm described above is only that - in accordance with the change in direction in the second depth search - the successors "Successors" have been replaced by the predecessors "Predecessors" of a vertex.
  • FIG. 21 shows the data structure of FIG. 2g after the second depth search has ended.
  • a third depth search is then carried out in the forward direction, the successors "Successors" in the successor lists of each vertex being sorted in descending pre-order order, the pre-order found in the second depth search being used as a basis (see column 3 of FIG. 2i).
  • Figure 2k shows the data structure of Figure 2j after performing the third depth search in the forward direction.
  • a fourth depth search is then carried out in the reverse direction, the predecessors of the vertices being sorted in descending post-order order before the depth search is carried out (FIG. 21).
  • the post-order numbers found in the previous depth search are again used as the basis for the sorting (cf. column 4 of FIG. 2k).
  • Figure 2m shows the result of the fourth depth search.
  • a fifth depth search in the forward direction is then carried out.
  • the successor lists of the vertices are again sorted in ascending post-order order (Fig. 2n), based on the post-order numbers determined in the fourth depth search (see column 4 of the figure 2m).
  • the result of the fifth depth search in the forward direction is shown in FIG. 2o.
  • the post-order numbers determined in the fifth depth search (cf. the fourth column of FIG. 2o) are the graph of graph G. This graph is referred to in the further base index "Bslndex". For example, vertex A has received index 1 from graph G, vertex B has index 4, vertex C has index 2, ... corresponding to column 4 "Bslndex" in FIG. 2o.
  • two further images of the graph G can be found by a further depth search.
  • the index of B is 9 ... (corresponding to column 4 of FIG. 3b).
  • a third mapping of the graph G is determined by means of a 7th depth search in the backward direction, namely the so-called backward index "Bwdlndex".
  • the predecessors "Predecessors" in the predecessor list of each vertex are first sorted in descending order according to their respective base index "Bslndex" (cf. column 4 of FIG. 2o). The vertex within a predecessor list that has the largest base index is therefore at the top of the list.
  • the sorting of the predecessor "predecessors” results in the sorting of column 2 in FIG. 4a.
  • the result of performing the 7th depth search in the reverse direction according to the algorithm explained above gives the result shown in FIG. 4b.
  • the post-order number of each vertex indicates its backward index "Bwdlndex" (cf. column 4 of FIG. 4b).
  • the results of the 3 illustrations of graph G described above are summarized in FIG.
  • the first column of FIG. 5 gives the base index "Bslndex", the third column the forward index “Fwdlndex” and the fourth column the backward index “Bwdlndex” of the vertices of the graph G.
  • the vertices of the graph G are listed in column 2 of FIG. 5. For each of the listed vertices, this results in an index triple of the base index, forward index and backward index. For example, vertex A is assigned to triple (1, 1, 1), vertex E to triple (7, 13, 13).
  • FIG. 5 it follows that for the graph G of FIG. 1, the forward and backward index are the same for each vertex. From this it follows clearly that the graph G is a planar graph.
  • FIG. 6b shows a further non-redundant planar graph G '.
  • the graph G ' is not redundant in the sense that it does not contain any edges that represent "abbreviations".
  • An "abbreviation” in this sense would be an edge between the vertex 11 and the vertex 5.
  • Such an edge is redundant, since the information that there is a relationship between the vertex 11 and the vertex 5, even without this edge in the graph G 'is included. This information is contained by the indirect relationship of these vertices via vertex 1 in graph G *. If this redundant edge were present in the graph G ', it would be eliminated by a mapping according to the invention.
  • FIG. 6a shows the results of the figures corresponding to FIG. 5. Since the forward and backward index of the graph G 'in FIG. 6b are again the same, it follows that the graph G' is also planar.
  • FIG. 7b shows a graph G ′′
  • FIG. 7a shows the corresponding result of the illustrations corresponding to FIG. 5.
  • the forward and backward index are different.
  • the graph G ′′ of FIG. 7b is a non-planar graph. This means that the graph G '' cannot be represented in one plane without crossing two of its edges.
  • This method for mapping a graph G into a memory - in particular into the memory of a computer system - therefore only requires that the vertices, the edges "edges", the sources “sources” and the sinks “sinks” (see FIG. 1 above) entered into the computer.
  • the method for mapping the graph G is then carried out according to the algorithms explained above by means of electronic data processing, so that a number triplet is then stored for each vertex of the graph in the memory of the computer system.
  • the total of the triple numbers found in this way contains the entire topological information contained in a graph G.
  • a shortest path Pmin from a vertex A to a vertex B can also be found if conditions 4a-b are applied recursively:
  • aa is there a relationship between the vertex Vi and the vertex B? If this is not the case, the vertex Vi cannot belong to a path from A to B. The next vertex Vi + 1 with the next largest Bslndex is then checked.
  • condition aa) is fulfilled: is there a relationship from a vertex Vj belonging to a path Pj to the currently checked vertex Vi? As long as no such vertex Vj has been found, this is vertex A. If this is the case, it follows that the currently checked vertex Vi also belongs to the path Pj. At the same time, since the vertex Vj is the vertex in the path Pj that has the largest index in the path, it is ensured that the currently checked vertex Vi immediately follows the vertex Vj in the path Pj. The currently checked vertex Vi, which belongs to the path Pj, then becomes the vertex Vj in a further recursion in the execution of step b) - in particular bb) - for this vertex.
  • the image generated by the mapping of the graph G according to the invention in the memory of a computer system can advantageously be used for the graphical representation of the graph G, for example on a screen of the computer system. If the individual triples of indices are interpreted as coordinates of the respective vertex in a coordinate system, the planar subgraphs of graph G are displayed in one plane. The resulting different levels are linked together at certain vertices. These vertices can e.g. B. tubular. This ensures a clear and space-saving display.
  • the method according to the invention is also not limited to acyclic directed graphs. It is also applicable to undirected graphs if a direction is faked in a manner known per se in the case of an undirected graph.
  • Another advantage of the method according to the invention results from the fact that the mapping of the graph G found in the memory has no redundancy whatsoever. However, this can be perceived as disadvantageous, especially when determining a shortest path. If, for example, there was a direct relationship between the vertices A and L in the graph in FIG. 1, this relationship would no longer be expressed in the triples of indices found. If the information that there is a direct relationship between vertices A and L is important and the information in the figure that there is such a relationship via vertex C is insufficient, remedial measures can be taken as follows:
  • edges "edges” are identified which have been omitted in the mapping. These are the redundant edges "Edges”. Fictitious nodes are inserted into those edges "Edges” that were initially omitted from the illustration. After the fictitious nodes have been inserted into the graph, the method according to the invention is then carried out a second time, in which case "edges" are retained on the redundant edges.
  • the method according to the invention can be integrated as a library program in an operating system. When a storage medium, for example a floppy disk or a CD-ROM, is inserted into the reader of a computer system, a computer system is then implemented which can carry out the method according to the invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur Abbildung eines Graphen G in den Speicher eines Computersystems durch eine Anzahl von Tiefen- und Breitensuchen in unterschiedlicher Richtung. Dadurch wird die gesamte, in dem Graphen beinhaltete topologische Information in den Speicher abgebildet. Gleichzeitig werden redundante Informationen eliminiert.

Description

B e s c h r e i b u n g
ABBILDUNG EINES GRAPHEN IN EINEN SPEICHER
Die Erfindung betrifft ein Verfahren zur Abbildung eines Graphen in einen Speicher, ein Verfahren zur graphischen Darstellung eines Graphen sowie ein Computersystem zur Abbildung eines Graphen in einen Speicher.
Graphen dienen zur Darstellung von Beziehungen zwischen Objekten. Sie werden oft zur Modellierung oder Darstellung eines realen Prozesses, Ablaufs oder einer Struktur verwendet. Insbesondere für die Darstellung von Netzwerken, z. B. eines Transport- oder Kommunikationsnetzwerks, werden Graphen verwendet.
Es ist aus dem Stand der Technik bekannt, Graphen nicht nur zur Darstellung und Modellierung eines realen Systems, das aus verschiedenen, zumindest logisch voneinander getrennten Objekten besteht, zu benutzen, sondern den Graphen auch zu Analysezwecken zu verwenden. Grundlegende Beispiele hierfür finden sich in "Foundations of Computer Science, Computer Science Press, Alfred V. Aho, Jeffrey D. Ullman" und in "Introduction to Algorithms, The MIT Press, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest".
Die praktische Anwendungen von Graphen ist jedoch problematisch, da es im Stand der Technik keine praktikable Methode gibt, einen Graphen so abzubilden, daß die Topographie des Graphen von einem Computer automatisch verarbeitet werden kann. Ebenso ist das Problem - insbesondere einen komplexen, räumlichen Graphen - auf der begrenzten ebenen Fläche eines Computerbildschirmes übersichtlich darzustellen, ungelöst. Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren zur Abbildung eines Graphen in einen Speicher sowie ein Computersystem zur Ausführung eines solchen Verfahrens zu schaffen.
Die der Erfindung zugrundeliegenden Aufgaben werden mit den Merkmalen der Patentansprüche 1 oder 9 bzw. 11 gelöst.
Das erfindungsgemäße Verfahren ermöglicht es, einen Graphen mittels eines Trippeis von Indices darzustellen. Diese Indices können in dem Speicher eines ComputerSystems gespeichert werden, so daß der Graph mittels des Computers analysiert werden kann. Beispielsweise kann die Frage, ob eine Beziehung zwischen einem ersten Knoten - im weiteren Vertex - und einer zweiten Vertex besteht, durch eine einfache Vergleichsoperation der in dem Speicher befindlichen Indices beantwortet werden. Ebenso lassen sich die Vertices, die auf einem Pfad von einer ersten zu einer zweiten Vertex in dem Graphen liegen, durch ebensolche Vergleichsoperationen bestimmen. Auch die Frage nach einem kürzesten Pfad zwischen 2 Vertices läßt sich so mittels Vergleichsoperationen beantworten. Das erfindungsgemäße Verfahren hat weiter den Vorteil, daß die Anzahl der durchzuführenden Operationen zur Ermittlung der in dem Speicher abzuspeichernden Trippel, die den Graphen beschreiben, nur linear mit der Anzahl der Vertices und der Kanten "edges" des Graphen anwächst.
Anwendungsgebiete des erfindungsgemäßen Verfahrens sind insbesondere - neben den eingangs erwähnten Anwendungsgebieten - die Kontrollfluß-Analyse, die Datenfluß-Analyse, die Modellierung von Geschäftsprozessen, von Hard- und Softwarekonfigurationen und die Netzwerkmode11ierung. Besondere Vorteile bietet die Anwendung des erfindungsgemäßen Verfahrens für Computergraphik. Werden nämlich die durch die Anwendung des erfindungsgemäßen Verfahrens aufgefundenen Trippel als Koordinaten der Vertices in einem Koordinatensystem aufgefaßt, so ergibt sich daraus eine geordnete Darstellung des Graphen in mehreren hintereinander geschichteten planaren Teilgraphen.
Ein Ausführungsbeispiel der Erfindung ist in der Zeichnung dargestellt und wird im folgenden näher beschrieben.
Es zeigen
Figur 1 einen Graphen G;
Figur 2 die Ermittlung einer ersten Abbildung des Graphen G;
Figur 3 die Ermittlung einer zweiten Abbildung des Graphen G;
Figur 4 die Ermittlung einer dritten Abbildung des Graphen G;
Figur 5 die aufgefundenen Trippel der Abbildung des Graphen G;
Figur 6 einen weiteren Graphen G' und die dazugehörigen Trippel von Indices;
Figur 7 einen weiteren Graphen G' ' und die dazugehörigen Trippel von Indices.
Zur Tiefensuche in dem Graphen G soll bei dieser
Ausführungsform der folgende Algorithmus zur Anwendung kommen: Es werden zunächst die globalen Variablen des Algorithmus definiert:
pre-clock; der Ausgangswert von pre-clock ist gleich 0,
post-clock; der Ausgangswert von post-clock ist die Anzahl der Vertices des Graphen G, wenn die Tiefensuche in Vorwärtsrichtung statt findet, sonst ist der Ausgangswert gleich 0,
ein Stack, der sich gegenwärtig in Verarbeitung befindlichen Vertices; der Ausgangsinhalt des Stacks sind alle Vertices, bei denen die Tiefensuche begonnen werden kann, die sogenannten Sources des Graphen G, wenn die Tiefensuche inv Vorwärtsrichtung stattfindet, sonst ist der Ausgangsinhalt die sogenannten Sinks des Graphen G,
ein Datenfeld zur Speicherung einer gegenwärtig in Verarbeitung befindlichen Vertex, im weiteren Current- Vertex genannt.
Für jede Vertex werden die folgenden lokalen Variablen definiert:
eine Liste der Nachfolger der betreffenden Vertex, wobei als Nachfolger all diejenigen Vertices bezeichnet sind, die mit der betreffenden Vertex in einer unmittelbaren Beziehung stehen. In der Liste der Nachfolger - im weiteren Successor genannt - befindet sich ein Zeiger - im weiteren Pointer genannt. Vor Ausführung der Tiefensuche befindet sich der Zeiger vor dem ersten Element in der Successor-Liste, - 5 -
ein Datenfeld zur Speicherung der Variablen "Pre- Order"; der Wert von Pre-Order ist anfangs gleich 0,
ein Feld zur Speicherung von "Post-Order"; der Wert von Post-Order ist anfangs gleich 0.
Der Algorithmus zur Tiefensuche beinhaltet die folgenden Schritte:
1. wenn der Stack leer ist:
a) gehe zum Schritt 8
2 . wenn der Stack nicht leer ist:
a) wähle die Vertex (u) am Anfang des Stacks als die Current-Vertex b) gehe zu Schritt 3
3. wenn das Datenfeld der Pre-Order-Zahl der Current- Vertex (u) nicht gleich 0 ist:
a) gehe zum Schritt 5
4. wenn das Datenfeld der Pre-Order-Zahl der Current- Vertex (u) gleich 0 ist:
a) inkrementiere die Pre-Clock um 1
b) kopiere den Inhalt der Pre-Clock in das Datenfeld der Pre-Order-Zahl der Vertex (u), c) gehe zum Schritt 5
5. wenn der Pointer der Successor-Liste der Current- Vertex (u) an dem Ende der Successor-Liste ist: a) kopiere den Inhalt der Post-Clock in das Datenfeld der Post-Order-Zahl der Vertex (u) b) dekrementiere die Post-Clock um 1 c) entferne die Vertex (u) von dem Stack d) gehe zum Schritt 1
6. wenn es eine Vertex (v) auf der rechten Seite des Pointers in der Successor-Liste der Current-Vertex (u) gibt und die Pre-Order-Zahl der Vertex (v) gleich 0 ist:
a) addiere die Vertex (v) zu dem Anfang des Stack b) bewege den Pointer eine Position nach rechts c) gehe zum Schritt 1
7. wenn es eine Vertex (v) auf der rechten Seite des Pointers in der Successor-Liste der Current-Vertex (u) gibt und die Pre-Order-Zahl der Vertex (v) nicht gleich 0 ist:
a) bewege den Pointer eine Position nach rechts b) gehe zum Schritt 5
8. beende die Tiefensuche.
Nach Beendigung der Tiefensuche beinhalten die eingangs definierten Datenstrukturen die folgenden Ergebnisse:
die globalen Variablen:
die Pre-Clock beinhaltet die Anzahl der Vertices in dem Graphen G,
die Post-Clock ist gleich 0, wenn die Tiefensuche in Vorwärtsrichtung stattfindet, sonst gleich der Anzahl "n" der Vertices des Graphen G. der Stack ist leer
die lokalen Variablen jeder Vertex:
der Pointer in der Successor-Liste ist an dem Ende der Liste,
die Pre-Order-Zahl beinhaltet den Wert der Pre-Clock zu dem Zeitpunkt als die betreffende Vertex entdeckt wurde,
die Post-Order-Zahl beinhaltet den Wert der Post-Clock zu dem Zeitpunkt als die betreffende Vertex von dem Stack entfernt wurde, oder mit anderen Worten, zu dem Zeitpunkt als die Verarbeitung der betreffenden Vertex beendet war.
Für die Ausführung der Breitensuche wird in diesem Ausführungsbeispiel der folgende Algorithmus verwendet:
Definition der verwendeten Datenstrukturen:
Globale Variable:
"proc-clock"; der Wert von proc-clock ist anfangs gleich 0,
eine Warteschlange "queue" derjenigen Vertices, die gerade verarbeitet werden; anfangs beinhaltet queue alle diejenigen Vertices, an denen die Breitensuche begonnen werden kann. Das sind die Senken - im weiteren Sinks - des Graphen G; im Falle einer Breitensuche in Vorwärtsrichtung sind dies die Sources des Graphen G. ein Datenfeld zur Speicherung der gegenwärtig verarbeiteten Vertex, also der Current-Vertex.
Lokale Variable für jede Vertex:
eine Successor-Liste mit einem Pointer, der anfangs links von der ersten Vertex in der Successor-Liste steht,
ein Datenfeld zur Speicherung der Verarbeitungsordnung - im weiteren "Processing-Order"; anfangs ist der Wert von Processing-Order gleich 0,
ein Datenfeld zur Speicherung des
Verarbeitungszustandes - im weiteren "Processing- State"; anfangs hat Processing-State einen ersten logischen Wert - im weiteren "White" -,
zur Breitensuche werden folgende Schritte ausgeführt:
1. ändere den Processing-State aller Vertices in der Queue zu einem zweiten logischen Wert - im weiteren "Black".
2. wenn die Queue leer ist:
a) gehe zum Schritt 7
3. wenn die Queue nicht leer ist:
a) wähle diejenige Vertex (u) an dem Anfang der Queue als die Current-Vertex b) inkrementiere die Proc-Clock um 1 c) kopiere den Inhalt der Proc-Clock in das Datenfeld der variablen Processing-Order der Vertex (u) d) gehe zum Schritt 4
4. wenn der Pointer in der Successor-Liste der Current- Vertex (u) an dem Ende der Successor-Liste ist:
a) entferne die Vertex (u) von der Queue b) gehe zum Schritt 2
5. wenn es eine Vertex (v) rechts von dem Zeiger in der Successor-Liste der Current-Vertex (u) gibt und der Processing-State der Vertex (v) White ist:
a) addiere die Vertex (v) zu dem Ende der Queue b) verändere den Processing-State der Vertex (v) zu Black c) bewege den Pointer eine Position nach rechts d) gehe zum Schritt 4
6. wenn es eine Vertex (v) rechts von dem Pointer in der Successor-Liste der Current-Vertex (u) gibt und der Processing-State der Vertex (v) Black ist:
a) bewege den Pointer eine Position nach rechts b) gehe zum Schritt 4
7. beende die Breitensuche.
Nach der Beendigung der Breitensuche beinhalten die eingangs definierten Datenstrukturen die folgenden Ergebnisse:
die globalen Variablen:
die Proc-Clock beinhaltet die Anzahl der Vertices in dem Graphen G die Queue ist leer
die lokalen Variable jeder Vertex:
der Pointer der Successor-Liste ist an dem Ende der Successor-Liste
die Processing-Order beinhaltet den Wert, den die Proc-Clock zu dem Zeitpunkt hatte, als diejenige Vertex zu der die Processing-Order gehört zur Verarbeitung ausgewählt wurde
der logische Zustand von Processing-State ist Black.
Außer den oben beschriebenen Algorithmen für die Tiefen¬ bzw. Breitensuche sind aus dem Stand der Technik eine Vielzahl äquivalenter Algorithmen bekannt, die sich ebenso zum Einsatz in einem erfindungsgemäßen Verfahren eignen.
Die Figur 1 zeigt einen Graphen G, auf den eine Ausführungsform des erfindungsgemäßen Verfahrens angewendet werden soll. Der Graph G besteht aus den Vertices A, B, C, D, E, F, G, K, L, M, N, P, R, S und den dazugehörigen Kanten - im weiteren Edges - wie in Fig. 1 oben angegeben.
Der Graph G der Figur 1 soll mittels des erfindungsgemäßen Verfahrens durch Indices dargestellt werden, die in einem Speicher z. B. eines Computers gespeichert werden. Dazu wird der Graph G einer ersten Abbildung unterworfen, die sich aus insgesamt 5 Tiefensuchen und einer Breitensuche ergibt:
Tiefensuche Nummer 1: der Graph G wird einer Tiefensuche in Vorwärtsrichtung unterworfen, wobei die Nachfolger der Vertices - im weiteren "Successors" - in jeder beliebigen Ordnung - im Beispiel in alphabetischer Ordnung - aneinander gereiht werden können. Das Ergebnis der 1. Tiefensuche ist eine topologische Ordnung des Graphen G. Die Figur 2a zeigt die Ausgangswerte der verwendeten Datenstrukturen. Der Ausgangswert von Pre-Clock ist gleich 0, der Ausgangswert von Post-Clock ist gleich 15; es gibt zunächst keine gegenwärtig verarbeitete Vertex "Current- Vertex"; der Stack beinhaltet lediglich die Source A des Graphen G. Die erste Spalte der Figur 2a zeigt die Vertices des Graphen G, die zweite Spalte, die zu der jeweiligen Vertex gehörigen Nachfolger in dem Graphen G "Successors", die dritte Spalte, die Pre-Order-Zahl jeder Vertex und die vierte Spalte, die Post-Order-Zahl jeder Vertex. Figur 2b zeigt die einzelnen bei der Tiefensuche Nr. 1 durchlaufenden Schritte des hier verwendeten Algorithmus zur Tiefensuche. Figur 2b zeigt nur diejenigen Schritte des Algorithmus, die tatsächlich ausgeführt werden und die entsprechenden Daten, die dadurch verändert werden. Die Nummerierung der Schritte der Figur 2b entspricht dabei der Nummerierung in dem oben beschriebenen Algorithmus, wie auch sonst im weiteren eine einheitliche Nummerierung eingehalten wird.
Figur 2c zeigt das Ergebnis der Tiefensuche Nr. 1. Die Pointer in der Successor-Liste sind - wie auch in der Figur 2a - durch einen " + " symbolisiert. Die Pointer aller Vertices stehen nach Ausführung der Tiefensuche Nr. 1 am äußerst rechten Rand der Successor-Liste.
Figur 2d zeigt die Datenstrukturen, die für die nachfolgende Breitensuche in dem Graphen G in Vorwärtsrichtung verwendet werden. Die Proc-Clock ist gleich 0, eine Current-Vertex ist noch nicht definiert, da die Verarbeitung noch nicht begonnen hat; die Queue beinhaltet die Source A des Graphen G. In der ersten Spalte der Figur 2d befindet sich die Liste der Vertices, in der zweiten Spalte die Liste der Nachfolger "Successors" jeder Vertex, in der dritten Spalte die Processing-Order, in der vierten Spalte der logische Processing-State "State", der anfangs "White" ist.
Die Durchführung der Breitensuche basiert auf dem Ergebnis der Tiefensuche Nr. 1, da die Successor-Listen entsprechend der in der Tiefensuche Nr. 1 aufgefundenen Post-Order sortiert sind. Das bedeutet, daß die Successor-Liste jeder Vertex entsprechend der in der Tiefensuche Nr. 1 aufgefundenen Post-Order sortiert ist und zwar in absteigender Reihenfolge. Derjenige Vertex in einer Successor-Liste, der nach Ausführung der ersten Tiefensuche die größte Post-Order-Zahl hat, kommt dementsprechend an den Anfang der Successor-Liste. Figur 2e zeigt die Durchführung der Breitensuche nach dem oben beschriebenen Algorithmus, wobei wiederum die Nummerierung der einzelnen Schritte der Figur 2e den Schritten in dem beschriebenen Breitensuche - Algorithmus entspricht.
Figur 2f zeigt die Datenstruktur der Figur 2d nach Beendigung der Breitensuche.
Nachfolgend wird basierend auf dem Ergebnis der Breitensuche eine weitere Tiefensuche in dem Graphen G durchgeführt. Die Tiefensuche Nr. 2 wird dabei in entgegengesetzter Richtung, das heißt in Rückwärtsrichtung durchgeführt. Das bedingt im Vergleich zu der Tiefensuche Nr. 1, daß die Successor-Listen durch entsprechende Listen von Vorgängern für jede Vertex ausgetauscht werden. Die zweite Spalte der Figur 2g zeigt dementsprechend die Vorgänger jeder Vertex in dem Graphen G - im weiteren "Predecessors" genannt. Zum Beispiel hat die Vertex F die Vorgänger "Predecessors" B, G, N, wie auch aus der Figur 1 ersichtlich. Die Predecessor-Liste der Figur 2g ist basierend auf dem Ergebnis der Breitensuche sortiert. Jede Predecessor-Liste ist nach der ansteigenden Processing- Order der Figur 2f sortiert, das heißt, diejenige Vertex in einer Predecessor-Liste mit der kleinsten Processing-Order steht am Anfang der Predecessor-Liste, worauf die weiteren Vertices der Liste in aufsteigender Reihenfolge folgen.
Figur 2h zeigt die Ausführung der Tiefensuche in Rückwärtsrichtung in dem Graphen G, wobei wiederum die Nummerierung der Schritte in der Figur 2h den Schritten in dem zuvor beschriebenen Tiefensuchen Algorithmus entsprechen. Der Unterschied zum zuvor beschriebenen Tiefensuchen Algorithmus ist nur der, daß - entsprechend der Änderung der Richtung bei der zweiten Tiefensuche - die Nachfolger "Successors" durch die Vorgänger "Predecessors" einer Vertex ersetzt worden sind.
Figur 21 zeigt die Datenstruktur der Figur 2g nach Beendigung der zweiten Tiefensuche.
Basierend auf dem Ergebnis der zweiten Tiefensuche wird danach eine dritte Tiefensuche in Vorwärtsrichtung durchgeführt, wobei die Nachfolger "Successors" in den Successor-Listen jeder Vertex in absteigender Pre-Order Reihenfolge sortiert sind, wobei die in der zweiten Tiefensuche aufgefundene Pre-Order zugrundegelegt wird (vgl. Spalte 3 der Figur 2i). Figur 2k zeigt die Datenstruktur der Figur 2j nach Durchführung der dritten Tiefensuche in Vorwärtsrichtung. Basierend auf dem Ergebnis der dritten Tiefensuche wird danach eine vierte Tiefensuche in Rückwärtsrichtung durchgeführt, wobei die Vorgänger "Predecessors" der Vertices in abfallender Post-Order Reihenfolge vor der Durchführung der Tiefensuche sortiert werden (Fig. 21). Es werden wiederum die in der vorhergehenden Tiefensuche aufgefundenen Post-Order-Zahlen für die Sortierung zugrundegelegt (vgl. Spalte 4 der Figur 2k) . Das Ergebnis der vierten Tiefensuche zeigt die Figur 2m. Basierend auf der vierten Tiefensuche in Rückwärtsrichtung wird danach eine fünfte Tiefensuche in Vorwärtsrichtung durchgeführt. Vor Durchführung der fünften Tiefensuche in Vorwärtsrichtung werden wiederum die Successor-Listen der Vertices in aufsteigender Post-Order-Reihenfolge sortiert (Fig. 2n) , wobei die bei der vierten Tiefensuche ermittelten Post-Order-Zahlen zugrundegelegt werden (vgl. Spalte 4 der Figur 2m) . Das Ergebnis der fünften Tiefensuche in Vorwärtsrichtung zeigt die Figur 2o. Die in der fünften Tiefensuche ermittelten Post-Order-Zahlen (vgl. die 4. Spalte der Figur 2o) sind die Abbildung des Graphen G. Diese Abbildung wird im weiteren Base-Index "Bslndex" bezeichnet werden. Die Vertex A hat beispielsweise durch die erste Abbildung des Graphen G den Index 1 erhalten, die Vertex B den Index 4, die Vertex C den Index 2, ... entsprechend der Spalte 4 "Bslndex" der Figur 2o.
Basierend auf dem aufgefundenen Bslndex können durch je eine weitere Tiefensuche zwei weitere Abbildungen des Graphen G aufgefunden werden.
Zur Auffindung einer zweiten Abbildung - im weiteren Forward-Index "Fwdlndex" - wird dazu der Graph G einer weiteren Tiefensuche in Vorwärtsrichtung unterworden. Die Nachfolger "Successors" in der Successor-Liste jeder Vertex werden dabei entsprechend dem Bslndex vor der Durchführung der 6. Tiefensuche sortiert und zwar in ansteigender Reihenfolge. Der Nachfolger "Successor" in einer Successor- Liste mit dem kleinsten Bslndex kommt deshalb an den Anfang der Successor-Liste. Das ergibt die in der Figur 3a gezeigten Datenstruktur. Basierend auf dieser Datenstruktur wird die 6. Tiefensuche in Vorwärtsrichtung nach dem oben erläuterten Algorithmus durchgeführt. Das Ergebnis ist die Datenstruktur der Figur 3b. Die Post-Order-Zahlen der Vertices stellen den gesuchten Forward-Index "Fwdlndex" dar. Beispielsweise ist der Fwdlndex der Vertex A gleich 1, - 15 -
der Fwdlndex von B gleich 9 ... (entsprechend der Spalte 4 der Figur 3b) .
Mittels einer 7. Tiefensuche in Rückwärtsrichtung wird eine dritte Abbildung des Graphen G bestimmt und zwar der sogenannte Backward-Index "Bwdlndex". Dazu werden zunächst die Vorgänger "Predecessors" in der Predecessor-Liste jeder Vertex nach ihrem jeweiligen Base-Index "Bslndex" (vgl. Spalte 4 der Figur 2o) in absteigender Reihenfolge sortiert. Diejenige Vertex innerhalb einer Predecessor- Liste, die den größten Base-Index aufweist, steht deshalb am Anfang der Liste. Aus dieser Sortierung der Vorgänger "Predecessors" ergibt sich die Sortierung der Spalte 2 in Figur 4a. Das Ergebnis der Durchführung der 7. Tiefensuche in Rückwärtsrichtung nach dem oben erläuterten Algorithmus ergibt das in Figur 4b gezeigte Ergebnis. Die Post-Order- Zahl jeder Vertex gibt deren Backward-Index "Bwdlndex" an (vgl. Spalte 4 der Figur 4b).
Die Ergebnisse der oben beschriebenen 3 Abbildungen des Graphen G sind in der Figur 5 zusammengefaßt. Die erste Spalte der Figur 5 gibt den Base-Index "Bslndex", die dritte Spalte den Forward-Index "Fwdlndex" und die vierte Spalte den Backward-Index "Bwdlndex" der Vertices des Graphen G an. Die Vertices des Graphen G sind in der Spalte 2 der Figur 5 aufgelistet. Daraus ergibt sich für jede der aufgelisteten Vertices ein Indice-Trippel aus Base-Index, Forward-Index und Backward-Index. Beispielsweise ist der Vertex A das Trippel (1, 1, 1) , der Vertex E das Trippel (7, 13, 13) zugeordnet.
Aus der Figur 5 ergibt sich, daß für den Graphen G der Figur 1 Forward- und Backward-Index für jede Vertex gleich sind. Daraus folgt eindeutig, daß es sich bei dem Graphen G um einen planaren Graphen handelt. Die Figur 6b zeigt einen weiteren nicht redundanten planaren Graphen G' . Der Graph G' ist in dem Sinne nicht redundant, daß keine edges in ihm enthalten sind, die "Abkürzungen" darstellen. Eine "Abkürzung" in diesem Sinne wäre eine edge zwischen der Vertex 11 und der Vertex 5. Eine solche edge ist jedoch redundant, da die Information, daß eine Beziehung zwischen der Vertex 11 und der Vertex 5 vorliegt, auch ohne diese edge in dem Graphen G' beinhaltet ist. Diese Information ist durch die mittelbare Beziehung dieser Vertices über die Vertex 1 im Graphen G* beinhaltet. Wäre diese redundante edge in dem Graphen G' vorhanden, würde sie durch eine erfindungsgemäße Abbildung eliminiert werden.
Die Figur 6a zeigt die Ergebnisse der Abbildungen entsprechend der Figur 5. Da wiederum Forward- und Backward-Index des Graphen G' der Figur 6b gleich sind, folgt, daß auch der Graph G' planar ist.
Die Figur 7b zeigt einen Graphen G' ' ; Figur 7a das dazugehörige Ergebnis der Abbildungen entsprechend der Figur 5. In diesem Fall sind Forward- und Backward-Index verschieden. Daraus folgt eindeutig, daß es sich bei dem Graphen G' ' der Figur 7b um einen nicht-planaren Graphen handelt. Das bedeutet, daß sich der Graph G' ' in einer Ebene nicht ohne die Kreuzung zweier seiner Kanten darstellen läßt.
Dieses Verfahren zur Abbildung eines Graphen G in einen Speicher - insbesondere in den Speicher eines Computersystems - erfordert also lediglich, daß die Vertices, die Kanten "Edges", die Quellen "Sources" und die Senken "Sinks" (vgl. Figur 1 oben) in den Computer eingegeben werden. Das Verfahren zur Abbildung des Graphen G wird dann nach den oben erläuterten Algorithmen mittels elektronischer Datenverarbeitung durchgeführt, so daß danach für jede Vertex des Graphen in dem Speicher des Computersystems, ein Zahlen-Trippel abgespeichert ist. Die Gesamtheit der so aufgefundenen Zahlen-Trippel beinhaltet die gesamte topologische Information, die in einem Graphen G enthalten ist. Mit Hilfe der aufgefundenen Abbildung eines Graphen G, das heißt mit Hilfe der für jede seiner Vertices aufgefundenen Zahlen-Trippel, lassen sich beispielsweise unmittelbar folgende Fragen beantworten:
1. Es handelt sich um einen linearen Graphen, wenn Bslndex = Fwdlndex - Bwdlndex ist.
2. Es handelt sich um einen planaren Graphen, wenn Bslndex ungleich Fwdlndex = Bwdlndex ist.
3. Es handelt sich um einen nicht-planaren Graphen, wenn alle 3 Indices für eine Vertex des Graphen ungleich sind.
4. Es gibt eine Beziehung zwischen einer beliebigen ersten Vertex A und einer beliebigen zweiten Vertex B des Graphen G, genau dann, wenn
a) der Bslndex der Vertex A < Bslndex der Vertex B, b) der Fwdlndex der Vertex A < Fwdlndex der Vertex B, und c) der Bwdlndex der Vertex A < Bwdlndex der Vertex B.
Wird die erste Tiefensuche nicht in Vorwärts- sondern in Rückwärtsrichtung durchgeführt, kehren sich die Größenverhältnisse entsprechend um, d. h. "<" wird dann zu ">".
5. Für den Fall eines planaren Graphen sind die Bedingungen b) und c) gleich; für den Fall eines linearen Graphen sind alle 3 Bedingungen gleich, so daß lediglich zu prüfen bleibt, ob der Bslndex der Vertex A kleiner als der Bslndex der Vertex B ist. Die Beantwortung der Frage, ob eine Beziehung zwischen einer Vertex A und einer Vertex B in dem Graphen G besteht, erfordert nur eine geringe Rechenleistung für das ComputerSystem. Zur Beantwortung dieser Frage müssen ja lediglich die 3 mittels der Abbildung aufgefundenen Indices der Vertex A und der Vertex B jeweils miteinander verglichen werden. Ein weiterer Vorteil des erfindungsgemäßen Verfahrens ist, daß die aufgefundene Aussage, daß eine Beziehung zwischen Vertex A und Vertex B besteht, ohne eine Unsicherheit behaftet ist, was nach dem Stand der Technik der Fall wäre.
Durch die Aneinanderreihung von Beziehungen, symbolisiert durch die Kanten "Edges" des Graphen G, ergeben sich sogenannte Pfade. Basierend auf der aufgefundenen Abbildung des Graphen G lassen sich alle Vertices bestimmen, die zu einem Pfad von einer beliebiegen Vertex A zu einer beliebigen Vertex B in einem Graphen G gehören. Dazu müssen alle Vertices bestimmt werden, die sowohl eine Beziehung zu der Vertex A als auch eine Beziehung zu der Vertex B haben.
Mit Hilfe des erfindungsgemäßen Verfahrens läßt sich auch ein kürzester Pfad Pmin von einer Vertex A zu einer Vertex B auffinden, wenn die Bedingungen 4a-b rekursiv angewendet werden:
a) für einen Pfad P von A nach B kommen nur diejenigen Vertices Vi in Frage, deren Bslndex größer als der Bslndex von A, aber kleiner als der Bslndex von B sind. stelle für jede dieser Vertices Vi in ansteigender Reihenfolge der Base-Indices folgendes fest:
aa) gibt es eine Beziehung von der Vertex Vi zu der Vertex B ? Wenn das nicht der Fall ist, kann die Vertex Vi nicht zu einem Pfad von A nach B gehören. Es wird dann die nächste Vertex Vi + 1 mit dem nächstgrößeren Bslndex geprüft.
bb) Falls die Bedingung aa) erfüllt ist: gibt es eine Beziehung von einer Vertex Vj, die zu einem Pfad Pj gehört, zu der gegenwärtig überprüften Vertex Vi ? Solange noch keine solche Vertex Vj festgestellt wurde, ist dies die Vertex A. Wenn das der Fall ist, ergibt sich daraus, daß die gegenwärtig überprüfte Vertex Vi ebenfalls zu dem Pfad Pj dazugehört. Da die Vertex Vj, diejenige Vertex in dem Pfad Pj ist, die den größten Bslndex in dem Pfad aufweist, ist zugleich sichergestellt, daß die gegenwärtig überprüfte Vertex Vi unmittelbar auf die Vertex Vj in dem Pfad Pj folgt. Die gegenwärtig überprüfte Vertex Vi, die zu dem Pfad Pj gehört, wird dann in einer weiteren Rekursion zur Vertex Vj in der Ausführung des Schritts b) - insbesondere bb) - für diese Vertex.
Wenn es keine Beziehung zwischen der Vertex Vj in dem Pfad Pj zu der Vertex Vi gibt, wobei Vj und Vi minimale Differenzen in ihrem Bslndex aufweisen, so muß überprüft werden, ob es andere Pfade Pj + 1 gibt, zu denen die gegenwärtig überprüfte Vertex Vi gehört. Dazu muß für die letzte bisher aufgefundene Vertex V in jeden der weiteren Pfade P, das heißt für die jeweilige Vertex
V mit dem größten Bslndex, überprüft werden, ob es eine Beziehung zwischen dieser Vertex
V und der gegenwärtig überprüften Vertex Vi gibt. Wenn das der Fall ist, folgt daraus, daß die Vertex Vi in dem betreffenden Pfad P unmittelbar auf die zuletzt aufgefundene Vertex V folgt.
c) Bestimmung der Länge aller aufgefundenen Pfade, ggf. unter Berücksichtigung numerischer Informationen der Beziehungen. Stellt beispielsweise der Graph G ein Computernetzwerk dar, so kann die zu der einzelnen Beziehung zwischen 2 Vertices gehörige numerische Information beispielsweise eine Aussage über die Leitungslänge treffen.
d) Ermittle aus den unter c) bestimmten Pfadlängen, den Pfad der kleinsten Länge Pmin.
Die durch die erfindungsgemäße Abbildung des Graphen G erzeugte Abbildung in dem Speicher eines Computersystems, kann vorteilhafterweise für die graphische Darstellung des Graphen G zum Beispiel auf einem Bildschirm des Computersystems benutzt werden. Werden die einzelnen Trippel von Indices als Koordinaten der jeweiligen Vertex in einem Koordinaten-System interpretiert, so werden die planaren Teilgraphen des Graphen G in einer Ebene dargestellt. Die daraus resultierenden verschiedenen Ebenen sind an bestimmten Vertices miteinander verknüpft. Diese Vertices können z. B. röhrenförmig dargestellt werden. Dadurch ist eine übersichtliche und speicherplatzsparende Darstellung gewährleistet.
Das erfindungsgemäße Verfahren ist auch nicht auf azyklische gerichtete Graphen beschränkt. Es ist auch auf ungerichtete Graphen anwendbar, wenn bei einem ungerichteten Graphen in an sich bekannter Weise eine Richtung fingiert wird.
Ein weiterer Vorteil des erfindungsgemäßen Verfahrens ergibt sich daraus, daß die aufgefundene Abbildung des Graphen G in dem Speicher keinerlei Redundanz aufweist. Dies kann allerdings - gerade bei der Bestimmung eines kürzesten Pfades auch als nachteilig empfunden werden. Bestünde beispielsweise in dem Graphen der Figur 1 eine unmittelbare Beziehung zwischen den Vertices A und L, so würde diese Beziehung in den aufgefundenen Trippeln von Indices nicht mehr zum Ausdruck kommen. Falls die Information, daß es eine unmittelbare Beziehung zwischen den Vertices A und L gibt, von Bedeutung ist, und die in der Abbildung enthaltende Information, daß eine solche Beziehung über die Vertex C besteht, nicht ausreicht, kann wie folgt Abhilfe geschaffen werden:
Nach Durchführung einer ersten erfindungsgemäßen Abbildung des Graphen in den Speicher, werden diejenigen Kanten "Edges" identifiziert, die bei der Abbildung weggefallen sind. Dies sind die redundanten Kanten "Edges". In diejenigen Kanten "Edges", die durch die Abbildung zunächst weggefallen sind, werden fiktive Knoten eingefügt. Nach der Einfügung der fiktiven Knoten in den Graphen wird danach das erfindungsgemäße Verfahren zum zweiten mal durchgeführt, wobei dann auf die Redundanten Kanten "Edges" erhalten bleiben. Das erfindungsgemäße Verfahren kann als Bibliotheks- Programm in einem Betriebssystem integriert sein. Bei Einfügung eines Speichermediums, etwa einer Diskette oder einer CD-Rom in den Leser eines Computersystems, wird dann ein Computersystem realisiert, das das erfindungsgemäße Verfahren ausführen kann.

Claims

P A T E N T A N S P R Ü C H E
1. Verfahren zur Abbildung eines Graphen G in einen Speicher gekennzeichnet durch die folgenden Schritte:
a) Tiefensuche in dem Graphen G in einer ersten Richtung;
b) Breitensuche in dem Graphen G in der ersten Richtung;
c) vier weitere Tiefensuchen in dem Graphen G, wobei die Richtungen der Tiefensuchen abwechselnd in einer zweiten und der ersten Richtung durchgeführt werden,
wobei die Durchführung der Breiten- bzw. Tiefensuchen in den Schritten b) und c) jeweils auf dem Ergebnis des jeweils vorhergehenden Suchvorgangs basiert.
2. Verfahren nach Anspruch 1 dadurch gekennzeichnet, daß vor Durchführung der Suchvorgänge in den Schritten 1. b) und 1. c) die Listen der Nachfolger jeder Vertex des Graphen G entsprechend dem Ergebnis des jeweils vorhergehenden Suchvorgangs sortiert werden.
3. Verfahren nach einem oder mehreren der Ansprüche 1 oder 2 gekennzeichnet durch folgende Schritte:
a) Tiefensuche in der ersten Richtung in dem Graphen G basierend auf der Abbildung (Bslndex) zur Erzeugung einer zweiten Abbildung (Fwdlndex); b) Tiefensuche in der zweiten Richtung in dem
Graphen G basierend auf der Abbildung (Bslndex) zur Erzeugung einer dritten Abbildung (Bwdlndex).
Verfahren nach Anspruch 3 dadurch gekennzeichnet, daß vor Durchführung der Suchvorgänge in den Schritten 3. a) und 3. b) die Listen der Nachfolger jeder Vertex des Graphen G entsprechend der ersten Abbildung (Bslndex) sortiert werden.
Verfahren zur Feststellung, ob in einem Graphen G eine Beziehung zwischen einer ersten Vertex A und einer zweiten Vertex B besteht, wobei der Graph G in einen Speicher durch eine erste Abbildung nach einem oder mehreren der vorhergehenden Ansprüche und durch eine zweite und dritte Abbildung nach einem oder mehreren der Ansprüche 3 oder 4 abgebildet ist, dadurch gekennzeichnet, daß jeweils die Indizes X (Bslndex) der ersten Abbildung, Y (Fwdlndex) der zweiten Abbildung und Z (Bwdlndex) der dritten Abbildung der Vertices A und B aus dem Speicher ausgelesen werden, und daß geprüft wird, ob die entsprechenden Indizes X, Y, Z der Vertices A und B jeweils in einem vorbestimmten Größenverhältnis zueinander stehen.
Verfahren zur Feststellung aller Vertices, die zu einem Pfad von einer Vertex A zu einer Vertex B in einem Graphen G gehören, wobei der Graph G in einen Speicher durch eine erste Abbildung nach einem oder mehreren der vorhergehenden Ansprüche und durch eine zweite und dritte Abbildung nach einem oder mehreren der Ansprüche 3 oder 4 abgebildet ist, dadurch gekennzeichnet, daß jeweils die Indizes X (Bslndex) der ersten Abbildung, Y (Fwdlndex) der zweiten Abbildung und Z (Bwdlndex) der dritten Abbildung der Vertices A und B aus dem Speicher ausgelesen werden. und daß alle Vertices des Graphen G, deren Indizes zwischen den Indizes der Vertices A und B liegen, festgestellt werden.
7. Verfahren zur Feststellung eines kürzesten Pfades. Pmin von einer Vertex A zu einer Vertex B eines Graphen G dadurch gekennzeichnet, daß das Verfahren nach Anspruch 5 oder 6 rekursiv angewendet wird.
8. Verfahren nach einem oder mehreren der vorhergehenden Ansprüche dadurch gekennzeichnet, daß der Graph G eine Abkürzung zwischen zweier seiner Vertices enthält und in die der Abkürzung entsprechende Kante des Graphen G eine Vertex eingeführt wird.
9. Verfahren zur Abbildung eines Graphen G in einen Speicher, dadurch gekennzeichnet, daß für jede Vertex Vi des Graphen G ein Trippel von Indizes in dem Speicher abgelegt wird und das Trippel von Indizes einer Vertex Vj zu dem entsprechenden Trippel von Indizes einer Vertex Vk genau dann in einem vorbestimmten Größenverhältnis steht, wenn es eine Beziehung in dem Graphen G zwischen den Vertices Vj und Vk gibt.
10. Verfahren zur graphischen Darstellung eines Graphen G dadurch gekennzeichnet, daß die durch ein Verfahren nach einem oder mehreren der vorhergehenden Ansprüche aufgefundenen Abbildungen des Graphen G zur Bestimmung der Koordinaten der Vertices des Graphen G dienen.
11. ComputerSystem mit Mitteln zur Ausführung eines Verfahrens nach einem oder mehrerer der vorhergehenden Ansprüche. 12. Speichermedium für ein Computersystem, dadurch gekennzeichnet, daß auf dem Speichermedium ein Computer-Programm zur Ausführung eines Verfahrens nach einem oder mehrerer der Ansprüche 1 bis 10 gespeichert ist, so daß bei Einfügung des Speichermediums in das Computersystem, ein Computersystem nach Anspruch 11 realisiert ist.
PCT/EP1995/001450 1995-04-18 1995-04-18 Abbildung eines graphen in einen speicher WO1996033470A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/EP1995/001450 WO1996033470A1 (de) 1995-04-18 1995-04-18 Abbildung eines graphen in einen speicher
US08/750,887 US5878407A (en) 1995-04-18 1995-04-18 Storage of a graph
DE19513960A DE19513960A1 (de) 1995-04-18 1995-04-18 Abbildung eines Graphen in einen Speicher

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/EP1995/001450 WO1996033470A1 (de) 1995-04-18 1995-04-18 Abbildung eines graphen in einen speicher
DE19513960A DE19513960A1 (de) 1995-04-18 1995-04-18 Abbildung eines Graphen in einen Speicher

Publications (1)

Publication Number Publication Date
WO1996033470A1 true WO1996033470A1 (de) 1996-10-24

Family

ID=8165992

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP1995/001450 WO1996033470A1 (de) 1995-04-18 1995-04-18 Abbildung eines graphen in einen speicher

Country Status (3)

Country Link
US (1) US5878407A (de)
DE (1) DE19513960A1 (de)
WO (1) WO1996033470A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636800B1 (en) 1997-10-27 2003-10-21 Siemens Aktiengesellschaft Method and device for computer assisted graph processing
US7269585B1 (en) * 1998-06-26 2007-09-11 Alexander James Burke User interface and search system for local and remote internet and other applications
US6665687B1 (en) 1998-06-26 2003-12-16 Alexander James Burke Composite user interface and search system for internet and multimedia applications
US7530050B2 (en) * 2000-03-14 2009-05-05 Fusionops Method and system for developing software using nodes
US8271541B2 (en) * 2004-03-31 2012-09-18 Fusionops Corporation Method and apparatus for developing composite applications
US7653651B1 (en) 2004-04-29 2010-01-26 Sap Ag System and method for transparent persistence management
US7469256B1 (en) 2004-04-29 2008-12-23 Sap Ag Cached persistent data management through state tracking
US7590639B1 (en) * 2004-04-29 2009-09-15 Sap Ag System and method for ordering a database flush sequence at transaction commit
US7296028B1 (en) 2004-04-30 2007-11-13 Sap Ag System and method for mapping object-oriented program code to a database layer
JP4712718B2 (ja) * 2004-10-01 2011-06-29 株式会社ターボデータラボラトリー 配列の生成方法、及び、配列生成プログラム
JP2007066125A (ja) * 2005-09-01 2007-03-15 Fumihiro Okabe グラフ探索アルゴリズム及びそれを用いたグラフ探索装置
US9807849B2 (en) * 2008-09-10 2017-10-31 Enlighted, Inc. Automatically commissioning lighting controls using sensing parameters of the lighting controls
US8161048B2 (en) * 2009-04-24 2012-04-17 At&T Intellectual Property I, L.P. Database analysis using clusters
US8676818B2 (en) * 2010-05-03 2014-03-18 International Business Machines Corporation Dynamic storage and retrieval of process graphs representative of business processes and extraction of formal process models therefrom
AT513301A2 (de) * 2012-09-06 2014-03-15 Helbok Guenther Computergestütztes Verfahren zur automatischen Zuweisung von Arbeitsaufgaben in einem Arbeitsablauf-Verwaltungs-System

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0586086A1 (de) * 1992-08-07 1994-03-09 AT&T Corp. Speichern von Bäumen in durchsteuerbarer Form

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163016A (en) * 1990-03-06 1992-11-10 At&T Bell Laboratories Analytical development and verification of control-intensive systems
US5257363A (en) * 1990-04-09 1993-10-26 Meta Software Corporation Computer-aided generation of programs modelling complex systems using colored petri nets
US5553206A (en) * 1993-02-12 1996-09-03 International Business Machines Corporation Method and system for producing mesh representations of objects
US5649165A (en) * 1995-01-31 1997-07-15 Fujitsu Limited Topology-based computer-aided design system for digital circuits and method thereof
US5630051A (en) * 1995-03-06 1997-05-13 Motorola Inc. Method and apparatus for merging hierarchical test subsequence and finite state machine (FSM) model graphs
US5555270A (en) * 1995-03-13 1996-09-10 Motorola Inc. Method and apparatus for constructing unique input/output sequence (UIO) sets utilizing transition distinctness measurements

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0586086A1 (de) * 1992-08-07 1994-03-09 AT&T Corp. Speichern von Bäumen in durchsteuerbarer Form

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DAS ET AL: "cost-optimal parallel algorithms for traversing trees", IEEE PROCEEDINGS OF THE SOUTHEASTCON, 1991, pages 474 - 478 *
JACOBSON: "space-efficient static trees and graphs", 30TH ANNUAL SYMPOSIUM ON FOUNDATIONS OF COMPUTER SCIENCE, 30 October 1989 (1989-10-30), US, pages 549 - 554 *

Also Published As

Publication number Publication date
US5878407A (en) 1999-03-02
DE19513960A1 (de) 1996-10-24

Similar Documents

Publication Publication Date Title
DE69535098T2 (de) Verfahren und -vorrichtung zur Suche von Bildern in einer Datenbank
DE19860061B4 (de) System zur Prüfung der kombinatorischen Äquivalenz
DE68926849T2 (de) Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank
DE3855706T2 (de) Automatisierte Rechnung von Materialien
DE69031758T2 (de) Verfahren zur Organisation von und zum Zugriff auf Produkt beschreibenden Daten in Zusammenhang mit einem technischen Prozess
WO1996033470A1 (de) Abbildung eines graphen in einen speicher
DE112016005536T5 (de) Bestimmen von reihenfolgen einer ausführung eines neuronalen netzes
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses
DE19612016A1 (de) Verfahren zur rechnergestützten Geometriemodellierung
DE2909153A1 (de) Einrichtung zur elektronischen verarbeitung von bild- und/oder zeichenmustern
DE2801536A1 (de) Zeichenerkennungsvorrichtung
DE4303071A1 (de) Verfahren und Vorrichtung zur Randbewertung in einer Nicht-Mannigfaltigkeits-Umgebung
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
EP3970113A1 (de) Bestimmung eines verschleissgrades eines werkzeugs
DE3855494T2 (de) Abfragevorrichtung und -methode
DE19630927A1 (de) Verfahren zur Berechnung einer Störlast in einer integrierten Halbleiterschaltung
DE10032322A1 (de) System und Verfahren zur Auffindung der Kombination aus Operation/Werkzeug, welche den integrierten Ausfall in einer Halbleiterfertigungseinrichtung verursacht
DE102020211679A1 (de) Computer-implementiertes system und verfahren mit einem digitalen zwilling und einer graphen-basierten struktur
EP2854045A1 (de) Verfahren und System zum Bewerten von erhobenen Messwerten eines Systems
DE2901683A1 (de) Einrichtung zum pruefen von abstaenden zwischen objekten in einem zweidimensionalen quantisierten bild
EP2021952A1 (de) Verfahren zum steuern eines relationalen datenbanksystems
EP1038259B1 (de) Vorrichtung zur bilderfassung
EP1154369A2 (de) Verfahren zur zyklischen, interaktiven Bildanalyse sowie Computersystem und Computerprogramm zur Ausführung des Verfahrens
DE10151250A1 (de) Verfahren zur Ermittlung eines komplexen Korrelationsmusters aus Verfahrens- und Anlagendaten
DE10111831A1 (de) Verfahren zum automatischen Suchen und Sortieren von Fehlersignaturen von Wafern

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

WWE Wipo information: entry into national phase

Ref document number: 08750887

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase