Syntax highlighting of Archiv/Formální základy databázové technologie/TransitiveClosure

{{Zkazky|
* '''Věta o tranzitivním uzávěru relace (?)''' - Napsal jsem definici tranzitivního uzávěru, znění věty a důkaz podle slidů prof. Pokorného. Až na drobnou chybu v definici tranzitivního úzávěru, kterou jsem opravil, to stačilo.
* '''Veta o tranzitivnim uzaveru relace (Galambos)''' - jeste ze jsem si tu otazku nechal az na konec, jinak bych tam sedel asi az do vecera. Nebyl jsem jedinej, koho otazka tohoto zkousejiciho dost zdrzela, spis to bylo pravidlo. Styl zkouseni podobny tomu pana Skopala s tim rozdilem, ze "se teda hezky snazte, vas necham chvili uzrat" a takhle se to opakuje nekolikrat..si osobne myslim, ze tenhle styl zkouseni je pro matfyz potrebnej, ale nikoliv u statnic, kde ma clovek dalsi ctyri otazky. Uz takhle tam nektery lidi sedeli a "zrali" u tech statnic celkem pres pet hodin (nebo i dyl-vyhlaseni melo bejt ve tri, ale ve trictvrte prisla pani Dejmkova, at prej mame strpeni, ze dva lidi jsou jeste zkouseny. Zacinali vsichni v devet..) Vubec si neumim predstavit, ze by v jedny komisi bylo takovejchhle zkousejicich vic. Navic nutit lidi na fleku (navic u statnic pod takovym tlakem) vymejslet veci, ktery treba nikdy neslyseli, protoze v doporucenejch kurzech ke statnicim se neberou, ale podle nazoru zkousejiciho se "do toho tematu daj zahrnout" (abych nekrivdil - to nebyl zrovna muj pripad, ale u nekterejch kolegu jo) podle me neni uplne stastnej pristup.. 
}}
Binární relace <math>R</math> je '''tranzitivní''', jestliže <math>∀ (a,b)∈R</math> a <math>(b,c)∈R</math> také <math>(a,c)∈R</math>.

'''Tranzitivní uzávěr <math>R^+</math>''' relace <math>R</math>, je nejmenší tranzitivní relace obsahující <math>R</math>.
* v praxi užitečný – např. hledání spojení s přestupy v dopravě, nebo hledání nejkratší cesty v grafu, apod.
{{theorem 
  | Pro schéma binární relace <math>R</math> v <math>A_R</math> neexistuje výraz, který ∀ relaci <math>R</math> počítá její tranzitivní uzávěr <math>R^+</math>.
  | o tranzitivním uzávěru relace
}} 
'''Pozn:''' 💡 Nestačí ani rozšíření o aritmetické výrazy, agregační fce a ano/ne dotazy, částečné řešení poskytuje Datalog

{{TODO|důkaz}}

===Dk (sporem a indukcí přes počet operací v hypotetickém výrazu pro výpočet tranzitivního uzávěru RA):===
* uvažujme binární relaci Rₛ = {a₁a₂, a₂a₃, ..., aₛ₋₁aₛ}
: ⇔ a₁ → a₂ → ... → aₛ ⇒ jejím tranzitivním uzávěrem je Rₛ⁺ = {aᵢaⱼ: i < j}
* ukážeme, že ∄ výraz E(Rₛ) = Rₛ⁺, pro všechna ''s''
* '''Lemma:''' výraz relační algebry E(Rₛ) ≅ {b₁b₂: Γ(b₁,b₂)} (pro dost.velké ''s''), kde ''Γ'' je v DNF
*: lze se na to dívat tak, že: 
*:: E(Rₛ) = {(aᵢ,aⱼ): 
*::: (aᵢ,aⱼ) ∈ Rₛ ∨
*::: (aᵢ,x) ∈ Rₛ ∧ (x, aⱼ) ∈ Rₛ ∨
*::: (aᵢ,x) ∈ Rₛ ∧ (x, y) ∈ Rₛ ∧ (y, aⱼ) ∈ Rₛ ∨
*:: ...}
** tohle Lemma se dokazuje indukcí dle počtu operátorů v ''E''
* sporem, nechť takové ''E'' existuje (je konečné), pak dokážu zvýšit s natolik, že (a₁,aₛ) nebude E(Rₛ)

===Dk (sporem a indukcí přes počet operací v hypotetickém výrazu pro výpočet tranzitivního uzávěru RA)===
# Nechť ∑ₛ = {a₁,a₂,...,aₛ}, s ≥ 1, je množina konstant, na které neexistuje uspořádání a
#: Rₛ = {a₁a₂, a₂a₃,...,aₛ₋₁aₛ}
#: '''Pozn.:''' Rₛ odpovídá grafu a₁ → a₂ → ... → aₛ , tj. transitivita je definovaná pomocí konektivity v orientovaném grafu.
#: '''Pozn.:''' je-li na ∑ₛ definováno uspořádání <, pak Rₛ⁺ ≅ (Rₛ [1] × Rₛ [2])(1 < 2)
# Ukážeme, že pro libovolný výraz E(R) existuje s takové, že E(Rₛ) ≠ Rₛ⁺.
# '''Lemma:''' Je-li ''E'' výraz relační algebry, pak pro dostatečně velké ''s''
#:E(Rₛ) ≅ { b₁,...,bₖ | Γ(b₁,...,bₖ) },
#: kde k ≥ 1 a Γ je formule v disjunktivní normální formě.
#: Atomické formule v Γ mají speciální tvar:
#:* bᵢ = aⱼ , bᵢ ≠ aⱼ ,
#:* bᵢ = bⱼ + c nebo bᵢ ≠ bⱼ + c, kde c je (ne nutně kladná) konstanta, přičemž
#:* bⱼ + c je zkratka pro “ takové aₘ , pro které bⱼ = aₘ₋<sub>c</sub> “
#: Doména interpretace pro ohodnocení proměnných bⱼ je ∑ₛ .
#: '''Pozn.:''' bᵢ = bⱼ + c ⇔ bᵢ  je za ''b''ⱼ ve vzdálenosti ''c'' uzlů.
# '''Dk(sporem):'''
#* existuje E tak, že E(R) = R⁺ a jakoukoliv relaci R, tj. i E(Rₛ) = Rₛ⁺ pro dostatečně velká ''s''
#* dle lemmatu, Rₛ⁺ ≅ { b₁,b₂ | Γ(b₁,b₂)}
#: Nastávají dva případy:
#: každá klauzule z Γ obsahuje atom tvaru
##: b₁ = aᵢ , b₂ = aᵢ nebo b₁ = b₂ + c (⇔ b₂ = b₁ - c)
##: Nechť b₁b₂ = aₘaₘ₊<sub>d</sub> ,
##: kde ''m'' > libovolné ''i'' a ''d'' > libovolné ''c''
##: ⇒ b₁ = aₘ a b₂ = aₘ₊<sub>d</sub> nevyhovuje žádné klauzuli z Γ.
##: ⇒ spor ( aₘaₘ₊<sub>d</sub> ∉ Rₛ⁺ )
## v Γ existuje klauzule s atomy obsahujícími jen ≠ .
##: Nechť b₁b₂ = aₘ₊<sub>d</sub>aₘ , kde ani bᵢ ≠ aₘ ani bᵢ ≠ aₘ₊<sub>d</sub>
##: není obsaženo v Γ a d > 0 je větší než libovolné ''c''
##: v b₁ ≠ b₂ + c nebo b₂ ≠ b₁ + c v Γ (viz konstrukce Γ)
##: ⇒ aₘ₊<sub>d</sub>aₘ ∈ E(Rₛ) pro postačující ''s'', ale ∉ Rₛ⁺ ⇒ spor
##: Tedy: Pro jakýkoliv výraz E vždy existuje ''s'' pro něž E(Rₛ) ≠ Rₛ⁺
# '''Dk lemmatu(indukcí dle počtu operátorů v E):'''
## ∅ operátorů ⇒ E ≡ Rₛ nebo E je relační konstanta stupně 1
##: ⇒ E ≡ { b₁ , b₂ | b₂ = b₁ + 1 }, resp.
##: ⇒ E ≡ { b₁ | b₁ = c₁ ∨ b₁ = c₂ ∨ ... ∨ b₁ = cₘ }, 
##
##:a)&nbsp; E ≡ E₁ ∪ E₂ , E₁ - E₂ , E₁ × E₂
##:: E₁ ≅ {b₁,...,bₖ | Γ₁(b₁,...,bₖ) }
##:: E₂ ≅ {b₁,...,bₘ | Γ₂(b₁,...,bₘ) }
##:: ⇒ pro ∪a - je ''k = m'' a tedy
##:: E ≅ {b₁,...,bₖ | Γ₁(b₁,...,bₖ) ∨ Γ₂(b₁,...,bₖ)} , resp. ,
##:: E ≅ {b₁,...,bₖ | Γ₁(b₁,...,bₖ) ∧¬Γ₂(b₁,...,bₖ)},
##:: ⇒ pro ×
##:: E ≅ {b₁,...,bₖ bₖ₊₁,...,bₖ₊ₘ | Γ₁(b₁,...,bₖ) ∧ Γ₂(bₖ₊₁,...,bₖ₊ₘ)}
##:: !! pak následuje transformace do DNF.
##:b)&nbsp; E ≡ E₁(φ) a φ obsahuje buď = nebo ≠
##:: ⇒ E ≅ {b₁,...,bₖ |Γ₁(b₁,...,bₖ) ∧ φ(b₁,...,bₖ)}
##:c)&nbsp; E ≡ E₁[S]
##:: Budeme uvažovat projekci odstraňující jeden atribut
##:: ⇒ jde o posloupnost permutací proměnných a eliminaci poslední komponenty
##::: eliminace bₖ vede k {b₁,...,bₖ₋₁| ∃bₖ Γ(b₁,...,bₖ)} , kde Γ je v DNF
##:: ⇒ podle a) :  ∪ᵢ₌₁..ₘ{b₁,...,bₖ₋₁| ∃bₖ Γᵢ(b₁,...,bₖ)}
##:: ⇒ budeme eliminovat ∃ z jednoho konjunktu
##:* v Γᵢ není bₖ = aᵢ, bᵢ = bₖ + c, bₖ = bᵢ + c
##:: ⇒ {b₁,...,bₖ₋₁ | <u>Γᵢ</u>(b₁,...,bₖ₋₁)}
##:: kde <u>Γᵢ</u> neobsahuje bₖ ≠ aᵢ , bᵢ ≠ bₖ + c, bₖ ≠ bᵢ + c
##:* v Γᵢ je buď bₖ = aᵢ, bᵢ = bₖ + c, bₖ = bᵢ + c
##:: ⇒ provedou se substituce za bₖ
##:: výsledky se upraví na TRUE
##:: nebo FALSE
##:: nebo bₜ = bⱼ + g
##:: a přidají se: bᵢ ≠ aⱼ pro s-c < j ≤ s, resp.
##:::: bᵢ ≠ aⱼ pro 1 < j ≤ c
{{Zdroje|
* Zdroj (znění a důkaz věty):
** Věta: For an arbitrary binary relation R, there is no expression E(R) in relational algebra equivalent to R+, the transitive closure of R.

** Článek: Alfred V. Aho and Jeffrey D. Ullman: Universality of data retrieval languages. In POPL '79: Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on  Principles of programming languages, San Antonio, Texas, 1979, strany 110--119
** [http://db.cs.berkeley.edu/cs286sp07/aho-ullman.pdf link]

V češtině u Prof. Pokorného na [http://ksi.ms.mff.cuni.cz/~pokorny/vyuka/pokorny.dj/ slajdech].

A pokud to někdo náhodou stále nechápe, tak jako já, tak doporučuji materiály z jedné nizozemské univerzity, kde je dopodrobna rozebrán jak důkaz lemmatu, tak hlavního teorému:
[http://wwwis.win.tue.nl/~tcalders/teaching/advancedDB08/ex/tc.pdf Lemma1]
[http://wwwis.win.tue.nl/~tcalders/teaching/advancedDB09/notes/lecture02.pdf MainTheorem]
}}