1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bildung von Potenzmenge (Teilmengen)

  • s_boeckmann
  • 8. Januar 2006 um 17:03
  • Unerledigt
  • s_boeckmann
    1
    s_boeckmann
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 8. Januar 2006 um 17:03
    • #1

    Hallo zusammen,

    für folgende Problemstellung bräuchte ich Eure Hilfe:

    Ich habe ein 2-dimensionale Array in dem hinterlegt ist, ob ein Student (s) in einem Kurs (k) eine Klausur schreiben will [true/false]. Da nicht jeder Student in allen Kursen eine Klausur schreibt, besteht die Möglichkeit, Klausuren parallel schreiben zu lassen - unter der Voraussetzung, daß bei den zusammengelegten Klausurterminen jeder Student nur eine Klausur schreibt.
    Ich habe also eine Menge von Kurse, ich nehme also den ersten Kurs und untersuche, mit welchem weiteren Kurs der erste Kurs parallel geprüft werden kann. Im Prinzip müßte ich also alle Teilmenge bilden, um zu überprüfen bei welcher Teilmenge - in der jeder Student nur eine Klausur schreiben würde - sich im ersten Durchgang die meisten Studenten prüfen lassen wollen. Diese Kurse werden dann als terminlich erste Klausur angesetzt, gleichzeitig werden diese Kurse aus der ursprünglichen Liste entfernt und die obige Prozedur wiederholt, bis alle Kurse einen Klausrtermin haben bzw. die Menge leer ist.

    Im ersten Schritt bräuchte ich also einen Algorithmus, der aus einer Menge die Potenzmengen (Teilmengen) ausgibt:

    Menge={1,2,3}
    Ausgabe
    1
    1,2
    1,2,3
    1,3
    2
    2,3
    3


    Umsetzten wollte ich das Programm in Java.
    Für Eure Hilfe möchte ich mich schon jetzt bedanken.

    Gruß

    Sebastian

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 8. Januar 2006 um 19:22
    • #2

    Die Potenzmenge bekäme man ca. so:

    Code
    P(A) {
      if (A == {}) {
        return {};
      } else {
        B = P(A\A[0]);
        C = B;
        for-each e in C {
           e = e union A[0];
        }
        return B union C;
      }
    }
    Alles anzeigen

    bzw. in Scheme

    Code
    (define (P A)
      (if (eqv? A '()) '(())
          (let ((B (P (cdr A))))
    	(let ((C (tree-copy B)))
    	  (append B (map (lambda (e) (cons (car A) e)) C))))))


    Allerdings würde ich nicht die Potenzmenge bilden (Aufwand 2^n), sondern der ersten Klausur einen vorläufigen Termin zuweisen, so viele Kurse dazunehmen wie möglich und am Ende nach der Anzahl der Studenten sortieren. Das ist zwar nicht optimal, aber dafür bleibt der Aufwand auch bei einer größeren Anzahl von Klausuren vertretbar.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung