WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Graphentheorie

 

Dyna

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2008, 16:54     Titel: Graphentheorie
  Antworten mit Zitat      
hallo!ich habe einen graphen gegeben und möchte ihn zum einen in einer graphik darstellen und zum anderen mit hilfe des floydwarshall alg. die distanzmatrix bestimmen.
Code:

D=zeros(12,12);
n=length(c);
% Distanzmatrix:
for i=1:n
    D(AA(i,1),AA(i,2))=c(i);
    D(AA(i,2),AA(i,1))=c(i);
end
 


damit erzeuge ich mir die erste distanzmatrix.in AA sind die jeweiligen knoten gespeichert und c sind die gewichte.

nun wollte ich folgendermaßen weiter machen:
Code:

N = length(D);
for k=1:N
DD = min(D,repmat(D(:,k),[1 N])+repmat(D(k,:),[N 1]));
end
 

leider erkennt er immer nur das D als minimum und nimmt nicht die neu dazugefügten knoten mit kanten hinzu. irgendwie weiß ch nicht wie ich die matrix D vorher darstellen soll...da ja eigtl ein unendlich bei den einträgen steht ,wo keine direkter weg zw den knoten ist.


hat vll einer von euch eine idee?

edit by steve: Bitte zukünftig die Code-Umgebung benutzen! Button mittig oben Wink


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 03.09.2008, 19:18     Titel:
  Antworten mit Zitat      
Hallo Dyna,

Wenn die Gewichte unendlich sind, kannst Du D beispielsweise so initialisieren:

Code:


Dann müsste auch die Schleife funktionieren, die eine sehr schöne Umsetzung des Floyd-Algorithmus ist. Allerdings musst Du D statt DD schreiben, aber das ist sicher nur ein Tippfehler.

Für die Darstellung von Graphen gibt es

Code:


Dafür brauchst Du die Adjazenzmatrix des Graphen und allerdings auch Koordinaten für die Knoten. Die Adjazenzmatrix bekommst Du so:

Code:
D=ones(12)*Inf;
% Hier Deine erste Schleife oder:
ind1 = sub2ind(size(D),A(:,1),A(:,2));
ind2 = sub2ind(size(D),A(:,2),A(:,1));
D(ind2)=c;
D(ind1)=c;

A=zeros(size(D));
A(~isinf(D))=1;


Die Koordinaten kannst Du Dir ja ausdenken, wenn sie nicht gegeben sind.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Dyna

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2008, 19:54     Titel: gplot
  Antworten mit Zitat      
vielen dank für die hilfe!jetzt hab ich nur noch ein plroblem:
der gplot zeichnet mir nur die kanten...ich würde aber gern in den knoten die nummer stehen haben und an den kanten deren gewichte.ist das mit matlab möglich?
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 04.09.2008, 09:58     Titel:
  Antworten mit Zitat      
Hallo Dyna,

ja, das ist möglich. Ich hänge mal eine Beispieldatei an, die ich in meinem Matlab-Seminar verwendet habe. Sie basiert auf der Aufgabe 14.12.1 in diesem Tutorium zu Matlab 5.3: http://homepages.fh-regensburg.de/~wah39067/Matlab/MTut2-1.pdf

Das sollte sich leicht für Deine Zwecke anpassen lassen.

Herzliche Grüße
Bijick

gplot_beispiel.m
 Beschreibung:
Ein Graph mit Beschriftungen der Knoten und Kanten (lauffähiges Skript)

Download
 Dateiname:  gplot_beispiel.m
 Dateigröße:  1.08 KB
 Heruntergeladen:  867 mal

_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Dyna

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2008, 12:26     Titel:
  Antworten mit Zitat      
hallo Bijick,

vielen dank für das beispiel! ich hab den graphen jetzt so, wie ich mir das vorgestellt habe!

DANKE! Very Happy


grüße dyna Razz
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.