Shortest Path Algorithmus von Edsger Dijkstra



Ähnliche Dokumente
STUDIENPLAN ZUM STUDIENGANG BACHELOR VOLKSWIRTSCHAFTSLEHRE UNIVERSITÄT BERN VOM 1. SEPTEMBER 2006

Grundlagen der Technischen Informatik. Bausteine der Digitaltechnik - Binäre Schalter und Gatter. Kapitel 7.1

Vorlesung 24: Topological Sort 1: Hintergrund. Einführung in die Programmierung. Bertrand Meyer. Topological sort

Graphen vielseitig verwendbar zur Repräsentation von Zusammenhängen, etwa:

Hilfsrelais HR 116. Bilfinger Mauell GmbH

Die Philosophisch-historische Fakultät der Universität Bern. erlässt

Relationen: Verkettungen, Wege, Hüllen

Hausaufgabe 2 (Induktionsbeweis):

Speicherung linguistischer Korpora in Datenbanken

15. Kürzeste Wege. SS 2017 DuA - Kapitel 15 1

Der Tigerschwanz kann als Stimmungsbarometer gesehen werden. a) Richtig b) Falsch. Tiger sind wasserscheu. a) Richtig b) Falsch

GESTRA SPECTORcom-Gateway. Kessel- und Brennersteuerung Durch das Intranet, Internet oder GSM-Netz ins Kesselhaus

CREATE YOUR OWN PERFUME BUSINESS CONCEPT. Der Duft für Ihr erfolgreiches Business

Funktionen und Mächtigkeiten

LUDWIG-MAXIMILIANS-UNIVERSITÄT MÜNCHEN. 7. Übung/Lösung Mathematik für Studierende der Biologie

Stabile Hochzeiten wie und warum?

Fragebogen 1 zur Arbeitsmappe Durch Zusatzempfehlung zu mehr Kundenzufriedenheit

Aussichten A1. Einstufungstest. Autorin: Sanja Mazuranic Redaktion: Renate Weber Layout: Claudia Stumpfe Satz: Regina Krawatzki, Stuttgart

Einführung in Mathcad H.

Wirtschaftsmathematik - Übungen WS 2018

Die Regelungen zu den Einsendeaufgaben (Einsendeschluss, Klausurzulassung) finden Sie in den Studien- und Prüfungsinformationen Heft Nr. 1.

a) Behauptung: Es gibt die folgenden drei stabilen Matchings:

Größter gemeinsamer Teiler und kleinstes gemeinsames Vielfaches

Formelsammlung Mathematik

Gegenstand und Zweck

1. Voraussetzung. 2. Web-Account anlegen. 3. Einloggen. 4. Kunden-Portal verwenden 5. Sub-Accounts 5.1Sub-Account anlegen. 5.2 Sub-Account bearbeiten

Wurzelbäume. Definition 1

Barocker Kontrapunkt Invention: idealtypische ( akademische ) Form

Lineare Gleichungssysteme mit 3 und mehr Variablen

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

My Box - Englischladen

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

1 Planarbeit Planarbeit

Physik für Bauingenieure

Dreiecke können einerseits nach den Eigenschaften ihrer Seiten und andererseits nach ihren Winkeln benannt werden. Einteilung nach den Seiten:

Grundzüge der Informationstheorie (2)

Informatik II SS Pumping Lemma für reguläre Sprachen (1/2) Pumping Lemma für reguläre Sprachen (2) Beweis

Mathematik. Name, Vorname:

Konfiserie (1) Bonbonnieren B 1 B 2 B 3 B 4 Marzipan Nougat Kokos Krokant

Therapiebegleiter Kopfschmerztagebuch

Studentische Lösung zum Übungsblatt Nr. 7

x a 2 (b 2 c 2 ) (a + b 4 + a + weil Klammern nicht geschlossen oder Operationszeichen keine Terme verbinden.

Ausarbeitung zum Satz von Brahmagupta. Thimo Wanders Dozent: Dr. Marco Sobiech Proseminar Lineare Algebra

DV1_Kapitel_5.doc Seite 5-1 von 36 Rüdiger Siol :31

Domäne und Bereich. Relationen zwischen Mengen/auf einer Menge. Anmerkungen zur Terminologie. r Relationen auf/in einer Menge.

Leicht. Leicht. Leicht. Brandschutz ist doch ganz leicht. Leichtbeton mit besten Werten. Bundesverband Leichtbeton e.v.

In Fachwerken gibt es demnach nur konstante Normalkräfte. Die Fachwerksknoten sind zentrale Kraftsysteme.

Lehrgang: Digitaltechnik 1 ( Grundlagen ) - Im Lehrgang verwendete Gatter ( Übersicht ) Seite 3

Wirtschaftsmathematik - Übungen SS 2018

Übungsblatt Gleichungssysteme Klasse 8

Millenium 3 Kommunikationsschnittstelle M3MOD Benutzerhandbuch der Betriebsunterlagen 04/2006

MS Michelson-Interferometer

WEG bedeutet WIR! JCH UP weiß: Du schläfst noch unbewusst

Def.: Sei Σ eine Menge von Zeichen. Die Menge Σ* aller Zeichenketten (Wörter) über Σ ist die kleinste Menge, für die gilt:

Innenraum-Lasttrennschalter H 22. Ein- oder Dreipolige Ausführung Bemessungs-Spannung 12, 25 und 38,5 kv Bemessungs-Strom 630 und 1250 A

Gesetz über die Bernische BVG- und Stiftungsaufsicht (BBSAG) vom (Stand )

8. Uninformierte Suche

Aufgaben zu Karnaugh-Diagrammen und Quine-McCluskey

Prüfung Computation, Programming

45 Würzburg Maidbronn Rimpar Gramschatz

Z R Z R Z R Z = 50. mit. aus a) Z L R. Wie groß ist der Leistungsfaktor cos der gesamten Schaltung?

Getriebe und Übersetzungen Übungsaufgaben

Übungsblatt 1 zum Propädeutikum

Keil Telecom Homepage - Hersteller von Isdn Tk Anlagen und Türsprechsystemen für Heim und Bü...

Beispiel für die Berechnung des Wärmedurchgangskoeffizienten eines zusammengesetzten Bauteiles nach DIN EN ISO 6946

Sigma I. Optimiertes Design! Jahre Garantie

Programmieren in C/C++ und Matlab

Eigene Farbskala erstellen

Fachgebiet Rechnersysteme 2. Übung Logischer Entwurf. Technische Universität Darmstadt. 4. Aufgabe. b) Minterm-Normalform

RWTH Aachen Lehrgebiet Theoretische Informatik Rossmanith Dreier Hark Kuinke. SS 2017 Blatt

Informatik Grundlagen, WS04, Seminar 13

Automaten und formale Sprachen Notizen zu den Folien

Logarithmus - Übungsaufgaben. I. Allgemeines

Optische Abbildung mit Einzel- und Tandemobjektiven

Übungsheft. Das. Deutsch2. Rechtschreib- und Grammatiktraining. Mein Deutschmeister-Pass. Stefanie Drecktrah. Name: Klasse:

1 Kurvendiskussion /40

Geometrie. Inhaltsverzeichnis. 8.1 Der Satz von Ptolemäus und sein klassischer Beweis. Der Satz von Ptolemäus. 8 Der Satz von Ptolemäus

5 Vierecke. 1 Quadrat

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Sprachen. Grammatiken (Einführung)

3 Module in C. 4 Gültigkeit von Namen. 5 Globale Variablen (2) Gültig im gesamten Programm

Volumen und Oberfläche von Prismen und Zylindern: Das Volumen und die Oberfläche sind für alle geraden Prismen und Zylinder wie folgt zu berechnen:

Scala kann auch faul sein

Streuungsmaße. Grundbegriffe

ÜBUNGSSATZ 01 ZERTIFIKAT DEUTSCH FÜR DEN BERUF. Kandidatenblätter STRUKTUREN UND WORTSCHATZ ZEIT: 30 MINUTEN. ZDfB_Ü01_SW_

FB Technologie und Management. Das de Morgansche Theorem. Kombinationsschaltungen (Schaltnetze) Rangfolge der 3 Grundoperationen

6 Tiefensuche in ungerichteten Graphen: Zweifache Zusammenhangskomponenten

Transkript:

Shortest Pth Algorithmus von Esger Dijkstr Mihel Dienert 16. Dezemer 2010 Inhltsverzeihnis 1 Shortest Pth Algorithmus 1 1.1 Grphen................................. 1 1.2 Knoten.................................. 2 1.3 Pseuooe............................... 2 2 Progrmmierung 3 2.1 Aufu er Link-Sttes-Mtrix..................... 3 A Progrmmierufge 5 B Klssenigrmme un Coegerüst 5 B.1 Klssse KnotenZustn......................... 5 B.2 Klsse Dijkstr............................. 5 B.3 Coe-Gerüst............................... 5 C Beispiel eines Progrmmlufs 9 D Üung zum Dijkstr-Algorithmus 10 1 Shortest Pth Algorithmus 1.1 Grphen Der Shortest Pth Algorithmus von Esger Dijkstr suht in einem gewihteten Grphen (= Netz, estehen us Knoten un Verinungen mit Kosten) nh en günstigsten Pfen von einem Strtknoten zu llen neren Knoten. Ds Beispielnetz in iesem Dokument sieht so us: Es enthält ie vier Knoten,,,. Die Ziffern stellen ie Kosten er Verinung r. In er Netzwerktehnik weren ie Kosten us er Bnreite rehnet, verwenet mn en Dijkstr-Algorithmus um Wegstreken zu opimieren, entsprehen ie Kosten er Entfernung zwishen en Knoten. 1

4 1 3 1 2 5 Ailung 1: Ein Beispielnetz mit 5 Knoten 1.2 Knoten Jeer Knoten es Grphen ht folgene Eigenshften: Distnz: Die este ngenommene Distnz eines Knoten zum Strtpunkt Vorgänger: Der Nme es Vorgängerknotens uf em islng esten Pf zum Strtort Offen/Erleigt: Diese Eigenshft (im Folgenen Vrile qs) eines Knotens knn 3 Werte nnehmen: - er Knoten wure noh niht esuht q er Knoten wure esuht, seine kürzeste Distnz zum Strtort ist er noh niht eknnt s er Knoten ist erleigt (settle),.h. seine kürzeste Distnz zum Strt ist eknnt. 1.3 Pseuooe //initilisieren setze ie Distnzen ller Knoten uf unenlih: z.b. $ist = 1000000$ setze en Vorgengerknoten ller Knoten uf "" (leerer String) setze ie offen/erleigt-eigenshft (qs) ller Knoten uf "-" setze qs es Strtknotens uf "q" setze ie Distnz ist es Strtknotens uf ist=0 while( es git noh knoten, ei enen qs=="q" ist ){ knoten u = extrtminimum(); relxneighors(u); Methoe extrtminimum(): 2

extrtminimum(){ fine en Knoten u mit minimler Distnz ist us er Menge ller Knoten, ei enen qs=="q" ist ; u.setqs("s"); return u; Methoe relxneighors(u): relxneighors(knoten u){ foreh Knoten v, v.getqs() ist niht "s" && v ist nhr von u{ if (v.getdist() > u.getdist() + getdistnz( u,v) ){ v.setdist( u.getdist() + getdistnz(u,v) ); v.setpre(u); v.setqs("q"); Für ie Relisierung ls Jv-Progrmm knn mn u un v ls Ojekte er Klsse KnotenZustn rstellen. Ds Klssenigrmm von KnotenZustn ist in A. 2 (Angng) gezeigt. Die eien Methoen relxneighors(string u) un extrtminimum() sin in er Klsse Dijkstr relisiert. Die A. 3 zeigt eren Klssenigrmm un ist eenflls im Anhng. 2 Progrmmierung 2.1 Aufu er Link-Sttes-Mtrix Die Link-Sttes-Mtrix esteht us einer Hsh-Mp, eren Shlüssel ie Knotennmen ilen (String) un eren zugeornete Werte wieer eine Hsh-Mp sin (Zeilen T. 1). Die Shlüssel-Werte-Pre er Hsh-Mps, ie ie Zeilen er folgenen Telle (T. 1) ilen, enthlten einen Zielknoten (Shlüssel) mit seiner Entfernung (Wert). Die eien Ailungen in Telle 1 sin gleihwertig: Die inneren Hsh-Mps wuren zunähst ls Tellen (links) un nn vereinfht ls Menge von Wertepren rgestellt (rehts). 3

String Hsh-Mp 4 2 4 3 1 2 1 5 1 5 String Hsh-Mp (,4) (,2) (,4) (,3) (,1) (,2) (,1) (,5) (,1) (,5) Telle 1: Link-Sttes-Mtrix mit Hsh-Mps 4

A Progrmmierufge Die eien Klssenigrmme un s Coegerüst sollen unter Einhltung er Vorgen (Klssen, Bezeihner) usprogrmmiert weren, so ss s Beispielnetz geroutet wir. Die mit tr 1 (un nur mit tr un nihts usser tr un keinesflls irgen ws nerem) rhivierten NB-Projektverzeihnisse sin per e-mil n ienert@wr.e noh ieses Jhr einzureihen. Die Projektverzeihnisse müssen eine irekt usführre jr-dtei enthlten (Buil Projet niht vergessen). Un wehe, ie geshweiften Klmmern sin, wo sie niht hingehören!!!! B Klssenigrmme un Coegerüst B.1 Klssse KnotenZustn B.2 Klsse Dijkstr B.3 Coe-Gerüst 1 Für winteno-spieler git es izr oer tugzip 5

KnotenZustn ist: int pre: StringBuffer qs: StringBuffer + KnotenZustn( ist: int, pre: String, qs: String ) + setdist(ist: int) : voi + setpre(pre: String) : voi + setqs(qs: String): voi + getdist(): int + getpre(): String + getqs(): String Ailung 2: Klssenigrmm 6

Dijkstr ijkstr: HshMp<String, KnotenZustn linksttes: LinkSttes knotenset: Set<String> + Dijkstr() + rukezustene(): voi + nihtalleknotensettle(): oolen + extrtminimum(): String + relxneighors(u: String): voi Ailung 3: Klssenigrmm 7

/** * linksttes-ojekte speihern in einer hshmp zu jeem knoten eine * hshmp, ie zu jeem knoten ie istnz enthelt * etw so: *, ( (,0), (,4), (,2), (,1000000) ) *, ( (,4), (,0), (,3), (,1) ) * usw. **/ pkge ijkstr; import jv.util.hshmp; import jv.util.set; lss LinkSttes{ HshMp<String, HshMp> mtrix; HshMp<String, Integer> zeile; //link-stte hinzufuegen: puli voi LinkStte(String strtknoten, String nhr, int istnz){ // vervollstenigen puli Set<String> getnhrn(string knoten){ //vervollstenigen puli Set<String> getalleknoten(){ //vervollstenigen puli int getdistnz(string u, String v){ //vervollstenigen puli voi mtrixdruken(){ //vervollstenigen puli LinkSttes(){ this.linkstte("","",4); this.linkstte("","",4); this.linkstte("","",3); this.linkstte("","",1); this.linkstte("","",2); this.linkstte("","",2); this.linkstte("","",1); this.linkstte("","",5); this.linkstte("","",1); this.linkstte("","",5); //this.mtrixdruken(); puli stti voi min(string[] rgs){ new LinkSttes(); 8

C Beispiel eines Progrmmlufs ijkstr: :( ist=1000000, vorgenger=, qs=- ) ijkstr: :( ist=1000000, vorgenger=, qs=- ) ijkstr: :( ist=1000000, vorgenger=, qs=- ) ijkstr: :( ist=1000000, vorgenger=, qs=- ) ******************************************************** knoten u ist er knoten: essen zustn ist: ( ist=0, vorgenger=, qs=s ) ie hshmp mit en nhrn von : {=4, =2 ijkstr: :( ist=1000000, vorgenger=, qs=- ) ijkstr: :( ist=4, vorgenger=, qs=q ) ijkstr: :( ist=2, vorgenger=, qs=q ) ijkstr: :( ist=0, vorgenger=, qs=s ) ******************************************************** knoten u ist er knoten: essen zustn ist: ( ist=2, vorgenger=, qs=s ) ie hshmp mit en nhrn von : {=5, =1, =2 ijkstr: :( ist=7, vorgenger=, qs=q ) ijkstr: :( ist=3, vorgenger=, qs=q ) ijkstr: :( ist=2, vorgenger=, qs=s ) ijkstr: :( ist=0, vorgenger=, qs=s ) ******************************************************** knoten u ist er knoten: essen zustn ist: ( ist=3, vorgenger=, qs=s ) ie hshmp mit en nhrn von : {=1, =3, =4 ijkstr: :( ist=4, vorgenger=, qs=q ) ijkstr: :( ist=3, vorgenger=, qs=s ) ijkstr: :( ist=2, vorgenger=, qs=s ) ijkstr: :( ist=0, vorgenger=, qs=s ) ******************************************************** knoten u ist er knoten: essen zustn ist: ( ist=4, vorgenger=, qs=s ) ie hshmp mit en nhrn von : {=1, =5 ijkstr: :( ist=4, vorgenger=, qs=s ) ijkstr: :( ist=3, vorgenger=, qs=s ) ijkstr: :( ist=2, vorgenger=, qs=s ) ijkstr: :( ist=0, vorgenger=, qs=s ) 9

D Üung zum Dijkstr-Algorithmus Vervollstänige ie Tellen nhn es Pseuo-Coes: getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs getdistnz(u,v)= knoten ist pre qs 10