Preskočiť na obsah
coden

Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI

Množiny, podmnožiny, operácie, karteziánsky súčin, relácie, ekvivalencia a usporiadanie — s Vennovými diagramami, maticou relácie a tým, na čo je to všetko v umelej inteligencii.

13 minút Matěj Žalmánek 2026-10-15

Séria Základy AI Diel 5 z 52
  1. Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
  2. Stručná história umelej inteligencie: od Turinga po jazykové modely
  3. Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
  4. Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
  6. Funkcie a zobrazenia: prečo je každý model v AI funkcia
  7. Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
  8. Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
  9. Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
  10. Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
  11. Gradientný zostup: ako sa model učí
  12. Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
  13. Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
  14. Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
  15. Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
  16. Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
  17. Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
  18. Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
  19. Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
  20. Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
  21. Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
  22. Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
  23. Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
  24. Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
  25. Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
  26. Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
  27. Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
  28. Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
  29. Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
  30. Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
  31. Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
  32. Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
  33. Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
  34. Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
  35. Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
  36. Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
  38. Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
  39. Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
  40. Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
  41. Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
  42. Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
  43. Prompty, kontext a RAG: ako modelu dať správne informácie
  44. Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
  45. Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
  46. Difúzne modely: ako sa z čistého šumu stane obrázok
  47. Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
  48. Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
  49. Policy gradient a PPO: učenie priamo stratégie
  50. Ako funguje AI agent: jazykový model v slučke s nástrojmi
  51. Programovanie s AI agentmi: zadanie, testy a kontrola
  52. Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť

Celá osnova série Hotovo: 52 z 83 tém

Čo si odnesiete
  • Čo je množina, podmnožina a karteziánsky súčin — a prečo počet podmnožín rastie exponenciálne.
  • Čo je relácia, aké má vlastnosti a ako ju nakresliť ako maticu a ako graf.
  • Prečo je klasifikácia rozklad na triedy ekvivalencie a model funkcia — zvláštna relácia.

Čo sa hodí vedieť vopred: Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory

Množiny a relácie sú stavebnica, z ktorej sa skladá takmer každá definícia v AI. Stavový priestor je množina stavov, prechody medzi nimi sú relácie, trénovacie dáta sú množina dvojíc a klasifikácia rozdeľuje vstupy do tried. Kto rozumie týmto dvom pojmom, číta definície v ďalších dieloch ako bežný text.

Zápis symbolov (∈, ⊆, ∪, ×) sme prebrali v predchádzajúcom diele. Tu pôjdeme pod povrch: čo presne znamenajú, aké majú vlastnosti a na čo sú v umelej inteligencii dobré.

1. Čo je množina

Definícia — množina a prvok

Množina je východiskový pojem, ktorý sa ďalej nerozkladá (podobne ako bod v geometrii): je to súbor navzájom rôznych objektov, ktorým hovoríme jej prvky. Pre množinu A a ľubovoľný objekt x píšeme

x ∈ A — „x je prvkom A“,   x ∉ A :⇔ ¬(x ∈ A) — „x nie je prvkom A“.

Od množiny požadujeme dve veci:

  1. pre každý objekt x platí práve jedno z tvrdení x ∈ A, x ∉ A — o členstve je vždy jednoznačne rozhodnuté;
  2. množina je úplne určená svojimi prvkami — nič ďalšie (poradie, počet opakovaní) k nej nepatrí; presne to hovorí definícia rovnosti nižšie.
Laicky povedané

Množina je vrece, do ktorého niečo dáte. Zaujíma nás len to, čo vo vreci je — nie v akom poradí ste to tam dali, ani koľkokrát. Dve guľôčky tej istej farby sú pre množinu jedna farba.

Množinu zapíšeme buď vymenovaním prvkov v zložených zátvorkách — A = {1, 2, 3} alebo {↑, →, ↓, ←} — alebo vlastnosťou, ktorú prvky spĺňajú: {x ∈ ℕ : x je párne}. Pre A = {1, 2, 3} platí 2 ∈ A a 5 ∉ A. Zápis vlastnosťou dokáže opísať aj nekonečné množiny a v AI sa používa takmer vždy: „množina všetkých stavov, z ktorých sa dá dostať do cieľa“.

Definícia — rovnosť množín

Nech A a B sú množiny. A a B sa rovnajú, píšeme A = B, práve vtedy, keď

∀x : (x ∈ A ⇔ x ∈ B).

Množiny sú teda rovnaké práve vtedy, keď majú presne tie isté prvky.

Laicky povedané

Dve vrecia sú rovnaké, keď je v nich to isté. Preto {1, 2, 2} = {2, 1} = {1, 2}: na poradí ani na opakovaní nezáleží.

Definícia — mohutnosť a prázdna množina

Prázdna množina ∅ je množina, pre ktorú platí

∀x : x ∉ ∅,

t. j. nemá žiadny prvok. Podľa definície rovnosti je len jedna.

Nech A je množina. A je konečná práve vtedy, keď A = ∅, alebo existujú n ∈ ℕ a navzájom rôzne objekty a1, …, an (ai ≠ aj pre i ≠ j) také, že A = {a1, …, an}. Mohutnosť konečnej množiny je číslo

|A| := n,   |∅| := 0,

teda počet jej prvkov.

Laicky povedané

Mohutnosť je odpoveď na otázku „koľko toho je vo vreci“: |{1, 2, 3}| = 3. Prázdna množina je prázdne vrece — stále je to množina, len v nej nič nie je.

2. Podmnožiny a potenčná množina

Z jednej množiny môžeme vyberať menšie. Na to potrebujeme tri pojmy, ktoré na seba nadväzujú: podmnožinu, vlastnú podmnožinu a potenčnú množinu.

Definícia — podmnožina

Nech A a B sú množiny. A je podmnožinou B, píšeme A ⊆ B, práve vtedy, keď

∀x : (x ∈ A ⇒ x ∈ B).

Každý prvok A je teda aj prvkom B. Zápor píšeme A ⊄ B; podľa negácie kvantifikátorov to znamená ∃x : x ∈ A ∧ x ∉ B.

Laicky povedané

Podmnožina je výber z vreca: vezmete niektoré veci z B a dáte ich do menšieho vreca A. Nič, čo v B nie je, do A pridať nesmiete. Tak {1, 3} ⊆ {1, 2, 3}, ale {1, 4} ⊄ {1, 2, 3}, pretože 4 v pôvodnej množine nie je. Každá množina je podmnožinou samej seba a prázdna množina je podmnožinou každej množiny.

Definícia — vlastná podmnožina

Nech A a B sú množiny. A je vlastnou podmnožinou B, píšeme A ⊂ B, práve vtedy, keď

A ⊆ B ∧ A ≠ B.

V B teda existuje aspoň jeden prvok, ktorý v A nie je. (Niektoré učebnice píšu ⊂ aj pre obyčajnú podmnožinu; v tejto sérii znamená ⊂ vždy vlastnú podmnožinu.)

Laicky povedané

Vlastná podmnožina je výber, v ktorom aspoň niečo chýba. {1, 3} ⊂ {1, 2, 3}, ale {1, 2, 3} nie je vlastnou podmnožinou samej seba — vzali ste úplne všetko.

Definícia — potenčná množina

Nech A je množina. Potenčná množina množiny A je množina

𝒫(A) := {S : S je množina ∧ S ⊆ A}.

Jej prvkami sú teda práve všetky podmnožiny A (vždy aj ∅ a A samotná).

Veta. Nech A je konečná množina. Potom |𝒫(A)| = 2|A| (dôkaz nižšie).

Laicky povedané

Potenčná množina je zoznam všetkých výberov, ktoré sa z vreca dajú urobiť — vrátane prázdneho výberu a výberu všetkého. Prečo ich je 2n: pri každom prvku sa rozhodnete, či ho do výberu dáte, alebo nie. To sú dve možnosti pre každý prvok, pre tri prvky 2 · 2 · 2 = 23 = 8, pre desať prvkov už 210 = 1024 (farby podľa vzorca nižšie).

Pre A = {a, b, c} je 𝒫(A) = {∅, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}} — spolu 8 podmnožín. S týmto exponenciálnym rastom sa v AI stretnete na každom kroku. Model, ktorý si má vybrať, ktoré z 50 príznakov použije, má na výber 250 — vyše biliardy možností. Preto sa výber príznakov nerobí skúšaním všetkých kombinácií.

|𝒫(A)| = 2|A|

|𝒫(A)|
počet všetkých podmnožín — koľko rôznych výberov z A existuje; to chceme spočítať
2
pri každom prvku sú práve dve možnosti, „vo výbere je“ a „vo výbere nie je“ — preto základ 2
|A|
počet prvkov = počet nezávislých rozhodnutí; nezávislé voľby sa násobia a n-krát vynásobená dvojka je mocnina
Počet výberov rastie exponenciálne: každý prvok navyše ho zdvojnásobí.
Veta — počet podmnožín (s dôkazom)

Veta. Nech n ∈ ℕ a A = {a1, …, an}, kde prvky a1, …, an sú navzájom rôzne (t. j. |A| = n). Potom |𝒫(A)| = 2n. (Pre A = ∅ je 𝒫(∅) = {∅} a |𝒫(∅)| = 1 = 20.)

Dôkaz. Každej podmnožine S ⊆ A priradíme charakteristický vektor (b1, …, bn) ∈ {0, 1}n, kde bi = 1 práve vtedy, keď ai ∈ S. Rôzne podmnožiny majú rôzne vektory a každý vektor patrí nejakej podmnožine — priradenie je vzájomne jednoznačné. Podmnožín je teda rovnako ako vektorov z núl a jednotiek dĺžky n, a tých je 2 · 2 · … · 2 = 2n. ∎

Z dôkazu rovno vyplýva postup, ako všetky podmnožiny vypísať: prejdeme čísla 0 až 2n − 1 a ich zápis v dvojkovej sústave čítame ako charakteristický vektor.

def vsechny_podmnoziny(prvky):          # prvky = [a1, ..., an]
    n = len(prvky)
    for k in range(2 ** n):              # k = 0, 1, ..., 2^n − 1
        yield {prvky[i] for i in range(n)
               if (k >> i) & 1}           # i-tý bit čísla k: je a_i vo výbere?
Príklad — podmnožina číslo 5 z {a, b, c}

5 = 1 · 20 + 0 · 21 + 1 · 22, teda bity (b1, b2, b3) = (1, 0, 1).

Bit 1 pri a a pri c, bit 0 pri b ⇒ podmnožina {a, c}.

Číslo 0 dá ∅, číslo 7 = 1112 dá celé {a, b, c} — a medzi tým je dohromady 8 čísel, teda 8 podmnožín.

3. Operácie s množinami

Definícia — zjednotenie, prienik, rozdiel, doplnok

Nech A a B sú množiny. Definujeme množiny

  1. zjednotenie   A ∪ B := {x : x ∈ A ∨ x ∈ B},
  2. prienik   A ∩ B := {x : x ∈ A ∧ x ∈ B},
  3. rozdiel   A ∖ B := {x : x ∈ A ∧ x ∉ B}.

Prvok teda leží v A ∪ B práve vtedy, keď leží aspoň v jednej z množín, v A ∩ B práve vtedy, keď leží v oboch, a v A ∖ B práve vtedy, keď leží v A, ale nie v B. Množiny s A ∩ B = ∅ sa nazývajú disjunktné.

Nech navyše U je množina (základná množina, „vesmír“) a A ⊆ U. Doplnok množiny A vzhľadom na U je množina

Ac := U ∖ A = {x ∈ U : x ∉ A}.

Veta (De Morganove zákony). Nech U je množina a A, B ⊆ U. Potom (A ∪ B)c = Ac ∩ Bc a (A ∩ B)c = Ac ∪ Bc (doplnky vzhľadom na U).

Laicky povedané

Zjednotenie je „buď, alebo, alebo oboje“, prienik „oboje naraz“, rozdiel „toto, ale nie tamto“ a doplnok „všetko ostatné“. De Morganov zákon hovorí, že „nie je pravda, že prší alebo sneží“ je to isté ako „neprší a nesneží“.

A B A ∪ B — zjednotenie
A B A ∩ B — prienik
A B A ∖ B — rozdiel
A B Ac — doplnok

V praxi AI sa s prienikmi počíta napríklad pri hodnotení modelu. Keď P je množina e-mailov, ktoré model označil ako spam, a S množina e-mailov, ktoré spamom naozaj sú (obe konečné a neprázdne), potom presnosť (precision) je |P ∩ S|/|P| — koľko z označených bol naozaj spam — a úplnosť (recall) |P ∩ S|/|S| — koľko spamu model zachytil.

presnosť = |P ∩ S|/|P|  úplnosť = |P ∩ S|/|S|

|P ∩ S|
zásahy — e-maily, ktoré model označil a spamom naozaj sú; v čitateli oboch vzorcov, pretože obe miery počítajú len úspechy
|P|
všetko, čo model označil; delíme tým, keď sa pýtame „môžem označeniu veriť?“ — falošné poplachy zväčšia menovateľ a presnosť klesne
|S|
všetok skutočný spam; delíme tým, keď sa pýtame „nič neušlo?“ — prehliadnutý spam zväčší menovateľ a úplnosť klesne
Rovnaký čitateľ, iný menovateľ: presnosť meria chyby navyše, úplnosť chyby vynechané.
Veta — princíp inklúzie a exklúzie (s dôkazom)

Veta. Nech A a B sú konečné množiny. Potom |A ∪ B| = |A| + |B| − |A ∩ B|.

Dôkaz. A ∪ B sa skladá z troch disjunktných častí: A ∖ B, A ∩ B a B ∖ A. Pritom |A| = |A ∖ B| + |A ∩ B| a |B| = |B ∖ A| + |A ∩ B|. Súčet |A| + |B| teda obsahuje všetky tri časti, ale prienik dvakrát; jedno odčítanie |A ∩ B| to napraví. ∎

|A ∪ B| = |A| + |B| − |A ∩ B|

|A ∪ B|
koľko prvkov je aspoň v jednej z množín — to chceme
|A|
započíta všetko z A, vrátane spoločnej časti
|B|
započíta všetko z B — a spoločnú časť druhýkrát
− |A ∩ B|
oprava: prienik sme sčítali dvakrát, tak ho raz odčítame, aby každý prvok platil raz
Príklad — presnosť, úplnosť a Jaccardov index

Model označil |P| = 50 e-mailov, skutočného spamu je |S| = 40 a v oboch množinách je |P ∩ S| = 36 e-mailov.

Farby podľa vzorca presnosti a úplnosti:

presnosť = 36/50 = 0,72 — 14 označených e-mailov bol falošný poplach,

úplnosť = 36/40 = 0,90 — 4 spamy model prepustil.

Podľa inklúzie a exklúzie (farby podľa jej vzorca) |P ∪ S| = 50 + 40 − 36 = 54. Pomer prieniku a zjednotenia je Jaccardov index (v počítačovom videní IoU, „intersection over union“, ktorým sa hodnotí, ako dobre rámček detektora sedí na objekt): pre konečné množiny P, S, z ktorých aspoň jedna je neprázdna,

J(P, S) := |P ∩ S|/|P ∪ S| = 36/54 = 2/3 ≈ 0,667.

4. Karteziánsky súčin a n-tice

Definícia — usporiadaná dvojica a karteziánsky súčin

Nech a, b sú ľubovoľné objekty. Usporiadaná dvojica (a, b) je objekt s prvou zložkou a a druhou zložkou b, pre ktorý platí: pre všetky objekty a, b, c, d

(a, b) = (c, d) ⇔ a = c ∧ b = d.

Na rozdiel od množiny {a, b} = {b, a} teda na poradí záleží. (Čisto množinovo sa dvojica zavádza ako (a, b) := {{a}, {a, b}} — Kuratowského definícia, ktorá práve túto vlastnosť má.)

Nech A a B sú množiny. Karteziánsky súčin A a B je množina

A × B := {(a, b) : a ∈ A ∧ b ∈ B}.

Ak sú A, B konečné, platí |A × B| = |A| · |B|.

Všeobecne: nech n ∈ ℕ a A1, …, An sú množiny. n-tica (a1, …, an) má vlastnosť (a1, …, an) = (b1, …, bn) ⇔ ∀i ∈ {1, …, n} : ai = bi a

A1 × … × An := {(a1, …, an) : ai ∈ Ai pre i = 1, …, n},   An := A × … × A (n-krát).

Laicky povedané

Karteziánsky súčin je tabuľka všetkých kombinácií. Tri tričká a dvoje nohavice dávajú 3 · 2 = 6 oblečení. Súradnice bodu v rovine sú dvojice z ℝ × ℝ = ℝ2.

Karteziánsky súčin je v AI všade. Trénovacie dáta s učiteľom sú podmnožina X × Y — dvojice (vstup, správna odpoveď). Fotka 28 × 28 pixelov je bod v ℝ784. A pri úlohe prehľadávania je prechodová funkcia definovaná na S × A — na dvojiciach (stav, akcia).

Príklad — koľko je dvojíc (stav, akcia)

Robot na mriežke 3 × 3 má |S| = 9 stavov (políčok) a |A| = 4 akcie {↑, →, ↓, ←}.

|S × A| = |S| · |A| = 9 · 4 = 36.

Tabuľka, ktorá má pre každú dvojicu (stav, akcia) jedno číslo — napríklad odhad, aká dobrá je tá akcia v tom stave — má teda 36 políčok. Prečo sa počty násobia: ku každému z 9 stavov možno pridať ktorúkoľvek zo 4 akcií, takže dvojice tvoria 9 riadkov po 4.

5. Relácie

Definícia — relácia

Nech A a B sú množiny. Binárna relácia medzi A a B je ľubovoľná množina R, pre ktorú

R ⊆ A × B.

Pre a ∈ A a b ∈ B píšeme a R b :⇔ (a, b) ∈ R a čítame „a je v relácii R s b“.

Relácia medzi A a A, t. j. R ⊆ A × A, sa nazýva relácia na množine A.

Laicky povedané

Relácia je zoznam dvojíc, ktoré „k sebe patria“. Kto je čí rodič, ktoré mesto má priame spojenie s ktorým, ktorý stav vedie do ktorého. Nič viac — len zoznam dvojíc.

Reláciu na malej množine môžeme nakresliť dvoma spôsobmi. Vezmime reláciu „a delí b“ (b je násobkom a) na množine {1, …, 6}. Ako maticu: v riadku a a stĺpci b je bodka, keď a delí b. A ako orientovaný graf: šípka z a do b.

stĺpec b (prvok 1–6) riadok a (prvok 1–6) 123456 1 2 3 4 5 6

matica: riadok a, stĺpec b

1 2 3 4 5 6

graf: šípka a → b (bez slučiek a → a)

Relácia „a delí b“ na množine {1, …, 6} dvojíc v relácii: 14

Relácia má 14 dvojíc. V AI sa stretnete s oboma podobami: matica relácie je to, s čím počíta počítač (matica susednosti grafu, matica podobnosti), graf je to, čo si nakreslí človek. Prechody medzi stavmi v prehľadávaní sú relácia na množine stavov a graf k najbližších susedov zo šírenia štítkov je relácia „je medzi najbližšími“.

Definícia — matica relácie

Nech n ∈ ℕ, A = {a1, …, an} je množina s navzájom rôznymi prvkami a1, …, an a R ⊆ A × A relácia na A. Matica relácie R (vzhľadom na toto očíslovanie prvkov) je tabuľka M ∈ {0, 1}n×n s n riadkami a n stĺpcami s prvkami

Mij := 1, ak ai R aj,   Mij := 0 inak,   pre i, j = 1, …, n.

Počet dvojíc v relácii je počet jednotiek v matici: ∑i=1n ∑j=1n Mij = |R|.

Veta — koľko je relácií

Veta. Nech A a B sú konečné množiny. Potom medzi A a B existuje presne 2|A| · |B| relácií.

Dôkaz. Relácia je ľubovoľná podmnožina A × B, relácií je teda |𝒫(A × B)| = 2|A × B| = 2|A| · |B|. ∎

Na {1, …, 6} je 6 · 6 = 36 možných dvojíc a 236 = 68 719 476 736 relácií. „Delí“ je jedna z nich — tá so 14 jednotkami v matici.

6. Vlastnosti relácií

Definícia — vlastnosti relácie na množine

Nech A je množina a R ⊆ A × A relácia na A. Relácia R je

  1. reflexívna práve vtedy, keď ∀a ∈ A : a R a;
  2. symetrická práve vtedy, keď ∀a, b ∈ A : (a R b ⇒ b R a);
  3. antisymetrická práve vtedy, keď ∀a, b ∈ A : ((a R b ∧ b R a) ⇒ a = b);
  4. tranzitívna práve vtedy, keď ∀a, b, c ∈ A : ((a R b ∧ b R c) ⇒ a R c).

Antisymetria nie je opak symetrie: relácia „=“ je symetrická aj antisymetrická zároveň.

Laicky povedané

Reflexívna: každý je v relácii sám so sebou. Symetrická: funguje to oboma smermi. Antisymetrická: oboma smermi len vtedy, keď ide o to isté. Tranzitívna: keď vedie cesta z a do b a z b do c, vedie aj priamo z a do c.

Pre relácie na množine {1, …, 6} to vyzerá takto — a z kombinácie vlastností sa pozná, o aký druh relácie ide:

ReláciaReflexívnaSymetrickáAntisymetrickáTranzitívna
a ≤ bánonieánoáno
a delí bánonieánoáno
rovnaký zvyšok po delení 3ánoánonieáno
|a − b| = 1 („susedia“)nieánonienie
Príklad — ako sa vlastnosť overí alebo vyvráti

Na matici relácie sa vlastnosti čítajú priamo: reflexívna ⇔ na diagonále sú samé jednotky (Mii = 1), symetrická ⇔ matica je súmerná podľa diagonály (Mij = Mji), antisymetrická ⇔ mimo diagonály nikdy nie sú jednotky na oboch miestach Mij a Mji.

Aby sme vlastnosť vyvrátili, stačí jediný protipríklad. „Susedia“ nie sú tranzitívni: 1 R 2 (|1 − 2| = 1) a 2 R 1, ale 1 R 1 neplatí (|1 − 1| = 0). Nie sú ani reflexívni (1 R 1 neplatí), ani antisymetrickí (1 R 2 a 2 R 1, pritom 1 ≠ 2).

Aby sme ju dokázali, musíme prejsť všetky prípady. „Delí“ je tranzitívna: keď b = ka a c = lb, potom c = (kl)a, takže a delí c.

Definícia — skladanie relácií a tranzitívny uzáver

Nech A je množina a R, Q ⊆ A × A sú relácie na A. Zloženie relácií R a Q je relácia

R ∘ Q := {(a, c) ∈ A × A : ∃b ∈ A : a R b ∧ b Q c}

— „z a sa dá jedným krokom R a potom jedným krokom Q dôjsť do c“. (Pozor, poradie v zápise sa v literatúre líši; pri funkciách znamená g ∘ f „najprv f“, tu R ∘ Q „najprv R“.)

Mocniny relácie R definujeme pre k ∈ ℕ rekurziou R1 := R, Rk+1 := Rk ∘ R. Tranzitívny uzáver relácie R je relácia

R+ := ⋃k=1∞ Rk = R ∪ (R ∘ R) ∪ (R ∘ R ∘ R) ∪ …

Teda a R+ c práve vtedy, keď existujú k ∈ ℕ a prvky b0, …, bk ∈ A s b0 = a, bk = c a bi−1 R bi pre i = 1, …, k — z a vedie do c cesta po šípkach R dĺžky aspoň 1.

Veta. Nech R je relácia na množine A. Potom R+ je najmenšia tranzitívna relácia na A, ktorá obsahuje R: platí R ⊆ R+, R+ je tranzitívna a pre každú tranzitívnu reláciu T na A s R ⊆ T je R+ ⊆ T.

Laicky povedané

Relácia hovorí, kam sa dá dôjsť jedným krokom, uzáver, kam sa dá dôjsť vôbec. V prehľadávaní je to rozdiel medzi „susedný stav“ a „dosiahnuteľný stav“.

Uzáver sa počíta Warshallovým algoritmom: postupne povolí každý prvok k ako medzizastávku a doplní všetky skratky i → k → j.

def tranzitivni_uzaver(A, M):            # M[i][j] = 1, keď i R j
    for k in A:                          # k smie byť medzizastávkou
        for i in A:
            for j in A:
                if M[i][k] and M[k][j]:  # cesta i → k → j ...
                    M[i][j] = 1          # ... dáva dvojicu (i, j)
    return M                             # n^3 krokov pre n prvkov

Pre „susedov“ na {1, …, 6} vyjde uzáver so všetkými 36 dvojicami: po krokoch o jedna sa dá z každého čísla dôjsť do každého, aj späť do seba (1 → 2 → 1). Relácia „delí“ už tranzitívna je, takže sa uzáverom nezmení — zostane 14 dvojíc.

7. Ekvivalencia a rozklad na triedy

Definícia — ekvivalencia a rozklad

Nech A je množina a R ⊆ A × A relácia na A. R je ekvivalencia práve vtedy, keď je reflexívna, symetrická a tranzitívna. Ak je R ekvivalencia a a ∈ A, je trieda ekvivalencie prvku a množina

[a] := {x ∈ A : x R a}.

Nech A je množina. Rozklad množiny A je množina 𝒮 ⊆ 𝒫(A) podmnožín A (jej prvkom hovoríme časti alebo triedy), ktorá spĺňa

  1. ∀S ∈ 𝒮 : S ≠ ∅ — žiadna časť nie je prázdna;
  2. ∀S, T ∈ 𝒮 : (S ≠ T ⇒ S ∩ T = ∅) — rôzne časti sú disjunktné;
  3. ⋃S ∈ 𝒮 S = A, t. j. ∀x ∈ A ∃S ∈ 𝒮 : x ∈ S — časti pokryjú celé A.

Každý prvok A teda leží v práve jednej časti.

Veta. Nech A je množina.

  1. Ak je R ekvivalencia na A, potom množina tried {[a] : a ∈ A} je rozklad A.
  2. Ak je 𝒮 rozklad A, potom relácia x ∼ y :⇔ ∃S ∈ 𝒮 : x ∈ S ∧ y ∈ S („patria do rovnakej časti“) je ekvivalencia na A a jej triedy sú práve časti 𝒮.
Laicky povedané

Ekvivalencia je „je v niečom rovnaký ako“ — rovnaká farba, rovnaký zvyšok, rovnaká trieda. Taká relácia vždy rozdelí množinu na priehradky, ktoré sa neprekrývajú a dohromady pokryjú všetko. Každý prvok je presne v jednej priehradke.

[a] = {x ∈ A : x R a}

[a]
trieda prvku a — priehradka, do ktorej a patrí; meno dostane podľa ľubovoľného svojho člena
x ∈ A
kandidáti sa berú len z rozkladanej množiny — priehradky delia A, nič iné
x R a
podmienka členstva: do priehradky k a patrí práve to, čo je s a „rovnaké“
Veta — triedy sa neprekrývajú (s dôkazom)

Veta. Nech A je množina, R ekvivalencia na A a a, b ∈ A. Potom platí buď [a] = [b], alebo [a] ∩ [b] = ∅. Navyše a ∈ [a] pre každé a ∈ A.

Dôkaz. Predpokladajme, že [a] ∩ [b] ≠ ∅, a ukážeme [a] = [b]. Potom existuje z ∈ [a] ∩ [b], teda z R a a z R b. Zo symetrie a R z a z tranzitivity a R b. Pre každé x ∈ [a] je x R a a a R b, teda x R b a x ∈ [b]; rovnako naopak. Takže [a] = [b]. Reflexivita navyše dáva a ∈ [a] — žiadna trieda nie je prázdna a každý prvok je v nejakej. ∎

Príklad — triedy zvyškov po delení 3

Na A = {0, …, 8} je x R a :⇔ x mod 3 = a mod 3, kde x mod 3 je zvyšok po celočíselnom delení x tromi.

[4] = {x ∈ {0, …, 8} : x mod 3 = 4 mod 3 = 1} = {1, 4, 7} (farby podľa vzorca vyššie).

[1] = [7] = {1, 4, 7} — tá istá trieda pod iným menom. Dohromady vzniknú 3 triedy po 3 prvkoch: {0, 3, 6}, {1, 4, 7}, {2, 5, 8}; 3 + 3 + 3 = 9 = |A|.

trieda [0] {0, 3, 6}
trieda [1] {1, 4, 7}
trieda [2] {2, 5, 8}
Rozklad {0, …, 8} podľa zvyšku po delení 3

Toto je presne to, čo robí klasifikácia: rozdelí množinu všetkých možných vstupov na triedy — spam a nie-spam, pes, mačka a papagáj. A zhlukovanie hľadá rozklad dát bez toho, aby mu niekto povedal, aké triedy sú. Výsledok k-means z dielu o druhoch učenia je rozklad bodov na tri triedy.

8. Usporiadanie

Definícia — čiastočné a lineárne usporiadanie

Nech A je množina a R ⊆ A × A relácia na A. R je čiastočné usporiadanie práve vtedy, keď je reflexívna, antisymetrická a tranzitívna. Dvojici (A, R) potom hovoríme čiastočne usporiadaná množina.

Prvky a, b ∈ A sú porovnateľné práve vtedy, keď a R b ∨ b R a. Čiastočné usporiadanie R je lineárne (úplné) práve vtedy, keď sú porovnateľné všetky dvojice:

∀a, b ∈ A : a R b ∨ b R a.

Laicky povedané

Usporiadanie hovorí, čo je „pred“ čím. Pri číslach podľa veľkosti sa dá porovnať čokoľvek s čímkoľvek. Pri čiastočnom usporiadaní nie vždy: 4 a 6 sa navzájom nedelia, takže podľa deliteľnosti nevieme, ktoré je „menšie“.

Čiastočné usporiadanie sa kreslí Hasseovým diagramom: menšie prvky dole, väčšie hore a čiara len medzi bezprostrednými susedmi — zvyšok vyplýva z tranzitivity. Tu sú delitele čísla 12 usporiadané deliteľnosťou:

1234612
Delitele čísla 12 usporiadané deliteľnosťou
Definícia — ostré usporiadanie a pokrytie

Nech A je množina a ≤ čiastočné usporiadanie na A. Ostré usporiadanie prislúchajúce k ≤ je relácia < na A daná pre a, b ∈ A predpisom

a < b :⇔ a ≤ b ∧ a ≠ b.

Prvok b ∈ A pokrýva prvok a ∈ A, píšeme a ⋖ b, práve vtedy, keď

a < b ∧ ¬∃c ∈ A : (a < c ∧ c < b),

t. j. a je ostro pod b a medzi nimi neleží žiadny ďalší prvok. Hasseov diagram konečnej čiastočne usporiadanej množiny kreslí čiaru (zdola nahor) práve medzi dvojicami a ⋖ b.

a ⋖ b ⇔ a < b ∧ ¬∃c ∈ A : a < c < b

a ⋖ b
„medzi a a b nakreslím čiaru“ — to, čo definujeme
a < b
ostro menšie: a musí byť pod b, a nie to isté — slučky a ≤ a platia vždy, tak ich nekreslíme
¬∃c ∈ A : a < c < b
nič medzi nimi: keby tam nejaké c bolo, vzťah a < b už vyplýva z tranzitivity cez c a čiara by bola zbytočná
def hasseuv_diagram(A, mensi):           # mensi(a, b) znamená a < b
    cary = []
    for a in A:
        for b in A:
            if mensi(a, b) and not any(mensi(a, c) and mensi(c, b) for c in A):
                cary.append((a, b))      # b pokrýva a
    return cary                          # poschodie prvku = najdlhší reťazec pod ním

Z diagramu je vidieť, že 1 delí všetko a 12 je deliteľné všetkým — ale 4 a 6 ani 2 a 3 porovnať nejde. Ostrých dvojíc a < b je medzi šiestimi deliteľmi 12, diagram ich však kreslí len 7. Zvyšných 5 — 1 < 4, 1 < 6, 1 < 12, 2 < 12 a 3 < 12 — sa dá vyčítať po čiarach, napríklad 1 → 2 → 4. V AI sa usporiadania objavujú všade, kde sa niečo radí alebo plánuje: poradie výsledkov vyhľadávania, priority v okraji algoritmu A*, alebo závislosti medzi krokmi plánu („najprv otvor dvere, potom prejdi“). Graf nadväzností modulov v osnove tejto série je mimochodom tiež čiastočné usporiadanie.

9. Funkcia ako zvláštna relácia

Definícia — funkcia

Nech A a B sú množiny. Funkcia (zobrazenie) z A do B, písané f : A → B, je relácia f ⊆ A × B, pre ktorú platí

∀a ∈ A ∃! b ∈ B : (a, b) ∈ f,

kde ∃! čítame „existuje práve jedno“. Každý prvok a ∈ A je teda v relácii s práve jedným prvkom b ∈ B; ten sa označuje f(a). Podrobnejšie o funkciách v diele Funkcie a zobrazenia.

Laicky povedané

Funkcia je relácia, ktorá na každú otázku odpovie práve jednou odpoveďou. „Je rodičom“ funkcia nie je — človek môže mať viac detí. „Má matku“ funkcia je — každý má práve jednu.

Príklad — funkcií je medzi reláciami málo

Na A = {1, 2, 3} je 23 · 3 = 29 = 512 relácií. Funkcia musí každému z 3 prvkov vybrať práve jeden z 3 obrazov, nezávisle od ostatných: 3 · 3 · 3 = 33 = 27 funkcií.

V matici relácie to znamená: v každom riadku je práve jedna jednotka. Matica „delí“ funkciou nie je — v riadku 1 má šesť jednotiek.

Tým sa kruh uzatvára: model v strojovom učení je funkcia f : X → Y, teda zvláštna relácia medzi vstupmi a výstupmi. Funkciám a ich vlastnostiam sa venuje ďalší diel osnovy.

10. Zhrnutie

  • Množina je súbor prvkov bez poradia a bez opakovania; podmnožín n-prvkovej množiny je 2n.
  • Zjednotenie, prienik, rozdiel a doplnok sú „alebo“, „a“, „ale nie“ a „všetko ostatné“; na prienikoch stojí presnosť a úplnosť modelu.
  • Karteziánsky súčin robí dvojice — z nich sa skladajú dáta (vstup, odpoveď) aj prechody (stav, akcia).
  • Relácia je množina dvojíc. Ekvivalencia rozkladá množinu na triedy (klasifikácia, zhlukovanie), usporiadanie určuje, čo je pred čím.
  • Funkcia je relácia s práve jednou odpoveďou — a model je funkcia.

Máte na to iný názor? Napíšte na support@coden-app.com.

Agent na vašom počítači, ovládaný z telefónu