www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Graphentheorie" - Ansatz für Algorithmus
Ansatz für Algorithmus < Graphentheorie < Diskrete Mathematik < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Graphentheorie"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Ansatz für Algorithmus: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:52 Fr 04.12.2015
Autor: Crashday

Hallo Leute,

ich habe eine kleine Frage bezüglich diesen Graph, den ich erstellt habe:

http://www.directupload.net/file/d/4192/tp8lc62d_png.htm

Wie man sehen kann habe ich einen Graphen erstellt, der bestimmte Markierungen besitzt (nicht verwechseln mit Bewertungen. Es sind nur Markierungen für die Kanten der Graphen). Der Graph besteht aus Knoten (konnte ich hier schlecht zeichnen) sowie aus den Kanten (gerade bzw. Kreisbogen, das ist egal).

Ich würde jetzt gerne einen Algorithmus schreiben, der bei dem Startpunkt 1 beginnt, sich bis zum Endpunkt 16 durchschlängelt und da erstmal einen zufälligen Weg findet.

Hier kann man aber erkennen, dass z. B. bei den Kanten 20, 21 es nicht mehr weiter geht. Diese sollen separat abgespeichert werden in einem Array, dass es dort nicht weiter geht. Die 19 genauso, da weder bei 20, noch bei 21 es weiter geht.

Außerdem soll der Algorithmus erkennen, ob ich auch einen alternativen Weg nehmen könnte beispielsweise hätte ich (1-2-18-15-16) laufen oder auch (1-6-8-14-15-16) laufen. Falls aber (1-2-18-15-16) als Hauptpfad gefunden wurde, soll einfach nur (am besten auch in einem Array) gesagt werden, dass (8 und 4) Alternative Wege sind. Es kann natürlich dann ein Alternativer Weg an einem Alternativen Weg angrenzen etc. . Bzw. ein alternativer Weg kann auch an einem Weg angrenzen, wo es nicht weiter geht.

Ich hoffe mal, dass das Prinzip, was ich damit erreichen möchte, klar ist.

Meine Frage: Gibt es in der Graphentheorie irgendeinen Algorithmus, der Ansatzweise mein Problem lösen könnte?

Mir würde jetzt als erster Gedanke ein Backtracking Algorithmus einfallen, dass ich immer schaue, ob ich schon mal da gewesen bin oder nicht weiter kann.

Nur interessenhaltbar würd ich gern wissen, ob es in der Graphentheorie irgendeinen Algorithmus gibt, der dieses Problem lösen könnte, da ich mich mit der Graphentheorie noch nicht so auskenne. Knoten bzw. Kanten sind ja hier als Basis schon gegeben.

Auf eine Antwort würde ich mich sehr freuen - Danke.

Crashday






        
Bezug
Ansatz für Algorithmus: Antwort
Status: (Antwort) fertig Status 
Datum: 15:36 Fr 04.12.2015
Autor: Jule2

Hi hast du dir schonmal die Tiefensuche und die Breitensuche angeschaut!!
LG Jule

Bezug
                
Bezug
Ansatz für Algorithmus: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 12:58 Mi 09.12.2015
Autor: Crashday

Vielen Dank für die Antwort. Ich habe mir das mal angeschaut und sieht schon recht interessant aus. Ich habe aber dazu noch ne Frage. Der Algorithmus ist ja so aufgebaut, dass er nur einen Weg vom Start bis zum Endknoten findet. Gibt es denn auch einen Algorithmus, mit dem ich alle Wege vom Start- bis zum Endknoten finden kann?

Bezug
                        
Bezug
Ansatz für Algorithmus: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:20 Fr 11.12.2015
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
Ansatz für Algorithmus: Antwort
Status: (Antwort) fertig Status 
Datum: 15:07 Mi 09.12.2015
Autor: Jule2

Hi,
Einfach mal googeln😀!!!
Zum Beispiel hier!!
https://opus4.kobv.de/opus4-zib/frontdoor/deliver/index/docId/1078/file/ZR_08_26.pdf


Bezug
                
Bezug
Ansatz für Algorithmus: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 11:39 Do 10.12.2015
Autor: Crashday

Hab mir das durchgelesen und meine erste Idee war auch so mit dem Backtracking. Das Problem ist aber, dass meine Graphen nicht so klein sind wie im Beispiel sondern sehr komplex und wenn ich jeden einzelnen Pfad rausfilter geht es sehr stark an die Laufzeit. (Er würde mir ja dann jeden einzelnen Pfad suchen vom Start bis zum Endknoten, der erreicht wurde)

Mir würde es einfach ausreichen, wenn der Algorithmus irgendwie nur markiert, dass verschiedene Kanten zum Hauptpfad gehören. Es sollen nicht die ganzen Pfade rausgefiltert werden.

Bezug
                        
Bezug
Ansatz für Algorithmus: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:20 Sa 12.12.2015
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
Ansatz für Algorithmus: Antwort
Status: (Antwort) fertig Status 
Datum: 12:44 Fr 11.12.2015
Autor: Al-Chwarizmi

Hallo Crashday,

die Tage, als ich mich mit Graphentheorie beschäftigte,
liegen zwar schon lange zurück. Deine Fragestellung
scheint mir als (Hobby-) Programmierer doch recht
interessant.
Natürlich sollte man noch wissen, in welcher Weise
du den Graph zunächst genau darstellst.
Deine Idee, zunächst mal die möglichen "Sackgassen"
zu kappen, scheint mir jedenfalls gut, wenn es letztlich
darum gehen soll, alle (möglichst kurzen) Wege vom
Start zum Ziel zu finden. Wir können in der Zeichnung
leicht erkennen, dass die Kanten 9,13,17,20,21
Sackgassen-Endkanten sind. Im datenmäßig erfassten
Graph sind dies genau diejenigen Kanten, die einen
isolierten Endpunkt haben (welcher zu keiner anderen
Kante gehört), der aber weder der Startpunkt noch
der Endpunkt des ganzen gesuchten Weges ist.
In einem ersten Lauf könnte man also alle derartigen
isolierten Endpunkte und Sackgassen-Endkanten
aus dem Graph entfernen.
Diesen Prozess kann man so oft wiederholen, bis
alle Sackgassen eliminiert sind. Im vorliegenden Beispiel
genügt ein einziger weiterer Durchlauf, welcher die
im ersten Durchlauf neu entstandene Sackgassen-
Endkante 19 entfernt.
Anschließend lassen sich z.B. die Kanten 15 und 16
(deren vorheriger gemeinsamer Knoten nur nötig
war, um dort die Sackgasse 17 anzuhängen) zu
einer neuen Kante verschmelzen. Also: vereinige
jeweils zwei Kanten, falls sie einen gemeinsamen
Endpunkt haben, der für keine weitere Kante als
Endpunkt fungiert. Im Beispiel lassen sich zum Beispiel
die Kanten 11 und 12 (nach dem Wegfall von 13)
verschmelzen (oder technisch formuliert "verlöten").

Sind diese Arten von Reduktionen komplett ausgeführt,
lassen sich Knotenmenge und Kantenmenge des
Graphen nicht mehr weiter reduzieren. Was man aber
noch tun kann, ist, "Abkürzungen" zu finden.
Beispiel: kommt in einem gewissen Weg vom Start
zum Ziel die Teilfolge <3,18> vor, so darf man diese
durch <14> ersetzen. Analog etwa:

<5,4> [mm] \to [/mm] <8>
<6,2> [mm] \to [/mm] <10>
<8,3> [mm] \to [/mm] <10>

Dabei darf man aber z.B. die Kanten 8 und 3 nicht
einfach aus dem Graph entfernen und durch die
Kante 10 ersetzen, da der gemeinsame Knoten von 8 und 3
noch zu weiteren Kanten des Graphen gehört.

Bei den gängigen Suchalgorithmen kenne ich mich
allerdings nicht sehr aus. Trotzdem hoffe ich, dass ich
mit meinen Überlegungen etwas helfen konnte.

LG  ,   Al-Chwarizmi

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Graphentheorie"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]