Hallo Camping_RIDER,
sorry, hatte wohl Knöpfe auf den Augen. Klar - binäre Terme kann man als binären Baum aufbauen und per SQL rekursiv zusammensuchen. Dagegen steht dann alternativ mein Vorschlag mit der DNF und einem n-ären zweistufigen Baum, der sich ohne Rekursion auslesen lässt. Letztendlich hast Du ja nur eine Klammer mehr gesetzt (und dich bei KursD vertippt 😉)
wKovacz: KursX = KursA UND (KursB ODER (KursC UND KursD) ODER KursE)
CampRid: KursX = KursA UND (KursB ODER (KursE ODER (KursC UND KursD)))
Das sind 5 Kurse, die Wahrheitstabelle ist demnach etwas umständlicher. Der Term ist hier aber so gestaltet, dass die DNF relativ einfach zu finden ist. Man muss das UND hinter KursA nur ausmultiplizieren und bekommt (boolescher Term, UND wird nicht geschrieben und $$\lor$$ (lat. vel = oder) steht für ODER. Ein NOT würde als $$\overline{A} $$ geschrieben). Sei X die Regel für Kurs X und ABCDE die Kurse A-E. Dann sieht euer mehrstufiger Term als DNF so aus:
$$X = AB \lor ACD \lor AE$$
Im Allgemeinen ist das Finden der DNF bei verschachtelten Termen umständlicher, aber da ist auch das Schreiben des Terms umständlich, und es ist einfacher, von der Wahrheitstabelle auszugehen. Um dann aus einer Wahrheitstabelle eine optimale DNF zu bauen, gibt es Techniken (Karnaugh-Veitch-Diagramm und Quine-McCluskey Algorithmus) und bestimmt auch Tools (wobei ich gerade keins finde, das eine Wahrheitstafel als Input nimmt - seltsam).
Wenn das zu kompliziert ist - eine optimierte DNF ist nicht zwingend nötig. Auf sowas reiten die Schaltalgebra-Ingenieure herum, bei denen unnötige Siliziumatome oder Quadratnanometer Geld richtig teuer sind.
In den von mir vorgeschlagenen Tabellen sähe es so aus:
OderTerme
Kurs Gruppe
KursX 201
KursX 202
KursX 203
UndTerme
Gruppe Vor_Kurs Erforderlich
201 KursA 1
201 KursB 1
202 KursA 1
202 KursC 1
202 KursD 1
203 KursA 1
203 KursE 1
Rolf
sumpsi - posui - clusi