-
Hintergrund der Erfindung
-
Die
vorliegende Erfindung richtet sich auf ein System zum Finden eines
Pfades.
-
Beschreibung der verwandten
Technik
-
Computer
haben die Idee vom Aufbau von Systemen für vertiefende Studien und für den Einsatz
dieser Systeme revolutioniert. Ein Beispiel dafür ist der Aufbau eines Systems
als Netzwerk. Ganz allgemein wird ein Netzwerk als etwas definiert,
das eine Anzahl von Pfaden enthält,
die miteinander verbunden sind oder sich verzweigen. Viele Systeme,
in denen Entscheidungen getroffen werden müssen, können als Netzwerk aufgebaut
sein. Beispielsweise kann ein Fertigungsprozess oder ein System
zur Anwendung einer medizinischen Behandlung als ein Netzwerk aus
Entscheidungspunkten und Tätigkeiten
zwischen Entscheidungspunkten ausgelegt sein. Dieses Netzwerk kann
in elektronischer Form dargestellt sein und auf einem prozessorlesbaren
Speichermedium gespeichert werden, so dass Software hergestellt
werden kann, um das Netzwerkmodell zu studieren oder das System
zu benutzen.
-
Ein
weiteres Beispiel dafür,
dass ein Netzwerk, das in elektronischer Form gespeichert werden
kann, von Nutzen ist, ist die elektronische Karte, die auf die Geographie
bezogene elektronische Daten enthält, die ein physisches, soziales
oder ökonomisches
System quantifizieren. Der in einer elektronischen Karte enthaltene
Informationsbereich ist unbegrenzt. Eine elektronische Karte von
Straßen
könnte
beispielsweise Entfernungen zwischen Elementen, Reisezeit, Grundstücksnummern,
Informationen über
Steuern, Touristen-Informationen, Bearbeitungszeit, Wartezeit usw.
enthalten. Außerdem
ermöglicht
das Speichern einer Karte als eine Datei im Computer die unbegrenzte
Software-Anwendung, für
eine Bearbeitung dieser Daten.
-
Ein
Vorteil der elektronischen Karte liegt darin, dass Kosten bzw. Aufwand,
die den unterschiedlichen Kartenabschnitten zuzuordnen sind, gespeichert
und bestimmt werden können.
Kosten sind eine Variable, die minimiert oder maximiert werden kann.
Dabei ist zu bemerken, dass Kosten nicht notwendigerweise monetäre Kosten
sind. Üblicherweise
werden Kosten bzw. wird Aufwand als ganze Zahl dargestellt. Manchmal
werden sie als reelle Zahl oder als nicht standartisierte Zahl dargestellt.
Zusätzliche
Informationen über
Kosten und nicht standartisierte Zahlen können der U.S. Patentanmeldung
mit der Seriennummer 08/756.263 und dem Titel „Using Multiple Levels of
Costs For A Pathfinding Computation", angemeldet am 25. November 1996, entnommen
werden. Beispiele für
Kosten bzw. Aufwand sind Zeit, Entfernung, Mautabgaben, Möglichkeiten
des Abbiegens, Qualität
der Landschaft usw.
-
Elektronische
Karten können
ebenso wie andere Netzwerke zum Finden von Pfaden verwendet werden;
dabei handelt es sich um ein Verfahren zum Errechnen einer Route
zwischen einem Start und einem Ziel. Einige Systeme errechnen empfohlene
Routen und führen
den Fahrer, indem die empfohlene Route auf einer Kartenanzeige herausgehoben
angezeigt wird oder indem nacheinander Anweisungen (per Papier oder
Bildschirmanzeige) für
jedes Abbiegemanöver
gegeben werden oder beides angeboten wird.
-
Wenn
ein Routenplanersystem eine empfohlene Route an ein Ziel errechnet,
dann findet es die nach spezifizierten Kriterien wünschenswerte
Route heraus. Diese Kriterien können
vom Fahrer spezifiziert oder als Vorbelegung bei der Fertigung eingestellt
werden. Häufig
wird ein System verwendet, das einen Pfad finden soll, der einen
bestimmten Aufwand, beispielsweise Fahrzeit, minimiert (oder maximiert).
-
Eine
elektronische Karte, die zur Pfadsuche eingesetzt wird, muss Informationen über Straßenverbindungen
innerhalb eines Straßennetzes
enthalten, das heißt
Informationen darüber,
ob und wie Straßen-
oder Fahrwegabschnitte miteinander zu verbinden sind, wo zum Beispiel
normale Kreuzungen, wo Überführungen, wo
eingeschränkte
Abbiegemöglichkeiten
vorhanden sind. Dies bedeutet für
einen Bereich von auch nur einigermaßen bedeutendem Ausmaß eine sehr
große
Informationsmenge. Eine elektronische Karte kann mehrere zehn oder
Hunderte von Megabytes Daten enthalten. Um so riesige Mengen von
Daten ökonomisch
vertretbar zu halten und dem Benutzer zu ermöglichen, die Karten mit neu überarbeiteten
Ausgaben ohne Schwierigkeiten zu ersetzen, benutzen derzeit ver wendete
Routenplanergeräte
(die AlLzweck-Computer mit Routenplaner-Software, Navigationssysteme für Automobile
oder andere Kartenanwendungsausrüstung
umfassen) CD-ROMs zum Speichern der Daten der elektronischen Karte.
-
Obgleich
auf CD-ROMs viele Daten gespeichert werden können, ist der Zugang zu diesen
Daten vergleichsweise langsam. Wenn ein Routenplanersystem jedes
Mal, wenn es Daten benötigt,
auf den Zugriff zur CD-ROM warten muss, wird die für die Errechnung
eines Pfades benötigte
Zeit für
den Benutzer inakzeptabel lang. Der Benutzer eines in einem Auto
gespeicherten Navigationssystems würde üblicherweise eine sehr schnelle
Ansprechzeit erwarten, wenn er einen Pfad anfordert, weil der zu
dem Zeitpunkt das Auto fahrende Benutzer wissen muss, wo er abbiegen
soll. Aus diesen Gründen
ist es sehr wichtig, die Zahl der Disk-Zugriffe, die zum Errechnen eines Pfades
erforderlich sind, auf eine Mindestzahl zu verringern. Es wird angemerkt,
dass einige Systeme andere Peripheriegeräte als CD-ROMs verwenden, zum
Beispiel Festplatten, Floppy-Disks, Festkörperspeicher, DVDs, Mini-Disks
usw. Diese weiteren Speichervorrichtungen leiden unter ähnlichen
Zugriffzeitbegrenzungen.
-
Ein
Versuch, die für
das Errechnen eine Pfades erforderliche Anzahl von Disk-Zugriffen zu minimieren, ist
unter anderem das Zusammenfassen von Kartendaten zu Gruppen, d.h.
das Gruppieren von Informationen über Sätze von Straßenabschnitten,
die oft für
die gleiche Pfadbestimmung verwendet werden, auf einer CD-ROM (oder
einem anderen Speichermedium). Zum Beispiel können eine Anzahl von aufeinander
folgenden Abschnitten derselben Straße, Überlandstraßenabschnitte, die einander
kreuzen, oder Überlandstraßenabschnitte,
die zu einer Autobahn führen,
in einer einzigen Gruppe gespeichert sein. Dabei ist anzumerken, dass
diese Gruppen nicht notwendigerweise auf geographischen Gegebenheiten
basieren müssen.
Informationen über
Straßen
entlang der beiden Ufer eines Flusses in einem Bereich, der über eine
weite Strecke ohne Brücke
ist, würde
wahrscheinlich nicht in derselben Gruppe gespeichert sein, da die
Straßen
bei einer Pfad-Errechnung nicht zueinander in Verbindung gebracht
würden,
obwohl sie geographisch gesehen ziemlich nah beieinander liegen.
Informationen über
Autobahnen, die sich über
große
Bereiche erstrecken, wären
gute Kandidaten für
ein gemeinsames Speichern in einer Gruppe, weil die Berechnungen
für einen
Pfad üblicherweise die
Verbindungen von Autobahnen mit anderen Autobahnen erkundet. Es
gibt viele Möglichkeiten,
Daten zur Leistungsverbesserung zusammenzufassen. Wird das Gruppieren
mit einem geeigneten Cache-Verfahren
angewendet, wird Zeit beim Finden eines Pfades eingespart, weil
die zur Errechnung des Pfades erforderlichen Informationen häufig bereits
im Cache vorhanden sind, von wo sie als Teil einer Gruppe, die bereits
verwendete Daten enthält,
ausgelesen wurden. Weitere Informationen über die Verwendung einer Cache-Strategie
ist aus der U.S. Patentanmeldung mit der Seriennummer 08/802.733
und dem Titel „Caching
For Pathfinding Computation",
angemeldet am 20. Februar 1997, zu entnehmen.
-
Das
Finden eines Pfades bleibt selbst bei Verwendung eines Cache ein
langwieriger Prozess. Jede für
das Errechnen verwendete Datengruppe muss mindestens einmal gelesen
werden. Da möglicherweise beim
Errechnen eines zu findenden Pfades zu Beginn und während des
Rechenprozesses eine große
Anzahl von Datengruppen zu lesen sind, dauert es für den Benutzer
eines Routenplanergerätes
immer noch ziemlich lange, bis das Gerät alle diesbezüglichen
Daten gelesen hat, bevor der Pfad errechnet wird.
-
Ein
weiterer Versuch zu Beschleunigung des Pfadfindungsprozesses ist
die Vorausberechnung bestimmter Pfade in einem Netz oder einer Karte.
Um einen Pfad von einem Startort zu einem Zielort zu finden, würde ein
System einen geeigneten vorausberechneten Pfad aussuchen, einen
Pfad vom Start zu dem vorausberechneten Pfad finden und einen Pfad
vom vorausberechneten Pfad zum Ziel finden. Eine weiter gehende
Erörterung
der Verwendung von vorausberechneten Pfaden ist in der U.S. Patentanmeldung
mit der Seriennummer 08/756.258 und dem Titel „Method For Determining Exits
and Entrances For A Region In A Network", angemeldet am 25. November 1996, zu
finden. Obgleich die Verwendung eines vorausberechneten Pfades den
Findungsprozess für
einen Pfad schneller macht, wird immer noch viel Bearbeitungszeit
benötigt, um
einen Pfad von einem Startort zu einem vorausberechneten Pfad und
von dem vorausberechneten Pfad zu einem Ziel zu finden.
-
Aus
dem Grunde wird ein System benötigt,
das den Zeitaufwand für
die Durchführung
eines Pfadfindungsvorgangs verringert.
-
Zusammenfassung der Erfindung
-
Nach
einem ersten Aspekt der vorliegenden Erfindung wird ein Verfahren
für die
Verwendung eines Prozessors zum Bestimmen eines Pfades in einer
elektronischen Übersichtskarte
geschaffen, wie dies im Anspruch 1 beansprucht wird.
-
Nach
einem zweiten Aspekt der vorliegenden Erfindung wird ein von einem
Prozessor lesbares Speichermedium geschaffen, wie es in Anspruch
14 beansprucht wird.
-
Nach
einem dritten Aspekt der vorliegenden Erfindung wird ein Gerät zum Bestimmen
eines Pfades in einer elektronischen Übersichtskarte geschaffen,
wie dies in Anspruch 22 beansprucht wird.
-
Eine
bevorzugte Ausführungsform
der Erfindung schafft, kurz gesagt, ein System zum Bestimmen eines
Pfades in einer von einem Prozessor lesbaren Darstellung eines Netzwerkes.
Der Pfad geht von einem Start zu einem Ziel. Das Netz und/oder die
prozessorlesbare Darstellung des Netzes enthält eine oder mehrere Kacheln.
Zu einem Verfahren zum Errechnen des Pfades gehört das Feststellen, ob der
Startort und der Zielort sich innerhalb einer einzigen Kachel befinden
und/oder ob der Startort und der Zielort sich innerhalb von Kacheln
befinden, die sich innerhalb einer Kurz-Entfernung-Schwelle voneinander
befinden. Mit einem Prozessor wird eine zweite Pfadsuche zum Bestimmen
des Pfades durchgeführt,
bei der eine Startkachel und ein erstes eigenes Netz, das der Startkachel
zugeordnet ist, verwendet werden. Die zweite Pfadsuche wird nur
durchgeführt,
wenn Start und Ziel sich in einer einzigen Kachel befinden. Eine
dritte Pfadsuche wird unter Verwendung eines Prozessors durchgeführt, um
den Pfad zu bestimmen; dazu wird die Startkachel, das erste eigene
Netz, eine Zielkachel, ein zweites, der Zielkachel zugeordnetes
eigenes Netz und ein Zu-Nahe-Netz verwendet. Die dritte Pfadsuche
wird nur dann durchgeführt,
wenn Start und Ziel sich in getrennten Kacheln befinden und die getrennten
Kacheln sich innerhalb einer Kurz-Entfernung-Schwelle voneinander befinden.
Eine erste Pfadsuche wird unter Verwendung eines Prozessors durchgeführt, um
den Pfad zu bestimmen, und dazu wird die Startkachel, das erste
eigene Netz, ein erstes, der Startkachel zugeordnetes Umgebungsnetz,
die Zielkachel, das zweite eigene Netz, ein zweites, der Zielkachel
zugeordnetes Umgebungsnetz und ein Ausgang-zum-Eingang Netz verwendet.
Die erste Pfadsuche wird nur dann durchgeführt, wenn der Startort und
der Zielort sich in getrennten Kacheln befinden, die sich nicht
innerhalb der Kurz-Entfernung-Schwelle voneinander befinden. Obwohl
drei Pfadsuchvorgänge
angegeben wurden, erfordert das Finden eines besonderen Pfades vom
Start zum Ziel im allgemeinen nur die Durchführung einer der drei Pfadsuchvorgänge. Nachdem
ein Pfad bestimmt wurde, gibt das System den Pfad an. Ein solcher
Bericht über
einen Pfad könnte
die abschnittweisen Anweisungen enthalten oder es könnte eine
Route auf einer Karte in herausgehobener Darstellung angezeigt werden.
Eine solche Angabe kann auf einem Bildschirm oder auf Papier erscheinen.
Das Berichten kann ebenfalls die Angaben über den Pfad oder die entsprechenden
Anweisungen als Audio-Ausgabe enthalten, das Überstellen einer Datei für ein weiteres
Verfahren, das Bereitstellen eines Zeigers auf eine Datei, das Bereitstellen von
Informationen für
einen weiteren Prozessor oder Computer oder jedes andere geeignete
berichtende Verfahren umfassen.
-
Mit
der Verwendung von zugeordneten Netzen und Kacheln wird die zum
Errechnen eines Pfades (einschließlich der für den Zugriff zu Daten erforderlichen
Zeit) benötigte
Zeit bedeutend verkürzt.
-
Die
bevorzugten Ausführungsformen
der vorliegenden Erfindung können
unter Verwendung von Software, Hardware oder einer Kombination von
Software und Hardware implementiert werden. Wenn alle Abschnitte
der bevorzugten Ausführungsformen
in Software ausgeführt
sind, kann diese Software auf einem prozessorlesbaren Speichermedium
untergebracht sein. Beispiele geeigneter prozessorlesbarer Speichermedien sind
unter anderem eine oder mehrere Floppy Disks, Festplatten, CD-ROMs,
Speicherchips usw. Wenn das System Hardware enthält, dann kann die Hardware
ein Ausgabegerät
(z.B. einen Monitor), ein Eingabegerät (z.B. ein Tastenfeld oder
ein Zeige-Gerät),
einen Prozessor, der mit dem Ausgabegerät in Verbindung steht, und
ein prozessorlesbares Speichermedium enthalten, das mit dem Prozessor
in Verbindung steht. Auf dem prozessorlesbaren Speichermedium sind
Codes gespeichert, die in der Lage sind, den Prozessor so zu programmieren,
dass er die Schritte zur Durchführung
der vorliegenden Erfindung ausführt.
Der Pfadsuchprozess nach den bevorzugten Ausführungsformen kann ebenfalls
in einer Web-Seite des Internets oder in einem Server implementiert
sein, der mit einer Mehrzahl von Kundenmaschinen kommuniziert.
-
Diese
und andere Aufgaben und Vorteile der Erfindung werden mit der nachfolgenden
detaillierten Beschreibung verdeutlicht, mit der die bevorzugte
Ausführungsform
der Erfindung mit Bezug auf die Zeichnungen beschrieben wird.
-
Kurzbeschreibung der Zeichnungen
-
1 ist
ein Blockdiagramm einer exemplarischen Hardware-Architektur, die
zur Durchführung
der vorliegenden Erfindung verwendet werden kann.
-
2A ist
ein Beispiel für
einen gerichteten Graph als Teil einer elektronischen Karte.
-
2B ist
ein zweites Beispiel für
einen gerichteten Graph als Teil einer elektronischen Karte.
-
3 ist
ein Beispiel für
ein Netzwerk.
-
4 ist
ein Flussdiagramm zur Darstellung eines ersten Verfahrens zur Durchführung einer
Pfadsuche.
-
5 ist
ein Flussdiagramm zur Darstellung eines zweiten Verfahrens zur Durchführung einer
Pfadsuche.
-
6 gibt
ein Beispiel für
die Aufteilung des Netzwerks nach 3 in Kacheln.
-
7 stellt
ein Ausgang-zum-Eingang Netz dar.
-
8 stellt
ein Umgebungsnetz dar.
-
9 stellt
ein eigenes Netz dar.
-
10 stellt
ein Zu-Nahe-Netz dar.
-
11 ist
ein Flussdiagramm zur Beschreibung eines Verfahrens, mit dem Ausgangsknoten
bestimmt werden können.
-
12 ist
ein Flussdiagramm zur Beschreibung eines Verfahrens zur Herstellung
eines Umgebungsnetzes.
-
13 ist
ein Flussdiagramm zur Beschreibung eines Verfahrens zum Bestimmen
eines Pfades.
-
14 ist
ein Flussdiagramm zur Beschreibung des Schrittes 456 in 13.
-
15 ist
ein Flussdiagramm zur Beschreibung des Schrittes 462 der 13.
-
16 ist
ein Flussdiagramm zur Beschreibung des Schrittes 460 der 13.
-
Detaillierte Beschreibung
-
Das
System zum Finden eines Pfades kann in Hardware und/oder Software
ausgeführt
sein. Eine Ausführung
des Systems zum Finden eines Pfades kann einen für diesen Zweck geeigneten Prozessor
einschließlich
Prozessorinstruktionen zum Ausführen
der nachfolgend beschriebenen Funktionen enthalten. Es können auch
Schaltungen für
die Durchführung
der hier beschriebenen Funktionen entwickelt werden. In einer Ausführungsform
ist das System zum Finden eines Pfades ein Teil eines Pfadsuchsystems.
Das Pfadsuchsystem kann ein Allzweck-Computer mit Pfadsuch-Software oder
ein Navigationssystem sein. Beispiele für Navigationssysteme sind beschrieben
in dem U.S. Patent Nr. 4.796.191 „Vehicle Navigation System
and Method", in dem
U.S. Patent Nr. 4.914.605 „Map
Display Apparatus and Method",
in dem U.S. Patent Nr. 5.311.195 „Combined Relative and Absolute
Positioning Method and Apparatus" und
in der U.S. Patentanmeldung mit der Seriennummer 08/747.161 „Navigation
System Using GPS Data".
In einer weiteren Ausführungsform
enthält
das System zum Finden eines Pfades eine Mehrzahl von durch einen
Computer auszuführenden
Instruktionen zur Implementierung in einem Allzweck-Computersystem.
Bevor die Software in ein Allzweck-Computersystem geladen wird,
kann sie als kodierte Information auf einem computerlesbaren Medium
wie einer magnetischen Floppy-Disk, einem Magnetband und einer kompakten
Disk mit nur lesbarem Speicher (CD-ROM) vorhanden sein.
-
1 stellt
ein vereinfachtes Blockdiagramm eines Allzweck-Computersystems dar,
mit dem das System nach der vorliegenden Erfindung zum Finden eines
Pfades durchgeführt
werden kann. Ein Computersystem 10 enthält eine Prozessoreinheit 12 und
einen Hauptspeicher 14. Die Prozessoreinheit 12 kann
einen einzigen Mikroprozessor enthalten oder sie kann eine Mehrzahl
von Mikroprozessoren zur Konfiguration des Computersystems 10 als
Multi-Prozessorsystem enthalten. Der Hauptspeicher 14 speichert
teilweise Instruktionen und Daten, die von der Prozessoreinheit 12 auszuführen sind.
Wenn das System zum Finden eines Pfades nach der vorliegenden Erfindung
vollständig
oder teilweise in Software ausgeführt ist, dann speichert der Hauptspeicher
im Betrieb den auszuführenden
Code. Der Hauptspeicher 14 kann Bänke von Dynamischen Random-Access-Speichern
(DRAM) sowie Hochgeschwindigkeits-Cache-Speicher enthalten.
-
Das
Computersystem 10 enthält
ferner einen Massenspeicher 16, Peripheriegeräte) 18,
Eingabeeinrichtung(en) 20, tragbare(s) Speicherlaufwerk(e) 22,
ein graphisches Subsystem 24 und eine Ausgabeanzeige 26.
Der Einfachheit halber sind die Komponenten des Computersystems 10 in 1 so
dargestellt, dass sie über
einen einzigen Bus 28 verbunden sind. Das Computersystem 10 kann
jedoch über
einen oder mehrere Datenübertragungsmittel
verbunden sein. So können
zum Beispiel die Prozessoreinheit 12 und der Hauptspeicher 14 über einen
lokalen Mikroprozessorbus verbunden sein und die Massenspeicher 16,
Peripheriegeräte) 18,
die tragbaren Speicherlaufwerke 22 bzw. das tragbare Speicherlaufwerk 22,
das graphische Subsystem 24 über einen oder mehrere Eingang-/Ausgang
(I/O) Busse. Der Massenspeicher 16, der als Magnetplattenlaufwerk
oder als ein Optikplattenantrieb ausgeführt sein kann, ist eine Permanentspeichereinrichtung
zum Speichern von Daten und Anweisungen, die von der Prozessoreinheit 12 verwendet
werden. In einer Ausführungsform
speichert die Massenspeichereinrichtung 16 die System-Software
zum Bestimmen eines Pfades zum Zwecke des Ladens des Hauptspeichers 14.
-
Das
tragbare Speicherlaufwerk 22 arbeitet mit einem tragbaren
Permanentspeichermedium zusammen, beispielsweise einer Floppy Disk,
um Daten und Codes in ein Computersystem 10 ein- und auszugeben. In
einer Ausführungsform
wird die System-Software zum Bestimmen eines Pfades auf einem solchen
tragbaren Medium gespeichert und wird in das Computersystem 10 über ein
tragbares Speicherlaufwerk 22 geladen. Peripheriegeräte 18 können jede
Art von den Computer unterstützende
Einrichtungen sein, beispielsweise eine Eingang/Ausgang-Schnittstelle
(I/O-Schnittstelle), um das Computersystem 10 mit zusätzlichen
Funktionen auszurüsten.
Zum Beispiel können
die Peripheriegeräte 18 eine
Netzwerk-Schnittstellenkarte enthalten, um das Computersystem 10 an
ein Netzwerk, ein Modem usw. anzuschließen.
-
Eingabeeinrichtung(en) 20 stellen
einen Teil der Benutzerschnittstelle für einen Benutzer des Computersystems 10 dar.
Eingabeeinrichtung(en) 20 kann ein alpha-numerisches Tastenfeld
zum Eingeben alpha-numerischer und anderer einzutastender Informationen
sein oder eine Cursor-Steuereinrichtung wie eine Maus, ein Trackball,
ein Griffel oder Cursor-Richtungstasten. Um Informationen in Form
von Text und graphischen Informationen anzuzeigen, enthält das Computersystem 10 ein
Graphik-Subsystem 24 und die Ausgabe-Anzeigeeinrichtung 26.
Die Ausgabe-Anzeigeeinrichtung 26 kann eine Kathodenstrahlröhrenanzeige
(CRT-Anzeige), eine Flüssigkristallanzeige
(LCD) oder andere geeignete Anzeigeeinrichtungen enthalten. Das
Graphik-Subsystem 24 empfängt textliche und graphische
Informationen und bearbeitet die Informationen für die Ausgabe an die Ausgabe-Anzeigeeinrichtung 26.
Die Ausgabe-Anzeigeeinrichtung 26 kann dazu verwendet werden,
die Ergebnisse einer Pfadbestimmung zu berichten. Die im Computersystem 10 enthaltenen
Komponenten sind Bauelemente, wie sie üblicherweise in Universalrechnersystemen
enthalten sind und haben den Zweck, eine breite Auswahl solcher
Computerelemente darzustellen, wie sie im Stand der Technik verbreitet sind.
Das in 1 dargestellte System zeigt eine Plattform, die
für die
vorliegende Erfindung verwendet werden kann. Zahlreiche andere Plattformen
erfüllen
auch den Zweck, beispielsweise Plattformen auf Macintosh-Basis,
wie sie von Apple Computer, Inc. angeboten werden, Plattformen mit
unterschiedlichen Bus-Konfigurationen, Netzwerk-Plattformen, Multi-Prozessor-Plattformen,
andere Personalcomputer, Arbeitsstationen, Mainframe-Computer, Navigationssysteme
usw.
-
Die
vorliegende Erfindung ist auf ein System zum Auffinden eines Pfades
in einem Netzwerk gerichtet. Ein Beispiel eines für die Verwendung
mit der vorliegenden Erfindung geeigneten Netzwerkes ist eine elektronische
Straßenkarte.
Einzig um ein Beispiel zu beschreiben, wird die vorliegende Erfindung
auf der Grundlage einer elektronischen geographischen Karte diskutiert.
Die vorliegende Erfindung ist in keiner Weise auf die Verwendung
im Zusammenhang mit elektronischen geographischen Karten begrenzt,
und Ausführungsformen der
vorliegenden Erfindung können
mit allen Arten von prozessorlesbaren Darstellungen eines Netzes
verwendet werden.
-
Eine
elektronische Straßenkarte
wird in einer oder mehreren Computerdateien gespeichert, die die zum
Anfertigen der Karte erforderlichen Daten enthalten. Diese Daten
können
Angaben über
Längen-
und Breitendaten, Adressen, Entfernungen, Straßeninformationen, Wendebeschränkungen,
Fahrzeiten, Autobahnabfahrtsnummern, Beschreibungen der kommerziellen
Nutzung von Grundstücken
usw. enthalten. Obgleich die oben aufgeführten Informationen in einer
elektronischen Karte enthalten sein können, ist es möglich, eine
elektronische Karte mit nur einer Gruppe der oben aufgelisteten
Informationen oder mit anderen Informationen herzustellen. Die eine
elektronische Karte darstellenden Computerdateien werden auf einem
prozessorlesbaren Speichermedium gespeichert.
-
Im
allgemeinen enthält
eine elektronische Karte, die zum Finden eines Pfades verwendet
wird, einen Graphen. Ein Graph ist eine Ansammlung von Knoten und
Kanten. Knoten sind Objekte mit Eigenschaften und bezeichnen Entscheidungspunkte
des Graphen. Eine Kante ist eine Verbindung zwischen zwei Knoten.
Ein Pfad vom Knoten A zum Knoten B in einem Graph wird als eine
Liste von Knoten so beschrieben, dass von jedem Knoten in der Liste
zum nächsten
Knoten eine Kante vorhanden ist. Ein gerichteter Graph ist ein Graph, in
dem jeder Kante eine einzige Richtung zugeordnet ist. Zwischen einem
gegebenen Knotenpaar können
zwei Kanten vorhanden sein, eine Linie in jede Richtung. In einem
gerichteten Graph werden Kanten als Verbindungen bezeichnet. In
einem gewichteten Graph ist jeder Verbindung (oder Kante) ein Kosten-
bzw. Aufwandfaktor zugeordnet. Zu anderen möglichen Lösungen gehört die Zuordnung von Kosten
oder Aufwand zu den Knoten, zu den Knoten und Verbindungen oder
die Zuordnung zu anderen Elementen des Graphen. Als nicht gerichteter
Graph wird ein Graph bezeichnet, bei dem jede Verbindung für zwei Richtungen
gilt. Ein ungerichteter Graph kann als ein gerichteter Graph gedacht
werden, in dem jede Verbindung zwei Verbindungen mit denselben Endpunkten,
jedoch unterschiedlichen Richtungen darstellt.
-
2A enthält als Beispiel
einen gerichteten Graphen, der die Straße 50 als nach Osten
führende
Einbahnstraße
und die Straße 52 als
in zwei Richtungen zu befahrende Straße zeigt, die beide die in
zwei Richtungen zu befahrende Straße 54 kreuzen. Die
Straße 50 kreuzt
Straße 54 an
der Kreuzung 60. Straße 52 kreuzt
Straße 54 an
der Kreuzung 70. An der Kreuzung 60 sind zwei
Knoten vorhanden, 62 und 64. Der Kopf des Knotens
ist ein Kreis. Der hintere Teil des Knotens ist eine gerade Linie.
Der Kreis stellt dar, wo der Knoten sich befindet, und die hintere
Linie, von wo ein Reisender sich dem Knoten nähert. Das Knotensymbol ist
der Übersichtlichkeit
halber von der tatsächlichen
Kreuzung entfernt angegeben. Zum Beispiel stellt der Knoten 62 auf
der Straße 54 die
nach Norden gerichtete Fahrtrichtung auf die Kreuzung 60 zu
dar. Der Knoten 64 stellt die Fahrtrichtung nach Osten
auf der Straße 50 in
Richtung der Kreuzung 60 dar. An der Kreuzung 60 ist
kein Knoten, der die Fahrtrichtung in westlicher Richtung auf Straße 50 darstellt,
weil diese Straße 50 eine
nach Osten führende
Einbahnstraße
ist. Ein Fahrer, der auf der Straße 54 in Richtung
Norden unterwegs ist und die Kreuzung 60 erreicht, kann
also nur nach rechts abbiegen. Der Knoten 72 stellt dar,
dass man auf der Straße 54 auf
der Fahrt nach Süden
die Kreuzung 70 erreicht. Der Knoten 74 stellt
dar, dass man auf der Straße 52 auf
der Fahrt nach Osten die Kreuzung 70 erreicht. Der Knoten 76 stellt
dar, dass man auf der Fahrt nach Westen auf der Straße 52 die
Kreuzung 70 erreicht.
-
Verbindungen
stellen einen Pfad zwischen Knoten dar. Vom Knoten 64 kann
ein Fahrer beispielsweise auf der Kreuzung 60 nach rechts
abbiegen und in die Straße 54 einbiegen,
oder er kann geradeaus auf der Straße 50 weiterfahren.
Die Verbindung 86 stellt dar, dass die Fahrt an Kreuzung 60 auf
der Straße 50 nach Osten
beginnt, dass an der Kreuzung 60 nach rechts abgebogen
wird und auf Straße 54 nach
Süden weitergefahren
wird. Die Verbindung 86 verbindet also Knoten 64 mit
Knoten 72. Die Verbindung 88 verbindet Knoten 64 mit
dem nächsten
Knoten auf der Straße 50 (in 2A nicht
enthalten) und stellt eine Fahrt nach Osten entlang der Straße 50 dar,
die über
die Kreuzung 60 geradeaus weiterführt, ohne abzubiegen. Die Verbindung 89 stellt
eine Fahrt dar, die an der Kreuzung 60 auf der Straße 54 nach
Norden beginnt, die an der Kreuzung 60 nach rechts abbiegt
und auf Straße 50 nach
Osten weiterführt;
die Verbindung 89 verbindet also Knoten 62 mit
dem nächsten
Knoten auf Straße 50 (in 2A nicht
enthalten). In 2A sind nur Verbindungen für die Knoten 62 und 64 gezogen.
Wenn für
alle Knoten Verbindungen eingefügt
würden,
enthielte der gerichtete Graph zu viele Aufzeichnungen und wäre nur schwer
zu lesen. Deshalb ist der gerichtete Graph vereinfacht und wird
wie in 2B wiedergegeben.
-
In 2B sind
alle Knoten an derselben Kreuzung in einem Knoten zusammengefasst,
um die nachfolgende Erklärung
einfacher halten zu können.
(In der Praxis kann für
die vorliegende Erfindung ein Graph ähnlich der 2A oder
der 2B verwendet werden.) Der Knoten 100 stellt
also die Knoten 64 und 62 dar. Der Knoten 102 stellt
die Knoten 72, 74 und 76 dar. Es wird
darauf hingewiesen, dass der Schwanz der Knoten nicht gezeichnet
ist. Die Verbindungen werden verwendet, um Richtungen erlaubter
Fahrt anzuzeigen. Die Verbindung 104 zeigt die Fahrt von
der Kreuzung 70 zur Kreuzung 60 und Verbindung 106 die
Fahrt von der Kreuzung 60 zur Kreuzung 70 an.
-
Die
gerichtete Graph in 2B dient dem symbolischen Verständnis der
auf einem prozessorlesbaren Speichermedium gespeicherten Datenstruktur.
Ein prozessorlesbares Speichermedium speichert nicht tatsächlich ein
Abbild eines gerichteten Graphen. Es wird eher eine Datenstruktur
gespeichert. Jeder Eintrag in die Datenstruktur stellt einen Knoten
dar. Für
jeden Knoten speichert die Datenstruktur den Ort des Knotens (beispielsweise
Längen-
und Breitenangaben), eine Liste benachbarter Knoten (Knoten, die über eine
Verbindung angefahren werden können)
und unterschiedliche Kosten bzw. den Aufwand, der mit dem Erreichen
des benachbarten Knotens verbunden ist. Es ist beabsichtigt, dass
die vorliegende Erfindung mit vielen geeigneten Datenstrukturen
arbeitet, die sich von der hier beschriebenen unterscheiden. Außerdem muss
die Erfindung nicht mit einem gerichteten Graphen verwendet werden.
Die vorliegende Erfindung kann mit der gesamten Datenbasis für die Karte,
mit anderen Netzwerken oder mit jedem anderen geeigneten untergeordneten
Satz von Informationen verwendet werden. Außerdem können ein oder mehr Einträge der Datenstruktur
zu einem Daten-Cluster bzw. einer Datengruppe zusammengefasst werden.
Eine Datengruppe ist eine Zusammenfassung aufeinander bezogener
Daten. Obwohl solche Datengruppen die Leistungsfähigkeit verbessern, kann die
vorliegende Erfindung ohne Datengruppierungen oder Daten-Cluster
verwendet werden.
-
In 3 ist
ein gerichteter Graph für
einen Abschnitt einer prozessorlesbaren Darstellung eines Netzwerkes,
beispielsweise einer elektronischen Karte, dargestellt. Der gerichtete
Graph in 3 enthält zehn Knoten (A, B, C, D,
E, F, G, H, I und O) sowie verschiedene Verbindungen zwischen den
Knoten. Jede Verbindung enthält
eine neben die Verbindung gesetzte Zahl. Diese Zahl stellt den Aufwand
für eine
Fahrt entlang dieser Verbindung dar. Um ein Beispiel zu nennen sei
angenommen, bei dem Aufwand handele es sich um die Fahrzeit. Um
die hier besprochene Erfindung besser zu erläutern, sei angenommen, dass
das Auto eines Fahrers mit einem Navigationssystem für Automobile
ausgerüstet
ist, das die Pfadsuche durchführt.
Der Fahrer befindet sich irgendwo in dem gerichteten Graphen der 3 und
entscheidet sich an irgendeinem Punkt, das Navigationssystem einen
Pfad von einem Ort zu einem anderen berechnen zu lassen. Um zu erklären, wie
ein Pfad berechnet wird, sei angenommen, dass der Fahrer das System
beauftragt, einen Pfad vom Start O zum Ziel D zu berechnen. Zu dem
Zeitpunkt, wo der Fahrer nach dem Pfad fragt, kann er sich am Start
O befinden, kann an einem anderen Ort in dem Graphen mit Fahrtrichtung
auf Start O sein oder kann sich irgendwo, überhaupt nicht in der Nähe des Starts
O, befinden, sich jedoch für
den Pfad interessieren.
-
4 ist
ein Flussdiagramm, das den Pfadsuchvorgang erklärt. Der Pfadsuchvorgang nach 4 ist lediglich
eines von vielen Suchverfahren, die mit der vorliegenden Erfindung
einsetzbar sind. Bei Schritt 202 initialisiert das System
den Pfadsuchvorgang. Das bedeutet, dass das System den Start und
das Ziel des Pfades speichert und zwei Schlangen aufbaut: eine Start-Prioritätsschlange
und eine Ziel-Prioritätsschlange.
Die Start-Prioritätsschlange
besteht aus einer geordneten Liste von Knoten, wobei für jeden
von ihnen ein Pfad vom Start aus bekannt ist, und aus einem Schlüssel für jeden
Knoten. Die Schlange wird ent sprechend dem Schlüssel geordnet. Es gibt unterschiedliche
Möglichkeiten,
den Schlüssel
zu bestimmen. Eine Möglichkeit
besteht darin, dass der Schlüssel
aus dem geringsten bekannten Aufwand für eine Fahrt vom Start zum
Knoten besteht. Ein ebenfalls möglicher
Schlüssel
enthält
die Summe des geringsten bekannten Aufwandes vom Start zum Knoten
plus eines geschätzten
Aufwandes für
eine Fahrt vom Knoten zum Ziel. Für das Verfahren der Schätzung des
Aufwandes für
eine Fahrt vom Knoten zum Ziel sind unterschiedliche Verfahren geeignet.
Ein Beispiel enthält
die Multiplikation der direkten Luftlinienentfernung mit dem geschätzten Aufwand
pro Entfernungseinheit. Das heißt,
die Knoten und Verbindungen werden außer acht gelassen, die physische
Entfernung zwischen dem Knoten und dem Ziel wird bestimmt, und diese
Entfernung wird mit einem geschätzten
Aufwand pro Entfernungseinheit multipliziert.
-
Die
Ziel-Prioritätsschlange
besteht aus einer geordneten Liste von Knoten, wobei für jeden
von ihnen ein Pfad zum Ziel bekannt ist, und aus einem Schlüssel für jeden
Knoten. Die Schlange wird entsprechend dem Schlüssel geordnet. Es gibt viele
Möglichkeiten,
einen Zielschlüssel
zu bestimmen. Eine Möglichkeit
enthält die
Bestimmung des geringsten bekannten Aufwandes für den Pfad vom Knoten zum Ziel.
Ein ebenfalls möglicher
Schlüssel
enthält
die Verwendung der Summe des geringsten Aufwandes vom Knoten zum
Ziel plus eines geschätzten
Aufwandes vom Start zum Knoten. Der oben für die Start-Prioritätsschlage
beschriebene Schlüssel,
der den übrigen
geschätzten
Aufwand einbezieht, erzeugt eine Suche vom Start aus, die eine besondere
Tendenz in Richtung des Zieles hat. Auf ähnliche Weise hat eine Suche
vom Ziel aus eine Tendenz in Richtung des Starts. Andere Verfahren
zur Berechnung eines Schlüssels
sind innerhalb des Bereiches der vorliegenden Erfindung ebenfalls
geeignet.
-
Zusätzlich ruft
das System eine Liste für
den Start und eine Liste für
das Ziel auf. Die für
den Start aufgerufene Liste enthält
eine Liste aller Knoten, an die Pfade vom Start aus bekannt sind,
Angaben über
den geringsten Aufwand für
eine Fahrt vom Start zum Knoten und den vorhergehenden Knoten entlang
des Pfades mit dem geringsten Aufwand. Die für das Ziel aufgerufene Liste
speichert den Namen jedes Knotens, von dem aus Pfade an das Ziel
bekannt sind, den geringsten bekannten Aufwand für eine Fahrt von dem Knoten
zum Ziel und die Identität
des nächsten
Knotens entlang des Pfades zum Ziel mit dem geringsten Aufwand.
Nachdem die Initialisierung des Schrittes 202 durchgeführt wurde,
enthalten die Start-Prioritätsschlange
und die aufgerufene Liste für
den Start den Start, und die Ziel-Prioritätsschlange und die aufgerufene
Liste für
das Ziel enthalten das Ziel.
-
Wenn
das System initialisiert ist, wählt
es bei Schritt 204 eine Schlange entsprechend einer Regel
aus. Für
das Auswählen
einer Schlange für
die vorliegende Erfindung sind viele Regeln geeignet. Nach einem
System wird die Schlange ausgewählt,
die das Element mit dem kleinsten Schlüssel enthält, wobei Verbindungen arbiträr außer acht
gelassen werden. Nach einem anderen System wird die Schlange ausgewählt, die
die geringste Anzahl von Elementen enthält. Andere Beispiele für Regeln
zur Auswahl einer Schlange enthalten das Alternieren zwischen Schlangen
oder die Wahl der Start-Schlange für eine bestimmte Anzahl von
Iterationen (oder für
eine Zeitspanne), das Umschalten auf die Ziel-Schlange für eine bestimmte
Anzahl von Iterationen, das Zurückschalten
zur Start-Schlange
für eine
bestimmte Anzahl von Iterationen usw. Da die Schlangen nach Schlüsseln geordnet
sind, steht der Knoten mit dem kleinsten Schlüssel oben an der Schlange (auch
als vorderes Ende oder Spitze der Schlange bezeichnet). Dieser Knoten
wird als „Kopfknoten" bezeichnet. In dem weiter
unten diskutierten Beispiel besteht das Verfahren zum Auswählen einer
Schlange im alternierenden Beginnen mit der Start-Prioritätsschlange.
-
Bei
Schritt 206 sucht das System alle Knoten, die in der gewählten Schlange
dem Kopfknoten benachbart sind. Da das System gerade erst gestartet
wurde, ist der einzige Knoten in der Start-Prioritätsschlange
der Start. Die benachbarten Knoten sind solche Knoten, die vom Start
aus ohne Überquerung
anderer Knoten angefahren werden können. In 3 sind
die dem Start O benachbarten Knoten die Knoten A, B und G. Da drei benachbarte
Knoten vorhanden sind, wählt
das System einen beliebigen benachbarten Knoten. Bei Schritt 208 stellt
das System fest, ob es auf der aufgerufenen Liste oder der Prioritätsschlange
für den
ausgewählten
benachbarten Knoten eine Möglichkeit
mit geringerem Aufwand gibt. Das heißt, das System stellt den Aufwand für den Weg
zwischen dem benachbarten Knoten und dem Kopfknoten fest und addiert
dazu den bereits bekannten Aufwand für den Kopfknoten. In diesem
Fall ist der ausgewählte
benachbarte Knoten der Knoten A und der Fahrtaufwand vom Start zum
Knoten A ist 9. Da die Pfadsuchberechnung gerade erste begonnen
hat, ist der Knoten noch nicht auf der aufgerufenen Liste oder in
der Start-Prioritätsschlange
vorhanden, deshalb ist kein Aufwand bekannt. Da kein Aufwand bekannt
ist, editiert das System bei Schritt 210 die aufgerufene Liste
und die Prioritätsschlange,
um Knoten A und seinen Aufwand hinzuzufügen. Das Verfahren führt in der Schleife
zurück
zu Schritt 206, um festzustellen, ob andere benachbarte
Knoten möglicherweise
nicht berücksichtigt
worden sind. In diesem Fall gibt es zwei benachbarte Knoten, die
nicht berücksichtigt
worden sind: B und G.
-
Bei
Schritt 208 stellt das System fest, ob ein geringerer Aufwand
für Knoten
B bekannt ist. Der Aufwand für
eine Fahrt vom Start nach B ist 3, und B erscheint weder in der
Prioritätsschlange
noch in der aufgerufenen Liste. Bei Schritt 210 wird der
Knoten B zur Prioritätsschlange
und der aufgerufenen Liste hinzugefügt. Das System führt in der
Schleife zurück
zu Schritt 206 und betrachtet Knoten G; da kein bekannter
Aufwand geringer ist als der mit einer direkten Verbindung vom Start
zu G bekannte Aufwand von 7, wird G zur Prioritätsschlange und der aufgerufenen
Liste hinzugefügt.
Das System führt
in der Schleife zurück
zu Schritt 206 und stellt fest, dass keine benachbarten
Knoten vorhanden sind. Darum wird bei Schritt 212 der Kopfknoten, der
zu der Zeit Start ist, aus der Prioritätsschlange herausgenommen.
In Tabelle 1 ist der Inhalt der Start-Prioritätsschlange und der aufgerufenen
Liste an diesem Punkt der Pfadsuche wiedergegeben. In der Start-Prioritätsschlange
sind drei Knoten vorhanden: B, G und A. Ihre Schlüssel stellen
den Fahrtaufwand vom Start zu dem Knoten dar. Die aufgerufene Liste
weist drei Spalten auf: Knoten, Aufwand und Vorheriger Knoten. Die Spalte
für den
Knoten führt
die Knotenidentifikation, die Aufwandspalte den geringsten Fahrtaufwand
vom Start zu dem Knoten auf und die Spalte Vorheriger Knoten gibt
den vorherigen Knoten auf dem Pfad vom Start zum aufgeführten Knoten
an, wenn der Pfad benutzt wird, der den geringsten bekannten Aufwand
erfordert. Die Ordnung der in der aufgerufenen Liste aufgeführten Knoten
kann jede beliebige Ordnung sein, die ein einfaches Durchsuchen
der Liste ermöglicht.
Zum Beispiel können
die Knoten in alphabetischer Reihenfolge angeordnet sein. Bei einer
Ausführung
sind die Knoten mit numerischen Codes bezeichnet und die aufgerufene Liste
ist eine im Hash-Verfahren erstellte Tabelle.
-
-
Bei
Schritt 214 stellt das System fest, ob eine Stopp-Bedingung
erfüllt
ist. Für
die vorliegende Erfindung sind viele Stopp-Bedingungen geeignet,
beispielsweise kann ein Stopp eintreten, wenn ein Knoten der Kopfknoten
sowohl in der Start-Prioritätsschlange
als auch der Ziel-Prioritätsschlange
gewesen ist. Eine weitere Stopp-Bedingung, die für dieses Beispiel gilt, ist
das Stoppen, wenn der Fahrtaufwand vom Start zum Kopfknoten in der
Start-Prioritätsschlange
plus des Aufwandes für
die Fahrt vom Kopfknoten der Ziel-Prioritätsschlange zum Ziel größer als
oder gleich dem Gesamtaufwand des besten Verbindungsknotens ist.
Ein Verbindungsknoten ist der Knoten, der sowohl auf der aufgerufenen
Liste des Ziels als auch auf der aufgerufenen Liste des Starts auftaucht.
Der Gesamtaufwand eines Verbindungsknotens ist der Aufwand, der
vom Start zum Verbindungsknoten erforderlich ist, plus des Aufwandes
vom Verbindungsknoten zum Ziel. Der beste Verbindungsknoten ist
der Verbindungsknoten mit dem geringsten Gesamtaufwand. Im vorliegenden
Fall sind keine Verbindungsknoten vorhanden, deshalb schlägt die Stopp-Bedingung
fehl und bei Schritt 204 wählt das System eine Schlange
aus.
-
Wie
oben diskutiert wurde, alterniert der Algorithmus für die Auswahl
der Schlange in dem vorliegenden Beispiel; das System ruft deshalb
die Ziel-Schlange auf. Bei Schritt 206 stellt das System
fest, ob dem Ziel D benachbarte Knoten vorhanden sind. In dem vorliegenden
Beispiel gibt es zwei benachbarte Knoten, C und F. Bei Schritt 208 untersucht
das System den Knoten C und stellt fest, ob es einen geringeren
bekannten Aufwand gibt. Da es den nicht gibt, werden bei Schritt 210 die
Ziel-Prioritätsschlange
und die aufgerufene Liste editiert, um den Knoten C und seinen Aufwand
hinzuzufügen.
Das Verfahren führt
in der Schleife zurück
zu Schritt 206, bei dem festgestellt wird, dass noch ein
weiterer benachbarter Knoten, nämlich
F, vorhanden ist. Bei Schritt 208 stellt das System fest,
dass für
F kein geringerer bekannter Aufwand vorhanden ist. Bei Schritt 210 werden
die Ziel-Prioritätsschlange
und die für
das Ziel aufgerufene Liste editiert, um den Knoten F hinzuzufügen. Bei
Schritt 206 stellt das System fest, dass keine weiteren
benachbarten Knoten für
den Knoten D vorhanden sind, und Knoten D wird bei Schritt 212 aus
der Ziel-Prioritätsschlange
entfernt. In der Tabelle 2 wird der Zustand der Ziel-Prioritätsschlange
und der aufgerufenen Liste an diesem Punkt im Verfahren dargestellt. Die
Spalte „Nächster Knoten" gibt den nächsten Knoten
auf dem Pfad von dem aufgeführten
Knoten zum Ziel wieder, wenn der Pfad gewählt wird, der den geringsten
bekannten Aufwand kostet.
-
-
Da
keine Verbindungsknoten vorhanden sind, schlägt die Stopp-Bedingung fehl
(Schritt 214) und das System wählt die Start-Prioritätsschlange
aus (Schritt 204). Aus Tabelle 1 ist zu ersehen, dass der
Kopfknoten in der Start-Prioritätsschlange
der Knoten B ist. Die dem Knoten B benachbarten Knoten sind die
Knoten A und E. Bei Schritt 208 ist kein geringerer Aufwand
für Knoten
A bekannt. Obgleich Knoten A in der aufgerufenen Liste mit einem
Aufwand von 9 erscheint, ist der Fahrtaufwand vom Start über Knoten
B zum Knoten A gleich 6. Das heißt, der Fahrtaufwand von O
nach B ist gleich 3 und der Aufwand für die Fahrt von B nach A ist
gleich 3. Der Aufwand für
den Weg von O nach B nach A ist also 6, was weniger ist als der
Fahrtaufwand von O direkt nach A. Bei Schritt 210 werden
darum die aufgerufene Liste und die Prioritätsschlange editiert, so dass
der Aufwand für
eine Fahrt zum Knoten A gleich 6 ist und der in der aufgerufenen Liste
für Knoten
A vorherige Knoten der Knoten B ist. Das heißt, um von O nach A mit einem
Aufwand von 6 zu kommen, muss man über B fahren. Bei Schritt 206 stellt
das System fest, dass es einen weiteren benachbarten Knoten, nämlich E,
gibt. Bei Schritt 208 stellt das System fest, dass für E kein
geringerer Aufwand bekannt ist, und die Prioritätsschlange und die aufgerufene
Liste werden editiert, um E einzuschließen. In Tabelle 3 ist der Zustand
von Start-Prioritätsschlange
und aufgerufener Liste wiedergegeben, nachdem Knoten B aus der Prioritätsschlange
(Schritt 212) entfernt wurde.
-
-
An
diesem Punkt schlägt
die Stopp-Bedingung fehl, weil kein Verbindungsknoten vorhanden
ist, und das System wählt
die Zielschlange (Schritt 204). Bei Schritt 206 sucht
das System nach Knoten, die dem Kopfknoten der Zielschlange benachbart
sind. Da der Kopfknoten der Knoten F ist, sind die benachbarten
Knoten die Knoten E und D. Der Aufwand für den Weg von E nach F ist
gleich 2, der Fahrtaufwand von E nach F nach D ist also 6. Bei Schritt 208 stellt
das System fest, dass ein geringerer Aufwand für die Fahrt von E nach D nicht bekannt
ist, die aufgerufene Liste und die Prioritätsschlange werden also dementsprechend
aktualisiert. Der Fahrtaufwand von D nach F nach D ist gleich 8,
was mehr ist als der Aufwand Null, der dem Knoten D in der aufgerufenen
Liste zugeordnet ist, die aufgerufene Liste und die Prioritätsschlange
werden also nicht aktualisiert. Bei Schritt 206 stellt
das System fest, dass kein weiterer benachbarter Knoten vorhanden
ist, und F wird bei Schritt 212 aus der Prioritätsliste
entfernt. In Tabel le 4 wird der Zustand der Ziel-Prioritätsschlange
und der aufgerufenen Liste an diesem Punkt des Verfahrens wiedergegeben.
-
-
Bei
Schritt 214 stellt das System fest, ob die Stopp-Bedingung
erfüllt
ist. An diesem Punkt ist ein Verbindungsknoten vorhanden. Knoten
E ist sowohl auf der aufgerufenen Liste für den Start als auch auf der
aufgerufenen Liste für
das Ziel. Der Gesamtaufwand für
Knoten E beträgt
11. Das heißt,
der Aufwand für
den Weg vom Start zum Knoten E ist gleich 5 und vom Knoten E zum
Ziel gleich 6. Die Stopp-Bedingung ist nicht erfüllt, weil der Aufwand für den Weg
vom Start zum Kopfknoten in der Start-Prioritätsschlange (E) gleich 5 ist
und der Aufwand für
den Weg vom Kopfknoten der Ziel-Prioritätsschlange C zum Ziel ebenfalls
gleich 5 ist. Die Summe der beiden Aufwandangaben ist 10, was weniger
ist als es der Gesamtaufwand für
den Verbindungsknoten ist, nämlich
11, die Stopp-Bedingung
wird also nicht erfüllt
und das System wählt
bei Schritt 204 die Start-Prioritätsschlange.
-
Der
Kopfknoten in der Start-Prioritätsschlange
ist der Knoten E, der zwei benachbarte Knoten hat: C und F. Bei
Schritt 208 stellt das System fest, ob für die Fahrt
vom Start nach F bereits ein geringerer Aufwand bekannt ist. Da
F nicht in der Start-Prioritätsschlange
enthalten ist, gibt es keinen bekannten Aufwand, und der Fahrtaufwand
vom Start nach E nach F, der gleich 7 ist, wird der Start-Prioritätsschlange
und der aufgerufenen Liste hinzugefügt. Bei Schritt 206 stellt
das System fest, dass noch ein weiterer benachbarter Knoten, C,
vorhanden ist. Bei Schritt 208 stellt das System fest,
ob der Aufwand für
die Fahrt vom Start nach C bekannt ist. Der Fahrtaufwand vom Start
nach E nach C ist gleich 9. Da für
die Fahrt vom Start nach C kein geringerer Aufwand bekannt ist,
wird C der Prioritätsschlange
und der aufgerufenen Liste hinzugefügt. An diesem Punkt sind keine
weiteren benachbarten Knoten für
den Knoten E vorhanden und Knoten E wird aus der Schlange entfernt
(Schritt 212). Tabelle 5 gibt den an diesem Punkt des Verfahrens
geltenden Zustand der Start-Prioritätsschlange wieder.
-
-
Bei
Schritt 214 stellt das System fest, dass die Stopp-Bedingung
erfüllt
ist. An diesem Punkt sind drei Verbindungsknoten vorhanden. Der
Gesamtaufwand des Verbindungsknotens C ist 14, der des Verbindungsknotens
F ist 11 und der des Verbindungsknotens E ist 11. Da die Knoten
E und F von allen Verbindungsknoten den geringsten Gesamtaufwand
benötigen,
gelten E und F als die besten Verbindungsknoten. Verschiedene andere
Möglichkeiten
innerhalb des Bereiches der vorliegenden Erfindung können andere
Definitionen für „beste
Verbindungsknoten" verwenden.
Der Fahrtaufwand vom Start zum Kopfknoten in der Start-Prioritätsschlange
ist 6. Der Aufwand für
die Fahrt vom Kopfknoten der Ziel-Prioritätsschlange zum Ziel ist 5.
Der gesamte Fahrtaufwand zu und von den Kopfknoten ist also 11,
was gleich dem Gesamtaufwand der aufwandgünstigsten Verbindungsknoten
ist, der ebenfalls 11 ist. Die Stopp-Bedingung ist also erfüllt und
das System baut bei Schritt 216 den Pfad auf.
-
Das
Aufbauen des Pfades wird folgendermaßen vorgenommen. Eine Regel
wählt irgendeinen
Verbindungsknoten aus. Eine solche Regel ist die Wahl des besten
Verbindungsknotens. Der ausgewählte
Verbindungsknoten K wird aus der aufgerufenen Liste für den Start
herausgesucht, und es wird der vorherige Knoten P1 auf
dem Pfad vom Start gefunden. Ist P1 nicht
der Start, dann wird P1 aus der aufgerufenen
Liste herausgesucht und es wird der vorherige Knoten P2 gefunden.
Dies wird fortgeführt,
bis der Start erreicht ist. Es sei angenommen, der Start wird bei
Knoten PL erreicht. Auf ähnliche Weise wird K aus der
aufgerufenen Liste für
das Ziel herausgesucht und der nächste
Knoten N1 wird gefunden. Ist N1 nicht
das Ziel, dann wird in der aufgerufenen Liste N1 herausgesucht.
Dies wird fortgeführt,
bis das Ziel erreicht ist. Es sei angenommen, das Ziel ist bei Knoten
NM erreicht. An diesem Punkt ist der Pfad
vom Start zum Ziel bekannt: Es ist der Pfad von PL (Start) nach
PL-1, nach PL-2,
..., nach P2, nach P1,
nach K, nach N1, ..., nach NM-1,
nach NM (Ziel).
-
In
dem hier angegebenen Beispiel waren beide Knoten, E und F, die besten
Verbindungsknoten. Das System wählt
zufällig
Knoten E. Bei Betrachten der aufgerufenen Liste in Tabelle 5 stellt
sich als bester bekannter Aufwand für die Fahrt vom Start zum Knoten
E der Weg vom Knoten B zum Knoten E heraus. Der aufgebaute Pfad
wird also von B nach E führen.
Dann findet das System Knoten B in der aufgerufenen Liste und stellt
fest, das der beste Pfad vom Start O zum Knoten B der direkte Pfad
ist. An diesem Punkt enthält
der aufgebaute Pfad den Weg von O nach B nach E. Nachdem das System
den Start erreicht hat, baut das System einen Pfad vom Verbindungspunkt
zum Ziel. Aus der aufgerufenen Liste in Tabelle 4 geht hervor, dass
der beste Pfad von E zum Ziel den Weg von E nach F beinhaltet. Deswegen
wird F zum Pfad hinzugefügt.
Die aufgerufene Liste gibt ebenfalls an, dass der beste Pfad von
F nach D die direkte Verbindung von F nach D ist. Der aufgebaute
Pfad verläuft
also so: O-B-E-F-D.
-
5 ist
ein Flussdiagramm, das ein zweites Verfahren zum Durchführen einer
Pfadsuche beschreibt. In gewisser Hinsicht kann das Verfahren nach 5 als
eine Parallelversion des Verfahrens nach 4 angesehen
werden. Das heißt,
die allgemeinen Schritte der 5 gleichen
denen der 4; das Verfahren nach 5 kann
jedoch für
eine gleichzeitige (parallele) Suche für eine Mehrzahl von Start-Angaben
(und/oder eine Mehrzahl von Zielen) eingesetzt werden.
-
Bei 3 sei
beispielsweise angenommen, ein Nutzer fordert das System auf, einen
Pfad nach D von zwei Startorten, O und B, zu finden. Anstatt die
Schritte nach 4 zweimal durchzuführen, kann
das System nach 5 die Schritte gleichzeitig
durchführen,
um Pfade von O nach D und von B nach D zu finden.
-
Bei
Schritt 240 nach 5 wird das
System initialisiert. Schritt 240 ist dem Schritt 202 der 4 ähnlich.
Das heißt,
es können
eine Start-Prioritätsschlange,
eine Start-Aufgerufene Liste, eine Ziel-Prioritätsliste und eine Ziel-Aufgerufene
Liste aufgestellt werden. Ein Unterschied zwischen den aufgerufenen
Listen der 5 und den aufgerufenen Listen
der 4 besteht darin, dass jedem Knoten eine Spalte
für Aufwand
und für
vorhergehende Knoten für
jeden Startort (oder Zielort) zugeordnet ist. In dem Beispiel der
Bestimmung von Pfaden von O nach D und von B nach D entsprechend 3 wären jedem
Knoten in der für
den Start aufgerufenen Liste zwei Aufwandspalten und zwei Spalten
für vorhergehende
Knoten zugeordnet.
-
Die
Bearbeitung der Prioritätsschlange
nach 5 gleicht der Bearbeitung der Prioritätsschlange nach 4,
nur dass die Bearbeitung der Prioritätsschlange nach 5 eine
zusätzliche
Spalte enthält,
die Index-Spalte. Wie später
erläutert
wird, ist der Schlüssel
für jeden
Knoten in der Prioritätsschlange
mit dem Weg zwischen dem Koten in der Schlange und einem der Startorte
(oder einem der Zielorte) assoziiert. Der Index für einen
Knoten in der Prioritätsschlange
gibt den besonderen Start (oder das Ziel) an, das dem Schlüssel zugeordnet
ist.
-
In
einer Ausführungsform
können
die Bearbeitungen nach 4 oder 5 durchgeführt werden,
indem vom Start und nicht vom Ziel aus gesucht wird; darum wird
eine Start-Prioritätsschlange
und eine aufgerufene Liste für
den Start, jedoch keine Ziel-Prioritätsschlange oder aufgerufene
Liste für
das Ziel verwendet. In einer weiteren Ausführungsform können die
Bearbeitungsvorgänge
nach 4 und 5 vom Ziel aus und nicht vom
Start aus suchen; deshalb wird eine Ziel-Prioritätsschlange und eine aufgerufene
Liste für
das Ziel verwendet, jedoch weder eine Start-Prioritätsschlange
noch eine aufgerufene Liste für
den Start.
-
Bei
Schritt 242 wählt
das System eine Schlange, ähnlich
wie bei Schritt 204. Sucht das System vom Start und nicht
vom Ziel aus, dann braucht keine Schlange ausgewählt zu werden und der Schritt 242 kann übergangen
werden. Bei Schritt 244 stellt das System fest, ob noch
ein weiterer benachbarter Knoten vorhanden ist, der nicht in Betracht
gezogen wurde. Das System sucht in der Prioritätsschlange nach Knoten, die
dem Kopfknoten benachbart sind. Ist ein weiterer benachbarter Knoten
vorhanden, dann führt
das System Schritt 246 aus, der die Bestimmung des Aufwandes
für den
benachbarten Knoten enthält, über den
Kopfknoten, von allen Startorten (oder allen Zielorten). Jeder bei
Schritt 246 bestimmte Aufwand ist ein neuer Aufwand. Jeder neue
Aufwand wird einem Start und einem Zwischenknoten zugeordnet. Bei
Schritt 248 stellt das System fest, ob bereits ein geringerer
oder gleicher Aufwand für
ein Paar aus Start- und Zwischenknoten bekannt ist, für das bei
Schritt 246 ein neuer Aufwand bestimmt wurde. Wenn das
der Fall ist, schaltet das System über eine Schleife zurück zu Schritt 244.
Ist es nicht der Fall, dann werden die Prioritätsschlange und die aufgerufene Liste
bei Schritt 250 editiert. Bei der Editierung der aufgerufenen
Liste wird der Knoten, wenn er nicht in der aufgerufenen Liste vorhanden
war, der aufgerufenen Liste mit allem neuen Aufwand hinzugefügt. War
der Knoten bereits in der aufgerufenen Liste aufgeführt, dann
wird der neue Aufwand hinzugefügt
und ersetzt allen existierenden höheren Aufwand, jedoch keinen
existierenden geringeren Aufwand. Ist der benachbarte Knoten nicht
in der Prioritätsschlange
enthalten, dann wird beim Editieren der Prioritätsschlange jener Knoten der
Prioritätsschlange
mit einem Schlüssel
hinzugefügt,
der gleich dem geringsten Aufwand des neuen Satzes an Aufwandangaben
ist. Ist der benachbarte Knoten in der Prioritätsschlange enthalten und der
geringste Aufwand des neuen Aufwandsatzes ist geringer als der Schlüssel, dann
wird der Schlüssel
auf den neuen Stand des geringsten Aufwandes aus dem Satz von neuen
Aufwandangaben gebracht. Wird der Schlüssel eines Knotens aktualisiert,
dann wird der entsprechende Index des Knotens ebenfalls aktualisiert.
-
Wenn
bei Schritt 244 keine weiteren benachbarten Knoten zum
Kopfknoten in der Prioritätsschlange vorhanden
sind, dann wird der Kopfknoten aus der zugehörigen Prioritätsschlange
bei Schritt 252 entfernt, und das System stellt bei Schritt 254 fest,
ob eine Stopp-Bedingung erfüllt
ist.
-
Die
Stopp-Bedingungen können
alle oben beschriebenen Stopp-Bedingungen sein, die im Zusammenhang
mit Schritt 214 erklärt
wurden. Als Alternative kann eine Stopp-Bedingung dann erfüllt sein,
wenn in der Prioritätsschlange(n)
keine weiteren Knoten vorhanden sind. Bei einer Ausführungsform
ist die Stopp-Bedingung
erfüllt,
wenn alle Ziele erreicht wurden und der Schlüssel des Kopfknotens der Start-Prioritätsschlange größer ist
als der größte bekannte
Aufwand von jedem Startort zu jedem Zielort entlang eines Pfades,
der aus der aufgerufenen Liste aufgebaut werden kann. Eine weitere
Ausführungsform
verwendet die Stopp-Bedingung, die im vorhergehenden Satz beschrieben
wurde, als eine Primär-Stopp-Bedingung
und versucht auch eine Sekundär-Stopp-Bedingung
zu finden. Eine geeignete Sekundär-Stopp-Bedingung
ist erfüllt,
wenn die Priorität
leer ist und keine Knoten jenseits einer Entfernung X vom nächsten Start
der Prioritätsschlange
während
des Pfadsuchvorgangs hinzugefügt
werden. Ein Beispiel für
eine Entfernung X ist die doppelte maximale Luftlinienentfernung
zwischen einem Start und einem Ziel.
-
Ist
die Stopp-Bedingung nicht erfüllt,
kehrt das System in einer Schleife zurück zum Schritt 242 und wählt die
nächste
Schlange aus. Wurde die Stopp-Bedingung
erfüllt,
dann baut das System bei Schritt 256 Pfade auf. Da das
Verfahren für
eine Mehrzahl von Startorten oder Zielorten durchgeführt wird,
wird eine Mehrzahl von Pfaden aufgebaut.
-
Als
ein Beispiel sei angenommen, dass ein Nutzer nur zwei Pfade im Netz
nach 3 bestimmen will: O nach D und B nach D. Da es
sich um zwei Startorte handelt, werden beide Startorte anfangs in
die Prioritätsschlange
gegeben. Dabei kann jede beliebige Ordnung gewählt werden. Es sei angenommen,
O sei der erste Kopfknoten. In Tabelle 6 ist die Start-Prioritätsschlange
und die aufgerufene Liste nach Schritt 240 dargestellt.
Der Aufwand für
den Weg vom Start O zum Knoten B und vom Start B zum Knoten O ist
anfangs als unendlich (Inf.) angegeben.
-
-
Bei
diesem Beispiel sei angenommen, dass das System nur vom Start aus
sucht; es ist darum nicht erforderlich, bei Schritt 242 eine
Schlange auszuwählen.
Bei Schritt 244 stellt das System fest, dass es drei benachbarte
Knoten gibt, A, B und G. Das System wählt zufällig Knoten A bei Schritt 244 aus
und bestimmt den Aufwand für
den Weg von den Startorten über
den Kopfknoten nach A. An diesem Punkt kann nur der Pfad und der
Aufwand direkt von O nach A mit einem Aufwand von 9 festgestellt
werden. Zu dem Zeitpunkt gibt es keine Pfade von B nach A über O, die
bestimmt werden können.
Da kein geringerer Aufwand bekannt ist, editiert das System die
aufgerufene Liste und die Prioritätsschlange bei Schritt 250,
kehrt in der Schleife zum Schritt 244 zurück und wählt Knoten
B aus. Der Aufwand für
den Weg von O nach B ist 3 (Schritt 246), es ist kein geringerer
Aufwand bekannt (Schritt 248), das System editiert die
aufgerufene Liste und die Prioritätsschlange (Schritt 250)
und das System kehrt in der Schleife zurück zum Schritt 244,
um Knoten G zu untersuchen. Der Aufwand für den Weg von O nach G ist
7 (Schritt 246), es ist keine geringerer Aufwand bekannt (Schritt 248),
das System editiert die aufgerufene Liste und die Prioritätsschlange
(Schritt 250) und kehrt in der Schleife zurück zu Schritt 244.
An diesem Punkt sind keine weiteren dem Kopfknoten O benachbarten
Knoten vorhanden, der Kopfknoten wird bei Schritt 252 entfernt,
und bei Schritt 254 wird die Stopp-Bedingung überprüft. Es wird
darauf hingewiesen, dass B bereits vor dem Schritt 250 in
der Start-Prioritätsschlange
vorhanden war; der Schlüssel
von Null wird durch einen neuen Schlüssel von 3 ersetzt. Die folgende
Tabelle 7 gibt den Zustand der Start-Prioritätsschlange und der Start-Aufgerufenen
Liste an diesem Punkt der Berechnung wieder.
-
-
Bei
diesem Beispiel wird die Stopp-Bedingung erfüllt, wenn alle Zielorte erreicht
wurden und der Kopfknoten der Start-Prioritätsschlange größer ist
als der bekannte Aufwand von jedem Startort zu jedem Zielort. An
diesem Punkt der Berechnung ist keiner der Zielorte erreicht worden;
die Stopp-Bedingung ist also nicht erfüllt (Schritt 254).
-
Der
Kopfknoten in der Prioritätsschlange
ist B. Knoten B hat zwei benachbarte Knoten, A und E. Bei Schritt 244 betrachtet
das System Knoten A. Der Aufwand für den Weg von B nach A ist
3 (Schritt 248), das System addiert also 3 zum bekannten
Aufwand für
den Weg von allen Startorten nach B. Der neue Aufwand für den Weg
von O nach A ist 6, und der neue Aufwand für den Weg von B nach A ist
3. Beide neuen Angaben für
den Aufwand sind kleiner als der vorherige alte Aufwand von 9 für den Weg
von O und von unendlich für den
Weg von B, darum werden die aufgerufene Liste und die Prioritätsschlangen
mit den neuen Kosten aktualisiert. Bei der Betrachtung des Knotens
E durch das System wird Schritt 246 dazu benutzt, den Aufwand
für den
Weg vom Knoten B zum Knoten E als 2 zu bestimmen. Da für den Weg
nach E (Schritt 248) kein vorheriger Aufwand bekannt ist,
werden die Liste und die Prioritätsschlange
entsprechend editiert (Schritt 250). Der Knopfknoten wird
entfernt (Schritt 252) und die Stopp-Bedingung wird getestet (Schritt 254).
An diesem Punkt wird die Stopp-Bedingung
nicht erfüllt.
In der nachfolgenden Tabelle 8 wird der Zustand vom Start und der
Prioritätsschlange
und der für
Start aufgerufenen Liste an diesem Punkt der Berechnung dargestellt.
-
-
Knoten
E ist der Kopfknoten in der Prioritätsschlange. Knoten E hat zwei
benachbarte Knoten, C und F, (Schritt 244). Das System
wählt zuerst
Knoten C. Der Aufwand für
den Weg vom Knoten E zum Knoten C ist 4; der Aufwand für den Weg
zum Knoten C von O ist also 9 und für den Weg zum Knoten C vom
Knoten B ist 6 (Schritt 246). Da C nicht bereits in der
Prioritätsschlange
oder der aufgerufenen Liste vorhanden ist, ist kein Aufwand bekannt
(Schritt 248) und die Start-Prioritätsschlange und die aufgerufenen
Listen werden entsprechend editiert (Schritt 250). Dann
kehrt das System in der Schleife zurück zum Schritt 244 und
betrachtet Knoten F. Der Aufwand für den Weg von E nach F ist
2; der Aufwand für
den Weg von O nach F ist also 7 und von B nach F ist er 4 (Schritt 246).
Da F weder in der aufgerufenen Liste noch in der Prioritätsschlange
(Schritt 248) vorhanden ist, werden beide bei Schritt 250 entsprechend
editiert. Das System kehrt in der Schleife zurück zu 244 und stellt
fest, dass keine weiteren benachbarten Knoten vorhanden sind. Der
Kopfknoten E wird bei Schritt 252 entfernt, und bei Schritt 254 wird
bestimmt, dass die Stopp-Bedingung nicht erfüllt ist. Die nachfolgende Tabelle
9 gibt den Zustand von Start-Prioritätsschlange und der für Start
aufgerufenen Liste an diesem Punkt der Berechnung wieder.
-
-
Jetzt
ist Knoten A oben in der Prioritätsschlange.
Knoten A hat drei benachbarte Knoten, C, O und B. Das System wählt zuerst
Knoten O. Der Aufwand für
den Weg vom Knoten A zum Knoten O ist 9; dementsprechend ist der
Aufwand für
den Pfad vom Start O über
den Kopfknoten zurück
zum Start O gleich 15. Der Pfad von B nach A nach O hat den Aufwand
12. Bei Schritt 248 stellt das System fest, dass nicht
für jeden
der einzelnen Startorte ein geringerer Aufwand bekannt ist. Für einen
der Startorte ist ein geringerer Aufwand bekannt. Das heißt, der
bereits bekannte Aufwand für
den Weg zum Knoten O vom Knoten O ist Null. Das ist weniger als
der neue Aufwand von 15; darum wird der neue Aufwand weder der Start-Prioritätsschlange
noch der aufgerufenen Liste hinzugefügt. Der neue Aufwand für den Weg
vom Knoten B zum Knoten O ist 12, was weniger ist als der bereits
bekannte Aufwand von unendlich (Inf.). Deshalb wurde der neue Aufwand
von 12 der für
Start aufgerufenen Liste bei Schritt 250 hinzugefügt. Das
System kehrt in der Schleife zurück
zum Schritt 244 und untersucht Knoten B. Der Aufwand für den Weg
von A nach B ist 3. Der Aufwand für den Weg vom Start O nach
B über
A ist 12, und der Aufwand für
den Weg von B nach A nach B ist 6. Bei Schritt 248 stellt
das System fest, dass es bereits einen geringeren Aufwand für jeden
der Startorte kennt, und darum werden weder die aufgerufene Liste
noch die Start-Prioritätsschlange
vom System editiert, und das System kehrt in der Schleife zurück zu Schritt 244.
Bei Schritt 244 betrachtet das System Knoten C. Der Aufwand
für den Weg
vom Knoten A zum Knoten C ist 4. Der neue Aufwand für den Weg
zum Knoten C vom Knoten O ist 13. Der neue Aufwand für den Weg
vom Knoten B zum Knoten C über
Knoten A ist 7. Da für
jeden Start ein geringerer Aufwand bekannt ist (Schritt 248),
kehrt das System in der Schleife zurück zum Schritt 244 und
editiert weder die für
Start aufgerufene Liste noch die Prioritätsschlange. Bei Schritt 252 wird
der Kopfknoten entfernt. Bei Schritt 254 wird bestimmt,
dass die Stopp-Bedingung nicht erfüllt ist. In Tabelle 10 wird
der Zustand der Start-Prioritätsschlange
und der für
Start aufgerufenen Liste an diesem Punkt der Berechnung dargestellt.
-
-
Knoten
F ist der Kopfknoten in der Prioritätsschlange. Knoten D ist der
einzige dem Knoten F benachbarte Knoten (Schritt 244).
Bei Schritt 246 bestimmt das System den Aufwand für den Weg
vom Knoten F zum Knoten D als 4. Das heißt, der Aufwand für den Weg
von O nach D ist 11 und von B nach D ist 8 (Schritt 246). Da
D weder in der für
Start aufgerufenen Liste noch in der Start-Prioritätsschlange ist (Schritt 248),
editiert das System sowohl die aufgerufene Liste als auch die Prioritätsschlange
bei Schritt 250, um D und den damit verbundenen Aufwand
hinzuzufügen.
Bei Schritt 244 stellt das System fest, dass kein weiterer
benachbarter Knoten vorhanden ist. Bei Schritt 252 wird
der Kopfknoten entfernt. Bei Schritt 254 wird die Stopp-Bedingung überprüft. Tabelle
11 stellt den Zustand von Start-Prioritätsschlange und für Start
aufgerufener Liste an diesem Punkt der Berechnung dar.
-
-
Bei
der Überprüfung der
Stopp-Bedingung stellt das System fest, dass alle Ziele (in diesem
Fall 1) erreicht wurden und dass von jedem Start zu jedem Ziel ein
Pfad bekannt ist. Das System muss ebenfalls untersuchen, ob der
Schlüssel
des Kopfknotens der Prioritätsschlange
größer ist
als der größte bekannte
Aufwand von jedem Start zu jedem Ziel entlang eines Pfades, der
aus der aufgerufenen Liste aufgebaut werden kann. Der bekannte Aufwand
von den Startorten zu den Zielorten ist O nach D mit einem Aufwand
von 11 und B nach D mit einem Aufwand von 8; der größte bekannte
Aufwand ist also 11. Da 6 weniger ist als 11, wird die Stopp-Bedingung
nicht erfüllt.
-
Der
Kopfknoten der Prioritätsschlange
ist C. C hat drei benachbarte Knoten: A, E und D. Wenn das System
die Schritte 244 bis 250 für Knoten A, E und D durchführt, wird
es neue Aufwandangaben feststellen, die alle größer sind als der bereits bekannte
Aufwand; also werden weder die Prioritätsschlange noch die aufgerufene
Liste für
diese drei benachbarten Knoten editiert. Nachdem der Kopfknoten
C von der Prioritätsschlange
entfernt wurde, ist die Stopp-Bedingung nicht erfüllt, weil
der Aufwand für
den neuen Kopfknoten G gleich 7 ist, was noch weniger ist als 11.
-
Knoten
G ist jetzt der Kopfknoten der Prioritätsschlange. Knoten G hat drei
benachbarte Knoten: O, H und I. Bei Schritt 244 betrachtet
das System zuerst Knoten H. Der Aufwand für den Weg von G nach H ist
5. Der Aufwand für
den Weg von O nach G nach H ist 12. Da in der aufgerufenen Liste
kein Aufwand/Pfad für den
Weg nach G von B vorhanden ist, kann das System keinen Pfad für den Weg
vom Knoten B zum Knoten H über
Knoten G bestimmen; darum wird der Aufwand für den Weg zu den Knoten G und
H vom Knoten B als unendlich aufgezeichnet. Da für den Weg zum Knoten H (Schritt 248)
kein Aufwand bekannt ist, werden die aufgerufene Liste und die Prioritätsschlangen
bei Schritt 250 editiert, und das System kehrt zurück zum Schritt 244.
Das System betrachtet Knoten I. Der Aufwand für den Weg von O nach G nach
I ist 10, und das System kann keinen Aufwand für den Weg von B nach G nach
I berechnen (Schritt 246). Da I weder in der Prioritätsschlange
noch in der aufgerufenen Liste vorhanden ist, ist kein Aufwand bekannt
(Schritt 248); die aufgerufene Liste und die Prioritätsschlangen
werden bei Schritt 250 editiert, und das System kehrt in
der Schleife zurück zum
Schritt 244, um Knoten O zu betrachten. Der Aufwand für den Weg
von O nach G nach O ist 10 (Schritt 246). Es ist bereits
ein kleinerer Aufwand bekannt für
den Weg von O nach O; die aufgerufene Liste und die Prioritätsschlange
werden darum nicht editiert. Bei Schritt 244 stellt das
System fest, dass keine weiteren benachbarten Knoten vorhanden sind,
und der Kopfknoten wird bei Schritt 252 entfernt. Tabelle
12 stellt den Zustand von Prioritätsschlange und aufgerufener
Liste an diesem Punkt der Berechnung dar.
-
-
Die
Stopp-Bedingung ist immer noch nicht erfüllt, weil der Kopfknoten einen
Schlüssel
von 8 hat, was nicht größer ist
als 11, der Aufwand für
den Weg von E nach D.
-
Der
Kopfknoten ist D; er hat zwei benachbarte Knoten: C und F. Wenn
das System die Schritte 244 bis 250 für die Knoten
C und F durchführt,
wird sich herausstellen, dass der Aufwand größer ist als der bekannte Aufwand.
Die Prioritätsschlange
und die aufgerufene Liste werden darum nicht editiert. Nachdem das
System Kopfknoten D von der Prioritätsschlange bei Schritt 252 entfernt
hat, wird die Stopp-Bedingung bei Schritt 254 getestet.
Der neue Kopfknoten der Prioritätsschlange
ist Knoten I. Der Schlüssel
für I ist
10. Da 10 weniger ist als der Aufwand für den Pfad von E nach D (der
11 ist), ist die Stopp-Bedingung nicht erfüllt.
-
Knoten
G ist der einzige dem Knoten I benachbarte Knoten. Der Aufwand für den Weg
von O nach G über
I ist 13. Der Aufwand für
den Weg von B nach G über
I ist nicht bekannt, deshalb benutzt das System den Wert unendlich
(Inf.). Da ein geringerer (oder gleicher) Aufwand für jeden
Start (Schritt 248) bekannt ist, überspringt das System Schritt 250 und
kehrt in der Schleife zurück
zum Schritt 244. Es sind keine weiteren benachbarten Knoten
vorhanden. Knoten I wird vom Kopf der Schlange (Schritt 252)
entfernt. Der neue Kopfknoten ist Knoten O mit einem Aufwand von
12. Die Stopp-Bedingung ist jetzt erfüllt, weil der Aufwand des Kopfknotens,
also 12, größer ist
als der größte bekannte
Aufwand von jedem Start zu jedem Ziel, der 11 ist. Das System baut
bei Schritt 256 die Pfade auf. Die aufgebauten Pfade sind
B-E-F-D und O-B-E-F-D.
-
Wenn
die Entfernung zwischen Startknoten und Zielknoten größer wird,
kann die Anzahl von Knoten und Verbindungen, die zur Bestimmung
eines Pfades zwischen Start und Ziel in Betracht gezogen werden müssen, stark
zunehmen. Ein System, das eine Berechnung zum Suchen von Pfaden
für eine
elektronische Karte durchführt,
muss dementsprechend unter Umständen
eine außerordentlich
große
Zahl von Berechnungen durchführen
und möglicherweise
eine große
Zahl von Disk-Zugriffen ausführen.
Dadurch kann sich die zum Finden eine Pfades zwischen einem Start
und einem Ziel erforderliche Zeit in bedeutendem Maße verlängern. Mit
der vorliegenden Erfindung kann die zum Finden eines Pfades erforderliche
Zeit durch die Verwendung des in 13 dargestellten
Verfahrens verringert werden. Das Verfahren nach 13 wird
auf ein Netzwerk angewendet, das in Regionen aufgeteilt ist, die „Kacheln" genannt werden.
Eine Kachel kann eine Region einer graphischen Karte und/oder eine
Gruppe von Daten (oder Daten-Cluster) sein, die eine gewisse geographische
Beziehung haben. In 6 ist eine Möglichkeit dargestellt, wie
der gerichtete Graph nach 3 in Kacheln
aufgeteilt wird. Eine erste Kachel besteht aus Knoten H, G, I und
O; eine zweite Kachel besteht aus Knoten A und B; und eine dritte
Kachel besteht aus Knoten C, D, E und F. Die Kacheln können definiert
werden, indem geographische Regionen getrennt werden.
-
Alternativ
können
Kacheln ohne das Ansehen einer visuellen Darstellung eines Graphen
definiert werden. Beispielweise kann eine Kachel ein Satz von Clustern
bzw. Datengruppen sein. Ein Beispiel für das Verfahren, Cluster oder
Datengruppen zu bilden, ist im U.S. Patent Nr. 5.706.503 „Method
of Clustering Multi-Dimensional
Related Data in a Computer Database" beschrieben.
-
Ein
Verfahren, Daten zu Gruppen oder Cluster zu ordnen, enthält das Sortieren
aller Knoten (zusammengefasst, wenn zugehörige Verbindungen vorhanden
sind) entsprechend ihrer Position. Die Knoten sind räumlich eingeteilt
und unterteilt, um eine k-D-Baumstruktur zu bilden. Das Ein- und
Unterteilen wird fortgeführt,
bis der Umfang der Datei-Aufzeichnungen, die erforderlich sind,
um jede Unterteilung darzustellen, als unterhalb eines nominellen
Zielwertes geschätzt
wird. Die Ansammlung von Knoten und Verbindungen in diesen Unterabteilungen
definieren die Datengruppen oder Cluster. Die Unterabteilungen werden
dann mit einer räumlichen
Kurve geordnet. Sequentielle Datengruppen-Aufzeichnungen in einer
Datei stellen (vorzugsweise, jedoch nicht notwendigerweise) räumlich aneinander
grenzende Regionen der physischen Welt dar. Die Ordnung sollte sich
natürlich
ergeben. Auf die Weise wird eine Netzwerksdatei geschaffen, die
all die entsprechend der räumlichen
Kurve geordneten Datengruppen enthält. Jede Kachel besteht aus
einer Anzahl von Datengruppen oder Clustern, die in der Netzwerksdatei
aneinandergrenzen. Die Größe einer
Kachel sollte so definiert sein, dass sie bei einem Disk-Zugriff
gelesen werden kann. In alternativen Ausführungsformen könnte die
Kachel größer sein
und darum mehr als einen Disk-Zugriff
zum Lesen benötigen.
Aus Gründen
der Effizienz ist es am besten, dass eine Kachelgröße gewählt wird,
die die Zahl der Disk-Zugriffe gering hält.
-
Bei
der oben erwähnten
k-D-Baumstruktur handelt es sich um eine k-dimensionale binäre Such-Baumstruktur, die auch
als multidimensionale binäre
Baumstruktur bezeichnet wird. Ein auf diesem Gebiet interessantes
Papier ist von F. P. Preparata und M. I. Shamos „Computational Geometry: An
Introduction", Springer Verlag
(1985). Ein Beispiel für
eine geeignete räumliche
Kurve ist eine Hilbert Kurve.
-
Außer der
Nutzung eines in Kacheln aufgeteilten Netzwerkes verwendet die vorliegende
Erfindung ebenfalls eine Anzahl von Netzen. Ein Netz wird definert
als ein Satz von vorausberechneten Pfaden. Diese Erfindung verwendet
vier Arten von Netzen: ein Ausgang-zum-Eingang Netz, ein Umgebungsnetz,
ein eigenes Netz und ein Zu-Nahe-Netz. In dem Ausgang-zum-Eingang
Netz sind vorausberechnete Pfade von den Ausgangsknoten einer oder
mehrerer potentieller Startkacheln zu den Eingangsknoten aller oder
einiger potentieller Zielkacheln enthalten. In einer Ausführungsform
kann es einfacher sein, dass das Ausgang-zum- Eingang Netz nur vorausberechnete Pfade
von den Ausgangknoten einer Kachel zu den Eingangspunkten aller
potentieller Zielkacheln enthält.
In einer anderen Ausführungsform
enthält
das Ausgang-zum-Eingang Netz vorausberechnete Pfade von Ausgangknoten
einer Startkachel zu Eingangsknoten eines Satzes von potentiellen Zieldateien,
wobei der Satz weniger ist als alle potentiellen Zielkacheln. Bei
dieser Alternative kann die Startkachel mehr als ein Ausgang-zum-Eingang Netz haben.
In einer Ausführungsform
kann der Umfang des Satzes so bestimmt sein, dass das Ausgang-zum-Eingang
Netz mit einem einzigen Disk-Zugriff
gelesen werden kann.
-
Ein
Ausgangsknoten kann als ein Knoten gedacht werden, der nach dem
Verlassen einer Kachel verwendet wird, um zu vielen anderen Orten
zu gelangen. Der Satz Ausgangsknoten für eine besondere Kachel wird
so ausgewählt,
dass mindestens einer der Ausgangsknoten auf jedem nützlichen
Pfad aus der Kachel vorhanden ist. Der Eingangsknoten ist ein Knoten, über den
der Weg beim Eintritt in die Kachel führt. Der Satz an Eingangsknoten
ist so gewählt,
dass alle in die Kachel eintretenden nützlichen Pfade über mindestens
einen der Eingangsknoten führen.
Das Bestimmen von Ausgangs- und Eingangsknoten wird später beschrieben.
-
Die
Grenze einer Kachel wird durch einen Satz von Ausgangs-Grenzknoten
und Eingangs-Grenzknoten definiert. Die Ausgangs-Grenzknoten sind
alle Knoten in einer Kachel, die eine nach außen führende Verbindung haben, die
sich zu einem Knoten außerhalb
der Kachel erstrecken. Die Eingangs-Grenzknoten sind all jene Knoten
in einer Kachel, die eine hereinkommende Verbindung haben, die sich
von einem Knoten außerhalb
der Kachel erstreckt. Ein Knoten kann sowohl ein Ausgangs-Grenzknoten
als auch ein Eingangs-Grenzknoten sein.
-
7 zeigt
ein Beispiel für
ein Ausgang-zum-Eingang Netz. Drei Kacheln sind in 7 dargestellt: Kachel 280,
Kachel 282 und Kachel 284. Es wird darauf hingewiesen,
dass die Kacheln, da sie als Beispiel dargestellt werden, ohne jedes
Detail gezeichnet sind. 7 zeigt das Ausgang-zum-Eingang
Netz der Kachel 280, wo der Start in Kachel 280 liegt
und die Ziele in den Kacheln 282 oder 284. Die
Ausgangsknoten für
Kachel 280 enthalten die Knoten N, P, R und U. Die Eingangsknoten
für Kachel 282 enthalten
die Knoten J, K und L. Die Ein gangsknoten für Kachel 284 enthalten
Knoten W, X und Z. Alle mit Pfeilen versehenen Linien zeigen mögliche Pfade
zwischen Knoten an. Alle in 7 gezeigten
Pfade sind also Teile von Pfaden von den Ausgangsknoten der Kachel 280 zu
den Eingangsknoten der Kacheln 282 oder 284. Die
in 7 gezeigten Pfade umfassen also das Ausgang-zum-Eingang
Netz für
Kachel 280.
-
Das
Umgebungsnetz enthält
vorausberechnete Pfade zwischen den Grenzknoten einer Kachel und den
Ausgangsknoten/Eingangsknoten der Kachel. Eine Kachel kann ein Ziel-Umgebungsnetz
für ihre
Eingangsknoten und ein Start-Umgebungsnetz
für ihre
Ausgangsknoten haben. In 8 ist das Start-Umgebungsnetz für Kachel 282 dargestellt.
Knoten J, K, L, AE und AF stellen die Ausgangsknoten für Kachel 282 und
Knoten AA, AB, AC und AD stellen die Grenzknoten für Kachel 282 dar.
Die mit Pfeilen versehenen Linien zeigen die Pfade zwischen den
Grenzknoten und den Ausgang-/Eingangknoten an und umfassen damit
das Umgebungsnetz.
-
Das
eigene Netz enthält
Teile der vorausberechneten Pfade von den Ausgang-Grenzknoten einer
Kachel zu den Eingang-Grenzknoten derselben Kachel. Im allgemeinen
ist es am besten, die Teile der Pfade, die sich innerhalb der Kachel
befinden, auszuschließen,
weil jene Teile bereits in den Datei-Aufzeichnungen enthalten sind,
die die Kachel definieren. Ein Beispiel für einen deutlichen Bedarf für ein eigenes
Netz besteht dann, wenn eine Kachel durch einen Fluss aufgeteilt
wird und die einzige Brücke über den
Fluss außerhalb der
Kachel liegt. Ein Weg von einem Start zu einem Ziel in derselben
Kachel kann also eine Fahrt über
die Kachel hinaus erfordern, um die Brücke zu überqueren. 9 ist
ein Beispiel für
ein eigenes Netz für
Kachel 282. Die dargestellten Pfade sind zwischen den Grenzknoten
AA, AB, AC und AD. Um die Disk-Zugriffe zu verringern, enthält eine
Ausführungsform
das Kombinieren der Daten für
ein eigenes Netz einer Kachel mit denen des Umgebungsnetzes, so
dass die Daten für
beide Netze in einem Disk-Zugriff gelesen werden können.
-
Das
Zu-Nahe-Netz enthält
Teile von vorausberechneten Pfaden zwischen den Grenzknoten einer
oder mehrerer Startkacheln und den Grenzknoten einer oder mehrerer
(oder aller) Zielkacheln, die der Startkachel zu nahe sind, um das
Ausgang-zum-Eingang Netz zu verwenden. Für jedes Startkachel-Zielkachel
Paar ist es im allgemeinen am besten, die Teile des Pfades auszuschließen, die
sich innerhalb der Kacheln befinden, weil jene Teile in den Datei-Aufzeichnungen
enthalten sind, die die Kacheln definieren. Eine effiziente Ausführungsform
des Zu-Nahe-Netzes
enthält
Teile von vorausberechneten Pfaden von den Grenzknoten einer Startkachel zu
den Grenzknoten eines Satzes von Zielkacheln, die zu nahe sind (oder
sich innerhalb einer Kurz-Entfernung-Schwelle befinden). Dieser
Satz sollte so viele zu nahen Zielkacheln enthalten, dass das Zu-Nahe-Netz bei
einem Disk-Zugriff gelesen werden kann. In 10 ist
ein Zu-Nahe-Netz für
die Startkachel 286 und die Zielkachel 288 gezeigt.
Kachel 286 enthält
die Grenzknoten BF, BG, BH, BI und BJ. Kachel 288 enthält die Grenzknoten
BA, BB, BC, BD und BE. Das Zu-Nahe-Netz enthält Pfade von BF nach BA, BG
nach BA, BG nach BB, BG nach BC und BH nach BC.
-
11 beschreibt
ein Verfahren zum Bestimmen der Ausgangs- oder Eingangsknoten einer
Kachel. Das Verfahren nach 11 könnte einmal
durchgeführt
werden, um Ausgangsknoten zu finden, und einmal, um Eingangsknoten
zu finden. Ein alternatives Verfahren zum Bestimmen von Ausgangs-/Eingangsknoten ist in
der am 25. November 1996 angemeldeten U.S. Patentanmeldung mit der
Seriennummer 08/756.258 des Anmelders Richard F. Poppen, „Method
For Determining Exits and Entrances For a Region in a Network" zu finden. Der erste
Schritt in 11 besteht in der Identifikation
von Grenzknoten (Schritt 332). Wie oben beschrieben wurde,
umfassen Grenzknoten Ausgang-Grenzknoten und Eingang-Grenzknoten.
Die Ausgang-Grenzknoten einer speziellen Kachel sind alle Knoten
der Kachel mit einer Verbindung zu einem Knoten außerhalb
der Kachel. Die Eingang-Grenzknoten einer Kachel sind all jene Knoten
innerhalb der Kachel, die eine Verbindung von einem Knoten außerhalb
der Kachel haben. Bei Schritt 332 wird festgestellt, ob
einer der Knoten einer betrachteten Kachel die Bedingungen für einen
Ausgang-Grenzknoten oder einen Eingang-Grenzknoten erfüllt.
-
Zusätzlich zur
Identifikation eines Satzes von Ausgang-Grenzknoten wird ein Satz
von Ausgang-Zielknoten für
eine betrachtete Kachel identifiziert. Ausgang-Zielknoten sind ein Knotensatz, der
von der Kachel aus nur erreicht werden kann, indem ein ausreichender
Aufwand C verursacht wird. Bei einem Verfahren werden die Kacheln,
die teilweise außerhalb
des Aufwandes C liegen (d.h., die einige Knoten enthalten, die von der
Kachel aus nicht erreicht werden können, ohne dass der Aufwand
C verursacht wird) aufgeführt.
Dann sind alle Ausgang-Grenzknoten
jener Kacheln, die Verbindungen haben, die zu Kacheln führen, die
vollständig
außerhalb
der Kosten C liegen, Ausgang-Zielknoten.
-
Eingang-Zielknoten
sind ein Knotensatz, von dem die Kachel nicht erreicht werden kann,
ohne dass ein ausreichender Aufwand verursacht wird. Ein solcher
Satz kann wie für
die Ausgang-Zielknoten definiert werden. Ein ausreichender Aufwand
liegt im allgemeinen, aber nicht immer, zwischen 5 bis 50 Kilometern.
Der ausreichende Aufwand kann auf der Basis von praktischen Versuchen
angepasst werden. Es wird bemerkt, dass der ausreichende Aufwand
C, der zur Identifikation der Zielknoten verwendet wird, ein Aufwand
sein kann, der einen Weg über
das Netzwerk von Verbindungen berücksichtigt oder eine Luftliniendistanz.
-
Ein
Verfahren zum Bestimmen der Ausgang-Zielknoten besteht in einer
parallel ablaufenden Pfadsuche nach dem Verfahren der 5,
wobei alle Ausgang-Grenzknoten
als Startorte und nur eine Start-Prioritätsschlange verwendet wird (das
bedeutet, dass vom Start aus gesucht wird, jedoch nicht vom Ziel
aus). Während
des Suchlaufs werden alle Kacheln, durch die er führt, festgehalten.
Wenn der Schlüssel
für den
Kopfknoten der Prioritätsschlange
größer oder
gleich C ist (der oben angegebene ausreichende Aufwand), dann notiert
das System die Kachel, in der der Kopfknoten sich befindet, und
markiert den Kopfknoten als außerhalb C.
Die Suche wird so fortgeführt,
dass, wenn das System von einem als außerhalb C markierten Kopfknoten aus
sucht, das System für
den Kopfknoten nur den Weg von dem Kopfknoten zu benachbarten Knoten
in Betracht zieht, die in derselben Kachel wie der Kopfknoten vorhanden
sind. Jeder so untersuchte Knoten in dieser Kachel, bei dem es sich
um einen Ausgang-Grenzknoten für
diese Kachel handelt und der eine Verbindung in eine Kachel hat,
die noch nicht als vorher untersucht notiert wurde, wird als ein
Ausgang-Zielknoten markiert.
-
Um
die Eingang-Zielknoten zu finden, wird der parallel ablaufende Pfadsuchvorgang
nach 5 durchgeführt,
wobei die Eingang-Grenzknoten als Ziele verwendet werden, bei welchem
Vorgang nur auf der Basis der Ziel-Prioritätsschlange gearbeitet wird
und im wesentlichen mit dem gleichen Ablauf wie zum Finden von Ausgang-Zielknoten,
nur dass im letzten Schritt nach Eingang-Grenzknoten statt nach
Ausgang-Grenzknoten gesucht wird.
-
Bei
Schritt 336 bestimmt das System zusätzlich zur Identifikation von
Grenzknoten und Zielknoten Pfade zwischen den Grenzknoten und Zielknoten.
Wenn das System versucht, Ausgangsknoten zu finden, dann wird Schritt 336 verwendet,
um Pfade zwischen Ausgang-Grenzknoten und Ausgang-Zielknoten zu
finden. Versucht das System, Eingangsknoten zu finden, dann werden
Pfade zwischen Eingang-Zielknoten und Eingang-Grenzknoten bestimmt.
Der Schritt der Bestimmung von Pfaden enthält die Verwendung der parallelen Pfadsuche
nach 5 in der Weise, dass die Ausgang-Grenzknoten,
die bei Schritt 332 bestimmt wurden, die Startorte sind,
die bei Schritt 334 identifizierten Zielknoten die Ziele
sind, und das System nur eine Start-Prioritätsschlange verwendet. Der parallele
Pfadsuchvorgang wird fortgesetzt, bis die Prioritätsschlange
leer ist. Wenn die Start-Prioritätsschlange
leer ist, baut das System alle möglichen
Pfade auf.
-
Nach
der Bestimmung der Pfade zwischen den Grenzknoten und den Zielknoten
wählt das
System zwei Radien, R1 und R2, aus, so dass R1 < R2 und R2 ≤ ½ C ist. Beispiele für R1 enthalten
1/3 C und ¼ C. Der
Wert von C ist der gleiche Wert, wie er oben für das Finden von Zielknoten
diskutiert wurde. R1 und R2 können
experimentell so angepasst werden, dass eine optimierte Balance
zwischen zu vielen Ausgangsknoten und den Ausgangsknoten entsteht,
die zu weit von den Kacheln entfernt sind, und darum weniger nützlich sind.
-
Nach
der Bestimmung der beiden Radien wählt das System ein Knotenpaar
aus. Ein Knotenpaar wird definiert als ein Grenzknoten und Zielknoten,
zwischen denen ein Pfad besteht. Bei Schritt 340 wählt das
System eines jener Paare, die nicht bereits betrachtet wurden. Bei
Schritt 342 läuft
das System entlang dem Pfad vom Grenzknoten zum Zielknoten und markiert
alle überquerten
Knoten. Wenn es sich bei einem der überquerten und bei Schritt 342 markierten
Knoten um Knoten mit hoher Priorität handelt (Schritt 344),
dann testet das System, ob einer oder mehrere dieser Knoten hoher
Priorität
sich innerhalb der beiden Radien befinden (Schritt 350).
Befindet sich einer der Knoten hoher Priorität innerhalb der beiden Radien
(R1 und R2), dann addiert das System die Bewertung für jeden
dieser Knoten (Schritt 354). Befindet sich keiner der Knoten
hoher Priorität innerhalb
der beiden Radien, dann findet das System den besten Knoten hoher
Priorität
bei Schritt 352 und erhöht
die Bewertung jenes Knotens bei Schritt 354. Wird bei Schritt 344 festgestellt,
das keiner der überquerten
und markierten Knoten ein Knoten mit hoher Priorität ist, dann
kehrt das System in der Schleife zurück zum Schritt 340 und
wählt ein
anderes Paar aus.
-
Als
ein Knoten mit hoher Priorität
wird ein Knoten definiert, an dem eine verhältnismäßig wichtige Auswahl an Richtungen
besteht. Möglicherweise
befindet sich der Knoten hoher Priorität an einer Schnittstelle von Hauptstraßen. Jeder
Straße
auf einer Karte oder einer Verbindung in einem Netzwerk wird eine
echte Priorität zugeordnet.
Die echte Priorität
einer Verbindung kann beispielsweise der üblichen Fahrgeschwindigkeit
für die entsprechende
Straße,
die durch die Verbindung dargestellt wird, entsprechen. Je höher die
Priorität
ist, desto schneller kann die Straße befahren werden. Wenn sechs
verschiedene Klassen von Straßen
angenommen werden, dann stellen die folgenden Angaben als Beispiel
dienende echte Prioritäten
dar: Gassen – 0,
Anliegerstraßen – 1, Hauptstraßen – 2, innerstädtische
Schnellstraßen – 3, Straßen mit
beschränkter
Zufahrt – 4 und
Auto-Schnellstraßen – 5. Eine „Abkürzungspriorität" einer Verbindung
wird definiert als eine Verbindung mit maximaler Priorität Z, so
dass die Verbindung Teil des besten Pfades von einer Verbindung
echter Priorität X
zu einer Verbindung mit der echten Priorität Y ist und Z niedriger ist
als entweder X oder Y. Die „Benutzungspriorität" einer Verbindung
wird definiert als das Maximum zwischen der echten Priorität der Verbindung
und der Abkürzungspriorität der Verbindung.
Die Priorität
eines Knotens besteht in der maximalen Benutzungspriorität, für die zwei
oder mehr vorwärtsführende Verbindungen
mit mindestens der Benutzungspriorität vorhanden sind. Anders ausgedrückt heißt das,
wenn ein Knoten drei vorwärtsgerichtete
Verbindungen hat (d.h. Verbindungen, die den Knoten verlassen) mit
der Benutzungspriorität
1, 1 bzw. 2, dann wird dem Knoten die Priorität 1 zugeteilt. Wenn die Benutzungsprioritäten der
Verbindungen von einem Knoten 1, 2, 2 sind, dann würde dem
Knoten die Priorität
2 zuerkannt. Gibt es nur eine vorwärtsgerichtete Verbindung, dann
hat der Knoten eine Priorität
von 0.
-
Das
Verfahren, einen besten Knoten bei Schritt 352 zu finden,
umfasst das Finden eines Knotens, der proportional der Lage innerhalb
der beiden Radien am nächsten
kommt. Das heißt,
wenn ein Knoten sich innerhalb /R1 befindet, dann untersucht das
System in der proportionalen Entfernung D1/R1,
wobei D1 die Luftlinienentfernung des Knotens
von R1 ist. Ist ein Knoten außerhalb
R2, dann untersucht das System in der proportionalen Entfernung
D2/R2, wobei D2 die
Entfernung des Knotens von R2 ist. Bei Schritt 352 wird
der Knoten mit der geringsten proportionalen Entfernung identifiziert,
wenn nicht D2 größer ist als das Doppelte von
R2, in welchem Fall der Knoten bei D1 ausgewählt wird.
-
Bevor
das Verfahren nach 11 beginnt, hat jeder Knoten
eine Bewertung von 0. Beim ersten Durchlauf des Verfahrens nach 11 steigt
jeder Knoten, dessen Bewertung bei Schritt 354 erhöht wird,
um einen Wert 1 immer dann, wenn er bei Schritt 354 bearbeitet
wird. Da ein Knoten auf vielen Pfaden enthalten sein kann, kann
seine Bewertung viele Male erhöht
werden. Nachdem ein System die Bewertungen der zugeordneten Knoten
erhöht
hat, stellt das System fest, ob noch weitere Paare vorhanden sind,
die noch nicht in Betracht gezogen wurden (Schritt 360).
Sind mehr Paare vorhanden, dann kehrt das System in der Schleife
zurück
zum Schritt 340 und wählt
ein neues Paar.
-
Wenn
bei Schritt 360 keine neuen Paare zu betrachten sind, dann
findet das System bei Schritt 362 den Knoten mit der höchsten Bewertung
heraus. Bei Schritt 364 wird der bei Schritt 362 identifizierte
Knoten einem Satz von potentiellen Ausgängen zugeführt. Bei Schritt 366 werden
alle Pfade, die durch den bei Schritt 362 identifizierten
Knoten führen,
von einer temporären
Pfad-Datenbasis, die bei Schritt 336 zusammengestellt wurde,
ausgeschieden. Dann stellt das System fest, ob in jener temporären Datenbasis
noch Pfade vorhanden sind (Schritt 368). Sind noch Pfade
vorhanden, dann kehrt das System in der Schleife zum Schritt 340 zurück und wählt ein
Paar von Grenz-/Ausgang-Knoten, die zu untersuchen sind. Wenn das
System Schritt 368 erreicht, dann wird die vorher untersuchte
Liste von Paaren ausgeschieden, und es findet eine Initialisierung
in der Weise statt, dass, wenn das System vom Schritt 368 in
der Schleife zum Schritt 340 zurückkehrt, angenommen wird, dass
keine Paare betrachtet wurden. Es werden also die Schritte 340 bis 360 für die gesamte Datenbasis
(abzüglich
der ausgeschiedenen Pfade) wiederholt. Die Schritte 340 bis 368 werden
also fortlaufend wiederholt, bis keine Pfade mehr in der temporären Datenbasis
vorhanden sind. An diesem Punkt hat Schritt 364 einen Satz
von vielen potentiellen Ausgängen
identifiziert.
-
Nachdem
keine Pfade mehr bei Schritt 368 vorhanden sind, geht das
System in der Schleife zum Schritt 372 und passt die Gewichtungen
an. Die Gewichtung wird als die Größe definiert, um die eine Bewertung
bei Schritt 354 erhöht
wurde. Anfangs wurde jede Bewertung um eine Gewichtung gleich 1
erhöht.
Die Pfade werden erneut gewichtet, so dass jeder Knoten auf einem
Pfad die gleiche Gewichtung hat. Die erneute Gewichtung wird so
durchgeführt,
dass Pfade, die nur schwer aufzubauen sind (weil nur wenige akzeptable Knoten
in ihnen vorhanden sind), eine höhere
Gewichtung erhalten. Jedes Mal, wenn ein Ausgangsknoten und sein
zugeordneter Pfad entfernt werden, ordnet das System allen Pfaden
eine temporäre
neue Gewichtung zu. Die temporäre
Gewichtung ist eine Gewichtung, die durch die Anzahl von Pfaden
geteilt ist, die mit dem Knoten zusammenhingen. Wenn also der Knoten
drei Pfade betraf, wird jedem dieser drei Pfade eine temporäre Gewichtung
von 1/3 gegeben. Nachdem für
die derzeitige Iteration alle Ausgänge gefunden wurden (d.h. alle
Pfade wurden entfernt), findet das System für die temporären Gewichtungen
einen Multiplikationsfaktor. Der Multiplikationsfaktor ist das Reziprok
des Durchschnitts aller temporären
Gewichtungen für
alle Paare. Anders gesagt ist er die Anzahl von Paaren, dividiert
durch die Summe aller temporären
Gewichtungen. Als nächstes gewichtet
das System alle Paare neu. Das System multipliziert jede temporäre Gewichtung
mit dem Multiplikationsfaktor und multipliziert dann das Produkt
mit der ursprünglichen
Gewichtung. Für
die neue Gewichtung des Paares zieht das System dann die Quadratwurzel
aus diesem Produkt. Alle Gewichtungen werden entsprechend justiert.
-
Bei
Schritt 374 bearbeitet das System alle Knoten ein weiteres
Mal. Schritt 374 besteht tatsächlich aus einer weiteren Iteration
der Schritte 340 bis 372, die mit einem vollen
Satz an Pfaden und allen zu untersuchenden Paaren beginnt, jedoch
unter Verwendung der neuen Gewichtungen. Schritt 374 bestimmt
darum einen neuen Satz potentieller Ausgänge. Bei Schritt 376 wird
die Anzahl der Knoten in dem neuen Satz potentieller Ausgänge mit
der Anzahl von Knoten in dem unmittelbar vorher gefundenen Satz
von potentiellen Ausgängen
verglichen. Wenn die zuletzt durchgeführte Iteration bei Schritt 374 weniger
Ausgänge
gefunden hat als in dem vorherigen Satz sind, kehrt das System in
der Schleife zurück
zu Schrrit 372. Sind bei Schritt 374 mehr Ausgänge gefunden
worden, dann ist der Arbeitsvorgang beendet und das System verwendet
den vorherigen Satz an Ausgängen
für die
weitere Verwendung als Ausgangsknoten für die Kachel (Schritt 380).
Eingangsknoten werden auf ähnliche
Weise gefunden wie Ausgangsknoten; das System untersucht jedoch
Pfade zwischen Eingang-Zielknoten und Eingang-Grenzknoten.
-
Die
obige Beschreibung enthält
ein spezielles Verfahren zum Bestimmen von Eingangs- und Ausgangsknoten.
Das verwendete Verfahren zum Bestimmen von Eingangs- und Ausgangsknoten
ist für
den Vorgang der Pfadsuche nach 13 nicht
von kritischer Bedeutung. Es können
andere geeignete Verfahren zum Bestimmen eines annehmbaren Satzes
von Ausgangs- oder Eingangsknoten angewendet werden, ohne dass die
Berechnung der Pfadsuche materiell beeinträchtigt wird.
-
Sind
die Ausgangs- und Eingangsknoten einmal für jede Kachel gefunden, dann
können
die Netze für jede
Kachel bestimmt werden. Das Ausgang-zum-Eingang Netz für eine bestimmte
Kachel wird dadurch bestimmt, dass das parallele Pfadsuchverfahren
nach 5 auf die Weise angewendet wird, dass alle Ausgangsknoten
für eine
spezielle Kachel die Startorte sind und alle Eingangsknoten für alle Inhalte
eines Satzes möglicher
Zielkacheln die Ziele sind. Die Suche nach dem Ausgang-zum-Eingang
Netz verwendet die Start-Prioritätsschlange,
verwendet nicht die Ziel-Prioritätsschlange
und wird fortgeführt,
bis die Prioritätsschlangen
leer sind. Wenn ein Suchvorgang die Ziel-Prioritätsschlange nicht verwendet,
dann sucht er nur von Startort(en) zu Zielort(en). Alle Kacheln,
die von der speziellen untersuchten Kachel zumindest weiter entfernt sind
als die Kurz-Entfernung-Schwelle, werden als potentielle Zielkacheln
angenommen und ihre Eingangsknoten können in die Suche zum Bestimmen
des Ausgang-zum-Eingang
Netzes einbezogen werden.
-
Das
eigene Netz wird mit Hilfe des parallelen Pfadsuchvorgangs nach 5 erzeugt,
wobei die Ausgang-Grenzknoten als die Startorte und die Eingang-Grenzknoten als die
Zielorte verwendet werden. Das eigene Netz wird unter Verwendung
einer Start-Prioritätsschlange
erzeugt, eine Ziel-Prioritätsschlange
wird nicht verwendet. Der Suchvorgang wird fortgeführt, bis
die Start-Prioritätsschlange
leer ist, oder bis alle Ziel-Orte erreicht wurden und der Schlüssel des
Kopfknotens der Start-Prioritätsschlange
größer ist
als der höchste
be kannte Aufwand von jedem der Startorte zu jedem der Ziele entlang
eines Pfades, der aus der aufgerufenen Liste aufgebaut werden kann.
Eine wahlweise Begrenzung für
den Suchvorgang nach dem eigenen Netz besteht darin, dass kein Pfad
untersucht werden darf, der weiter als eine Distanz D von der Kachel
entfernt ist. Beispielsweise kann D der doppelte Durchmesser der
Kachel sein.
-
Das
Zu-Nahe-Netz wird unter Benutzung des parallelen Pfadsuchvorgangs
nach 5 berechnet. Die Ausgang-Grenzknoten der Startkachel
werden als die Startorte verwendet. Die Zielorte sind die Eingang-Grenzknoten
von Zielkacheln, die der Startkachel zu nahe sind. Die Arbeitsabläufe verwenden
die Start-Prioritätsschlange
und nicht eine Ziel-Prioritätsschlange.
Die Stopp-Bedingung ist erfüllt,
wenn die Start-Prioritätsschlange
leer ist oder wenn alle Zielorte erreicht wurden und der Schlüssel des
Kopfknotens der Start-Prioritätsschlange
größer ist
als der höchste
bekannte Aufwand auf einem Pfad von jedem Startort zu jedem Zielort,
der aus der aufgerufenen Liste aufgebaut werden kann. Eine wahlfreie
Begrenzung für
den Pfadsuchvorgang besteht darin, dass das System keine Pfade untersuchen
kann, die mehr als k von jeder der Kacheln entfernt sind, k = 2·D, wobei
D die maximale Entfernung (Luftlinie) zwischen beliebigen zwei Punkten
in der Start- und Zielkachel ist.
-
12 zeigt
ein Flussdiagramm, mit dem der Vorgang des Aufbauens eines Umgebungsnetzes
für eine
besondere Kachel erläutert
wird. Der Vorgang nach 12 wird nach dem Vorgang nach 11 durchgeführt und
verwendet Daten, die während
des Vorgangs nach 11 bestimmt wurden. Bei Schritt 400 findet das
System den Ausgangsknoten mit der höchsten Bewertung. Dabei ist
die Bewertung die endgültige
Bewertung, die bei Schritt 354 der 11 erhöht wurde.
Bei Schritt 402 bestimmt das System alle Pfade, die durch jenen
Ausgang gehen. Das System kennt die Pfade bereits aus dem Verfahren
nach 11. Bei Schritt 404 wird jeder dieser
Pfade markiert. Bei Schritt 406 werden relevante Abschnitte
jedes der markierten Pfade dem Umgebungsnetz hinzugefügt. Die
relevanten Abschnitte sind die Sektionen zwischen den Grenzknoten
und den Ausgangs-/Eingangsknoten. Bei Schritt 408 stellt
das System fest, ob noch Ausgangs-/Eingangsknoten vorhanden sind,
die nicht untersucht wurden. Wurden alle solche Knoten untersucht,
dann ist die Arbeit des Systems beendet und das Umgebungsnetz vollständig. Sind
noch Ausgangs-/Eingangsknoten vorhanden, die nicht in Betracht gezogen
wurden, dann kehrt das System in der Schleife zurück zu Schritt 400,
betrachtet den Satz von Ausgangs-/Eingangsknoten, die noch nicht
berücksichtigt
wurden, und findet den Ausgangs-/Eingangsknoten mit der höchsten Bewertung
heraus.
-
13 ist
ein Flussdiagramm der Pfadsuchberechnung der vorliegenden Erfindung.
Die Pfadsuchberechnung wird unter Verwendung eines Rechners auf
einer prozessorlesbaren Darstellung eines Netzwerkes durchgeführt, das
in Kacheln aufgeteilt ist und weiter ausgebaut wurde durch den Einschluss
jedes der oben beschriebenen Netze. Bei Schritt 450 erhält das System
eine Anzeige eines Starts. Bei Schritt 452 empfängt das
System eine Anzeige eines Ziels. Das Empfangen von Angaben für Start
und Ziel kann beinhalten, dass ein Nutzer Start und Ziel mit Hilfe
einer Tastatur, einer Maus, eines Lichtstiftes, über Spracherkennungsmittel oder
dergleichen eingibt. Wenn die Erfindung unter Verwendung von Software
implementiert wird, kann der Empfang von Angaben über Start
und Ziel einen Anruf bei der entsprechenden Funktion enthalten,
die den Pfadsuchvorgang durchführt,
wobei Quellen- und/oder Zielparameter weitergegeben oder einer oder
mehrere gezielte Hinweise auf Quellen-/Zielinformationen gegeben
werden. Das Empfangen der Angabe über Quelle und Ziel kann außerdem das
Lesen einer permanent hartverdrahteten oder permanent gespeicherten
Quelle oder eines solchen Ziels enthalten.
-
Nach
dem Empfang von Start und Ziel untersucht das System, ob Start und
Ziel sich in derselben Kachel befinden (Schritt 454). Befinden
sich Start und Ziel in derselben Kachel, bestimmt das System einen
Pfad vom Start zum Ziel mit demselben Kachelverfahren wie bei Schritt 456.
Befinden sich Start und Ziel nicht in derselben Kachel, dann stellt
das System bei Schritt 458 fest, ob die Startkachel (die
Kachel, in der sich der Start befindet) sich innerhalb einer Kurz-Entfernung-Schwelle der Zielkachel
(die Kachel, in der sich das Ziel befindet) befindet. Für den Test,
ob sich die Kacheln innerhalb einer solchen Entfernungsschwelle
voneinander befinden, kann ein geeigneter Test aus mehreren geeigneten
Tests angewendet werden, mit denen bestimmt werden kann, ob das
Zu-Nahe-Netz oder das Ausgang-zum-Eingang Netz geeignet ist. Ein
Test besteht in der Feststellung, ob die Ausgangsknoten der Startkachel
sich innerhalb eines konstanten Aufwandes der Eingangsknoten der
Zielkachel befinden. Diese Konstante kann experimentell bestimmt
werden. Ein weiterer Test ist die Feststellung, ob ein Ausgangsknoten
der Startkachel näher
an der Zielkachel ist als irgendein Eingangsknoten der Zielkachel.
In einem dritten Test werden alle Kacheln, die sich innerhalb einer
Kurz-Entfernung-Schwelle einer Startkachel befinden, als jene identifiziert,
die sich innerhalb eines Bereiches befinden, der durch die Ausgang-Zielknoten begrenzt
ist. Alternativ sind all jene Kacheln, die zu nahe an einer Startkachel
sind, jene Kacheln, die während
des Suchvorgangs nach Ausgang-Zielknoten
untersucht werden.
-
Wenn
die Kacheln sich innerhalb einer Kurz-Entfernung-Schwelle voneinander
befinden, führt
das System den Vorgang nach Schritt 460 durch. Befinden
sich die Kacheln nicht innerhalb einer solchen Entfernungsschwelle
voneinander, führt
das System den Vorgang nach Schritt 462 durch. Nach Durchführung des jeweiligen
Schrittes, 456, Schritt 460 oder Schritt 462,
schaltet das System in der Schleife zum Schritt 464 und der
Pfad wird berichtet (Schritt 464). Zum Schritt des Berichtens
des Pfades kann es gehören,
dem Nutzer die Angaben von einer Abzweigung zur nächsten auf
einem Bildschirm, als Ausdruck oder als Audio-Ausgabe anzugeben. Zusätzlich kann
das Berichten des Pfades das Zeichnen einer Karte enthalten, bei
der ein Pfad auf einer Karte besonders hervorgehoben ist, kann das
Erzeugen einer Datei mit Richtungsangaben, das Erzeugen einer Datei
des Pfades, das Erzeugen eines Pointers für eine Datei, das Zurückschicken
des Pfades als Teil eines Funktionsanrufes, das Übermitteln von Daten des Pfadsuchvorgangs
an einen den Pfadsuchvorgang anrufenden Vorgang usw. enthalten.
-
14 ist
ein Flussdiagramm, mit dem Schritt 456 der 13 detaillierter
erklärt
wird. Das Verfahren nach 14 wird
durchgeführt,
wenn Quelle und Ziel sich in derselben Kachel befinden. Bei Schritt 480 liest das
System die Daten für
die Kachel von Start und Ziel. Bei Schritt 482 liest das
System die Daten für
das eigene Netz. Die Ausdrücke „eigenes
Netz", „Ausgang-zum-Eingang
Netz", „Umgebungsnetz" und „Zu-Nahe-Netz" beziehen sich sowohl
auf die Daten, die die Netze ausmachen, als auch auf die tatsächlichen
graphisch angegebenen Knoten und Verbindungen. Auch ist es angemessen
und passend zu sagen, dass ein Prozessor „das eigene Netz liest" oder „die Daten
liest, die das eigene Netz darstellen". Mit dem Ausdruck des Lesens einer
Kachel, eines eigenen Netzes oder von Daten für eine Kachel oder der Daten
für ein
eigenen Netz ist gemeint, dass die dazu gehörenden Daten gelesen werden.
In einer Ausführungsform
sind die Daten für
das Netzwerk, einschließlich
der Kacheln und der Netze, auf einer CD ROM gespeichert.
-
Nachdem
die zugehörigen
Daten bei den Schritten 480 und 482 gelesen wurden,
erkundet das System bei Schritt 484 vom Start und bei Schritt 486 vom
Ziel aus. Das Suchverfahren bei beiden Schritten, 484 und 486,
ist das in 4 dargestellte Verfahren, eingeschränkt, wie
später
beschrieben wird. Die Schritte 484 und 486 können gleichzeitig
mit getrennten Start- und Ziel-Prioritätsschlangen oder können getrennt
durchgeführt werden.
Zu einer Exploration vom Start aus gehört die Verwendung einer Start-Prioritätsschlange
(und keine Ziel-Prioritätsschlange)
und die Berücksichtigung
nur der Knoten, die sich innerhalb der Kachel und des eigenen Netzes
befinden. Das Suchen vom Ziel aus bei Schritt 486 enthält die Verwendung
einer Ziel-Prioritätsschlange
(und keiner Start-Prioritätsschlange)
und die Berücksichtigung
der Knoten, die sich innerhalb der Kachel und des eigenen Netzes
befinden. Alternativ kann die Suche vom Start aus das eigene Netz
verwenden und die Suche vom Ziel aus dies nicht verwenden. Beide
Suchvorgänge
werden fortgeführt,
bis die entsprechende Prioritätsschlange
leer ist oder genug (z.B. 10) Verbindungsknoten gefunden wurden.
Nachdem beide Suchvorgänge
abgeschlossen wurden, baut das System einen Pfad auf (Schritt 488).
Der Pfad verwendet, wie oben beschrieben, die besten Verbindungsknoten,
so dass der Pfad den Aufwand für
den Weg vom Start zum Ziel minimiert. Es wird bemerkt, dass die
Schritte nach 14 in einer anderen als der
dargestellten Reihenfolge durchgeführt werden können. Beispielsweise
können
die Schritte 484 und 486 gleichzeitig oder in
umgekehrter Reihenfolge durchgeführt
werden. Die Schritte 480 und 482 können vor
den Schritten 450 und 452, gleichzeitig mit den
Schritten 450 und 452 oder zu anderen geeigneten
Zeiten durchgeführt
werden.
-
15 ist
ein Flussdiagramm, das die Schritte zum Finden eines Pfades unter
Verwendung des Ausgang-zum-Eingang Netzes (Schritt 462 der 13)
erklärt.
Bei Schritt 500 liest das System die Startkachel. Bei Schritt 502 liest
das System das eigene Netz für
den Start. Bei Schritt 504 liest das System das Umgebungsnetz
für den
Start. Es wird angemerkt, dass die Abläufe der Schritte 502 und 504 zu
einem einzigen Schritt kombiniert werden können. Bei Schritt 506 liest
das System die Zielkachel. Bei Schritt 508 liest das System
das eigene Netz für
das Ziel. Bei Schritt 510 liest das System das Umgebungsnetz
für das
Ziel. Bei Schritt 512 liest das System das geeignete Ausgang-zum-Eingang
Netz für
die Startkachel und die Zielkachel. Bei Schritt 514 sucht
das System vom Start aus. Bei Schritt 516 sucht das System
vom Ziel aus. Bei Schritt 518 wird ein Pfad aufgebaut.
-
Der
Schritt 514 umfasst eine Pfadsuche, bei der der Vorgang
nach 4 angewendet wird, eine Start-Prioritätsschlange
(und keine Ziel-Prioritätsschlange),
die Startkachel, das eigene Netz für den Start und das Umgebungsnetz
für den
Start. Der Schritt 516 umfasst die Suche vom Ziel aus,
für die
das Verfahren der 4 verwendet wird, die Ziel-Prioritätsschlange
(und keine Start-Prioritätsschlange)
verwendet wird, die Zielkachel, das Umgebungsnetz für das Ziel,
das eigene Netz für
das Ziel und das Ausgang-zum-Eingang Netz für das Paar Start und Ziel verwendet
wird. Es wird angemerkt, dass die Suche der Schritte 514 und 516 fortgeführt wird,
bis die jeweiligen Prioritätsschlangen
leer sind oder genug (beispielsweise 10) Verbindungsknoten gefunden
wurden. Der bei Schritt 518 aufgebaute Pfad ist der Pfad,
der die besten Verbindungsknoten aufweist, wie oben beschrieben.
Zusätzlich
wird erwähnt,
dass die Schritte nach 15 in einer anderen Reihenfolge
ausgeführt
werden können;
beispielsweise können
die Schritte 514 und 516 in umgekehrter Reihenfolge oder
gleichzeitig ausgeführt
werden. Die Schritte des Lesens von Daten können ebenfalls vor oder gleichzeitig mit
den Schritten 450 bis 454 der 13 durchgeführt werden.
-
16 ist
ein Flussdiagramm, das die Schritte der Bestimmung eines Pfades
zwischen zwei Kacheln erklärt,
die sich nicht innerhalb der Kurz-Entfernung-Schwelle befinden (Schritt 460 der 13).
Bei Schritt 540 liest das System die Startkachel. Bei Schritt 542 liest
das System das eigene Netz für
die Startkachel. Bei Schritt 544 liest das System die Zielkachel.
Bei Schritt 546 liest das System das eigene Netz für die Zielkachel. Bei
Schritt 548 liest das System das Zu-Nahe-Netz für das Paar aus Zielkachel und
Startkachel. Bei Schritt 550 sucht das System vom Start
aus. Bei Schritt 552 sucht das System vom Ziel aus. Bei
Schritt 554 wird ein Pfad aufgebaut.
-
Der
Suchvorgang vom Start aus bei Schritt 550 umfasst das Durchführen des
Vorgangs der 4, bei dem eine Start-Prioritätsschlange
(und keine Ziel-Prioritätsschlange),
die Startkachel und das eigene Netz für die Startkachel verwendet
wird. Der Schritt der Suche vom Ziel aus bei Schritt 552 umfasst
das Durchführen des
Vorgangs nach 4, bei dem eine Ziel-Prioritätsschlange
(und nicht die Start-Prioritätsschlange),
die Zielkachel, das eigene Netz für die Zielkachel und das Zu-Nahe-Netz
verwendet werden. Beide Suchvorgänge werden
fortgeführt,
bis die Prioritätsschlangen
leer sind oder genug (beispielsweise 10) Verbindungsknoten gefunden
wurden. Der bei Schritt 554 aufgebaute Pfad enthält den Weg über den
besten Verbindungsknoten, wie oben diskutiert wurde. Ähnlich wie
die Arbeitsabläufe
nach 14 und 15, können die
Schritte nach 16 in anderen geeigneten Reihenfolgen
als in der Zeichnung dargestellt durchgeführt werden.
-
Obgleich
die oben zur Beschreibung der vorliegenden Erfindung verwendeten
Beispiele sich auf eine elektronische Straßenkarte richteten, ist die
vorliegende Erfindung auch auf die Anwendung für jede geeignete prozessorlesbare
Darstellung eines Netzwerkes geeignet. Zu geeigneten Netzwerken
gehören
eine graphische Darstellung eines Herstellungsprozesses, kombinierte
Reiseroutenpläne
(beispielsweise eine graphische Darstellung einer Fahrt zwischen
Punkten mit Flugzeugen, Zügen,
Automobilen, Bussen usw.), ein System für die Verabreichung einer medizinischen
Behandlung usw. Wenn das Netzwerk beispielsweise einen Herstellungsprozess
darstellt, können
die Knoten Entscheidungspunkte in den Abläufen darstellen (beispielsweise welche
Station für
den Transport eines Artikels des Herstellers gewählt wird oder welcher Halbleiterprozess verwendet
wird), und die Verbindungen können
Prozesszeit oder Herstellungskosten darstellen.