AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Indirekte Beziehungen abbilden?

Ein Thema von Igotcha · begonnen am 31. Mär 2007 · letzter Beitrag vom 31. Mär 2007
Antwort Antwort
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

Indirekte Beziehungen abbilden?

  Alt 31. Mär 2007, 18:50
Hallo zusammen,

nehmen wir an, es gibt die folgenden direkten Beziehungen:

A kennt B
B kennt C
C kennt D

wie könnte man es realisieren, dass man auf die indirekte Beziehung A kennt D kommt?

Vorliegend ist eine Tabelle, die wie oben aufgebaut ist:

A | B
B | C
C | D

Gruß Igotcha
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Indirekte Beziehungen abbilden?

  Alt 31. Mär 2007, 18:52
In dem du die Tabelle rekursiv durchsuchst
Markus Kinzler
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Indirekte Beziehungen abbilden?

  Alt 31. Mär 2007, 19:49
Bis zu welcher Tiefe, bzw. wieviel Iterationen? Das ist nämlich genau der Punkt wo ich mit meinen Überlegungen gerade hänge.

1. Ermittle die Menge aller direkten Beziehungen von A
2. Ermittle die Menge aller direkten Beziehungen zu der ermittelten Menge aller direkten Beziehungen von A
3. etc.

Wo hört man auf und wie vermeidet man Dopplungen, denn wenn A -> B gilt auch B -> A.

Gruß Igotcha
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Indirekte Beziehungen abbilden?

  Alt 31. Mär 2007, 20:30
Hallo,

ich erkenne hier ein graphentheoretisches Problem. Die "Tabelle" stellt die einzelnen Segmente (Kante mit ihren zwei Knoten, binary relation) des Graphen dar. Der ist ursprünglich ungerichtet. Zur Lösung der Frage "kennt A D?" kann ausgehend von A ein gerichteter Graph aufgebaut werden. Dazu werden alle Paare schrittweise aufgenommen, so wie du es selbst schon formuliert hast. Dazu müssen lediglich alle Paare normiert (deine Beispieldaten sind es schon) werden, dass heißt das geordnete Tupel (D, C) müsste zuerst in (C, D) transformiert werden, bevor es eingebaut werden kann. Sobald ein normiertes Tupel (x, D) gefunden wird ist die transitive Beziehung erwiesen.

Eine Adjazenzmatrix wäre eine äquivalente Darstellung. An die Stelle des Baums (der Bäume, mehrere sind möglich) tritt dann ein Suchalgorithmus mit Backtracking und Kantenmarkierung.

Gute Nacht
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz