verzija: SageMath 9.4
load('relacije.sage')
Na skupu svih podskupova skupa $\{1,2,3\}$ zadana je relacija $\rho$ formulom: $x\mathrel{\rho}y\Leftrightarrow x\subseteq y$. Odredite matricu incidencije relacije $\rho$, ispišite njezine elemente i nacrtajte njezin graf.
skup1 = Subsets(3).list()
formula1 = lambda x,y: x & y == x
matrica1 = relacija_formula(skup1,formula1)
matrica1
matrica_table(matrica1,skup1,skup1)
matrica_html(matrica1,skup1,skup1)
relacija_formula(skup1,formula1,izlaz="elementi")
relacija_formula(skup1,formula1,izlaz="graf").show(figsize=[6,6])
Na skupu $\{1,2,3,4\}$ zadana je relacija matricom incidencije $$\begin{bmatrix}1&0&0&1\\ 0&1&1&0\\ 0&0&1&1\\ 0&0&1&0\end{bmatrix}.$$ Ispišite elemente zadane relacije i nacrtajte njezin graf.
M1 = matrix([[1,0,0,1],[0,1,1,0],[0,0,1,1],[0,0,1,0]])
relacija_matrica(M1)
relacija_matrica(M1,izlaz="graf")
Na skupu $\{a,b,c,d\}$ zadana je relacija matricom incidencije $$\begin{bmatrix}1&0&0&1\\ 0&1&1&0\\ 0&0&1&1\\ 0&0&1&0\end{bmatrix}.$$ Ispišite elemente zadane relacije i nacrtajte njezin graf.
var('a,b,c,d')
M2 = matrix([[1,0,0,1],[0,1,1,0],[0,0,1,1],[0,0,1,0]])
relacija_matrica(M2,oznakeElemenata=[a,b,c,d])
relacija_matrica(M2,oznakeElemenata=['a','b','c','d'],izlaz="graf")
Na skupu $\{1,2,3,4\}$ zadana je relacija $\rho=\{(1,1), (1,4), (2,2), (2,3), (3,3), (3,4), (4,3)\}$. Odredite matricu incidencije i nacrtajte graf relacije $\rho$.
skup2 = [1,2,3,4]
rel = [(1,1),(1,4),(2,2),(2,3),(3,3),(3,4),(4,3)]
relacija_elementi(skup2,rel)
relacija_elementi(skup2,rel,izlaz="graf",velicinaVrha=600)
Na skupu $\{a,b,c,d\}$ zadana je relacija $\rho$ svojim grafom $\{a:[a,d], b:[b,c], c:[c,d], d:[c]\}$. Odredite matricu incidencije, nacrtajte graf relacije $\rho$ i ispišite njezine elemente.
vrhovi = ['a','b','c','d']
graf = {'a':['a','d'],'b':['b','c'],'c':['c','d'],'d':['c']}
relacija_graf(vrhovi,graf)
relacija_graf(vrhovi,graf,izlaz="matrica")
relacija_graf(vrhovi,graf,izlaz="elementi")
Na skupu $A=\{0,1,2,3,4,5,6\}$ zadana je relacija $R$ sa $$x\mathrel{R}y\Leftrightarrow (x < y) \text{ i } x \text{ je prost broj}.$$ Ispišite elemente zadane relacije, nacrtajte graf i napišite matricu incidencije. Provjerite koja svojstva zadovoljava relacija $R$.
formula2 = lambda x,y: (x<y) and is_prime(x)
relacija_formula(range(7),formula2,izlaz="elementi")
relacija_formula(range(7),formula2,izlaz="graf")
matricaR=relacija_formula(range(7),formula2,izlaz="matrica")
matrica_html(matricaR,range(7),range(7))
[refleksivna(matricaR),irefleksivna(matricaR)]
[simetricna(matricaR),antisimetricna(matricaR),asimetricna(matricaR)]
[kompletna(matricaR),strogo_kompletna(matricaR)]
tranzitivna(matricaR)
[relacija_ekvivalencije(matricaR),parcijalni_uredjaj(matricaR),linearni_uredjaj(matricaR)]
Nacrtajte graf relacije $\rho=\big\{(x,y)\in\mathbb{R}^2: y\geq\sqrt{x},\, x,y\in[0,1]\big\}$.
var('x,y')
region_plot(y >= sqrt(x),(x,0,1),(y,0,1))
region_plot([y >= sqrt(x),x<1,y<1],(x,0,1.3),(y,-0.3,1.3),aspect_ratio=1,incol='pink')
Na skupu $A=\{2,3,4,5,6,7,8,9,10\}$ zadana je relacija $\rho=\big\{(x,y)\in A^2: x\equiv y\!\pmod{4}\big\}$. Ispišite elemente zadane relacije, nacrtajte graf i napišite matricu incidencije. Dokažite da je $\rho$ relacija ekvivalencije.
A = range(2,11)
for3 = lambda x,y: mod(x-y,4)==0
relacija_formula(A,for3,izlaz="elementi")
relacija_formula(A,for3,izlaz="graf").show(figsize=[5,5])
matricaRO=relacija_formula(A,for3,izlaz="matrica")
matrica_html(matricaRO,A,A)
relacija_ekvivalencije(matricaRO)
Na skupu $S=\{1,2,4,6,8\}$ zadana je relacija $\preccurlyeq$ s $$a\preccurlyeq b\Leftrightarrow \frac{a}{b}\in\mathbb{N}.$$ Ispišite elemente zadane relacije, nacrtajte graf i napišite matricu incidencije. Dokažite da je $\preccurlyeq$ relacija parcijalnog uređaja.
S = [1,2,4,6,8]
for4 = lambda a,b: mod(a,b)==0
relacija_formula(S,for4,izlaz="elementi")
relacija_formula(S,for4,izlaz="graf")
mat=relacija_formula(S,for4,izlaz="matrica")
matrica_html(mat,S,S)
parcijalni_uredjaj(mat)
linearni_uredjaj(mat)
hasse=Poset((S,for4))
hasse.show(figsize=[3,3],axes_pad=0.1)
[hasse.has_bottom(),hasse.bottom()]
[hasse.has_top(),hasse.top()]
hasse.minimal_elements()
hasse.maximal_elements()
Subsets(3).list()
Subsets(3)
type(Subsets(3))
pus1=Poset((Subsets(3).list(),lambda x,y: x & y == x))
pus1.show(vertex_size=1600,axes_pad=0.1)
type(pus1)
pus1.bottom()
pus1.top()
Subsets(3).list()[1:]
pus2=Poset((Subsets(3).list()[1:], lambda x,y: x & y == x))
pus2dva=pus1.subposet(Subsets(3).list()[1:])
pus2.show(vertex_size=1600,figsize=[4,5],axes_pad=0.1)
pus2dva.show(vertex_size=1600,figsize=[4,5],axes_pad=0.1)
pus2.minimal_elements()
pus2.maximal_elements()
matPUS2 = relacija_formula(Subsets(3).list()[1:],lambda x,y: x & y == x,izlaz="matrica")
matrica_html(matPUS2, Subsets(3).list()[1:], Subsets(3).list()[1:])
relacija_formula(Subsets(3).list()[1:],lambda x,y: x & y == x,izlaz="graf").show(figsize=[5,5])
Subsets(3).list()[1:-1]
pus3=Poset((Subsets(3).list()[1:-1], lambda x,y: x & y == x))
pus3dva=pus1.subposet(Subsets(3).list()[1:-1])
pus3.show(figsize=[5,4],vertex_size=1000,axes_pad=0.1)
pus3.minimal_elements()
pus3.maximal_elements()
matPUS3 = relacija_formula(Subsets(3).list()[1:-1], lambda x,y: x & y == x,izlaz="matrica")
matrica_html(matPUS3, Subsets(3).list()[1:-1], Subsets(3).list()[1:-1])
relacija_formula(Subsets(3).list()[1:-1], lambda x,y: x & y == x,izlaz="graf").show(figsize=[5,5])
var('a,b,c,d,e,f')
pus5=Poset((['a','b','c','d','e','f'],[('a','d'),('d','e'),('b','e'),('b','c'),('c','f')]))
pus5dva=Poset({a:[d],b:[c,e],c:[f],d:[e],e:[],f:[]})
pus5.show(vertex_color='yellow',figsize=(4,4),axes_pad=0.1)
pus5dva.show(figsize=(4,4),axes_pad=0.1)
pus5dva.minimal_elements()
pus5dva.maximal_elements()
matPUS5 = matrica_incidencije_PUS((['a','b','c','d','e','f'],[('a','d'),('d','e'),('b','e'),('b','c'),('c','f')]))
matrica_html(matPUS5, [r'\(a\)',r'\(b\)',r'\(c\)',r'\(d\)',r'\(e\)',r'\(f\)'], [r'\(a\)',r'\(b\)',r'\(c\)',r'\(d\)',r'\(e\)',r'\(f\)'])
matPUS5dva = matrica_incidencije_PUS({a:[d],b:[c,e],c:[f],d:[e],e:[],f:[]},redoslijed_elemenata=[a,b,c,d,e,f])
matrica_html(matPUS5dva, [a,b,c,d,e,f], [a,b,c,d,e,f])
relacija_matrica(matPUS5, oznakeElemenata=[a,b,c,d,e,f], izlaz="graf").show(figsize=[5,5])
relacija_matrica(matPUS5,oznakeElemenata=[a,b,c,d,e,f],izlaz="elementi")
elementi_PUS((['a','b','c','d','e','f'],[('a','d'),('d','e'),('b','e'),('b','c'),('c','f')]))
elementi_PUS({a:[d],b:[c,e],c:[f],d:[e],e:[],f:[]},redoslijed_elemenata=[a,b,c,d,e,f])
Na skupu $A=\{0,1,2\}\times\{2,5,8\}$ definiramo relaciju parcijalnog uređaja $\preccurlyeq$ s $$(a,b)\preccurlyeq(c,d)\Leftrightarrow a+b \mid c+d.$$ Nacrtajte Hasseov dijagram i odredite najmanji, najveći, minimalne i maksimalne elemente u parcijalno uređenom skupu $A$.
A = list(map(lambda x:tuple(x),cartesian_product(([0,1,2],[2,5,8])).list()))
A
rel = lambda x,y:mod(y[0]+y[1],x[0]+x[1])==0
pus6 = Poset((A,rel))
relacija_formula(A,rel,izlaz="elementi")
matPUS6 = relacija_formula(A,rel,izlaz="matrica")
matrica_html(matPUS6,A,A)
relacija_formula(A,rel,izlaz="graf",velicinaVrha=900).show(figsize=[5,5])
pus6.show(vertex_size=900,vertex_color='yellow',figsize=[5,5],axes_pad=0.1)
[pus6.has_bottom(),pus6.has_top()]
pus6.minimal_elements()
pus6.maximal_elements()
pus6.interval((0,2),(0,8))
pus6.closed_interval((0,2),(0,8))
pus6.open_interval((0,2),(0,8))
pus6.interval((0,2),(1,5))
pus6.open_interval((0,2),(1,5))
pus6.interval((1,5),(0,2))
pus6.interval((1,5),(0,8))
pus6.lower_covers((2,8))
pus6.lower_covers((1,2))
pus6.upper_covers((2,8))
pus6.upper_covers((1,2))
pus6.compare_elements((0,2),(0,2))
pus6.compare_elements((0,2),(0,8))
pus6.compare_elements((0,8),(0,2))
print(pus6.compare_elements((0,2),(0,5)))
pus6.level_sets()
pus6.linear_extension()
sva_prosirenja=pus6.linear_extensions()
len(sva_prosirenja)
sva_prosirenja[1001]
sva_prosirenja[83]
sva_prosirenja[8100]
list(pus6.antichains())
Na skupu $A=\{2,3,4,5,6,7,8,9,10\}$ definiramo relaciju parcijalnog uređaja $\preccurlyeq$ s $$x\preccurlyeq y\Leftrightarrow (x \mid y) \vee \big((x \text{ je prost}) \wedge (x< y)\big).$$ Nacrtajte Hasseov dijagram i odredite najmanji, najveći, minimalne i maksimalne elemente u parcijalno uređenom skupu $A$.
A = range(2,11)
relA = lambda x,y:mod(y,x)==0 or (is_prime(x) and x<y)
pus7 = Poset((A,relA))
relacija_formula(A,relA,izlaz="elementi")
matPUS7 = relacija_formula(A,relA,izlaz="matrica")
matrica_html(matPUS7,A,A)
relacija_formula(A,relA,izlaz="graf").show(figsize=[5,5])
pus7.show(vertex_color='yellow',figsize=[4,4],axes_pad=0.1)
[pus7.has_bottom(),pus7.has_top()]
pus7.bottom()
pus7.minimal_elements()
pus7.maximal_elements()
pus7.interval(3,10)
pus7.open_interval(3,10)
pus7.interval(4,9)
pus7.lower_covers(7)
pus7.upper_covers(7)
pus7.level_sets()
pus7.linear_extension()
svi=pus7.linear_extensions()
len(svi)
svi[8]
svi[59]
svi[135]
list(pus7.antichains())
mreza1 = LatticePoset((divisors(12),lambda x,y:mod(y,x)==0))
mreza1.show(vertex_color='yellow',figsize=[4,4],axes_pad=0.1)
mreza1.is_distributive()
$2\cdot3=1$
mreza1.meet(2,3)
$2+3=6$
mreza1.join(2,3)
$4+3=12$
mreza1.join(4,3)
$4\cdot3=1$
mreza1.meet(4,3)
mreza2 = LatticePoset((divisors(36),lambda x,y:mod(y,x)==0))
mreza2.show(vertex_color='yellow',figsize=[4.5,4.5],axes_pad=0.1)
$4+18=36$
mreza2.join(4,18)
$4\cdot18=2$
mreza2.meet(4,18)
mreza3 = LatticePoset((divisors(90),lambda x,y:mod(y,x)==0))
mreza3.show(vertex_color='yellow',axes_pad=0.1,vertex_size=500,figsize=[5,5])
$18+10=90$
mreza3.join(18,10)
$18\cdot10=2$
mreza3.meet(18,10)
Posets.BooleanLattice(4).show(axes_pad=0.1)
Posets.BooleanLattice(5).show(figsize=[10,10],vertex_size=500)
Posets.BooleanLattice(5).is_distributive()
Posets.DiamondPoset(8).show()
Posets.PentagonPoset().show(figsize=[4,4],axes_pad=0.1)
Posets.PentagonPoset().is_distributive()
Posets.IntegerPartitions(8).show(figsize=(10,10),vertex_size=1000,axes_pad=0.1)
Neka je $\rho$ binarna relacija na skupu $A$. Refleksivno zatvorenje relacije $\rho$ je relacija $R$ na skupu $A$ za koju vrijedi:
Relacija (ne nužno refleksivna) zadana svojom matricom incidencije
matrica=random_matrix(GF(2),6,6)
refleksivna(matrica)
matrica_refl = refleksivno_zatvorenje(matrica)
refleksivna(matrica_refl)
matrica_html(matrica,range(1,7),range(1,7))
matrica_html(matrica_refl,range(1,7),range(1,7))
relacija_matrica(matrica,izlaz="elementi")
relacija_matrica(matrica_refl,izlaz="elementi")
graphics_array([relacija_matrica(matrica,izlaz="graf"),relacija_matrica(matrica_refl,izlaz="graf")]).show(figsize=[9,9])
Neka je $\rho$ binarna relacija na skupu $A$. Simetrično zatvorenje relacije $\rho$ je relacija $R$ na skupu $A$ za koju vrijedi:
Relacija (ne nužno simetrična) zadana svojom matricom incidencije
matrica2 = random_matrix(GF(2),6,6)
simetricna(matrica2)
matrica2_sim = simetricno_zatvorenje(matrica2)
simetricna(matrica2_sim)
matrica_html(matrica2,range(1,7),range(1,7))
matrica_html(matrica2_sim,range(1,7),range(1,7))
relacija_matrica(matrica2,izlaz="elementi")
relacija_matrica(matrica2_sim,izlaz="elementi")
graphics_array([relacija_matrica(matrica2,izlaz="graf"),relacija_matrica(matrica2_sim,izlaz="graf")]).show(figsize=[9,9])
Neka je $\rho$ binarna relacija na skupu $A$. Tranzitivno zatvorenje relacije $\rho$ je relacija $R$ na skupu $A$ za koju vrijedi:
matrica3 = matrix([[0,0,0,1],[1,0,1,0],[1,0,0,1],[0,0,1,0]])
tranzitivna(matrica3)
matrica3_tran = tranzitivno_zatvorenje(matrica3)
tranzitivna(matrica3_tran)
matrica_html(matrica3,range(1,5),range(1,5))
matrica_html(matrica3_tran,range(1,5),range(1,5))
relacija_matrica(matrica3, izlaz="elementi")
relacija_matrica(matrica3_tran, izlaz="elementi")
graphics_array([relacija_matrica(matrica3,izlaz="graf"),relacija_matrica(matrica3_tran,izlaz="graf")]).show(figsize=[9,9])
relacija = [(1,1),(1,9),(2,2),(3,3),(4,4),(4,9),(5,5),(8,2),(9,1),(9,4),(9,9)]
relacijaMatrica = relacija_elementi(range(1,10),relacija,izlaz="matrica")
[refleksivna(relacijaMatrica),simetricna(relacijaMatrica),tranzitivna(relacijaMatrica)]
rel_ekv = ekvivalencija_zatvorenje(relacijaMatrica)
[refleksivna(rel_ekv),simetricna(rel_ekv),tranzitivna(rel_ekv)]
matrica_html(relacijaMatrica,range(1,10),range(1,10))
matrica_html(rel_ekv,range(1,10),range(1,10))
relacija
relacija_matrica(rel_ekv,izlaz="elementi")
graphics_array([relacija_matrica(relacijaMatrica,izlaz="graf"),relacija_matrica(rel_ekv,izlaz="graf")]).show(figsize=[9,9])
klase_ekvivalencije(rel_ekv, element=4)
klase_ekvivalencije(rel_ekv)