' $' & $ %Petr Hliněný, FI MU Brno 1 IB000 "Úv. Inf.": Skládání a Funkce 6 Vlastnosti funkcí a Skládání relací6 Vlastnosti funkcí a Skládání relací Vraťme se nyní k látce Lekce 3. Z jejího pokročilého obsahu jsme doposud velmi detailně probírali relace a jejich jednotlivé vlastnosti. Nyní se podívejme, jak lze relace mezi sebou ,,skládat , což je například základní technika práce s relačními databázemi. datum let letadlo 5.11. OK535 ČSA 5.11. AF2378 ČSA 5.11. DL5457 ČSA 6.11. OK535 AirFrance 6.11. AF2378 AirFrance pasažér datum let Petr 5.11. OK535 Pavel 6.11. OK535 Jan 5.11. AF2378 Josef 5.11. DL5457 Alena 6.11. AF2378 = pasažér letadlo Petr ČSA Josef ČSA . . . . . . ' $' & $ %Petr Hliněný, FI MU Brno 1 IB000 "Úv. Inf.": Skládání a Funkce 6 Vlastnosti funkcí a Skládání relací6 Vlastnosti funkcí a Skládání relací Vraťme se nyní k látce Lekce 3. Z jejího pokročilého obsahu jsme doposud velmi detailně probírali relace a jejich jednotlivé vlastnosti. Nyní se podívejme, jak lze relace mezi sebou ,,skládat , což je například základní technika práce s relačními databázemi. datum let letadlo 5.11. OK535 ČSA 5.11. AF2378 ČSA 5.11. DL5457 ČSA 6.11. OK535 AirFrance 6.11. AF2378 AirFrance pasažér datum let Petr 5.11. OK535 Pavel 6.11. OK535 Jan 5.11. AF2378 Josef 5.11. DL5457 Alena 6.11. AF2378 = pasažér letadlo Petr ČSA Josef ČSA . . . . . . Je však i jiné místo, kde jste se zajisté se skládáním relací setkali ­ jedná se o skládání funkcí. Jak například spočítáte na kalkulačce výsledek složitějšího vzorce? ' $' & $ %Petr Hliněný, FI MU Brno 1 IB000 "Úv. Inf.": Skládání a Funkce 6 Vlastnosti funkcí a Skládání relací6 Vlastnosti funkcí a Skládání relací Vraťme se nyní k látce Lekce 3. Z jejího pokročilého obsahu jsme doposud velmi detailně probírali relace a jejich jednotlivé vlastnosti. Nyní se podívejme, jak lze relace mezi sebou ,,skládat , což je například základní technika práce s relačními databázemi. datum let letadlo 5.11. OK535 ČSA 5.11. AF2378 ČSA 5.11. DL5457 ČSA 6.11. OK535 AirFrance 6.11. AF2378 AirFrance pasažér datum let Petr 5.11. OK535 Pavel 6.11. OK535 Jan 5.11. AF2378 Josef 5.11. DL5457 Alena 6.11. AF2378 = pasažér letadlo Petr ČSA Josef ČSA . . . . . . Je však i jiné místo, kde jste se zajisté se skládáním relací setkali ­ jedná se o skládání funkcí. Jak například spočítáte na kalkulačce výsledek složitějšího vzorce? Stručný přehled lekce * Přehled základních vlastností funkcí. * Inverzní relace a skládání (binárních) relací, příklady. * Skládání funkcí (coby relací), speciálně aplikováno na permutace. * Induktivní definice množin a funkcí. ' $' & $ %Petr Hliněný, FI MU Brno 2 IB000 "Úv. Inf.": Skládání a Funkce Zopakování relací a funkcí ˇ Relace mezi množinami A1, , Ak, pro k N, je libovolná podmnožina kartézského součinu R A1 × × Ak . Pokud A1 = = Ak = A, hovoříme o k-ární relaci R na A. ' $' & $ %Petr Hliněný, FI MU Brno 2 IB000 "Úv. Inf.": Skládání a Funkce Zopakování relací a funkcí ˇ Relace mezi množinami A1, , Ak, pro k N, je libovolná podmnožina kartézského součinu R A1 × × Ak . Pokud A1 = = Ak = A, hovoříme o k-ární relaci R na A. ˇ (Totální) funkce z množiny A do množiny B je relace f mezi A a B taková, že pro každé x A existuje právě jedno y B takové, že (x, y) f. ' $' & $ %Petr Hliněný, FI MU Brno 2 IB000 "Úv. Inf.": Skládání a Funkce Zopakování relací a funkcí ˇ Relace mezi množinami A1, , Ak, pro k N, je libovolná podmnožina kartézského součinu R A1 × × Ak . Pokud A1 = = Ak = A, hovoříme o k-ární relaci R na A. ˇ (Totální) funkce z množiny A do množiny B je relace f mezi A a B taková, že pro každé x A existuje právě jedno y B takové, že (x, y) f. Množina A se nazývá definiční obor a množina B obor hodnot funkce f. Funkcím se také říká zobrazení. Místo (x, y) f píšeme obvykle f(x) = y. Zápis f : A B říká, že f je funkce s def. oborem A a oborem hodnot B. ' $' & $ %Petr Hliněný, FI MU Brno 2 IB000 "Úv. Inf.": Skládání a Funkce Zopakování relací a funkcí ˇ Relace mezi množinami A1, , Ak, pro k N, je libovolná podmnožina kartézského součinu R A1 × × Ak . Pokud A1 = = Ak = A, hovoříme o k-ární relaci R na A. ˇ (Totální) funkce z množiny A do množiny B je relace f mezi A a B taková, že pro každé x A existuje právě jedno y B takové, že (x, y) f. Množina A se nazývá definiční obor a množina B obor hodnot funkce f. Funkcím se také říká zobrazení. Místo (x, y) f píšeme obvykle f(x) = y. Zápis f : A B říká, že f je funkce s def. oborem A a oborem hodnot B. ˇ Pokud naší definici funkce upravíme tak, že požadujeme pro každé x A nejvýše jedno y B takové, že (x, y) f, obdržíme definici parciální funkce z A do B. ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ­ surjektivní (nebo také ,,na ) právě když pro každé y B existuje x A takové, že f(x) = y; ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ­ surjektivní (nebo také ,,na ) právě když pro každé y B existuje x A takové, že f(x) = y; ­ bijektivní (vzáj. jednoznačná) právě když je injektivní a souč. surjektivní. ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ­ surjektivní (nebo také ,,na ) právě když pro každé y B existuje x A takové, že f(x) = y; ­ bijektivní (vzáj. jednoznačná) právě když je injektivní a souč. surjektivní. Ukázky vlastností funkcí. ˇ Funkce plus : N× N N je surjektivní, ale není prostá. ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ­ surjektivní (nebo také ,,na ) právě když pro každé y B existuje x A takové, že f(x) = y; ­ bijektivní (vzáj. jednoznačná) právě když je injektivní a souč. surjektivní. Ukázky vlastností funkcí. ˇ Funkce plus : N× N N je surjektivní, ale není prostá. ˇ Funkce g : Z N daná předpisem g(x) = -2x - 1 jestliže x < 0, 2x jinak je bijektivní. ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ­ surjektivní (nebo také ,,na ) právě když pro každé y B existuje x A takové, že f(x) = y; ­ bijektivní (vzáj. jednoznačná) právě když je injektivní a souč. surjektivní. Ukázky vlastností funkcí. ˇ Funkce plus : N× N N je surjektivní, ale není prostá. ˇ Funkce g : Z N daná předpisem g(x) = -2x - 1 jestliže x < 0, 2x jinak je bijektivní. ˇ Funkce : je bijektivní. ' $' & $ %Petr Hliněný, FI MU Brno 3 IB000 "Úv. Inf.": Skládání a Funkce 6.1 Vlastnosti funkcí6.1 Vlastnosti funkcí Definice: Funkce f : A B je ­ injektivní (nebo také prostá) právě když pro každé x, y A, x = y platí, že f(x) = f(y); ­ surjektivní (nebo také ,,na ) právě když pro každé y B existuje x A takové, že f(x) = y; ­ bijektivní (vzáj. jednoznačná) právě když je injektivní a souč. surjektivní. Ukázky vlastností funkcí. ˇ Funkce plus : N× N N je surjektivní, ale není prostá. ˇ Funkce g : Z N daná předpisem g(x) = -2x - 1 jestliže x < 0, 2x jinak je bijektivní. ˇ Funkce : je bijektivní. ˇ Funkce : {a, b} je injektivní, ale není surjektivní. ' $' & $ %Petr Hliněný, FI MU Brno 4 IB000 "Úv. Inf.": Skládání a Funkce 6.2 Inverzní relace a skládání relací6.2 Inverzní relace a skládání relací Definice: Nechť R A × B je binární relace mezi A a B. Inverzní relace k relaci R se značí R-1 a je definována takto: R-1 = {(b, a) | (a, b) R} (R-1 je tedy relace mezi B a A.) ' $' & $ %Petr Hliněný, FI MU Brno 4 IB000 "Úv. Inf.": Skládání a Funkce 6.2 Inverzní relace a skládání relací6.2 Inverzní relace a skládání relací Definice: Nechť R A × B je binární relace mezi A a B. Inverzní relace k relaci R se značí R-1 a je definována takto: R-1 = {(b, a) | (a, b) R} (R-1 je tedy relace mezi B a A.) Příklady inverzí pro relace­funkce. ˇ Inverzí bijektivní funkce f(x) = x + 1 na Z je funkce f-1 (x) = x - 1. ' $' & $ %Petr Hliněný, FI MU Brno 4 IB000 "Úv. Inf.": Skládání a Funkce 6.2 Inverzní relace a skládání relací6.2 Inverzní relace a skládání relací Definice: Nechť R A × B je binární relace mezi A a B. Inverzní relace k relaci R se značí R-1 a je definována takto: R-1 = {(b, a) | (a, b) R} (R-1 je tedy relace mezi B a A.) Příklady inverzí pro relace­funkce. ˇ Inverzí bijektivní funkce f(x) = x + 1 na Z je funkce f-1 (x) = x - 1. ˇ Inverzí prosté funkce f(x) = ex na R je parciální funkce f-1 (x) = ln x. ' $' & $ %Petr Hliněný, FI MU Brno 4 IB000 "Úv. Inf.": Skládání a Funkce 6.2 Inverzní relace a skládání relací6.2 Inverzní relace a skládání relací Definice: Nechť R A × B je binární relace mezi A a B. Inverzní relace k relaci R se značí R-1 a je definována takto: R-1 = {(b, a) | (a, b) R} (R-1 je tedy relace mezi B a A.) Příklady inverzí pro relace­funkce. ˇ Inverzí bijektivní funkce f(x) = x + 1 na Z je funkce f-1 (x) = x - 1. ˇ Inverzí prosté funkce f(x) = ex na R je parciální funkce f-1 (x) = ln x. ˇ Funkce g(x) = x mod 3 není prostá na N, a proto její inverzí je ,,jen relace g-1 = {(a, b) | a = b mod 3}. Konkrétně g-1 = {(0, 0), (0, 3), (0, 6), . . . , (1, 1), (1, 4), . . . , (2, 2), (2, 5), . . .}. ' $' & $ %Petr Hliněný, FI MU Brno 4 IB000 "Úv. Inf.": Skládání a Funkce 6.2 Inverzní relace a skládání relací6.2 Inverzní relace a skládání relací Definice: Nechť R A × B je binární relace mezi A a B. Inverzní relace k relaci R se značí R-1 a je definována takto: R-1 = {(b, a) | (a, b) R} (R-1 je tedy relace mezi B a A.) Příklady inverzí pro relace­funkce. ˇ Inverzí bijektivní funkce f(x) = x + 1 na Z je funkce f-1 (x) = x - 1. ˇ Inverzí prosté funkce f(x) = ex na R je parciální funkce f-1 (x) = ln x. ˇ Funkce g(x) = x mod 3 není prostá na N, a proto její inverzí je ,,jen relace g-1 = {(a, b) | a = b mod 3}. Konkrétně g-1 = {(0, 0), (0, 3), (0, 6), . . . , (1, 1), (1, 4), . . . , (2, 2), (2, 5), . . .}. Tvrzení 6.1. Mějme funkci f : A B. Pak její inverzní relace f-1 je a) parciální funkce právě když f je prostá, ' $' & $ %Petr Hliněný, FI MU Brno 4 IB000 "Úv. Inf.": Skládání a Funkce 6.2 Inverzní relace a skládání relací6.2 Inverzní relace a skládání relací Definice: Nechť R A × B je binární relace mezi A a B. Inverzní relace k relaci R se značí R-1 a je definována takto: R-1 = {(b, a) | (a, b) R} (R-1 je tedy relace mezi B a A.) Příklady inverzí pro relace­funkce. ˇ Inverzí bijektivní funkce f(x) = x + 1 na Z je funkce f-1 (x) = x - 1. ˇ Inverzí prosté funkce f(x) = ex na R je parciální funkce f-1 (x) = ln x. ˇ Funkce g(x) = x mod 3 není prostá na N, a proto její inverzí je ,,jen relace g-1 = {(a, b) | a = b mod 3}. Konkrétně g-1 = {(0, 0), (0, 3), (0, 6), . . . , (1, 1), (1, 4), . . . , (2, 2), (2, 5), . . .}. Tvrzení 6.1. Mějme funkci f : A B. Pak její inverzní relace f-1 je a) parciální funkce právě když f je prostá, b) funkce právě když f je bijektivní. Důkaz vyplývá přímo z definic funkce a inverze relace. 2 ' $' & $ %Petr Hliněný, FI MU Brno 5 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.2. Složení (kompozice) relací R a S. Nechť R A × B a S B × C jsou binární relace. Složení relací R a S (v tomto pořadí!) je relace S R A × C definovaná takto: S R = {(a, c) | existuje b B takové, že (a, b) R, (b, c) S} ' $' & $ %Petr Hliněný, FI MU Brno 5 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.2. Složení (kompozice) relací R a S. Nechť R A × B a S B × C jsou binární relace. Složení relací R a S (v tomto pořadí!) je relace S R A × C definovaná takto: S R = {(a, c) | existuje b B takové, že (a, b) R, (b, c) S} Složení relací čteme ,,R složeno s S nebo (pozor na pořadí!) ,,S po R . ' $' & $ %Petr Hliněný, FI MU Brno 5 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.2. Složení (kompozice) relací R a S. Nechť R A × B a S B × C jsou binární relace. Složení relací R a S (v tomto pořadí!) je relace S R A × C definovaná takto: S R = {(a, c) | existuje b B takové, že (a, b) R, (b, c) S} Složení relací čteme ,,R složeno s S nebo (pozor na pořadí!) ,,S po R . Příklady skládání relací. ˇ Je-li A = {a, b}, B = {1, 2}, C = {X}, R = {(a, 1), (b, 1), (b, 2)}, S = {(1, X)}, pak složením vznikne relace S R = {(a, X), (b, X)}. ' $' & $ %Petr Hliněný, FI MU Brno 5 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.2. Složení (kompozice) relací R a S. Nechť R A × B a S B × C jsou binární relace. Složení relací R a S (v tomto pořadí!) je relace S R A × C definovaná takto: S R = {(a, c) | existuje b B takové, že (a, b) R, (b, c) S} Složení relací čteme ,,R složeno s S nebo (pozor na pořadí!) ,,S po R . Příklady skládání relací. ˇ Je-li A = {a, b}, B = {1, 2}, C = {X}, R = {(a, 1), (b, 1), (b, 2)}, S = {(1, X)}, pak složením vznikne relace S R = {(a, X), (b, X)}. ˇ Složením funkcí h(x) = x2 a f(x) = x + 1 na R vznikne funkce f h (x) = f(h(x)) = x2 + 1. ' $' & $ %Petr Hliněný, FI MU Brno 5 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.2. Složení (kompozice) relací R a S. Nechť R A × B a S B × C jsou binární relace. Složení relací R a S (v tomto pořadí!) je relace S R A × C definovaná takto: S R = {(a, c) | existuje b B takové, že (a, b) R, (b, c) S} Složení relací čteme ,,R složeno s S nebo (pozor na pořadí!) ,,S po R . Příklady skládání relací. ˇ Je-li A = {a, b}, B = {1, 2}, C = {X}, R = {(a, 1), (b, 1), (b, 2)}, S = {(1, X)}, pak složením vznikne relace S R = {(a, X), (b, X)}. ˇ Složením funkcí h(x) = x2 a f(x) = x + 1 na R vznikne funkce f h (x) = f(h(x)) = x2 + 1. ˇ Složením těchže funkcí ,,naopak ale vznikne funkce hf (x) = h(f(x)) = (x+1)2 . ' $' & $ %Petr Hliněný, FI MU Brno 5 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.2. Složení (kompozice) relací R a S. Nechť R A × B a S B × C jsou binární relace. Složení relací R a S (v tomto pořadí!) je relace S R A × C definovaná takto: S R = {(a, c) | existuje b B takové, že (a, b) R, (b, c) S} Složení relací čteme ,,R složeno s S nebo (pozor na pořadí!) ,,S po R . Příklady skládání relací. ˇ Je-li A = {a, b}, B = {1, 2}, C = {X}, R = {(a, 1), (b, 1), (b, 2)}, S = {(1, X)}, pak složením vznikne relace S R = {(a, X), (b, X)}. ˇ Složením funkcí h(x) = x2 a f(x) = x + 1 na R vznikne funkce f h (x) = f(h(x)) = x2 + 1. ˇ Složením těchže funkcí ,,naopak ale vznikne funkce hf (x) = h(f(x)) = (x+1)2 . Poznámka: Nepříjemné je, že v některých oblastech matematiky (například v algebře při skládání zobrazení) se setkáme s právě opačným zápisem skládání, kdy se místo S R píše R S nebo jen RS. ' $' & $ %Petr Hliněný, FI MU Brno 6 IB000 "Úv. Inf.": Skládání a Funkce 6.3 Skládání relací ,,v praxi6.3 Skládání relací ,,v praxi Příklad 6.3. Skládání v relační databázi studentů, jejich předmětů a fakult. Mějme dvě binární relace ­ jednu R přiřazující studentům MU kódy jejich zapsa- ných předmětů, druhou S přiřazující kódy předmětů jejich mateřským fakultám. R : student (učo) předmět (kód) 121334 MA010 133935 M4135 133935 IA102 155878 M1050 155878 IB000 S : předmět (kód) fakulta MU MA010 FI IB000 FI IA102 FI M1050 PřF M4135 PřF ' $' & $ %Petr Hliněný, FI MU Brno 6 IB000 "Úv. Inf.": Skládání a Funkce 6.3 Skládání relací ,,v praxi6.3 Skládání relací ,,v praxi Příklad 6.3. Skládání v relační databázi studentů, jejich předmětů a fakult. Mějme dvě binární relace ­ jednu R přiřazující studentům MU kódy jejich zapsa- ných předmětů, druhou S přiřazující kódy předmětů jejich mateřským fakultám. R : student (učo) předmět (kód) 121334 MA010 133935 M4135 133935 IA102 155878 M1050 155878 IB000 S : předmět (kód) fakulta MU MA010 FI IB000 FI IA102 FI M1050 PřF M4135 PřF Jak z těchto ,,tabulkových relací zjistíme, kteří studenti mají zapsané předměty na kterých fakultách (třeba na FI)? ' $' & $ %Petr Hliněný, FI MU Brno 6 IB000 "Úv. Inf.": Skládání a Funkce 6.3 Skládání relací ,,v praxi6.3 Skládání relací ,,v praxi Příklad 6.3. Skládání v relační databázi studentů, jejich předmětů a fakult. Mějme dvě binární relace ­ jednu R přiřazující studentům MU kódy jejich zapsa- ných předmětů, druhou S přiřazující kódy předmětů jejich mateřským fakultám. R : student (učo) předmět (kód) 121334 MA010 133935 M4135 133935 IA102 155878 M1050 155878 IB000 S : předmět (kód) fakulta MU MA010 FI IB000 FI IA102 FI M1050 PřF M4135 PřF Jak z těchto ,,tabulkových relací zjistíme, kteří studenti mají zapsané předměty na kterých fakultách (třeba na FI)? Jedná se jednoduše o složení relací S R. V našem příkladě třeba: S R : student (učo) fakulta MU 121334 FI 133935 FI 133935 PřF 155878 FI 155878 PřF 2 ' $' & $ %Petr Hliněný, FI MU Brno 7 IB000 "Úv. Inf.": Skládání a Funkce Zobecněné skládání relací Fakt (skládání relací vyšší arity): Mějme relace T K1 × K2 × . . . × Kk a U L1 × L2 × . . . × L , přičemž pro nějaké m < min(k, ) platí L1 = Kk-m+1, L2 = Kk-m+2, . . . , Lm = Kk. ' $' & $ %Petr Hliněný, FI MU Brno 7 IB000 "Úv. Inf.": Skládání a Funkce Zobecněné skládání relací Fakt (skládání relací vyšší arity): Mějme relace T K1 × K2 × . . . × Kk a U L1 × L2 × . . . × L , přičemž pro nějaké m < min(k, ) platí L1 = Kk-m+1, L2 = Kk-m+2, . . . , Lm = Kk. Pak relaci T lze složit s relací U na zvolených m složkách L1, . . . , Lm (,,překrytí ) s použitím Definice 6.2 takto: ˇ Položme A = K1×. . .×Kk-m, B = L1×. . .×Lm a C = Lm+1×. . .×L . ˇ Příslušné relace pak jsou R = {(a, b) A × B | (a1, . . . ak-m, b1, . . . bm) T} a S = {(b, c) B × C | (b1, . . . bm, cm+1, . . . c ) U}. ' $' & $ %Petr Hliněný, FI MU Brno 7 IB000 "Úv. Inf.": Skládání a Funkce Zobecněné skládání relací Fakt (skládání relací vyšší arity): Mějme relace T K1 × K2 × . . . × Kk a U L1 × L2 × . . . × L , přičemž pro nějaké m < min(k, ) platí L1 = Kk-m+1, L2 = Kk-m+2, . . . , Lm = Kk. Pak relaci T lze složit s relací U na zvolených m složkách L1, . . . , Lm (,,překrytí ) s použitím Definice 6.2 takto: ˇ Položme A = K1×. . .×Kk-m, B = L1×. . .×Lm a C = Lm+1×. . .×L . ˇ Příslušné relace pak jsou R = {(a, b) A × B | (a1, . . . ak-m, b1, . . . bm) T} a S = {(b, c) B × C | (b1, . . . bm, cm+1, . . . c ) U}. ˇ Nakonec přirozeně položme U m T A B, takže vyjde U m T = (a, c) | ex. b B, že (a1, . . . ak-m, b1, . . . bm) T a (b1, . . . bm, cm+1, . . . c ) U . Schematicky pro snažší orientaci: T K1 × . . . × Kk-m× Kk-m+1 × . . . × Kk U L1 × . . . × Lm ×Lm+1 × . . . × L U m T K1 × . . . × Kk-m A × B × Lm+1 × . . . × L C ' $' & $ %Petr Hliněný, FI MU Brno 8 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.4. Skládání v relační databázi pasažérů a letů u leteckých společností. Podívejme se na příklad hypotetické rezervace letů pro cestující, relace T. Jak známo (tzv. codeshare), letecké společnosti si mezi sebou ,,dělí místa v leta- dlech, takže různé lety (podle kódů) jsou ve skutečnosti realizovány stejným letadlem jedné ze společností. To zase ukazuje relace U. T : pasažér datum let Petr 5.11. OK535 Pavel 6.11. OK535 Jan 5.11. AF2378 Josef 5.11. DL5457 Alena 6.11. AF2378 U : datum let letadlo 5.11. OK535 ČSA 5.11. AF2378 ČSA 5.11. DL5457 ČSA 6.11. OK535 AirFrance 6.11. AF2378 AirFrance ' $' & $ %Petr Hliněný, FI MU Brno 8 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.4. Skládání v relační databázi pasažérů a letů u leteckých společností. Podívejme se na příklad hypotetické rezervace letů pro cestující, relace T. Jak známo (tzv. codeshare), letecké společnosti si mezi sebou ,,dělí místa v leta- dlech, takže různé lety (podle kódů) jsou ve skutečnosti realizovány stejným letadlem jedné ze společností. To zase ukazuje relace U. T : pasažér datum let Petr 5.11. OK535 Pavel 6.11. OK535 Jan 5.11. AF2378 Josef 5.11. DL5457 Alena 6.11. AF2378 U : datum let letadlo 5.11. OK535 ČSA 5.11. AF2378 ČSA 5.11. DL5457 ČSA 6.11. OK535 AirFrance 6.11. AF2378 AirFrance Ptáme-li se nyní, setkají se Petr a Josef na palubě stejného letadla? Případně, čí letadlo to bude? Odpovědi nám dá zase složení relací U 2 T, jak je posáno výše. U 2 T : pasažér letadlo Petr ČSA Josef ČSA . . . . . . ' $' & $ %Petr Hliněný, FI MU Brno 8 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.4. Skládání v relační databázi pasažérů a letů u leteckých společností. Podívejme se na příklad hypotetické rezervace letů pro cestující, relace T. Jak známo (tzv. codeshare), letecké společnosti si mezi sebou ,,dělí místa v leta- dlech, takže různé lety (podle kódů) jsou ve skutečnosti realizovány stejným letadlem jedné ze společností. To zase ukazuje relace U. T : pasažér datum let Petr 5.11. OK535 Pavel 6.11. OK535 Jan 5.11. AF2378 Josef 5.11. DL5457 Alena 6.11. AF2378 U : datum let letadlo 5.11. OK535 ČSA 5.11. AF2378 ČSA 5.11. DL5457 ČSA 6.11. OK535 AirFrance 6.11. AF2378 AirFrance Ptáme-li se nyní, setkají se Petr a Josef na palubě stejného letadla? Případně, čí letadlo to bude? Odpovědi nám dá zase složení relací U 2 T, jak je posáno výše. U 2 T : pasažér letadlo Petr ČSA Josef ČSA . . . . . . Zkuste se zamyslet, lze tyto dvě relace skládat ještě jinak? Co by pak bylo významem? 2 ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ˇ Jak například na běžné kalkulačce vypočteme hodnotu funkce sin2 x ? ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ˇ Jak například na běžné kalkulačce vypočteme hodnotu funkce sin2 x ? Složíme (v tomto pořadí) ,,elementární funkce f(x) = sin x a g(x) = x2 . ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ˇ Jak například na běžné kalkulačce vypočteme hodnotu funkce sin2 x ? Složíme (v tomto pořadí) ,,elementární funkce f(x) = sin x a g(x) = x2 . ˇ Jak bychom na ,,elementární funkce rozložili aritmetický výraz 2 log(x2 + 1) ? ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ˇ Jak například na běžné kalkulačce vypočteme hodnotu funkce sin2 x ? Složíme (v tomto pořadí) ,,elementární funkce f(x) = sin x a g(x) = x2 . ˇ Jak bychom na ,,elementární funkce rozložili aritmetický výraz 2 log(x2 + 1) ? Ve správném pořadí složíme funkce f1(x) = x2 , f2(x) = x + 1, f3(x) = log x a f4(x) = 2x. ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ˇ Jak například na běžné kalkulačce vypočteme hodnotu funkce sin2 x ? Složíme (v tomto pořadí) ,,elementární funkce f(x) = sin x a g(x) = x2 . ˇ Jak bychom na ,,elementární funkce rozložili aritmetický výraz 2 log(x2 + 1) ? Ve správném pořadí složíme funkce f1(x) = x2 , f2(x) = x + 1, f3(x) = log x a f4(x) = 2x. ˇ A jak bychom obdobně vyjádřili složením funkcí aritmetický výraz sin x + cos x ? Opět je odpověď přímočará, vezmeme ,,elementární funkce g1(x) = sin x a g2(x) = cos x, a pak je ,,složíme další funkcí h(x, y) = x + y. ' $' & $ %Petr Hliněný, FI MU Brno 9 IB000 "Úv. Inf.": Skládání a Funkce 6.4 Skládání funkcí, permutace6.4 Skládání funkcí, permutace Fakt: Mějme zobrazení (funkce) f : A B a g : B C. Pak jejich složením coby relací v tomto pořadí vznikne zobrazení (g f) : A C definované (g f)(x) = g(f(x)) . ˇ Jak například na běžné kalkulačce vypočteme hodnotu funkce sin2 x ? Složíme (v tomto pořadí) ,,elementární funkce f(x) = sin x a g(x) = x2 . ˇ Jak bychom na ,,elementární funkce rozložili aritmetický výraz 2 log(x2 + 1) ? Ve správném pořadí složíme funkce f1(x) = x2 , f2(x) = x + 1, f3(x) = log x a f4(x) = 2x. ˇ A jak bychom obdobně vyjádřili složením funkcí aritmetický výraz sin x + cos x ? Opět je odpověď přímočará, vezmeme ,,elementární funkce g1(x) = sin x a g2(x) = cos x, a pak je ,,složíme další funkcí h(x, y) = x + y. Vidíme však, že takto pojaté ,,skládání už nezapadá hladce do našeho formalismu skládání relací. ' $' & $ %Petr Hliněný, FI MU Brno 10 IB000 "Úv. Inf.": Skládání a Funkce Skládání permutací Definice: Nechť permutace množiny [1, n] je určena seřazením jejích prvků (p1, . . . , pn). Pak je zároveň bijektivním zobrazením [1, n] [1, n] definova- ným předpisem (i) = pi. ' $' & $ %Petr Hliněný, FI MU Brno 10 IB000 "Úv. Inf.": Skládání a Funkce Skládání permutací Definice: Nechť permutace množiny [1, n] je určena seřazením jejích prvků (p1, . . . , pn). Pak je zároveň bijektivním zobrazením [1, n] [1, n] definova- ným předpisem (i) = pi. Tudíž lze permutace skládat jako relace podle Definice 6.2. ' $' & $ %Petr Hliněný, FI MU Brno 10 IB000 "Úv. Inf.": Skládání a Funkce Skládání permutací Definice: Nechť permutace množiny [1, n] je určena seřazením jejích prvků (p1, . . . , pn). Pak je zároveň bijektivním zobrazením [1, n] [1, n] definova- ným předpisem (i) = pi. Tudíž lze permutace skládat jako relace podle Definice 6.2. Poznámka: Všechny permutace množiny [1, n] spolu s operací skládání tvoří grupu, zvanou symetrická grupa Sn. Permutační grupy (podgrupy symetrické grupy) jsou velice důležité v algebře, neboť každá grupa je vlastně isomorfní některé permutační grupě. ' $' & $ %Petr Hliněný, FI MU Brno 10 IB000 "Úv. Inf.": Skládání a Funkce Skládání permutací Definice: Nechť permutace množiny [1, n] je určena seřazením jejích prvků (p1, . . . , pn). Pak je zároveň bijektivním zobrazením [1, n] [1, n] definova- ným předpisem (i) = pi. Tudíž lze permutace skládat jako relace podle Definice 6.2. Poznámka: Všechny permutace množiny [1, n] spolu s operací skládání tvoří grupu, zvanou symetrická grupa Sn. Permutační grupy (podgrupy symetrické grupy) jsou velice důležité v algebře, neboť každá grupa je vlastně isomorfní některé permutační grupě. Příkladem permutace vyskytujícím se v programátorské praxi je třeba zobrazení i (i + 1) mod n. ' $' & $ %Petr Hliněný, FI MU Brno 10 IB000 "Úv. Inf.": Skládání a Funkce Skládání permutací Definice: Nechť permutace množiny [1, n] je určena seřazením jejích prvků (p1, . . . , pn). Pak je zároveň bijektivním zobrazením [1, n] [1, n] definova- ným předpisem (i) = pi. Tudíž lze permutace skládat jako relace podle Definice 6.2. Poznámka: Všechny permutace množiny [1, n] spolu s operací skládání tvoří grupu, zvanou symetrická grupa Sn. Permutační grupy (podgrupy symetrické grupy) jsou velice důležité v algebře, neboť každá grupa je vlastně isomorfní některé permutační grupě. Příkladem permutace vyskytujícím se v programátorské praxi je třeba zobrazení i (i + 1) mod n. Často se programátor setkává (aniž si to mnohdy uvědomuje) s permutacemi při indexaci prvků polí. ' $' & $ %Petr Hliněný, FI MU Brno 11 IB000 "Úv. Inf.": Skládání a Funkce V kontextu pohledu na funkce a jejich skládání coby relací si zavedeme jiný, názornější, způsob zápisu permutací ­ pomocí jejich cyklů. ' $' & $ %Petr Hliněný, FI MU Brno 11 IB000 "Úv. Inf.": Skládání a Funkce V kontextu pohledu na funkce a jejich skládání coby relací si zavedeme jiný, názornější, způsob zápisu permutací ­ pomocí jejich cyklů. Definice: Nechť je permutace na množině A. Cyklem v rozumíme po- sloupnost a1, a2, . . . , ak různých prvků A takovou, že (ai) = ai+1 pro i = 1, 2, . . . , k - 1 a (ak) = a1. ' $' & $ %Petr Hliněný, FI MU Brno 11 IB000 "Úv. Inf.": Skládání a Funkce V kontextu pohledu na funkce a jejich skládání coby relací si zavedeme jiný, názornější, způsob zápisu permutací ­ pomocí jejich cyklů. Definice: Nechť je permutace na množině A. Cyklem v rozumíme po- sloupnost a1, a2, . . . , ak různých prvků A takovou, že (ai) = ai+1 pro i = 1, 2, . . . , k - 1 a (ak) = a1. Jak název napovídá, v zápise cyklu a1, a2, . . . , ak není důležité, kterým prvkem začneme, ale jen dodržení cyklického pořadí. Cyklus v permutaci může mít i jen jeden prvek (zobrazený na sebe). Například permutaci (5, 3, 4, 8, 6, 1, 7, 2) si lze obrázkem nakreslit takto: s s s s s ss s . . 1 5 6 2 3 48 7 ' $' & $ %Petr Hliněný, FI MU Brno 12 IB000 "Úv. Inf.": Skládání a Funkce Věta 6.5. Každou permutaci na konečné množině A lze zapsat jako složení cyklů na disjunktních podmnožinách (rozkladu) A. ' $' & $ %Petr Hliněný, FI MU Brno 12 IB000 "Úv. Inf.": Skládání a Funkce Věta 6.5. Každou permutaci na konečné množině A lze zapsat jako složení cyklů na disjunktních podmnožinách (rozkladu) A. Důkaz: Vezmeme libovolný prvek a1 A a iterujeme zobrazení a2 = (a1), a3 = (a2), atd., až se dostaneme ,,zpět k ak+1 = (ak) = a1. Proč tento proces skončí? Protože A je konečná a tudíž ke zopakování některého prvku ak+1 musí dojít. Nadto je prostá, a proto nemůže nastat (ak) = aj pro j > 1. Takto získáme první cyklus a1, . . . , ak . ' $' & $ %Petr Hliněný, FI MU Brno 12 IB000 "Úv. Inf.": Skládání a Funkce Věta 6.5. Každou permutaci na konečné množině A lze zapsat jako složení cyklů na disjunktních podmnožinách (rozkladu) A. Důkaz: Vezmeme libovolný prvek a1 A a iterujeme zobrazení a2 = (a1), a3 = (a2), atd., až se dostaneme ,,zpět k ak+1 = (ak) = a1. Proč tento proces skončí? Protože A je konečná a tudíž ke zopakování některého prvku ak+1 musí dojít. Nadto je prostá, a proto nemůže nastat (ak) = aj pro j > 1. Takto získáme první cyklus a1, . . . , ak . Induktivně pokračujeme s hledáním dalších cyklů ve zbylé množině A \ {a1, . . . , ak}, dokud nezůstane prázdná. ' $' & $ %Petr Hliněný, FI MU Brno 12 IB000 "Úv. Inf.": Skládání a Funkce Věta 6.5. Každou permutaci na konečné množině A lze zapsat jako složení cyklů na disjunktních podmnožinách (rozkladu) A. Důkaz: Vezmeme libovolný prvek a1 A a iterujeme zobrazení a2 = (a1), a3 = (a2), atd., až se dostaneme ,,zpět k ak+1 = (ak) = a1. Proč tento proces skončí? Protože A je konečná a tudíž ke zopakování některého prvku ak+1 musí dojít. Nadto je prostá, a proto nemůže nastat (ak) = aj pro j > 1. Takto získáme první cyklus a1, . . . , ak . Induktivně pokračujeme s hledáním dalších cyklů ve zbylé množině A \ {a1, . . . , ak}, dokud nezůstane prázdná. 2 Značení permutací cykly: Nechť se permutace podle Věty 6.5 skládá z cyklů a1, . . . , ak , b1, . . . , bl až třeba z1, . . . , zm . Pak zapíšeme = ( a1, . . . , ak b1, . . . , bl . . . z1, . . . , zm ) ' $' & $ %Petr Hliněný, FI MU Brno 12 IB000 "Úv. Inf.": Skládání a Funkce Věta 6.5. Každou permutaci na konečné množině A lze zapsat jako složení cyklů na disjunktních podmnožinách (rozkladu) A. Důkaz: Vezmeme libovolný prvek a1 A a iterujeme zobrazení a2 = (a1), a3 = (a2), atd., až se dostaneme ,,zpět k ak+1 = (ak) = a1. Proč tento proces skončí? Protože A je konečná a tudíž ke zopakování některého prvku ak+1 musí dojít. Nadto je prostá, a proto nemůže nastat (ak) = aj pro j > 1. Takto získáme první cyklus a1, . . . , ak . Induktivně pokračujeme s hledáním dalších cyklů ve zbylé množině A \ {a1, . . . , ak}, dokud nezůstane prázdná. 2 Značení permutací cykly: Nechť se permutace podle Věty 6.5 skládá z cyklů a1, . . . , ak , b1, . . . , bl až třeba z1, . . . , zm . Pak zapíšeme = ( a1, . . . , ak b1, . . . , bl . . . z1, . . . , zm ) . Primitivní pseudonáhodné generátory v počítačích iterují z náhodného počátku permu- taci danou vztahem i (i + p) mod q. Je pochopitelné, že tato permutace nesmí obsahovat krátké cykly, lépe řečeno, měla by se skládat z jediného (dlouhého) cyklu. ' $' & $ %Petr Hliněný, FI MU Brno 13 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.6. Ukázka skládání permutací daných svými cykly. Vezměme 7-prvkovou permutaci (5, 3, 4, 2, 6, 1, 7). Ta se rozkládá na tři cykly 1, 5, 6 , 2, 3, 4 a 7 . Jiná permutace (3, 4, 5, 6, 7, 1, 2) se skládá z jediného cyklu 1, 3, 5, 7, 2, 4, 6 . ' $' & $ %Petr Hliněný, FI MU Brno 13 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.6. Ukázka skládání permutací daných svými cykly. Vezměme 7-prvkovou permutaci (5, 3, 4, 2, 6, 1, 7). Ta se rozkládá na tři cykly 1, 5, 6 , 2, 3, 4 a 7 . Jiná permutace (3, 4, 5, 6, 7, 1, 2) se skládá z jediného cyklu 1, 3, 5, 7, 2, 4, 6 . Nyní určíme složení těchto dvou permutací (zápisem cykly): ( 1, 5, 6 2, 3, 4 7 ) ( 1, 3, 5, 7, 2, 4, 6 ) = ( 1, 4 2 3, 6, 5, 7 ) (Nezapomínejme, že první se ve složení aplikuje pravá permutace!) ' $' & $ %Petr Hliněný, FI MU Brno 13 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.6. Ukázka skládání permutací daných svými cykly. Vezměme 7-prvkovou permutaci (5, 3, 4, 2, 6, 1, 7). Ta se rozkládá na tři cykly 1, 5, 6 , 2, 3, 4 a 7 . Jiná permutace (3, 4, 5, 6, 7, 1, 2) se skládá z jediného cyklu 1, 3, 5, 7, 2, 4, 6 . Nyní určíme složení těchto dvou permutací (zápisem cykly): ( 1, 5, 6 2, 3, 4 7 ) ( 1, 3, 5, 7, 2, 4, 6 ) = ( 1, 4 2 3, 6, 5, 7 ) (Nezapomínejme, že první se ve složení aplikuje pravá permutace!) Postup skládání jsme použili následovný: ˇ 1 se zobrazí v permutaci vpravo na 3 a pak vlevo na 4. ' $' & $ %Petr Hliněný, FI MU Brno 13 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.6. Ukázka skládání permutací daných svými cykly. Vezměme 7-prvkovou permutaci (5, 3, 4, 2, 6, 1, 7). Ta se rozkládá na tři cykly 1, 5, 6 , 2, 3, 4 a 7 . Jiná permutace (3, 4, 5, 6, 7, 1, 2) se skládá z jediného cyklu 1, 3, 5, 7, 2, 4, 6 . Nyní určíme složení těchto dvou permutací (zápisem cykly): ( 1, 5, 6 2, 3, 4 7 ) ( 1, 3, 5, 7, 2, 4, 6 ) = ( 1, 4 2 3, 6, 5, 7 ) (Nezapomínejme, že první se ve složení aplikuje pravá permutace!) Postup skládání jsme použili následovný: ˇ 1 se zobrazí v permutaci vpravo na 3 a pak vlevo na 4. ˇ Následně 4 se zobrazí na 6 a pak na 1. Tím ,,uzavřeme první cyklus 1, 4 . ' $' & $ %Petr Hliněný, FI MU Brno 13 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.6. Ukázka skládání permutací daných svými cykly. Vezměme 7-prvkovou permutaci (5, 3, 4, 2, 6, 1, 7). Ta se rozkládá na tři cykly 1, 5, 6 , 2, 3, 4 a 7 . Jiná permutace (3, 4, 5, 6, 7, 1, 2) se skládá z jediného cyklu 1, 3, 5, 7, 2, 4, 6 . Nyní určíme složení těchto dvou permutací (zápisem cykly): ( 1, 5, 6 2, 3, 4 7 ) ( 1, 3, 5, 7, 2, 4, 6 ) = ( 1, 4 2 3, 6, 5, 7 ) (Nezapomínejme, že první se ve složení aplikuje pravá permutace!) Postup skládání jsme použili následovný: ˇ 1 se zobrazí v permutaci vpravo na 3 a pak vlevo na 4. ˇ Následně 4 se zobrazí na 6 a pak na 1. Tím ,,uzavřeme první cyklus 1, 4 . ˇ Dále se 2 zobrazí na 4 a pak hned zpět na 2, tj. má samostatný cyklus. ' $' & $ %Petr Hliněný, FI MU Brno 13 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.6. Ukázka skládání permutací daných svými cykly. Vezměme 7-prvkovou permutaci (5, 3, 4, 2, 6, 1, 7). Ta se rozkládá na tři cykly 1, 5, 6 , 2, 3, 4 a 7 . Jiná permutace (3, 4, 5, 6, 7, 1, 2) se skládá z jediného cyklu 1, 3, 5, 7, 2, 4, 6 . Nyní určíme složení těchto dvou permutací (zápisem cykly): ( 1, 5, 6 2, 3, 4 7 ) ( 1, 3, 5, 7, 2, 4, 6 ) = ( 1, 4 2 3, 6, 5, 7 ) (Nezapomínejme, že první se ve složení aplikuje pravá permutace!) Postup skládání jsme použili následovný: ˇ 1 se zobrazí v permutaci vpravo na 3 a pak vlevo na 4. ˇ Následně 4 se zobrazí na 6 a pak na 1. Tím ,,uzavřeme první cyklus 1, 4 . ˇ Dále se 2 zobrazí na 4 a pak hned zpět na 2, tj. má samostatný cyklus. ˇ Zbylý cyklus 3, 6, 5, 7 určíme analogicky. 2 ' $' & $ %Petr Hliněný, FI MU Brno 14 IB000 "Úv. Inf.": Skládání a Funkce 6.5 Induktivní definice množin a funkcí6.5 Induktivní definice množin a funkcí Přímým zobecněním rekurentních definic je následující koncept. Definice 6.7. Induktivní definice množiny. Jedná se obecně o popis (nějaké) množiny M v následujícím tvaru: ˇ Je dáno několik pevných (bázických) prvků a1, a2, . . . , ak M. ' $' & $ %Petr Hliněný, FI MU Brno 14 IB000 "Úv. Inf.": Skládání a Funkce 6.5 Induktivní definice množin a funkcí6.5 Induktivní definice množin a funkcí Přímým zobecněním rekurentních definic je následující koncept. Definice 6.7. Induktivní definice množiny. Jedná se obecně o popis (nějaké) množiny M v následujícím tvaru: ˇ Je dáno několik pevných (bázických) prvků a1, a2, . . . , ak M. ˇ Je dán soubor induktivních pravidel typu Jsou-li (libovolné prvky) x1, . . . , x M, pak také y M. V tomto případě je y typicky funkcí y = fi(x1, . . . , x ). ' $' & $ %Petr Hliněný, FI MU Brno 14 IB000 "Úv. Inf.": Skládání a Funkce 6.5 Induktivní definice množin a funkcí6.5 Induktivní definice množin a funkcí Přímým zobecněním rekurentních definic je následující koncept. Definice 6.7. Induktivní definice množiny. Jedná se obecně o popis (nějaké) množiny M v následujícím tvaru: ˇ Je dáno několik pevných (bázických) prvků a1, a2, . . . , ak M. ˇ Je dán soubor induktivních pravidel typu Jsou-li (libovolné prvky) x1, . . . , x M, pak také y M. V tomto případě je y typicky funkcí y = fi(x1, . . . , x ). Pak naše induktivně definovaná množina M je určena jako nejmenší (inkluzí) množina vyhovující těmto pravidlům. Vidíte podobnost této definice s uzávěrem relace? (Věta 5.7.) ' $' & $ %Petr Hliněný, FI MU Brno 14 IB000 "Úv. Inf.": Skládání a Funkce 6.5 Induktivní definice množin a funkcí6.5 Induktivní definice množin a funkcí Přímým zobecněním rekurentních definic je následující koncept. Definice 6.7. Induktivní definice množiny. Jedná se obecně o popis (nějaké) množiny M v následujícím tvaru: ˇ Je dáno několik pevných (bázických) prvků a1, a2, . . . , ak M. ˇ Je dán soubor induktivních pravidel typu Jsou-li (libovolné prvky) x1, . . . , x M, pak také y M. V tomto případě je y typicky funkcí y = fi(x1, . . . , x ). Pak naše induktivně definovaná množina M je určena jako nejmenší (inkluzí) množina vyhovující těmto pravidlům. Vidíte podobnost této definice s uzávěrem relace? (Věta 5.7.) Pro nejbližší příklad induktivní definice se obrátíme na množinu všech přirozených čísel. ­ 0 N ­ Je-li i N, pak také i + 1 N. ' $' & $ %Petr Hliněný, FI MU Brno 15 IB000 "Úv. Inf.": Skládání a Funkce Pro každé y N můžeme definovat jinou množinu My N induktivně takto: ­ y My. ­ Jestliže x My a x + 1 je liché, pak x + 2 My. Pak například M3 = {3}, nebo M4 = {4 + 2i | i N}. ' $' & $ %Petr Hliněný, FI MU Brno 15 IB000 "Úv. Inf.": Skládání a Funkce Pro každé y N můžeme definovat jinou množinu My N induktivně takto: ­ y My. ­ Jestliže x My a x + 1 je liché, pak x + 2 My. Pak například M3 = {3}, nebo M4 = {4 + 2i | i N}. Definice: Řekneme, že daná induktivní definice množiny M je jednoznačná, právě když každý prvek M lze odvodit z bázových prvků pomocí induktivních pravidel právě jedním způsobem. ' $' & $ %Petr Hliněný, FI MU Brno 15 IB000 "Úv. Inf.": Skládání a Funkce Pro každé y N můžeme definovat jinou množinu My N induktivně takto: ­ y My. ­ Jestliže x My a x + 1 je liché, pak x + 2 My. Pak například M3 = {3}, nebo M4 = {4 + 2i | i N}. Definice: Řekneme, že daná induktivní definice množiny M je jednoznačná, právě když každý prvek M lze odvodit z bázových prvků pomocí induktivních pravidel právě jedním způsobem. Definujme množinu M N induktivně takto: ­ 2, 3 M. ­ Jestliže x, y M, pak také x2 + y2 a x.y jsou prvky M. Proč tato induktivní definice není jednoznačná? ' $' & $ %Petr Hliněný, FI MU Brno 15 IB000 "Úv. Inf.": Skládání a Funkce Pro každé y N můžeme definovat jinou množinu My N induktivně takto: ­ y My. ­ Jestliže x My a x + 1 je liché, pak x + 2 My. Pak například M3 = {3}, nebo M4 = {4 + 2i | i N}. Definice: Řekneme, že daná induktivní definice množiny M je jednoznačná, právě když každý prvek M lze odvodit z bázových prvků pomocí induktivních pravidel právě jedním způsobem. Definujme množinu M N induktivně takto: ­ 2, 3 M. ­ Jestliže x, y M, pak také x2 + y2 a x.y jsou prvky M. Proč tato induktivní definice není jednoznačná? Například číslo 8 M lze odvodit způsobem 8 = 2 (2 2), ale zároveň zcela jinak 8 = 22 + 22. V čem tedy spočívá důležitost jednoznačných induktivních definic množin? ' $' & $ %Petr Hliněný, FI MU Brno 16 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.8. Induktivní definice funkce z induktivní množiny. Nechť množina M je dána jednoznačnou induktivní definicí. Pak říkáme, že funkce F : M X je definována induktivně (vzhledem k induktivní defi- nici M), pokud je řečeno: ˇ Pro každý z bázických prvků a1, a2, . . . , ak M je určeno F(ai) = ci. ' $' & $ %Petr Hliněný, FI MU Brno 16 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.8. Induktivní definice funkce z induktivní množiny. Nechť množina M je dána jednoznačnou induktivní definicí. Pak říkáme, že funkce F : M X je definována induktivně (vzhledem k induktivní defi- nici M), pokud je řečeno: ˇ Pro každý z bázických prvků a1, a2, . . . , ak M je určeno F(ai) = ci. ˇ Pro každé induktivní pravidlo typu "Jsou-li (libovolné prvky) x1, . . . , x M, pak také f(x1, . . . , x ) M" je definováno F( f(x1, . . . , x ) ) na základě hodnot F(x1), . . . , F(x ). ' $' & $ %Petr Hliněný, FI MU Brno 16 IB000 "Úv. Inf.": Skládání a Funkce Definice 6.8. Induktivní definice funkce z induktivní množiny. Nechť množina M je dána jednoznačnou induktivní definicí. Pak říkáme, že funkce F : M X je definována induktivně (vzhledem k induktivní defi- nici M), pokud je řečeno: ˇ Pro každý z bázických prvků a1, a2, . . . , ak M je určeno F(ai) = ci. ˇ Pro každé induktivní pravidlo typu "Jsou-li (libovolné prvky) x1, . . . , x M, pak také f(x1, . . . , x ) M" je definováno F( f(x1, . . . , x ) ) na základě hodnot F(x1), . . . , F(x ). Pro příklad se podívejme třeba do manuálu unixového příkazu test EXPRESSION: EXPRESSION is true or false and sets exit status. It is one of: ! EXPRESSION EXPRESSION is false EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true [-n] STRING the length of STRING is nonzero STRING1 = STRING2 the strings are equal ...... ' $' & $ %Petr Hliněný, FI MU Brno 17 IB000 "Úv. Inf.": Skládání a Funkce Induktivní definice se ,,strukturální indukcí Příklad 6.9. Jednoduché aritmetické výrazy Nechť (abeceda) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , , (, )}. Definujme množinu jednoduchých výrazů SExp induktivně takto: ­ Dekadický zápis každého přirozeného čísla n je prvek SExp. ­ Jestliže x, y SExp, pak také (x) (y) a (x) (y) jsou prvky SExp. ' $' & $ %Petr Hliněný, FI MU Brno 17 IB000 "Úv. Inf.": Skládání a Funkce Induktivní definice se ,,strukturální indukcí Příklad 6.9. Jednoduché aritmetické výrazy Nechť (abeceda) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , , (, )}. Definujme množinu jednoduchých výrazů SExp induktivně takto: ­ Dekadický zápis každého přirozeného čísla n je prvek SExp. ­ Jestliže x, y SExp, pak také (x) (y) a (x) (y) jsou prvky SExp. (Jak vidíme, díky ,,závorkování je tato induktivní definice jednoznačná.) Pro ,,vyhodnocení výrazu pak definujme funkci Val : SExp N induktivně: ­ Bázické prvky: Val(n) = n, kde n je dekadický zápis přirozeného čísla n. ' $' & $ %Petr Hliněný, FI MU Brno 17 IB000 "Úv. Inf.": Skládání a Funkce Induktivní definice se ,,strukturální indukcí Příklad 6.9. Jednoduché aritmetické výrazy Nechť (abeceda) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , , (, )}. Definujme množinu jednoduchých výrazů SExp induktivně takto: ­ Dekadický zápis každého přirozeného čísla n je prvek SExp. ­ Jestliže x, y SExp, pak také (x) (y) a (x) (y) jsou prvky SExp. (Jak vidíme, díky ,,závorkování je tato induktivní definice jednoznačná.) Pro ,,vyhodnocení výrazu pak definujme funkci Val : SExp N induktivně: ­ Bázické prvky: Val(n) = n, kde n je dekadický zápis přirozeného čísla n. ­ První induktivní pravidlo: Val((x) (y)) = Val(x) + Val(y). ­ Druhé induktivní pravidlo: Val((x) (y)) = Val(x) Val(y). ' $' & $ %Petr Hliněný, FI MU Brno 17 IB000 "Úv. Inf.": Skládání a Funkce Induktivní definice se ,,strukturální indukcí Příklad 6.9. Jednoduché aritmetické výrazy Nechť (abeceda) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , , (, )}. Definujme množinu jednoduchých výrazů SExp induktivně takto: ­ Dekadický zápis každého přirozeného čísla n je prvek SExp. ­ Jestliže x, y SExp, pak také (x) (y) a (x) (y) jsou prvky SExp. (Jak vidíme, díky ,,závorkování je tato induktivní definice jednoznačná.) Pro ,,vyhodnocení výrazu pak definujme funkci Val : SExp N induktivně: ­ Bázické prvky: Val(n) = n, kde n je dekadický zápis přirozeného čísla n. ­ První induktivní pravidlo: Val((x) (y)) = Val(x) + Val(y). ­ Druhé induktivní pravidlo: Val((x) (y)) = Val(x) Val(y). (Tímto způsobem jsme našim výrazům vlastně přiřadili jejich ,,význam , sé- mantiku.) 2 ' $' & $ %Petr Hliněný, FI MU Brno 18 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.10. Důkaz správnosti přiřazeného ,,významu Val : SExp N. Věta. Pro každý výraz s SExp je hodnota Val(s) číselně rovna výsledku vyhodnocení výrazu s podle běžných zvyklostí aritmetiky. ' $' & $ %Petr Hliněný, FI MU Brno 18 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.10. Důkaz správnosti přiřazeného ,,významu Val : SExp N. Věta. Pro každý výraz s SExp je hodnota Val(s) číselně rovna výsledku vyhodnocení výrazu s podle běžných zvyklostí aritmetiky. Matematickou indukcí: Na rozdíl od dříve probíraných příkladů zde nevidíme žádný celočíselný ,,parametr n , a proto si jej budeme muset nejprve definovat. ' $' & $ %Petr Hliněný, FI MU Brno 18 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.10. Důkaz správnosti přiřazeného ,,významu Val : SExp N. Věta. Pro každý výraz s SExp je hodnota Val(s) číselně rovna výsledku vyhodnocení výrazu s podle běžných zvyklostí aritmetiky. Matematickou indukcí: Na rozdíl od dříve probíraných příkladů zde nevidíme žádný celočíselný ,,parametr n , a proto si jej budeme muset nejprve definovat. Naši indukci tedy povedeme podle ,,délky odvození výrazu s definované jako počet aplikací induktivních pravidel potřebných k odvození s SExp. Takto aplikované matematické indukci se často říká strukturální indukce. ' $' & $ %Petr Hliněný, FI MU Brno 18 IB000 "Úv. Inf.": Skládání a Funkce Příklad 6.10. Důkaz správnosti přiřazeného ,,významu Val : SExp N. Věta. Pro každý výraz s SExp je hodnota Val(s) číselně rovna výsledku vyhodnocení výrazu s podle běžných zvyklostí aritmetiky. Matematickou indukcí: Na rozdíl od dříve probíraných příkladů zde nevidíme žádný celočíselný ,,parametr n , a proto si jej budeme muset nejprve definovat. Naši indukci tedy povedeme podle ,,délky odvození výrazu s definované jako počet aplikací induktivních pravidel potřebných k odvození s SExp. Takto aplikované matematické indukci se často říká strukturální indukce. Důkaz: V bázi indukce ověříme vyhodnocení bázických prvků, což jsou zde dekadizké zápisy přirozených čísel. Platí Val(n) = n, což skutečně odpovídá zvyklostem aritmetiky. V indukčním kroku se podíváme na vyhodnocení Val((x) (y)) = Val(x) + Val(y). Podle běžných zvyklostí aritmetiky by hodnota Val((x) (y)) měla být rovna součtu vyhodnocení výrazu x, což je podle indukčního předpokladu rovno Val(x) (x má zřejmě kratší délku odvození), a vyhodnocení výrazu y, což je podle indukčního předpokladu rovno Val(y). Takže skutečně Val((x)(y)) = Val(x) + Val(y). Druhé pravidlo Val((x) (y)) se dořeší analogicky. 2