Dogrulugunu test edemedim ama pythonda soyle bir algoritma yazdim. Gene cok verimsiz ama dogru calisacagini dusunuyorum
def kumenin_ici(alt_kume,kume,topoloji):
ic = set()
for acik_kume in topoloji:
if(acik_kume.issubset(alt_kume)):
ic =ic.union(acik_kume)
return ic
def kapali_kumeleri_bul(kume:set,topoloji:set):
kapalilar = set()
for i in topoloji:
kapalilar.add(frozenset(kume.difference(i)))
return kapalilar
def kumenin_kapanisi(alt_kume:set,kume:set,topoloji:set):
kapanis = kume
kapalilar = kapali_kumeleri_bul(kume,topoloji)
for i in kapalilar:
if alt_kume.issubset(i) :
kapanis = kapanis.intersection(i)
return kapanis
alt_kume = set({1})
kume = set({1,2})
topoloji = { frozenset() , frozenset({1}),frozenset({1,2})}
# a = {1} x = {1,2} t = {{},x,{1}}
print(kumenin_ici(alt_kume,kume,topoloji)) #{1}
print(kumenin_kapanisi(alt_kume,kume,topoloji)) #{1,2}
# a = {1} x = {1,2} t = {{},x}
alt_kume = set({1})
kume = set({1,2})
topoloji = { frozenset() , frozenset({1,2})}
print(kumenin_ici(alt_kume,kume,topoloji)) #{}
print(kumenin_kapanisi(alt_kume,kume,topoloji)) #{1,2}
# a = {1} x = {1,2} t = {{},x,{1},{2}}
alt_kume = set({1})
kume = set({1,2})
topoloji = { frozenset() , frozenset({1,2}) , frozenset({1}) , frozenset({2})}
print(kumenin_ici(alt_kume,kume,topoloji)) # {1}
print(kumenin_kapanisi(alt_kume,kume,topoloji)) # {1}