DE69934301T2 - Wegesuchsystem - Google Patents

Wegesuchsystem Download PDF

Info

Publication number
DE69934301T2
DE69934301T2 DE69934301T DE69934301T DE69934301T2 DE 69934301 T2 DE69934301 T2 DE 69934301T2 DE 69934301 T DE69934301 T DE 69934301T DE 69934301 T DE69934301 T DE 69934301T DE 69934301 T2 DE69934301 T2 DE 69934301T2
Authority
DE
Germany
Prior art keywords
tile
path
destination
network
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69934301T
Other languages
English (en)
Other versions
DE69934301D1 (de
Inventor
Koji San Jose AMAKAWA
J. Edward Union City SURANYI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TomTom North America Inc
Original Assignee
Tele Atlas North America Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tele Atlas North America Inc filed Critical Tele Atlas North America Inc
Application granted granted Critical
Publication of DE69934301D1 publication Critical patent/DE69934301D1/de
Publication of DE69934301T2 publication Critical patent/DE69934301T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3446Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0283Price estimation or determination

Description

  • 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.
  • Figure 00180001
  • 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.
  • Figure 00190001
  • 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.
  • Figure 00200001
  • 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.
  • Figure 00210001
  • 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.
  • Figure 00220001
  • 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.
  • Figure 00270001
  • 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.
  • Figure 00280001
  • 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.
  • Figure 00290001
  • 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.
  • Figure 00300001
  • 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.
  • Figure 00310001
  • 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.
  • Figure 00320001
  • 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.
  • Figure 00340001
  • 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.

Claims (26)

  1. Verfahren zum Benutzen eines Prozessors (12) zur Bestimmung eines Pfades in einer elektronischen Übersichtskarte von einem Start zu einem Ziel, wobei die elektronische Karte eine oder mehrere Kacheln hat und das Verfahren folgende Schritte aufweist: Bestimmen, ob sich der Start und das Ziel auf einer einzigen Kachel befinden (454), Bestimmen, ob sich der Start und das Ziel auf Kacheln innerhalb einer Entfernungsschwelle voneinander befinden (458), Durchführen einer ersten Pfadsuche unter Benutzung eines oder mehrerer Netze zum Bestimmen des Pfades, wenn sich der Start und das Ziel auf getrennten Kacheln nicht innerhalb einer Entfernungsschwelle voneinander befinden, wobei der Schritt des Durchführens der ersten Pfadsuche zumindest eine Startkachel, ein der Startkachel zugeordnetes erstes Umgebungsnetz, eine Zielkachel, ein der Zielkachel zugeordnetes zweites Umgebungsnetz und ein Ausgang-Eingang-Netz benutzt (462), und Berichten des Pfades (464).
  2. Verfahren nach Anspruch 1, weiter gekennzeichnet durch folgende Schritte: Durchführen einer zweiten Pfadsuche mit einem Prozessor zum Bestimmen des Pfades unter Benutzung eines ersten Satzes von einem oder mehreren Netzen, wenn sich der Start und das Ziel auf einer einzigen Kachel befinden (456), und Durchführen einer dritten Pfadsuche mit einem Prozessor zum Bestimmen des Pfades unter Benutzung eines zweiten Satzes von einem oder mehreren Netzen, wenn sich der Start und das Ziel auf Kacheln innerhalb einer Entfernungsschwelle voneinander befinden (460).
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die zweite Pfadsuche mindestens eine Startkachel und ein erstes der Startkachel zugeordnetes eigenes Netz benutzt.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass der Schritt des Durchführens der zweiten Pfadsuche folgende Schritte umfasst: Pfadsuche von dem Start innerhalb der Startkachel und Pfadsuche von dem Ziel innerhalb der Startkachel und des ersten eigenen Netzes.
  5. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die dritte Pfadsuche mindestens eine Startkachel, ein erstes der Startkachel zugeordnetes eigenes Netz, eine Zielkachel, ein zweites der Zielkachel zugeordnetes eigenes Netz und ein Zu-Nahe-Netz benutzt.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass der Schritt des Durchführens der dritten Pfadsuche folgende Schritte umfasst: Pfadsuche von dem Start unter Benutzung der Startkachel und des ersten eigenen Netzes und Pfadsuche von dem Ziel unter Benutzung der Zielkachel, des zweiten eigenen Netzes und des Zu-Nahe-Netzes.
  7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die erste Pfadsuche zusätzlich ein erstes der Startkachel zugeordnetes eigenes Netz und ein zweites der Zielkachel zugeordnetes eigenes Netz benutzt und dass Daten für das erste eigene Netz und Daten für das erste Umgebungsnetz kombiniert werden.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass der Schritt des Durchführens der ersten Pfadsuche folgende Schritte umfasst: Pfadsuche von dem Start unter Benutzung der Startkachel, des ersten Umgebungsnetzes und des ersten eigenen Netzes und Pfadsuche von dem Ziel unter Benutzung der Zielkachel, des zweiten Umgebungsnetzes, des zweiten eigenen Netzes und des Ausgang-zum-Eingang Netzes.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass der Schritt der Pfadsuche von dem Ziel solange weiter durchgeführt wird bis eine Prioritätsschlange leer ist.
  10. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass der Schritt der ersten Pfadsuche den Aufbau des Pfades einschließt.
  11. Verfahren nach Anspruch 1, weiter gekennzeichnet durch folgende Schritte: Empfangen einer Anzeige des Starts (450) und Empfangen einer Anzeige des Ziels (452).
  12. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die prozessorlesbare Darstellung eines Netzwerkes eine elektronische Übersichtskarte ist.
  13. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Durchführens der ersten Pfadsuche folgende Schritte umfaßt: Bestimmen eines Pfades von dem Start zu dem ersten Umgebungsnetz, Bestimmen eines Pfades von dem zweiten Umgebungsnetz zum Ziel und Bestimmen eines Pfades von dem ersten Umgebungsnetz zu dem zweiten Umgebungsnetz.
  14. Prozessorlesbares Speichermedium mit einem prozessorlesbaren Code, der auf einem prozessorlesbaren Speichermedium abgelegt ist, wobei der prozessorlesbare Code zum Programmieren eines Prozessors (12) zum Durchführen eines Verfahrens zur Bestimmung eines Pfades in einer elektronischen Übersichtskarte von einem Start zu einem Ziel dient, wobei die elektronische Karte eine Mehrzahl von Kacheln hat und das Verfahren folgende Schritte umfaßt: Bestimmen, ob sich der Start und das Ziel auf einer einzigen Kachel befinden (454), Bestimmen, ob sich der Start und das Ziel auf Kacheln innerhalb einer Entfernungsschwelle voneinander befinden (458), Durchführen einer ersten Pfadsuche unter Benutzung eines oder mehrerer Netze zum Bestimmen des Pfades, wenn sich der Start und das Ziel auf getrennten Kacheln nicht innerhalb einer Entfernungsschwelle voneinander befinden, wobei der Schritt des Durchführens der ersten Pfadsuche zumindest eine Startkachel, ein der Startkachel zugeordnetes erstes Umgebungsnetz, eine Zielkachel, ein der Zielkachel zugeordnetes zweites Umgebungsnetz und ein Ausgang-zum- Eingang Netz benutzt (462), und Berichten des Pfades (464).
  15. Prozessorlesbares Speichermedium nach Anspruch 14, weiter gekennzeichnet durch folgende Schritte: Durchführen einer zweiten Pfadsuche mit einem Prozessor zum Bestimmen des Pfades unter Benutzung eines ersten Satzes von einem oder mehreren Netzen, wenn sich der Start und das Ziel auf einer einzigen Kachel befinden (456), und Durchführen einer dritten Pfadsuche mit einem Prozessor zum Bestimmen des Pfades unter Benutzung eines zweiten Satzes von einem oder mehreren Netzen, wenn sich der Start und das Ziel auf Kacheln innerhalb einer Entfernungsschwelle voneinander befinden (460).
  16. Prozessorlesbares Speichermedium nach Anspruch 15, weiter gekennzeichnet durch den Schritt des Berichtens des Pfades (464).
  17. Prozessorlesbares Speichermedium nach Anspruch 15, dadurch gekennzeichnet, dass die zweite Pfadsuche mindestens eine Startkachel und ein erstes der Startkachel zugeordnetes eigenes Netz benutzt.
  18. Prozessorlesbares Speichermedium nach Anspruch 15, dadurch gekennzeichnet, dass der Schritt des Durchführens der zweiten Pfadsuche folgende Schritte umfasst: Pfadsuche von dem Start innerhalb der Startkachel und Pfadsuche von dem Ziel innerhalb der Startkachel und des ersten eigenen Netzes.
  19. Prozessorlesbares Speichermedium nach Anspruch 15, dadurch gekennzeichnet, dass die dritte Pfadsuche mindestens eine Startkachel, ein erstes der Startkachel zugeordnetes eigenes Netz, eine Zielkachel, ein zweites der Zielkachel zugeordnetes eigenes Netz und ein Zu-Nahe-Netz benutzt.
  20. Prozessorlesbares Speichermedium nach Anspruch 14, dadurch gekennzeichnet, dass der Schritt des Durchführens der ersten Pfadsuche folgende Schritte umfasst: Pfadsuche von dem Start unter Benutzung mindestens der Startkachel und des ersten Umgebungsnetzes und Pfadsuche von dem Ziel unter Benutzung mindestens der Zielkachel, des zweiten Umgebungsnetzes und des Ausgang-zum-Eingang Netzes.
  21. Prozessorlesbares Speichermedium nach Anspruch 14, dadurch gekennzeichnet, dass die prozessorlesbare Darstellung eines Netzwerkes eine elektronische Übersichtskarte ist.
  22. Vorrichtung zum Bestimmen eines Pfades in einer elektronischen Übersichtskarte von einem Start zu einem Ziel, wobei die elektronische Karte eine oder mehrere Kacheln hat, mit einer Ausgabeeinheit (26), mit einem Prozessor (12), der mit der Ausgabeeinheit (26) kommuniziert, und mit einem prozessorlesbaren Speichermedium zum Speichern eines Codes, wobei das prozessorlesbare Speichermedium mit dem Prozessor (12) kommuniziert und der Code den Prozessor (12) zur Durchführung folgender Verfahrensschritte programmieren kann: Bestimmen, ob sich der Start und das Ziel auf einer einzigen Kachel befinden (454), Bestimmen, ob sich der Start und das Ziel auf Kacheln innerhalb einer Entfernungsschwelle voneinander befinden (458), Durchführen einer ersten Pfadsuche mit einem Prozessor, um den Pfad unter Benutzung eines dritten Satzes von einem oder mehreren Netzen zu bestimmen, wenn sich der Start und das Ziel auf getrennten Kacheln nicht innerhalb einer Entfernungsschwelle voneinander befinden (462), und Berichten des Pfades (464).
  23. Vorrichtung nach Anspruch 22, dadurch gekennzeichnet, dass der Prozessor (12) außerdem folgende Schritte ausführt: Durchführen einer zweiten Pfadsuche mit einem Prozessor zum Bestimmen des Pfades unter Benutzung eines ersten Satzes von einem oder mehreren Netzen, wenn sich der Start und das Ziel auf einer einzigen Kachel befinden (456), und Durchführen einer dritten Pfadsuche mit einem Prozessor zum Bestimmen des Pfades unter Benutzung eines zweiten Satzes von einem oder mehreren Netzen, wenn sich der Start und das Ziel auf Kacheln innerhalb einer Entfernungsschwelle voneinander befinden (460).
  24. Vorrichtung nach Anspruch 23, dadurch gekennzeichnet, dass die zweite Pfadsuche mindestens eine Startkachel und ein erstes der Startkachel zugeordnetes eigenes Netz benutzt.
  25. Vorrichtung nach Anspruch 23, dadurch gekennzeichnet, dass die dritte Pfadsuche mindestens eine Startkachel, ein erstes der Startkachel zugeordnetes eigenes Netz, eine Zielkachel, ein zweites der Zielkachel zugeordnetes eigenes Netz und ein Zu-Nahe-Netz benutzt.
  26. Vorrichtung nach Anspruch 22, dadurch gekennzeichnet, dass die erste Pfadsuche mindestens eine Startkachel, ein der Startkachel zugeordnetes erstes Umgebungsnetz, eine Zielkachel, ein der Zielkachel zugeordnetes zweites Umgebungsnetz und ein Ausgang-zum-Eingang Netz benutzt.
DE69934301T 1998-02-13 1999-02-08 Wegesuchsystem Expired - Lifetime DE69934301T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US23504 1993-02-25
US09/023,504 US6016485A (en) 1998-02-13 1998-02-13 System for pathfinding
PCT/US1999/002649 WO1999041692A1 (en) 1998-02-13 1999-02-08 A system for pathfinding

Publications (2)

Publication Number Publication Date
DE69934301D1 DE69934301D1 (de) 2007-01-18
DE69934301T2 true DE69934301T2 (de) 2007-06-21

Family

ID=21815477

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69934301T Expired - Lifetime DE69934301T2 (de) 1998-02-13 1999-02-08 Wegesuchsystem

Country Status (8)

Country Link
US (1) US6016485A (de)
EP (1) EP1062616B1 (de)
JP (2) JP2002503817A (de)
AT (1) ATE347712T1 (de)
AU (1) AU2662199A (de)
CA (1) CA2320159C (de)
DE (1) DE69934301T2 (de)
WO (1) WO1999041692A1 (de)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US6073076A (en) * 1998-03-27 2000-06-06 Navigation Technologies Corporation Memory management for navigation system
US6259988B1 (en) * 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
US6885937B1 (en) * 1998-12-10 2005-04-26 Tele Atlas North America, Inc. Shortcut generator
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US6559865B1 (en) * 1999-05-21 2003-05-06 Tele Atlas North America, Inc. Computing sign text for branches of an electronic map network
US7428525B1 (en) 1999-11-12 2008-09-23 Tele Atlas North America, Inc. Virtual street addressing radius
US6826472B1 (en) * 1999-12-10 2004-11-30 Tele Atlas North America, Inc. Method and apparatus to generate driving guides
US6480785B1 (en) 2000-09-06 2002-11-12 Vindigo, Inc. System for determining a route and presenting navigational instructions therefor
EP1421454B1 (de) * 2001-02-26 2014-09-10 ALK Technologies, Inc. Thin-client-navigation und routenlenksystem
US6477460B2 (en) * 2001-02-27 2002-11-05 Metro One Telecommunications, Inc. Process and system for the annotation of machine-generated directions with easily recognized landmarks and other relevant information
US20030074226A1 (en) * 2001-10-15 2003-04-17 Chris Rostron Actuarial data processing system and an actuarial method
US8620777B2 (en) * 2001-11-19 2013-12-31 Hewlett-Packard Development Company, L.P. Methods, software modules and software application for logging transaction-tax-related transactions
US20050131805A1 (en) * 2001-11-19 2005-06-16 Wolfgang Bross Software interface, method and computer program product product for linking a business application to a component of a computer-based transaction tax processing system
US6545637B1 (en) 2001-12-20 2003-04-08 Garmin, Ltd. Systems and methods for a navigational device with improved route calculation capabilities
US6847890B1 (en) 2001-12-21 2005-01-25 Garmin Ltd. Guidance with feature accounting for insignificant roads
US6892135B1 (en) 2001-12-21 2005-05-10 Garmin Ltd. Navigation system, method and device with automatic next turn page
US7277794B1 (en) 2001-12-21 2007-10-02 Garmin Ltd. Guidance with feature accounting for insignificant roads
US7221287B2 (en) 2002-03-05 2007-05-22 Triangle Software Llc Three-dimensional traffic report
US20040006424A1 (en) * 2002-06-28 2004-01-08 Joyce Glenn J. Control system for tracking and targeting multiple autonomous objects
US20040052239A1 (en) 2002-08-29 2004-03-18 Nesbitt David W. Automated route determination
US20040044465A1 (en) * 2002-08-29 2004-03-04 Nesbitt David W. Automated route determination based on day of route traversal
US7133771B1 (en) 2002-08-29 2006-11-07 America Online, Inc. Automated route determination to avoid a particular maneuver
US7474960B1 (en) 2002-12-30 2009-01-06 Mapquest, Inc. Presenting a travel route
US7818116B1 (en) 2002-12-30 2010-10-19 Mapquest, Inc. Presenting a travel route in a ground-based vehicle
US7321824B1 (en) 2002-12-30 2008-01-22 Aol Llc Presenting a travel route using more than one presentation style
SG119169A1 (en) * 2003-01-20 2006-02-28 Nanyang Polytechnic Path searching system using multiple groups of cooperating agents and method thereof
WO2005013063A2 (en) 2003-07-25 2005-02-10 Landsonar, Inc. System and method for determining recommended departure time
US20050134504A1 (en) * 2003-12-22 2005-06-23 Lear Corporation Vehicle appliance having hands-free telephone, global positioning system, and satellite communications modules combined in a common architecture for providing complete telematics functions
US7966003B2 (en) * 2004-07-09 2011-06-21 Tegic Communications, Inc. Disambiguating ambiguous characters
US7315844B2 (en) * 2004-10-08 2008-01-01 International Business Machines Corporation System, method and program to estimate cost of a product and/or service
US7908080B2 (en) 2004-12-31 2011-03-15 Google Inc. Transportation routing
US20060235610A1 (en) * 2005-04-14 2006-10-19 Honeywell International Inc. Map-based trajectory generation
KR101165311B1 (ko) * 2005-07-13 2012-07-18 엔에이치엔(주) 다면적인 관계 설정을 촉진하기 위한 온라인상 휴먼네트워크 관리 시스템 및 방법
ATE527518T1 (de) * 2005-11-09 2011-10-15 Harman Becker Automotive Sys Bestimmung einer optimalen route mit karten- kacheln
CN101430208B (zh) * 2005-12-07 2011-09-14 松下电器产业株式会社 路线信息显示装置以及路线信息显示方法
US20080167802A1 (en) * 2005-12-07 2008-07-10 Mototaka Yoshioka Route information display device and route information display method
JP2007280000A (ja) * 2006-04-06 2007-10-25 Hitachi Ltd 人脈分析検索方法及び人脈分析検索システム
EP1867952B1 (de) * 2006-06-13 2009-12-09 Harman/Becker Automotive Systems GmbH Bestimmung einer optimalen Route mittels einer Schätzungsfunktion
BRPI0912779A2 (pt) * 2008-06-24 2019-09-24 Tele Atlas North America Inc métodos e sistemas para herarquia e roteamento de rede de rodovia dinamicamente adaptativa
DE102009014978A1 (de) * 2008-10-10 2010-04-29 Eads Deutschland Gmbh Rechenzeiteffiziente Routenbestimmung entlang mehrerer vorgegebener Wegpunkte mit dazwischenliegenden gegebenen Verbindungsstrecken
KR101179299B1 (ko) * 2008-12-03 2012-09-03 한국전자통신연구원 시분할 접속을 이용한 메쉬 센서 네트워크에서 모니터링 응용을 위한 저전력 센서 노드 및 이의 라우팅 방법
US8619072B2 (en) * 2009-03-04 2013-12-31 Triangle Software Llc Controlling a three-dimensional virtual broadcast presentation
US8982116B2 (en) * 2009-03-04 2015-03-17 Pelmorex Canada Inc. Touch screen based interaction with traffic data
US9046924B2 (en) * 2009-03-04 2015-06-02 Pelmorex Canada Inc. Gesture based interaction with traffic data
US8150620B2 (en) * 2009-04-14 2012-04-03 Alpine Electronics, Inc. Route search method and apparatus for navigation system utilizing map data of XML format
EP2545539A4 (de) 2010-03-11 2017-12-27 Inrix, Inc. Erlernung von strassennavigationspfaden auf basis gesammelter fahrerverhaltensweisen
CN102262687B (zh) * 2010-05-29 2013-07-24 比亚迪股份有限公司 一种线束网络中的路径查找方法和线长计算方法
CA2823827C (en) 2010-11-14 2018-08-28 Triangle Software Llc Crowd sourced traffic reporting
US8738559B2 (en) * 2011-01-24 2014-05-27 Microsoft Corporation Graph partitioning with natural cuts
JP5785415B2 (ja) * 2011-03-29 2015-09-30 株式会社デンソーアイティーラボラトリ 経路案内生成装置、方法及びシステム
WO2012159083A2 (en) 2011-05-18 2012-11-22 Triangle Software Llc System for providing traffic data and driving efficiency data
US8548738B1 (en) * 2011-07-08 2013-10-01 Google Inc. Constructing paths based on a particle model
US8781718B2 (en) 2012-01-27 2014-07-15 Pelmorex Canada Inc. Estimating time travel distributions on signalized arterials
US10223909B2 (en) 2012-10-18 2019-03-05 Uber Technologies, Inc. Estimating time travel distributions on signalized arterials
EP3298555A1 (de) * 2015-05-19 2018-03-28 Fleetmatics Ireland Limited System und verfahren für beschleunigte routensuche
US10060753B2 (en) * 2016-08-17 2018-08-28 Apple Inc. On-demand shortcut computation for routing
US10018476B2 (en) 2016-08-17 2018-07-10 Apple Inc. Live traffic routing
IL253769B (en) 2017-07-31 2022-03-01 Israel Aerospace Ind Ltd Planning a path in motion
CN110543728B (zh) * 2019-09-05 2023-03-21 大连理工大学 一种城市交通路网关键路口发现方法
WO2021090971A1 (ko) * 2019-11-06 2021-05-14 엘지전자 주식회사 경로 제공 장치 및 그것의 경로 제공 방법
US11725954B2 (en) * 2020-08-07 2023-08-15 Waymo Llc Pre-computing routes for autonomous vehicles using map shards
CN113902002B (zh) * 2021-09-30 2022-11-04 北京百度网讯科技有限公司 用于训练站点出入口确定模型的方法和装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796191A (en) * 1984-06-07 1989-01-03 Etak, Inc. Vehicle navigational system and method
US4914605A (en) * 1984-10-22 1990-04-03 Etak, Inc. Apparatus and method for displaying a map
US5031093A (en) * 1986-12-22 1991-07-09 Nec Corporation System for establishing route by selecting minimum of time-independent link parameters of incremental values
DE3719017A1 (de) * 1987-06-06 1988-12-15 Bosch Gmbh Robert Verfahren und vorrichtung zur bestimmung einer fahrtroute zwischen einem startpunkt und einem zielpunkt
EP0346492B1 (de) * 1987-12-28 1995-05-03 Aisin Aw Co., Ltd. Wegsuchverfahren für navigationssystem
US5170353A (en) * 1988-11-17 1992-12-08 U.S. Philips Corporation Bucket-oriented route planning method, and navigation system comprising a route planner for carrying out such a method
EP0485120B1 (de) * 1990-11-09 1998-07-29 Sumitomo Electric Industries, Limited Vorrichtung für eine günstige Route-Auswahl
US5592389A (en) * 1990-12-03 1997-01-07 Ans, Llp Navigation system utilizing audio CD player for data storage
US5274560A (en) * 1990-12-03 1993-12-28 Audio Navigation Systems, Inc. Sensor free vehicle navigation system utilizing a voice input/output interface for routing a driver from his source point to his destination point
JP2874397B2 (ja) * 1991-03-19 1999-03-24 松下電器産業株式会社 経路選出装置
US5285391A (en) * 1991-08-05 1994-02-08 Motorola, Inc. Multiple layer road memory storage device and route planning system
JP2771911B2 (ja) * 1991-08-09 1998-07-02 三菱電機株式会社 車載用ナビゲーション装置
US5311195A (en) * 1991-08-30 1994-05-10 Etak, Inc. Combined relative and absolute positioning method and apparatus
JP3289375B2 (ja) * 1993-03-24 2002-06-04 株式会社デンソー 車体速度推定装置及び推定車体速度を用いたタイヤ状態検知装置
JP3027899B2 (ja) * 1993-05-12 2000-04-04 松下電器産業株式会社 推奨経路案内装置
JPH0727568A (ja) * 1993-07-09 1995-01-27 Zanabui Informatics:Kk 経路誘導装置および経路探索方法
ATE208109T1 (de) * 1993-07-30 2001-11-15 Ibm Verfahren und gerät zur automatischen verteilung einer netztopologie in haupt- und nebentopologie
US5557522A (en) * 1993-09-10 1996-09-17 Nissan Motor Co., Ltd. Apparatus and method for guiding vehicle occupant to travel from present position of vehicle to set destination through display unit
JP3085054B2 (ja) * 1993-10-08 2000-09-04 住友電気工業株式会社 経路計算装置
EP0660569A1 (de) * 1993-12-22 1995-06-28 International Business Machines Corporation Verfahren und System zum Verbessern der Verarbeitungszeit der Wegeauswahl in einem Hochgeschwindigkeits-Paketvermittlungsnetz
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5706503A (en) * 1994-05-18 1998-01-06 Etak Inc Method of clustering multi-dimensional related data in a computer database by combining the two verticles of a graph connected by an edge having the highest score
JP3374208B2 (ja) * 1995-07-06 2003-02-04 株式会社日立ユニシアオートモティブ 車両懸架装置
US5729458A (en) * 1995-12-29 1998-03-17 Etak, Inc. Cost zones
JP3223782B2 (ja) * 1996-02-08 2001-10-29 三菱電機株式会社 車両経路算出装置
US5916299A (en) * 1996-11-25 1999-06-29 Etak, Inc. Method for determining exits and entrances for a region in a network
US5893081A (en) * 1996-11-25 1999-04-06 Etak, Inc. Using multiple levels of costs for a pathfinding computation
US5978730A (en) * 1997-02-20 1999-11-02 Sony Corporation Caching for pathfinding computation

Also Published As

Publication number Publication date
CA2320159C (en) 2008-04-01
ATE347712T1 (de) 2006-12-15
EP1062616A1 (de) 2000-12-27
AU2662199A (en) 1999-08-30
US6016485A (en) 2000-01-18
EP1062616B1 (de) 2006-12-06
JP2009156873A (ja) 2009-07-16
WO1999041692A8 (en) 1999-09-23
JP2002503817A (ja) 2002-02-05
EP1062616A4 (de) 2002-04-24
DE69934301D1 (de) 2007-01-18
JP4705176B2 (ja) 2011-06-22
WO1999041692A1 (en) 1999-08-19
CA2320159A1 (en) 1999-08-19

Similar Documents

Publication Publication Date Title
DE69934301T2 (de) Wegesuchsystem
DE60027499T2 (de) Informationsdarbietungssystem für mobile Einheiten
DE60028143T2 (de) Verfahren zur Erzeugung einer durch ein Navigationssystem berechneten Vorschauroute
DE69937116T2 (de) Abkürzungsgenerator
DE69736082T2 (de) Vorrichtung und Verfahren zum Speichern von geographischen Daten auf einem physikalischen Speichermedium
DE112011103424B4 (de) System und Verfahren zum Auswählen von Routen
DE60130054T2 (de) Verfahren und Vorrichtung zur Routenführung
DE69833139T2 (de) Verfahren und Vorrichtung zur Routensuche
DE69729426T2 (de) Kartographisches Datenbankgerät
DE69735386T2 (de) Vorrichtung zum Suchen einer Route
DE10356695B4 (de) Navigationssystem
EP1789755B1 (de) Informationspunkt
DE202015009184U1 (de) Wegbeschreibung zwischen automatisch bestimmten Ausgangspunkten und ausgewählten Zielen
DE102007015006B4 (de) Navigationsvorrichtung, Navigationssystem und Routensuchverfahren
EP2507589B1 (de) Verfahren zur vereinfachung einer beschreibung einer fahrtroute
DE202011110851U1 (de) Vorrichtung der Zielführung
DE19703436A1 (de) Fahrzeuggebundene Wegesuchvorrichtung und Wegesuchverfahren
DE102013217310A1 (de) Fahrzeugreichweitenprognose
WO2009149704A1 (de) Verfahren und vorrichtung zur berechnung einer navigationsroute zu zusammenhängenden zielpunkten
DE10137632A1 (de) Verfahren und System zum Auffinden eines Ortes in einer digitalen Karte
DE10204490B4 (de) Navigationssystem für Fahrzeuge
DE10139549A1 (de) Verfahren zum Ermitteln von Routen und darauf bezogenes Navigationssystem
DE60215901T2 (de) Mehrere Sprachen und Formate unterstützendes Navigationssystem
DE10349263A1 (de) Verfahren zur Zerlegung eines Straßennetzes aus Kanten und Knoten
DE102010030715B4 (de) Verfahren und Vorrichtung zur effizienten Berechnung von Routen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition