Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Zweifach zusammenhängend » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Zweifach zusammenhängend
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Kann es sein, dass ich einfach die Negation falsch gesetzt habe?

Mein Gedanke war: wenn findArtPoint true zurückgibt, hat der Graph einen Artikulationspunkt.
Jetzt gibt der Algorithmus aber false zurück, wenn ein Artikulationspunkt gefunden wird.

__________________
Syntax Highlighting fürs Board (Link)
28.05.2016 19:23 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Shizmo
Tripel-As


images/avatars/avatar-69.gif

Dabei seit: 16.10.2015
Beiträge: 174

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wird keiner gefunden gibt er aber auch ein false zurück und start.outDegree ist immer 1.

Ich hab grad gemerkt, dass mir dieser Minimum-Vergleich fehlt, vermutlich klappt es deswegen nicht. Versteh aber auch nicht ganz für was der ist.

Hab mal eine andere Version, die funktioniert soweit, allerdings nicht für einen trivialen Graph (also mit nur zwei Knoten).

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
time = 0
isBiconnected = true

for each v in V
   v.color = weiß
   v.PI = NIL

BICONNECTED(startNode)


return isBiconnected
--------------------------

BICONNECTED(u)

u.color = gray
u.d = time
u.l = u.d

time++

for each v in Adj[u]
   if v.color == white
      v.PI = u
      MDFS-visit(v)

      /* Kleineren Low-Wert des Kindes uebernehmen. */
      u.l = min{u.l, v.l}

      /* u ist Artikulationspunkt */
      if v.l > u.d
         isBiconnected = false
         return

   /* Rueckwaertskante */
   if v.color == gray and u.PI != v
      /* Merken, welche am weitesten zurueck reicht. */
      u.l = min{u.l, v.d}

u.color = black
29.05.2016 00:31 Shizmo ist offline Beiträge von Shizmo suchen Nehmen Sie Shizmo in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Ich hab grad gemerkt, dass mir dieser Minimum-Vergleich fehlt, vermutlich klappt es deswegen nicht. Versteh aber auch nicht ganz für was der ist.

Es kann sein, dass ein Knoten mehrere Rückkanten hat. Dann sprichst du immer so weit zurück nach oben wie möglich.

__________________
Syntax Highlighting fürs Board (Link)
29.05.2016 07:34 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Shizmo
Tripel-As


images/avatars/avatar-69.gif

Dabei seit: 16.10.2015
Beiträge: 174

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Okay, aber warum macht man das? Generell, was ist dieses lowlink?
29.05.2016 10:35 Shizmo ist offline Beiträge von Shizmo suchen Nehmen Sie Shizmo in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Grundüberlegung:
Bei der Tiefensuche entsteht ein Baum. Es kann auch keine Querverbindung zwischen den Ästen mit gleicher Wurzel geben.

Betrachten wir zwei Knoten u und v:
es gibt einen Weg von u nach v, der durch die Tiefensuche gefunden wurde. Wenn es aber keinen anderen Weg gibt, um von v aus wieder über u zu kommen, ist u ein Artikulationspunkt (der einzige Weg von Knoten oberhalb von u nach v führt eben über u).

lowlink gibt an, wie weit man maximal zurück nach oben kommt. Kommt man nicht höher als bis u, ist u ein Artikulationspunkt.


Sag Bescheid, wenn du meine Vorlesungsmitschrift willst. Da ist der Beweis ausführlicher.

__________________
Syntax Highlighting fürs Board (Link)
29.05.2016 10:46 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Shizmo
Tripel-As


images/avatars/avatar-69.gif

Dabei seit: 16.10.2015
Beiträge: 174

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich glaub es hat grade klick gemacht.

Zitat:
Original von eulerscheZahl
Grundüberlegung:
Bei der Tiefensuche entsteht ein Baum.
[...]


Bin grad nochmal alles durchgegangen und habe mir Tiefensuchbäume aufgezeichnet und somit ist alles viel klarer geworden.

Vielen Dank für deine Hilfe!!!!
29.05.2016 12:20 Shizmo ist offline Beiträge von Shizmo suchen Nehmen Sie Shizmo in Ihre Freundesliste auf
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Zweifach zusammenhängend