Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » isomorphie zweier graphen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
18.01.2004, 12:18 Uhr
talis



ich muss ein programm schreiben, welches berechnen soll, ob zwei eingegebene graphen isomorph sind oder nicht.

am papier habe ich kein problem das herauszufinden, jedoch mit der programmierlogik schon.

beschreibung zur prüfung (am papier), ob zwei graphen isomorph sind:
1) beide graphen müssen die gleiche anzahl von knoten haben
2) knotengrade müssen ebenso in beiden graphen gleich vertreten sein (also es muss gleich viele knoten grades 1, 2, 3, usw. geben)
3) nachbarschaftsbeziehungen prüfen - abbildungen von graph a(x) und a(y) feststellen (das sieht man auch relativ einfach bis knotenanzahl 10 am papier)

so zu 3) ich:
ich habe mir den algorithmus, laut der beschreibung des lehrers, aufgeschrieben - nur da diese mitschrift schon ein paar wochen alt ist, tue ich mir schwer die zu deuten bzw. zu verstehen:
algorithmus 1:
zwei isomporhe graphen unterscheiden sich nur über die numerierung der matrizen, deswegen muss man diese umnummerieren - gleichzeitiges vertauschen von spalten und zeilen. das würd' ich ja noch irgendwie verstehen.

so, aber dann fand ich, dass dies zu lange dauern würde und die berechnung ewig dauern würde.
algorithmus 2:
die knoten nach grade sortieren, entweder ab- oder ansteigend nach knotengraden nummerieren.

und jetzt steig' ich aus, weil ich die beschreibung nicht mehr durchblicke. vor allem, weil ich keine blassen schimmer mehr habe, wie man anhand der adjazenzmatrizen feststellen kann, ob zwei graphen isomporh sind...

kennt sich jemand aus? weiß jemand wie es funktioniert?

Dieser Post wurde am 18.01.2004 um 14:26 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.01.2004, 14:28 Uhr
Pablo
Supertux
(Operator)


Das ist aber kein Thema für die Rätselecke, ich verscheb das zum

Ich muss nachschauen, wie es war, jetzt habe ich es nicht im Kopf, leider bin ich jetzt ein bisschen beschäftigt. Ich werde nachher posten, wenn ich mich daran erinnere.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 18.01.2004 um 14:30 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.01.2004, 16:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hmm ich kenn mich ja mit graphen und so nicht richtig aus...
hab gerade mal gegoogelt und mir ne adjazenmatrix angeguckt...
wenn ichs richtig verstanden habe werden dort "einach" immer die kosten aufgetragen um von punkt A nach B zu kommen...
In sofern sollte das eigentlich nicht so schwer zu implementieren sein...
Ich würde es so machen

Du nimmst dir einfach den ersten Knoten und guckts nach ob es zu dem ein Äquivalent gibt...Also gleiche Kosten zu einem anderen Knoten...
das machst du für jeden Knoten...Wenn die Anzahl nicht gleich ist ists ja sowieso nicht isomorph... der aufwand von dieser "sortiererei" liegt im schlechtesten fall bei n^2

wenn du den spass dann sortiert hast müsstest du ja meiner meinung nur noch mal am ende durchchecken ob dann die Wege zu den einzelnen Knoten auch stimmen, also ob auch wirklich ein äquivalenter Knoten angesteuert wird... Bin mir nicht sicher ob dieser Check überhaupt nötig ist aber ich würds sicherheitshalber machen...Am ende Läuft das ja nur darauf hinaus das du nach dem umsortieren der matrix einfach beider matrizen miteinander vergleichst... Die müssen dann ja gleich sein wenn nicht sind sie auch nicht isomorph
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 18.01.2004 um 16:39 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.01.2004, 17:10 Uhr
talis



also ganz so einfach ist es auch wieder nicht ;-)

habe mich in der zwischenzeit wieder ein bisschen eingelesen...

wenn ich es richtig verstanden habe, meinst du, dass im schlechtesten fall maximal n^2 x sortiert werden müsste?

zwei graphen unterscheiden sich in ihrer a-matrix nur durch die nummerierung, wenn sie isomoprh sind.

das bedeutet, dass man den gesamten graph umnummerieren muss. bei einem graphen grad 4 hat man schon mal 4! möglichkeiten zu numerieren (jeder knoten mit jedem). das bedeutet, dass man gleichzeitig die zeilen und spalten vertauschen müsste, um so feststellen zu können, ob sich a(x) in a(y) überführen lässt.

das würde bedeuten, dass es bei einem graphen grad 4 schon mal 4!*4!*4!*4! (< 400.000) täusche geben könnte, um festzustellen, ob sie isomorph sind oder nicht.

ich glaube, dass das so stimmt, nur wie ich das genau in die tat umsetzen soll, weiß ich noch nicht ganz.

Dieser Post wurde am 18.01.2004 um 17:12 Uhr von talis editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.01.2004, 17:16 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na du musst ja nicht tauschen (ich würde mir das höchstens beim c-golfen geben um eventuell ein paar asci-zeichen zu sparen...
mach einfach eine temp-matrix auf und kopiere da immer wenn du einen äquivalenten knoten findest den neuen (aus der 2.matrix) rein...
Dann vergleichst du die temp-matrix mit der 1.matrix...

Also ich glaube kaum das dein rechner da gross performance probleme bekommt, das sollte auch für n=100 ratzi fatzi gehen (behaupte ich jetzt mal so..oder sieht das jemand anders?)
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.01.2004, 17:22 Uhr
(un)wissender
Niveauwart


Was meinst du eigentlich mit umnummerieren?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.01.2004, 17:22 Uhr
talis



ich habe das in einem matheprogramm mit 15 knoten berechnen lassen, der braucht ewig. unter zehn minuten wird da im schnitt gar nichts gehen.

klar muss ich tauschen, da ich sonst nicht die nachbarschaftsbeziehungen der knoten checken kann. den äquivalenten knoten findest du ja auch nur durch tauschen der knoten gleichen grades, um so die knotengrade der nachbarn zu checken. was willst du machen, wenn es vier knoten grad 5 gibt und zwei davon die gleichen nachbarn haben?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.01.2004, 17:26 Uhr
talis




Zitat:
(un)wissender postete
Was meinst du eigentlich mit umnummerieren?


zwei isomporphe graphen unterscheiden sich nur durch ihre nummerierung in den a-matrizen. mit umnummerieren meine ich, dass man zeile und spalten gleichzeitig tauschen und folgedessen dann auch die nummerierung der knoten ändern muss, sonst hätte man plötzlich mehere knoten mit index 44 oder was auch immer.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.01.2004, 17:35 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hmm in der beziehnung hast du recht das man dann alle möglichkeiten druchprüfen muss und dann der aufwand entsprechen steigt...
allerdings dürfte das in der realität ja nie vorkommen weil es ja total unwahrscheinlich ist das man mehrere Knoten hat die alle die gleichen Kosten zu einem anderen haben... (wenns doch so ist wäre das modell ja ein bisschen flach gewählt bin ich der meinung, weil mann dann ja als kosten quasi nur geht oder geht nicht ansetzt)
aber stimmt da hab ich nicht dran gedacht und das würde den aufwand beträchtlich in die höhe jagen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.01.2004, 17:40 Uhr
talis



wieso gibt es das nicht?

denke mal an das straßennetz.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: