Hej,
nie mam pomysłu jak zrobić program który oblicza domknięcia tranzytywne zbioru atrybutów, coś takiego:
z danych wejściowych:
Atrybuty relacji (oddzielone przecinkami):
A,B,C,QX
Zbiór zależności funkcyjnych:
A -> B;
QX -> C;
B,C -> A
Zrobić:
Domknięcia:
{A}+ = {A, B}
{B}+ = {B}
{C}+ = {C}
{QX}+ = {C, QX}
{A, B}+ = {A, B}
{A, C}+ = {A, B, C}
{B, C}+ = {A, B, C}
{A, QX}+ = {A, B, C, QX} <- Minimalny klucz kandydujący
{B, QX}+ = {A, B, C, QX} <- Minimalny klucz kandydujący
{C, QX}+ = {C, QX}
{A, B, C}+ = {A, B, C}
{A, B, QX}+ = {A, B, C, QX} <- Nadklucz
{A, C, QX}+ = {A, B, C, QX} <- Nadklucz
{B, C, QX}+ = {A, B, C, QX} <- Nadklucz
{A, B, C, QX}+ = {A, B, C, QX} <- Nadklucz
na razie wgrałam dane w taki sposób (pewnie też trochę nieudolnie), dalej nie wiem jak, przede wszystkim teraz nie wiem jak wypisać wszystkie kombinacje tych zbiorów. HELP :(
print("Prosze podac atrybuty relacji oddzielone przecinkami")
x = input().split(sep=',')
print("Prosze podac zbior zaleznosci funkcyjnych")
tab=[]
for i in range(int(input())):
przed, po = input().split(sep='->')
dane = [przed, po]
tab.append(dane)
print(x)
print(tab)
Chciałabym, żeby to działało na każdy przypadek, a nie tylko w tym konkretnym