Mathe Relationen

Split1989

hh-student.de
ID: 238425
L
9 April 2007
1.223
85
HI Leute soll ein Prog für die Uni schreiben das Relationen erzeugt und dann auf ihre eigenschaften hin prüft... bin gerade dabei auf trasitivität zu prüfen und frage mich gerade ob folgende Telationen transitiv sind

R:={(a,b),(b,c),(a,c)} transitiv laut meinen Script
R:={(b,c),(c,d),(b,d)} transitiv laut meinen Script
R:={(a,b),(b,c),(a,c),(c,d),(b,d)} NICHT transitiv ??

falsch gecoded oder einfach nur mathe nicht richtig verstanden und zufällig doch richtiger code :)
 
So ist keine Relation definiert. Ok, du hast deine Menge definiert, auf der die Relation gelten soll, aber was steht wann in Relation?

Nach Transitivität gilt, wenn (a,b) und (b,c) in Relation stehen stehen auch (a,c) in Realation, ob das so ist kannst du aber nur prüfen, wenn du eine Bedingung deiner Relation hast. Wenn einfach alles zu allem in Relation steht, dann ist diese Relation natürlich Transitiv.

Einfaches Beispiel: Auf der Menge der Menschen ist Freundschaft nicht transitiv, Verwandtschaft aber sehr wohl.

EDIT: Oder sollen die Toubel jeweils angeben, dass genau diese Elemente in Realtion stehen?
 
@DeadMansHorror:
Natürlich sind die obigen Definitionen Relationen.

Eine Relation ist nix weiter als eine Teilmenge des Kreuzprodukts zweier Mengen, formal
75d1e8d96b1909623990bbe0ffbd0053.png
(Wikipedia)

@Split1989:
Der Neugier halber: Wie funktioniert das Programm? Probierst du alle Möglichkeiten aus oder gibts hierfür einen clevereren Algorithmus?
 
eher ausprobiern... ich zeige dir mal den code schnipsel..

[(a,b),(b,c),(a,c),(c,d),(b,d)]

er itteriert über @relation(instanzvariable) und guckt ob zb es ein paar zu (a,b) giebt, wenn ja dann guckt er ob es auch (a,c) enthalten ist .... das macht er mit allen elementen . wenn nur 1 mal false geliefert wird ist es halt nicht transetiv :D

achja ist in ruby gecoded =)

Code:
# wenn a,b und b,c dann auch a,c
  def transitiv?()
    @relation.all? do |paar|  
      @relation.all? do |paar2|
        if(paar[1]==paar2[0])
          @relation.include?(Paar.new(paar[0],paar2[1]))
        else true
        end
      end
    end
  end


hoffe es ist verständlich sonst versuche ich es mal zu kommentieren ^^
 
Ok, mein erster Ruby-Code, den ich zu Gesicht bekommen hab, aber nach ein paar Minuten kann ich ihn lesen.
Mich irritiert bloß das "else true", aber wird wohl Syntax sein, die ich ned kenn.
 
also wenn zu (a,b) kein pärchen (b,c) exestiert muss er garnicht nach (a,c) gucken, also macht er return true

bei ruby kann man blos das return weglassen :)
 
Aso. Jo, logisch.

Interessant wär, ob dein Programm auch mit folgender Relation zurecht kommt:
R := {(a, a)}

aRa ∧ aRa ⇒ aRa (w), also R transitiv
 
@DeadMansHorror:
Natürlich sind die obigen Definitionen Relationen.

Ja, wenn man es so ließt - deshalb ja auch mein Edit.

Ich hab es nur so gelesen, dass er auf der Menge R eine Relation haben möchte (was dann in der Definition von wikipedia eine Teilmenge vom RxR wäre) und dann fehlt eindeutig eine Relationsdefinition.
Das liegt sicherlich daran, dass ich Relation bisher eher nur in einer Menge betrachtet habe, also bsp. Relationen in den reellen Zahlen oder so und nicht Relationen zwischen verschiedenen Mengen. Dann war die Definition eher:
x~y :<=> x = |y| (~ ist das Zeichen, was ich verwende für "steht in Relation zu")
mal als banales Beispiel.
 
R:={(a,a)}
true

muss ja ... er sieht (a,a) und an 2ter stelle ist ein "a" dann guckt er in der gleichen relation ob es ein paar gibt das an erster stelle ein "a" hat findet (a,a)
dies hat an zweiter stelle ein "a" also sucht er nach (a,a) und wird fündig :D
 
Das liegt sicherlich daran, dass ich Relation bisher eher nur in einer Menge betrachtet habe, also bsp. Relationen in den reellen Zahlen oder so[...]
Achso. Hier fehlen halt die eigentlichen Menge A und B, die hier A=B={a, b, c, d, ...} wären.
Muss nicht. Ich kenn die Funktion von Ruby ja nicht. Hätte ja sein können, dass dieses .include ein Element nicht findet, was aus Referenzen(?) von sich selbst aufgebaut is. Drum dieser Versuch.

Noch cooler is folgende transitive Relation: R:={}
 
R:={}
true

:D scheint wohl ganz gut umgesetzt zu sein .... hätte ich anfangs selber nicht gedacht hehe

teste auserdem auch noch auf

reflexiv?()
symmetrisch?()
asymmetrisch?()
anti_symmetrisch?()
transitiv?()
rechts_eindeutig?()
rechts_total?()
links_total?()
reflexiver_abschluss()
symmetrischer_abschluss()
transitiver_abschluss()

wenn du zeit findest kann du ja vllt noch einpaar dieser trickreichen relationen posten die einem nicht auf anhieb einfallen
 
Zuletzt bearbeitet:
Die tückischen sind halt die "Spezialfälle", die durch die Programmierung aufkommen. Die Eigenschaften selber sind ja eindeutig definiert.