Äquivalenzen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo ich soll für diese Vorgabe die Prozeduren reflexiv,transitiv und symmetrisch schreiben,hab aber keinen plan kann mir jemand helfen???
Code:
/**
 * Das Programm erwartet als Eingabe die Größe einer quadratischen Matrix zur
 * Speicherung einer Relation. Anschliessend wird die Relation als geordnetes
 * Paar von positiven ganzen Zahlen eingelesen. Das Programm gibt aus, ob die
 * Relation reflexiv, symmetrisch oder transitiv ist und ob es sich um eine
 * Äquivalenzrelation handelt.
 */

public class Aequivalenz {
 
  /**
   * Die Funktion "readRel" ist Parameterlos. Sie liest die Grösse des
   * zweidimensionalen Arrays in der die Relation gespeichert werden soll. Dann
   * werden solange geordnete Paare der Relation eingelesen, bis eine Eingabe
   * nicht mehr im gültigen Bereich liegt (eingabe <0 oder eingabe >= size der
   * quadratischen Matrix)
   * 
   * @return zweidimensionales Array in dem die Relation gespeichert ist
   */
  static boolean[][] readRel() {
    boolean[][] relation = null;
    int size = 0, x = 0, y = 0; // Eingabevariable
    int i = 0, j = 0; //Laufvariablen
    stdin eingabe = new stdin();// Tastatureingabe

    // Schleife fuer Tastatureingabe, Absicherung und Fehlermeldung
    do {
      if ((size < 0) || (size > 20)) {
        System.out.println("\nZahl zu gross oder zu klein.");
      } // end if

      size = eingabe.getInt("Grösse der Matrix:  ");
    } //end do while
    while ((size < 0) || (size > 20));

    relation = new boolean[size][size];

    if (size == 0) {
      return relation;
    }// end if
    //Eingabe der Grössen in die Reihung
    for (i = 0; i < relation.length; i++) {
      for (j = 0; j < relation[i].length; j++) {
        relation[i][j] = false;
      } // end for
    } //end for

    do {
      x = eingabe.getInt("Geben Sie ein X ein:  ");
      y = eingabe.getInt("Geben Sie ein Y ein, dass zu X in Relation steht: ");
      if ((x < 0) || (y < 0) || (x >= size) || (y >= size)) {
        System.out
            .println("Ende der Eingabe(aufgrund von Eingabewerten ausserhalb des gueltigen Bereichs:) ");
      } else {
        relation[x][y] = true;
      } //end if
    } //end do while
    while ((x >= 0) && (y >= 0) && (x < size) && (y < size));

    return relation;
  } //end readRel


  /**
   * Die Funktion "main" ruft die Funktion readRel und anschliessend die
   * Funktionen reflexiv, symmetrisch, transitiv und speichert deren Ergebnis,
   * an Hand dessen dann entschieden wird, ob es sich um eine
   * Äquivalenzrelation handelt.
   * 
   * @param argv wird ignoriert
   */
  public static void main(String argv[]) {
    boolean ref = false;
    boolean symm = false;
    boolean trans = false;
    boolean[][] relation = null;
    relation = readRel();
    
    /*Hier müssen die Funktionsaufrufe und die Ausgabe ergänzt werden */


  } //end main

} //end class
Implementieren Sie die Prozeduren „reflexiv “,„symmetrisch “ und „transitiv “,so dass durch den
Aufruf dieser entschieden werden kann,ob eine Relation diese Eigenschaft erfüllt.Zur Eingabe der
Relation in ein zweidimensionales Array ist die Prozedur „readRel “ aus den Vorgaben zu nutzen.
Geben sie die vier beschriebenen Eigenschaften einer eingelesenen Relation mit Hilfe der von Ihnen
implementierten Prozeduren auf der Konsole aus.

kein Plan!!! :bahnhof:

edit deathbyaclown: code tags eingefügt !
 

Sky

Top Contributor
Was ist denn dein Problem? Weißt Du nicht, wie Du die oben aufgeführten Funktionen 'mathematisch' lößt, oder ist dein Problem, dass Du es nicht in JAVA umsetzen kannst??
 

Bleiglanz

Gesperrter Benutzer
symmetrisch:
=========
nimm alle Paare (x,y) und schau nach, ob auch (y,x) in der Relation ist

reflexiv
=====
nimm alle elemente x und schau nach, ob (x,x) in der Relation ist

transitiv
======
nimm alle paare (x,y) (y,?) und schau nach, ob auch ? in der Relation ist

------------------------------------------------

wenn du das ganze zeugs in eine boolean-matrix einliest, dann ist es ja sehr einfach

reflexiv (entspricht der diagonalen)
=========================
Code:
for i = 0 zu länge
  isREflexiv = isREflexiv && matrix[i][i]
symmetrisch
=========
Code:
for i =0 zu länge
   for j= 0 zu i
       if(matrix[i],[j])
           isSymmetrisch = isSymmetrisch && matrix[j][i]
transitiv
======
etwas komplizierter :)
 
G

Gast

Gast
ja das umsetzen in java is mein problem
//nimm alle elemente x und schau nach, ob (x,x) in der Relation ist
static boolean [][]ref()
for (int i = 0;i < relation.length;i++){
?????
da weiss ich nicht weiter
 
G

Gast

Gast
Code:
//nimm alle elemente x und schau nach, ob (x,x) in der Relation ist 
  static boolean [][]ref()
  for (int i = 0;i < relation.length;i++){
      for(int j = 0;j < relation.length;j++){
          if (relation[i][i] = true) { 
                r = true; 
            } //if
            else { 
               r = false; 
              } //else
            if (relation[j][j] = true) { 
               r = true; 
            } //if
            else{ 
               r = false; 
            }//else 
          }//for 
        }//for
        ref = r; 
        return ref; 
    }
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben