Fakulta Informatiky
Masarykova Univerzita
Matematick´ e Z´ aklady Informatiky (FI: IB000) Doc. RNDr. Petr Hlinˇ en´ y, Ph.D.
[email protected] 3. prosince 2012
Obsaˇzn´y a dobˇre pˇr´ıstupn´y u ´vod do nezbytn´ych form´ aln´ıch matematick´ych z´aklad˚ u modern´ı informatiky, doplnˇen´y ˇradou interaktivn´ıch cviˇcen´ı v IS MU. V´ yukov´ y text pro pˇredmˇet IB000 na FI MU od roku 2012, navazuj´ıc´ı zˇc´asti na ´ p˚ uvodn´ı v´ yukov´e texty Uvodu do Informatiky z minul´ ych let.
Verze 1.98 (2012)
c 2006–2012 Petr Hlinˇen´y, FI MU.
0.1
O tomto textu a jeho studiu
V´aˇzen´ı ˇcten´aˇri, dost´av´a se v´am do rukou v´yukov´y text Matematick´e Z´aklady Informatiky, kter´y je prim´arnˇe urˇcen´y pro studenty stejnojmenn´eho pˇredmˇetu na FI MU Brno. Seznamuje ˇcten´aˇre s nˇekolika form´aln´ımi matematick´ymi oblastmi d˚ uleˇzit´ymi pro u ´ spˇeˇsn´e studium modern´ı informatiky. N´aˇs text sv´ym obsahem volnˇe navazuje na p˚ uvodn´ı slidy pˇredmˇetu IB000 sepsan´e A. Kuˇcerou do roku 2005 a rozˇs´ıˇren´e autorem v letech 2006–11 o voln´y text a koment´aˇre. Od roku 2012 vˇsak byl obsah nˇekter´ych pas´aˇz´ı podstatnˇe zmˇenˇen ˇci pˇr´ımo vymˇenˇen za nov´y (nejzˇretelnˇejˇs´ı je zahrnut´ı u ´ vodu do graf˚ u). Mimo textu samotn´eho (jak jej zde vid´ıte) jsou z t´ehoˇz zdoje vytv´aˇreny i pˇredn´aˇskov´e slidy pˇredmˇetu, kter´e najdete napˇr´ıklad v IS MU. Slidy vˇsak pochopitelnˇe obsahuj´ı jen ˇc´ast textu a jsou jinak form´atov´any. Uˇcebn´ı text je ps´an strukturovan´ym matematick´ym pˇr´ıstupem, s velk´ym d˚ urazem na pˇresnost a formalitu vyjadˇrov´an´ı v nutn´ych parti´ıch. Na druhou stranu jsou stroh´a matematick´a vyj´adˇren´ı pokud moˇzno doplnˇena obs´ahl´ymi neform´aln´ımi koment´aˇri, kter´e maj´ı student˚ um ulehˇcit pochopen´ı l´atky. V ˇz´adn´em pˇr´ıpadˇe vˇsak ˇcten´aˇri nemaj´ı zamˇen ˇ ovat neform´aln´ı koment´aˇre za matematick´e definice – v pˇr´ıpadˇe nejasnost´ı vˇzdy plat´ı to, co pˇresnˇe ˇr´ık´a form´aln´ı definice. Interaktivn´ı osnova http://is.muni.cz/el/1433/podzim2012/IB000/index.qwarp
Ned´ılnou souˇc´ast´ı cel´eho v´yukov´eho textu jsou interaktivn´ı osnova pˇredmˇetu IB000 v IS MU a z n´ı odkazovan´e online odpovˇedn´ıky slouˇz´ıc´ı k procviˇcov´an´ı probran´e l´atky na jednoduch´ych i sloˇzitˇejˇs´ıch pˇr´ıkladech. To je tak´e d˚ uvod, proˇc texto text obsahuje jen velmi m´alo pˇr´ıklad˚ u k prob´ıran´e l´atce; od kaˇzd´eho studenta oˇcek´av´ame, ˇze si l´atku bude procviˇcovat online na zm´ınˇen´ych odpovˇedn´ıc´ıch, obsahuj´ıc´ıch aˇz tis´ıce pˇr´ıklad˚ u des´ıtek typ˚ u. K praktick´emu pochopen´ı pˇrednesen´ych znalost´ı i k jejich budouc´ım aplikac´ım je takov´e procviˇcen´ı nezbytn´e(!). V n´avaznosti na tyto odpovˇedn´ıky doporuˇcujeme student˚ um diskutovat o prob´ıran´e l´atce a sv´ych (ne)´ uspˇeˇs´ıch s cviˇc´ıc´ımi pˇredmˇetu i na pˇredmˇetov´em diskuzn´ım f´oru v IS.
ii
Obsah 0.1 O tomto textu a jeho studiu . . . . . . . . . . . . . . . . . . . . . . . . .
ii
1 Z´ akladn´ı formalismy matematiky ´ 1.1 Uvod do matematick´eho dokazov´an´ı . . 1.2 V´yznam matematick´ych vˇet . . . . . . 1.3 Struktura matematick´ych vˇet a d˚ ukaz˚ u 1.4 V´yroky a z´aklad v´yrokov´e logiky . . . 1.5 Stˇr´ıpky matematick´e logiky . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
1 1 2 3 5 6
2 D˚ ukazov´ e techniky, Indukce 2.1 Pˇrehled z´akladn´ıch d˚ ukazov´ych technik 2.2 Vˇety typu tehdy a jen tehdy“ . . . . . ” 2.3 Matematick´a indukce . . . . . . . . . . 2.4 Koment´aˇre k matematick´e indukci . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
11 11 13 14 16
3 Mnoˇ ziny a jejich prvky 3.1 Pojem mnoˇziny . . . . . . . . . . 3.2 Mnoˇzinov´e operace . . . . . . . . 3.3 Porovn´av´an´ı a urˇcen´ı mnoˇzin . . 3.4 Posloupnosti a rekurentn´ı vztahy
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
19 19 20 23 25
4 Relace a funkce, Ekvivalence 4.1 Relace a funkce nad mnoˇzinami . . . . 4.2 Reprezentace koneˇcn´ych relac´ı . . . . . 4.3 Vlastnosti bin´arn´ıch relac´ı . . . . . . . 4.4 Relace ekvivalence . . . . . . . . . . . 4.5 Rozklady a jejich vztah k ekvivalenc´ım
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
27 27 29 30 32 33
. . . .
35 35 37 39 40
. . . .
5 Uspoˇ r´ adan´ e mnoˇ ziny, Uz´ avˇ ery 5.1 Uspoˇr´ad´an´ı a uspoˇr´adan´e mnoˇziny 5.2 Dalˇs´ı pojmy uspoˇr´adan´ych mnoˇzin 5.3 Hasseovsk´e diagramy . . . . . . . . 5.4 Uz´avˇery relac´ı . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
6 Skl´ ad´ an´ı relac´ı a funkc´ı 6.1 Vlastnosti funkc´ı . . . . . . . . . . 6.2 Inverzn´ı relace a skl´ad´an´ı relac´ı . . 6.3 Skl´ad´an´ı relac´ı v praxi“ . . . . . . ” 6.4 Skl´ad´an´ı funkc´ı, permutace . . . . . 6.5 Induktivn´ı definice mnoˇzin a funkc´ı
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
42 42 43 44 46 48
7 Pojem grafu, ve zkratce 7.1 Definice grafu . . . . . . . . . 7.2 Podgrafy a Isomorfismus . . . 7.3 Souvislost graf˚ u, komponenty 7.4 Stromy – grafy bez kruˇznic . . 7.5 Pouˇzit´ı a implementace graf˚ u
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
52 52 55 58 58 60
. . . . .
. . . . .
. . . . . iii
8 Proch´ azen´ı grafu a odvozen´ eu ´ lohy 8.1 Jak obecnˇe proj´ıt souvisl´y graf . . . 8.2 Vzd´alenost v grafu . . . . . . . . . 8.3 Hled´an´ı nejkratˇs´ı cesty . . . . . . . 8.4 Probl´em minim´aln´ı kostry . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
63 63 66 67 70
9 Orientovan´ e grafy, Toky v s´ıt´ıch 9.1 Z´akladn´ı pojmy orientovan´ych graf˚ u. 9.2 Definice s´ıtˇe a toku . . . . . . . . . . 9.3 Nalezen´ı maxim´aln´ıho toku . . . . . 9.4 Zobecnˇen´e pouˇzit´ı s´ıt´ı . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
73 73 76 77 81
10 Formalizace a d˚ ukazy pro algoritmy 10.1 Form´aln´ı popis algoritmu . . . . . . . . 10.2 O spr´avnosti“ a dokazov´an´ı program˚ u ” 10.3 Jednoduch´e indukˇcn´ı dokazov´an´ı . . . 10.4 Rekurzivn´ı algoritmy . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
84 84 86 87 88
11 Pokroˇ cil´ e dokazov´ an´ı nad algoritmy 11.1 Dokazov´an´ı koneˇcnosti algoritmu . 11.2 Pˇrehled technik d˚ ukazu indukc´ı . . 11.3 Zaj´ımav´e algoritmy aritmetiky . . . 11.4 Dynamick´y algoritmus . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
91 91 94 97 99
12 Nekoneˇ cn´ e mnoˇ ziny, Zastaven´ı algoritmu 12.1 O nekoneˇcn´ych mnoˇzin´ach a kardinalitˇe . . . . . . . . . . . . . . . . . . . 12.2 Naivn´ı“ mnoˇzinov´e paradoxy . . . . . . . . . . . . . . . . . . . . . . . . ” 12.3 Algoritmick´a neˇreˇsitelnost probl´emu zastaven´ı . . . . . . . . . . . . . . .
101 101 102 104
iv
. . . .
. . . .
1
Z´ akladn´ı formalismy matematiky ´ Uvod Zaˇcnˇeme nejprve nˇekolika obecn´ ymi pozn´ amkami ke smyslu a smˇeˇrov´an´ı cel´eho naˇseho pˇredmˇetu: Jak sami pozn´ ate, studium informatiky neznamen´a jen nauˇcit se nˇejak´ y pro” gramovac´ı jazyk“, n´ ybrˇz zahrnuje cel´ y soubor dalˇs´ıch relevantn´ıch pˇredmˇet˚ u, mezi nimiˇz najdeme i matematicko–teoretick´e (form´aln´ı) z´aklady modern´ı informatiky. Pr´avˇe odborn´ y nadhled nad celou informatikou vˇcetnˇe nezbytn´e form´aln´ı teorie nejsp´ıˇse odliˇs´ı ˇradov´eho ” program´atora“, kter´ ych jsou dnes spousty i bez VSˇ vzdˇel´an´ı, od skuteˇcn´eho a mnohem l´epe placen´eho poˇc´ıtaˇcov´eho experta. A na tomto m´ıstˇe nyn´ı pˇrich´ az´ı n´ aˇs pˇredmˇet Matematick´e Z´ aklady Informatiky, kter´ y v´as pr´ avˇe na studium tˇechto form´ aln´ıch z´aklad˚ u modern´ı informatiky pˇriprav´ı. Zaˇc´ın´ ame zostra, pˇresn´ ym matematick´ ym vyjadˇrov´an´ım, v´ yrokovou logikou a principy logick´ ych u ´sudk˚ u a matematick´ ych d˚ ukaz˚ u. Tak se do tohoto studia s chut´ı dejte. . .
C´ıle Prvn´ım c´ılem t´eto lekce je rozebrat struktury matematick´ ych tvrzen´ı (vˇet) a jejich form´aln´ıch d˚ ukaz˚ u. V druh´em sledu se nauˇc´ıte ch´ apat smysl matematick´ ych vˇet form´aln´ım pohledem v´ yrokov´e logiky a pracovat s touto formalizac´ı, vˇcetnˇe kvantifikace.
1.1
´ Uvod do matematick´ eho dokazov´ an´ı
Matematika (a tud´ıˇz i teoretick´a informatika jako jej´ı souˇc´ast) se vyznaˇcuje velmi pˇr´ısn´ymi form´aln´ımi poˇzadavky na korektnost argumentace. Takto korektnˇe postaven´a argumentace vede od pˇrijat´ych pˇredpoklad˚ u v element´arn´ıch kroc´ıch smˇerem k poˇzadovan´emu z´avˇeru (a nikdy ne naopak!). Definice 1.1. Matematick´ y d˚ ukaz . Uvaˇzme matematickou vˇetu (neboli tvrzen´ı) tvaru Jestliˇze plat´ı pˇredpoklady, pak plat´ı z´avˇer“. ” D˚ ukaz t´eto vˇety je koneˇcn´a posloupnost tvrzen´ı, kde •
kaˇzd´e tvrzen´ı je bud’ ∗ pˇredpoklad, nebo
∗ obecnˇ e pˇrijat´a pravda“ – axiom, nebo
”
∗ plyne z pˇredchoz´ıch a dˇr´ıve dok´ azan´ych tvrzen´ı podle nˇejak´eho akceptovan´eho“
logick´eho principu – odvozovac´ıho pravidla;
•
”
posledn´ı tvrzen´ı je z´avˇer. Koment´ aˇ r: O potˇrebn´e u ´rovni formality matematick´ ych d˚ ukaz˚ u a o bˇeˇzn´ ych d˚ ukazov´ ych technik´ach se dozv´ıme d´ ale v t´eto a pˇr´ıˇst´ı lekci. Nyn´ı si jen celou problematiku uvedeme n´ azorn´ ymi pˇr´ıklady.
Pˇ r´ıklad 1.2. Uvaˇzujme n´asleduj´ıc´ı matematick´e tvrzen´ı (kter´e jistˇe uˇz zn´ate). Vˇ eta. Jestliˇze x je souˇctem dvou lich´ych ˇc´ısel, pak x je sud´e.
1
Pozn´ amka pro pˇripomenut´ı: – Sud´e ˇc´ıslo je cel´e ˇc´ıslo dˇeliteln´e 2, tj. tvaru 2k. – Lich´e ˇc´ıslo je cel´e ˇc´ıslo nedˇeliteln´e 2, tj. tvaru 2k + 1.
D˚ ukaz postupuje v n´asleduj´ıc´ıch form´aln´ıch kroc´ıch: tvrzen´ı zd˚ uvodnˇen´ı 1) a = 2k + 1, k cel´e
pˇredpoklad
2) b = 2l + 1, l cel´e
pˇredpoklad
3) x = a + b = 2k + 2l + 1 + 1
1,2) a komutativita sˇc´ıt´an´ı (axiom)
4) x = 2(k + l) + 2 · 1
3) a distributivnost n´asoben´ı
5) x = 2(k + l + 1)
4) a opˇet distributivnost n´asoben´ı
6) x = 2m, m cel´e
5) a m = k + l + 1 je cel´e ˇc´ıslo (axiom)
✷
Pˇ r´ıklad 1.3. Dokaˇzte n´asleduj´ıc´ı tvrzen´ı: Vˇ eta. Jestliˇze x a y jsou racion´aln´ı ˇc´ısla pro kter´a plat´ı x < y, pak existuje racion´aln´ı ˇc´ıslo z pro kter´e plat´ı x < z < y. D˚ ukaz po kroc´ıch (s jiˇz trochu m´enˇe form´aln´ım z´apisem) zn´ı: 1) Necht’ z =
x+y 2
=x+
y−x 2
=y−
y−x . 2
ˇ ıslo z je racion´aln´ı, nebot’ x a y jsou racion´aln´ı. 2) C´ 3) Plat´ı z > x, nebot’
y−x 2
> 0.
4) D´ale plat´ı z < y, nebot’ opˇet
y−x 2
> 0.
5) Celkem x < z < y. Jak ˇcten´aˇr vid´ı, tento stroh´y form´aln´ı z´apis (i kdyˇz matematicky kompletn´ı) si zaslouˇz´ı aspoˇ n kr´atk´y vysvˇetluj´ıc´ı koment´aˇr. Takov´y koment´aˇr, at’ uˇz se objev´ı pˇred nebo hned po form´aln´ıch argumentech, sice nen´ı souˇc´ast´ı d˚ ukazu samotn´eho, velmi vˇsak napom´ah´a spr´avn´emu pochopen´ı a m´a sv´e nezastupiteln´e m´ısto. Konkr´etnˇe je zde velmi vhodn´e poznamenat, ˇze kl´ıˇcov´y krok (1) popisuje n´ami vymyˇslenou algebraickou konstrukci, kter´a vede k poˇzadovan´emu ˇc´ıslu z. Zbyl´e kroky (2–5) pak jen snadno zd˚ uvodˇ nuj´ı, ˇze nalezen´e z m´a vˇsechny poˇzadovan´e vlastnosti. ✷ Pozn´ amka. Alternativn´ı formulace Vˇety z Pˇr´ıkladu 1.3 mohou zn´ıt: – Pro kaˇzd´e x, y ∈
Q, kde x < y, existuje z ∈ Q takov´e, ˇze x < z < y.
– Mnoˇzina racion´ aln´ıch ˇc´ısel je hust´ a.
1.2
V´ yznam matematick´ ych vˇ et
Prvn´ı krok form´aln´ıho d˚ ukazu je uvˇedomit si, co ˇr´ık´a vˇeta, kter´a se m´a dok´azat; tedy co je pˇredpoklad a co z´avˇer dokazovan´eho tvrzen´ı. Pravdivost takov´eho tvrzen´ı pak je tˇreba 2
ch´apat v n´asleduj´ıc´ım v´yznamu: Pro kaˇzdou situaci, ve kter´e jsou splnˇeny vˇsechny pˇredpoklady, je platn´y i z´avˇer tvrzen´ı. Koment´ aˇ r: Pˇr´ıklady bˇeˇzn´e formulace matematick´ ych vˇet: ∗ Koneˇcn´ a mnoˇzina m´ a koneˇcnˇe mnoho podmnoˇzin. ∗ sin2 (α) + cos2 (α) = 1.
∗ Graf je rovinn´ y, jestliˇze neobsahuje podrozdˇelen´ı K5 nebo K3,3 . ˇ Co pˇresnˇe n´ am uveden´e matematick´e vˇety ˇr´ıkaj´ı? Casto n´ am k lepˇs´ımu pochopen´ı toho, co je tvrzeno a je tˇreba dok´azat, pom˚ uˇze pouh´e rozeps´an´ı definic pojm˚ u, kter´e se v dan´e vˇetˇe vyskytuj´ı.
O pravdivosti implikace Vˇsimnˇete si tak´e, jak´y je spr´avn´y logick´y v´yznam matematick´eho tvrzen´ı vysloven´eho touto formou implikace ( jestliˇze . . . , pak . . .“). Pˇredevˇs´ım, pokud pˇredpoklady nejsou ” splnˇeny nebo jsou sporn´e, tak cel´e tvrzen´ı je platn´e bez ohledu na pravdivost z´avˇeru! Pˇ r´ıklad 1.4. Je pravdiv´e n´asleduj´ıc´ı matematick´e tvrzen´ı? Vˇ eta. Mˇejme dvˇe kuliˇcky, ˇcervenou a modrou. Jestliˇze ˇcerven´a kuliˇcka je tˇeˇzˇs´ı neˇz modr´a a z´aroveˇ n je modr´a kuliˇcka tˇeˇzˇs´ı neˇz ta ˇcerven´a, tak jsou obˇe kuliˇcky ve skuteˇcnosti zelen´e. To pˇrece nem˚ uˇze b´yt pravda, jak m˚ uˇze b´yt jedna kuliˇcka tˇeˇzˇs´ı neˇz druh´a a naopak ” z´aroveˇ n? Jak mohou b´yt nakonec obˇe zelen´e? To je cel´e nˇejak´a blbost. . .“ Ano, v´yˇse uveden´e jsou typick´e laick´e reakce na uvedenou vˇetu. Pˇresto vˇsak tato vˇeta pravdiv´a je! Staˇc´ı se vr´atit o kousek v´yˇse ke krit´eriu – Pro kaˇzdou situaci, ve kter´e jsou splnˇeny vˇsechny pˇredpoklady, je platn´y i z´avˇer tvrzen´ı – kter´e je zjevnˇe naplnˇeno. Nenaleznete totiˇz situaci, ve kter´e by byly splnˇeny oba pˇredpoklady z´aroveˇ n, a tud´ıˇz ve vˇsech takov´ych neexistuj´ıc´ıch situac´ıch si m˚ uˇzete ˇr´ıkat cokoliv, tˇreba ˇze kuliˇcky jsou zelen´e. ✷ Pˇ r´ıklad 1.5. Anna a Kl´ara pˇriˇsly na pˇredn´aˇsku a usadily se do lavic. Proˇc je pravdiv´e toto matematick´e tvrzen´ı? Vˇ eta. Jestliˇze Anna sed´ı v prvn´ı ˇradˇe lavic a z´aroveˇ n Anna sed´ı v posledn´ı ˇradˇe lavic, tak Kl´ara nesed´ı v druh´e ˇradˇe lavic. Opˇet je tˇreba se hluboce zamyslet nad v´yznamem pˇredpoklad˚ u a z´avˇeru, ale tentkr´at nen´ı situace pˇredpoklad˚ u tak trivi´alnˇe sporn´a, jako v Pˇr´ıkladu 1.4. Kdy tedy nast´avaj´ı oba pˇredpoklady z´aroveˇ n? Kdyˇz prvn´ı ˇrada lavic je z´aroveˇ n ˇradou posledn´ı! Neboli posluch´arna m´a jen (nejv´yˇse) jednu ˇradu lavic a Kl´ara tud´ıˇz v druh´e ˇradˇe nem˚ uˇze sedˇet. D˚ ukaz je hotov. ✷
1.3
Struktura matematick´ ych vˇ et a d˚ ukaz˚ u
Jak moc form´aln´ı“ maj´ı spr´avn´e matematick´e d˚ ukazy vlastnˇe b´yt? ” 3
•
Z´aleˇz´ı na tom, komu je d˚ ukaz urˇcen — konzument mus´ı b´yt schopen snadno“ ovˇeˇrit ” korektnost kaˇzd´eho tvrzen´ı v d˚ ukazu a plnˇe pochopit, z ˇceho vypl´yv´a.
•
Je tedy hlavnˇe na v´as zvolit tu spr´avnou u ´ roveˇ n form´alnosti z´apisu vˇet i d˚ ukaz˚ u podle situace.
A jak na ten spr´avn´y matematick´y d˚ ukaz m´ame pˇrij´ıt? •
No. . . , nal´ez´an´ı matematick´ych d˚ ukaz˚ u je tv˚ urˇc´ı ˇcinnost, kter´a nen´ı v˚ ubec snadn´a a vyˇzaduje od v´as pˇr´ımo umˇeleck´e“ vlohy. Pˇresto se j´ı alespoˇ n trochu mus´ıte pˇriuˇcit. ”
Dokazovat ˇ ci vyvracet tvrzen´ı? Pˇredstavme si, ˇze naˇsim u ´ kolem je rozhodnout platnost matematick´eho tvrzen´ı. Jak matematicky spr´avnˇe zd˚ uvodn´ıme svou odpovˇed’? •
Z´aleˇz´ı na odpovˇedi samotn´e. . . Pokud je to ANO, prostˇe pod´ame d˚ ukaz tvrzen´ı podle v´yˇse uveden´ych zvyklost´ı. Pokud je odpovˇed’ NE, tak naopak pod´ame d˚ ukaz negace dan´eho tvrzen´ı.
Pomˇernˇe ˇcast´ym pˇr´ıpadem pak je matematick´a vˇeta T , kter´a tvrd´ı nˇejak´y z´avˇer pro ˇsirokou oblast vstupn´ıch moˇznost´ı. Potom plat´ı n´asleduj´ıc´ı: •
Pokud T je pravdiv´a, nezb´yv´a neˇz podat vyˇcerp´avaj´ıc´ı d˚ ukaz platnosti pro vˇsechny vstupy.
•
Avˇsak pokud T je nepravdiv´a, staˇc´ı uhodnout“ vhodn´y vstupn´ı protipˇr´ıklad a jen ” pro nˇej dok´azat, ˇze z´avˇer tvrzen´ı nen´ı platn´y. Koment´ aˇ r: A nyn´ı se znovu vrat’te na zaˇc´atek Odd´ılu 1.2 a srovnejte si v´ yˇse uveden´e se z´akladn´ımi poznatky o v´ yznamu matematick´ ych vˇet. . .
Pˇ r´ıklad 1.6. Rozhodnˇete platnost n´asleduj´ıc´ıho tvrzen´ı: Pro vˇsechna re´aln´a x plat´ı x2 + 3x + 2 ≥ 0 . D˚ ukaz: Standardn´ımi algebraick´ymi postupy si m˚ uˇzeme upravit vztah na x2 +3x+2 = (x + 1) · (x + 2) ≥ 0. Co n´am z nˇej vypl´yv´a? Napˇr´ıklad to, ˇze k poruˇsen´ı dan´eho tvrzen´ı staˇc´ı volit x tak, aby jedna ze z´avorek byla kladn´a a druh´a z´aporn´a. To nastane tˇreba pro x = − 23 . Pro vyvr´acen´ı tvrzen´ı n´am tedy staˇc´ı zaˇc´ıt volbou protipˇr´ıkladu x = − 23 (nen´ı nutno zd˚ uvodˇ novat, jak jsme jej uhodli“!) a n´aslednˇe dok´azat u ´ pravou ” 3 3 1 1 1 x2 + 3x + 2 = (x + 1) · (x + 2) = (− + 1) · (− + 2) = (− ) · (+ ) = − < 0 . 2 2 2 2 4 Dan´e tvrzen´ı nen´ı platn´e.
✷
Konstruktivn´ı a existenˇ cn´ı d˚ ukazy Z hlediska praktick´e vyuˇzitelnosti je potˇreba rozliˇsit tyto dvˇe kategorie d˚ ukaz˚ u (tˇrebaˇze z form´alnˇe–matematick´eho pohledu mezi nimi kvalitativn´ı rozd´ıl nen´ı). • D˚ ukaz Vˇety 1.3 je konstruktivn´ı. Dok´azali jsme nejen, ˇze ˇc´ıslo z existuje, ale podali jsme tak´e n´avod, jak ho pro dan´e x a y sestrojit. 4
•
Existenˇcn´ı d˚ ukaz je takov´y, kde se prok´aˇze existence nˇejak´eho objektu bez toho, aby byl pod´an pouˇziteln´y n´avod na jeho konstrukci. ukazu. Pˇ r´ıklad 1.7. ˇcistˇe existenˇcn´ıho d˚ Vˇ eta. Existuje program, kter´y vyp´ıˇse na obrazovku ˇc´ısla taˇzen´a ve 45. tahu sportky v roce 2012.
D˚ ukaz: Existuje pouze koneˇcnˇe mnoho moˇzn´ych v´ysledk˚ u losov´an´ı 45. tahu sportky v roce 2012. Pro kaˇzd´y moˇzn´y v´ysledek existuje program, kter´y tento dan´y v´ysledek vyp´ıˇse na obrazovku. Mezi tˇemito programy je tedy jistˇe ten, kter´y vyp´ıˇse pr´avˇe ten v´ysledek, kter´y bude ve 45. tahu sportky v roce 2012 skuteˇcnˇe vylosov´an. ✷ Koment´ aˇ r: To je ale podvod“, ˇze? A pˇrece nen´ı. . . Form´ alnˇe spr´avnˇe to je prostˇe tak a ” teˇcka (2011: tedy dokud n´ am to pan Huˇsa´k vˇsechno nepokaz´ı, ˇze?).
Fakt. Pro informatick´e i dalˇs´ı aplikovan´e discipl´ıny je d˚ uleˇzit´a konstruktivnost d˚ ukaz˚ u vˇet, kter´e se zde objevuj´ı. V matematice ale jsou mnoh´e pˇr´ıklady uˇziteˇcn´ych a nenahraukazy. diteln´ych existenˇcn´ıch d˚ ukaz˚ u, tˇreba tzv. pravdˇepodobnostn´ı d˚ Pˇ r´ıklad 1.8.
pravdˇepodobnostn´ıho“ existenˇcn´ıho d˚ ukazu. ” Vˇ eta. Na dan´e mnoˇzinˇe bod˚ u je zvoleno libovolnˇe n2 podmnoˇzin, kaˇzd´a o n prvc´ıch. Dokaˇzte pro dostateˇcnˇe velk´a n, ˇze vˇsechny body lze obarvit dvˇema barvami tak, aby ˇz´adn´a mnoˇzina nebyla jednobarevn´a.
D˚ ukaz: U kaˇzd´eho bodu si hod´ıme minc´ı“ a podle v´ysledku zvol´ıme barvu ˇcervenˇe ” nebo modˇre. (Nez´avisl´e volby s pravdˇepodobnost´ı 21 .) Pravdˇepodobnost, ˇze zvolen´ych n bod˚ u vyjde jednobarevn´ych, je jen 22n = 21−n . Pro n2 podmnoˇzin tak je pravdˇepodobnost, ˇze nˇekter´a z nich vyjde jednobarevn´a, shora ohraniˇcen´a souˇctem n2 2| 1−n + ·{z · · + 21−n} = n−1 → 0 . 2 n2
Jelikoˇz je toto ˇc´ıslo (pravdˇepodobnost) pro n ≥ 7 menˇs´ı neˇz 1, bude existovat obarven´ı bez jednobarevn´ych zvolen´ych podmnoˇzin. ✷
1.4
V´ yroky a z´ aklad v´ yrokov´ e logiky
Pojem v´yroku se d´a povaˇzovat za d˚ uleˇzit´y pevn´y most“ mezi bˇeˇznou mluvou a pˇresn´ym ” matematick´ym formalismem. Jeho spr´avn´e uchopen´ı napom˚ uˇze ch´ap´an´ı v´yznamu matematick´ych v´yrok˚ u a pr´aci s nimi (jako tˇreba v pˇr´ıpadˇe mechanick´e negace sloˇzen´eho v´yroku). Definice 1.9. V´ yrok v pˇrirozen´e mluvˇe: V bˇeˇzn´e mluvˇe za v´yrok povaˇzujeme (kaˇzd´e) tvrzen´ı, o kter´em m´a smysl platnˇe prohl´asit, ˇze je bud’ pravdiv´e nebo nepravdiv´e. Koment´ aˇ r: Uk´ aˇzeme si nˇekolik pˇr´ıklad˚ u – kter´e z nich jsou v´ yroky? ∗ Dnes uˇz v Brnˇe prˇselo. ∗ Pˇredmˇet FI: IB000 se vyuˇcuje v prvn´ım roˇcn´ıku. ∗ Plat´ı 2 + 3 = 6.
5
∗ To je bez probl´em˚ u. (Co?) ∗ Plat´ı x > 3. ∗ Pro kaˇzd´e cel´e ˇc´ıslo x plat´ı, ˇze x > 3. Vˇsimnˇete si, ˇze pravdivost v´ yroku by mˇelo b´ yt moˇzn´e rozhodnout bez skryt´ ych souvislost´ı (kontextu), a proto ˇctvrt´ y a p´ at´ y pˇr´ıklad za v´ yroky nepovaˇzujeme. Posledn´ı pˇr´ıklad jiˇz zase v´ yrokem je, nebot’ obor hodnot x je jednoznaˇcnˇe vymezen tzv. kvantifikac´ı.
Z v´ıce jednoduch´ych v´yrok˚ u vytv´aˇr´ıme v´yroky sloˇzitˇejˇs´ı pomoc´ı tzv. logick´ych spojek. Koment´ aˇ r: N´asleduje nˇekolik dalˇs´ıch pˇr´ıklad˚ u. ∗ Mnoˇzina {a, b} m´ a v´ıce neˇz jeden prvek a nen´ı nekoneˇcn´ a. ∗ Jestliˇze m´ a Karel pˇres 90 kg v´ahy, nejedu s n´ım v´ ytahem. ∗ Jestliˇze m´ a tato kr´ava 10 nohou, pak maj´ı vˇsechny domy modrou stˇrechu. Zastavme se na chv´ıli nad posledn´ım v´ yrokem. Co n´ am ˇr´ık´a? Je pravdiv´ y? Skuteˇcnˇe maj´ı vˇsechny domy modrou stˇrechu a pˇred n´ ami stoj´ı kr´ava s 10 nohama? (Ano, v´ yrok je pravdiv´ y, viz definice ˇci pravdivostn´ı tabulka implikace.)
Schopnost porozumˇet podobn´ym vˇet´am je souˇc´ast lidsk´eho zp˚ usobu uvaˇzov´an´ı a z tohoto hlediska nem´a pˇr´ımou souvislost s matematikou (je to pˇrirozen´a logika“). ” Form´aln´ı (matematick´a) logika pak v podobn´em duchu definuje jazyk matematiky a pˇritom odstraˇ nuje nejednoznaˇcnosti pˇrirozen´eho jazyka.
1.5
Stˇ r´ıpky matematick´ e logiky
Vˇsimnˇete si, ˇze podle Definice 1.9 kaˇzd´emu v´yroku bˇeˇzn´e mluvy prostˇe m˚ uˇzeme pˇriˇradit logickou hodnotu 0 (false) nebo 1 (true) a d´ale se nestarat o jazykov´y v´yznam. . . Proto (jazykov´e) v´yroky v matematice vyj´adˇr´ıme v´yrokov´ymi promˇenn´ymi, kter´e znaˇc´ıme velk´ymi p´ısmeny A, B, C, . . . a pˇriˇrad´ıme jim hodnotu 0 nebo 1. Definice: V´yrokov´a formule (znaˇc´ıme ϕ, σ, ψ, . . . ) vznik´a z v´yrokov´ych promˇenn´ych pomoc´ı z´avorek a logick´ych spojek ¬ negace a ⇒ implikace. Z´aroveˇ n pouˇz´ıv´ame v z´apise n´asleduj´ıc´ıch zkratek ∗ ϕ ∨ ψ (disjunkce / nebo“) je jin´ y z´apis formule ¬ϕ ⇒ ψ, ” y z´apis formule ¬(¬ϕ ∨ ¬ψ), ∗ ϕ ∧ ψ (konjunkce / a“) je jin´ ” y z´apis formule (ϕ ⇒ ψ) ∧ (ψ ⇒ ϕ). ∗ ϕ ⇔ ψ (ekvivalence) je jin´ Pozn´ amka: Uveden´ a definice je instanc´ı tzv. induktivn´ı definice, j´ıˇz se budeme bl´ıˇze vˇenovat v Odd´ıle 6.5, a proto ji zde uv´ad´ıme jen v hodnˇe zjednoduˇsen´e podobˇe. Koment´ aˇ r: Pˇri z´ apise v´ yrokov´ ych formul´ı je potˇreba d´ avat pozor na spr´avn´e z´avorkov´an´ı, aby formule mˇela jednoznaˇcn´ y v´ yznam. Na intuitivn´ı u ´rovni to ilustrujeme takto: Spr´avnˇe a nespr´avnˇe
A, (A) ⇒ (B), A ⇒ B, ¬A ⇒ B, A ∨ B ∨ ¬C A ⇒ B ⇒ C — znamen´a to (A ⇒ B) ⇒ C nebo A ⇒ (B ⇒ C)?
Matematick´y v´yznam logick´ym formul´ım pak dod´av´a n´asleduj´ıc´ı definice. emantika (v´yznam) v´yrokov´e logiky. Definice 1.10. S´ Necht’ valuace (ohodnocen´ı) je funkce ν : P rom → {0, 1} na vˇsech (dotˇcen´ych) v´yrokov´ych promˇenn´ych. Pro kaˇzdou valuaci ν definujeme funkci Sν (σ), vyhodnocen´ı formule σ, induktivnˇe (tj. po kroc´ıch) takto: 6
∗ Sν (A) = ν(A) pro kaˇ zd´e A ∈ P rom.
1 jestliˇze Sν (ϕ) = 0; 0 jinak. 0 jestliˇze Sν (ϕ) = 1 a Sν (ψ) = 0; ∗ Sν (ϕ ⇒ ψ) = 1 jinak. ∗ Sν (¬ϕ) =
Pozn´ amka: Tento pˇredpis pod´ av´a nejen definici funkce Sν , ale tak´e n´ avod na to, jak ji pro dan´ y argument vypoˇc´ıtat.
Pro odvozen´e logick´e spojky disjunkce, konjunkce a ekvivalence pak dostaneme n´asleduj´ıc´ı zcela pˇrirozen´y v´ysledek (kter´y tak potvrzuje, ˇze jsme definici s´emantiky zvolili spr´avnˇe). Tvrzen´ı 1.11. D˚ usledkem Definice 1.10 je n´asledovn´e: ∗ Sν (ϕ ∨ ψ) = 1
pr´avˇe kdyˇz Sν (ϕ) = 1 nebo Sν (ψ) = 1. ∗ Sν (ϕ ∧ ψ) = 1 pr´avˇe kdyˇz Sν (ϕ) = 1 a souˇcasnˇe Sν (ψ) = 1. ∗ Sν (ϕ ⇔ ψ) = 1 pr´ avˇe kdyˇz plat´ı jedna z n´asleduj´ıc´ıch podm´ınek – Sν (ϕ) = 1 a souˇcasnˇe Sν (ψ) = 1, – Sν (ϕ) = 0 a souˇcasnˇe Sν (ψ) = 0.
Pravdivostn´ı tabulky V praxi ˇcasto vyhodnocen´ı Sν logick´e v´yrokov´e formule zapisujeme do tzv. pravdivostn´ı tabulky. Tato tabulka typicky m´a sloupce pro jednotliv´e promˇenn´e, pˇr´ıpadn´e mezifor” ˇ adk˚ mule“ (pom˚ ucka pro snaˇzˇs´ı vyplnˇen´ı) a v´yslednou formuli. R´ u je 2p (poˇcet valuac´ı), kde p je poˇcet pouˇzit´ych promˇenn´ych. ˇ aˇri Pro naˇse u ´ˇcely postaˇc´ı uv´est pravdivostn´ı tabulku instrukt´aˇzn´ım pˇr´ıkladem. Cten´ necht’ si vypln´ı podle Definice 1.10 vlastn´ı pravdivostn´ı tabulky dalˇs´ıch v´yrokov´ych formul´ı, viz tak´e pˇr´ısluˇsn´e cviˇc´ıc´ı odpovˇedn´ıky v IS MU. Pˇ r´ıklad 1.12. Jak´a je pravdivostn´ı tabulka pro formuli (A ⇒ B) ∨ B ∨ C? A 0 0 1 1 0 0 1 1
B 0 1 0 1 0 1 0 1
C 0 0 0 0 1 1 1 1
A ⇒ B (A ⇒ B) ∨ B ∨ C 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 ✷
Splnitelnost formul´ı a tautologie Definice: Formule ϕ ∈ Φ je splniteln´a, pokud pro nˇekterou valuaci ν plat´ı, ˇze Sν (ϕ) = 1. Formule ϕ ∈ Φ je vˇzdy pravdiv´a, neboli v´yrokov´a tautologie, ps´ano |= ϕ, pokud pro kaˇzdou valuaci ν plat´ı, ˇze Sν (ϕ) = 1. 7
ˇ Rekneme, ˇze dvˇe formule ϕ, ψ ∈ Φ jsou ekvivalentn´ı, pr´avˇe kdyˇz |= ϕ ⇔ ψ. Tvrzen´ı 1.13. N´asleduj´ıc´ı formule jsou tautologiemi: ∗ |= A ∨ ¬A ∗ |= ¬ ¬A ⇔ A ∗ |= (A ∧ (A ⇒ B)) ⇒ B ∗ |= (¬B ⇒ ¬A) ⇒ (A ⇒ B) ∗ |= (¬A ⇒ (B ∧ ¬B)) ⇒ A Koment´ aˇ r: Jak pozn´ ame tautologii v pravdivostn´ı tabulce?
Kvantifikace a predik´ atov´ a logika V´yˇse popsan´a v´yrokov´a logika je velmi omezen´a faktem, ˇze kaˇzd´y v´yrok mus´ı b´yt ( abso” lutnˇe“) vyhodnocen jako pravda nebo nepravda. Co kdyˇz vˇsak chceme zpracovat tvrzen´ı typu den D v Brnˇe prˇselo“? Jeho pravdivostn´ı hodnota pˇrece z´avis´ı na tom, co dosad´ıme ” za den D, a tud´ıˇz jej nelze povaˇzovat za v´yrok v´yrokov´e logiky. •
Predik´atov´a logika pracuje s predik´aty. Predik´aty jsou parametrizovan´e v´yroky“, ” kter´e jsou bud’ pravdiv´e nebo nepravdiv´e pro kaˇzdou konkr´etn´ı volbu parametr˚ u. V´yrokov´e promˇenn´e lze ch´apat jako predik´aty bez parametr˚ u.
•
Predik´atov´ a logika je tak obecnˇejˇs´ı neˇz logika v´yrokov´a; kaˇzd´a formule v´yrokov´e logiky je i formul´ı predik´atov´e logiky, ale ne obr´acenˇe. Koment´ aˇ r: Pro neform´ aln´ı pˇribl´ıˇzen´ı si uvedeme nˇekolik uk´azek predik´ at˚ u: ∗ x > 3 (parameterem je zde x ∈ ), ∗ ˇc´ısla x a y jsou nesoudˇeln´ a (parametry x, y ∈ ), ∗ obecnˇe jsou predik´ aty ps´ any P (x, y), kde x, y jsou libovoln´e parametry.
R
N
Definice: Z predik´at˚ u lze vytv´aˇret predik´atov´e formule pomoc´ı uˇz zn´am´ych (viz Definice 1.10) v´yrokov´ych spojek a n´asleduj´ıc´ıch tzv. kvantifik´ator˚ u: • ∀x . ϕ pro kaˇzdou volbu parametru x plat´ı formule ϕ“, ” • ∃x . ϕ existuje alespoˇ n jedna volba parametru x, pro kterou plat´ı ϕ“. ” ˇ aˇr by mˇel v tomto m´ıstˇe vz´ıt na vˇedom´ı, ˇze naˇse definice vztahuj´ıc´ı se k Cten´ predik´atov´e logice jsou velmi zjednoduˇsen´e a nenahrazuj´ı kurz matematick´e logiky! Pˇresto poskytnou alespoˇ n z´akladn´ı povˇedom´ı o t´eto problematice (a hlavnˇe o pouˇzit´ı kvantifikace v tvrzen´ıch) pro potˇreby matematick´e formalizace v naˇsem kurzu. Fakt: Je-li kaˇzd´a promˇenn´a – parametr predik´atu – v dan´e formuli kvantifikovan´a (tj. formule je uzavˇren´a), pak je cel´a formule bud’ pravdiv´a nebo nepravdiv´a. Pˇ r´ıklad 1.14. Ukaˇzme si vyj´adˇren´ı n´asleduj´ıc´ıch slovn´ıch v´yrok˚ u v predik´atov´e logice: •
Kaˇzd´e prvoˇc´ıslo vˇetˇs´ı neˇz 2 je lich´e; ∀n ∈ . (P r(n) ∧ n>2) ⇒ Li(n) ,
N
pˇriˇcemˇz lze rozepsat Li(n) ≡ ∃k ∈
N . n = 2k + 1. 8
•
Kaˇzd´e ˇc´ıslo n > 1, kter´e nen´ı prvoˇc´ıslem, je dˇeliteln´e nˇejak´ym ˇc´ıslem y kde n 6= y a y > 1; ∀n ∈ . n > 1 ∧ ¬P r(n) ⇒ ∃y y| n ∧ n6=y ∧ y>1 . ✷
N
Mechanick´ y postup negace v´ yrok˚ u Z´avˇerem lekce se dost´av´ame k jednomu specifick´emu u ´ skal´ı lidsk´eho ch´ap´an´ı, totiˇz ˇze pˇresn´y v´yznam formul´ı se zanoˇren´ymi negacemi je nˇekdy skuteˇcnˇe obt´ıˇzn´e zjistit (podobnˇe jako v bˇeˇzn´e ˇreˇci). Nen´ı pravda, ˇze nemohu neˇr´ıct, ˇze nen´ı pravda, ˇze tˇe nem´am nerad.“ ” V´yrokov´e formule se proto obvykle prezentuj´ı v tzv. norm´aln´ım tvaru, kde se negace vyskytuj´ı pouze u v´yrokov´ych promˇenn´ych, form´alnˇe: Definice: Formule ϕ ∈ Φ je v norm´aln´ım tvaru, pokud se v n´ı oper´ator negace aplikuje pouze na v´yrokov´e promˇenn´e. Koment´ aˇ r: Napˇr´ıklad, pokud pˇrijmeme pravidlo dvoj´ı negace“ ( |= ¬ ¬A ⇔ A), tak v´ yˇse ” napsanou vˇetu si pˇrevedeme na l´epe srozumiteln´ y tvar: Nemus´ım ˇr´ıct, ˇze tˇe m´ am nerad.“ ”
Tvrzen´ı 1.15. Kaˇzdou v´yrokou formuli lze pˇrev´est do norm´aln´ıho tvaru, pokud k ⇒ povol´ıme i uˇz´ıv´an´ı odvozen´ych spojek ∧ a ∨. Koment´ aˇ r: Pro ilustraci k ¬(A ⇒ B) je ekvivalentn´ ı A ∧ ¬B, k ¬ C ∧ (¬A ⇒ B) je ekvivalentn´ı ¬C ∨ (¬A ∧ ¬B) a k ¬ (A ⇒ B) ⇒ C je ekvivalentn´ı (A ⇒ B) ∧ ¬C).
Metoda 1.16. Pˇ revod formule ϕ do norm´ aln´ıho tvaru F (ϕ). Pro pˇrevod pouˇzijeme funktory F a G s neform´aln´ım v´yznamem F (X) jako je pravda, ” ˇze X“ a G(X) jako nen´ı pravda, ˇze X“. Tyto funktory definujeme induktivn´ımi pˇredpisy ” n´asledovnˇe: F (A) = A G(A) = ¬A F (¬ϕ) = G(ϕ) G(¬ϕ) = F (ϕ) F (ϕ ⇒ ψ) = F (ϕ) ⇒ F (ψ) G(ϕ ⇒ ψ) = F (ϕ) ∧ G(ψ) F (ϕ ∧ ψ) = F (ϕ) ∧ F (ψ) G(ϕ ∧ ψ) = G(ϕ) ∨ G(ψ) F (ϕ ∨ ψ) = F (ϕ) ∨ F (ψ) G(ϕ ∨ ψ) = G(ϕ) ∧ G(ψ) F (ϕ ⇔ ψ) = F (ϕ) ⇔ F (ψ) G(ϕ ⇔ ψ) = (F (ϕ) ∧ G(ψ)) ∨ (G(ϕ) ∧ F (ψ)) Pro predik´atov´e formule toto rozˇs´ıˇr´ıme jeˇstˇe o pravidla: F (∀x . ϕ) = ∀x . F (ϕ) F (∃x . ϕ) = ∃x . F (ϕ)
G(∀x . ϕ) = ∃x . G(ϕ) G(∃x . ϕ) = ∀x . G(ϕ)
Koment´ aˇ r: Uvaˇzme formuli ¬(A ⇒ ¬(B ∨ ¬(C ⇒ ¬A))). Uˇzit´ım uveden´eho postupu 1.16 z´ısk´ame: F(¬(A ⇒ ¬(B ∨ ¬(C ⇒ ¬A)))) F(A) ∧ G(¬(B ∨ ¬(C ⇒ ¬A))) A ∧ (F(B) ∨ F(¬(C ⇒ ¬A))) A ∧ (B ∨ (F(C) ∧ G(¬A))) A ∧ (B ∨ (C ∧ A))
= = = =
9
G(A ⇒ ¬(B ∨ ¬(C ⇒ ¬A))) A ∧ F(B ∨ ¬(C ⇒ ¬A)) A ∧ (B ∨ G(C ⇒ ¬A)) A ∧ (B ∨ (C ∧ F(A)))
= = = =
Formuli A ∧ (B ∨ (C ∧ A)) lze d´ ale zjednoduˇsit na (ekvivalentn´ı) formuli A ∧ (B ∨ C). To ale je jiˇz z naˇseho pohledu matematicky neform´ aln´ı (heuristick´ y) postup.
Uveden´e form´aln´ı pˇredpisy takto vyjadˇruj´ı intuitivn´ı postup pˇrevodu F (ϕ) do lidsky ” ˇciteln´eho tvaru“. Navazuj´ıc´ı studium L´ atka t´eto u ´vodn´ı lekce m´ a velmi ˇsirok´ y z´abˇer. S potˇrebou form´aln´ıho z´apisu tvrzen´ı a d˚ ukaz˚ u se setk´ate nejen v tomto, ale i ve vˇsech dalˇs´ıch matematick´ ych pˇredmˇetech, kter´e z´aroveˇ n studujete ˇci budete studovat, a principy budou st´ ale stejn´e. Proto se je snaˇzte pochopit a zaˇz´ıt uˇz na zde uveden´ ych jednoduch´ ych pˇr´ıkladech a vˇse si procviˇcte. V dalˇs´ı lekci budeme pokraˇcovat pˇrehledem d˚ ukazov´ ych technik. Na druhou stranu je matematick´a logika v t´eto lekci uvedena jen velmi omezenˇe na nejlehˇc´ı akceptovateln´e intuitivn´ı u ´rovni a jej´ı dalˇs´ı rozvoj je ponech´ an samostatn´ ym kurz˚ um. ´ Na FI MU to bude navazuj´ıc´ı pˇredmˇet IB101 Uvod do logiky. Z´ ajemce o studium matematick´ ych hlubin logiky a tˇreba slavn´ ych G¨ odelov´ ych poznatk˚ u m˚ uˇzeme pozdˇeji odk´azat na pˇredmˇet MA007 Matematick´a logika.
10
2
D˚ ukazov´ e techniky, Indukce ´ Uvod N´aˇs hlubˇs´ı u ´vod do matematick´ ych formalism˚ u pro informatiku pokraˇcujeme z´akladn´ım pˇrehledem technik matematick´ ych d˚ ukaz˚ u. Tˇrebaˇze matematick´e dokazov´an´ı a pˇr´ısluˇsn´e techniky mohou nˇekomu pˇripadat nepr˚ uhledn´e (a moˇzn´ a zbyteˇcn´e), jejich pochopen´ı a zvl´adnut´ı nen´ı samo´ uˇceln´e, nebot’ n´ am pom´ ah´ a si mnoho uvˇedomit o studovan´ ych probl´emech samotn´ ych. Koneˇcnˇe, jak si m˚ uˇzeme b´ yt jisti sv´ ymi poznatky, kdyˇz bychom pro nˇe nebyli schopni poskytnout d˚ ukazy? Bˇehem studia tohoto pˇredmˇetu pozn´ ate (a ti m´enˇe ˇst’astn´ı aˇz s pˇrekvapen´ım u zkouˇsek), ˇze vlastnˇe vˇse, k ˇcemu naˇs´ım v´ ykladem smˇeˇrujeme, se d´ a neform´ alnˇe shrnout slovy nauˇcit se ” pˇresnˇe vyjadˇrovat a b´ yt si sv´ ymi tvrzen´ımi naprosto jisti“ a analogicky nauˇcit se navrhovat ” spr´avn´e algoritmy a b´ yt si i sv´ ymi programy naprosto jisti“. Z d˚ ukazov´ ych postup˚ u je pro n´ as informatiky asi nejd˚ uleˇzitˇejˇs´ı technika d˚ ukaz˚ u matemym program˚ um (coby iterace atickou indukc´ı, kter´a je svou podstatou velmi bl´ızk´a poˇc´ıtaˇcov´ cykl˚ u). V dalˇs´ım v´ ykladu budeme indukci hojnˇe vyuˇz´ıvat, pˇredevˇs´ım v Lekc´ıch 10 a 11.
C´ıle C´ılem t´eto lekce je popsat z´ akladn´ı techniky matematick´ ych d˚ ukaz˚ u, z nichˇz nejvˇetˇs´ı d˚ uraz klademe na matematickou indukci. Kaˇzd´ y student by se mˇel alespoˇ n nauˇcit form´alnˇe psan´e d˚ ukazy ˇc´ıst a pochopit. (Pro vysvˇetlen´ı, z Lekce 1 v´ıme, ˇze matematick´ y d˚ ukaz m´ a jednotnou formu“ Definice 1.1, ale nyn´ı se vˇenujeme takˇr´ıkaj´ıc ˇsablon´am, podle nichˇz ” takov´ y korektn´ı d˚ ukaz sestav´ıme.)
2.1
Pˇ rehled z´ akladn´ıch d˚ ukazov´ ych technik
V matematice je ˇcasto pouˇz´ıvan´ych nˇekolik n´asleduj´ıc´ıch zp˚ usob˚ u – technik, jak k dan´emu tvrzen´ı nal´ezt korektn´ı form´aln´ı d˚ ukaz. (Uvˇedomme si, ˇze jedno tvrzen´ı m´ıv´a mnoho r˚ uzn´ych, stejnˇe korektn´ıch, d˚ ukaz˚ u; ty se vˇsak mohou v´yraznˇe l´ıˇsit svou sloˇzitost´ı.) Tyto techniky si v bodech shrneme zde: •
Pˇr´ım´e odvozen´ı. To je zp˚ usob, o kter´em jsme se dosud bavili. Postupujeme pˇr´ımo od pˇredpoklad˚ u k z´avˇeru, ale sami pozn´ate, ˇze takov´a pˇr´ım´a“ ” cesta je obt´ıˇznˇe k nalezen´ı.
•
Kontrapozice (tak´e obr´acen´ım ˇci nepˇr´ım´y d˚ ukaz). M´ısto vˇety Jestliˇze plat´ı pˇredpoklady, pak plat´ı z´avˇer.“ ” budeme dokazovat ekvivalentn´ı vˇetu
•
Jestliˇze neplat´ı z´avˇer, pak neplat´ı alespoˇ n jeden z pˇredpoklad˚ u.“ ” D˚ ukaz sporem. M´ısto vˇety Jestliˇze plat´ı pˇredpoklady, pak plat´ı z´avˇer.“ ” budeme dokazovat vˇetu Jestliˇze plat´ı pˇredpoklady a plat´ı opak z´avˇeru, pak plat´ı opak jednoho ” z pˇredpoklad˚ u (nebo plat´ı jin´e zjevnˇe nepravdiv´e tvrzen´ı).“
•
Matematick´a indukce. Pokroˇcil´a technika, kterou zde pop´ıˇseme pozdˇeji. . . 11
Tyto techniky jsou asi nejl´epe ilustrov´any n´asledovn´ymi pˇr´ıklady d˚ ukaz˚ u. Pˇ r´ıklad d˚ ukazu kontrapozic´ı Definice: Prvoˇc´ıslo je cel´e ˇc´ıslo p > 1 a nem´a jin´e dˇelitele neˇz 1 a p. Pˇ r´ıklad 2.1. Na d˚ ukaz kontrapozic´ı (obr´acen´ım). Vˇ eta. Jestliˇze p je prvoˇc´ıslo vˇetˇs´ı neˇz 2, pak p je lich´e. D˚ ukaz: Obr´acen´eho tvrzen´ı – budeme tedy dokazovat, ˇze je-li p sud´e, pak p bud’ nen´ı vˇetˇs´ı neˇz 2, nebo p nen´ı prvoˇc´ıslo. Pˇripom´ın´ame, ˇze podle definice je p sud´e, pr´avˇe kdyˇz lze ps´at p = 2 · k, kde k je cel´e. Jsou dvˇe moˇznosti: •
k ≤ 1. Pak p = 2k nen´ı vˇetˇs´ı neˇz 2.
•
k > 1. Pak p = 2 · k nen´ı prvoˇc´ıslo podle definice.
✷
Pozn´ amka: D˚ ukazy kontrapozic´ı pracuj´ı s negac´ı (opakem) pˇredpoklad˚ u a z´avˇeru. Je-li napˇr. z´avˇerem komplikovan´e tvrzen´ı tvaru z toho, ˇze z A a B plyne C, vypl´ yv´ a, ˇze z A nebo C plyne A a B“, ” nen´ı pouhou intuic´ı snadn´e zjistit, co je vlastnˇe jeho negac´ı. Proto se nebojte vyuˇz´ıvat snadn´eho mechanick´eho postupu Metody 1.16 ke spr´avn´emu znegov´an´ı“ do norm´aln´ıho tvaru. ”
Pˇ r´ıklady d˚ ukazu sporem Pˇ r´ıklad 2.2. Jin´y pˇr´ıstup k D˚ ukazu 2.1. Vˇ eta. Jestliˇze p je prvoˇc´ıslo vˇetˇs´ı neˇz 2, pak p je lich´e. D˚ ukaz sporem: Necht’ tedy p je prvoˇc´ıslo vˇetˇs´ı neˇz 2, kter´e je sud´e. Pak p = 2 · k pro nˇejak´e k > 1, tedy p nen´ı prvoˇc´ıslo, spor (s pˇredpokladem, ˇze p je prvoˇc´ıslo). ✷ D˚ ukaz sporem je natolik specifick´y a d˚ uleˇzit´y v matematice, ˇze si zaslouˇz´ı ˇsirˇs´ı vysvˇetlen´ı. Co je vlastnˇe jeho podstatou? Je to (zcela pˇrirozen´y) pˇredpoklad, ˇze v konzisn odvodit tvrzen´ı i jeho negaci. Jestliˇze tedy ve sch´ematu tentn´ı teorii nelze z´aroveˇ Jestliˇze plat´ı pˇredpoklady a plat´ı opak z´avˇeru, pak plat´ı opak jednoho ” z pˇredpoklad˚ u, nebo plat´ı jin´e zjevnˇe nepravdiv´e tvrzen´ı.“ odvod´ıme k nˇekter´emu pˇredpokladu jeho spor, nebo pˇr´ıpadnˇe jin´e tvrzen´ı, kter´e odporuje vˇseobecnˇe pˇrijat´ym fakt˚ um (pˇresnˇeji axiom˚ um, napˇr´ıklad 0 = 1), pak nˇeco mus´ı b´yt ˇspatnˇe“. Co vˇsak v naˇsem tvrzen´ı m˚ uˇze (nezapomeˇ nte pˇredpoklad konzistence) b´yt ” chybn´e? P˚ uvodn´ı pˇredpoklady byly d´any, takˇze zb´yv´a jedinˇe n´aˇs dodateˇcn´y pˇredpoklad, ˇze plat´ı opak z´avˇeru. Tud´ıˇz opak z´avˇeru nem˚ uˇze nikdy platit a dvoj´ı negac´ı odvod´ıme, ˇze plat´ı p˚ uvodn´ı z´avˇer. Pˇ r´ıklad 2.3. Opˇet sporem. √ ˇ ıslo 2 nen´ı racion´aln´ı. Vˇ eta. C´ √ D˚ ukaz sporem: Necht √ ’ tedy 2 je racion´aln´ı, tj. necht’ existuj´ı nesoudˇeln´a cel´a kladn´a ˇc´ısla r, s takov´a, ˇze 2 = r/s. 12
– Pak 2 = r 2 /s2 , tedy r 2 = 2 · s2 , proto r 2 je dˇeliteln´e dvˇema. Z toho plyne, ˇze i r je dˇeliteln´e dvˇema (proˇc? opˇet na to m˚ uˇzete j´ıt sporem. . . ). – Jelikoˇz r je dˇeliteln´e dvˇema, je r 2 dˇeliteln´e dokonce ˇctyˇrmi, tedy r 2 = 4 · m pro nˇejak´e m. Pak ale tak´e 4 · m = 2 · s2 , tedy 2 · m = s2 a proto s2 je dˇeliteln´e dvˇema. – Z toho plyne, ˇze s je tak´e dˇeliteln´e dvˇema. Celkem dost´av´ame, ˇze r i s jsou dˇeliteln´e dvˇema, jsou tedy soudˇeln´a a to je spor (s definic´ı racion´aln´ıho ˇc´ısla). ✷ Koment´ aˇ r: Nev´ıte-li, jak nˇejakou vˇetu dok´azat, zkuste d˚ ukaz sporem. . .“ ”
2.2
Vˇ ety typu tehdy a jen tehdy“ ”
Uvaˇzujme nyn´ı (v matematice pomˇernˇe hojn´e) vˇety tvaru Necht’ plat´ı pˇredpoklady P. Pak tvrzen´ı A plat´ı tehdy a jen tehdy, plat´ı-li ” tvrzen´ı B.“ Pˇr´ıklady jin´ych jazykov´ych formulac´ı t´eˇze vˇety jsou: ∗ Za pˇredpoklad˚ u P je tvrzen´ı B nutnou a postaˇcuj´ıc´ı podm´ınkou pro platnost tvrzen´ı A. ∗ Za pˇredpoklad˚ u P je tvrzen´ı A nutnou a postaˇcuj´ıc´ı podm´ınkou pro platnost tvrzen´ı B. ∗ Necht’ plat´ı pˇredpoklady P. Pak tvrzen´ı A plat´ı pr´ avˇe tehdy kdyˇz plat´ı tvrzen´ı B. Fakt: D˚ ukaz vˇet tohoto tvaru m´a vˇzdy dvˇe ˇc´asti(!). Je tˇreba dok´azat: ∗ Jestliˇ ze plat´ı pˇredpoklady P a tvrzen´ı A, pak plat´ı tvrzen´ı B. ∗ Jestliˇ ze plat´ı pˇredpoklady P a tvrzen´ı B, pak plat´ı tvrzen´ı A.
Pˇ r´ıklad 2.4. Na d˚ ukaz typu tehdy a jen tehdy“. ” Vˇ eta. Dokaˇzte, ˇze pro kaˇzd´a dvˇe cel´a ˇc´ısla a, b plat´ı, ˇze a < b pr´avˇe tehdy, kdyˇz 2a < 2b . D˚ ukaz: Nezapom´ın´ame, ˇze naˇsim u ´ kolem je dok´azat oba smˇery tvrzen´ı (implikace zleva doprava a zprava doleva). Zaˇcneme s prvn´ım: Pˇredpoklad a < b je definiˇcnˇe ekvivalentn´ı tomu, ˇze b = a + k pro nˇejak´e pˇrirozen´e k > 0. Potom 2b = 2a+k = 2a · 2k = ℓ · 2a pro nˇejak´e pˇrirozen´e ℓ = 2k ≥ 2, a tud´ıˇz 2b − 2a = (ℓ − 1) · 2a ≥ 1 · 2a > 0 . T´ım je prvn´ı ˇc´ast d˚ ukazu hotova. V opaˇcn´em smˇeru postupujeme z pˇredpokladu 2a < 2b . Vydˇelen´ım obou stran nerovnosti kladn´ym ˇc´ıslem 2a z´ısk´ame 2b /2a = 2b−a > 1 . D´ale postupujeme sporem. Necht’ tedy a ≥ b, neboli a − b = m ≥ 0. Potom m´ame 2a−b = |2 · {z . . . 2} ≥ 1. Avˇsak celkovˇe m×
1 = 20 = 2a−b · 2b−a > 1 · 1 = 1 je sporn´e. Proto zb´yv´a poˇzadovan´y z´avˇer a < b.
✷
Koment´ aˇ r: Je moˇzno se nˇekdy oddˇelen´emu zpracov´an´ı obou smˇer˚ u takov´eho tvrzen´ı vyhnout? Ano, staˇc´ı dˇelat pouze tzv. ekvivalentn´ı u ´pravy, ale je to velmi nebezpeˇcn´e. Co napˇr´ıklad tvrzen´ı a = b pr´ avˇe kdyˇz ax = bx“? To pˇrece dok´aˇzeme vyn´ asoben´ım obou stran ” rovnosti stejn´ ym ˇc´ıslem x. . . Je to sice t´emˇeˇr pravda, ale(!) mus´ıme si vˇsimnout, ˇze n´ asoben´ı obou stran rovnosti je ekvivalentn´ı u ´pravou jen pro x 6= 0; jinak nazpˇet dˇel´ıme nulou (coˇz na svˇetˇe dok´aˇze pouze Chuck Norris). Zapamatujte si, ˇze nejlepˇs´ı cestou, jak se takov´ ym chyb´am a probl´em˚ um vyhnout, je skuteˇcnˇe poctivˇe dokazovat kaˇzd´ y smˇer ekvivalence zvl´aˇst’.
13
2.3
Matematick´ a indukce
Pokud se souhrnnˇe pod´ıv´ame na d˚ ukazov´e techniky v matematice, vˇsimneme si, ˇze matematick´a indukce je skoro dvorn´ı“ d˚ ukazovou technikou diskr´etn´ı matematiky. To ” proto, ˇze umoˇzn ˇ uje pohodlnˇe dokazovat i sloˇzit´a tvrzen´ı po jednotliv´ych (diskr´etn´ıch) kroc´ıch od poˇc´ateˇcn´ıho. Uvaˇzme tedy vˇetu ve tvaru: Pro kaˇzd´e pˇrirozen´e (cel´e) n ≥ k0 plat´ı T (n).“ ” Zde k0 je nˇejak´e pevn´e pˇrir. ˇc´ıslo a T (n) je tvrzen´ı parametrizovan´e ˇc´ıs. n. Pˇr´ıkladem je tˇreba tvrzen´ı: Pro kaˇzd´e n ≥ 0 plat´ı, ˇze n pˇr´ımek dˇel´ı rovinu nejv´yˇse na 21 n(n + 1) + 1 oblast´ı. e indukce ˇr´ık´a, ˇze k d˚ ukazu vˇety Definice 2.5. Princip matematick´ Pro kaˇzd´e pˇrirozen´e (cel´e) n ≥ k0 plat´ı T (n).“ ” staˇc´ı ovˇeˇrit platnost tˇechto dvou tvrzen´ı: • •
(tzv. b´aze neboli z´aklad indukce)
T (k0 ) Pro kaˇzd´e n ≥ k0 ; jestliˇze plat´ı T (n), pak plat´ı tak´e T (n + 1).
(indukˇcn´ı pˇredpoklad) (indukˇcn´ı krok)
Form´alnˇe ˇreˇceno, matematick´a indukce je axiomem aritmetiky pˇrirozen´ych ˇc´ısel. Pozn´ amka: Pozor, v tomto pˇredmˇetu poˇc´ıt´ame 0 za pˇrirozen´e ˇc´ıslo!
Opˇet jako v pˇredeˇsl´em si tuto techniku ilustrujeme mnoˇzstv´ım n´azorn´ych pˇr´ıklad˚ u. Pˇ r´ıklady d˚ ukaz˚ u indukc´ı Pˇ r´ıklad 2.6. Velmi jednoduch´a a pˇr´ımoˇcar´a indukce. Vˇ eta. Pro kaˇzd´e pˇrirozen´e. n ≥ 1 je stejn´a pravdˇepodobnost, ˇze pˇri souˇcasn´em hodu n kostkami bude v´ysledn´y souˇcet sud´y, jako, ˇze bude lich´y. D˚ ukaz: Z´aklad indukce je zde zˇrejm´y: Na jedn´e kostce (poctiv´e!) jsou tˇri lich´a a tˇri sud´a ˇc´ısla, takˇze obˇe skupiny padaj´ı se stejnou pravdˇepodobnost´ı. Indukˇcn´ı krok pro n ≥ 1: Necht’ psn pravdˇepodobnost, ˇze pˇri hodu n kostkami bude v´ysledn´y souˇcet sud´y, a pln je pravdˇepodobnost lich´eho. Podle indukˇcn´ıho pˇredpokladu je psn = pln = 12 . Hod’me nav´ıc (n + 1)-n´ı kostkou. Podle toho, zda na n´ı padne lich´e nebo sud´e ˇc´ıslo, je pravdˇepodobnost celkov´eho sud´eho souˇctu rovna 3 1 3 l pn + psn = 6 6 2 a stejnˇe pro pravdˇepodobnost celkov´eho lich´eho souˇctu. Pˇ r´ıklad 2.7. Uk´azka skuteˇcn´e d˚ ukazov´e s´ıly“ principu matematick´e indukce. ” Vˇ eta. Pro kaˇzd´e n ≥ 0 plat´ı, ˇze n pˇr´ımek dˇel´ı rovinu nejv´yˇse na 1 n(n + 1) + 1 2
oblast´ı. 14
✷
D˚ ukaz: Pro b´azi indukce staˇc´ı, ˇze 0 pˇr´ımek dˇel´ı rovinu na jednu ˇc´ast. (Vˇsimnˇete si tak´e, ˇze 1 pˇr´ımka dˇel´ı rovinu na dvˇe ˇc´asti, jen pro lepˇs´ı pochopen´ı d˚ ukazu.) 1 Mˇejme nyn´ı rovinu rozdˇelenou n pˇr´ımkami na nejv´yˇse 2 n(n+1)+1 ˇc´ast´ı. Dalˇs´ı, (n+1)n´ı pˇr´ımka je rozdˇelena pr˚ useˇc´ıky s pˇredchoz´ımi pˇr´ımkami na nejv´yˇse n + 1 u ´ sek˚ u a kaˇzd´y z nich oddˇel´ı novou ˇc´ast roviny. Celkem tedy bude rovina rozdˇelena naˇsimi pˇr´ımkami na nejv´yˇse tento poˇcet oblast´ı: 1 1 1 1 n(n + 1) + 1 + (n + 1) = n(n + 1) + · 2(n + 1) + 1 = (n + 1)(n + 2) + 1 2 2 2 2 ✷ Pˇ r´ıklad 2.8. Dalˇs´ı indukˇcn´ı d˚ ukaz rozepsan´y v podrobn´ych kroc´ıch. P . Vˇ eta. Pro kaˇzd´e n ≥ 0 plat´ı nj=0 j = n(n+1) 2
•
D˚ ukaz indukc´ı vzhledem k n. P B´aze: Mus´ıme dok´azat tvrzen´ı T (0), coˇz je v tomto pˇr´ıpadˇe rovnost 0j=0 j = Tato rovnost (zjevnˇe) plat´ı.
0(0+1) . 2
Indukˇcn´ı krok: Mus´ıme dok´azat n´asleduj´ıc´ı tvrzen´ı pro n ≥ 0: P P Jestliˇze plat´ı nj=0 j = n(n+1) , pak plat´ı qj=0 j = q(q+1) , kde q = n + 1. 2 2 P a pokusme se dok´azat, ˇze pak tak´e Pˇredpokl´adejme tedy, ˇze nj=0 j = n(n+1) 2 •
q X j=0
j=
q(q + 1) (n + 1)(n + 2) = . 2 2
To uˇz plyne u ´ pravou: q X j=0
j =
n X j=0
j + (n + 1) =
n(n + 1) n(n + 1) + 2(n + 1) (n + 1)(n + 2) + (n + 1) = = 2 2 2
Podle principu matematick´e indukce je cel´ y d˚ ukaz hotov.
✷
Pozn´ amka: V´ ysledek Pˇr´ıkladu 2.8 je uk´azkou tzv. sumaˇcn´ıho vzorce pro posloupnost pˇrirozen´ ych ˇc´ısel. Jinou uk´azkou je tˇreba vztah 1 + 3 + · · · + (2n − 3) + (2n − 1) = 1 + (2n − 1) + 3 + (2n − 3) + · · · = 2n ·
n = n2 , 2
nebo 12 + 22 + · · · + n2 = 16 n(n + 1)(2n + 1) a 13 + 23 + · · · + n3 = (1 + 2 + · · · + n)2 = 41 n2 (n + 1)2 . Odvozov´an´ı a pr´ ace s jednoduch´ ymi sumaˇcn´ımi vzorci by tak´e mˇela n´ aleˇzet do v´ ybavy schopn´eho informatika, princip matematick´e indukce je zde kl´ıˇcov´ y.
15
2.4
Koment´ aˇ re k matematick´ e indukci
Pro spr´avn´e a u ´ spˇeˇsn´e pouˇzit´ı indukce v dokazov´an´ı je vhodn´e si zapamatovat nˇekolik cenn´ych rad: ∗ Z´ akladn´ı trik vˇsech d˚ ukaz˚ u matematickou indukc´ı je vhodn´a reformulace tvrzen´ı T (n + 1) tak, aby se odvol´avalo“ na tvrzen´ı T (n). ” – Dobˇre se vˇzdy pod´ıvejte, v ˇcem se liˇs´ı tvrzen´ı T (n + 1) od tvrzen´ı T (n). Tento rozd´ıl“ budete muset v d˚ ukaze zd˚ uvodnit. ” ∗ Pozor, obˇ cas je potˇreba zes´ılit“ tvrzen´ı T (n), aby indukˇcn´ı krok spr´avnˇe fungoval“. ” ” – Velk´ym probl´emem bohuˇzel je, ˇze nen´ı moˇzno podat n´avod, jak vhodn´e zes´ılen´ı“ ” nal´ezt (ani kdy jej v˚ ubec hledat). Jedn´a se vlastnˇe o pokusy a h´ad´an´ı z kˇriˇst’a´lov´e ” koule“. ˇ ∗ Casto se chybuje v d˚ ukazu indukˇcn´ıho kroku, nebot’ ten b´yv´a vˇetˇsinou v´yraznˇe obt´ıˇznˇejˇs´ı neˇz b´aze, ale o to zr´adnˇejˇs´ı jsou chyby v samotn´e zd´anlivˇe snadn´e b´azi!
– Dejte si dobr´y pozor, od kter´e hodnoty n ≥ k0 je indukˇcn´ı krok univerz´alnˇe platn´y a jestli pˇr´ıpadnˇe b´aze nezahrnuje v´ıce neˇz jednu hodnotu. . . Zes´ılen´ı indukˇ cn´ıho kroku Pˇ r´ıklad 2.9. Kdyˇz je nutno indukˇcn´ı krok zes´ılit. . . Vˇ eta. Pro kaˇzd´e n ≥ 1 plat´ı s(n) =
1 1 1 1 + + +···+ < 1. 1·2 2·3 3·4 n(n + 1)
1 aze indukce je zˇrejm´a, nebot’ 1·2 < 1. D˚ ukaz: B´ Co vˇsak indukˇcn´ı krok? Pˇredpoklad s(n) < 1 je s´am o sobˇe pˇr´ıliˇs slab´y“ na to, aby bylo ” 1 moˇzno tvrdit s(n + 1) = s(n) + (n+1)(n+2) < 1.
Neznamen´a to jeˇstˇe, ˇze by tvrzen´ı nebylo platn´e, jen je potˇreba n´aˇs indukˇcn´ı pˇredpoklad zes´ılit. Budeme dokazovat Tvrzen´ı. Pro kaˇzd´e pˇrirozen´e n ≥ 1 plat´ı s(n) ≤ 1 −
1 n+1
< 1.
To plat´ı pro n = 1 (nezapomeˇ nte ovˇeˇrit!) a d´ale uˇz u ´ pravou jen dokonˇc´ıme zes´ılen´y indukˇcn´ı krok: s(n + 1) = s(n) +
1 1 1 ≤ 1− + = (n + 1)(n + 2) n + 1 (n + 1)(n + 2)
= 1+
−(n + 2) + 1 1 = 1− (n + 1)(n + 2) n+2
✷
Rozˇ s´ıˇ ren´ı b´ aze a pˇ redpokladu Mimo zesilov´an´ı tvrzen´ı indukˇcn´ıho kroku jsme nˇekdy okolnostmi nuceni i k rozˇsiˇrov´an´ı samotn´e b´aze indukce a s n´ı indukˇcn´ıho pˇredpokladu na v´ıce neˇz jednu hodnotu parametru n. 16
– M˚ uˇzeme napˇr´ıklad pˇredpokl´adat platnost (parametrizovan´ych) tvrzen´ı T (n) i T (n+1) z´aroveˇ n, a pak odvozovat platnost T (n+2). Toto lze samozˇrejmˇe zobecnit na jak´ykoliv poˇcet pˇredpokl´adan´ych parametr˚ u. – M˚ uˇzeme dokonce pˇredpokl´adat platnost tvrzen´ı T (j) pro vˇsechna j = k0 , k0 + 1, . . . , n najednou a dokazovat T (n + 1). Toto typicky vyuˇzijeme v pˇr´ıpadech, kdy indukˇcn´ı krok rozdˇel´ı“ probl´em T (n + 1) na dvˇe menˇs´ı ˇc´asti a z nich pak odvod´ı platnost ” T (n + 1). Fakt: Obˇe prezentovan´a rozˇs´ıˇren´ı“ jsou v koneˇcn´em d˚ usledku jen speci´aln´ımi instancemi ” z´akladn´ı matematick´e indukce; pouˇzit´e rozˇs´ıˇren´e moˇznosti pouze zjednoduˇsuj´ı form´aln´ı z´apis d˚ ukazu. Pˇ r´ıklad 2.10. Kdyˇz je nutno rozˇs´ıˇrit b´azi a indukˇcn´ı pˇredpoklad. . . Vˇ eta. Necht’ funkce f pro kaˇzd´e n ≥ 0 splˇ nuje vztah f (n + 2) = 2f (n + 1) − f (n). Pokud plat´ı f (0) = 1 a z´aroveˇ n f (1) = 2, tak plat´ı f (n) = n + 1 pro vˇsechna pˇrirozen´a n ≥ 0.
D˚ ukaz: Uˇz samotn´y pohled na dan´y vztah f (n + 2) = 2f (n + 1) − f (n) naznaˇcuje, ˇze bychom mˇeli rozˇs´ıˇrit indukˇcn´ı pˇredpoklad (a krok) zhruba takto: Pro kaˇzd´e n ≥ 0; jestliˇze plat´ı T (n); neboli f (n) = n + 1, a z´aroveˇ n plat´ı T (n + 1); f (n + 1) = n + 2, pak plat´ı tak´e T (n + 2); f (n + 2) = n + 3. B´aze indukce – pozor, zde uˇz mus´ıme ovˇeˇrit dvˇe hodnoty f (0) = 0 + 1 = 1,
f (1) = 1 + 1 = 2 .
uˇze vyuˇz´ıt cel´eho rozˇs´ıˇren´eho pˇredpokladu, znalosti hodnot N´aˇs indukˇcn´ı krok tak nyn´ı m˚ f (n) i f (n + 1), pro ovˇeˇren´ı f (n + 2) = 2f (n + 1) − f (n) = 2 · (n + 1 + 1) − (n + 1) = n + 3 = n + 2 + 1 .
✷
Koment´ aˇ r: Jak by tento d˚ ukaz mˇel b´ yt formulov´an v tradiˇcn´ı“ indukci? ( Substituc´ı“ ” ” nov´eho tvrzen´ı.)
Z´ avˇ erem mal´ y probl´ em“ ” Pˇ r´ıklad 2.11. Aneb jak snadno lze v matematick´e indukci udˇelat chybu. Vˇ eta. ( nevˇeta“) ” V kaˇzd´em st´adu o n ≥ 1 kon´ıch maj´ı vˇsichni konˇe stejnou barvu.
D˚ ukaz indukc´ı vzhledem k n. B´aze: Ve st´adu o jednom koni maj´ı vˇsichni konˇe stejnou barvu. Indukˇcn´ı krok: Necht’ S = {K1 , . . . , Kn+1 } je st´ado o n + 1 kon´ıch. Dok´aˇzeme, ˇze vˇsichni konˇe maj´ı stejnou barvu. Uvaˇzme dvˇe menˇs´ı st´ada: – S ′ = {K1 , K2 , . . . , Kn }
– S ′′ = {K2 , . . . , Kn , Kn+1 }
17
Podle indukˇcn´ıho pˇredpokladu maj´ı vˇsichni konˇe ve st´adu S ′ stejnou barvu B ′ . Podobnˇe vˇsichni konˇe ve st´adu S ′′ maj´ı podle indukˇcn´ıho pˇredpokladu stejnou barvu B ′′ . Dok´aˇzeme, ˇze B ′ = B ′′ , tedy ˇze vˇsichni konˇe ve st´adu S maj´ı stejnou barvu. To ale plyne z toho, ˇze konˇe K2 , . . . , Kn patˇr´ı jak do st´ada S ′ , tak i do st´ada S ′′ . ✷ Koment´ aˇ r: Ale to uˇz je podvod! Vid´ıte, kde?
Navazuj´ıc´ı studium Jak jsme jiˇz ˇrekli, matematick´e d˚ ukazy a jejich ch´ ap´ an´ı jsou nezbytn´e ke studiu vysokoˇskolsk´ ych matematick´ ych pˇredmˇet˚ u. Bez schopnosti pˇresn´eho vyjadˇrov´an´ı a ch´ ap´ an´ı definic a vˇet se informatik neobejde, ani pokud se zamˇeˇruje ˇcistˇe aplikovan´ ym smˇerem; viz tˇreba spr´avn´e pochopen´ı r˚ uzn´ ych norem a specifikac´ı. Na druhou stranu umˇen´ı “tvoˇrit” nov´e matematick´e d˚ ukazy je dosti obt´ıˇzn´e a ned´ a se jemu jen tak snadno nauˇcit – vyˇzaduje to mnoho pokroˇcil´e praxe. Jelikoˇz je schopnost form´aln´ıho matematick´eho dokazov´an´ı nezbytn´a (pˇrev´aˇznˇe jen) v teoretick´ ych informatick´ ych discipl´ın´ ach, nen´ı tato ˇc´ ast kritick´a v cel´em pˇredmˇetu (a u zkouˇsek se objev´ı s menˇs´ım d˚ urazem), ale to neznamen´a, ˇze byste se j´ı mohli zcela vyh´ ybat. Obzvl´aˇstˇe techniku matematick´e indukce by mˇel kaˇzd´ y informatik aspoˇ n trochu ovl´adat, nebot’ s jej´ım pouˇzit´ım se zajist´e jeˇstˇe mnohokr´ ate setk´ate v budouc´ım studiu.
18
3
Mnoˇ ziny a jejich prvky ´ Uvod V pˇrehledu matematick´ ych formalism˚ u informatiky se v t´eto a pˇr´ıˇst´ı lekci zamˇeˇr´ıme na z´akladn´ı datov´e typy matematiky, tj. na mnoˇziny, relace a funkce. Netradiˇcn´ı souslov´ı datov´e typy“ matematiky zde vol´ıme z´amˇernˇe, abychom zd˚ uraznili jejich fundament´alnost ” pro v´ ystavbu navazuj´ıc´ı teorie v analogii k programov´an´ı. O mnoˇzin´ ach jste sice zajist´e slyˇseli uˇz na z´akladn´ı ˇskole, ale podstatou naˇseho pˇredmˇetu je uv´est povˇetˇsinou neform´ alnˇe zn´ am´e pojmy na patˇriˇcnou form´aln´ı u ´roveˇ n nutnou pro teoretick´e z´ aklady informatiky. V pˇr´ıpadˇe koneˇcn´e teorie mnoˇzin si zde vystaˇc´ıme s tzv. naivn´ım“ pohledem, kter´ y dostateˇcnˇe matematicky pˇresnˇe vystihuje vˇsechny jejich koneˇcn´e ” aspekty (o aspektech nekoneˇcn´ ych mnoˇzin se kr´atce zm´ın´ıme aˇz v Lekci 12).
C´ıle V t´eto lekci si uk´aˇzeme prvn´ı krok k seri´ oznˇe vybudovan´e matematick´e teorii mnoˇzin – tzv. naivn´ı teorii mnoˇzin, kter´a n´ am velmi dobˇre poslouˇz´ı ve vˇsech koneˇcn´ ych pˇr´ıpadech. Na to nav´aˇzeme zaveden´ım z´ akladn´ıho mnoˇzinov´eho kalkulu, shrnut´ım bˇeˇzn´ ych vlastnost´ı mnoˇzin a uvedeme si pˇr´ıklady rekurzivnˇe definovan´ ych posloupnost´ı.
3.1
Pojem mnoˇ ziny
Poloˇzme si hned na u ´ vod tu nejd˚ uleˇzitˇejˇs´ı ot´azku: Co je vlastnˇe mnoˇ zina? Na tuto ot´azku bohuˇzel nen´ı zcela jednoduch´a odpovˇed’. . . Abychom se v˚ ubec nˇekam v naˇsem u ´ vodu dostali, spokoj´ıme se zat´ım jen s pˇrirozen´ym naivn´ım pohledem“. ” Definice naivn´ı teorie mnoˇzin: Mnoˇzina je soubor prvk˚ u a je sv´ymi prvky plnˇe urˇcena.“ ” Koment´ aˇ r: Pˇr´ıklady z´ apisu mnoˇzin v´ yˇctem prvk˚ u ∅, {a, b}, {b, a}, {a, b, a}, {{a, b}}, {∅, {∅}, {{∅}}},
{x | x je lich´e pˇrirozen´e ˇc´ıslo}.
Co je ale pak prvek? Tady pozor, pojem prvku s´am o sobˇe nem´a matematick´y v´yznam, sv´eho v´yznamu totiˇz nab´yv´a pouze ve spojen´ı b´yt prvkem mnoˇziny“. Prvky ” mnoˇziny tak m˚ uˇze b´yt cokoliv, mimo jin´e i dalˇs´ım mnoˇziny. Koment´ aˇ r: Relativitu v´ yznamu vztahu prvek–mnoˇzina“ si m˚ uˇzeme pˇribl´ıˇzit tˇreba na vz” tahu podˇr´ızen´ y–nadˇr´ızen´ y“ z bˇeˇzn´eho pracovn´ıho ˇzivota. Tam tak´e nem´ a smysl jen ˇr´ıkat, ” ˇze je nˇekdo podˇr´ızen´ ym, aniˇz ˇrekneme tak´e jeho nadˇr´ızen´eho. Pˇritom i vedouc´ı je nˇekomu jeˇstˇe podˇr´ızen´ y a naopak i ten posledn´ı podˇr´ızen´ y pracovn´ık m˚ uˇze b´ yt p´ anem tˇreba sv´eho psa. Podobnˇe je tomu s mnoˇzinou jako nadˇr´ızenou“ sv´ ych prvk˚ u. ” Ale pˇrece jenom. . . v dobˇre definovan´em kontextu lze (omezenˇe) mluvit o prvc´ıch jako samostatn´ ych entit´ ach. Form´ alnˇe se napˇr´ıklad jedn´a o prvky pevnˇe dan´e nosn´e mnoˇziny.
Znaˇ cen´ ı mnoˇzin a jejich prvk˚ u: • x ∈ M x je prvkem mnoˇziny M“, ” • ∅ je pr´ azdn´a mnoˇzina {}. 19
Koment´ aˇ r: Nˇekter´e vlastnosti vztahu b´ yt prvkem“ jsou ” ∗ a ∈ {a, b}, a 6∈ {{a, b}}, {a, b} ∈ {{a, b}}, a 6∈ ∅, ∅ ∈ {∅}, ∅ 6∈ ∅, ∗ rovnost mnoˇzin dle sv´ ych prvk˚ u {a, b} = {b, a} = {a, b, a}, {a, b} = 6 {{a, b}}.
Znaˇ cen´ ı : Poˇcet prvk˚ u (mohutnost) mnoˇziny A zapisujeme |A|. Koment´ aˇ r:
|∅| = 0, |{∅}| = 1,
|{a, b, c}| = 3, |{{a, b}, c}| = 2.
Jednoduch´ e srovn´ an´ı mnoˇ zin Vztah b´yt prvkem mnoˇziny“ pˇrirozenˇe n´am pod´av´a i zp˚ usob porovn´av´an´ı mnoˇzin mezi ” sebou. Jedn´a se o kl´ıˇcovou ˇc´ast teorie mnoˇzin. Definice: Mnoˇzina A je podmnoˇzinou mnoˇziny B, pr´avˇe kdyˇz kaˇzd´y prvek A je ˇ ık´ame tak´e, ˇze se jedn´a o inkluzi. prvkem B. P´ıˇseme A ⊆ B nebo obr´acenˇe B ⊇ A. R´ ∗ Plat´ı {a} ⊆ {a} ⊆ {a, b} 6⊆ {{a, b}}, ∗ A ( B pr´ avˇe kdyˇz A ⊆ B a A 6= B
∅ ⊆ {∅}, (A je vlastn´ı podmnoˇzinou B).
Z naivn´ı definice mnoˇziny pak pˇr´ımo vypl´yv´a n´asleduj´ıc´ı: Definice: Dvˇe mnoˇziny jsou si rovny A = B pr´avˇe kdyˇz A ⊆ B a B ⊆ A. ∗ Podle naivn´ı definice jsou totiˇ z mnoˇziny A a B stejn´e, maj´ı-li stejn´e prvky. ∗ D˚ ukaz rovnosti mnoˇzin A = B m´a obvykle dvˇe ˇc´asti: Oddˇelenˇe se dok´aˇz´ı inkluze
A ⊆ B a B ⊆ A.
Uk´ azky nekoneˇ cn´ ych mnoˇ zin Znaˇ cen´ ı : Bˇeˇzn´e ˇc´ıseln´e mnoˇziny v matematice jsou n´asleduj´ıc´ı
N = {0, 1, 2, 3, . . . } je mnoˇzina pˇrirozen´ych ˇc´ısel, ∗ Z = {. . . , −2, −1, 0, 1, 2, 3, . . . } je mnoˇ zina cel´ych ˇc´ısel, + ∗ Z = {1, 2, 3, . . . } je mnoˇ zina cel´ych kladn´ych ˇc´ısel, zina racion´aln´ıch ˇc´ısel (zlomk˚ u). ∗ Q je mnoˇ ∗ R je mnoˇ zina re´aln´ych ˇc´ısel. ∗
Koment´ aˇ r: Tyto uveden´e ˇc´ıseln´e mnoˇziny jsou vesmˇes nekoneˇcn´e, na rozd´ıl od koneˇcn´ ych mnoˇzin uvaˇzovan´ ych v pˇredchoz´ım naivn´ım“ pohledu. Pojem nekoneˇcn´e mnoˇziny se ” pˇr´ımo v matematice objevil aˇz teprve v 19. stolet´ı a bylo s n´ım spojeno nˇekolik paradox˚ u ukazuj´ıc´ıch, ˇze naivn´ı pohled na teorii mnoˇzin pro nekoneˇcn´e mnoˇziny nedostaˇcuje. My se k problematice nekoneˇcn´ ych mnoˇzin, Kantorovˇe vˇetˇe a Russelovˇe paradoxu vr´at´ıme v z´avˇeru naˇseho pˇredmˇetu v Lekci 12.
3.2
Mnoˇ zinov´ e operace
Zaˇcnˇeme se z´akladn´ımi operacemi mnoˇzinov´eho kalkulu, kter´e zajist´e na intuitivn´ı u ´ rovni jiˇz ovl´ad´ate ze ˇskoly. Pro form´aln´ı u ´ plnost pod´ame jejich pˇresn´e definice, na kter´e se m˚ uˇzete odvol´avat v d˚ ukazech.
20
Z´ akladn´ı operace Definice 3.1. Sjednocen´ı ∪ a pr˚ unik ∩ dvou mnoˇzin A, B definujeme A ∪ B = {x | x ∈ A nebo x ∈ B} , A ∩ B = {x | x ∈ A a souˇcasnˇe x ∈ B} .
A∪B
A∩B
∗ Pˇr´ıklady {a, b, c} ∪ {a, d} = {a, b, c, d}, ∗ Vˇ zdy plat´ı distributivita“
” (A ∪ B) ∩ (A ∪ C)
{a, b, c} ∩ {a, d} = {a}.
A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C) a A ∪ (B ∩ C) =
∗ a tak´ e asociativita“ A∩(B∩C) = (A∩B)∩C (stejnˇe pro ∪) a komutativita“ A∩B =
” B ∩ A (stejnˇe pro ∪).
”
Koment´ aˇ r: Asociativita a komutativita operac´ı sjednocen´ı a pr˚ uniku je na jednu stranu zcela pˇrirozen´a, na druhou stranu vˇsak velmi d˚ uleˇzit´ a napˇr´ıklad pro platnost n´ asleduj´ıc´ı definice.
Definice: Pro libovoln´y poˇcet mnoˇzin indexovan´ych pomoc´ı I rozˇs´ıˇrenˇe definujeme [ Ai = {x | x ∈ Ai pro nˇejak´e i ∈ I} , \i∈I Ai = {x | x ∈ Ai pro kaˇzd´e i ∈ I} . i∈I
N
S ych Koment´ aˇ r: Necht’ Ai = {2 · i} pro kaˇzd´e i ∈ . Pak i∈N Ai je mnoˇ T zina vˇsech sud´ pˇrirozen´ ych ˇc´ısel. Necht’ Bi = {x | x ∈ , x ≥ i} pro kaˇzd´e i ∈ . Pak i∈N Bi = ∅.
N
N
Mnoˇ zinov´ y rozd´ıl Definice 3.2. Rozd´ıl \ a symetrick´ y rozd´ıl ∆ dvou mnoˇzin A, B definujeme A \ B = {x | x ∈ A a souˇcasnˇe x 6∈ B} , A∆B = A \ B ∪ B \ A .
A\B ∗ Pˇr´ıklady {a, b, c} \ {a, b, d} = {c},
A∆B {a, b, c}∆{a, b, d} = {c, d}.
∗ Vˇ zdy plat´ı napˇr´ıklad A \ (B ∩ C) = (A \ B) ∪ (A \ C) apod.
Definice: Pro libovoln´y poˇcet mnoˇzin indexovan´ych pomoc´ı koneˇcn´e I rozˇs´ıˇrenˇe definujeme y poˇcet i ∈ I} . i∈I Ai = {x | x ∈ Ai pro lich´
∆
21
Koment´ aˇ r: Povˇsimnˇete si, ˇze operace rozd´ılu nen´ı asociativn´ı ani komutativn´ı (ostatnˇe stejnˇe je tomu u aritmetick´eho rozd´ılu). Symetrick´ y rozd´ıl uˇz asociativn´ı i komutativn´ı je, nen´ı to vˇsak na prvn´ı pohled vidˇet. Umˇeli byste toto dok´azat?
Definice: Necht’ A ⊆ M. Doplnˇek A vzhledem k M je mnoˇzina A = M \ A. Koment´ aˇ r: Jedn´a se o ponˇekud specifickou operaci, kter´a mus´ı b´ yt vztaˇzena vzhledem k nosn´e mnoˇzinˇe M ! Je-li M = {a, b, c}, pak {a, b} = {c}. Je-li M = {a, b}, pak {a, b} = ∅. ∗ Vˇ zdy pro A ⊆ M plat´ı A = A ( dvoj´ı“ doplnˇek).
” ∗ Vˇ zdy pro A, B ⊆ M plat´ı A ∪ B = A ∩B a A ∩ B = A ∪B. (Viz Vennovy diagramy.) Uspoˇ r´ adan´ e dvojice a kart´ ezsk´ y souˇ cin Zat´ımco prvky v mnoˇzin´ach jsou zcela neuspoˇr´adan´e, jsou mnoh´e situace, kdy mus´ıme pracovat se seˇrazen´ymi“ v´yˇcty prvk˚ u. V teorii mnoˇzin lze takov´eto seˇrazen´ı definovat ” oklikou n´asledovnˇe: Definice: Uspoˇr´adan´a dvojice (a, b) je zad´ana mnoˇzinou {{a}, {a, b}}.
Fakt: Plat´ı (a, b) = (c, d) pr´avˇe kdyˇz a = c a souˇcasnˇe b = d. Umˇeli byste toto sami dok´azat pˇr´ımo z podan´e definice? ∗ Co je podle definice (a, a)? Je to (a, a) = {{a}, {a, a}} = {{a}, {a}} = {{a}}.
ezsk´ y souˇ cin dvou mnoˇzin A, B definujeme jako Definice 3.3. Kart´ mnoˇzinu vˇsech uspoˇr´adan´ych dvojic ze sloˇzek z A a B A × B = {(a, b) | a ∈ A, b ∈ B} . ∗ Pˇr´ıklady {a, b} × {a} = {(a, a), (b, a)}, {c, d} × {a, b} = {(c, a), (c, b), (d, a), (d, b)}. ∗ Plat´ı ∅ × X = ∅ = X × ∅ pro kaˇ zdou mnoˇzinu X. ∗ Jednoduch´ a mnemotechnick´a pom˚ ucka ˇr´ık´a |A × B| = |A| · |B| .
N
Definice: Pro kaˇzd´e k ∈ , k > 0 definujeme uspoˇr´adanou k-tici (a1 , · · · , ak ) induktivnˇe – (a1 ) = a1 , – (a1 , · · · , ai , ai+1 ) = ((a1 , · · · , ai ), ai+1 ). Vˇsimnˇete si, ˇze definice pouˇz´ıv´a tzv. rekurentn´ı vztah, bl´ıˇze viz Odd´ıl 3.4. Fakt: Plat´ı (a1 , · · · , ak ) = (b1 , · · · , bk ) pr´avˇe kdyˇz ai = bi pro kaˇzd´e i ∈ Definice kart´ezsk´eho souˇcinu v´ıce mnoˇzin: Pro kaˇzd´e k ∈
N kde 1 ≤ i ≤ k.
N definujeme
A1 × · · · × Ak = {(a1 , · · · , ak ) | ai ∈ Ai pro kaˇzd´e 1 ≤ i ≤ k} . ∗ Napˇr´ıklad ∗ Co je A0 ?
Z3 = Z × Z × Z = {(i, j, k) | i, j, k ∈ Z}.
{∅}, nebot’ jedin´a uspoˇr´adan´a 0-tice je pr´avˇe pr´azdn´a ∅.
Pozn´ amka: Podle uveden´e definice nen´ı souˇcin asociativn´ı, tj. obecnˇe nemus´ı platit, ˇze A × (B × C) = (A × B) × C. V matematick´e praxi je nˇekdy v´ yhodnˇejˇs´ı uvaˇzovat upravenou definici, podle n´ıˇz souˇcin asociativn´ı je. Pro u ´ˇcely t´eto pˇredn´aˇsky nen´ı podstatn´e, k jak´e definici se pˇriklon´ıme. Prezentovan´e definice a vˇety funguj´ı“ pro obˇe varianty. ”
22
Potenˇ cn´ı mnoˇ zina Definice 3.4. Potenˇ cn´ı mnoˇ zina mnoˇziny A, neboli mnoˇzina vˇsech podmnoˇzin, je definovan´a vztahem 2A = {B | B ⊆ A} . ∗ Plat´ı napˇr´ıklad 2{a,b} = {∅, {a}, {b}, {a, b}}, ∗ 2∅ = {∅},
2{∅,{∅}} = {∅, {∅}, {{∅}}, {∅, {∅}}},
∗ 2{a}×{a,b} = {∅, {(a, a)}, {(a, b)}, {(a, a), (a, b)}}.
Vˇ eta 3.5. Poˇcet prvk˚ u potenˇcn´ı mnoˇziny splˇ nuje |2A | = 2|A| .
D˚ ukaz: Struˇcnˇe indukc´ı podle |A|: Pro A = ∅ plat´ı |2A | = |{∅}| = 1. Pro kaˇzd´y dalˇs´ı prvek b 6∈ A rozdˇel´ıme vˇsechny podmnoˇziny A ∪ {b} napolovic“ na ty neobsahuj´ıc´ı b a ” na ty obsahuj´ıc´ı b, tud´ıˇz A∪{b} 2 = 2 · 2A = 2|A|+1 = 2|A∪{b}| . ✷
3.3
Porovn´ av´ an´ı a urˇ cen´ı mnoˇ zin
Pro obecnou ilustraci form´aln´ıho mnoˇzinov´eho kalkulu si ukaˇzme dva d˚ ukazy rovnost´ı mezi mnoˇzinov´ymi v´yrazy. Podobnˇe lze (rozeps´an´ım pˇr´ısluˇsn´ych definic) rutinnˇe dokazovat dalˇs´ı mnoˇzinov´e vztahy. Vˇ eta 3.6. Pro kaˇzd´e dvˇe mnoˇziny A, B ⊆ M plat´ı A ∪ B = A ∩ B. D˚ ukaz v obou smˇerech rovnosti.
•
A ∪ B ⊆ A ∩ B: Pro x ∈ M plat´ı x ∈ A ∪ B, pr´avˇe kdyˇz x 6∈ A ∪ B, neboli kdyˇz z´aroveˇ n x 6∈ A a x 6∈ B. To znamen´a x ∈ A a z´aroveˇ n x ∈ B, z ˇcehoˇz vypl´yv´a poˇzadovan´e x ∈ A ∩ B.
•
A ∪ B ⊇ A ∩ B: Pro x ∈ M plat´ı x ∈ A ∩ B, pr´avˇe kdyˇz x ∈ A a z´aroveˇ n x ∈ B, neboli kdyˇz z´aroveˇ n x 6∈ A a x 6∈ B. To znamen´a x 6∈ A ∪ B, z ˇcehoˇz vypl´yv´a poˇzadovan´e x ∈ A ∪ B. ✷
Vˇ eta 3.7. Pro kaˇzd´e tˇri mnoˇziny A, B, C plat´ı A \ (B ∩ C) = (A \ B) ∪ (A \ C) . D˚ ukaz (viz ilustraˇcn´ı obr´azek). •
A \ (B ∩ C) ⊆ (A \ B) ∪ (A \ C): Je-li x ∈ A \ (B ∩ C), pak x ∈ A a z´aroveˇ n x 6∈ (B ∩ C), neboli x 6∈ B nebo x 6∈ C. Pro prvn´ı moˇznost m´ame x ∈ (A \ B), pro druhou x ∈ (A \ C).
•
Naopak A \ (B ∩ C) ⊇ (A \ B) ∪ (A \ C): Je-li x ∈ (A \ B) ∪ (A \ C), pak x ∈ (A \ B) nebo x ∈ (A \ C). Pro prvn´ı moˇznost m´ame x ∈ A a z´aroveˇ n x 6∈ B, z ˇcehoˇz plyne x ∈ A a z´aroveˇ n x 6∈ (B ∩ C), a tud´ıˇz x ∈ A \ (B ∩ C). Druh´a moˇznost je analogick´a. ✷ 23
Charakteristick´ y vektor (pod)mnoˇ ziny V pˇr´ıpadech, kdy vˇsechny uvaˇzovan´e mnoˇziny jsou podmnoˇzinami nˇejak´e koneˇcn´e nosn´e mnoˇziny X, coˇz nen´ı neobvykl´e v program´atorsk´ych aplikac´ıch, s v´yhodou vyuˇzijeme n´asleduj´ıc´ı reprezentaci mnoˇzin. Definice: Mˇejme nosnou mnoˇzinu X = {x1 , x2 , . . . , xn }. Pro A ⊆ X definujeme charakteristick´y vektor χA jako χA = (c1 , c2 , . . . , cn ), kde ci = 1 pro xi ∈ A a ci = 0 jinak. Uˇziteˇcnost t´eto reprezentace je ilustrov´ana tak´e n´asledovn´ymi fakty. •
Plat´ı A = B pr´avˇe kdyˇz χA = χB .
•
Mnoˇzinov´e operace jsou realizov´any bitov´ymi funkcemi“ ” sjednocen´ı ∼ OR, pr˚ unik ∼ AND, symetrick´y rozd´ıl ∼ XOR.
Princip inkluze a exkluze Tento d˚ uleˇzit´y a zaj´ımav´y kombinatorick´y princip je nˇekdy tak´e naz´yv´an princip zapo” jen´ı a vypojen´ı“. Pouˇz´ıv´a se ke zjiˇst’ov´an´ı poˇct˚ u prvk˚ u mnoˇzin s nepr´azdn´ymi pr˚ uniky. Vˇ eta 3.8. Poˇcet prvk˚ u ve sjednocen´ı dvou ˇci tˇr´ı mnoˇzin spoˇc´ıt´ame: |A ∪ B| = |A| + |B| − |A ∩ B| |A ∪ B ∪ C| = |A| + |B| + |C| − |A ∩ B| − |A ∩ C| − |B ∩ C| + |A ∩ B ∩ C|
1×
A
2×
A
1×
B
B C
D˚ ukaz: Uvedeme si podrobn´y d˚ ukaz prvn´ıho vztahu |A ∪ B| = |A| + |B| − |A ∩ B|, pˇriˇcemˇz druh´a ˇc´ast je analogick´a (viz obr´azkov´a ilustrace). Necht’ x ∈ A ∪ B. Pokud x 6∈ B, tak je x ∈ A a prvek x je zapoˇc´ıt´an na prav´e stranˇe |A| + |B| − |A ∩ B| pr´avˇe jednou v |A|. Obdobnˇe je to v pˇr´ıpadˇe x 6∈ A. Nakonec pro x ∈ A ∩ B je ve vztahu |A| + |B| − |A ∩ B| tento prvek x zapoˇc´ıt´an tak´e 1 + 1 − 1 = 1 kr´at. ✷ Koment´ aˇ r: Vˇsimnˇete si, ˇze Vˇetu 3.8 lze stejnˇe tak vyuˇz´ıt k v´ ypoˇctu poˇctu prvk˚ u v pr˚ uniku mnoˇzin. . .
Pˇ r´ıklad 3.9. Z 1000 televiz´ı jich pˇri prvn´ı kontrole na v´yrobn´ı lince m´a 5 vadnou obrazovku, 10 je poˇskr´aban´ych a 12 m´a jinou vadu. Pˇritom 3 televize maj´ı souˇcasnˇe vˇsechny tˇri vady a 4 jin´e jsou poˇskr´aban´e a maj´ı jinou vadu. Kolik televiz´ı je celkem vadn´ych? ˇ sen´ı: Dosazen´ım |A| = 5, |B| = 10, |C| = 12, |A ∩ B ∩ C| = 3, (zde pozor) Reˇ |A ∩ B| = 3 + 0, |A ∩ C| = 3 + 0, |B ∩ C| = 3 + 4 do Vˇety 3.8 zjist´ıme v´ysledek 17. ✷ 24
Pozn´ amka. Jen struˇcnˇe, bez d˚ ukazu a bliˇzˇs´ıho vysvˇetlen´ı, si uvedeme obecnou formu principu inkluze a exkluze: n \ X [ Aj = (−1)|I|−1 · Ai j=1 ∅6=I⊆{1,...,n} i∈I
(Jeho znalost nebude v pˇredmˇetu vyˇzadov´ana.)
3.4
Posloupnosti a rekurentn´ı vztahy
Uspoˇr´adan´e k-tice (Odd´ıl 3.2) jsou tak´e naz´yv´any koneˇcn´ymi posloupnostmi d´elky k, neboli seˇrazen´ımi prvk˚ u z dan´e nepr´azdn´e mnoˇziny hodnot (opakov´an´ı prvk˚ u je povoleno). Tento pohled lze pˇrirozenˇe zobecnit na nekoneˇcn´e posloupnosti, avˇsak mus´ıme s´ahnout k trochu pokroˇcilejˇs´ım pojm˚ um (viz tak´e Odd´ıl 4.1 o funkc´ıch):
N
Definice: Nekoneˇcn´a posloupnost p je funkc´ı z do sv´eho oboru hodnot H, neboli p : → H. Mimo funkˇcn´ıho“ z´apisu p(n) ˇcasto pouˇz´ıv´ame indexovou“ formu z´apisu ” ” funkˇcn´ı hodnoty pn .
N
Pozn´ amka: Oborem hodnot posloupnosti obvykle b´ yv´ a nˇejak´ a ˇc´ıseln´ a mnoˇzina, ale m˚ uˇze to b´ yt i jak´ akoliv jin´a mnoˇzina. Tak´e definiˇcn´ı obor posloupnosti m˚ uˇze zaˇc´ınat od nuly nebo i od jedniˇcky, jak je v aplikac´ıch potˇreba. •
Pˇr´ıklady posloupnost´ı: ∗ p0 = 0, p1 = 2, . . . , pi = 2i, . . . je posloupnost sud´ ych nez´aporn´ych ˇc´ısel.
∗ 3, 3.1, 3.14, 3.141, . . . je posloupnost postupn´ ych dekadick´ych rozvoj˚ u π. ∗ 1, −1, 1, −1, . . . je posloupnost urˇ cen´a vztahem pi = (−1)i , i ≥ 0.
∗ Pokud chceme stejnou posloupnost 1, −1, 1, −1, . . . zadat jako qi , i ≥ 1, tak ji
urˇc´ıme vzorcem qi = (−1)i−1 .
•
Posloupnost je rostouc´ı (ˇci klesaj´ıc´ı), pokud pn+1 > pn ( pn+1 < pn ) pro vˇsechna n.
Rekurentn´ı definice posloupnosti Slovem rekurentn´ı oznaˇcujeme takov´e definice (ˇci popisy), kter´e se v jist´ych bodech odvol´avaj´ı samy na sebe. (Uˇz jste se setkali s rekurz´ı“ pˇri programov´an´ı? A v´ıte, co ” znamen´a?) M´ısto nepˇrehledn´ych form´aln´ıch definic si rekurentn´ı vztahy uvedeme nˇekolika n´azorn´ymi uk´azkami. •
•
•
Zad´ame-li posloupnost pn vztahy p0 = 1 a pn = 2pn−1 pro n > 0, pak plat´ı pn = 2n pro vˇsechna n. Obdobnˇe m˚ uˇzeme zadat posloupnost qn vztahy q1 = 1 a qn = qn−1 + n pro n > 1. Potom plat´ı qn = 21 n(n + 1) pro vˇsechna n. Umˇeli byste toto dok´azat indukc´ı? Viz Pˇr´ıklad 2.8. Zn´am´a Fibonacciho posloupnost je zadan´a vztahy f1 = f2 = 1 a fn = fn−1 + fn−2 pro n > 2. Pˇ r´ıklad 3.10. Posloupnost f je zadan´a rekurentn´ı definic´ı f (0) = 3
a
f (n + 1) = 2 · f (n) + 1 25
pro vˇsechna pˇrirozen´a n. Urˇcete hodnotu f (n) explicitn´ım vzorcem v z´avislosti na n. ˇ sen´ı: V prvn´ı f´azi ˇreˇsen´ı takov´eho pˇr´ıkladu mus´ıme nˇejak uhodnout“ hledan´y Reˇ ” vzorec pro f (n). Jak? Zkus´ıme vypoˇc´ıtat nˇekolik prvn´ıch hodnot a uvid´ıme. . . f (1) f (2) f (3) f (4)
= = = =
2 · f (0) + 1 = 2 · 3 + 1 = 7 2 · f (1) + 1 = 2 · 7 + 1 = 15 2 · f (2) + 1 = 2 · 15 + 1 = 31 2 · f (3) + 1 = 2 · 31 + 1 = 63
Nepˇripom´ınaj´ı n´am tato ˇc´ısla nˇeco? Co tˇreba posloupnost 8 − 1, 16 − 1, 32 − 1, 64 − 1. . . ? Bystr´emu ˇcten´aˇri se jiˇz asi podaˇrilo uhodnout, ˇze p˚ ujde o mocniny dvou sn´ıˇzen´e o 1. Pˇresnˇeji, f (n) = 2n+2 − 1 (proˇc je exponent n + 2 ? inu proto, aby spr´avnˇe vyˇslo f (0)). Ve druh´e nesm´ıme ale zapomenout spr´avnost naˇseho vˇeˇstˇen´ı“ dok´azat, nejl´epe ” matematickou indukc´ı podle n. • B´ aze: f (0) = 20+2 − 1 = 4 − 1 = 3 plat´ı. •
Indukˇcn´ı krok: za vyuˇzit´ı indukˇcn´ıho pˇredpokladu f (n + 1) = 2 · f (n) + 1 = 2 · (2n+2 − 1) + 1 = 2 · 2n+2 − 2 + 1 = 2(n+1)+2 − 1,
coˇz tak´e plat´ı. Podle principu matematick´e indukce je nyn´ı dok´az´ano, ˇze pro zadanou rekurentn´ı posloupnost f plat´ı f (n) = 2n+2 − 1 pro vˇsechna pˇrirozen´a n. ✷ Navazuj´ıc´ı studium I kdyˇz jste se s “mnoˇzinami” setk´avali uˇz od z´akladn´ı ˇskoly, do matematick´e teorie mnoˇzin asi nahl´ednete na VSˇ poprv´e. Nezaleknˇete se na u ´vod formality vyjadˇrov´an´ı, kter´a je bohuˇzel nezbytn´a, a nauˇcte se s mnoˇzinami a relacemi dobˇre pracovat aspoˇ n na zde uk´azan´e naivn´ı u ´rovni koneˇcn´e teorie mnoˇzin. (Lehk´ y n´ ahled na obecnˇe nekoneˇcn´e mnoˇziny a jejich zd´ anliv´e paradoxy i informatick´e aplikace si uk´aˇzeme pozdˇeji v Lekci 12. . . ) D´ale si srovnejte pojem posloupnosti s pojmem funkce v Odd´ılu 4.1 a tak´e si pozdˇeji povˇsimnˇete bl´ızk´e koncepˇcn´ı podobnosti rekurentn´ıch definic s induktivn´ımi definicemi mnoˇzin a funkc´ı v Odd´ıle 6.5.
26
4
Relace a funkce, Ekvivalence ´ Uvod V n´ avaznosti na pˇredchoz´ı lekci si podrobnˇe rozebereme matematick´e formalismy relac´ı a funkc´ı. Na rozd´ıl od mnoˇzin, kter´e se v jist´e velmi naivn´ı formˇe objevuj´ı uˇz na z´akladn´ı ˇskole, se relac´ım v jejich abstraktn´ı podobˇe moc pozornosti ve v´ yuce nevˇenuje. Stejnˇe tak s pojmem funkce jste se jiˇz setkali na niˇzˇs´ıch stupn´ıch ˇskol, ale povˇetˇsinou jen ve spojen´ı s aritmetick´ ymi a analytick´ ymi funkcemi tvaru x + 1, x2 − y, ˇci sin x, 1 + cos x2 , atd. Jak uvid´ıte nyn´ı, pojmy relace i funkce jsou zcela abstraktn´ı a nev´aˇze se nˇe ˇz´adn´ y analytick´ y vzorec v´ ypoˇctu ˇci podobn´e. Pˇritom na pojem (zcela obecn´e) relace velmi brzo naraz´ı kaˇzd´ y informatik pˇri studiu dat a datab´ az´ı. Nen´ı to vˇsak jen oblast relaˇcn´ıch datab´ az´ı, ale i jin´a m´ısta informatiky, kde se obecn´e funkce a relace skr´ yvaj´ı ˇci pˇr´ımo explicitnˇe objevuj´ı. Nejˇcastˇeji se setk´ate s bin´ arn´ımi relacemi, napˇr´ıklad vˇzdy, kdyˇz rozdˇelujete objekty podle shodn´ ych“ znak˚ u (relace ekvivalence), nebo kdyˇz objekty mezi sebou porovn´av´ate“ ” ” ad´ an´ı). Na tyto dvˇe z´ akladn´ı oblasti se d´ ale zamˇeˇr´ıme. (relace uspoˇr´
C´ıle
´ Ukolem t´eto lekce je vybudovat matematick´ y apar´ at (koneˇcn´ ych) relac´ı, s prim´arn´ım zamˇeˇren´ım na funkce a bin´ arn´ı relace typu ekvivalence a uspoˇra´d´ an´ı. Ve vztahu k bin´ arn´ım relac´ım je zavedeno mnoˇzstv´ı pojm˚ u, kter´e jsou pozdˇeji uˇziteˇcn´e v r˚ uzn´ ych oblastech matematiky i informatiky. L´ atka pak plynule pokraˇcuje Lekc´ı 5.
4.1
Relace a funkce nad mnoˇ zinami
Vedle mnoˇzin dalˇs´ım d˚ uleˇzit´ym z´akladn´ım datov´ym typem“ matematiky jsou relace, ” kter´ym vzhledem k jejich mnohotv´arn´emu pouˇzit´ı v informatice vˇenujeme v´yznamnou pozornost v t´eto i dvou pˇr´ıˇst´ıch lekc´ıch. Definice 4.1. Relace mezi mnoˇzinami A1 , · · · , Ak , pro k ∈ je libovoln´a podmnoˇzina kart´ezsk´eho souˇcinu
N,
R ⊆ A1 × · · · × Ak . Pokud A1 = · · · = Ak = A, hovoˇr´ıme o k-´arn´ı relaci R na A. Speci´alnˇe tak mluv´ıme tˇreba o bin´arn´ı (k = 2), tern´arn´ı (k = 3) nebo un´arn´ı (k = 1) relaci. Koment´ aˇ r: Pˇr´ıklady relac´ı. ∗ {(1, a), (2, a), (2, b)} je relace mezi {1, 2, 3} a {a, b}.
N} je bin´arn´ı relace na N. {(i, j, i + j) | i, j ∈ N} je tern´ arn´ı relace na N. arn´ı relace na N. {3 · i | i ∈ N} je un´
∗ {(i, 2 · i) | i ∈ ∗ ∗
∗ Jak´ y v´ yznam vlastnˇe maj´ı un´ arn´ı a nul´ arn´ı relace na A? Uvˇedomme si, jak obecnˇe je relace definov´ana – jej´ı definice umoˇzn ˇuje podchytit skuteˇcnˇe libovoln´e vztahy“ mezi prvky t´eˇze i r˚ uzn´ ych mnoˇzin. V praxi se relace velmi ˇsiroce vyuˇz´ıvaj´ı ” tˇreba v relaˇcn´ıch datab´ az´ıch. . .
27
Funkce mezi mnoˇ zinami Za prvn´ı setk´an´ı s instancemi relac´ı se vˇetˇsinou d´a povaˇzovat pojem funkce. Pˇritom tradiˇcn´ı ˇskoln´ı“ pojet´ı funkce ji obvykle identifikuje s nˇejak´ym v´ypoˇcetn´ım (analytick´ym) ” pˇredpisem ˇci vzorcem. Pojem funkce je vˇsak daleko obecnˇejˇs´ı a zcela abstraktn´ı. aln´ı) funkce z mnoˇziny A do mnoˇziny B Definice 4.2. (Tot´ je relace f mezi A a B takov´a, ˇze pro kaˇzd´e x ∈ A existuje pr´avˇe jedno y ∈ B takov´e, ˇze (x, y) ∈ f . Mnoˇzina A se naz´yv´a definiˇcn´ı obor a mnoˇzina B obor hodnot funkce f . Koment´ aˇ r: Neform´alnˇe ˇreˇceno, ve funkci f je kaˇzd´e vstupn´ı“ hodnotˇe x pˇriˇrazena jed” noznaˇcnˇe v´ ystupn´ı“ hodnota y. (V obecn´e relaci poˇcty pˇriˇrazen´ ych“ dvojic neomezu” ” jeme. . . )
Na druhou stranu si vˇsimnˇete, ˇze definiˇcn´ı obor i obor hodnot jsou souˇc´ast´ı definice konkr´etn´ı funkce, neboli napˇr´ıklad v uk´azce je oborem hodnot B = {a, b, c, d}, pˇrestoˇze samotn´e c nen´ı hodnotou pro ˇz´ adn´ y vstup.
Znaˇ cen´ ı : M´ısto (x, y) ∈ f p´ıˇseme obvykle f (x) = y. Z´apis f : A → B ˇr´ık´a, ˇze f je funkce s definiˇcn´ım oborem A a oborem hodnot B. Funkc´ım se tak´e ˇr´ık´a zobrazen´ı. Koment´ aˇ r: Pˇr´ıklady funkc´ı jsou tˇreba n´ asleduj´ıc´ı. ∗ Definujeme funkci f : → pˇredpisem f (x) = x + 8. Pak f = {(x, x + 8) | x ∈ ∗
N N Definujeme funkci plus : N × N → N pˇredpisem plus(i, j) = i + j. Pak plus = {(i, j, i + j) | i, j ∈ N}.
N}.
Parci´ aln´ı funkce Definice: Pokud naˇsi Definici 4.2 uprav´ıme tak, ˇze poˇzadujeme pro kaˇzd´e x ∈ A nejv´yˇse jedno y ∈ B takov´e, ˇze (x, y) ∈ f , obdrˇz´ıme definici parci´aln´ı funkce z A do B. Koment´ aˇ r:
V parci´ aln´ı funkci f nemus´ı b´ yt pro nˇekter´e vstupn´ı“ hodnoty x funkˇcn´ı hodnota definov´ana ” (viz napˇr´ıklad f (2) v uveden´em obr´ azku).
Pro nedefinovanou hodnotu pouˇz´ıv´ame znak ⊥.
Koment´ aˇ r: N´asleduje nˇekolik pˇr´ıklad˚ u parci´ aln´ıch funkc´ı.
28
∗ Definujeme parci´ aln´ı funkci f :
Z → N pˇredpisem
f (x) = Tj. f = {(x, 3 + x) | x ∈
R R
N}.
3+x ⊥
jestliˇze x ≥ 0, jinak.
a bˇeˇzn´ ym analytick´ ym pˇredpisem f (x) = log x je jen parci∗ Tak´e funkce f : → dan´ ´aln´ı – nen´ı definov´ana pro x ≤ 0. ˇ jejich (ˇcesk´a) rodn´ ∗ Co je relace, pˇriˇrazuj´ıc´ı lidem v CR a ˇc´ısla?
4.2
Reprezentace koneˇ cn´ ych relac´ı
Oblast´ı, kde informatici nejˇcastˇeji potkaj´ı obecn´e relace, je bezesporu ukl´ad´an´ı dat. To proto, ˇze shromaˇzd’ovan´a data, stejnˇe jako relace, pˇredevˇs´ım sleduj´ı vztahy mezi objekty. Na druhou stranu je relaˇcn´ı datab´aze zcela obecnou uk´azkou reprezentace jak´ekoliv relace, kterou si ilustrujeme pˇr´ıkladem. Pˇ r´ıklad 4.3. Tabulka relaˇcn´ı datab´aze prezentuje obecnou relaci. Definujme n´asleduj´ıc´ı mnoˇziny ( element´arn´ı typy“) ” ∗ ZNAK = {a, · · · , z, A, · · · , Z, mezera}, ∗ CISLICE = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
D´ale definujeme tyto mnoˇziny ( odvozen´e typy“) ” ∗ JMENO = ZNAK15 , PRIJMENI = ZNAK20 ,
VEK = CISLICE3 ,
∈“ JMENO × PRIJMENI × VEK. ” Relaci typu“ ZAMESTNANEC pak lze reprezentovat tabulkou: ” ∗ ZAMESTNANEC
JMENO Jan Petr Pavel Stanislav
PRIJMENI Nov´ak Vichr Z´ıma Novotn´y
VEK 42 28 26 52
✷
Reprezentace bin´ arn´ıch relac´ı na mnoˇ zinˇ e Jistˇe ˇcten´aˇri uznaj´ı, ˇze zad´an´ı relace v´yˇctem jej´ıch sloˇzek nen´ı pro ˇclovˇeka (na rozd´ıl od poˇc´ıtaˇce) t´ım nejpˇr´ıjemnˇejˇs´ım zp˚ usobem. Je tedy pˇrirozen´e se pt´at, jak co nejn´azornˇeji takovou relaci, alespoˇ n v jej´ı nejˇcastˇejˇs´ı bin´arn´ı podobˇe, uk´azat. Znaˇ cen´ ı : Bin´arn´ı relaci R ⊆ M × M lze jednoznaˇcnˇe zn´azornit jej´ım grafem: • Prvky M zn´ azorn´ıme jako body v rovinˇe. •
Prvek (a, b) ∈ R zn´azorn´ıme jako orientovanou hranu ( ˇsipku“) z a do b. Je-li a = b, ” pak je touto hranou smyˇcka“ na a. ”
29
Koment´ aˇ r: Pozor, nejedn´ a se o grafy funkc´ı“ zn´ am´e z matematick´e anal´ yzy. ” Napˇr´ıklad mˇejme M = {a, b, c, d, e, f } a R = {(a, a), (a, b), (b, c), (b, d), (b, e), (b, f ), (d, c), (e, c), (f, c), (e, d), (e, f ), (f, b)}, pak: f s a s
s
e sd
s
b s
c
V pˇr´ıpadˇe, ˇze M je nekoneˇcn´a nebo velk´a“, m˚ uˇze b´yt reprezentace R jej´ım grafem ” nepraktick´a (z´aleˇz´ı tak´e na m´ıˇre pravidelnosti“ R). ” Znaˇ cen´ ı : Bin´arn´ı relaci R ⊆ M × M lze jednoznaˇcnˇe zapsat tak´e pomoc´ı matice relace – matice A typu M × M s hodnotami z {0, 1}, kde ai,j = 1 pr´avˇe kdyˇz (i, j) ∈ R. Koment´ aˇ r: f s a s
s
e sd
s
b
a b c d e f
→
s
c
4.3
1 0 0 0 0 0
1 0 0 0 0 1
0 1 0 1 1 1
0 1 0 0 1 0
0 1 0 0 0 0
0 1 0 =A 0 1 0
Vlastnosti bin´ arn´ıch relac´ı
Pro zaˇc´atek dalˇs´ıho matematick´eho v´ykladu relac´ı si v´yˇctem a doprovodn´ymi schematick´ymi obr´azky uvedeme pˇet z´akladn´ıch vlastnost´ı bin´arn´ıch relac´ı, kter´e n´as typicky v matematice zaj´ımaj´ı. Definice 4.4. •
Necht’ R ⊆ M × M. Bin´arn´ı relace R je
reflexivn´ı, pr´avˇe kdyˇz pro kaˇzd´e a ∈ M plat´ı (a, a) ∈ R; s
•
s
ireflexivn´ı, pr´avˇe kdyˇz pro kaˇzd´e a ∈ M plat´ı (a, a) 6∈ R; s
X
s
X
•
symetrick´a, pr´avˇe kdyˇz pro kaˇzd´e a, b ∈ M plat´ı, ˇze jestliˇze (a, b) ∈ R, pak tak´e (b, a) ∈ R; s b a s
•
antisymetrick´a, pr´avˇe kdyˇz pro kaˇzd´e a, b ∈ M plat´ı, ˇze jestliˇze (a, b), (b, a) ∈ R, pak a = b; a s
X
30
s
b
•
tranzitivn´ı, pr´avˇe kdyˇz pro kaˇzd´e a, b, c ∈ M plat´ı, ˇze jestliˇze (a, b), (b, c) ∈ R, pak tak´e (a, c) ∈ R. a b c s
s
s
N´asleduj´ı dva z´akladn´ı typy bin´arn´ıch relac´ı; kde R je • relace ekvivalence, pr´ avˇe kdyˇz je R reflexivn´ı, symetrick´a a tranzitivn´ı; •
ˇc´asteˇcn´e uspoˇr´ad´an´ı, pr´avˇe kdyˇz je R reflexivn´ı, antisymetrick´a a tranzitivn´ı (ˇcasto ˇr´ık´ame jen uspoˇr´ad´an´ı). Koment´ aˇ r: Pozor, m˚ uˇze b´ yt relace symetrick´a i antisymetrick´a z´aroveˇ n? Ano! Vezmˇete si relaci R = {(x, x) | x ∈ M }, kter´a obˇe jmenovan´e vlastnosti splˇ nuje. Proto pokud jste tˇreba dot´ az´ ani, zda relace je symetrick´a, nestaˇc´ı se v odpovˇedi odvol´avat na fakt, ˇze je antisymetrick´a(!), nebot’ tyto vlastnosti se nevyluˇcuj´ı. s
s
s
Pˇ r´ıklad 4.5. Nˇekolik pˇr´ıklad˚ u relac´ı definovan´ych v pˇrirozen´em jazyce. Necht’ M je mnoˇzina vˇsech student˚ u 1. roˇcn´ıku FI. Uvaˇzme postupnˇe relace R ⊆ M × M definovan´e takto ∗ (x, y) ∈ R pr´ avˇe kdyˇz x a y maj´ı stejn´e rodn´e ˇc´ıslo; ∗ (x, y) ∈ R pr´ avˇe kdyˇz x m´a stejnou v´yˇsku jako y (dejme tomu na cel´e mm); ∗ (x, y) ∈ R pr´ avˇe kdyˇz v´yˇska x a y se neliˇs´ı v´ıce jak o 2 mm; ∗ (x, y) ∈ R pr´ avˇe kdyˇz x m´a alespoˇ n takovou v´yˇsku jako y; ∗ (x, y) ∈ R pr´ avˇe kdyˇz x m´a jinou v´yˇsku neˇz y (dejme tomu na cel´e mm); ∗ (x, y) ∈ R pr´ avˇe kdyˇz x je zamilov´an(a) do y.
Zamyslete se podrobnˇe, kter´e z definovan´ych vlastnost´ı tyto jednotliv´e relace maj´ı. Kter´e z nich tedy jsou ekvivalenc´ı nebo uspoˇr´ad´an´ım? ✷ Pˇ r´ıklad 4.6. Jak´e vlastnosti maj´ı n´asleduj´ıc´ı relace? ∗ Bud’ R ⊆
ˇ asteˇcn´e uspoˇr´ad´an´ı, N×N definovan´a takto (x, y) ∈ R pr´avˇe kdyˇz x dˇel´ı y. (C´
∗ Bud’ R ⊆
N N
ale ne kaˇzd´a dvˇe ˇc´ısla jsou porovnateln´a.)
× definovan´a takto (x, y) ∈ R pr´avˇe kdyˇz x a y maj´ı stejn´y zbytek po dˇelen´ı ˇc´ıslem 5. (Ekvivalence.)
∗ Necht’ F = {f | f :
N
N
→ } je mnoˇzina funkc´ı. Bud’ R ⊆ F × F definovan´a takto (f, g) ∈ R pr´avˇe kdyˇz f (x) < g(x) pro vˇsechna x. (Ireflexivn´ı, antisymetrick´a a tranzitivn´ı, ale ne reflexivn´ı – striktnˇe ˇreˇceno nen´ı uspoˇr´ad´an´ım.) ✷
31
4.4
Relace ekvivalence
Nyn´ı se hloubˇeji pod´ıvejme na prvn´ı specifick´y typ bin´arn´ı relace zm´ınˇen´y v´yˇse: Podle Definice 4.4 je relace R ⊆ M × M ekvivalence pr´avˇe kdyˇz R je reflexivn´ı, symetrick´a a tranzitivn´ı. Tyto tˇri vlastnosti tedy mus´ı b´yt splnˇeny a ovˇeˇreny k d˚ ukazu toho, ˇze dan´a relace R je ekvivalence. Koment´ aˇ r: Jak vypad´a graf relace ekvivalence? Pomˇernˇe pˇr´ıznaˇcnˇe, jak n´ am ukazuje n´ asleduj´ıc´ı obr´ azek (vˇsimnˇete si absence ˇsipek, kter´a je d´ ana symetri´ı relace).
Neform´alnˇe ˇreˇceno; ekvivalence je relace R ⊆ M × M , takov´a, ˇze (x, y) ∈ R pr´ avˇe kdyˇz x a y jsou v nˇejak´em smyslu stejn´e“. ”
Znaˇ cen´ ı . V pˇr´ıpadˇe relace ekvivalence se nˇekdy lze setkat s pojmenov´an´ım jako ∼ ˇci ≈ m´ısto R. M´ısto (x, y) ∈ R se pak p´ıˇse x ≈ y. Pˇ r´ıklad 4.7. Necht’ M je mnoˇzina vˇsech student˚ u 1. roˇcn´ıku FI. Uvaˇzme postupnˇe relace R ⊆ M × M definovan´e n´asledovnˇe a zkoumejme, zda se jedn´a o ekvivalence:
∗ (x, y) ∈ R pr´ avˇe kdyˇz x m´a stejnou v´yˇsku jako y;
∗ (x, y) ∈ R pr´ avˇe kdyˇz x m´a stejnou barvu vlas˚ u jako y; ∗ (x, y) ∈ R pr´ avˇe kdyˇz x, y maj´ı stejnou v´yˇsku a stejnou barvu vlas˚ u; ∗ (x, y) ∈ R pr´ avˇe kdyˇz x, y maj´ı stejnou v´yˇsku nebo stejnou barvu vlas˚ u.
U kter´eho body se nejedn´a o relaci ekvivalence a proˇc? Je to posledn´ı pˇr´ıpad, kdy nen´ı splnˇena tranzitivita. ✷ Uveden´y pˇr´ıklad ukazuje na n´aaleduj´ıc´ı univerz´aln´ı poznatek, kter´y m˚ uˇze platit (a taky plat´ı) pouze pro pr˚ unik a nikoliv pro sjednocen´ı. Tvrzen´ı 4.8. Necht’ R, S jsou dvˇe relace ekvivalence na stejn´e mnoˇzinˇe M. Pak jejich pr˚ unik R ∩ S je opˇet relac´ı ekvivalence.
D˚ ukaz (n´aznak): Jelikoˇz reflexivita a symetrie je zˇrejm´a, staˇc´ı snadno ovˇeˇrit platnost tranzitivity na R ∩ S. Necht’ (a, b), (b, c) ∈ R ∩ S, pak podle tranzitivity kaˇzd´e samostatn´e z R, S plyne (a, c) ∈ R a z´aroveˇ n (a, c) ∈ S. ✷
N N
Pˇ r´ıklad 4.9. Necht’ R ⊆ × je bin´arn´ı relace definovan´a takto: (x, y) ∈ R pr´avˇe kdyˇz |x − y| je dˇeliteln´e tˇremi. V jak´em smyslu jsou zde x a y stejn´e“? D´avaj´ı stejn´y zbytek po dˇelen´ı tˇremi. ✷ ” Pˇ r´ıklad 4.10. Bud’ R bin´arn´ı relace mezi vˇsemi studenty na pˇredn´aˇsce FI: IB000 definovan´a takto: (x, y) ∈ R pr´avˇe kdyˇz x i y sed´ı v prvn´ı lavici. Uˇz na prvn´ı pohled“ jde o relaci symetrickou a tranzitivn´ı. Proˇc se v tomto pˇr´ıpadˇe ” nejedn´a o relaci ekvivalence? Protoˇze nen´ı reflexivn´ı pro studenty sed´ıc´ı v dalˇs´ıch lavic´ıch. (Takˇze si d´avejte dobr´y pozor na spr´avn´e pochopen´ı definic.) ✷ 32
4.5
Rozklady a jejich vztah k ekvivalenc´ım
N´apln´ı n´asleduj´ıc´ı ˇc´asti v´ykladu je uk´azat jin´y pˇrirozen´y pohled na ekvivalence. Tento nov´y pohled n´am matematicky formalizuje pˇredstavu ekvivalence jako rozdˇelen´ı prvk˚ u nosn´e mnoˇziny M na hrom´adky“, pˇriˇcemˇz prvky kaˇzd´e jednotliv´e hrom´adky jsou si ” navz´ajem v jist´em smyslu stejn´e“. ” ziny. Necht’ M je mnoˇzina. Definice 4.11. Rozklad mnoˇ Rozklad (na) M je mnoˇzina podmnoˇzin N ⊆ 2M splˇ nuj´ıc´ı n´asleduj´ıc´ı tˇri podm´ınky: – ∅ 6∈ N (tj. kaˇzd´y prvek N je nepr´azdn´a podmnoˇzina M); – pokud A, B ∈ N , pak bud’ A = B nebo A ∩ B = ∅; S – A∈N A = M. Prvk˚ um N se tak´e ˇr´ık´a tˇr´ıdy rozkladu.
Koment´ aˇ r: ∗ Bud’ M = {a, b, c, d}. Pak N = {{a}, {b, c}, {d}} je rozklad na M .
N
N
| k mod 3 = 0}, A1 = {k ∈ | k mod 3 = 1}, A2 = {k ∈ ∗ Necht’ A0 = {k ∈ | k mod 3 = 2}. Pak N = {A0 , A1 , A2 } je rozklad vˇsech pˇrirozen´ ych ˇc´ısel podle zbytkov´ ych tˇr´ıd.
N
N
Kaˇzd´y rozklad N na M jednoznaˇcnˇe urˇcuje jistou ekvivalenci RN na M: Vˇ eta 4.12. Necht’ M je mnoˇzina a N rozklad na M. Necht’ RN ⊆ M × M je relace na M definovan´a takto (x, y) ∈ RN pr´avˇe kdyˇz existuje A ∈ N takov´a, ˇze x, y ∈ A.
Pak RN je ekvivalence na M.
•
D˚ ukaz: Dok´aˇzeme, ˇze RN je reflexivn´ı, symetrick´a a tranzitivn´ı (Definice 4.4). Reflexivita: Bud’ x ∈ M libovoln´e. Jelikoˇz N je rozklad na M, mus´ı existovat A ∈ N takov´e, ˇze x ∈ A (jinak spor se tˇret´ı podm´ınkou z Definice 4.11). Proto (x, x) ∈ RN , tedy RN je reflexivn´ı.
•
Symetrie: Necht’ (x, y) ∈ RN . Podle definice RN pak existuje A ∈ N takov´a, ˇze x, y ∈ A. To ale znamen´a, ˇze tak´e (y, x) ∈ RN podle definice RN , tedy RN je symetrick´a.
•
Tranzitivita: Necht’ (x, y), (y, z) ∈ RN . Podle definice RN existuj´ı A, B ∈ N takov´e, ˇze x, y ∈ A a y, z ∈ B. Jelikoˇz A ∩ B 6= ∅, podle druh´e podm´ınky z Definice 4.11 plat´ı A = B. Tedy x, z ∈ A = B, proto (x, z) ∈ RN podle definice RN . ✷ Kaˇzd´a ekvivalence R na M naopak jednoznaˇcnˇe urˇcuje jist´y rozklad M/R na M:
Vˇ eta 4.13. Necht’ M je mnoˇzina a R ekvivalence na M. Pro kaˇzd´e x ∈ M definujeme mnoˇzinu [x] = {y ∈ M | (x, y) ∈ R} . Pak {[x] | x ∈ M} je rozklad na M, kter´y znaˇc´ıme M/R a ˇcteme rozklad M podle R“. ”
33
[c]
[h]
[d]
[g] [b]
M
• •
[e] [f ]
[a]
D˚ ukaz: Dok´aˇzeme, ˇze M/R splˇ nuje podm´ınky Definice 4.11. Pro kaˇzd´e [x] ∈ M/R plat´ı [x] 6= ∅, nebot’ x ∈ [x]. Necht’ [x], [y] ∈ M/R. Uk´aˇzeme, ˇze pokud [x] ∩ [y] 6= ∅, pak [x] = [y]. Jestliˇze [x] ∩ [y] 6= ∅, existuje z ∈ M takov´e, ˇze z ∈ [x] a z ∈ [y]. Podle definice [x] a [y] to znamen´a, ˇze (x, z), (y, z) ∈ R. Jelikoˇz R je symetrick´a a (y, z) ∈ R, plat´ı (z, y) ∈ R. Jelikoˇz (x, z), (z, y) ∈ R a R je tranzitivn´ı, plat´ı (x, y) ∈ R. Proto tak´e (y, x) ∈ R (opˇet ze symetrie R). Nyn´ı dok´aˇzeme, ˇze [y] = [x]: ∗ ∗
•
[x] ⊆ [y]“: Necht’ v ∈ [x]. Pak (x, v) ∈ R podle definice [x]. D´ale (y, x) ∈ R (viz v´ yˇse), ” tedy (y, v) ∈ R nebot’ R je tranzitivn´ı. To podle definice [y] znamen´a, ˇze v ∈ [y].
[y] ⊆ [x]“: Necht’ v ∈ [y]. Pak (y, v) ∈ R podle definice [y]. D´ale (x, y) ∈ R (viz v´ yˇse), ” tedy (x, v) ∈ R nebot’ R je tranzitivn´ı. To podle definice [x] znamen´a, ˇze v ∈ [x].
Plat´ı
S
[x]∈M/R [x]
= M, nebot’ x ∈ [x] pro kaˇzd´e x ∈ M.
✷
Navazuj´ıc´ı studium Mˇejte na pamˇeti, ˇze na pojmech mnoˇzin, relac´ı a funkc´ı jsou vystavˇeny prakticky vˇsechny skuteˇcn´e datov´e struktury pouˇz´ıvan´e v dneˇsn´ı informatice, coˇz m˚ uˇzete vidˇet na relaˇcn´ıch datab´ az´ıch (viz tak´e Lekce 6) a na ˇcasto se vyskytuj´ıc´ıch induktivn´ıch definic´ıch (Odd´ıl 6.5). S relacemi ekvivalence i jimi implicitnˇe definovan´ ymi rozklady mnoˇzin se lze setkat tam, kde nˇejak´e objekty “rozdˇelujeme do pˇrihr´adek” podle nˇejak´ ych sd´ılen´ ych znak˚ u nebo jin´ ych krit´eri´ı. Principy takov´ ych rozklad˚ u v´am zajist´e byly intuitivnˇe zn´ amy jeˇstˇe dˇr´ıve, neˇz jste v˚ ubec slyˇseli o matematick´em pojmu ekvivalence, v t´eto lekci jsme si je jen uvedli na form´aln´ıch z´ akladech. Toto form´ aln´ı pojet´ı relac´ı ekvivalence a rozklad˚ u budete potˇrebovat v r˚ uzn´ ych navazuj´ıc´ıch pˇredmˇetech, napˇr´ıklad u teorie automat˚ u.
34
5
Uspoˇ r´ adan´ e mnoˇ ziny, Uz´ avˇ ery ´ Uvod V t´eto lekci d´ ale pokraˇcujeme prob´ır´ an´ım bin´ arn´ıch relac´ı na mnoˇzin´ ach jako n´ astroj˚ u vyjadˇruj´ıc´ıch vztahy mezi objekty. Zamˇeˇrujeme se nyn´ı pˇredevˇs´ım na relace srovn´avaj´ıc´ı“ ” objekty podle jejich vlastnost´ı. Takto v´agnˇe opsan´e relace m´ıvaj´ı jasn´e spoleˇcn´e znaky, ad´ an´ı. N´aslednˇe se tak´e kter´e se objevuj´ı ve zde uveden´e form´aln´ı definici relace uspoˇr´ zab´ yv´ ame zp˚ usobem, jak libovolnou relaci obohatit“ o nˇejakou vlastnost. Tento u ´kol vede ” na rozˇsiˇrov´an´ı naˇs´ı relace (tj. pˇrid´ av´an´ı dvojic) do vzniku jej´ıho takzvan´eho uz´ avˇeru.
C´ıle Definujeme relace uspoˇra´d´ an´ı a mnoh´e dalˇs´ı pojmy k nim se vztahuj´ıc´ı, napˇr´ıklad Hasseovy diagramy. Studuj´ıc´ı by mˇeli porozumˇet matematick´e problematice uspoˇra´dan´ ych mnoˇzin a nauˇcit se je spr´avnˇe pouˇz´ıvat. Z´ avˇerem si uk´aˇzeme oper´ atory uz´ avˇer˚ u relac´ı.
5.1
Uspoˇ r´ ad´ an´ı a uspoˇ r´ adan´ e mnoˇ ziny
Podle Definice 4.4 je relace R ⊆ M ×M (ˇc´asteˇcn´e) uspoˇr´ad´an´ı pr´avˇe kdyˇz R je reflexivn´ı, antisymetrick´a a tranzitivn´ı. Tyto tˇri vlastnosti tedy mus´ı b´yt splnˇeny a ovˇeˇreny k d˚ ukazu toho, ˇze dan´a relace R je uspoˇr´ad´an´ım. Koment´ aˇ r: Neform´alnˇe ˇreˇceno: uspoˇra´d´ an´ı je takov´a relace R ⊆ M × M , kde (x, y) ∈ R pr´ avˇe kdyˇz x je v nˇejak´em smyslu menˇs´ı nebo rovno“ neˇz y. Mohou ovˇsem existovat takov´a ” x, y ∈ M , kde neplat´ı (x, y) ∈ R ani (y, x) ∈ R. (Pak ˇr´ık´ame, ˇze x a y jsou nesrovnateln´e.) Jak n´ azornˇe zobrazit (ˇc´ asteˇcn´e) uspoˇra´d´ an´ı? Pˇr´ıklad zjednoduˇsen´eho zakreslen´ı (jsou vynech´ any ˇsipky vypl´ yvaj´ıc´ı z reflexivity a tranzitivity, viz Odd´ıl 5.3) je zde:
Vˇsimnˇete si, ˇze je nˇekdy zvykem vˇetˇs´ı“ prvky kreslit nad ty menˇs´ı“. ” ”
Znaˇ cen´ ı . Pro vˇetˇs´ı pˇrehlednost se relace uspoˇr´ad´an´ı ˇcasto znaˇc´ı symboly jako ⊑ ˇci m´ısto prost´eho R. I my tak ˇcasto budeme ps´at tˇreba x y m´ısto (x, y) ∈ R. Pozn´ amka: Zajist´e jste se jiˇz neform´ alnˇe setkali s neostr´ ym“ uspoˇra´d´ an´ım ˇc´ısel ≤ a ostr´ ym“ ” ” uspoˇra´d´ an´ım < . Vˇsimnˇete si dobˇre, ˇze n´ ami definovan´e uspoˇra´d´ an´ı je vˇzdy neostr´e“. Pokud ” byste naopak chtˇeli definovat ostr´e“ uspoˇra´d´ an´ı, mˇelo by vlastnosti ireflexivn´ı, antisymetrick´e a ” tranzitivn´ı. (Pˇr´ıliˇs se vˇsak tato varianta nepouˇz´ıv´a.) Nad´ale budeme pracovat pouze s neostr´ ym uspoˇra´d´ an´ım, ale smyˇcky vypl´ yvaj´ıc´ı z reflexivity budeme pro vˇetˇs´ı pˇrehlednost v obr´ azc´ıch vynech´ avat.
35
Uspoˇ r´ adan´ a mnoˇ zina Matematicky d˚ uleˇzitˇejˇs´ım pojmem neˇz samotn´a relace uspoˇr´ad´an´ı je uspoˇr´adan´a mnoˇzina, neboli soubor prvk˚ u s pevnˇe zvolen´ym uspoˇr´ad´an´ım na nich. r´ adan´ a mnoˇ zina je dvojice (M, ), Definice 5.1. Uspoˇ kde M je mnoˇzina a je (ˇc´asteˇcn´e) uspoˇr´ad´an´ı na M. Definice: Uspoˇr´ad´an´ı na M je line´arn´ı (nebo tak´e u ´pln´e), pokud kaˇzd´e dva prvky M jsou v srovnateln´e. Pˇ r´ıklady uspoˇ r´ adan´ ych mnoˇ zin Pˇ r´ıklad 5.2. Necht’ M je mnoˇzina vˇsech student˚ u 1. roˇcn´ıku FI. Uvaˇzme postupnˇe relace uspoˇr´ad´an´ı R ⊆ M × M definovan´e n´asledovnˇe (jedn´a se vˇzdy o uspoˇr´ad´an´ı?):
∗ (x, y) ∈ R pr´ avˇe kdyˇz x m´a alespoˇ n takovou v´yˇsku jako y; ∗ (x, y) ∈ R pr´ avˇe kdyˇz y m´a alespoˇ n takovou v´yˇsku jako x; ∗ (x, y) ∈ R pr´ avˇe kdyˇz x a y maj´ı stejn´e rodn´e ˇc´ıslo.
Ano, i v posledn´ım bodˇe se jedn´a o uspoˇr´ad´an´ı! (Dobˇre si promyslete, proˇc. Kter´e dvojice jsou v˚ ubec porovnateln´e?) ✷ Pˇ r´ıklad 5.3. Dalˇs´ı uk´azky uspoˇr´adan´ych mnoˇzin n´asleduj´ı zde:
N ” elitelnosti a dˇel´ı b“ na pˇrirozen´ych ˇc´ıslech, je uspoˇr´adan´a ∗ (N, | ), kde a|b je relace dˇ ”
arnˇe uspoˇr´adan´a mnoˇzina, kde ≤ m´a obvykl´y“ v´yznam. ∗ ( , ≤) je line´ mnoˇzina. Toto uspoˇr´ad´an´ı nen´ı line´arn´ı.
∗ Bud’ M mnoˇ zina. Pak (2M , ⊆) je uspoˇr´adan´a mnoˇzina (ˇr´ık´ame inkluz´ı). Kter´e dvojice
jsou v uspoˇr´ad´an´ı inkluz´ı nesrovnateln´e?
✷ Koment´ aˇ r: Zamyslete se tak´e, jak vypad´a relace dˇelitelnosti na cel´ ych (tj. i z´aporn´ ych) ˇc´ıslech. Proˇc se uˇz nejedn´ a o uspoˇra´d´ an´ı? Bl´ıˇze viz konec Odd´ılu 5.2.
Uˇziteˇcnou dovednost´ı je umˇet popsat uspoˇr´ad´an´ı vˇetˇs´ı mnoˇziny“ pomoc´ı mal´ych“ ” ” sloˇzek. Neform´alnˇe lze toto uv´est n´asleduj´ıc´ımi pˇr´ıklady: Pˇ r´ıklad 5.4. Uspoˇr´ad´an´ı po sloˇzk´ach“. ” Necht’ (A, ≤A ) a (B, ≤B ) jsou uspoˇr´adan´e mnoˇziny. Definujme bin´arn´ı relaci ⊑ na A × B pˇredpisem (a, b) ⊑ (a′ , b′ )
pr´avˇe kdyˇz
a ≤A a′ a b ≤B b′ .
Pak (A × B, ⊑) je uspoˇr´adan´a mnoˇzina. Toto uspoˇr´ad´an´ı se naz´yv´a po sloˇzk´ach“. ” 36
✷
Pˇ r´ıklad 5.5. Lexikografick´e uspoˇr´ad´an´ı. Necht’ (A, ≤A ) a (B, ≤B ) jsou uspoˇr´adan´e mnoˇziny. Definujme bin´arn´ı relaci na A × B pˇredpisem (a, b) (a′ , b′ )
pr´avˇe kdyˇz
bud’ a ≤A a′ a a 6= a′ , nebo a = a′ a b ≤B b′ .
Pak (A×B, ) je uspoˇr´adan´a mnoˇzina. Nav´ıc pokud ≤A i ≤B jsou line´arn´ı, je i line´arn´ı. Toto uspoˇr´ad´an´ı se naz´yv´a lexikografick´e. ✷ Fakt: Jsou-li (A1 , ≤1 ), · · · , (An , ≤n ) uspoˇr´adan´e mnoˇziny, kde n ≥ 2, pak mnoˇzinu A1 × · · · × An lze uspoˇr´adat tˇreba po sloˇzk´ach nebo lexikograficky. Vˇsimnˇete si, ˇze lexikograficky se napˇr´ıklad ˇrad´ı slova ve slovn´ıku. . .
5.2
Dalˇ s´ı pojmy uspoˇ r´ adan´ ych mnoˇ zin
K t´ematu uspoˇr´adan´ych mnoˇzin se vztahuje mnoˇzstv´ı drobn´ych pojm˚ u, kter´e potk´ate v r˚ uzn´ych oblastech matematiky i informatiky. Definice 5.6. Necht’ (M, ) je uspoˇr´adan´a mnoˇzina. • x ∈ M je minim´ aln´ı pr´avˇe kdyˇz pro kaˇzd´e y ∈ M plat´ı, ˇze jestliˇze y x, pak x y. (Tj. x je minim´aln´ı pr´avˇe kdyˇz neexistuje ˇz´adn´y prvek ostˇre menˇs´ı neˇz x.) x s
Xs •
•
x ∈ M je maxim´aln´ı pr´avˇe kdyˇz pro kaˇzd´e y ∈ M plat´ı, ˇze jestliˇze x y, pak y x. (Tj. x je maxim´aln´ı pr´avˇe kdyˇz neexistuje ˇz´adn´y prvek ostˇre vˇetˇs´ı neˇz x.) x ∈ M je nejmenˇs´ı pr´avˇe kdyˇz pro kaˇzd´e y ∈ M plat´ı, ˇze x y. s
s
s
s
• •
x x ∈ M je nejvˇetˇs´ı pr´avˇe kdyˇz pro kaˇzd´e y ∈ M plat´ı, ˇze y x.
x ∈ M pokr´yv´a y ∈ M pr´avˇe kdyˇz x 6= y, y x a neexistuje ˇz´adn´e z ∈ M takov´e, ˇze x 6= z 6= y a y z x. x s s
X s
•
y x ∈ M je doln´ı z´avora (mez) mnoˇziny A ⊆ M pr´avˇe kdyˇz x y pro kaˇzd´e y ∈ A. y∈A
s
•
x x ∈ M je horn´ı z´avora (mez) mnoˇziny A ⊆ M pr´avˇe kdyˇz y x pro kaˇzd´e y ∈ A. 37
•
x ∈ M je infimum mnoˇziny A ⊆ M pr´avˇe kdyˇz x je nejvˇetˇs´ı doln´ı z´avora mnoˇziny A. A
s •
x ∈ M je supremum mnoˇziny A ⊆ M, pr´avˇe kdyˇz x je nejmenˇs´ı horn´ı z´avora mnoˇziny A.
•
A ⊆ M je ˇretˇezec v uspoˇr´ad´an´ı pr´avˇe kdyˇz (A, ) je line´arnˇe uspoˇr´adan´a mnoˇzina. s s s s
Koment´ aˇ r: Tuto dlouhou definici se sluˇs´ı ponˇekud neform´ alnˇe okomentovat. Za prv´e, s pojmy nejmenˇs´ıho a nejvˇetˇs´ıho prvku jste se uˇz intuitivnˇe setkali mnohokr´ at, ale (matematicky slabˇs´ı) pojmy minim´aln´ıho a maxim´aln´ıho p˚ usob´ı nˇekdy probl´emy. Zapamatujte si proto dobˇre, ˇze minim´aln´ıch prvk˚ u m˚ uˇze m´ıt mnoˇzina nˇekolik, jsou to prostˇe vˇsechny ty “vespod”, ale nejmenˇs´ı prvek existuje nejv´ yˇse jeden a je to pouze ten unik´atn´ı minim´aln´ı prvek mnoˇziny. Stejnˇe pro maxim´ aln´ı. . . Dalˇs´ı pozn´ amka se vztahuje k infimu a supremu mnoˇziny. Jak jsme napsali (a asi tot´eˇz zn´ ate z matematick´e anal´ yzy), mnoˇzina nemus´ı m´ıt nejmenˇs´ı ani nejvˇetˇs´ı prvek, ale v mnoha pˇr´ıpadech je lze “nahradit” po ˇradˇe infimem a supremem, kter´e hraj´ı v jist´ ych ohledech podobnou roli. Avˇsak ani supremum a infimum nemus´ı vˇzdy existovat. Pozor! Nˇekter´e uveden´e definice maj´ı dosti netrivi´aln´ı chov´an´ı“ na nekoneˇcn´ ych ” mnoˇzin´ ach. Proto je budeme obvykle uvaˇzovat jen nad koneˇcn´ ymi mnoˇzinami.
Pˇ r´ıklad 5.7. Proˇc m´a kaˇzd´a uspoˇr´adan´a mnoˇzina nejv´yˇse jeden nejvˇetˇs´ı prvek? Tvrzen´ı dok´aˇzeme sporem: Necht’ m i n jsou nejvˇetˇs´ı prvky uspoˇr´adan´e mnoˇziny n. Ovˇsem jelikoˇz uspoˇr´ad´an´ı (M, ). Pak podle Definice 5.6 plat´ı n m i m n z´aroveˇ mus´ı b´yt antisymetrick´e, pak plat´ı m = n a nejvˇetˇs´ı prvek je jen jeden. ✷ Relace pˇ reduspoˇ r´ ad´ an´ı Mimo uspoˇr´ad´an´ı ch´apan´ych striktnˇe antisymetricky se v praxi ˇcasto setk´ame s sko” rouspoˇr´ad´an´ımi“, ve kter´ych nˇekter´e oˇcividnˇe r˚ uzn´e prvky stoj´ı na stejn´e u ´ rovni naˇs´ı preference. Jak tˇreba uspoˇr´ad´ate r˚ uzn´e poˇc´ıtaˇce podle v´ykonu nebo studenty podle zn´amek A–E? To matematicky podchyt´ı n´asleduj´ıc´ı pojem. Definice: Relace R ⊆ M × M je pˇreduspoˇr´ad´an´ı (tak´e kvaziuspoˇr´ad´an´ı, nebo polouspoˇr´ad´an´ı) pr´avˇe kdyˇz R je reflexivn´ı a tranzitivn´ı. Koment´ aˇ r: Rozd´ıl mezi uspoˇra´d´ an´ım a pˇreduspoˇra´d´ an´ım je (neform´ alnˇe ˇreˇceno!) v tom, ˇze u pˇreduspoˇra´d´ an´ı srovn´av´ame prvky podle krit´eria, kter´e nen´ı pro dan´ y prvek jedineˇcn´e. V pˇreduspoˇra´d´ an´ı takto mohou vznikat bal´ıky“ (tˇr´ıdy) se stejnou hodnotou krit´eria, coˇz ”
38
schematicky ilustrujeme na n´ asleduj´ıc´ım obr´ azku. s
s s
s
s
s
s s
s
s
D˚ uleˇzit´ym poznatkem je, ˇze pˇreduspoˇr´ad´an´ı se aˇz tak moc“ neliˇs´ı od dˇr´ıvˇejˇs´ıho ” uspoˇr´ad´an´ı – pˇrirozenˇe totiˇz odvod´ıme n´asleduj´ıc´ı: Vˇ eta 5.8. Je-li ⊑ pˇreduspoˇr´ad´an´ı na M, m˚ uˇzeme definovat relaci ∼ na M pˇredpisem x∼y
pr´avˇe kdyˇz
x ⊑ y a y ⊑ x.
Pak ∼ je ekvivalence na M, kter´a se naz´yv´a j´adro pˇreduspoˇr´ad´an´ı ⊑. Na rozkladu M/ ∼ pak lze zav´est relaci definovanou takto [x] [y]
pr´avˇe kdyˇz x ⊑ y.
Pak (M/ ∼, ) je uspoˇr´adan´a mnoˇzina indukovan´a ⊑. Koment´ aˇ r: Pro uk´azku si vezmˇeme relaci dˇelitelnosti na jsou dvojice ˇc´ısel stejn´e absolutn´ı hodnoty.
Z. Pak tˇreba −2 ∼ 2. J´adrem zde
D˚ ukaz (n´aznak): Tranzitivita a reflexivita relace ∼ vypl´yv´a z tranzitivity a reflexivity relace ⊑. Symetrie ∼ pak je pˇr´ım´ym d˚ usledkem jej´ı definice. Tud´ıˇz ∼ skuteˇcnˇe je relac´ı ekvivalence a M/ ∼ je platn´y rozklad nosn´e mnoˇziny. Tranzitivita a reflexivita relace se opˇet dˇed´ı z relace ⊑. Jej´ı antisymetrie vypl´yv´a n´asleduj´ıc´ı u ´ vahou: Pokud [x] [y] a [y] [x], pak podle naˇs´ı definice x ⊑ y a y ⊑ x, neboli x ∼ y a [x] = [y] podle definice tˇr´ıd rozkladu. Pozor, nejd˚ uleˇzitˇejˇs´ı ˇc´ast´ı t´eto vˇetve d˚ ukazu je vˇsak jeˇstˇe zd˚ uvodnˇen´ı, ˇze naˇse podan´a definice vztahu [x] [y] je korektn´ı, coˇz znamen´a, ˇze jej´ı platnost nez´avis´ı na konkr´etn´ı volbˇe reprezentant˚ u x z [x] a y z [y]. ′ ′ Posledn´ı zm´ınˇen´e tvrzen´ı dok´aˇzeme sporem: Necht’ x, x ∈ [x] a y, y ∈ [y] jsou (moˇzn´a r˚ uzn´ı) reprezentanti dvou zkouman´ych tˇr´ıd rozkladu M/ ∼, pro kter´e vˇsak plat´ı x ⊑ y a x′ ⊒ y ′ . Podle definice tˇr´ıdy rozkladu je x ∼ y a x′ ∼ y ′ a z tranzitivity x ⊑ y ⊑ y ′ ⊑ x′ ⊑ x a tud´ıˇz [x] = [y] a na volbˇe reprezentanta skuteˇcnˇe nez´aleˇz´ı. ✷
5.3
Hasseovsk´ e diagramy
Motivac´ı zaveden´ı tzv. Hasseovsk´ych diagram˚ u uspoˇr´adan´ych mnoˇzin jsou pˇrehlednˇejˇs´ı obr´azky“ neˇz u graf˚ u relac´ı. Napˇr´ıklad si srovnejte n´asleduj´ıc´ı uk´azky: ”
Definice: Hasseovsk´y diagram koneˇcn´e uspoˇr´adan´e mnoˇziny (M, ) je jeho (jednoznaˇcn´e) grafick´e zn´azornˇen´ı z´ıskan´e takto: 39
∗ Do prvn´ı horizont´ aln´ı vrstvy“ zakresl´ıme body odpov´ıdaj´ıc´ı minin´aln´ım prvk˚ um
” (M, ). (Tj. kter´e nepokr´yvaj´ı nic. Pojem pokr´yv´an´ı prvku najdete v Definici 5.6.)
∗ M´ ame-li jiˇz zakreslenu vrstvu i, pak do vrstvy i + 1 (kter´a je nad“ vrstvou i) za-
” kresl´ıme vˇsechny nezakreslen´e prvky, kter´e pokr´yvaj´ı pouze prvky vrstev ≤ i. Pokud prvek x vrstvy i + 1 pokr´yv´a prvek y vrstvy ≤ i, spoj´ıme x a y neorientovanou hranou (tj. ˇc´arou“). ” Pˇ r´ıklad 5.9. Relaci inkluze na ˇctyˇrprvkov´e mnoˇzinˇe {a, b, c, d} zakresl´ıme Hasseovsk´ym diagramem takto:
✷ Koment´ aˇ r: Jak vid´ıme, v Hasseovsk´em diagramu vynech´ av´ame“ ty hrany relace , kter´e ” vypl´ yvaj´ı z reflexivity ˇci tranzitivity. To cel´ y obr´ azek v´ yraznˇe zpˇrehledn´ı, a pˇritom nedoch´ az´ı ke ztr´ atˇe informace. Lze vynechat i ˇsipky na hran´ach, nebot’ dle definice vˇsechny m´ıˇr´ı vzh˚ uru“. Tak´e pojem vrstvy“ v definici je jen velmi neform´ aln´ı, d˚ uleˇzit´e je, ˇze vˇetˇs´ı ” ” (pokr´ yvaj´ıc´ı) prvky jsou nad menˇs´ımi (pokr´ yvan´ ymi).
5.4
Uz´ avˇ ery relac´ı
Posledn´ım bodem naˇseho v´ykladu je postup, jak danou relaci m˚ uˇzeme obohatit“ o zv” olenou vlastnost (napˇr´ıklad proto, ˇze naˇse data o relaci jsou ne´ upln´a a vlastnost je tak poˇskozena). ˇ a, Definice: Bud’ V (nˇejak´a) vlastnost bin´arn´ıch relac´ı. Rekneme, ˇze V je uzav´ırateln´ pokud splˇ nuje n´asleduj´ıc´ı podm´ınky: ∗ Pro kaˇ zdou mnoˇzinu M a kaˇzdou relaci R ⊆ M × M existuje alespoˇ n jedna relace S ⊆ M × M, kter´a m´a vlastnost V a pro kterou plat´ı R ⊆ S. ∗ Necht’ I jeT mnoˇzina a necht’ Ri ⊆ M ×M je relace maj´ıc´ı vlastnost V pro kaˇzd´e i ∈ I.
Pak relace
i∈I
Ri m´a vlastnost V .
Fakt: Libovoln´a kombinace vlastnost´ı reflexivita, symetrie, tranzitivita je uzav´ırateln´a vlastnost. Antisymetrie nen´ı uzav´ırateln´a vlastnost.
Vˇ eta 5.10. Necht’ V je uzav´ırateln´a vlastnost bin´arn´ıch relac´ı. Bud’ M mnoˇzina a R libovoln´a bin´arn´ı relace na M. Pak pro mnoˇzinu vˇsech relac´ı S ⊇ R na M maj´ıc´ıch vlastnost V existuje infimum RV (vzhledem k mnoˇzinov´e inkluzi), kter´e samo m´a vlastnost V . Definice: Tuto nejmenˇs´ı“ relaci RV s vlastnost´ı V naz´yv´ame V -uz´avˇer relace R. ” Tvrzen´ı 5.11. Necht’ R je bin´arn´ı relace na M. Pak plat´ı n´asleduj´ıc´ı poznatky. avˇer R je pˇresnˇe relace R ∪ {(x, x) | x ∈ M}. ∗ Reflexivn´ı uz´ 40
↔
∗ Symetrick´ y uz´avˇer R je pˇresnˇe relace R= {(x, y) | (x, y) ∈ R nebo (y, x) ∈ R}. ∗ Tranzitivn´ı uz´ avˇer R je pˇresnˇe relace R+ =
kaˇzdou bin´arn´ı relaci S vr´at´ı relaci
S∞
i=1
T i (R), kde T je funkce, kter´a pro
T (S) = S ∪ {(x, z) | existuje y takov´e, ˇze (x, y), (y, z) ∈ S}
aTi=T · · ◦ T} je i-kr´at iterovan´a aplikace funkce T . | ◦ ·{z i
∗ Reflexivn´ı a tranzitivn´ı uz´ avˇer R je pˇresnˇe relace R∗ = Q+ , kde Q je reflexivn´ı uz´avˇer
R.
∗ Reflexivn´ı, symetrick´ y a tranzitivn´ı uz´avˇer R (tj. nejmenˇs´ı ekvivalence obsahuj´ıc´ı R) ↔
je pˇresnˇe relace (Q)+ , kde Q je reflexivn´ı uz´avˇer R.
∗ Na poˇrad´ı aplikov´ an´ı uz´avˇer˚ u vlastnost´ı z´aleˇz´ı! Koment´ aˇ r: V´ yznam reflexivn´ıch a symetrick´ ych uz´ avˇer˚ u je z pˇredchoz´ıho docela zˇrejm´ y. V´ yznam tranzitivn´ıho uz´ avˇeru R+ je n´ asledovn´ y: Do R+ pˇrid´ ame vˇsechny ty dvojice (x, z) takov´e, ˇze v R se lze dostat po ˇsipk´ach“ z x do z. Nakreslete si to na pap´ır pro nˇejakou ” jednoduchou relaci, abyste v´ yznam tranzitivn´ıho uz´ avˇeru l´epe pochopili.
s
s
s
s
s
s
s
s
A jak bylo dˇr´ıve ˇreˇceno, antisymetrick´ y uz´ avˇer relace prostˇe nem´ a smysl. Napˇr´ıklad bud’ ∗ R ⊆ × definovan´ a takto: R = {(i, i+ 1) | i ∈ }. Pak R je bˇeˇzn´e line´ arn´ı uspoˇra´d´ an´ı ≤ pˇrirozen´ ych ˇc´ısel.
N N
N
Pˇ r´ıklad 5.12. Proˇc S pˇri v´ypoˇctu tranzitivn´ıho uz´avˇeru relace na koneˇcn´e mnoˇzinˇe i + zdy staˇc´ı uvaˇzovat koneˇcnˇe mnoho ˇclen˚ u tohoto podle vzorce R = ∞ i=1 T (R) vˇ sjednocen´ı? Pro odpovˇed’ si uvˇedomme z´asadn´ı fakt — pokud T i+1 = T i , tak uˇz plat´ı T i+k = T i pro vˇsechna pˇrirozen´a k. Neboli je potˇreba sjednotit jen tolik prvn´ıch ˇclen˚ u, dokud se ony zvˇetˇsuj´ı“, coˇz m˚ uˇze nastat jen koneˇcnˇe kr´at nad koneˇcnou mnoˇzinou. Mimo jin´e tak ” vid´ıme, ˇze uveden´y popis tranzitivn´ıho uz´avˇeru je konstruktivn´ı. ✷ Rozˇ siˇ ruj´ıc´ı studium I v t´eto lekci se pojedn´ av´a o l´ atce, kterou urˇcitˇe ˇcten´ aˇri na inuitivn´ı u ´rovni znaj´ı (vˇzdy umˇen´ı si vˇeci uspoˇra´dat“ je jednou ze z´akladn´ıch lidsk´ ych dovednost´ı). Pˇresto spr´avn´e ” matematick´e uchopen´ı podstaty uspoˇra´d´ an´ı vyˇzaduje se prokousat nˇekolika nesnadn´ ymi form´aln´ımi definicemi. Vˇsimnˇete si, ˇze hlavn´ı tˇeˇzkosti pojmu uspoˇra´dan´e mnoˇziny se vztahuj´ı k ˇc´ asteˇcn´ ym, tedy ne-line´ arn´ım, uspoˇra´d´ an´ım, kdy bˇeˇzn´emu lidsk´emu uvaˇzov´an´ı nen´ı zcela intuitivnˇe jasn´e nakl´ad´ an´ı s nesrovnateln´ ymi dvojicemi. Ostatnˇe to dobˇre zn´ ate ze ˇzivota, kdy seˇrazujete objekty (v´ yrobky, apod) podle v´ıce krit´eri´ı a pˇrirozenˇe tak vyvst´avaj´ı nesrovnateln´e dvojice.
41
6
Skl´ ad´ an´ı relac´ı a funkc´ı ´ Uvod Vrat’me se nyn´ı k l´ atce Lekce 3. Z jej´ıho pokroˇcil´eho obsahu jsme doposud velmi detailnˇe prob´ırali relace a jejich jednotliv´e vlastnosti. Nyn´ı se pod´ıvejme, jak lze relace mezi sebou skl´ adat, coˇz je napˇr´ıklad z´ akladn´ı technika pr´ ace s relaˇcn´ımi datab´ azemi. Je vˇsak i jin´e m´ısto, kde jste se zajist´e se skl´ad´ an´ım relac´ı setkali – jedn´ a se o skl´ad´ an´ı funkc´ı. Jak napˇr´ıklad spoˇc´ıt´ate na kalkulaˇcce v´ ysledek sloˇzitˇejˇs´ıho vzorce? Mimo to se jeˇstˇe zobecnˇenˇe vr´at´ıme k problematice postupn´ ych“ (induktivn´ıch a ” u. Jedn´a se vlastnˇe o matematick´e analogie rekurzivn´ıch prorekurentn´ıch) definic a vztah˚ gram˚ u a jejich spr´avn´e form´ aln´ı pochopen´ı ocen´ıme mimo jin´e i pˇri programov´an´ı samotn´em.
C´ıle V t´eto lekci definujeme z´ akladn´ı vlastnosti funkc´ı a pˇredevˇs´ım pop´ıˇseme a podrobnˇe rozebereme skl´ad´ an´ı relac´ı a n´ avaznˇe skl´ad´ an´ı funkc´ı jako relac´ı (jako model n´ am poslouˇz´ı permutace). Na z´ avˇer se struˇcnˇe pod´ıv´ame na problematiku induktivn´ıch definic funkc´ı, coby na rozˇs´ıˇren´ı rekurentn´ıch vztah˚ u z Odd´ılu 3.4.
6.1
Vlastnosti funkc´ı
Funkce je podle Definice 4.2 speci´aln´ım pˇr´ıpadem (obvykle bin´arn´ı) relace, maj´ıc´ım pro kaˇzdou hodnotu lev´e strany jedinou (funkˇcn´ı) hodnotu prav´e strany. V´ıce o funkc´ıch ˇrekne n´asleduj´ıc´ı definice. Definice 6.1. Funkce (pˇr´ıpadnˇe parci´aln´ı funkce) f : A → B je
e prost´a) pr´avˇe kdyˇz pro kaˇzd´e x, y ∈ A, x 6= y plat´ı f (x) 6= f (y); ∗ injektivn´ı (nebo tak´ s
s
X
s
s
∗ surjektivn´ı (nebo tak´ e na“) pr´avˇe kdyˇz pro kaˇzd´e y ∈ B existuje x ∈ A takov´e, ˇze
f (x) = y;
”
s
s
s
Xs
∗ bijektivn´ı (vz´ aj. jednoznaˇcn´a) pr´avˇe kdyˇz je injektivn´ı a souˇcasnˇe surjektivn´ı. s s s
s s s
Funkce n´as coby speci´aln´ı pˇr´ıpad relac´ı budou prov´azet i ve zbytku lekce. Koment´ aˇ r: N´asleduj´ı jin´e uk´azky vlastnost´ı funkc´ı. ∗ Funkce plus :
N × N → N je surjektivn´ı, ale nen´ı prost´a. 42
∗ Funkce g :
Z → N dan´a pˇredpisem g(x) =
je bijektivn´ı.
−2x − 1 2x
jestliˇze x < 0, jinak
∗ Funkce ∅ : ∅ → ∅ je bijektivn´ı. ∗ Funkce ∅ : ∅ → {a, b} je injektivn´ı, ale nen´ı surjektivn´ı. ∗ Dok´ azali byste nal´ezt bijektivn´ı funkci
6.2
N × N → N?
Inverzn´ı relace a skl´ ad´ an´ı relac´ı
K pouˇziteln´e pr´aci s relacemi v aplikac´ıch se dostaneme, pokud budeme umˇet relace spr´avnˇe skl´adat“ a pˇrevracet“. K tomu n´as pˇrivedou zase n´asleduj´ıc´ı definice. ” ” ’ Definice: Necht R ⊆ A × B je bin´arn´ı relace mezi A a B. Inverzn´ı relace k relaci R se znaˇc´ı R−1 a je definov´ana takto: R−1 = {(b, a) | (a, b) ∈ R} s
A
s
R:
s
B
A s
B s
s
s
s
R−1 :
s
s
R−1 je tedy relace mezi B a A. Koment´ aˇ r: Pˇr´ıklady inverz´ı pro relace–funkce. ∗ Inverz´ı bijektivn´ı funkce f (x) = x + 1 na
Z je funkce f −1(x) = x − 1.
R je parci´aln´ı funkce f −1(x) = ln x. Funkce g(x) = x mod 3 nen´ı prost´a na N, a proto jej´ı inverz´ı je jen“ relace g−1 = {(a, b) | ”
∗ Inverz´ı prost´e funkce f (x) = ex na ∗
a = b mod 3}. Konkr. g−1 = {(0, 0), (0, 3), (0, 6), . . . , (1, 1), (1, 4), . . . , (2, 2), (2, 5), . . . }.
Tvrzen´ı 6.2. Mˇejme funkci f : A → B. Pak jej´ı inverzn´ı relace f −1 je
a) parci´aln´ı funkce pr´avˇe kdyˇz f je prost´a, b) funkce pr´avˇe kdyˇz f je bijektivn´ı.
D˚ ukaz vypl´yv´a pˇr´ımo z definic funkce a inverze relace.
✷
N´asleduje kl´ıˇcov´a definice, pro jejiˇz bliˇzˇs´ı ilustraci odkazujeme tak´e na Pˇr´ıklad 6.4. zen´ı (kompozice) relac´ı R a S. Definice 6.3. Sloˇ Necht’ R ⊆ A × B a S ⊆ B × C jsou bin´arn´ı relace. Sloˇzen´ı relac´ı R a S (v tomto poˇrad´ı!) je relace S ◦ R ⊆ A × C definovan´a takto: S ◦ R = {(a, c) | existuje b ∈ B takov´e, ˇze (a, b) ∈ R, (b, c) ∈ S} 43
B s
s
s
s
s
s
s
s
s
A
C
s
S ◦ R:
:S
R:
A
s
s
s
s
s
C
Sloˇzen´ı relac´ı ˇcteme R sloˇzeno s S“ nebo (pozor na poˇrad´ı!) S po R“. ” ” Koment´ aˇ r: Nˇekolik matematick´ ych pˇr´ıklad˚ u skl´ad´ an´ı relac´ı n´ asleduje zde. ∗ Je-li – A = {a, b}, B = {1, 2}, C = {X, Y }, – R = {(a, 1), (b, 1), (b, 2)},
S = {(1, X)},
pak sloˇzen´ım vznikne relace – S ◦ R = {(a, X), (b, X)}.
∗ Sloˇzen´ım funkc´ı h(x) = x2 a f (x) = x + 1 na
R vznikne funkce
(f ◦ h) (x) = f (h(x)) = x2 + 1. ∗ Sloˇzen´ım tˇechˇze funkc´ı naopak“ ale vznikne funkce (h ◦ f ) (x) = h(f (x)) = (x + 1)2 . ” Pozn´ amka: Nepˇr´ıjemn´e je, ˇze v nˇekter´ ych oblastech matematiky (napˇr´ıklad v algebˇre pˇri skl´ad´ an´ı zobrazen´ı) se setk´ame s pr´ avˇe opaˇcn´ ym z´apisem skl´ad´ an´ı, kdy se m´ısto S ◦ R p´ıˇse R · S nebo jen RS. Proto je si vˇzdy dobr´e slovnˇe ujasnit, kter´e poˇrad´ı skl´adan´ ych relac´ı m´ ame na mysli. My zde z´asadnˇe budeme pouˇz´ıvat poˇrad´ı S ◦ R.
6.3
Skl´ ad´ an´ı relac´ı v praxi“ ”
Pod´ıvejme se nyn´ı, jak se skl´ad´an´ı relac´ı pˇrirozenˇe objevuje v pr´aci s relaˇcn´ımi datab´azemi. (D´a se zjednoduˇsenˇe ˇr´ıci, ˇze pr´avˇe v oper´atoru skl´ad´an´ı tabulkov´ych relac´ı tkv´ı hlavn´ı smysl relaˇcn´ıch datab´az´ı. . . ) Pˇ r´ıklad 6.4. Skl´ad´an´ı v relaˇcn´ı datab´azi student˚ u, jejich pˇredmˇet˚ u a fakult. Mˇejme dvˇe bin´arn´ı relace – jednu R pˇriˇrazuj´ıc´ı student˚ um MU k´ody jejich zapsan´ych pˇredmˇet˚ u, druhou S pˇriˇrazuj´ıc´ı k´ody pˇredmˇet˚ u jejich mateˇrsk´ym fakult´am. Mal´y v´ysek z tˇechto relac´ı m˚ uˇze v tabulkov´e reprezentaci vypadat tˇreba n´asledovnˇe.
R:
student (uˇco) 121334 133935 133935 155878 155878
pˇredmˇet (k´od) MA010 M4135 IA102 M1050 IB000
S:
pˇredmˇet (k´od) MA010 IB000 IA102 M1050 M4135
fakulta MU FI FI FI PˇrF PˇrF
Jak z tˇechto tabulkov´ych“ relac´ı zjist´ıme, kteˇr´ı studenti maj´ı zapsan´e pˇredmˇety na ” kter´ych fakult´ach (tˇreba na FI)?
44
Jedn´a se jednoduˇse o sloˇzen´ı relac´ı S ◦ R. V naˇsem pˇr´ıkladˇe tabulkov´e reprezentace vyjde v´ysledek: student (uˇco) fakulta MU 121334 FI 133935 FI S◦R: 133935 PˇrF 155878 FI 155878 PˇrF ✷ Zobecnˇ en´ e skl´ ad´ an´ı relac´ı V praktick´ych pouˇzit´ıch relaˇcn´ıch tabulek povˇetˇsinou nevystaˇc´ıme jen s bin´arn´ımi relacemi, takˇze je pˇrirozen´e se pt´at, jestli lze podobnˇe skl´adat i v´ıce-´arn´ı relace. Odpovˇed’ je snadn´a – lze to a ani nepotˇrebujeme novou definici, vystaˇc´ıme s tou, kterou uˇz m´ame v´yˇse uvedenou. Definice: (skl´ ad´ an´ı relac´ı vyˇ sˇ s´ı arity): Mˇejme relace T ⊆ K1 × K2 × · · · × Kk a U ⊆ L1 × L2 × · · · × Lℓ , pˇriˇcemˇz pro nˇejak´e m < min(k, ℓ) plat´ı L1 = Kk−m+1 , L2 = Kk−m+2 , . . . , Lm = Kk . Pak relaci T lze sloˇzit s relac´ı U na zvolen´ych m sloˇzk´ach L1 , . . . , Lm ( pˇrekryt´ı“) s pouˇzit´ım Definice 6.3 takto: ” ∗ Poloˇ zme A = K1 × · · · × Kk−m , B = L1 × · · · × Lm a C = Lm+1 × · · · × Lℓ . ∗ Pˇr´ısluˇsn´ e 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ˇrirozenˇ e poloˇzme U ◦m T ≃ S ◦ R, takˇze vyjde U ◦m T = (~a, ~c) | ex. ~b ∈ B, ˇze (a1 , . . . ak−m , b1 , . . . bm ) ∈ T a (b1 , . . . bm , cm+1 , . . . cℓ ) ∈ U .
Schematicky pro snaˇzˇs´ı orientaci ve sloˇzk´ach naˇsich relac´ı: T ⊆ U⊆
U ◦m T ⊆
K1 × · · · × Kk−m × Kk−m+1 × · · · × Kk L1 × · · · × Lm ×Lm+1 × · · · × Lℓ
K1 × · · · × Kk−m × | {z } A
|
{z B
}
× Lm+1 × · · · × Lℓ {z } | C
Opˇet je nejjednoduˇsˇs´ı si koncept skl´ad´an´ı v´ıceˇcetn´ych relac´ı ilustrovat pˇr´ıkladem. Pˇ r´ıklad 6.5. Skl´ad´an´ı v relaˇcn´ı datab´azi pasaˇz´er˚ u a let˚ u u leteck´ych spoleˇcnost´ı. Pod´ıvejme se na pˇr´ıklad hypotetick´e rezervace let˚ u pro cestuj´ıc´ı, relace T . Jak zn´amo (tzv. codeshare), leteck´e spoleˇcnosti si mezi sebou dˇel´ı“ m´ısta v letadlech, takˇze r˚ uzn´e ” lety (podle k´od˚ u) jsou ve skuteˇcnosti realizov´any stejn´ym letadlem jedn´e ze spoleˇcnost´ı. To zase ukazuje relace U.
T :
pasaˇz´er Petr Pavel Jan Josef Alena
datum let 5.11. OK535 6.11. OK535 5.11. AF2378 5.11. DL5457 6.11. AF2378
U:
45
datum 5.11. 5.11. 5.11. 6.11. 6.11.
let letadlo ˇ OK535 CSA ˇ AF2378 CSA ˇ DL5457 CSA OK535 AirFrance AF2378 AirFrance
Pt´ame-li se nyn´ı, setkaj´ı se Petr a Josef na palubˇe stejn´eho letadla? Pˇr´ıpadnˇe, ˇc´ı letadlo to bude? Odpovˇedi n´am d´a sloˇzen´ı relac´ı U ◦2 T , jak je pos´ano v´yˇse.
U ◦2 T :
pasaˇz´er Petr Josef Pavel ...
letadlo ˇ CSA ˇ CSA AirFrance ...
Zkuste se zamyslet, lze tyto dvˇe relace skl´adat jeˇstˇe jinak? Co by pak bylo v´yznamem? ✷
6.4
Skl´ ad´ an´ı funkc´ı, permutace
Soustˇred’me se nyn´ı na dalˇs´ı oblast, kde bˇeˇznˇe a pˇrirozenˇe pouˇz´ıv´ame skl´ad´an´ı relac´ı, aniˇz si to uvˇedomujeme. Fakt: Mˇejme zobrazen´ı (funkce) f : A → B a g : B → C. Pak jejich sloˇzen´ım coby relac´ı v tomto poˇrad´ı vznikne zobrazen´ı (g ◦ f ) : A → C definovan´e (g ◦ f )(x) = g(f (x)) . Koment´ aˇ r: ∗ Jak napˇr´ıklad na bˇeˇzn´e kalkulaˇcce vypoˇcteme hodnotu funkce sin2 x ? Sloˇz´ıme (v tomto poˇrad´ı) element´ arn´ı“ funkce f (x) = sin x a g(x) = x2 . ” ∗ Jak bychom na element´ arn´ı“ funkce rozloˇzili aritmetick´ y v´ yraz 2 log(x2 + 1) ? Ve ” 2 spr´avn´em poˇrad´ı sloˇz´ıme funkce f1 (x) = x , f2 (x) = x + 1, f3 (x) = log x a f4 (x) = 2x. ∗ A jak bychom obdobnˇe vyj´adˇrili sloˇzen´ım funkc´ı aritmetick´ y v´ yraz sin x + cos x ? Opˇet ’ je odpovˇed pˇr´ımoˇcar´ a, vezmeme element´arn´ı“ funkce g1 (x) = sin x a g2 (x) = cos x, a ” pak je sloˇz´ıme“ dalˇs´ı funkc´ı h(x, y) = x + y. Vid´ıme vˇsak, ˇze takto pojat´e skl´ad´ an´ı“ ” ” uˇz nezapad´a hladce do naˇseho zjednoduˇsen´eho formalismu skl´ad´ an´ı relac´ı. Pro nedostatek prostoru si skl´ad´ an´ı funkc´ı s v´ıce parametry nedefinujeme, ale sami vid´ıte, ˇze obdobn´e skl´ad´ an´ı se v program´atorsk´e praxi vyskytuje doslova na kaˇzd´em rohu“ a ” ani se nad t´ım nepozastavujeme.
Skl´ ad´ an´ı permutac´ı Po zbytek tohoto odd´ılu se zamˇeˇr´ıme na permutace coby speci´aln´ı pˇr´ıpad (bijektivn´ıch) zobrazen´ı. u Definice: Necht’ permutace π mnoˇziny {1, 2, . . . , n} je urˇcena seˇrazen´ım jej´ıch prvk˚ (p1 , . . . , pn ). Pak π je z´aroveˇ n bijektivn´ım zobrazen´ım {1, . . . , n} → {1, . . . , n} definovan´ym pˇredpisem π(i) = pi . Tud´ıˇz lze permutace skl´adat jako relace podle Definice 6.3. Pozn´ amka: Vˇsechny permutace mnoˇziny {1, 2, . . . , n} spolu s operac´ı skl´ad´ an´ı tvoˇr´ı grupu, zvanou symetrick´a grupa Sn . Permutaˇcn´ı grupy (podgrupy symetrick´e grupy) jsou velice d˚ uleˇzit´e v algebˇre, nebot’ kaˇzd´ a grupa je vlastnˇe isomorfn´ı nˇekter´e permutaˇcn´ı grupˇe.
46
Koment´ aˇ r: Pˇr´ıkladem permutace vyskytuj´ıc´ım se v program´atorsk´e praxi je tˇreba zoˇ brazen´ı i 7→ (i + 1) mod n (“inkrement”). Casto se tˇreba lze setkat (aniˇz si to mnohdy uvˇedomujeme) s permutacemi pˇri indexaci prvk˚ u pol´ı.
V kontextu pohledu na funkce a jejich skl´ad´an´ı coby relac´ı si zavedeme jin´y, n´azornˇejˇs´ı, zp˚ usob z´apisu permutac´ı – pomoc´ı jejich cykl˚ u. Definice: Necht’ π je permutace na mnoˇzinˇe A. Cyklem v π rozum´ıme posloupnost ha1 , a2 , . . . , ak i r˚ uzn´ych prvk˚ u A takovou, ˇze π(ai ) = ai+1 pro i = 1, 2, . . . , k − 1 a π(ak ) = a1 . Jak n´azev napov´ıd´a, v z´apise cyklu ha1 , a2 , . . . , ak i nen´ı d˚ uleˇzit´e, kter´ym prvkem zaˇcneme, ale jen dodrˇzen´ı cyklick´eho poˇrad´ı. Cyklus v permutaci m˚ uˇze m´ıt i jen jeden prvek (zobrazen´y na sebe). Koment´ aˇ r: Nakreslete si (v´ami zvolenou) permutaci π obr´ azkem, ve kter´em vedete ˇsipku vˇzdy od prvku i k prvku π(i). Pak uvid´ıte, ˇze cykly dle naˇs´ı definice jsou pr´ avˇe cykly tvoˇren´e ˇsipkami ve vaˇsem obr´ azku. S t´ımto grafick´ ym zobrazen´ım pro v´as nebude probl´em pochopit n´ asleduj´ıc´ı l´ atku. Napˇr´ıklad permutaci (5, 3, 4, 8, 6, 1, 7, 2) si lze obr´ azkem nakreslit takto: . s6
s1
s5
s8
s4
s2
s3
s7
.
Reprezentace permutac´ı jejich cykly Vˇ eta 6.6. Kaˇzdou permutaci π na koneˇcn´e mnoˇzinˇe A lze zapsat jako sloˇzen´ı cykl˚ u na disjunktn´ıch podmnoˇzin´ach (rozkladu) A. D˚ ukaz: Vezmeme libovoln´y prvek a1 ∈ A a iterujeme zobrazen´ı a2 = π(a1 ), a3 = π(a2 ), atd., aˇz se dostaneme zpˇet“ k ak+1 = π(ak ) = a1 . Proˇc tento proces skonˇc´ı? Protoˇze A ” je koneˇcn´a a tud´ıˇz ke zopakov´an´ı nˇekter´eho prvku ak+1 mus´ı doj´ıt. Nadto je π prost´a, a proto nem˚ uˇze nastat π(ak ) = aj pro j > 1. Takto z´ısk´ame prvn´ı cyklus ha1 , . . . , ak i. Induktivnˇe pokraˇcujeme s hled´an´ım dalˇs´ıch cykl˚ u ve zbyl´e mnoˇzinˇe A \ {a1 , . . . , ak }, dokud nez˚ ustane pr´azdn´a. ✷ Znaˇ cen´ ı permutace jej´ımi cykly: Necht’ se permutace π podle Vˇety 6.6 skl´ad´a z cykl˚ u ha1 , . . . , ak i, hb1 , . . . , bl i aˇz tˇreba hz1 , . . . , zm i. Pak zap´ıˇseme π = ( ha1 , . . . , ak i hb1 , . . . , bl i . . . hz1 , . . . , zm i ) .
Koment´ aˇ r: Primitivn´ı pseudon´ ahodn´e gener´ atory v poˇc´ıtaˇc´ıch iteruj´ı z n´ ahodn´eho poˇc´atku permutaci danou vztahem i 7→ (i + p) mod q. Je pochopiteln´e, ˇze tato permutace nesm´ı obsahovat kr´atk´e cykly, l´epe ˇreˇceno, mˇela by se skl´adat z jedin´eho (dlouh´eho) cyklu. (Pro u ´plnost, jedn´ a se o permutaci mnoˇziny {0, 1, . . . , q − 1}).
Pˇ r´ıklad 6.7. Uk´azka skl´ad´an´ı permutac´ı dan´ych sv´ymi cykly. Vezmˇeme 7-prvkovou permutaci π = (3, 4, 5, 6, 7, 1, 2). Ta se skl´ad´a z jedin´eho cyklu h1, 3, 5, 7, 2, 4, 6i. Jin´a permutace σ = (5, 3, 4, 2, 6, 1, 7) se rozkl´ad´a na tˇri cykly h1, 5, 6i, 47
h2, 3, 4i a h7i. Nyn´ı urˇc´ıme sloˇzen´ı σ ◦ π tˇechto dvou permutac´ı (uˇz pˇr´ımo v z´apisu cykly): (h1, 5, 6ih2, 3, 4ih7i) ◦ (h1, 3, 5, 7, 2, 4, 6i) = (h1, 4ih2ih3, 6, 5, 7i) (Nezapom´ınejme, ˇze prvn´ı se ve sloˇzen´ı aplikuje prav´a permutace!) Postup skl´ad´an´ı jsme pouˇzili n´asledovn´y: 1 se zobraz´ı v permutaci vpravo na 3 a pak vlevo na 4. N´aslednˇe 4 se zobraz´ı na 6 a pak na 1. T´ım uzavˇreme“ prvn´ı cyklus h1, 4i. ” D´ale se 2 zobraz´ı na 4 a pak hned zpˇet na 2, tj. m´a samostatn´y cyklus. Zbyl´y cyklus h3, 6, 5, 7i urˇc´ıme analogicky. ✷
6.5
Induktivn´ı definice mnoˇ zin a funkc´ı
Vzpomeˇ nme si na definici posloupnosti rekurentn´ım vztahem z Odd´ılu 3.4. Pˇr´ım´ym zobecnˇen´ım dˇr´ıvˇejˇs´ıch rekurentn´ıch definic je n´asleduj´ıc´ı koncept. Definice 6.8. Induktivn´ı definice mnoˇziny. Jedn´a se obecnˇe o popis (nˇejak´e) mnoˇziny M v n´asleduj´ıc´ım tvaru: •
Je d´ano nˇekolik pevn´ych (b´azick´ych) prvk˚ u a1 , a2 , . . . , ak ∈ M.
•
Je d´an soubor induktivn´ıch pravidel typu Jsou-li (libovoln´e prvky) x1 , . . . , xℓ ∈ M, pak tak´e y ∈ M. V tomto pˇr´ıpadˇe je y typicky funkc´ı y = fi (x1 , . . . , xℓ ).
Pak naˇse induktivnˇe definovan´a mnoˇzina M je urˇcena jako nejmenˇs´ı (inkluz´ı) mnoˇzina vyhovuj´ıc´ı tˇemto pravidl˚ um. Pozn´ amka: Vid´ıte podobnost t´eto definice s uz´ avˇerem relace? (Vˇeta 5.10.) Koment´ aˇ r: • Pro nejbliˇ zˇs´ı pˇr´ıklad induktivn´ı definice se obr´ at´ıme na mnoˇzinu vˇsech pˇrirozen´ ych ˇc´ısel, kter´a je form´ alnˇe zavedena n´ asledovnˇe.
N
– 0∈ – Je-li i ∈
N, pak tak´e i + 1 ∈ N. 0
•
Pro kaˇzd´e y ∈
1
2
3
4
...
N m˚uˇzeme definovat jinou mnoˇzinu My ⊆ N induktivnˇe takto:
– y ∈ My
– Jestliˇze x ∈ My a x + 1 je lich´e, pak x + 2 ∈ My .
Pak napˇr´ıklad M3 = {3}, nebo M4 = {4 + 2i | i ∈ •
N}.
Dalˇs´ım pˇr´ıkladem induktivn´ı definice je uˇz zn´ am´e zaveden´ı v´ yrokov´ ych formul´ı z Odd´ılu 1.5. Umˇeli byste ted’ pˇresnˇe ˇr´ıci, co tam byly b´ azick´e prvky a jak´ a byla induktivn´ı pravidla? A jak´ a byla v definici formul´ı role pˇr´ıtomn´ ych z´avorek? K tomu se bl´ıˇze vyj´adˇr´ıme v Definici 6.9.
48
Jednoznaˇ cnost induktivn´ıch definic ˇ Definice: Rekneme, ˇze dan´a induktivn´ı definice mnoˇziny M je jednoznaˇcn´a, pr´avˇe kdyˇz kaˇzd´y prvek M lze odvodit z b´azick´ych prvk˚ u pomoc´ı induktivn´ıch pravidel pr´avˇe jedn´ım zp˚ usobem.
N
Koment´ aˇ r: Definujme napˇr´ıklad mnoˇzinu M ⊆ induktivnˇe takto: – 2, 3 ∈ M – Jestliˇze x, y ∈ M a x ≤ y, pak tak´e x2 + y 2 a x · y jsou prvky M . Proˇc tato induktivn´ı definice nen´ı jednoznaˇcn´ a? Napˇr´ıklad ˇc´ıslo 8 ∈ M lze odvodit zp˚ usobem 2 2 8 = 2 · (2 · 2), ale z´ aroveˇ n zcela jinak 8 = 2 + 2 . V ˇcem tedy spoˇc´ıv´a d˚ uleˇzitost jednoznaˇcn´ ych induktivn´ıch definic mnoˇzin? Je to pˇredevˇs´ım v dalˇs´ım moˇzn´em vyuˇzit´ı induktivn´ı definice mnoˇziny jako z´akladny“ pro ” odvozen´e vyˇsˇs´ı definice, viz n´ asleduj´ıc´ı Definice 6.9 a tˇreba doplˇ nkov´a Vˇeta 6.12. Struˇcnˇe a neform´ alnˇe ˇreˇceno, hlavn´ı role jednoznaˇcnosti induktivn´ı definice je v moˇznosti pak pˇriˇradit prvk˚ um t´eto induktivn´ı mnoˇziny nˇejak´ y jednoznaˇcn´ y v´ yznam“. ”
Definice 6.9. Induktivn´ı definice funkce z induktivn´ı mnoˇziny. Necht’ mnoˇzina M je d´ana jednoznaˇcnou induktivn´ı definic´ı. Pak ˇr´ık´ame, ˇze funkce F : M → X je definov´ana induktivnˇe (vzhledem k induktivn´ı definici M), pokud je ˇreˇceno: • Pro kaˇ zd´y z b´azick´ych prvk˚ u a1 , a2 , . . . , ak ∈ M je urˇceno F(ai ) = ci , kde ci je konstanta. •
Pro kaˇzd´e induktivn´ı pravidlo typu “Jsou-li (libovoln´e prvky) x1 , . . . , xℓ ∈ M, pak tak´e f (x1 , . . . , xℓ ) ∈ M” je definov´ano F f (x1 , . . . , xℓ ) na z´akladˇe hodnot F (x1 ), . . . , F(xℓ ).
Koment´ aˇ r: Pro pˇr´ıklad se pod´ıvejme tˇreba do manu´ alov´ ych str´ anek unixov´eho pˇr´ı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 ...... Vid´ıte, jak tato uk´ azka koresponduje s Definic´ı 6.9 ?
Induktivn´ı definice se struktur´ aln´ı“ indukc´ı ” Z´avˇerem jeˇstˇe doplˇ nkovˇe zaˇrazujeme malou uk´azku, kterak pˇrirozenˇe zkombinovat induktivn´ı definice s pokroˇcilou formou matematick´e indukce“ v dokazov´an´ı, s tzv. struktur´aln´ı ” indukc´ı. Pˇ r´ıklad 6.10. Jednoduch´e aritmetick´e v´yrazy a jejich v´yznam. Necht’ je d´ana abeceda Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ⊙, ⊕, (, )}. Definujme mnoˇzinu jednoduch´ych v´yraz˚ u SExp ⊆ Σ∗ induktivnˇe takto: 49
– Dekadick´y z´apis kaˇzd´eho pˇrirozen´eho ˇc´ısla n je prvek SExp. – Jestliˇze x, y ∈ SExp, pak tak´e (x) ⊙ (y) a (x) ⊕ (y) jsou prvky SExp. (Jak vid´ıme, d´ıky nucen´emu z´avorkov´an´ı je tato induktivn´ı definice jednoznaˇcn´a.) T´ımto jsme aritmetick´ym v´yraz˚ um pˇriˇradili jejich formu“, tedy syntaxi. ” Pro pˇriˇrazen´ı v´yznamu“, tj. s´emantiky aritmetick´eho v´yrazu, n´aslednˇe definujme ” funkci Val : SExp → induktivnˇe takto: – B´azick´e prvky: Val(n) = n, kde n je dekadick´y z´apis pˇrirozen´eho ˇc´ısla n. – Prvn´ı induktivn´ı pravidlo: Val((x) ⊕ (y)) = Val(x) + Val(y). – Druh´e induktivn´ı pravidlo: Val((x) ⊙ (y)) = Val(x) · Val(y).
N
Co je tedy spr´avn´ym v´yznamem uveden´ych aritmetick´ych v´yraz˚ u? (Pˇr´ıklad 6.11)
✷
N
Pˇ r´ıklad 6.11. D˚ ukaz spr´avnosti pˇriˇrazen´eho v´yznamu“ Val : SExp → . ” Vˇ eta. Pro kaˇzd´y v´yraz s ∈ SExp je hodnota Val(s) z Pˇr´ıkladu 6.10 ˇc´ıselnˇe rovna v´ysledku vyhodnocen´ı v´yrazu s podle bˇeˇzn´ych zvyklost´ı aritmetiky. Jelikoˇz pojedn´av´ame o induktivnˇe definovan´e funkci Val, je pˇrirozen´e pro d˚ ukaz jej´ıch vlastnost´ı aplikovat matematickou indukci. Na rozd´ıl od dˇr´ıve prob´ıran´ych pˇr´ıklad˚ u zde nevid´ıme ˇz´adn´y celoˇc´ıseln´y parametr n“, a proto si jej budeme muset nejprve definovat. ” Naˇsi indukci tedy povedeme podle d´elky ℓ odvozen´ı v´yrazu s“ definovan´e jako poˇcet ” aplikac´ı induktivn´ıch pravidel potˇrebn´ych k odvozen´ı s ∈ SExp. D˚ ukaz: V b´azi indukce ovˇeˇr´ıme vyhodnocen´ı b´azick´ych prvk˚ u, kter´eˇzto jsou zde dekadick´e z´apisy pˇrirozen´ych ˇc´ısel. Plat´ı Val(n) = n, coˇz skuteˇcnˇe odpov´ıd´a zvyklostem aritmetiky. V indukˇcn´ım kroku se pod´ıv´ame na vyhodnocen´ı Val((x) ⊕ (y)) = Val(x) + Val(y). Podle bˇeˇzn´ych zvyklost´ı aritmetiky by hodnota Val((x) ⊕ (y)) mˇela b´yt rovna souˇctu vyhodnocen´ı v´yrazu x, coˇz je podle indukˇcn´ıho pˇredpokladu rovno Val(x) (x m´a zˇrejmˇe kratˇs´ı d´elku odvozen´ı), a vyhodnocen´ı v´yrazu y, coˇz je podle indukˇcn´ıho pˇredpokladu rovno Val(y). Takˇze skuteˇcnˇe Val((x) ⊕ (y)) = Val(x) + Val(y). Druh´e pravidlo Val((x) ⊙ (y)) se doˇreˇs´ı analogicky. ✷ Dodatek: d˚ ukaz pro norm´ aln´ı tvar formule V Odd´ıle 1.5 jsme struˇcnˇe zavedli v´yrokovou matematickou logiku a v´yrokov´e formule. Nyn´ı si snadno m˚ uˇzeme vˇsimnout, ˇze jak definice syntaxe, tak i definice s´emantiky v´yrokov´e logiky jsou induktivn´ı ve smyslu (po ˇradˇe) Definic 6.8 a 6.9. Tak´e Metoda 1.16 pro pˇrevod formule do norm´aln´ıho tvaru je induktivn´ı, a proto je na m´ıstˇe n´asleduj´ıc´ı ilustrativn´ı uk´azka d˚ ukazu struktur´aln´ı indukc´ı: Vˇ eta 6.12. Pro libovolnou v´yrokovou formuli ϕ plat´ı (viz Metoda 1.16), ˇze a) F (ϕ) je ekvivalentn´ı formule k ϕ v norm´aln´ım tvaru b) a G(ϕ) je formule v norm´aln´ım tvaru ekvivalentn´ı negaci ¬ϕ. D˚ ukaz povedeme indukc´ı ke struktuˇre formule, neboli indukci povedeme podle d´elky“ ” ℓ – poˇctu aplikac´ı induktivn´ıch pravidel pˇri sestavov´an´ı formule ϕ. • B´ aze indukce (ℓ = 0): Pro vˇsechny atomy, tj. v´yrokov´e promˇenn´e, zˇrejmˇe plat´ı, ˇze F (A) = A je ekvivalentn´ı A a G(A) = ¬A je ekvivalentn´ı ¬A. 50
•
V indukˇcn´ım kroku pˇredpokl´adejme, ˇze a) i b) plat´ı pro vˇsechny formule ϕ d´elky nejv´yˇse ℓ. Vezmeme si formuli ψ d´elky ℓ + 1, kter´a je utvoˇren´a jedn´ım z n´asleduj´ıc´ıch zp˚ usob˚ u: ∗ ψ ≡ ¬ϕ ( ≡ je definiˇ cn´ı rovn´ıtko“ pro formule). Podle v´yˇse uveden´eho induk-
” tivn´ıho pˇredpisu je F (ψ) = F (¬ϕ) = G(ϕ). Podle indukˇcn´ıho pˇredpokladu pak je G(ϕ) formule v norm´aln´ım tvaru ekvivalentn´ı ¬ϕ = ψ. Obdobnˇe pro funktor G vyj´adˇr´ıme G(ψ) = G(¬ϕ) = F (ϕ). Podle indukˇcn´ıho pˇredpokladu pak je F (ϕ) formule v norm´aln´ım tvaru ekvivalentn´ı ϕ a to je d´ale ekvivalentn´ı ¬¬ϕ = ¬ψ podle Tvrzen´ı 1.13.
∗ ψ ≡ (ϕ1 ⇒ ϕ2 ). Podle v´ yˇse uveden´eho induktivn´ıho pˇredpisu je F (ψ) = F (ϕ1 ⇒
ϕ2 ) = F (ϕ1 ) ⇒ F (ϕ2 ). Podle indukˇcn´ıho pˇredpokladu jsou F (ϕ1 ) i F (ϕ2 ) formule v norm´aln´ım tvaru ekvivalentn´ı ϕ1 a ϕ2 . Potom i F (ϕ1 ) ⇒ F (ϕ2 ) je v norm´aln´ım tvaru dle definice a podle s´emantiky ⇒ je ta ekvivalentn´ı formuli (ϕ1 ⇒ ϕ2 ) = ψ. Obdobnˇe rozep´ıˇseme G(ψ) = G(ϕ1 ⇒ ϕ2 ) = F (ϕ1 ) ∧ G(ϕ2 ). Jelikoˇz ∧ je pro n´as jen zkratka, v´yraz d´ale rozep´ıˇseme G(ψ) = ¬(F (ϕ1 ) ⇒ ¬G(ϕ2 )). Podle indukˇcn´ıho pˇredpokladu (a dvoj´ı negace) jsou F (ϕ1 ) a ¬G(ϕ2 ) po ˇradˇe ekvivalentn´ı formul´ım ϕ1 a ϕ2 . Tud´ıˇz nakonec odvod´ıme, ˇze G(ψ) je ekvivalentn´ı negaci formule ϕ1 ⇒ ϕ2 , coˇz jsme zde mˇeli dok´azat.
∗ ψ ≡ (ϕ1 ∨ϕ2 ). Zde si mus´ıme opˇ et uvˇedomit, ˇze spojka ∨ je pro n´as jen zkratka, a
pˇrepsat ψ ≡ (¬ϕ1 ⇒ ϕ2 ). Potom podle pˇredchoz´ıch dok´azan´ych pˇr´ıpad˚ u v´ıme, ˇze F (ψ) = F (¬ϕ1 ⇒ ϕ2 ) = F (¬ϕ1 ) ⇒ F (ϕ2 ) je ekvivalentn´ı formuli (¬ϕ1 ⇒ ϕ2 ) = ψ, coˇz bylo tˇreba dok´azat. Stejnˇe tak G(ψ) = G(¬ϕ1 ⇒ ϕ2 ) = F (¬ϕ1 ) ∧ G(ϕ2 ) je podle pˇredchoz´ıch pˇr´ıpad˚ u d˚ ukazu ekvivalentn´ı (¬ϕ1 ∧ ¬ϕ2 ) = ¬ψ.
∗ ψ ≡ (ϕ1 ∧ ϕ2 ) a ψ ≡ (ϕ1 ⇔ ϕ2 ) uˇ z dokonˇc´ıme analogicky.
✷
Rozˇ siˇ ruj´ıc´ı studium S formalizac´ı pojmu funkce a jej´ımi vlastnostmi se setk´av´ate pˇredevˇs´ım v matematice, avˇsak napˇr´ıklad na bijektivn´ı funkce naraz´ıte pˇri ukl´ad´ an´ı dat pˇri volbˇe kl´ıˇce apod. Pro informatiku jsou sp´ıˇse d˚ uleˇzitˇejˇs´ı relace a jejich skl´ ad´ an´ı, na nichˇz je zaloˇzena mimo jin´e pr´ ace s relaˇcn´ımi datab´ azemi. Posledn´ı ˇc´ast´ı lekce je problematika induktivn´ıch definic, kter´e aˇc ve form´ aln´ım pod´ an´ı mohou nejprve vypadat nepochopitelnˇe, jsou ve skuteˇcnosti zcela pˇrirozenou popisnou metodou v mnoha aplikaˇcn´ıch sf´er´ ach informatiky a jejich alespoˇ n intuitivn´ı ch´ ap´ an´ı pro v´as bude v dalˇs´ım studiu nezbytn´e. Schv´alnˇe, zkuste se pod´ıvat zrovna do vaˇs´ı obl´ıben´e oblasti informatiky, kde vˇsude induktivn´ı definice, tj. ty odvol´avaj´ıc´ı se rekurzivnˇe samy na sebe pro menˇs´ı pˇr´ıpady“, najdete (tˇreba nepˇr´ımo). ”
51
7
Pojem grafu, ve zkratce ´ Uvod Tˇrebaˇze grafy jsou jen jednou z mnoha struktur v matematice a vlastnˇe pouze speci´aln´ım pˇr´ıpadem bin´ arn´ıch relac´ı, vydobyly si svou uˇziteˇcnost´ı a n´ azornost´ı d˚ uleˇzit´e m´ısto na slunci. D´a se bez nads´azky ˇr´ıci, ˇze teorie graf˚ u je asi nejv´ yznamnˇejˇs´ı souˇc´ast´ı soudob´e diskr´etn´ı matematiky, a proto se j´ı budeme vˇenovat po tˇri n´ asleduj´ıc´ı lekce. Avˇsak pozor, neplet’me si graf s grafem funkce! u (pˇredstavme si je jako nakreslen´e punt´ıky“) Neform´alnˇe ˇreˇceno, graf se skl´ad´ a z vrchol˚ ” a z hran, kter´e spojuj´ı dvojice vrchol˚ u mezi sebou. Sv´e d˚ uleˇzit´e m´ısto v informatice si grafy z´ıskaly dobˇre vyv´aˇzenou kombinac´ı sv´ ych vlastnost´ı – snadno pochopiteln´ ym n´ azorn´ ym nakreslen´ım a z´ aroveˇ n jednoduch´ ym zpracov´an´ım na poˇc´ıtaˇc´ıch. D´ıky tˇemto vlastnostem se grafy prosadily jako vhodn´ y matematick´ y model pro popis r˚ uzn´ ych vztah˚ u mezi daty a objekty.
C´ıle Definujeme, co je graf a jak´e jsou nejz´akladnˇejˇs´ı grafov´e pojmy (tˇreba hrany a stupnˇe, podgrafy, souvislost). Klademe d˚ uraz na to, aby se ˇcten´ aˇr nauˇcil grafy uchopit“ a pra” covat s nima, tak´e aby spr´avnˇe vidˇel stejnost“ (isomorfismus) graf˚ u. Pot´e se vˇenujeme ” nejjednoduˇsˇs´ımu druhu graf˚ u, totiˇz strom˚ um. Jedn´a se vesmˇes o pojmy, kter´e se hojnˇe vyskytuj´ı v obvykl´ ych informatick´ ych aplikac´ıch graf˚ u.
7.1
Definice grafu
Hned na u ´ vod pˇristoup´ıme k form´aln´ı definici grafu. Bude se jednat o definici tzv. jednoduch´eho neorientovan´eho grafu, kter´y budeme povaˇzovat za z´akladn´ı, pokud neˇrekneme jinak. Sv´ym zp˚ usobem navazujeme na reprezentace relac´ı v Odd´ıle 4.2. Definice 7.1. Graf je uspoˇr´adan´a dvojice G = (V, E), kde V je mnoˇzina vrchol˚ u a E je mnoˇzina hran – mnoˇzina vybran´ych dvouprvkov´ych podmnoˇzin mnoˇziny vrchol˚ u; tj. E ⊆ V2 .
Znaˇ cen´ ı : Hranu mezi vrcholy u a v p´ıˇseme jako {u, v}, nebo zkr´acenˇe uv. Vrcholy spojen´e hranou jsou sousedn´ı a hrana uv vych´az´ı z vrchol˚ u u a v. Na mnoˇzinu vrchol˚ u zn´am´eho grafu G odkazujeme jako na V (G), na mnoˇzinu hran E(G). Koment´ aˇ r: Grafy se ˇcasto zad´ avaj´ı pˇr´ımo n´ azorn´ ym obr´ azkem, jinak je lze form´alnˇe zadat v´ yˇctem vrchol˚ u a v´ yˇctem hran. Napˇr´ıklad: 1
2 V = {1, 2, 3, 4},
3
4 n
o E = {1, 2}, {1, 3}, {1, 4}, {3, 4}
Na graf se lze d´ıvat tak´e jako na symetrickou ireflexivn´ı relaci, kde hrany tvoˇr´ı pr´ avˇe dvojice prvk˚ u z t´eto relace.
52
Stupnˇ e vrchol˚ u v grafu M´ame-li graf, ˇcasto n´as zaj´ım´a, kolik z kter´eho vrcholu vych´az´ı hran-spojnic, neboli kolik m´a vrchol soused˚ u“. Proto jedn´ım z prvn´ıch definovan´ym pojm˚ u bude stupeˇ n vrcholu ” v grafu. Definice 7.2. Stupnˇ em vrcholu v v grafu G rozum´ıme poˇcet hran vych´azej´ıc´ıch z v. Stupeˇ n v v grafu G znaˇc´ıme dG (v). Koment´ aˇ r: Slovo vych´ azej´ıc´ı“ zde nenaznaˇcuje ˇz´adn´ y smˇer; je totiˇz obecnou konvenc´ı u ” neorientovan´ ych graf˚ u ˇr´ıkat, ˇze hrana vych´ az´ı z obou sv´ ych konc˚ u z´aroveˇ n. 2 s
s2
3 s
s3
stupnˇe 3 s
s3
2 s
4 s
s3
s2
2 s
s5
Napˇr´ıklad v nakreslen´e uk´azce jsou stupnˇe pˇr´ımo zaps´ any u vrchol˚ u.
Definice: Graf je d-regul´arn´ı, pokud vˇsechny jeho vrcholy maj´ı stejn´y stupeˇ n d. n v grafu G znaˇc´ıme ∆(G) a nejniˇzˇs´ı δ(G). Znaˇ cen´ ı : Nejvyˇsˇs´ı stupeˇ Vˇ eta 7.3. Souˇcet stupˇ n˚ u v grafu je vˇzdy sud´y, roven dvojn´asobku poˇctu hran. D˚ ukaz. Pˇri sˇc´ıt´an´ı stupˇ n˚ u vrchol˚ u v grafu zapoˇc´ıt´ame kaˇzdou hranu dvakr´at – jednou za kaˇzd´y jej´ı konec. Proto v´ysledek vyjde sud´y. ✷ Pˇ r´ıklad 7.4. Zodpovˇezte si sami n´asleduj´ıc´ı ot´azky: ∗ Kolik hran m´ a graf se 17 vrcholy stupˇ n˚ u 4?
∗ Existuj´ı dva r˚ uzn´e“ grafy se 6 vrcholy stupˇ n˚ u 2?
✷
”
Bˇ eˇ zn´ e typy graf˚ u Pro snadnˇejˇs´ı vyjadˇrov´an´ı je zvykem nˇekter´e bˇeˇzn´e typy graf˚ u naz´yvat popisn´ymi jm´eny. Jde ˇcistˇe o vˇec konvence a autoˇri se mohou v nˇekter´ych n´azvech l´ıˇsit (i pˇrich´azet s nov´ymi n´azvy), avˇsak n´asleduj´ıc´ıch pˇet n´azv˚ u patˇr´ı k vˇseobecn´ym z´aklad˚ um teorie graf˚ u. Kruˇ znice d´ elky n m´a n ≥ 3 vrchol˚ u spojen´ych do jednoho cyklu n hranami: 3 s
4 s
Cn
s
5 s
2 s
6 s
...
s
1
n
Cesta d´ elky n ≥ 0 m´a n + 1 vrchol˚ u spojen´ych za sebou n hranami:
Pn
s
s
s
s
1
2
3
4
53
...
s
s
n n+1
´ u, vˇsechny navz´ajem pospojovan´e (tj. celkem Upln´ y graf na n ≥ 1 vrcholech m´a n vrchol˚ n hran): 2 3 s
4 s
Kn
s
5 s
2
1
s
6 s
...
s
n
´ u ve dvou skupin´ach Upln´ y bipartitn´ı graf na m ≥ 1 a n ≥ 1 vrcholech m´a m+n vrchol˚ (partit´ach), pˇriˇcemˇz hranami jsou pospojovan´e vˇsechny m·n dvojice z r˚ uzn´ych skupin: 1
2
3
4
s
s
s
s
. . . ms
Km,n s
s
s
1
2
3
...
s
n
Hvˇ ezda s n ≥ 1 rameny je zvl´aˇstn´ı n´azev pro u ´ pln´y bipartitn´ı graf K1,n : 3 s
4 s
Sn
s
5 s
s
6 s
2 s
...
s
1
n
Pˇ r´ıklad 7.5. Zodpovˇezte si sami n´asleduj´ıc´ı ot´azky: ∗ Pro jakou hodnotu n je u ´ pln´y graf Kn z´aroveˇ n cestou?
∗ Pro jakou hodnotu n je u ´ pln´y graf Kn z´aroveˇ n kruˇznic´ı?
∗ Pro jak´ e hodnoty m, n > 0 je u ´ pln´y bipartitn´ı graf Km,n z´aroveˇ n kruˇznic´ı?
∗ Kolik hran mus´ıte pˇridat do kruˇ znice d´elky 6, aby vznikl u ´ pln´y graf na 6 vrcholech?
∗ Pro jak´ e hodnoty m, n > 0 u ´ pln´y bipartitn´ı graf Km,n neobsahuje ˇz´adnou kruˇznici? ✷
Zm´ınka o orientovan´ ych grafech V Lekci 9 si zavedeme tak´e takzvan´e orientovan´e grafy, kter´e kaˇzd´e hranˇe pˇriˇrazuj´ı jist´y smˇer. Form´alnˇe orientovan´e grafy budou m´ıt mnoˇzinu orientovan´ych hran A ⊆ V (G) × V (G) a zobraz´ıme je takto. . . s s s
s
s s
54
7.2
Podgrafy a Isomorfismus
Dva z´akladn´ı n´astroje pro pr´aci s grafy jsou n´asleduj´ıc´ı; moˇznost popisovat ˇc´ast grafu“ ” (podobnˇe jako podmnoˇzinu mnoˇziny, avˇsak je nutno se vyvarovat nekorektn´ıch situac´ı) a pozn´avat stejnost“ dvou graf˚ u. ” u Definice: Podgrafem grafu G rozum´ıme libovoln´y graf H na podmnoˇzinˇe vrchol˚ V (H) ⊆ V (G), kter´y m´a za hrany libovolnou podmnoˇzinu hran grafu G maj´ıc´ıch oba vrcholy ve V (H). P´ıˇseme H ⊆ G, tj. stejnˇe jako mnoˇzinov´a inkluze (ale v´yznam je trochu jin´y). Koment´ aˇ r: Na n´ asleduj´ıc´ım obr´ azku vid´ıme zv´ yraznˇen´e podmnoˇziny vrchol˚ u hran. Proˇc se vlevo nejedn´ a o podgraf? Obr´azek vpravo uˇz podgrafem je. s
s
s
s
s
s
s
s
s
s
s
s
Definice: Indukovan´ym podgrafem je podgraf H ⊆ G takov´y, kter´y obsahuje vˇsechny hrany grafu G mezi dvojicemi vrchol˚ u z V (H). Stejnost“ graf˚ u ” Pozorn´y ˇcten´aˇr si moˇzn´a jiˇz pˇri ˇcten´ı pˇredchoz´ıho odd´ılu poloˇzil ot´azku: Co kdyˇz vezmeme jeden graf (tˇreba kruˇznici d´elky 4) a nakresl´ıme nebo zap´ıˇseme jej jednou tak, podruh´e zase jinak – je to st´ale tent´yˇz graf nebo ne? Viz obr´azky dole. Pˇr´ısnˇe form´alnˇe ˇreˇceno, kaˇzd´e dalˇs´ı nakreslen´ı jist´eho grafu, tˇreba t´e kruˇznice C4 , je jin´ym grafem, ale pˇritom bychom r´adi ˇrekli, ˇze r˚ uzn´a nakreslen´ı t´ehoˇz grafu jsou st´ale ” stejn´a“. Pro tuto stejnost graf˚ u se vˇzil pojem isomorfn´ı grafy. s
s
s
s
s
? =
s
s
s
? =
s
s
s
s
Definice 7.6. Isomorfismus ≃ graf˚ uGaH je bijektivn´ı (vz´ajemnˇe jednoznaˇcn´e) zobrazen´ı f : V (G) → V (H), pro kter´e plat´ı, ˇze kaˇzd´a dvojice vrchol˚ u u, v ∈ V (G) je spojen´a hranou v G pr´avˇe tehdy, kdyˇz je dvojice f (u), f (v) spojen´a hranou v H. Grafy G a H jsou isomorfn´ı, pokud mezi nimi existuje isomorfismus. P´ıˇseme G ≃ H. Fakt: Mˇejme isomorfismus f graf˚ u G a H. Pak plat´ı n´asleduj´ıc´ı ∗ G a H maj´ı stejn´ y poˇcet hran, ∗ f zobrazuje na sebe vrcholy stejn´ ych stupˇ n˚ u, tj. dG (v) = dH (f (v)).
55
Koment´ aˇ r:
s
s
s
s
s
s
s
s
U nakreslen´ ych dvou graf˚ u objev´ıme isomorfismus velmi snadno – pod´ıv´ame se, jak si odpov´ıdaj´ı vrcholy stejn´ ych stupˇ n˚ u.
Pˇ r´ıklad 7.7. Jsou n´asleduj´ıc´ı dva grafy isomorfn´ı? s
s
s
s
s
s s
s s
s
s
s
Pokud mezi nakreslen´ymi dvˇema grafy hled´ame isomorfismus, nejprve se pod´ıv´ame, zda maj´ı stejn´y poˇcet vrchol˚ u a hran. Maj´ı. Pak se pod´ıv´ame na stupnˇe vrchol˚ u a zjist´ıme, ˇze oba maj´ı stejnou posloupnost stupˇ n˚ u 2, 2, 2, 2, 3, 3. Takˇze ani takto jsme mezi nimi nerozliˇsili a mohou (nemusej´ı!) b´yt isomorfn´ı. D´ale tedy nezb´yv´a, neˇz zkouˇset vˇsechny pˇr´ıpustn´e moˇznosti zobrazen´ı isomorfismu z lev´eho grafu do prav´eho. Na lev´em grafu si pro ulehˇcen´ı vˇsimnˇeme, ˇze oba vrcholy stupnˇe tˇri jsou si symetrick´e, proto si bez u ´ jmy na obecnosti m˚ uˇzeme vybrat, ˇze nejlevˇejˇs´ı vrchol prvn´ıho grafu, oznaˇcme jej 1, se zobraz´ı na nejlevˇejˇs´ı vrchol 1′ v druh´em grafu (taky stupnˇe tˇri). Oˇc´ıslujme zbyl´e vrcholy prvn´ıho grafu 2, . . . , 6 v kladn´em smyslu, jak je uk´az´ano na n´asleduj´ıc´ım obr´azku. Druh´y vrchol stupnˇe tˇri, oznaˇcen´y 4, se mus´ı zobrazit na analogick´y vrchol druh´eho grafu (prav´y spodn´ı). Pak je jiˇz jasnˇe vidˇet, ˇze dalˇs´ı soused´e 2, 6 vrcholu 1 se zobraz´ı na analogick´e sousedy 2′ , 6′ vrcholu 1′ v druh´em grafu, a stejnˇe je to i se zbyl´ymi vrcholy 3, 5. V´ysledn´y isomorfismus vypad´a v odpov´ıdaj´ıc´ım znaˇcen´ı vrchol˚ u takto: 6 s
s
5
1 s
5’ s s
2 s
s
4
s
6’
1’ s
3
3’ s
s s
4’
2’ ✷
Abychom mohli s isomorfismem graf˚ u pˇrirozenˇe pracovat, je potˇreba vˇedˇet n´asleduj´ıc´ı fakt: Vˇ eta 7.8. Relace b´yt isomorfn´ı“ ≃ na tˇr´ıdˇe vˇsech graf˚ u je ekvivalenc´ı. ” D˚ ukaz. Relace ≃ je reflexivn´ı, protoˇze graf je isomorfn´ı s´am sobˇe identick´ym zobrazen´ım. Relace je tak´e symetrick´a, nebot’ bijektivn´ı zobrazen´ı lze jednoznaˇcnˇe obr´atit. Tranzitivnost ≃ se snadno dok´aˇze skl´ad´an´ım zobrazen´ı–isomorfism˚ u. ✷ D˚ usledkem je, ˇze vˇsechny moˇzn´e grafy se rozpadnou na tˇr´ıdy isomorfismu. V praxi pak, pokud mluv´ıme o grafu, mysl´ıme t´ım obvykle jeho celou tˇr´ıdu isomorfismu, tj. nez´aleˇz´ı n´am na konkr´etn´ı prezentaci grafu. Koment´ aˇ r: Je uveden´ y pˇr´ıstup, tj. zamˇen ˇov´an´ı konkr´etn´ıho grafu za celou jeho tˇr´ıdu isomorfismu, v matematice neobvykl´ y? Ne, napˇr´ıklad uˇz v geometrii jste ˇr´ıkali ˇctverec o stranˇe 2“ ” ˇci jednotkov´ y kruh“ a podobnˇe, aniˇz jste mˇeli na mysli konkr´etn´ı obr´ azek, n´ ybrˇz celou ” tˇr´ıdu vˇsech tˇechto shodn´ ych objekt˚ u.
56
Dalˇ s´ı grafov´ e pojmy Definice: Mˇejme libovoln´y graf G. ∗ Podgrafu H ⊆ G, kter´ y je isomorfn´ı nˇejak´e kruˇznici, ˇr´ık´ame kruˇznice v G. ∗ Speci´ alnˇe ˇr´ık´ame troj´ uheln´ık kruˇznici d´elky 3. ∗ Podgrafu H ⊆ G, kter´ y je isomorfn´ı nˇejak´e cestˇe, ˇr´ık´ame cesta v G.
∗ Podgrafu H ⊆ G, kter´ y je isomorfn´ı nˇejak´emu u ´ pln´emu grafu, ˇr´ık´ame klika v G.
(Nˇekdy se za kliku povaˇzuje pouze takov´y u ´ pln´y podgraf, kter´y je maxim´aln´ı vzhledem k uspoˇr´ad´an´ı inkluz´ı.)
∗ Podmnoˇ zinˇe vrchol˚ u X ⊆ V (G), mezi kter´ymi nevedou v G v˚ ubec ˇz´adn´e hrany,
ˇr´ık´ame nez´avisl´a mnoˇzina X v G.
∗ Indukovan´ emu podgrafu H ⊆ G, kter´y je isomorfn´ı nˇejak´e kruˇznici, ˇr´ık´ame induko-
van´a kruˇznice v G.
Koment´ aˇ r: Uvaˇzujme n´ asleduj´ıc´ı uk´azky graf˚ u: 6 s
s5
6 s
1 s
s4
2 s
s5
1 s
s3
s4
2 s
s3
Prvn´ı z uk´azan´ ych graf˚ u napˇr´ıklad neobsahuje ˇz´adn´ y troj´ uheln´ık, ale obsahuje kruˇznici d´elky 4, dokonce indukovanou. Druh´ y graf troj´ uheln´ık obsahuje a kruˇznici d´elky 4 takt´eˇz. Prvn´ı graf obsahuje cestu d´elky 4 na vrcholech 1, 2, 3, 4, 5, ale ta nen´ı indukovan´ a. Indukovan´ a cesta d´elky 4 v nˇem je tˇreba 2, 3, 4, 5, 6. Druh´ y graf tyto cesty tak´e obsahuje, ale naopak ˇz´ adn´ a z nich nen´ı indukovan´ a. Prvn´ı graf m´ a nejvˇetˇs´ı kliku velikosti 2 – jedinou hranu, kdeˇzto druh´ y graf m´ a vˇetˇs´ı kliku na vrcholech 3, 4, 5. Nejvˇetˇs´ı nez´ avisl´a mnoˇzina u obou graf˚ u m´ a 3 vrcholy 2, 4, 6.
Pˇ r´ıklad 7.9. Jsou n´asleduj´ıc´ı dva grafy isomorfn´ı? s
s
s
s
s
s s
s s
s
s
s
Postupovat budeme jako v Pˇr´ıkladˇe 7.7, nejprve ovˇeˇr´ıme, ˇze oba grafy maj´ı stejnˇe mnoho vrchol˚ u i stejnou posloupnost stupˇ n˚ u 2, 2, 2, 2, 3, 3. Pokud se vˇsak budeme snaˇzit naj´ıt mezi nimi isomorfismus, nˇeco st´ale nebude vych´azet, ˇze? Co n´am tedy v nalezen´ı isomorfismu br´an´ı? Pod´ıvejme se, ˇze v druh´em grafu oba vrcholy stupnˇe tˇri maj´ı sv´eho spoleˇcn´eho souseda, tvoˇr´ı s n´ım troj´ uheln´ık. V prvn´ım grafu tomu tak nen´ı, prvn´ı graf dokonce nem´a ˇz´adn´y troj´ uheln´ık. Proto zadan´e dva grafy nejsou isomorfn´ı. ✷ Pozn´ amka: V´ yˇse uveden´e pˇr´ıklady n´ am ukazuj´ı nˇekter´e cesty, jak poznat (tj. naj´ıt nebo vyˇ louˇcit) isomorfismus dvou graf˚ u. Ty vˇsak ne vˇzdy mus´ı fungovat. Cten´ aˇr se m˚ uˇze pt´ at, kde tedy najde nˇejak´ y univerz´ aln´ı postup pro nalezen´ı isomorfismu? Bohuˇzel v´as mus´ıme zklamat, ˇz´adn´ y rozumn´ y univerz´ aln´ı postup nen´ı zn´ am a zat´ım plat´ı, ˇze jedin´a vˇzdy funguj´ıc´ı cesta pro
57
nalezen´ı ˇci nenalezen´ı isomorfismu mezi dvˇema grafy je ve stylu vyzkouˇsejte vˇsechny moˇznosti bijekc´ı mezi vrcholy tˇechto graf˚ u. (Tˇech je, jak zn´ amo, aˇz n!)
7.3
Souvislost graf˚ u, komponenty
D˚ uleˇzitou glob´aln´ı vlastnost´ı graf˚ u je souvislost, tedy moˇznost se v nich pohybovat odkudkoliv kamkoliv pod´el jeho hran, neboli po cest´ach v grafu. Tuto vlastnost si nyn´ı upˇresn´ıme. Lema 7.10. Mˇejme relaci ∼ na mnoˇzinˇe vrchol˚ u V (G) libovoln´eho grafu G takovou, ˇze pro dva vrcholy x ∼ y pr´avˇe kdyˇz existuje v G cesta zaˇc´ınaj´ıc´ı v x a konˇc´ıc´ı v y. Pak ∼ je relac´ı ekvivalence. D˚ ukaz. Relace ∼ je reflexivn´ı, nebot’ kaˇzd´y vrchol je spojen´y s´am se sebou cestou d´elky 0. Symetrick´a je tak´e, protoˇze cestu z x do y snadno v neorientovan´em grafu obr´at´ıme na cestu z y do x. Pro d˚ ukaz tranzitivity si oznaˇcme P cestu z x do y a Q cestu z y do z. Pak P ∪ Q nemus´ı b´yt cesta; mohou se navz´ajem prot´ınat. Avˇsak pokud oznaˇc´ıme P ′ ⊆ P ˇc´ast cesty z x do prvn´ıho vrcholu v pr˚ uniku s Q, tak P ′ ∪ Q uˇz je cesta z x do z. ✷ Definice 7.11. Komponentami souvislosti grafu G nazveme tˇr´ıdy ekvivalence v´yˇse popsan´e (Lema 7.10) relace ∼ na V (G). Jinak se tak´e komponentami souvislosti mysl´ı podgrafy indukovan´e na tˇechto tˇr´ıd´ach ekvivalence. Koment´ aˇ r: Pod´ıvejte se, kolik komponent souvislosti m´ a tento graf: s
s
s
s s
s
s
s
s
s
s s
s
Vid´ıte v obr´ azku vˇsechny tˇri komponenty? Jedna z nich je izolovan´ ym vrcholem, druh´a hranou (tj. grafem isomorfn´ım K2 ) a tˇret´ı je to zb´ yvaj´ıc´ı.
Definice 7.12. Graf G je souvisl´ y pokud je G tvoˇren´y nejv´yˇse jednou komponentou souvislosti, tj. pokud kaˇzd´e dva vrcholy G jsou spojen´e cestou. Pozn´ amka: Pr´azdn´ y graf je souvisl´ y a m´ a 0 komponent. Koment´ aˇ r: Kter´ y z tˇechto dvou graf˚ u je souvisl´ y?
7.4
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
Stromy – grafy bez kruˇ znic
Podrobnˇejˇs´ı studium nˇekter´ych uˇziteˇcn´ych aspekt˚ u graf˚ u zaˇcneme u toho nejjednoduˇsˇs´ıho u pouˇz´ıvan´ych typu grafu – na stromech, jeˇz jsou mimo jin´e z´akladem mnoha datov´ych typ˚ v informatice. 58
Koment´ aˇ r: s s s s s
s
s
s
s
s
s
s
s
s s
s s s s
s
s s
Charakteristick´ ymi znaky strom˚ u je absence kruˇznic a souvislost. . .
Definice 7.13. Strom je jednoduch´y souvisl´y graf T bez kruˇznic. Koment´ aˇ r: Obecnˇeji les je jednoduch´ y graf bez kruˇznic (nemus´ı b´ yt souvisl´ y). Komponenty souvislosti lesa jsou stromy. Jeden vrchol bez hran a pr´ azdn´ y graf jsou tak´e stromy. Grafy bez kruˇznic tak´e obecnˇe naz´ yv´ ame acyklick´e.
Vlastnosti strom˚ u Pˇrehled z´akladn´ıch vlastnost´ı strom˚ u je pro n´as z´aroveˇ n pˇr´ıleˇzitost´ı si uk´azat nˇekolik nov´ych hezk´ych matematick´ych d˚ ukaz˚ u a nauˇcit se spr´avnˇe zd˚ uvodˇ novat v oblasti graf˚ u. Lema 7.14. Strom s v´ıce neˇz jedn´ım vrcholem obsahuje vrchol stupnˇe 1. D˚ ukaz: Souvisl´y graf s v´ıce neˇz jedn´ım vrcholem nem˚ uˇze m´ıt vrchol stupnˇe 0. Proto vezmeme strom T a v nˇem libovoln´y vrchol v. Sestroj´ıme nyn´ı co nejdelˇs´ı cestu S v T zaˇc´ınaj´ıc´ı ve v: S zaˇcne libovolnou hranou vych´azej´ıc´ı z v; v kaˇzd´em dalˇs´ım vrcholu u, do kter´eho se dostaneme a m´a stupeˇ n vˇetˇs´ı neˇz 1, lze pak pokraˇcovat cestu S dalˇs´ı novou hranou. S s s
v s❢
s❢
s
s
...
s
Pokud by se v S poprv´e zopakoval nˇekter´y vrchol, z´ıskali bychom kruˇznici, coˇz ve stromˇe nelze. Proto cesta S mus´ı jednou skonˇcit v nˇejak´em vrcholu stupnˇe 1 v T . ✷ Koment´ aˇ r: Zamyslete se, proˇc v kaˇzd´em stromˇe s v´ıce neˇz jedn´ım vrcholem jsou alespoˇ n dva vrcholy stupnˇe 1 (odpovˇed’ je skryt´a uˇz v pˇredchoz´ım d˚ ukaze). Z´ aroveˇ n si odpovˇezte, jestli lze tvrdit, ˇze kaˇzd´ y strom s v´ıce neˇz jedn´ım vrcholem obsahuje tˇri vrcholy stupnˇe 1.
Vˇ eta 7.15. Strom na n vrcholech m´a pˇresnˇe n − 1 hran pro n ≥ 1. D˚ ukaz: Toto tvrzen´ı dok´aˇzeme indukc´ı podle n. Strom s jedn´ım vrcholem m´a n−1 = 0 hran. Necht’ T je strom na n > 1 vrcholech. Podle Lematu 7.14 m´a T vrchol v stupnˇe 1. Oznaˇcme T ′ = T − v graf vznikl´y z T odebr´an´ım vrcholu v. Pak T ′ je tak´e souvisl´y bez kruˇznic, tud´ıˇz strom na n − 1 vrcholech. Dle indukˇcn´ıho pˇredpokladu T ′ m´a n − 1 − 1 hran, a proto T m´a n − 1 − 1 + 1 = n − 1 hran. ✷ Vˇ eta 7.16. Mezi kaˇzd´ymi dvˇema vrcholy stromu vede pr´avˇe jedin´a cesta.
59
P1 s
D˚ ukaz: s u ❢
s
s
P2
H
s
s
s
s s
s
s v ❢
s
Jelikoˇz strom T je souvisl´y dle definice, mezi libovoln´ymi dvˇema vrcholy u, v vede nˇejak´a cesta. Pokud by existovaly dvˇe r˚ uzn´e cesty P1 , P2 mezi u, v, tak bychom vzali jejich symetrick´y rozd´ıl, podgraf H = P1 ∆P2 s nepr´azdnou mnoˇzinou hran, kde H zˇrejmˇe m´a vˇsechny stupnˇe sud´e. Na druhou stranu se vˇsak podgraf stromu mus´ı opˇet skl´adat z komponent strom˚ u, a tud´ıˇz obsahovat vrchol stupnˇe 1 podle Lematu 7.14, spor. Proto cesta mezi u a v existuje jen jedna. ✷ D˚ usledek 7.17. Pˇrid´an´ım jedn´e nov´e hrany do stromu vznikne pr´avˇe jedna kruˇznice. D˚ ukaz: Necht’ mezi vrcholy u, v ve stromu T nen´ı hrana. Pˇrid´an´ım hrany e = uv vznikne pr´avˇe jedna kruˇznice z e a jedin´e cesty mezi u, v v T podle Vˇety 7.16. ✷ Alternativn´ı charakterizace strom˚ u Z pˇredchoz´ıch tvrzen´ı vypl´yv´a n´asleduj´ıc´ı alternativn´ı charakterizace strom˚ u, kter´a ukazuje d˚ uleˇzitost jich samotn´ych i jako tzv. koster obecn´ych graf˚ u (viz Odd´ıl 8.4). Na dan´e mnoˇzinˇe vrchol˚ u je (vzhledem k inkluzi mnoˇzin hran) strom •
minim´aln´ı souvisl´y graf (plyne z Vˇety 7.16)
•
a z´aroveˇ n maxim´aln´ı acyklick´y graf (plyne z D˚ usledku 7.17).
Jen tak mimochodem, kolik dok´aˇzete nal´ezt neisomorfn´ıch strom˚ u na 4 nebo 5 vrcholech? Vid´ıte, ˇze jich nen´ı mnoho? Nakreslete si je vˇsechny.
7.5
Pouˇ zit´ı a implementace graf˚ u
Z´avˇerem si v naˇsem studijn´ım textu nast´ın´ıme nˇekter´e z´akladn´ı motivace pro zaveden´ı a pouˇzit´ı graf˚ u pˇri popisu a ˇreˇsen´ı probl´em˚ u napˇr´ıklad v informatice. Pˇ r´ıklad 7.18. Uk´azky nˇekter´ych probl´em˚ u ze ˇzivota“ popsateln´ych grafy. ” Podot´yk´ame, ˇze tyto uk´azky jsou ˇcasto velmi zjednoduˇsen´e (pro jejich lepˇs´ı pˇr´ıstupnost ˇsirok´emu okruhu ˇcten´aˇr˚ u), ale to neub´ır´a jejich motivaˇcn´ımu potenci´alu. • Vyj´adˇren´ı mezilidsk´ych vztah˚ u – maj´ı se r´adi“, kamar´ad´ı se“, nesnesou jeden ” ” ” druh´eho“, apod: Zde jednotliv´e osoby tvoˇr´ı vrcholy grafu a vztahy jsou hranami (ˇcasto neorientovan´e, ale i orientace je pˇr´ıpustn´a). Vˇsimnˇeme si coby zaj´ımavosti, jak tento model pˇrirozenˇe preferuje p´arov´y“ pohled na vztahy – hrany pˇrece spojuj´ı jen dvojice vrchol˚ u. Tˇrebaˇze ” napˇr´ıklad vztah kamar´ad´ı se“ m˚ uˇze b´yt obecnˇe platn´y pro vˇetˇs´ı skupinky lid´ı neˇz ” dvojice, stejnˇe se obvykle vyjadˇruje klikou v grafu (kaˇzd´ı dva v naˇsem druˇzstvu jsou dobˇr´ı kamar´adi. . . ). Tato obecnˇe poj´ıman´a tendence vyjadˇrovat i sloˇzitˇejˇs´ı vztahy tˇemi p´arov´ymi je vodou na ml´yn pouˇzit´ı teorie graf˚ u jako t´emˇeˇr univerz´aln´ıho vyjadˇrovac´ıho prostˇredku v podobn´ych pˇr´ıpadech. 60
Na druhou stranu i teorie graf˚ u disponuje pojmem tzv. hypergrafu umoˇzn ˇ uj´ıc´ıho pouˇzit´ı hran libovoln´e arity (poˇctu koncov´ych vrchol˚ u), ale rozsah v´yskytu hypergraf˚ u v teorii i aplikac´ıch je oproti graf˚ um vskutku zanedbateln´y. • Vyj´adˇren´ı z´avislost´ı mezi objekty nebo procesy:
Pˇredstavme si situace, ve kter´ych jednotliv´e entity (modelovan´e jako vrcholy) z´avis´ı na v´ystupech jin´ych entit a naopak poskytuj´ı v´ystupy dalˇs´ı entit´am. Typick´ym pˇr´ıkladem mohou b´yt z´avislosti jednotliv´ych krok˚ u v´yrobn´ıho nebo rozhodovac´ıho procesu. Ty pak vedou k definici orientovan´eho grafu na dan´e mnoˇzinˇe vrchol˚ u/entit, tj. pouˇzit´ı hran se ˇsipkami“. Vˇsimnˇeme si, ˇze z´avislosti ˇcasto b´yvaj´ı ˇcasov´eho charak” teru (pˇriˇcemˇz smˇer z´avislosti je implicitnˇe jasn´y) a pak je nezbytnou doplˇ nkovou podm´ınkou vylouˇcen´ı v´yskytu orientovan´ych cykl˚ u v modelov´em grafu. Na druhou stranu existuj´ı i situace, kdy cyklick´e z´avislosti jsou dovoleny a maj´ı sv˚ uj v´yznam. Pro jeˇstˇe jednu uk´azku z´avislost´ı z bˇeˇzn´eho ˇzivota informatika se pod´ıv´ame na spr´avu bal´ıˇck˚ u softwaru napˇr´ıklad v Linuxov´yxh distribuc´ıch. V tom pˇr´ıpadˇe jsou jednotliv´e bal´ıˇcky vrcholy grafu, jejich vyˇzadovan´e z´avislosti popisuj´ı odchoz´ı hrany a jejich poskytovan´e vlastnosti jsou pˇr´ıchoz´ımi hranami grafu z´avislost´ı. Korektn´ı instalace zvolen´eho bal´ıˇcku pak ˇreˇs´ı probl´em zahrnut´ı vˇsech dalˇs´ıch vrchol˚ u dosaˇziteln´ych“ ze ” zvolen´eho. Vˇse je nav´ıc komplikov´ano spr´avou verz´ı bal´ıˇck˚ u, ale to uˇz je mimo r´amec naˇseho u ´ vodn´ıho slova.
• Modelov´an´ı technick´ych ˇci dopravn´ıch s´ıt´ı grafy:
V takov´ych pˇr´ıpadech b´yvaj´ı vrcholy grafu jednotliv´a technick´a zaˇr´ızen´ı jako tˇreba rozvodny, routery, kˇriˇzovatky a podobnˇe, kdeˇzto hrany jsou tvoˇreny spojnicemi/veˇ den´ım mezi vrcholy. Casto se zde setk´av´ame s orientovan´ymi grafy a obecnˇe multigrafy. K t´eto probematice se bl´ıˇze vyjadˇruje Lekce 9.
• Vizualizace vztah˚ u a z´avislost´ı pro lidsk´eho pozorovatele:
Nejen pˇri ˇreˇsen´ı cviˇcn´ych pˇr´ıklad˚ u v naˇs´ı uˇcebnici, ale i v mnoha re´aln´ych aplikac´ıch vyuˇz´ıvaj´ıc´ıch grafy jako modely, je velmi potˇrebn´e tyto grafy vizualizovat (tj. hezky nakreslit) pro lidsk´eho pozorovatele. Jedn´a se obecnˇe o pomˇernˇe obt´ıˇzn´y u ´ kol, kter´y pˇresahuje hranice naˇseho textu. ✷
Zpracov´ an´ı grafu poˇ c´ıtaˇ cem Mˇejme jednoduch´y graf G na n vrcholech a znaˇcme vrcholy jednoduˇse ˇc´ısly V (G) = {0, 1, . . . , n − 1}. Pro poˇc´ıtaˇcovou implementaci grafu G se nab´ızej´ı dva z´akladn´ı zp˚ usoby, kter´e budeme implicitnˇe vyuˇz´ıvat i v nˇekter´ych algoritmech n´asleduj´ıc´ıch lekc´ı. • Implementace matic´ı sousednosti, tj. dvourozmˇern´ym polem g[][], ve kter´em g[i][j]=1 znamen´a hranu mezi vrcholy i a j. • Implementace v´yˇctem soused˚ u, tj. pouˇzit´ım opˇet dvourozmˇern´e pole h[][] a nav´ıc pole d[] stupˇ n˚ u vrchol˚ u. Zde prvky h[i][0],h[i][1],...,h[i][d[i]-1] ud´avaj´ı seznam soused˚ u vrcholu i. Pozn´ amka: D´avejte si pozor na symetrii hran v implementaci! To znamen´a, ˇze pokud uloˇz´ıte hranu g[i][j]=1, tak mus´ıte z´ aroveˇ n uloˇzit i hranu g[j][i]=1, jinak se doˇck´ate nepˇr´ıjemn´ ych pˇrekvapen´ı. Tot´eˇz se t´ yk´ a i seznam˚ u soused˚ u.
61
Koment´ aˇ r: Implementace matic´ı sousednosti je hezk´a svou jednoduchost´ı. Druh´ a moˇznost se vˇsak mnohem l´epe hod´ı pro grafy s mal´ ym poˇctem hran, coˇz nast´ av´a ve vˇetˇsinˇe praktick´ ych aplikac´ı. (Nav´ıc je implementace v´ yˇctem soused˚ u vhodn´ a i pro multigrafy.) Ke graf˚ um lze do zvl´aˇstn´ıch pol´ı pˇridat tak´e ohodnocen´ı vrchol˚ u a hran libovoln´ ymi ˇc´ısly ˇci znaˇckami. . .
Rozˇ siˇ ruj´ıc´ı studium Grafy m˚ uˇzeme v informatice potkat doslova na kaˇzd´em kroku, mimo jin´e hojnˇe uˇz v z´akladn´ıch kurzech algoritmizace. Nejen ˇze grafy (pˇredevˇs´ım stromy) jsou z´akladem mnoha program´atorsk´ ych datov´ ych struktur, ale pˇredstavuj´ı i vhodn´ y model pro spoustu praktick´ ych probl´em˚ u. Onˇech p´ ar lekc´ı teorie graf˚ u v naˇsem uˇcebn´ım textu je jen lehk´ ym u ´vodem, pˇreˇcemˇz na FI MU lze pokraˇcovat v jej´ım studiu v pˇredmˇetu MA010. Rozs´ahl´ y matematick´ y u ´vod do teorie graf˚ u je zahrnut ve skvˇel´e knize Kapitoly z diskr´etn´ı matematiky autor˚ u Jiˇr´ıho Matouˇska a Jaroslava Neˇsetˇrila. Vˇrele ji doporuˇcujeme jako doplˇ nkov´ y studijn´ı zdroj vˇsem, kteˇr´ı chtˇej´ı l´epe pochopit grafy z jejich matematick´e str´ anky.
62
8
Proch´ azen´ı grafu a odvozen´ eu ´ lohy ´ Uvod Na rozd´ıl od pˇredchoz´ı lekce, kter´a se zjednoduˇsenˇe ˇreˇceno zab´ yvala grafy z pohledu matematika, tedy pod´ an´ım definice a obr´ azk˚ u, nyn´ı se hloubˇeji pod´ıv´ame na grafy z algoritmick´e ˇci program´atorsk´e perspektivy. Proto se v prv´e ˇradˇe pod´ıv´ame na obecn´e sch´ema proch´ azen´ı grafu, kter´e je z´ akladem mnoha uˇziteˇcn´ ych algoritm˚ u na grafech. Pot´e se hloubˇeji zamˇeˇr´ıme na dvˇe specifick´e grafov´e u ´lohy – hled´ an´ı nejkratˇs´ı cesty a minim´ aln´ı kostry, hojnˇe se vyskytuj´ıc´ı v mnoha praktick´ ych obmˇen´ ach. Na z´akladˇe obecn´eho sch´ematu si uvedeme jejich jednoduch´e a velmi efektivn´ı algoritmy.
C´ıle Zjednoduˇsenˇe pod´ ame obecn´e sch´ema algoritmu proch´ azen´ı grafu. Definujeme pot´e dvˇe konkr´etn´ı grafov´e u ´lohy, hled´ an´ı nejkratˇs´ı cesty mezi dvˇema vrcholy a hled´ an´ı nejmenˇs´ı kostry, oboj´ı v grafu s hranami ohodnocen´ ymi re´ aln´ ymi d´elkami. Na z´akladˇe pˇredchoz´ıho pak vysvˇetl´ıme Dijkstr˚ uv algoritmus pro nejkratˇs´ı cesty a Kruskal˚ uv a Jarn´ık˚ uv algoritmus pro minim´aln´ı kostru.
8.1
Jak obecnˇ e proj´ıt souvisl´ y graf
S u ´ lohou proch´azen´ı grafu se sv´ym zp˚ usobem setk´avaj´ı uˇz dˇeti, kdyˇz hledaj´ı cestu z bludiˇstˇe (jejich naivn´ı postup se d´a pˇrirovnat k proch´azen´ı do hloubky“). Cel´y probl´em ” m´a ale mnohem ˇsirˇs´ı z´abˇer a s vhodnou implementac´ı dodateˇcn´ych lok´aln´ıch funkc´ı lze pouh´ym prohled´an´ım grafu podat odpovˇed’ na jin´e zaj´ımav´e ot´azky, jako naj´ıt nejkratˇs´ı cestu, minim´aln´ı kostru, komponenty vyˇsˇs´ı souvislosti, apod. Nav´ıc se proch´azen´ı grafu vyskytuje jako pod´ uloha v jin´ych algoritmech. Metoda 8.1. Sch´ ema algoritmu pro proch´ azen´ı grafem Pro vytvoˇren´ı co nejobecnˇejˇs´ıho sch´ematu si pom˚ uˇzeme n´asleduj´ıc´ımi datov´ymi stavy a pomocnou strukturou: •
Vrchol grafu: m´a stavy . . . ∗ iniciaˇ cn´ı – dostane na zaˇc´atku,
∗ nalezen´ y – implicitn´ı stav pot´e, co jsme jej pˇres nˇekterou hranu nalezli (a odloˇzili
•
ke zpracov´an´ı pozdˇeji), ∗ zpracovan´ y – pot´e, co jsme uˇz probrali vˇsechny hrany z nˇej vych´azej´ıc´ı, ∗ (pˇr´ıpadnˇ e jeˇstˇe stav post-zpracovan´y“, po dokonˇcen´ı vˇsech jeho n´asledn´ık˚ u). ” ´ Uschovna: je pomocn´a datov´a struktura (mnoˇzina s dodateˇcn´ymi atributy),
∗ udrˇ zuje odloˇzen´e, tj. nalezen´e a jeˇstˇe nezpracovan´e vrcholy, spolu s dodateˇcnou
specifickou informac´ı.
•
Zp˚ usob, kter´ym se vyb´ıraj´ı vrcholy z u ´ schovny ke zpracov´an´ı, urˇcuje variantu algoritmu proch´azen´ı grafu.
•
V prohled´avan´ych vrcholech a hran´ach se volitelnˇe prov´adˇej´ı dodateˇcn´e programov´e akce pro prohled´an´ı a zpracov´an´ı naˇseho grafu.
63
Samotn´y algoritmus pak pop´ıˇseme v n´asleduj´ıc´ıch obecn´ych bodech. (V t´eto souvislosti dod´av´ame, ˇze podrobnˇeji se budeme zp˚ usobu form´aln´ıho matematick´eho z´apisu algoritm˚ u vˇenovat v Lekci 10, ale zde si vystaˇc´ıme s bˇeˇzn´ym jazykem.) e proch´ azen´ı souvisl´ e komponenty G grafu Algoritmus 8.2. Generick´ • Vstup: Souvisl´ y graf G, dan´y seznamem vrchol˚ u a seznamy vych´azej´ıc´ıch hran z kaˇzd´eho vrcholu, plus pˇr´ıpadn´e ohodnocen´ı vrchol˚ u a hran. •
Vybereme libovoln´y poˇc´atek prohled´av´an´ı u ∈ V (G); u ´ schovna U ← {u}.
•
Dokud U 6= ∅, opakujeme:
∗ Zvol´ıme libovolnˇ e v ∈ U; odebereme U ← U \ {v}.
∗ Pokud stav(v) = zpracovan´ y, jdeme zpˇet na start cyklu.
(!) (*)
∗ Pˇr´ıpadnˇ e provedeme libovolnou akci ZPRACUJ(v).
∗ Pro vˇsechny hrany f ∈ E(G) vych´ azej´ıc´ı z v provedeme:
– Necht’ w je druh´y konec hrany f = vw; – pokud stav(w) 6= zpracovan´y, odloˇz´ıme U ← U ∪ {w}.
(**)
∗ stav(v) ← zpracovan´ y; na start cyklu. •
Souvisl´y G je cel´y prohledan´y a zpracovan´y.
•
V´ystup: Pˇr´ıpadn´e v´ysledky spoˇc´ıtan´e bˇehem prohled´av´an´ı.
Pozor, vˇsimnˇete se, ˇze v bodˇe (**) obecnˇe doch´az´ı k n´asobn´emu ukl´ad´an´ı odloˇzen´ych vrchol˚ u, coˇz v praktick´e implementaci ˇcasto obejdeme pouhou zmˇenou odloˇzen´eho stavu“. ” Doplˇ nkov´y bod (*) je nutn´y jen v pˇr´ıpadˇe, ˇze n´asobnˇe uloˇzen´e kopie stejn´eho vrcholu v z˚ ust´avaj´ı v u ´ schovnˇe. Nˇ ekter´ e implementace proch´ azen´ı grafu V Algoritmu 8.2 si dobˇre vˇsimnˇete, jak je vlastnˇe proveden krok (!); zvol´ıme libovolnˇe ” v ∈ U“ ? Pr´avˇe tato volba je kl´ıˇcov´a pro v´yslednou podobu projit´ı grafu G: •
Proch´azen´ı do ˇs´ıˇrky“, BFS – u ´ schovna U je implementovan´a jako fronta, neboli je ” voleno v ∈ U od prvn´ıch vrchol˚ u vloˇzen´ych do u ´ schovny.
•
Proch´azen´ı do hloubky“, DFS – u ´ schovna U je implementovan´a jako z´asobn´ık, neboli ” je voleno v ∈ U od pozdˇeji vloˇzen´ych do u ´ schovny. (Zde je extr´emnˇe d˚ uleˇzit´e, ˇze opakovan´e vloˇzen´ı vrcholu v do U jej posune na vrˇsek z´asobn´ıku.)
D´ale zm´ın´ıme i tyto dva konkr´etn´ı, star´e a dobˇre zn´am´e algoritmy pˇr´ımo zaloˇzen´e na prohled´av´an´ı grafu: • Dijkstr˚ uv algoritmus pro nejkratˇs´ı cestu – z u ´ schovny vyb´ır´ame vˇzdy vrchol nejbliˇzˇs´ı (dosud urˇcenou celkovou vz´alenost´ı) k poˇc´ateˇcn´ımu u. •
Jarn´ık˚ uv algoritmus pro minim´aln´ı kostru – z u ´ schovny vyb´ır´ame vˇzdy vrchol nejbliˇzˇs´ı (d´elkou hrany) ke kter´emukoliv jiˇz zpracovan´emu vrcholu.
Pozn´ amka: Jarn´ık˚ uv algoritmus se ve svˇetov´e literatuˇre se obvykle pˇripisuje Ameriˇcanu Primovi, kter´ y jej vˇsak objevil a publikoval aˇz skoro 30 let po Jarn´ıkovi. A co v´ıce, p˚ uvod probl´emu minim´aln´ı kostry je u ´zce sv´az´ an s Brnem, jak si ˇrekneme za chv´ıli.
64
Konkr´ etn´ı uk´ azky BFS a DFS Pˇ r´ıklad 8.3. Uk´azka pr˚ uchodu n´asleduj´ıc´ım grafem do ˇs´ıˇrky z vrcholu a. f s
s
g s
s
e
j
i
h s
s s a ❢
s
s
d
s
c
b
Znaˇcen´ı v prohled´avan´em grafu: barevnˇe aktu´alnˇe zpracov´avan´y vrchol a jeho hrany objevuj´ıc´ı nov´e vrcholy, krouˇzkem a plnou ˇcarou jiˇz zpracovan´e vrcholy a hrany, tlustˇe v´ysledn´y strom prohled´av´an´ı. f s g s
s s
e
j
f s s
d
i s c h s s a s❢ s b f s g
s
s s
j
g s❢
s s
f s s
d
e
i s❢ c h s❢ s❢ s b a s❢ ❢
j
g
❢ s
s s
f s s
d
j
g s❢
s
g s
s
f s s
d
e
i s❢ c h s❢ s ❢ s b a s❢ ❢
e
j
g
s❢
s s
s
d
e s❢ d
j
i s c h s❢ s ❢ s ❢ s b a ❢ f s❢
s❢ d
s❢ j
s
i s c h s❢ s ❢ s s b a ❢
e
i s s c h ❢ s ❢ s b a s❢ ❢ f s
s❢ d
j
s
e
i s c h s❢ s a s❢ s b
e
i s c h s❢ s❢ s b a s❢ ❢ f s
g s
s
g s❢
s❢ e s❢ d
s❢ j
i s❢ c h s❢ s ❢ s ❢ s b a ❢ ✷
Pˇ r´ıklad 8.4. Uk´azka pr˚ uchodu pˇredchoz´ım grafem do hloubky z vrcholu a. f s g s
s s
e
j
f s s
d
i s c h s s s s b a ❢ f s g s
s s
j
e
g s
s s
i s❢ c h s s s b a s❢ ❢
j
f s s
d
i s c h s s s b a s❢ ❢ f s
s❢ d
e
g s
s❢ e s
j
s❢ d
s
e
j
s
d
i s❢ c h s s s ❢ s b a ❢ f s
i s❢ c h s s s b a s❢ ❢ 65
g s
s
g s
s❢ e s❢ j
s❢ d
i s❢ c h s s s ❢ s b a ❢
f s g s❢
s❢ e s❢ j
f s s❢ d
i s❢ c h s s s b a s❢ ❢
g s❢
s❢ e s❢ j
f s❢ s❢ d
i s❢ c h s❢ s s b a s❢ ❢
g s❢
s❢ e s❢ j
s❢ d
i s❢ c h s❢ s ❢ s ❢ s b a ❢ ✷
8.2
Vzd´ alenost v grafu
Mimo prohled´av´an´ı cel´eho souvisl´eho grafu, ˇc´ımˇz se zab´yval pˇredchoz´ı odd´ıl, je ˇcastou u ´ lohou se dostat z m´ısta na m´ısto nejkratˇs´ı cestou. Ve zjednoduˇsen´em pod´an´ı povaˇzujeme kaˇzdou hranu grafu za jednotkovˇe dlouhou a definujeme n´asleduj´ıc´ı. Definice 8.5. Vzd´ alenost dG (u, v) dvou vrchol˚ u u, v v grafu G je d´ana d´elkou nejkratˇs´ı cesty mezi u a v v G. Pokud cesta mezi u, v neexistuje, je vzd´alenost definov´ana dG (u, v) = ∞. Koment´ aˇ r: Neform´alnˇe ˇreˇceno, vzd´alenost mezi u, v je rovna nejmenˇs´ımu poˇctu hran, kter´e mus´ıme pˇrekonat, pokud se chceme dostat z u do v. Speci´alnˇe dG (u, u) = 0. s
u s❢
s
s
s
s
s
s❢
v
Fakt: V neorientovan´em grafu je vzd´alenost symetrick´a, tj. dG (u, v) = dG (v, u). uheln´ıkovou nerovnost: Lema 8.6. Vzd´alenost v grafech splˇ nuje troj´ ∀u, v, w ∈ V (G) : dG (u, v) + dG (v, w) ≥ dG (u, w) . D˚ ukaz. Postupujeme podobnˇe jako v d˚ ukaze Lematu 7.10 – pokud m´ame cesty P, P ′ mezi u, v a mezi v, w, tak existuje cesta Q ⊆ P ∪ P ′ mezi u, w, jeˇz m´a zˇrejmˇe d´elku nejv´yˇse dG (u, v) + dG (v, w). Skuteˇcn´a vzd´alenost mezi u, w pak uˇz m˚ uˇze b´yt jen menˇs´ı. ✷ BFS a zjiˇ stˇ en´ı vzd´ alenosti Jak nejsnadnˇeji urˇc´ıme vzd´alenost v grafu? Staˇc´ı si povˇsimnout hezk´ych vlastnost´ı proch´azen´ı grafu do ˇs´ıˇrky. Vˇ eta 8.7. Algoritmus proch´azen´ı grafu do ˇs´ıˇrky lze pouˇz´ıt pro v´ypoˇcet grafov´e vzd´alenosti z dan´eho vrcholu u. Toto je pomˇernˇe jednoduch´a aplikace, kdy poˇc´ateˇcn´ımu vrcholu u pˇriˇrad´ıme vzd´alenost 0, a pak vˇzdy kaˇzd´emu dalˇs´ımu nalezen´emu vrcholu v pˇriˇrad´ıme vzd´alenost o 1 vˇetˇs´ı neˇz byla vzd´alenost vrcholu, ze kter´eho byl nalezen. D˚ ukaz se op´ır´a o n´asleduj´ıc´ı tvrzen´ı:
66
∗ Necht’ u, v, w jsou vrcholy souvisl´ eho grafu G takov´e, ˇze dG (u, v) < dG (u, w). Pak
pˇri algoritmu proch´azen´ı grafu G do ˇs´ıˇrky z vrcholu u je vrchol v nalezen dˇr´ıve neˇz vrchol w. V d˚ ukaze postupujeme indukc´ı podle vzd´alenosti dG (u, v): Pro dG (u, v) = 0, tj. u = v je tvrzen´ı jasn´e – vrchol u jako poˇc´atek prohled´av´an´ı byl nalezen prvn´ı. Proto necht’ dG (u, v) = d > 0 a oznaˇcme v ′ souseda vrcholu v bliˇzˇs´ıho k u, tedy dG (u, v ′) = d − 1. Obdobnˇe uvaˇzme libovoln´eho souseda w ′ vrcholu w. Pak dG (u, w ′) ≥ dG (u, w) − 1 > dG (u, v) − 1 = dG (u, v ′) , a tud´ıˇz vrchol v ′ byl nalezen v prohled´av´an´ı do ˇs´ıˇrky dˇr´ıve neˇz vrchol w ′ podle indukˇcn´ıho pˇredpokladu. To znamen´a, ˇze v ′ se dostal do fronty u ´ schovny dˇr´ıve neˇz w ′. Proto soused´e v ′ (mezi nimiˇz je v, ale ne w nebot’ v ′ w nen´ı hranou) jsou pˇri pokraˇcuj´ıc´ım prohled´av´an´ı tak´e nalezeni dˇr´ıve, neˇz w coby soused w ′ . ✷
8.3
Hled´ an´ı nejkratˇ s´ı cesty
V dalˇs´ım textu se jiˇz budeme vˇenovat graf˚ um s obecnˇe dlouh´ymi“ hranami. Z´aroveˇ n ” pˇredes´ıl´ame, ˇze pˇredn´aˇsen´a l´atka stejnˇe dobˇre m˚ uˇze stavˇet na orientovan´ych grafech. Definice: V´aˇzen´y graf je graf G spolu s ohodnocen´ım w hran re´aln´ymi ˇc´ısly w : E(G) → . Kladnˇe v´aˇzen´y graf (G, w) je takov´y, ˇze w(e) > 0 pro vˇsechny hrany e.
R
Definice 8.8. (v´ aˇ zen´ a vzd´ alenost) Mˇejme (kladnˇe) v´aˇzen´y graf (G, w). V´aˇzenou d´elkou cesty P je X dw w(e) . G (P ) = e∈E(P )
V´aˇzenou vzd´alenost´ı v (G, w) mezi dvˇema vrcholy u, v pak je
w dw G (u, v) = min{dG (P ) : P je cesta s konci u, v} .
Lema 8.9. V´aˇzen´a vzd´alenost v nez´apornˇe v´aˇzen´ych grafech (i orientovan´ych grafech) splˇ nuje troj´ uheln´ıkovou nerovnost. Pˇ r´ıklad 8.10. Pod´ıvejme se na n´asleduj´ıc´ı ohodnocen´y graf (ˇc´ısla u hran ud´avaj´ı jejich v´ahy–d´elky.) s
s
1
1
1
s
s
1 a
s❢
3
4 s
c
3
1 s❢ b
Vzd´alenost mezi vrcholy a, c je 3, stejnˇe tak mezi b, c. Co ale mezi a, b? Je jejich vzd´alenost 6? Kdepak, vzd´alenost a, b je 5, jej´ı cesta vede po horn´ıch“ vrcholech, jak je ” vyznaˇceno. Povˇsimnˇete si, ˇze tento pˇr´ıklad z´aroveˇ n ukazuje, ˇze postup prohled´av´an´ım do ˇs´ıˇrky nen´ı korektn´ı pro hled´an´ı vzd´alenost´ı ve v´aˇzen´em grafu. ✷
67
Probl´ em nejkratˇ s´ı cesty Probl´em nejkratˇs´ı cesty mezi dvojic´ı vrchol˚ u prostˇe hled´a v´aˇzenou vzd´alenost vrchol˚ u a pˇr´ısluˇsnou cestu. Jedn´a se patrnˇe o nejzn´amˇejˇs´ı grafov´y“ probl´em v praktick´ych ap” likac´ıch, jenˇz nalezneme od vyhled´av´an´ı dopravn´ıch spojen´ı, GPS navigac´ı, pl´anov´an´ı pohyb˚ u robota, aˇz po tˇreba rozhodovac´ı syst´emy. Tento probl´em se nejˇcastˇeji ˇreˇs´ı implementac´ı klasick´eho Dijkstrova algoritmu, kter´y je vhodnou u ´ pravou proch´azen´ı grafu do ˇs´ıˇrky – vyb´ır´a vˇzdy vrchol s nejmenˇs´ı vzd´alenost´ı mezi uschovan´ymi vrcholy. Dijkstr˚ uv algoritmus Algoritmus 8.11. Hled´ an´ı nejkratˇ s´ı cesty mezi u a v v kladnˇ e v´ aˇ zen´ em grafu. Tento algoritmus vyuˇz´ıv´a promˇennou hodnotu (pole) d(x) k ukl´ad´an´ı nalezen´ych vzd´alenost´ı do kaˇzd´eho vrcholu x, vedle samotn´eho vrcholu, pˇriˇcemˇz tuto hodnotu postupnˇe vylepˇsuje“ aˇz do fin´aln´ıho zpracov´an´ı vrcholu. ” • Vstup: Souvisl´ y graf G, dan´y seznamem vrchol˚ u a seznamy vych´azej´ıc´ıch hran z kaˇzd´eho vrcholu, plus v´ahy w hran. Poˇc´ateˇcn´ı vrchol u a koncov´y v. ´ • Uschovna U ← (u, d(u) = 0) . •
Dokud U 6= ∅, opakujeme:
∗ Zvol´ıme (x, d(x)) ∈ Utakov´ e, ˇze d(x) je minim´aln´ı.
Odebereme U ← U \ (x, d(x)) .
∗ Pokud x = v, algoritmus m˚ uˇze skonˇcit.
∗ Pro vˇsechny hrany f ∈ E(G) vych´ azej´ıc´ı z x provedeme:
– Necht’ y je druh´y konec hrany f = xy; a necht’ d′ (y) = d(x) + w(f ) (nov´a cesta do y pˇres x). – Pokud (y, d(y)) 6∈ U, nebo (y, d(y)) d(y) > d′ (y), ∈ U pro odloˇz´ıme U ← U \ {(y, d(y))} ∪ (y, d′ (y)) (v´ymˇena za novou, lepˇs´ı doˇcasnou vzd´alenost do y).
•
V´ystup: d(v) ud´av´a v´aˇzenou vzd´alenost z u do v.
Pozn´ amka: V konkr´etn´ı implementaci Dijkstrova algoritmu nejsp´ıˇse vyuˇzijeme nˇejakou datovou strukturu podporuj´ıc´ı rychl´e vkl´ ad´ an´ı prvk˚ u a vyb´ır´ an´ı podle minim´aln´ı hodnoty kl´ıˇce – nejl´epe tedy haldu, a k tomu pole d[x] pˇr´ımo ukl´adaj´ıc´ı pr˚ ubˇeˇznˇe aktualizovanou doˇcasnou v´aˇzenou vzd´alenost z u do kaˇzd´eho x. Koment´ aˇ r: Kl´ıˇcem k pochopen´ı ˇcinnosti Dijkstrova algoritmu je uvidˇet“, ˇze v kaˇzd´e jeho ” f´azi jsou spr´avnˇe nalezeny vˇsechny nejkratˇs´ı cesty z u vedouc´ı po zpracovan´ ych vrcholech. Postupem prohled´av´an´ı grafu se tak jednou dostaneme aˇz k urˇcen´ı spr´avn´e vzd´alenosti c´ıle v.
Pˇ r´ıklad 8.12. Uk´azka bˇehu Dijkstrova Algoritmu 8.11 pro nalezen´ı nejkratˇs´ı cesty mezi vrcholy u, v v n´asleduj´ıc´ım v´aˇzen´em grafu.
68
2
1
∞ s
s❢
5
∞ s
∞v
2
2
∞
s
3
1
1
3
∞ s
0
2
u
∞
s
5 s❢
s 1
2
∞
ˇ ısla u vrchol˚ Jednotliv´e iterace algoritmu jsou zakresleny n´ıˇze. C´ u v obr´azc´ıch ud´avaj´ı pr˚ ubˇeˇznˇe aktualizovanou doˇcasnou vzd´alenost z u. ∞ s 1 ∞ v s
2
5
∞ s
3
1
0
2
u 2
s5
5
1 s∞
❢ s
s 1
5 3
1
3
s 2 ❢
5
0
2
u
❢ s
s ❢ 1
3
1
2
s4
s 3 ❢
1 s3 ❢
1
5 3
5 3
1
2
s 2 ❢ 2
u
❢ s
1
2
s5
3 s
1 s3
s 2 ❢
3
2
2
s4
s 3 ❢
1 ❢ s3
1
5 3
2
2
u
1
3
❢ s4 1 ❢ s3
3 5
0 ❢ s
❢ s 1
2
1
2
s❢ 3 s❢
1
2
2
1 5
s❢
2
1
s❢ 4
3
0
s ❢
5
u 4 s❢ 1 5s❢ v
1 s3
4 s 1 6s v
2
2 s❢
s ❢
2 s5
5
0
s 2 ❢
1
2
3
2
1
2
5
u
3 s❢
1
4 s 1 7s v
1
2
2
❢ s3 ❢ s
1
❢ s
1 5
0
❢ s
❢ s4
3
2
5
0
2
1
3
u
s 3 ❢
1
2
2
4 s 1 7s v
2
1 5 v 4 ❢ s s
s ❢
s ❢
s 2 ❢
1
5
0 u
2
2
3
2
2
2
5
2 s
1
2
4 s 1 ∞ v s
∞ s
2
4 s 1 7s v
3 s
2
2
3
2 s
2
2
1 ✷
D˚ ukaz spr´ avnosti Vˇ eta 8.13. Dijkstr˚ uv Algoritmus 8.11 pro kladnˇe v´aˇzen´y graf (G, w) vˇzdy spr´avnˇe najde nejkratˇs´ı cestu mezi dan´ymi vrcholy u, v. D˚ ukaz vede pˇres n´asleduj´ıc´ı zes´ılen´e tvrzen´ı indukc´ı: •
V kaˇzd´e iteraci Algoritmu 8.11 hodnota d(x) ud´av´a nejkratˇs´ı vzd´alenost z vrcholu u do x pˇri cestˇe pouze po uˇz zpracovan´ych vnitˇrn´ıch vrcholech.
V b´azi indukce dovolujeme pouze cesty pouˇz´ıvaj´ıc´ı u a x, tj. jen hrany vych´azej´ıc´ı z u. Ty jsou v prvn´ı iteraci algoritmu probr´any a jejich d´elky uloˇzeny do U. V kaˇzd´em dalˇs´ım kroku je vybr´an jako vrchol x ke zpracov´an´ı ten, kter´y m´a ze vˇsech nezpracovan´ych 69
vrchol˚ u nejkratˇs´ı nalezenou vzd´alenost od poˇc´atku u. V tom okamˇziku je d(x) platnou vzd´alenost´ı do x, nebot’ jak´akoliv cesta pˇres jin´y nezpracovan´y vrchol nem˚ uˇze b´yt kratˇs´ı d´ıky nez´apornosti vah w. Z toho pak vypl´yv´a, ˇze zpracov´an´ı vrcholu x spr´avnˇe uprav´ı doˇcasn´e vzd´alenosti odloˇzen´e do U. D˚ ukaz indukc´ı je hotov. ✷
8.4
Probl´ em minim´ aln´ı kostry
Na z´avˇer t´eto lekce se zamˇeˇr´ıme jeˇstˇe na jednu tradiˇcn´ı u ´ lohu, kter´a se koncepˇcnˇe podob´a probl´emu nejkratˇs´ı cesty. V tomto pˇr´ıpadˇe nebudeme hledat nejkratˇs´ı spojen´ı mezi dvojic´ı vrchol˚ u, ale mezi vˇsemi vrcholy najednou – t´eto u ´ loze se ˇr´ık´a minim´aln´ı kostra neboli MST ( minimum spanning tree“). V n´avaznosti na Odd´ıl 7.4 definujeme toto: ” Definice: Podgraf T ⊆ G souvisl´eho grafu G se naz´yv´a kostrou, pokud ∗ T je stromem a ∗ V (T ) = V (G), neboli T propojuje vˇsechny vrcholy G.
V´ahou (d´elkou) kostry T ⊆ G v´aˇzen´eho souvisl´eho grafu (G, w) rozum´ıme X dw (T ) = w(e) . G e∈E(T )
em minim´ aln´ı kostry (MST) ve v´aˇzen´em souv. grafu (G, w) Definice 8.14. Probl´ hled´a kostru T ⊆ G s nejmenˇs´ı moˇznou vahou (pˇres vˇsechny kostry grafu G). Koment´ aˇ r: Probl´em minim´aln´ı kostry je ve skuteˇcnosti historicky u ´zce sv´az´an s jiˇzn´ı Moravou a Brnem, konkr´etnˇe s elektrifikac´ı jihomoravsk´ ych vesnic ve dvac´at´ ych letech! Pr´avˇe na z´ akladˇe tohoto praktick´eho optimalizaˇcn´ıho probl´emu brnˇensk´ y matematik Otakar Bor˚ uvka jako prvn´ı v matematick´e literatuˇre zformuloval a podal ˇreˇsen´ı probl´emu minim´aln´ı kostry v roce 1928. Prvn´ı ne-ˇceskou publikac´ı na toto t´ema je aˇz Kruskal˚ uv hladov´ y algoritmus z roku 1956.
Hladov´ eˇ reˇ sen´ı minim´ aln´ı kostry N´asleduj´ıc´ı postup tzv. hladov´eho nalezen´ı minim´aln´ı kostry poch´az´ı od Kruskala. y postup pro minim´ aln´ı kostru grafu (G, w). Metoda 8.15. Hladov´ Mˇejme d´an souvisl´y v´aˇzen´y graf G s ohodnocen´ım hran w. •
Seˇrad´ıme vˇsechny hrany G jako E(G) = (e1 , e2 , . . . , em ) tak, ˇze w(e1 ) ≤ w(e2 ) ≤ · · · ≤ w(em ).
•
Inicializujeme pr´azdnou kostru T = (V (G), ∅).
•
Po ˇradˇe pro i = 1, 2, . . . , m provedeme n´asleduj´ıc´ı: ∗ Pokud T + ei nevytv´ aˇr´ı kruˇznici, tak E(T ) ← E(T ) ∪ {ei }.
(Neboli pokud ei spojuje r˚ uzn´e komponenty souvislosti dosavadn´ıho T .)
•
Na konci T obsahuje minim´aln´ı kostru grafu G (pˇr´ıpadnˇe jednu z nˇekolika takov´ych).
Vˇ eta 8.16. Hladov´y postup korektnˇe spoˇc´ıt´a minim´aln´ı kostru v´aˇzen´eho grafu (G, w).
70
D˚ ukaz (n´aznak): Pro spor pˇredpokl´adejme, ˇze T1 je kostra spoˇc´ıtan´a Metodou 8.15 w a T2 nˇejak´a minim´aln´ı kostra, kde dw ıl |E(T1 )∆E(T2 )| je nejmenˇs´ı. G (T2 ) < dG (T1 ) a rozd´ Necht’ i je nejmenˇs´ı index takov´y, ˇze ei ∈ E(T1 )∆E(T2 ). Pak nutnˇe ei ∈ E(T1 ) \ E(T2 ) (proˇc?), a tud´ıˇz T2 + ei podle D˚ usledku 7.17 obsahuje kruˇznici proch´azej´ıc´ı tak´e hranou ej pro j > i. Potom vˇsak T3 = (T2 + ei ) \ {ej } je dalˇs´ı kostrou maj´ıc´ı v´ahu dw G (T2 ) + w w(ei ) − w(ej ) ≥ dG (T2 ), a proto w(ei ) = w(ej ). Tud´ıˇz T3 je minim´aln´ı kostra bliˇzˇs´ı“ T1 ” ve smyslu symetrick´eho rozd´ılu, coˇz je spor s volbou T2 . ✷ Jarn´ık˚ uv (Prim˚ uv) algoritmus Aˇc koncepˇcnˇe velmi jednoduch´a, m´a Metoda 8.15 nˇekter´e problematick´e implementaˇcn´ı detaily, pro kter´e je mnohem ˇcastˇeji pouˇz´ıv´an n´asleduj´ıc´ı algoritmus (ˇcasto pˇripisov´an ameriˇcanu Primovi, ale mnohem dˇr´ıve publikov´an Vojtˇechem Jarn´ıkem v 1930), zaloˇzen´y na bˇeˇzn´em proch´azen´ı grafu. Algoritmus 8.17. Hled´ an´ı minim´ aln´ı kostry ve v´ aˇ zen´ em grafu (G, w). Opˇet mˇejme d´an souvisl´y v´aˇzen´y graf G s ohodnocen´ım hran w. N´ıˇze uveden´a specifick´a implementace proch´azen´ı grafu vyuˇz´ıv´a u ´schovnu rozˇs´ıˇren´ym zp˚ usobem, kdy ukl´ad´ a i pˇr´ıchoz´ı hranu do vrcholu. • Vstup: Souvisl´ y graf G, dan´y seznamem vrchol˚ u a seznamy vych´azej´ıc´ıch hran z kaˇzd´eho vrcholu, plus v´ahy w hran. • Vybereme libovoln´ y poˇc´atek prohled´av´an´ı u ∈ V (G); u ´ schovna U ← (u, ∅) . Kostra T = (V (G), ∅). •
Dokud U 6= ∅, opakujeme: ∗ Zvol´ıme (x, e) ∈ U takov´ e, ˇz e w(e) je minim´aln´ı (kde w(∅) = 0).
Odebereme U ← U \ (x, e) .
∗ Pˇrid´ ame E(T ) ← E(T ) ∪ {e} (nov´a hrana do budouc´ı kostry). ∗ Pro vˇsechny hrany f ∈ E(G) vych´ azej´ıc´ı z x provedeme:
– Necht’ y je druh´y konec hrany f = xy. – Pokud (y, f ′ ) 6∈ U, nebo (y, f ′ ) ∈U pro nˇejak´e w(f ′ ) > w(f ), odloˇz´ıme U ← U \ {(y, f ′ )} ∪ (y, f ) (nalezena kratˇs´ı hrana f mezi zpracovan´ymi a nezpracovan´ymi vrcholy).
•
V´ystup: T ud´av´a v´yslednou minim´aln´ı kostru.
Pozn´ amka: V konkr´etn´ı implementaci postupujeme stejnˇe jako u Dijkstrova Algoritmu 8.11, nejl´epe za pouˇzit´ı haldy ukl´adaj´ıc´ı dvojice (y, f ) podle kl´ıˇce w(f ).
Rozˇ siˇ ruj´ıc´ı studium S bˇeˇzn´ ymi grafov´ ymi algoritmy, kter´e zahrnuj´ı zde uveden´e a mnohem v´ıce, se studenti informatiky sezn´ am´ı hloubˇeji v kaˇzd´em kurzu n´ avrhu algoritm˚ u. (Nav´ıc jsou bˇeˇzn´e grafov´e algoritmy v´ ybornˇe pops´ any na Wikipedii. . . ) Rozˇs´ıˇren´ı postupu prohled´av´an´ı grafu n´ am napˇr´ıklad umoˇzn´ı vyhled´avat 2-souvisl´e nebo silnˇe-souvisl´e komponenty. Pro hled´ an´ı nejkratˇs´ı cesty tak´e existuj´ı sofistikovanˇejˇs´ı algoritmy, kter´e jsou schopny pracovat i za pˇr´ıtomnosti z´ aporn´ ych hran (ale bez z´aporn´ ych cykl˚ u), jako tˇreba Johnson˚ uv algoritmus. My si d´ ale uvedeme jako pˇr´ıklad Floyd-Warshall˚ uv algoritmus s d˚ ukazem spr´avnosti v Lekci 11.
71
Celkovˇe je tˇreba ˇr´ıci, ˇze v naˇsem kurzu se na rozd´ıl od kurz˚ u algoritmick´ ych nezab´ yv´ ame v˚ ubec ot´ azkami program´atorsk´e implementace a efektivity, n´ ybrˇz studujeme matematick´e aspekty grafov´ ych u ´loh a metod jejich ˇreˇsen´ı. Oba pohledy by pak dobˇre vybaven´ y informatik mˇel zn´ at. Pokud m´ ate nav´ıc z´ ajem se dozvˇedˇet v´ıce o zaj´ımav´e ˇcesk´e historii probl´emu minim´aln´ı kostry, pˇreˇctˇete si v dˇr´ıve zm´ınˇen´e knize Kapitoly z diskr´etn´ı matematiky autor˚ u Jiˇr´ıho Matouˇska a Jaroslava Neˇsetˇrila.
72
9
Orientovan´ e grafy, Toky v s´ıt´ıch ´ Uvod Fakt, ˇze grafy se ˇcasto pouˇz´ıvaj´ı k modelov´an´ı r˚ uzn´ ych druh˚ u s´ıt´ı z re´ aln´eho svˇeta, byl vidˇet jiˇz v pˇredchoz´ı lekci. Na rozd´ıl tˇreba od cestn´ıch s´ıt´ı se nyn´ı budeme zab´ yvat typem ’ s´ıt ov´ ych u ´loh, ve kter´ ych nen´ı podstatn´a d´elka hran a spojen´ı, n´ ybˇz jejich propustnost. (Typick´ ymi pˇr´ıklady jsou potrubn´ı nebo poˇc´ıtaˇcov´e s´ıtˇe.) Z´ akladn´ı u ´lohou v t´eto oblasti je probl´em nalezen´ı maxim´ aln´ıho toku v s´ıti za podm´ınky respektov´an´ı dan´ ych kapacit hran. I na tento probl´em si uvedeme jednoduch´ y klasick´ y algoritmus a pˇredevˇs´ım si budeme vˇs´ımat mnoh´ ych d˚ uleˇzit´ ych matematick´ ych d˚ usledk˚ u tohoto algoritmu, jmenovitˇe v´azan´ ych aln´ıho toku a minim´ aln´ıho ˇrezu, kter´a pˇrirozenˇe vysvˇetluje optimalitu k tzv. dualitˇe maxim´ ˇreˇsen´ı mnoh´ ych u ´loh. N´aslednˇe si uk´aˇzeme ˇsirok´e vyuˇzit´ı tok˚ u v s´ıti, kter´e sah´ a od grafov´e souvislosti aˇz tˇreba pro probl´em segmentace obrazu. Jelikoˇz pro zkouman´ y typ s´ıt’ov´ ych u ´loh je kl´ıˇcov´a implicitn´ı orientace kaˇzd´e hrany, v t´eto lekci zaˇcneme samotnou definic´ı orientovan´eho grafu a z´akladn´ımi vlastnostmi; obdobnˇe u ´vodn´ı l´ atce vyloˇzen´e o grafech v Lekci 7.
C´ıle Zadefinujeme orientovan´e grafy a uvedeme si jejich z´akladn´ı vlastnosti, vˇcetnˇe orientovan´e souvislosti. Definujeme pojem s´ıtˇe s kapacitami hran a uk´aˇzeme si z´akladn´ı algoritmus pro u ´lohu hled´ an´ı maxim´ aln´ıho toku. Probereme nˇekter´e d˚ uleˇzit´e teoretick´e d˚ usledky postupu nalezen´ı maxim´ aln´ıho toku; pˇredevˇs´ım dualitu toku a ˇrezu, vyˇsˇs´ı u ´rovnˇe souvislosti grafu, hled´ an´ı bipartitn´ıho p´ arov´an´ı a syst´em˚ u r˚ uzn´ ych reprezentant˚ u.
9.1
Z´ akladn´ı pojmy orientovan´ ych graf˚ u
Poˇzadavek explicitnˇe vyj´adˇrit smˇer hrany pˇrirozenˇe vede na n´asleduj´ıc´ı definici orientovan´eho grafu, ve kter´em hrany jsou uspoˇr´adan´e dvojice vrchol˚ u. (V obr´azc´ıch kresl´ıme orientovan´e hrany se ˇsipkami.) s s s
s
s s
Definice 9.1. Orientovan´ y graf je uspoˇr´adan´a dvojice D = (V, E), kde V je mnoˇzina vrchol˚ u a E ⊆ V × V je mnoˇzina hran – tj. podmnoˇzina vybran´ych uspoˇr´adan´ych dvojic vrchol˚ u. Pojmy podgrafu a isomorfismu se pˇrirozenˇe pˇren´aˇsej´ı na orientovan´e grafy. Znaˇ cen´ ı : Hrana (u, v) (zvan´a tak´e ˇsipka) v orientovan´em grafu D zaˇc´ın´a ve vrcholu u a konˇc´ı ve (m´ıˇr´ı do) vrcholu v. Opaˇcn´a hrana (v, u) je r˚ uzn´a od (u, v) . Speci´alnˇe hrana tvaru (u, u) se naz´yv´a orientovan´a smyˇcka. Koment´ aˇ r: Orientovan´e grafy odpov´ıdaj´ı relac´ım, kter´e nemus´ı b´ yt symetrick´e. Mezi stejnou dvojic´ı vrchol˚ u mohou tud´ıˇz existovat dvˇe hrany v obou smˇerech, nebo jen kter´akoliv jedna z
73
nich nebo ˇz´ adn´ a. Vˇsimnˇete si tak´e, ˇze orientovan´e grafy implicitnˇe odliˇsujeme od obyˇcejn´ ych pouˇzit´ım p´ısmene D m´ısto dˇr´ıvˇejˇs´ıch G, H.
Napˇr´ıklad orientovan´a cesta d´elky n ≥ 0 je n´asleduj´ıc´ım grafem na n + 1 vrcholech s
s
s
1
2
3
...
s
s
n
n+1
a orientovan´a kruˇznice (tak´e cyklus) d´elky n ≥ 1 vypad´a takto: 4 s
3 s
s
2
5 s
s
6
s
...
s
1
n
Definice: Poˇcet hran zaˇc´ınaj´ıc´ıch ve vrcholu u orientovan´eho grafu D nazveme v´ystupn´ım stupnˇem d+ cet hran konˇc´ıc´ıch v u nazveme vstupn´ım stupnˇem d− D (u) a poˇ D (u). Koment´ aˇ r: Souˇcet vˇsech v´ ystupn´ıch stupˇ n˚ u je pˇrirozenˇe roven souˇctu vˇsech vstupn´ıch stupˇ n˚ u orientovan´eho grafu. D˚ ukaz viz Vˇeta 7.3. Vˇsimnˇete si, ˇze nˇekter´a literatura pouˇz´ıv´a opaˇcn´ a znam´enka (−/+) pˇri znaˇcen´ı v´ ystupn´ıch a vstupn´ıch stupˇ n˚ u, ale s t´ım nic nenadˇel´ame a ˇcten´ aˇr se prostˇe vˇzdy mus´ı zorientovat a zjistit aktu´aln´ı situaci.
Definice: Symetrizac´ı orientovan´eho grafu D rozum´ıme neorientovan´y graf G vznikl´y zapomenut´ım smˇeru hran“ v D, pˇresnˇeji V (G) = V (D) a uv ∈ E(G) pr´avˇe kdyˇz ” {(u, v), (v, u)} ∩ E(D) 6= ∅. Souvislost na orientovan´ ych grafech Pojem orientovan´e souvislosti grafu D je natolik fundament´alnˇe odliˇsn´y od neorientovan´eho pˇr´ıpadu (coˇz je d´ano pr´avˇe jeho smˇerovost´ı“), ˇze si zaslouˇz´ı samostatnou diskusi ” i v naˇsem zbˇeˇzn´em pohledu na orientovan´e grafy. Uvedeme si na ni odstupˇ novanˇe tˇri z´akladn´ı pohledy: •
Slab´a souvislost. Jedn´a se o tradiˇcn´ı souvislost na symetrizaci grafu D Koment´ aˇ r: Zjednoduˇsenˇe a n´ azornˇe se d´ a ˇr´ıci, ˇze pˇri cestov´an´ı grafem zapomeneme“ smˇer ” ˇsipek. Na obr´ azku: s❢
s
s
s
s
s❢
Tento pˇr´ıstup sice m˚ uˇze vypadat ponˇekud nesmyslnˇe – proˇc ˇsipky zav´adˇet a pak zapom´ınat jejich smˇer, avˇsak brzy u tzv. nenasycen´ ych cest uvid´ıme smysl pˇredstavy, ˇze cesta v orientvan´em grafu se tlaˇc´ı“ proti smˇeru hrany. ”
74
•
Dosaˇzitelnost (smˇerem ven“). Orientovan´y graf D je dosaˇziteln´y smˇerem ven, pokud ” v nˇem existuje vrchol v ∈ V (D) takov´y, ˇze kaˇzd´y vrchol x ∈ V (D) je dosaˇziteln´y orientovan´ym sledem z v.
s v ❢
s
s
s
s
s
s
s
s
Koment´ aˇ r: Podrobn´ ym zkoum´ an´ım n´ asleduj´ıc´ıho obr´ azku zjist´ıme, ˇze jeho graf nen´ı dosaˇziteln´ y smˇerem ven, nebot’ chyb´ı moˇznost dos´ ahnout vrchol b u ´plnˇe vpravo. Na druhou stranu po vypuˇstˇen´ı b je zbyl´ y graf dosaˇziteln´ y ven z vrcholu a vlevo. s
s
a s
s
s s
s
•
s sb
s
Siln´a souvislost. Necht’ ≈ je bin´arn´ı relace na vrcholov´e mnoˇzinˇe V (D) orientovan´eho grafu D takov´a, ˇze u ≈ v pr´avˇe kdyˇz existuje dvojice orientovan´ych cest – jedna z u do v a druh´a z v do u v grafu D. Pak ≈ je relace ekvivalence. s u ❢
s
s
s
s v ❢
s
Definice 9.2. Siln´ e komponenty orientovan´eho grafu D jsou tˇr´ıdy ekvivalance relace ≈ uveden´e v pˇredchoz´ım. Orientovan´y graf D je silnˇe souvisl´y pokud m´a nejv´yˇse jednu silnou komponentu. Koment´ aˇ r: Pro ilustraci si m´ırnˇe uprav´ıme dˇr´ıve prezentovan´ y orientovan´ y graf tak, ˇze bude dosaˇziteln´ y z nejlevˇejˇs´ıho vrcholu. Je v´ ysledek silnˇe souvisl´ y? s
s
s s
s
s
s
s s
s
s
s s
s
Ne, na obr´ azku jsou vyznaˇcen´e jeho 4 siln´e komponenty. Vpravo z´aroveˇ n uv´ad´ıme pro ilustraci obr´ azek kondenzace siln´ ych komponent tohoto grafu, coˇz je acyklick´ y orientovan´ y graf s vrcholy reprezentuj´ıc´ımi zm´ınˇen´e siln´e komponenty a smˇery hran mezi nima. Pro zv´ıdav´e ˇcten´ aˇre poznamen´av´ame, ˇze si mohou definici siln´e komponenty porovnat s j´adrem pˇreduspoˇra´d´ an´ı v Odd´ıle 5.2. Kde vid´ıte drobn´ y rozd´ıl?
75
9.2
Definice s´ıtˇ e a toku
Z´akladn´ı strukturou pro reprezentaci s´ıt´ı je v´aˇzen´y orientovan´y graf (pˇriˇcemˇz implicitn´ı smˇer hran je v tomto kontextu nezbytn´y). V´ahy (hran) v takov´em modelu vyjadˇruj´ı kapacity“ jednotliv´ych spoj˚ u a n´as zaj´ım´a, jak mnoho uvaˇzovan´e substance dok´aˇzeme ” (r˚ uzn´ymi cestami) pˇren´est z dan´eho zdroje do stoku. Podstata substance nen´ı d˚ uleˇzit´a, ale ta mus´ı b´yt vhodnˇe rozdˇeliteln´a. Definice 9.3. S´ıt’ je ˇctveˇrice S = (D, z, s, w), kde ∗ D je orientovan´ y graf, ∗ vrcholy z ∈ V (D), s ∈ V (D) jsou zdroj a stok,
∗ w : E(D) →
R+ je kladn´e ohodnocen´ı hran, zvan´e kapacita hran.
Koment´ aˇ r: 4
5
s
s
2
3 z
2
1
s
2 1
3
s
5
s
4
Na obr´ azku je zakreslena s´ıt’ s vyznaˇcen´ ym zdrojem z a stokem s, jej´ıˇz kapacity hran jsou ˇ zaps´ any ˇc´ısly u hran. Sipky ud´ avaj´ı smˇer hran, tedy smˇer proudˇen´ı uvaˇzovan´e substance po spojnic´ıch. Pokud smˇer proudˇen´ı nen´ı d˚ uleˇzit´ y, vedeme mezi vrcholy dvojici opaˇcnˇe orientovan´ ych hran se stejnou kapacitou. Kapacity hran pak omezuj´ı maxim´aln´ı mnoˇzstv´ı pˇren´ aˇsen´e substance. Pozn´ amka: V praxi m˚ uˇze b´ yt zdroj˚ u a stok˚ u v´ıce, ale v definici staˇc´ı pouze jeden zdroj a stok, z nˇehoˇz / do nˇejˇz vedou hrany do ostatn´ıch zdroj˚ u / stok˚ u. (Dokonce pak r˚ uzn´e zdroje a stoky mohou m´ıt sv´e kapacity.)
Velikost toku v s´ıti V souladu s praktick´ymi aspekty n´as u toku v s´ıti zaj´ım´a pˇredevˇs´ım to, jak´e mnoˇzstv´ı“ ” substance (velikost toku) se skuteˇcnˇe pˇrenese od zdroje ke stoku. Znaˇ cen´ ı : Pro jednoduchost p´ıˇseme ve v´yrazech znaˇcku e → v pro hranu e pˇrich´azej´ıc´ı do vrcholu v a e ← v pro hranu e vych´azej´ıc´ı z v. Definice 9.4. Tok v s´ıti S = (D, z, s, w) je funkce f : E(D) → ∗ ∀e ∈ E(D) : 0 ≤ f (e) ≤ w(e),
∗ ∀v ∈ V (D), v 6= z, s :
P
e→v
f (e) =
P
R+0 splˇnuj´ıc´ı
f (e).
e←v
Velikost toku f je d´ana v´yrazem kf k =
P
e←z
f (e) −
P
f (e).
e→z
Znaˇ cen´ ı : Tok a kapacitu hran v obr´azku s´ıtˇe budeme zjednoduˇsenˇe zapisovat ve form´atu F/C, kde F je hodnota toku na hranˇe a C je jej´ı kapacita.
76
Koment´ aˇ r: Neform´alnˇe tok znamen´a, kolik substance je kaˇzdou hranou zrovna pˇren´ aˇseno (ve smˇeru t´eto hrany, proto hrany mus´ı b´ yt orientovan´e). Tok je pochopitelnˇe nez´ aporn´ ya dosahuje nejv´ yˇse dan´e kapacity hrany. Nav´ıc je nutno v kaˇzd´em vrcholu mimo z, s splnit podm´ınku zachov´an´ı substance“. ” 2/5
2/4
z
0/1
s 0/3
s
0/2
s
0/2
s
3/3
2/2
0/1 3/4
s 3/5
Ve vyobrazen´em pˇr´ıkladˇe vede ze zdroje vlevo do stoku vpravo tok o celkov´e velikosti 5. Pozn´ amka: Obdobnˇe se d´ a velikost toku definovat u stoku, nebot’ plat´ı n´ asleduj´ıc´ı identita odvozen´ a a faktu zachov´an´ı substance (mimo z, s) v definici toku ! ! X X X X X X X f (e) − f (e) . f (e) − f (e) = f (e) − f (e) = 0= v∈V
e∈E
e←v
e→v
v=z,s
e←v
e→v
Proto velikost toku poˇc´ıtan´ a u zdroje je rovna opaˇcn´e velikosti toku poˇc´ıtan´eho u stoku ! ! X X X X f (e) − f (e) . f (e) − f (e) = e←z
9.3
e→s
e→z
e←s
Nalezen´ı maxim´ aln´ıho toku
Naˇs´ım u ´ kolem je naj´ıt co nejvˇetˇs´ı pˇr´ıpustn´y tok v dan´e s´ıti. Pro jeho nalezen´ı existuj´ı jednoduch´e a velmi rychl´e algoritmy. Nav´ıc tyto algoritmy maj´ı zaj´ımav´e teoretick´e souvislosti a d˚ usledky uveden´e pozdˇeji. ´ hled´ an´ı maxim´ aln´ıho toku v s´ıti S = (D, z, s, w). Definice 9.5. Uloha ´ Ukolem je v s´ıti S naj´ıt tok f ze zdroje z do stoku s podle Definice 9.4 takov´y, kter´y maximalizuje velikost kf k. Koment´ aˇ r: Tok velikosti 5 uveden´ y v uk´azce v pˇredchoz´ı ˇc´asti nebyl optim´ aln´ı, nebot’ v t´eto s´ıti najdeme i tok velikosti 6: 2/5 3= 2/4 s s 2/2 1= 0/3 z
0/1
0/2
s
0/2 0/1
3/3
s
s
4= 3/4
4= 3/5
Jak vˇsak pozn´ ame, ˇze vˇetˇs´ı tok jiˇz v dan´e s´ıti neexistuje? V t´eto konkr´etn´ı uk´azce to nen´ı obt´ıˇzn´e, vid´ıme totiˇz, ˇze obˇe dvˇe hrany pˇrich´ azej´ıc´ı do stoku maj´ı souˇcet kapacit 2 + 4 + 6, takˇze v´ıce neˇz 6 do stoku ani pˇrit´ect nem˚ uˇze. V obecnosti lze pouˇz´ıt obdobnou u ´vahu, kdy najdeme podmnoˇzinu hran, kter´e nelze tokem obej´ıt“ a kter´e v souˇctu kapacit daj´ı velikost ” naˇseho toku. Existuje vˇsak takov´a mnoˇzina hran vˇzdy? Odpovˇed’ n´ am d´ a n´ asleduj´ıc´ı definice a vˇeta.
77
Pojem ˇ rezu v s´ıti ˇ Definice 9.6. Rez v s´ıti S = (D, z, s, w) je podmnoˇzina hran X ⊆ E(D) takov´a, ˇze v podgrafu D − X (tj. po odebr´an´ı hran X z D) nezbude ˇz´adn´a orientovan´ a P cesta ze z do s. Velikost´ı ˇrezu X rozum´ıme souˇcet kapacit hran z X, tj. kXk = e∈X w(e). Zcela kl´ıˇcov´ym poznatkem s´ıt’ov´ych u ´ loh je n´asleduj´ıc´ı velmi hezk´a charakterizace jejich optim´aln´ıho ˇreˇsen´ı
Vˇ eta 9.7. Maxim´aln´ı velikost pˇr´ıpustn´eho toku v s´ıti je vˇzdy rovna minim´aln´ı velikosti ˇrezu v n´ı. Koment´ aˇ r: Na n´ asleduj´ıc´ım obr´ azku vid´ıme trochu jinou s´ıt’ s uk´azkou netrivi´aln´ıho minim´aln´ıho ˇrezu velikosti 5, naznaˇcen´eho svislou ˇc´arkovanou ˇcarou. Vˇsimnˇete si dobˇre, ˇze definice ˇrezu mluv´ı o pˇreruˇsen´ı vˇsech orientovan´ ych cest ze z do s, takˇze do ˇrezu staˇc´ı zapoˇc´ıtat hrany jdouc´ı pˇres svislou ˇc´aru od z do s, ale ne hranu jdouc´ı zpˇet. Proto je velikost vyznaˇcen´eho ˇrezu 1 + 4 = 5. 4 2
z
1
s
s
2
1
s 1
3
s
4
s
4
D˚ ukaz Vˇety 9.7 bude proveden n´asleduj´ıc´ım Algoritmem 9.9. Nenasycen´ e cesty v s´ıti Definice: Mˇejme s´ıt’ S a v n´ı tok f . Nenasycen´a cesta P (v S vzhledem k f ) je neorientovan´a cesta v D mezi urˇcen´ymi vrcholy (obvykle ze z do s), tj. posloupnost navazuj´ıc´ıch libovolnˇe orientovan´ych hran e1 , e2 , . . . , em , kde f (ei ) < w(ei ) pro ei ve smˇeru ze z do s a f (ej ) > 0 pro ej v opaˇcn´em smˇeru. Hodnotˇe w(ei ) − f (ei ) > 0 pro hrany ei ve smˇeru z u do v a hodnotˇe f (ej ) > 0 pro hrany ej v opaˇcn´em smˇeru ˇr´ık´ame rezerva kapacity hran. Nenasycen´a cesta je tud´ıˇz cesta s kladn´ymi rezervami kapacit vˇsech hran. Koment´ aˇ r: Zde vid´ıme pˇr´ıklad nenasycen´e cesty ze zdroje do stoku s minim´aln´ı rezervou kapacity +1. 3/4 1/2 1/1 2/3 2/4 s s s s z s rezerva kapacity: >0 +1 +1 +1 +2 +2 Vˇsimnˇete si dobˇre, ˇze cesta nen´ı orientovan´ a, takˇze hrany na n´ı jsou v obou smˇerech.
Metoda 9.8. Maxim´ aln´ı tok vylepˇ sov´ an´ım nenasycen´ ych cest. Z´akladn´ı myˇslenkou t´eto jednoduch´e metody hled´an´ı maxim´aln´ıho toku v dan´e s´ıti je prostˇe opakovanˇe vylepˇsovat tok pod´el nalezen´ych nenasycen´ych cest. Koment´ aˇ r: Ve v´ yˇse zakreslen´em obr´ azku nenasycen´e cesty byla minim´aln´ı rezerva kapacity ve v´ yˇsi +1, a tud´ıˇz nasycen´ım t´eto cesty o velikost toku 1 vznik´ a n´ asleduj´ıc´ı fragment
78
pˇr´ıpustn´eho toku v s´ıti: z
4/4
2/2 s
0/1
1/3
s
3/4
s
s
s
Zaj´ımav´e je se pod´ıvat, co se stalo s prostˇredn´ımi zpˇetnˇe orientovan´ ymi hranami – fakticky byl jejich zpˇetn´ y tok o 1 sn´ıˇzen/zastaven, pˇriˇcemˇz toto mnoˇzstv´ı nyn´ı teˇce doprava“ (velmi ” neform´ alnˇe ˇreˇceno).
Fakt: Je-li minim´aln´ı rezerva kapacity hran nenasycen´e cesty P ze z do s ve v´yˇsi r > 0, pak tok ze z do s zv´yˇs´ıme o hodnotu r n´asledovnˇe; ∗ pro hrany ei ∈ E(P ) ve smˇ eru ze z do s zv´yˇs´ıme tok na f ′ (ei ) = f (ei ) + r, ∗ pro hrany ej ∈ E(P ) ve smˇ eru ze s do z sn´ıˇz´ıme tok na f ′ (ej ) = f (ej ) − r.
V´ysledn´y tok f ′ pak bude opˇet pˇr´ıpustn´y.
Z´ akladn´ı algoritmus nenasycen´ ych cest R´amcov´e implementaˇcn´ı podrobnosti Metody 9.8 n´asleduj´ı v popise konkr´etn´ıho algoritmu. uv pro tok v s´ıti. Algoritmus 9.9. Ford–Fulkerson˚ • Vstup: S´ ıt’ S = (D, z, s, w) podle Definice 9.3. •
Tok f ← (0, 0, . . . 0).
•
D´ale opakujeme n´asleduj´ıc´ı: ∗ Prohled´ av´an´ım grafu najdeme mnoˇzinu U vrchol˚ u D, do kter´ych se dostaneme
ze z po nenasycen´ych cest´ach. ∗ Pokud s ∈ U, necht’ P znaˇ c´ı nalezenou nenasycenou cestu v S ze z do s. – Zvˇetˇs´ıme tok f o minim´aln´ı rezervu kapacity hran v P .
• •
Opakujeme kroky v´yˇse, dokud nenastane s 6∈ U. V´ystup: Vyp´ıˇseme maxim´aln´ı tok f a tak´e minim´aln´ı ˇrez jako mnoˇzinu vˇsech hran vedouc´ıch z U do V (D) − U.
Pˇ r´ıklad 9.10. Uk´azka pr˚ ubˇehu Algoritmu 9.9 N´asleduj´ı obr´azky jednotliv´ych krok˚ u algoritmu, kde vˇzdy lev´y obr´azek zv´yrazn´ı nenasycenou cestu a vpravo se nasycen´ım zv´yˇs´ı celkov´y tok. 0/4
0/1 s
s
0/2
0/2 0/1
z
s 0/1
0/3
s
s
0/4
79
0/4
tok = 0
0/4
s
0/1
s
0/2 0/1
z
s
0/1 0/3
s
1/4
s
1/1 s
1/2 s
1/1
0/3
s
z
s
1/4
s
1/4
s
s
1/2
0/2 0/1
s
s
3/3
s
2/4
s
1/2 s
s
3/4
s
1/2
3/4 1/1
s 0/1
U
2/4
s
3/3
3/4 1/1
s ❢
s
s ❢
4/4
s
4/4
1/2 s
0/1 3/3
s
4/4
1/2 0/1
z
s
1/2 0/1
z
3/4
s
0/4
1/1
0/1 3/3
s
0/1
0/4 1/1
s
0/2 0/1
z
0/4
s
1/2
0/4
0/1 0/3
s
0/1
0/4
s
s
0/2 0/1
z
0/4
0/2 0/1
z
1/4
0/2
nasyceno
4/4
Z´avˇereˇcn´y obr´azek pak ukazuje v´ysledn´y tok velikosti 5 z´aroveˇ n se zv´yraznˇen´ym minim´aln´ım ˇrezem stejn´e velikosti. ✷ D˚ ukaz a d˚ usledky Ford–Fulkersonova algoritmu D˚ ukaz spr´avnosti Algoritmu 9.9: Pro kaˇzd´y tok f a kaˇzd´y ˇrez X v s´ıti S plat´ı kf k ≤ kXk. Jestliˇze po zastaven´ı algoritmu s tokem f nalezneme v s´ıti S ˇrez o stejn´e velikosti kXk = kf k, je jasn´e, ˇze jsme naˇsli maxim´aln´ı moˇzn´y tok v s´ıti S. (Pozor, zastaven´ı algoritmu jsme zat´ım nezd˚ uvodnili, to nen´ı tak jednoduch´e.) Takˇze dokaˇzme, ˇze po zastaven´ı algoritmu nastane rovnost kf k = kXk, kde X je vypsan´y ˇrez mezi U a zbytkem grafu D. Vezmˇeme tok f v S bez nenasycen´e cesty ze z do s. Pak mnoˇzina U z algoritmu neobsahuje s. Schematicky vypad´a situace takto: f (e) = w(e) z
U
s f (e) = 0
Jelikoˇz z U ˇz´adn´e nenasycen´e cesty d´ale nevedou, m´a kaˇzd´a hrana e ← U (odch´azej´ıc´ı 80
z U) pln´y tok f (e) = w(e) a kaˇzd´a hrana e → U (pˇrich´azej´ıc´ı do U) tok f (e) = 0, takˇze X X X X f (e) − f (e) = f (e) = w(e) = kXk . e←U
e→U
e←U
e∈X
Na druhou stranu, kdyˇz v sumˇe uvaˇzujeme vˇsechny hrany grafu indukovan´e na naˇs´ı mnoˇzinˇe U, tj. e ∈ E(D ↾ U), analogicky dostaneme poˇzadovan´e ! ! X X X X X X 0= f (e) − f (e) = f (e) − f (e) − f (e) − f (e) = v∈U
e∈E(D↾U )
=
X e←z
f (e) −
X
f (e)
e→z
!
−
X
e←U
e←v
f (e) −
e→v
X
f (e)
e→U
e←U
!
e→U
= kf k − kXk , tj. kf k = kXk . ✷
Z d˚ ukazu Algoritmu 9.9 pak odvod´ıme nˇekolik zaj´ımav´ych fakt˚ u: Fakt: Pokud zajist´ıme, ˇze Algoritmus 9.9 vˇzdy skonˇc´ı, z´aroveˇ n t´ım dok´aˇzeme i platnost Vˇety 9.7. Fakt: Pro celoˇc´ıseln´e kapacity hran s´ıtˇe S Algoritmus 9.9 vˇzdy skonˇc´ı. Pro dalˇs´ı vyuˇzit´ı v teorii graf˚ u je asi nejd˚ uleˇzitˇejˇs´ı tento poznatek: D˚ usledek 9.11. Pokud jsou kapacity hran s´ıtˇe S celoˇc´ıseln´e, optim´aln´ı tok tak´e vyjde celoˇc´ıselnˇe. D˚ ukaz: Postupujeme jednoduchou indukc´ı podle iterac´ı Algoritmu 9.9: Algoritmus zaˇc´ın´a s celoˇc´ıseln´ym tokem 0. V kaˇzd´e dalˇs´ı iteraci bude na poˇc´atku tok vˇsemi hranami celoˇc´ıseln´y, tud´ıˇz i rezervy kapacit hran vyjdou (rozd´ılem od celoˇc´ıseln´e kapacity) celoˇc´ıselnˇe. Proto i hodnoty toku budou zmˇenˇeny jen celoˇc´ıselnˇe, coˇz zakonˇcuje indukˇcn´ı krok. ✷
9.4
Zobecnˇ en´ e pouˇ zit´ı s´ıt´ı
Pojmy s´ıtˇe a tok˚ u v n´ı lze v kombinatorick´e optimalizaci zobecnit a vyuˇz´ıt nˇekolika smˇery. My si zde struˇcnˇe uvedeme n´asleduj´ıc´ı moˇznosti. •
S´ıtˇ e s kapacitami vrchol˚ u: U s´ıtˇe m˚ uˇzeme zadat kapacity vrchol˚ u, neboli kapacitn´ı v´ahov´a funkce je d´ana jako w : + E(D) ∪ V (D) → . Takovou s´ıt’ zdvojen´ım“ vrchol˚ u snadno pˇrevedeme na bˇeˇznou ” s´ıt’, ve kter´e kapacity p˚ uvodn´ıch vrchol˚ u budou uvedeny u nov´ych hran spojuj´ıc´ıch zdvojen´e vrcholy. Viz neform´aln´ı sch´ema: 5 s z 3 b 5 2 b s s s z 2 3 4 a 4 s s s s a 5 5
R
❀
81
•
S´ıtˇ e s doln´ımi kapacitami: Pro hrany s´ıtˇe lze zadat tak´e jejich minim´aln´ı kapacity, tedy doln´ı meze pˇr´ıpustn´eho r´ıpustn´y tok pak mus´ı splˇ novat ℓ(e) ≤ toku, jako v´ahovou funkci ℓ : E(D) → + 0 . Pˇ f (e) ≤ w(e) pro vˇsechny hrany e. (V t´eto modifikaci u ´ lohy jiˇz pˇr´ıpustn´y tok nemus´ı v˚ ubec existovat.)
R
Bipartitn´ı p´ arov´ an´ı Biparitn´ı grafy jsou grafy, jejichˇz vrcholy lze rozdˇelit do dvou mnoˇzin tak, ˇze vˇsechny hrany vedou jen mezi tˇemito mnoˇzinami, neboli podgrafy u ´ pln´ych bipartitn´ıch graf˚ u. Definice: P´arov´an´ı v (nyn´ı biparitn´ım) grafu G je podmnoˇzina hran M ⊂ E(G) takov´a, ˇze ˇz´adn´e dvˇe hrany z M nesd´ılej´ı koncov´y vrchol. ´ Koment´ aˇ r: Ulohu nal´ezt v dan´em bipartitn´ım grafu co nejvˇetˇs´ı p´ arov´an´ı lze pomˇernˇe snadno vyˇreˇsit pomoc´ı tok˚ u ve vhodnˇe definovan´e s´ıti. Uveden´ a metoda pouˇzit´ı tok˚ u v s´ıti na ˇreˇsen´ı probl´emu p´ arov´an´ı pˇritom hezky ilustruje obecn´ y pˇr´ıstup, jak´ ym toky v s´ıt´ıch pomohou ˇreˇsit i u ´lohy, kter´e na prvn´ı pohled se s´ıtˇemi nemaj´ı nic spoleˇcn´eho.
arov´ an´ı Metoda 9.12. Nalezen´ı bipartitn´ıho p´ Pro dan´y bipartitn´ı graf G s vrcholy rozdˇelen´ymi do mnoˇzin A, B sestroj´ıme s´ıt’ S n´asledovnˇe: A B s s 1 1 z 1 • •
s
s
s
s
s
s
s 1
Vˇsechny hrany s´ıtˇe S orientujeme od zdroje do stoku a pˇriˇrad´ıme jim kapacity 1. Nyn´ı najdeme (celoˇc´ıseln´y) maxim´aln´ı tok v S Algoritmem 9.9. Do p´arov´an´ı vloˇz´ıme ty hrany grafu G, kter´e maj´ı nenulov´y tok.
D˚ ukaz spr´avnosti Metody 9.12: Podle D˚ usledku 9.11 bude maxim´aln´ı tok celoˇc´ıseln´y, a proto kaˇzdou hranou poteˇce bud’ 0 nebo 1. Jelikoˇz vˇsak do kaˇzd´eho vrcholu v A m˚ uˇze ze zdroje pˇrit´ect jen tok 1, bude z kaˇzd´eho vrcholu A vybr´ana do p´arov´an´ı nejv´yˇse jedna hrana. Stejnˇe tak odvod´ıme, ˇze z kaˇzd´eho vrcholu B bude vybr´ana nejv´yˇse jedna hrana, a proto vybran´a mnoˇzina skuteˇcnˇe bude p´arov´an´ım. Z´aroveˇ n to bude nejvˇetˇs´ı moˇzn´e p´arov´an´ı, protoˇze z kaˇzd´eho p´arov´an´ı lze naopak vytvoˇrit tok pˇr´ısluˇsn´e velikosti a vˇetˇs´ı neˇz nalezen´y tok v S neexistuje. ✷ Pozn´ amka: Popsan´a metoda je z´ akladem tzv. Mad’arsk´eho algoritmu pro p´ arov´an´ı v bipartitn´ıch ´ grafech. Ulohu nalezen´ı maxim´ aln´ıho p´ arov´an´ı lze definovat i pro obecn´e grafy a tak´e ji efektivnˇe algoritmicky vyˇreˇsit, ale pˇr´ısluˇsn´ y algoritmus [Edmonds˚ uv] nen´ı jednoduch´ y.
V´ ybˇ er r˚ uzn´ ych reprezentant˚ u Definice: Necht’ M1 , M2 , . . . , Mk jsou nepr´azdn´e mnoˇziny. Syst´emem r˚ uzn´ych repreuzn´ych prvk˚ u zentant˚ u mnoˇzin M1 , M2 , . . . , Mk naz´yv´ame takovou posloupnost r˚ (x1 , x2 , . . . , xk ), ˇze xi ∈ Mi pro i = 1, 2, . . . , k. 82
D˚ uleˇzit´ym a dobˇre zn´am´ym v´ysledkem v t´eto oblasti je Hallova vˇeta plnˇe popisuj´ıc´ı, kdy lze syst´em r˚ uzn´ych reprezentant˚ u dan´ych mnoˇzin nal´ezt. Vˇ eta 9.13. Necht’ M1 , M2 , . . . , Mk jsou nepr´azdn´e mnoˇziny. Pro tyto mnoˇziny existuje syst´em r˚ uzn´ych reprezentant˚ u, pr´avˇe kdyˇz plat´ı [ ∀J ⊂ {1, 2, . . . , k} : Mj ≥ |J| , j∈J
neboli pokud sjednocen´ı libovoln´e skupiny z tˇechto mnoˇzin m´a alespoˇ n tolik prvk˚ u, kolik mnoˇzin je sjednoceno.
D˚ ukaz: Oznaˇcme x1 , x2 , . . . , xm po ˇradˇe vˇsechny prvky ve sjednocen´ı M1 ∪M2 ∪· · ·∪Mk . Definujeme si bipartitn´ı graf G na mnoˇzinˇe vrchol˚ u {1, 2, . . . , k}∪{x1 , x2 , . . . , xm }∪{u, v}, ve kter´em jsou hrany {u, i} pro i = 1, 2, . . . , k, hrany {v, xj } pro j = 1, 2, . . . , m a hrany {i, xj } pro vˇsechny dvojice i, j, pro kter´e xj ∈ Mi . Koment´ aˇ r: Konstrukce naˇseho grafu G je obdobn´a konstrukci s´ıtˇe v Algoritmu ??: Vrcholy u a v odpov´ıdaj´ı zdroji a stoku, ostatn´ı hrany pˇrich´ azej´ıc´ı do vrcholu xj zn´ azorˇ nuj´ı vˇsechny z dan´ ych mnoˇzin, kter´e obsahuj´ı prvek xj .
Cesta mezi u a v m´a tvar u, i, xj , v, a tud´ıˇz ukazuje na reprezentanta xj ∈ Mi . Syst´em r˚ uzn´ych reprezentant˚ u tak odpov´ıd´a k disjunktn´ım cest´am mezi u a v. Necht’ X je nyn´ı libovoln´a minim´aln´ı mnoˇzina vrchol˚ u v G, neobsahuj´ıc´ı samotn´e u a v, po jej´ımˇz odebr´an´ı z grafu nezbude ˇz´adn´a cesta mezi u a v. Podle t´eto u ´ vahy maj´ı naˇse mnoˇziny syst´em r˚ uzn´ych reprezentant˚ u, pr´avˇe kdyˇz kaˇzd´a takov´a oddˇeluj´ıc´ı mnoˇzina X m´a aspoˇ n k prvk˚ u. Poloˇzme J = {1, 2, . . . , k} \ X. Pak kaˇzd´a hrana z J (mimo u) vede do vrchol˚ u z X ∩ {x1 , . . . , xm } (aby nevznikla cesta mezi u, v), a proto [ Mj = |X ∩ {x1 , . . . , xm }| = |X| − |X ∩ {1, . . . , k}| = |X| − k + |J| . j∈J
(Prvn´ı rovnost vypl´yv´a z minimality mnoˇziny SX.) Vid´ ıme tedy, ˇze |X| ≥ k pro vˇsechny (minim´aln´ı) volby oddˇeluj´ıc´ı X, pr´avˇe kdyˇz j∈J Mj ≥ |J| pro vˇsechny volby J, coˇz je dokazovan´a podm´ınka naˇs´ı vˇety. ✷
Pozn´ amka: Tento d˚ ukaz n´ am tak´e d´ av´a n´ avod, jak syst´em r˚ uzn´ ych reprezentant˚ u pro dan´e mnoˇziny nal´ezt – staˇc´ı pouˇz´ıt Algoritmus 9.9 na vhodnˇe odvozenou s´ıt’.
Rozˇ siˇ ruj´ıc´ı studium .................................................
83
10
Formalizace a d˚ ukazy pro algoritmy
´ Uvod Po pˇredchoz´ı pˇrev´aˇznˇe matematick´e l´atce se n´ aˇs v´ yklad obrac´ı bezprostˇrednˇe k informatice. Mnoz´ı z v´as si asi jiˇz vˇsimli, ˇze umˇen´ı programovat nen´ı zdaleka jen o tom nauˇcit se syntaxi programovac´ıho jazyka, ale pˇredevˇs´ım o schopnosti vytv´aˇret a spr´avnˇe form´alnˇe zapisovat algoritmy. Pˇritom tˇreba situace, kdy program´atorem zapsan´ y k´od ve skuteˇcnosti poˇc´ıt´a nˇeco trochu jin´eho, neˇz si autor pˇredstavuje, je snad nejˇcastˇejˇs´ı program´atorskou chybou – o to z´ akeˇrnˇejˇs´ı, ˇze ji ˇz´ adn´ y chytr´ y“ pˇrekladaˇc nem˚ uˇze odhalit. ” Proto jiˇz na poˇc´ atku studia informatiky je ˇz´adouc´ı kl´ast d˚ uraz na spr´avn´e ch´ ap´ an´ı z´apisu algoritm˚ u i na pˇresn´e d˚ ukazy jejich vlastnost´ı a spr´avnosti. A to je t´ema, kter´emu se budeme vˇenovat po pˇrev´aˇzn´ y zbytek pˇredmˇetu FI: IB000.
C´ıle Bude zaveden zp˚ usob form´ aln´ıho z´apisu algoritm˚ u pro potˇreby dalˇs´ıho v´ ykladu, nez´ avisle na konkr´etn´ıch programovac´ıch jazyc´ıch. Na tomto formalismu pak bude ukazov´ano spr´avn´e ch´ ap´ an´ı chov´an´ı algoritm˚ u a pˇr´ıklady d˚ ukaz˚ u na konkr´etn´ıch mal´ ych“ algoritmech. ” Nejd˚ uleˇzitˇejˇs´ı technikou d˚ ukaz˚ u bude matematick´a indukce.
10.1
Form´ aln´ı popis algoritmu
Pˇred samotn´ym z´avˇerem naˇseho matematick´eho kurzu si poloˇzme kl´ıˇcovou ot´azku, co je vlastnˇe algoritmus? Kdyˇz se na t´ım zamysl´ıte, asi zjist´ıte, ˇze to nen´ı tak jednoduch´e pˇresnˇe ˇr´ıci. Dokonce je to natolik obt´ıˇzn´a ot´azka, ˇze si zde m˚ uˇzeme podat jen docela zjednoduˇsenou (ˇci naivn´ı?) odpovˇed’, pˇresto vˇsak dostateˇcnou pro zam´yˇslenou demonstraci matematick´ych d˚ ukaz˚ u pro bˇeˇzn´e algoritmy. Pozn´ amka: Za definici algoritmu je obecnˇe pˇrij´ım´ ana tzv. Church–Turingova teze tvrd´ıc´ı, ˇze vˇsechny algoritmy lze simulovat“ na Turingovˇe stroji. Jedn´a se sice o pˇresnou, ale znaˇcnˇe ” nepraktickou definici. Mimo Turingova stroje existuj´ı i jin´e matematick´e modely v´ ypoˇct˚ u, jako tˇreba stroj RAM, kter´ y je abstrakc´ı skuteˇcn´eho strojov´eho k´odu, nebo tak´e tˇreba tzv. neprocedur´aln´ı (neimperativn´ı) modely zahrnuj´ıc´ı funkcion´ aln´ı a logick´e programov´an´ı.
Konvence 10.1. Zjednoduˇsenˇe zde algoritmem rozum´ıme koneˇcnou posloupnost element´arn´ıch v´ypoˇcetn´ıch krok˚ u, ve kter´e kaˇzd´y dalˇs´ı krok vhodnˇe 1 vyuˇz´ıv´a (neboli z´avis´ı na) vstupn´ı u ´ daje ˇci hodnoty vypoˇcten´e v pˇredchoz´ıch kroc´ıch. Tuto z´avislost pˇritom poj´ım´ame zcela obecnˇe nejen na operandy, ale i na vykon´avan´e instrukce v kroc´ıch. Pro z´apis algoritmu a jeho zpˇrehlednˇen´ı a zkr´acen´ı vyuˇz´ıv´ame ˇr´ıd´ıc´ı konstrukce – podm´ınˇen´a vˇetven´ı a cykly. Koment´ aˇ r: Vid´ıte, jak bl´ızk´e si jsou konstruktivn´ı matematick´e d˚ ukazy a algoritmy v naˇsem pojet´ı? Jedn´a se nakonec o jeden ze z´amˇer˚ u naˇseho pˇr´ıstupu. . . 1
Zv´ıdav´ı studenti si mohou na tomto m´ıstˇe uvˇedomit, ˇze ve sl˚ uvku vhodnˇe“ se skr´ yv´a cel´ a hloubka ” Church–Turingovy teze. V ˇza´dn´em pˇr´ıpadˇe tak nelze mechanicky bez zamyˇslen´ı obracet, ˇze by kaˇzd´a posloupnost krok˚ u atd . . . byla algoritmem ve smyslu t´eto teze (viz tak´e Lekce 12).
84
Pˇ r´ıklad 10.2. Z´apis algoritmu pro v´ypoˇcet pr˚ umˇeru dan´eho pole a[] s n prvky. Algoritmus. • Inicializujeme sum ← 0 ; •
postupnˇe pro i=0,1,2,...,n-1 provedeme ∗ sum ← sum+a[i] ;
•
vyp´ıˇseme pod´ıl (sum/n) .
✷
u a ˇr´ıd´ıc´ıch Ve vyˇsˇs´ı u ´ rovni“ form´alnosti (s jasnˇejˇs´ım vyznaˇcen´ım element´arn´ıch krok˚ ” struktur algoritmu) se tot´eˇz d´a zapsat jako: umˇ er z dan´eho pole a[] s n prvky. Algoritmus 10.3. Pr˚ input pole a[] d´elky n; sum ← 0; foreach i ← 0,1,2,...,n-1 sum ← sum+a[i]; done res ← sum/n; output res;
do
Symbolick´ y z´ apis algoritm˚ u Znaˇ cen´ ı . Pro potˇreby symbolick´eho form´aln´ıho z´apisu algoritm˚ u v pˇredmˇetu FI: IB000 si zavedeme n´asleduj´ıc´ı pravidla: enn´e nebudeme deklarovat ani typovat, pole odliˇs´ıme z´avorkami p[]. ∗ Promˇ ∗ Pˇriˇrazen´ı hodnoty zapisujeme a ← b, pˇr´ıpadnˇ e a := b, ale nikdy ne a=b. ∗ Jako element´ arn´ı operace je moˇzn´e pouˇz´ıt jak´ekoliv aritmetick´e v´yrazy v bˇeˇzn´em
matematick´em z´apise. Rozsahem a pˇresnost´ı ˇc´ısel se zde nezab´yv´ame.
∗ Podm´ınˇ en´e vˇetven´ı uvedeme kl´ıˇcov´ymi slovy if ... then ... else ... fi , kde
else vˇetev lze vynechat (a nˇekdy, na jednom ˇr´adku, i fi).
∗ Pevn´ y cyklus uvedeme kl´ıˇcov´ymi slovy
foreach ... do ... done , kde ˇc´ast za foreach mus´ı obsahovat pˇredem danou mnoˇzinu hodnot pro pˇriˇrazov´an´ı do ˇr´ıd´ıc´ı promˇenn´e.
∗ Podm´ınˇ en´y cyklus uvedeme kl´ıˇcov´ymi slovy while ... do ... done . Zde se m˚ uˇze
za while vyskytovat jak´akoliv logick´a podm´ınka.
∗ V z´ apise pouˇz´ıv´ame jasn´e odsazov´an´ı (zleva) podle u ´ rovnˇe zanoˇren´ı ˇr´ıd´ıc´ıch struktur
(coˇz jsou if, foreach, while).
∗ Pokud je to dostateˇ cnˇe jasn´e, element´arn´ı operace nebo podm´ınky m˚ uˇzeme i ve
form´aln´ım z´apise popsat bˇeˇzn´ym jazykem.
Vyzbrojeni t´ımto znaˇcen´ım a matematick´ym apar´atem dokazov´an´ı“ si nyn´ı m˚ uˇzeme ” dovolit se pod´ıvat na mnoh´e z´akladn´ı (a jednoduch´e) algoritmy nov´ym kritick´ym pohledem. 85
Co poˇ c´ıt´ a n´ asleduj´ıc´ı algoritmus? Pˇ r´ıklad 10.4. Je d´an n´asleduj´ıc´ı symbolicky zapsan´y algoritmus. Co je jeho v´ystupem v z´avislosti na vstupech a, b? Algoritmus 10.5. input a, b; res ← 7; foreach i ← 1,2,...,b-1,b do res ← res + a + 2·b + 8; done output res; Nejprve si zkusmo vypoˇc´ıt´ame hodnoty v´ysledku res v poˇc´ateˇcn´ıch iterac´ıch cyklu: b = 0: b = 1: b = 2:
res = 7, res = 7 + a + 2b + 8, res = 7 + (a + 2b + 8) + (a + 2b + 8), . . .
Co d´ale? V´yˇcet hodnot naznaˇcuje pravidelnost a z´avˇer, ˇze obecn´y v´ysledek po b iterac´ıch cyklu bude m´ıt hodnotu res = 7 + b(a + 2b + 8) = ab + 2b2 + 8b + 7 . Jak vˇsak toto dok´aˇzeme? Nejl´epe asi indukc´ı podle vstupn´ı hodnoty b, ale to nen´ı form´alnˇe u ´ plnˇe pˇresn´e, nebot’ s hodnotou b mus´ıme pracovat jako se zcela obecn´ym pevn´ym parametrem a z´aroveˇ n ji mˇenit(?) podle potˇreb indukce. Pro tuto ˇc´ast odkazujeme do Odd´ılu 10.3. ✷
10.2
O spr´ avnosti“ a dokazov´ an´ı program˚ u ”
Jak se m´ame pˇresvˇedˇcit, ˇze je dan´y program poˇc´ıt´a spr´avnˇe“? ” ∗ Co tˇreba ladˇ en´ı program˚ u? Jelikoˇz poˇcet moˇzn´ych vstupn´ıch hodnot je (v principu) neohraniˇcen´y, nelze otestovat vˇsechna moˇzn´a vstupn´ı data. ∗ Situace je zvl´ aˇstˇe komplikovan´a v pˇr´ıpadˇe paraleln´ıch, randomizovan´ych, interak-
tivn´ıch a nekonˇc´ıc´ıch program˚ u (operaˇcn´ı syst´emy, syst´emy ˇr´ızen´ı provozu apod.). Takov´e syst´emy maj´ı nedeterministick´e chov´an´ı a opakovan´e experimenty vedou k r˚ uzn´ym v´ysledk˚ um. (Nelze je tud´ıˇz ani rozumnˇe ladit, respektive ladˇen´ı poskytne jen velmi nedostateˇcnou z´aruku spr´avn´eho chov´an´ı za jin´ych okolnost´ı. . . )
∗ V nˇ ekter´ych pˇr´ıpadech je vˇsak tˇreba m´ıt naprostou jistotu, ˇze program funguje tak
jak m´a, pˇr´ıpadnˇe ˇze splˇ nuje z´akladn´ı bezpeˇcnostn´ı poˇzadavky.
– Pro mal´e“ algoritmy je moˇzn´e podat pˇresn´y matematick´y d˚ ukaz spr´avnosti. ” – Nar˚ ustaj´ıc´ı sloˇzitosti programov´ych syst´em˚ u a poˇzadavky na jejich bezpeˇcnost si pak vynucuj´ı v´yvoj jin´ych spolehliv´ych“ form´aln´ıch verifikaˇcn´ıch metod. ” Koment´ aˇ r: Mimochodem, co to vlastnˇe znamen´a poˇc´ıtat spr´avnˇe“? ”
86
Uk´ azka form´ aln´ıho d˚ ukazu algoritmu Pˇ r´ıklad 10.6. Je d´an n´asleduj´ıc´ı symbolicky zapsan´y algoritmus. Dokaˇzte, ˇze jeho v´ysledkem je v´ymˇena“ vstupn´ıch hodnot a, b. ” Algoritmus 10.7. input a, b; a ← a+b; b ← a-b; a ← a-b; output a, b; Pro spr´avn´y form´aln´ı d˚ ukaz si mus´ıme nejprve uvˇedomit, ˇze je tˇreba symbolicky odliˇsit od sebe promˇenn´e a,b od jejich dan´ych vstupn´ıch hodnot, tˇreba ha , hb . Nyn´ı v kroc´ıch algoritmu poˇc´ıt´ame hodnoty promˇenn´ych: ∗ ∗ ∗ ∗
a = ha , b = hb , a ← a + b = ha + hb , b = hb , a = ha + hb , b ← a − b = ha + hb − hb = ha , a ← a − b = ha + hb − ha = hb , b = ha ,
V jednotliv´ych kroc´ıch tak jasnˇe vid´ıme, ˇze pro kter´ekoliv vstupn´ı hodnoty ha , hb bude ve v´ysledku obsahem promˇenn´e a hodnota hb a obsahem promˇenn´e b hodnota ha . T´ımto jsme s d˚ ukazem hotovi. ✷
10.3
Jednoduch´ e indukˇ cn´ı dokazov´ an´ı
Pˇr´ıklad 10.6 je ponˇekud extr´emn´ı uk´azkou ve smyslu toho, ˇze v praxi jen m´alokdy zkouman´y algoritmus udˇel´a tak m´alo krok˚ u, ˇze bychom kaˇzd´y krok mohli studovat zvl´aˇst’. Pˇredevˇs´ım poˇcet krok˚ u (cykl˚ u ˇci iterac´ı) b´yva promˇenn´y a z´avisl´y na vstupu a pak mus´ı nastoupit lepˇs´ı d˚ ukazov´e prostˇredky, pˇredevˇs´ım matematick´a indukce, kter´a je jako ” stvoˇren´a“ pro form´aln´ı uchopen´ı opakovan´ych sekvenc´ı v algoritmech. Pˇ r´ıklad 10.8. Dokaˇzte, ˇze n´asleduj´ıc´ı algoritmus v z´avislosti na vstupech a, b navr´at´ı v´ysledek ab + 2b2 + 8b + 7 (viz Pˇr´ıklad 10.4). Algoritmus 10.9. input a, b; res ← 7; foreach i ← 1,2,...,b-1,b do res ← res + a + 2·b + 8; done output res; V prv´e ˇradˇe si z d˚ uvodu form´aln´ı pˇresnosti pˇreznaˇc´ıme mez cyklu v algoritmu na foreach i ← 1,2,...,c do .. (kde c = b). To dˇel´ame proto, ˇze jinak by se n´am pletla hodnota b vstupuj´ıc´ı do pˇriˇrazen´ı do promˇenn´e res s hodnotou poˇctu proveden´ych iterac´ı cyklu. Pot´e postupujeme pˇrirozenˇe indukc´ı podle poˇctu c iterac´ı (uˇz nez´avisle na vstupn´ı hodnotˇe b); dokazujeme, ˇze v´ysledek v´ypoˇctu algoritmu bude res = (a + 2b + 8)c + 7 = ac + 2bc + 8c + 7 .
87
Pro c = 0 je v´ysledek spr´avnˇe res = 0 + 7. Pokud d´ale pˇredpokl´ad´ame platnost vztahu res = ac + 2bc + 8c + 7 po nˇejak´ych c iterac´ıch cyklu foreach, tak n´asleduj´ıc´ı iterace pro i ← c + 1 (jej´ıˇz pr˚ ubˇeh na samotn´e hodnotˇe i nez´aleˇz´ı) zmˇen´ı hodnotu na res ← res + a + 2b + 8 = ac + a + 2bc + 2b + 8c + 8 + 7 = = a(c + 1) + 2b(c + 1) + 8(c + 1) + 7 . D˚ ukaz indukc´ı je t´ım hotov.
✷
Pˇ r´ıklad 10.10. Zjistˇete, kolik znak˚ u ’x’ v z´avislosti na celoˇc´ıseln´e hodnotˇe n vstupn´ıho parametru n vyp´ıˇse n´asleduj´ıc´ı algoritmus. Algoritmus 10.11. foreach i ← 1,2,3,...,n-1,n do foreach j ← 1,2,3,...,i-1,i do vytiskni ’x’; done done Nejprve si uvˇedom´ıme, ˇze druh´y (vnoˇren´y) cyklus vˇzdy vytiskne celkem i znak˚ u ’x’. Proto iterac´ı prvn´ıho cyklu (nejsp´ıˇse) dostaneme postupnˇe 1 + 2 + · · · + n znak˚ u ’x’ 1 na v´ystupu, coˇz jiˇz v´ıme (Pˇr´ıklad 2.8), ˇze je celkem 2 n(n + 1). Budeme tedy dokazovat n´asleduj´ıc´ı tvrzen´ı: u ’x’. Vˇ eta. Pro kaˇzd´e pˇrirozen´e n Algoritmus 10.11 vyp´ıˇse pr´avˇe 21 n(n+1) znak˚ D˚ ukaz: Postupujeme indukc´ı podle n. B´aze pro n = 0 je zˇrejm´a, neprovede se ani jedna iterace cyklu a tud´ıˇz bude vytiˇstˇeno 0 znak˚ u ’x’, coˇz je spr´avnˇe. Necht’ tedy tvrzen´ı plat´ı pro jak´ekoliv n0 a poloˇzme n = n0 + 1. Prvn´ıch n0 iterac´ı vnˇejˇs´ıho cyklu podle indukˇcn´ıho pˇredpokladu vyp´ıˇse (ve vnitˇrn´ım cyklu) celkem 12 n0 (n0 + 1) znak˚ u ’x’. Pak jiˇz n´asleduje jen jedna posledn´ı iterace vnˇejˇs´ıho cyklu s i ← n=n0 +1 a v n´ı se vnitˇrn´ı cyklus j ← 1,2,...,i=n iteruje celkem n = n0 + 1 -kr´at. Celkem tedy bude vytiˇstˇen tento poˇcet znak˚ u ’x’: 1 1 1 n0 (n0 + 1) + n0 + 1 = (n0 + 1 + 1)(n0 + 1) = n(n + 1) 2 2 2 D˚ ukaz indukˇcn´ıho kroku je hotov.
10.4
✷
Rekurzivn´ı algoritmy
Rekurentn´ı vztahy posloupnost´ı, struˇcnˇe uveden´e v Odd´ıle 3.4, maj´ı svou pˇrirozenou obdobu v rekurzivnˇe zapsan´ych algoritmech. Zjednoduˇsenˇe ˇreˇceno to jsou algoritmy, kter´e se v pr˚ ubˇehu v´ypoˇctu odvol´avaj´ı na v´ysledky sebe sama pro jin´e (pokud moˇzno striktnˇe menˇs´ı) vstupn´ı hodnoty. U takov´ych algoritm˚ u je zvl´aˇstˇe d˚ uleˇzit´e kontrolovat jejich spr´avnost a tak´e proveditelnost. My si tuto oblast algoritm˚ u osvˇetl´ıme nˇekolika jednoduch´ymi pˇr´ıklady. Pˇ r´ıklad 10.12. Symbolick´y z´apis jednoduch´eho rekurzivn´ıho algoritmu. Algoritmus . Rekurzivn´ı funkce factorial(x) if x < 1 then t ← 1; else t ← x · factorial(x-1); return t 88
Co je v´ysledkem v´ypoˇctu? Jednoduˇse ˇreˇceno, v´ysledkem je faktori´al vstupn´ı pˇrirozen´e hodnoty x, tj. hodnota x! = x · (x − 1) · · · ·· 2 · 1. (Z´aporn´e a necel´e vstupn´ı hodnoty x pro zjednoduˇsen´ı ignorujeme, ale poctivˇe napsan´y program by si samozˇrejmˇe mˇel pˇr´ıpustnost vstupu kontrolovat s´am!) Vˇsimnˇete si jeˇstˇe, ˇze algoritmus i pro vstup x = 0 spr´avnˇe vyhodnot´ı 0! = 1. ✷ Fibonacciho ˇ c´ısla Pro dalˇs´ı pˇr´ıklad rekurze se vr´at´ıme k Odd´ılu 3.4, kde byla zm´ınˇena zn´am´a Fibonacciho posloupnost 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, . . . . Ve skuteˇcnosti tuto posloupnost budeme uvaˇzovat jiˇz od nult´eho ˇclenu, tj. jako 0, 1, 1, 2, 3, 5, 8, 13, 21, . . . . Algoritmus 10.13. Rekurzivn´ı v´ypoˇcet funkce fibonacci(x) Pro dan´e pˇrirozen´e x ≥ 0 vypoˇc´ıt´ame x-t´e Fibonacciho ˇc´ıslo n´asledovnˇe: if x < 2 then t ← x; else t ← fibonacci(x-1)+fibonacci(x-2); return t Koment´ aˇ r: Spr´avnost Algoritmu 10.13 je v´ıcem´enˇe zˇrejm´a z jeho pˇr´ım´e podoby s rekurentn´ım vzorcem v definici Fibonacciho ˇc´ısel. Zamyslete se vˇsak, jak je to s praktickou proveditelnost´ı“ takov´eho algoritmu. . . Vid´ıte (pˇr´ıpadnˇe si zkuste naprogramovat), ˇze ˇcas ” v´ ypoˇctu roste velmi rychle? Tˇrebaˇze hodnotu f ibonacci(30) t´ımto algoritmem spoˇc´ıt´ate pomˇernˇe rychle, s v´ ypoˇctem f ibonacci(40) uˇz budete m´ıt vˇetˇs´ı probl´emy a f ibonacci(50) asi bude mimo vaˇse moˇznosti. To skuteˇcnˇe nen´ı dobr´ y algoritmus! Pod´ıvejte se tak´e na bodouc´ı Pˇr´ıklad 11.5, kter´ y odhaduje, jak mnoho (exponenci´ alnˇe) krok˚ u v´ ypoˇctu je potˇreba. Proto si v dalˇs´ım Pˇr´ıkladu 10.14 uvedeme ponˇekud (ve skuteˇcnosti velmi v´ yraznˇe) lepˇs´ı algoritmus v´ ypoˇctu, podobaj´ıc´ı se pˇrirozen´emu lidsk´emu postupu psan´ı ˇclen˚ u posloupnosti do ˇra´dku na pap´ır“. Doporuˇcujeme si oba algoritmy zkusit implementovat a mezi sebou ” porovnat.
Pˇ r´ıklad 10.14. Nerekurzivn´ı algoritmus pro Fibonacciho ˇc´ısla. Dokaˇzte, ˇze n´asleduj´ıc´ı algoritmus pro kaˇzd´e pˇrirozen´e n poˇc´ıt´a tut´eˇz hodnotu jako rekurentn´ı funkce fibonacci(n) v Algoritmu 10.13 (ale mnohem mnohem rychleji). Algoritmus . input n; b[0] ← 0; b[1] ← 1; foreach i ← 2,3,...,n do b[i] ← b[i-1]+b[i-2]; done output b[n] D˚ ukaz: Indukc´ı podle ˇr´ıd´ıc´ı promˇenn´e i budeme dokazovat, ˇze po i-t´e iteraci cyklu algoritmu bude vˇzdy platit b[i] = f ibonacci(i): Co se t´yˇce b´aze indukce, toto vypl´yv´a z u ´ vodn´ıho pˇriˇrazen´ı. Pro libovoln´e i ≥ 2 pˇredpokl´ad´ame platnost indukˇcn´ıho pˇredpokladu b[j] = f ibonacci(j) pro j ∈ {i − 1, i − 2}. V i-t´e iteraci cyklu pak nastane b[i] ← b[i − 1] + b[i − 2] = f ibonacci(i − 1) + f ibonacci(i − 2) = f ibonacci(i) podle definice. T´ım je d˚ ukaz hotov pro hodnotu i = n. ✷
89
Rozˇ siˇ ruj´ıc´ı studium N´aˇs v´ yklad pohl´ıˇz´ı na algoritmy a programov´an´ı tzv. procedur´aln´ım neboli imperativn´ım paradigmatem. Vedle toho existuj´ı i jin´e pˇr´ıstupy k programov´an´ı, jako zm´ınˇen´e funkcion´ aln´ı nebo logick´e. Na FI se s jin´ ymi pˇr´ıstupy studenti sezn´ am´ı tˇreba v pˇredmˇetu Neimperativn´ı programov´an´ı. Pro n´ aˇs pˇredmˇet vˇsak v´ ybˇer v´ ypoˇcetn´ıho paradigmatu nen´ı nejd˚ uleˇzitˇejˇs´ı. Smyslem t´eto lekce bylo pˇredevˇs´ım uk´azat, ˇze u jednoduch´ ych algoritm˚ u lze (a je vhodn´e) je matematicky form´ alnˇe zapisovat i dokazovat jejich spr´avnost. Samozˇrejmˇe je iluzorn´ı pˇredpokl´adat, ˇze obdobn´e d˚ ukazy spr´avnosti pod´ ame i pro velk´e softwarov´e projekty ˇc´ıtaj´ıc´ı aˇz mili´ ony ˇra´dk˚ u, ale postupy a techniky nauˇcen´e pˇri ovˇeˇrov´an´ı jednoduch´ ych algoritm˚ us u ´spˇechem vyuˇzijete i pˇri kontrole a ladˇen´ı jednotliv´ ych kousk˚ u velk´ ych projekt˚ u. aln´ı verifikace program˚ u se v pˇr´ıpadˇe O mnoha r˚ uzn´ ych pokroˇcil´ ych technik´ach form´ z´ajmu dozv´ıte v pokraˇcuj´ıc´ım studiu. Tyto techniky jsou schopny na vhodn´em modelu“ ru” tinnˇe a matematicky pˇresnˇe ovˇeˇrovat (ne)existenci mnoha bˇeˇzn´ ych program´atorsk´ ych chyb.
90
11
Pokroˇ cil´ e dokazov´ an´ı nad algoritmy
´ Uvod Pˇr´ımo navazujeme na Lekci 10 a pokraˇcujeme v uk´azk´ach matematick´eho dokazov´an´ı nad vybran´ ymi kr´atk´ ymi algoritmy. V´ yklad jiˇz bude trochu n´ aroˇcnˇejs´ı a m´ısto umˇele pˇrichystan´ ych (a v podstatˇe trivi´aln´ıch) pˇr´ıklad˚ u se budeme vˇenovat i nˇekolika obecn´ ym dobˇre zn´ am´ ym algoritm˚ um. D´a se ˇr´ıci, ˇze tato lekce je vrcholem“ v naˇs´ı snaze o matem” atick´e dokazov´an´ı algoritm˚ u v informatice. Soustˇred’te se v uk´azk´ach d˚ ukaz˚ u na pochopen´ı, jak jednotliv´e form´ aln´ı matematick´e kroky koresponduj´ı s pr˚ ubˇehem algoritm˚ u.
C´ıle Naˇs´ı snahou v tˇechto dvou lekc´ıch je ˇcten´ aˇri uk´azat pomˇernˇe vyˇcerp´ avaj´ıc´ı pˇrehled zp˚ usob˚ u a trik˚ u, kter´e lze vyuˇz´ıt k anal´ yze a dokazov´an´ı spr´avnosti rozumnˇe kr´atk´ ych algoritm˚ u. Tyto poznatky by mˇely z´akladem toho, aby si ˇcten´ aˇr jako program´ator umˇel po sobˇe sv´e algoritmy pˇreˇc´ıst“ a ovˇeˇrit jejich skuteˇcnou spr´avnost na lok´aln´ı u ´rovni. ”
11.1
Dokazov´ an´ı koneˇ cnosti algoritmu
Co b´yv´a snad jeˇstˇe horˇs´ı, neˇz chybn´y v´ysledek algoritmu? Je to situace, kdy spuˇstˇen´y algoritmus bˇeˇz´ı do nekoneˇcna“ a v˚ ubec se nezastav´ı. ” Koment´ aˇ r: Vˇsimnˇete si, ˇze jsme se zat´ım v d˚ ukazech Lekce 10 v˚ ubec nezam´ yˇsleli nad ubec skonˇc´ı. (To nen´ı samozˇrejm´e a d˚ ukaz koneˇcnosti je nutno v t´ım, zda naˇse algoritmy v˚ obecnosti pod´ avat!) Prozat´ım jsme vˇsak ukazovali algoritmy vyuˇz´ıvaj´ıc´ı jen foreach cykly, pˇritom podle naˇs´ı konvence obsahuje foreach cyklus pˇredem danou koneˇcnou mnoˇzinu hodnot pro ˇr´ıd´ıc´ı promˇennou, neboli n´ aˇs foreach cyklus vˇzdy mus´ı skonˇcit. Ale uˇz v pˇr´ıˇst´ım algoritmu vyuˇzijeme while cyklus, u kter´eho v˚ ubec nen´ı jasn´e kdy a jestli skonˇc´ı, a tud´ıˇz bude potˇrebn´ y i d˚ ukaz koneˇcnosti.
Pr´avˇe nad takovou situac´ı a jej´ı moˇznou prevenc´ı se v tomto odd´ıle zamysl´ıme. Pˇredes´ıl´ame, ˇze dalˇs´ı podnˇetn´a l´atka k t´emuˇz t´ematu se nach´az´ı jeˇstˇe v Lekci 12. Pˇ r´ıklad 11.1. Zastav´ı se vˇzdy v´ypoˇcet n´asleduj´ıc´ıho primitivn´ıho algoritmu? Algoritmus 11.2. input x; while x>5 do x ← x+1; done output x Odpovˇed’ je samozˇrejmˇe NE, jak kaˇzd´y vid´ı pro jak´ykoliv vstup x vˇetˇs´ı neˇz 5. Jak vˇsak tuto negativn´ı odpovˇed’ matematicky dok´azat? To nen´ı zcela jednoduch´e, a proto si pom˚ uˇzeme n´asleduj´ıc´ım trikem: • Pˇ redpokl´adejme pro spor, ˇze Algoritmus 11.2 nˇekdy skonˇc´ı pro x > 5. Necht’ pˇrirozen´e n > 5 je zvoleno tak, ˇze Algoritmus 11.2 skonˇc´ı pro x = n po nejmenˇs´ım moˇzn´em poˇctu ℓ pr˚ uchod˚ u cyklem while. Pak jistˇe ℓ > 0, nebot’ na zaˇc´atku je podm´ınka x>5 splnˇena z definice n. Po prvn´ım pr˚ uchodu pak x = n + 1 > 5, avˇsak nyn´ı jiˇz Algoritmus 11.2 mus´ı skonˇcit po ℓ − 1 < ℓ dalˇs´ıch pr˚ uchodech cyklu. To je spor s volbou x = n coby vstupn´ı hodnoty s nejmenˇs´ım 91
moˇzn´ym poˇctem pr˚ uchod˚ u (pro x = n + 1 totiˇz do ukonˇcen´ı v´ypoˇctu probˇehne o jeden pr˚ uchod m´enˇe – o ten jeden vykonan´y na zaˇc´atku naˇs´ı u ´ vahy). ✷ Kdyˇ z algoritmus vˇ zdy konˇ c´ı Na rozd´ıl od pˇredchoz´ı uk´azky se budeme d´ale vˇenovat pozitivn´ım pˇr´ıpad˚ um, kdy algoritmy posluˇsnˇe konˇc´ı sv´e v´ypoˇcty. Metoda 11.3. Jednoduch´ y d˚ ukaz koneˇ cnosti. M´ame-li za u ´ kol dok´azat, ˇze algoritmus skonˇc´ı, vhodn´y postup je n´asleduj´ıc´ı: ∗ Sledujeme zvolen´ y celoˇc´ıseln´y a zdola ohraniˇcen´y parametr algoritmu (tˇreba pˇrirozen´e ˇc´ıslo) a dok´aˇzeme, ˇze se jeho hodnota v pr˚ ubˇehu algoritmu neust´ale ostˇre zmenˇsuje. u a ∗ Pˇr´ıpadnˇ e pˇredchoz´ı pˇr´ıstup rozˇs´ıˇr´ıme na zvolenou k-tici pˇrirozen´ych parametr˚
dok´aˇzeme, ˇze se jejich hodnoty v pr˚ ubˇehu algoritmu lexikograficky ostˇre zmenˇsuj´ı. Jedn´a se zde vlastnˇe o vhodn´e (a zjednoduˇsen´e pro dan´y u ´ˇcel) vyuˇzit´ı principu matematick´e indukce. Pozor, naˇse parametry“ v˚ ubec nemusej´ı b´yt promˇenn´ymi v programu, a ” pˇresto jsou s programem implicitnˇe nerozluˇcnˇe sv´az´any. Koment´ aˇ r: Napˇr´ıklad pro rekurzivn´ı funkci factorial(x) z Pˇr´ıkladu 10.12 pˇr´ımo y se ostˇre zmenˇsuje, pro snadn´ y d˚ ukaz ukonˇcenosti. vyuˇzijeme parametr x, kter´
Zamysl´ıme-li se nad Metodou 11.3 do hloubky (matematick´e), zjist´ıme, ˇze stejnˇe jako matematick´a indukce je zaloˇzen´a na t´eto vlastnosti: V kaˇzd´e podmnoˇzinˇe pˇrirozen´ych ˇc´ısel existuje jedno nejmenˇs´ı (tomu se ˇr´ık´a dobr´e uspoˇr´ad´an´ı). Proto garance zmenˇsov´an´ı pˇrirozen´e hodnoty parametru algoritmu prostˇe mus´ı znamenat ukonˇcenost jeho v´ypoˇctu, bez ohledu na to, co n´aˇs vymyˇslen´y parametr znamen´a. Nejl´epe je to ilustrovat n´azorn´ymi pˇr´ıklady. Pˇ r´ıklad 11.4. Dokaˇzte, ˇze n´asleduj´ıc´ı algoritmus vˇzdy skonˇc´ı pro jak´ykoliv pˇrirozen´y vstup x. Algoritmus . input x; while x < 100 do y ← 0; x ← x+1; while y < x do y ← y+1; done done Postupujme podle Metody 11.3 – jak vˇsak dos´ahneme zmenˇsov´an´ı parametru“, kdyˇz ” hodnoty promˇenn´ych x,y se zvˇetˇsuj´ı? To nen´ı aˇz tolik obt´ıˇzn´e, prostˇe budeme hodnoty x,y vhodnˇe odeˇc´ıtat od velk´e konstanty. Vtip je v tom dobˇre zvolit vzorec parametru (vlastn´ım odhadem chov´an´ı algoritmu doplnˇen´ym o pozn´an´ı, ˇze v promˇenn´ych x,y se nevyskytnou nikdy hodnoty vˇetˇs´ı neˇz 100): p(x, y) = 1012 − 101 · x − y Pak je jiˇz rutinou dok´azat, ˇze v pr˚ ubˇehu algoritmu (tj. pokud se aspoˇ n jednou vnoˇr´ı do cyklu) je vˇzdy p(x, y) > 0 a v kaˇzd´em pr˚ uchodu vnˇejˇs´ıho i vnitˇrn´ıho cyklu se p(x, y) ostˇre ˇ aˇr necht’ si toto ovˇeˇr´ı s´am. zmenˇs´ı. Cten´ ✷ 92
Pˇ r´ıklad 11.5. Dokaˇzte, ˇze n´asleduj´ıc´ı algoritmus (viz dˇr´ıvˇejˇs´ı 10.13) vˇzdy skonˇc´ı pro jak´ykoliv pˇrirozen´y vstup x. Algoritmus . Rekurzivn´ı v´ypoˇcet funkce fibonacci(x) pro pˇrirozen´e x. if x < 2 then t ← x; else t ← fibonacci(x-1)+fibonacci(x-2); return t Nyn´ı je na prvn´ı pohled pˇrirozen´e sledovat pˇr´ımo parametr x. Indukc´ı podle nˇej pak snadno odvod´ıme, ˇze v´ypoˇcet fibonacci(x) vˇzdy skonˇc´ı, nebot’ jsou rekurzivnˇe vol´any jen menˇs´ı hodnoty parametru. V ˇcem je tedy moˇzn´y nedostatek tohoto pˇr´ım´eho pˇr´ıstupu? V z´asadˇe pouze jedin´y; nez´ısk´ame z nˇej ˇz´adn´y rozumn´y horn´ı odhad poˇctu krok˚ u algoritmu. Pro vysvˇetlen´ı, probl´em spoˇc´ıv´a zhruba v tom, ˇze v bodˇe fibonacci(x-1)+fibonacci(x-2) se v´ypoˇcet rozvˇetvuje“ a my mus´ıme vhodn´ym ” zp˚ usobem umˇet seˇc´ıst poˇcty krok˚ u obou vˇetv´ı. Na druhou stranu pˇri trikov´e volbˇe parametru p(x) = 2x pro Metodu 11.3 v kaˇzd´e iteraci rekurzivn´ıho vol´an´ı fibonacci(x) pro x ≥ 2 nastane p(x − 1) + p(x − 2) = 2x−1 + 2x−2 ≤ 2 · 2x−1 − 1 < 2x a poˇcet iterac´ı v´ypoˇctu fibonacci(n) tak bude vˇzdy nejen koneˇcn´y, ale podle uveden´e u ´ vahy pˇr´ımo striktnˇe menˇs´ı neˇz 2n . Pˇresto, tento algoritmus je velmi pomal´y a mnohem lepˇs´ıho v´ypoˇcetn´ıho ˇcasu v´ypoˇctu Fibonacciho ˇc´ısel dos´ahneme tˇreba s alternativn´ım algoritmem Pˇr´ıkladu 10.14. ✷ Dodatek: Jak konstruovat cykly permutace Pro m´ırnˇe sloˇzitˇejˇs´ı ilustraci v´yˇse uveden´eho konceptu dokazov´an´ı koneˇcnosti se pod´ıv´ame na snadn´y postup nalezen´ı rozkladu permutace na cykly, u kter´eho vˇsak v˚ ubec nen´ı na prvn´ı pohled jasn´e, zda m´a skonˇcit. Algoritmus 11.6. Cykly permutace. Pro danou permutaci π na n-prvkov´e nepr´azdn´e mnoˇzinˇe A = {1, 2, . . . , n} vyp´ıˇseme jej´ı cykly (viz Odd´ıl 6.4) takto: U ← {1, 2, . . . , n} = A; while U6= ∅ do x ← min(U); (nejmenˇs´ı prvek mnoˇziny) zaˇc´ın´ame v´ypis cyklu ’h’ ; while x∈U do vytiskneme x; U ← U\{x} ; x ← π(x) ; done ukonˇc´ıme v´ypis cyklu ’i’ ; done Jak dok´aˇzeme spr´avnost a koneˇcnost tohoto algoritmu? Plat´ı, ˇze pˇr´ım´a aplikace indukce podle n nepˇrinese nic podstatn´eho. D˚ ukaz si tentokr´at rozdˇel´ıme na dvˇe ˇc´asti (podle dvou while cykl˚ u).
93
Vˇ eta. Za pˇredpokladu, ˇze vnitˇrn´ı while cyklus pro jakoukoliv poˇc´ateˇcn´ı volbu x skonˇc´ı, vyp´ıˇse cyklus permutace π obsahuj´ıc´ı x a odebere vˇsechny prvky tohoto cyklu z mnoˇziny U, Algoritmus 11.6 vˇzdy skonˇc´ı se spr´avn´ym v´ysledkem. D˚ ukaz: Postupujeme indukc´ı podle poˇctu cykl˚ u v permutaci π. Jedin´y cyklus v π (b´aze indukce) je vyps´an dle pˇredpokladu vˇety a mnoˇzina U z˚ ustane pr´azdn´a, tud´ıˇz vnˇejˇs´ı while cyklus skonˇc´ı po prvn´ı iteraci a v´ysledek je spr´avn´y. Podlˇe Vˇety 6.6 se kaˇzd´a permutace d´a zapsat jako sloˇzen´ı disjunktn´ıch cykl˚ u. Necht’ π je tedy sloˇzena z ℓ > 1 cykl˚ u. Po prvn´ı iteraci while cyklu zbude v restrikci permutace π na mnoˇzinu U celkem ℓ − 1 cykl˚ u. Podle indukˇcn´ıho pˇredpokladu pak tyto zbyl´e cykly budou spr´avnˇe vyps´any a algoritmus skonˇc´ı. ✷ Koment´ aˇ r: Vid´ıte, ˇze v tomto d˚ ukaze indukc´ı je indukˇcn´ı krok zcela trivi´aln´ı a d˚ uleˇzit´ y je zde pˇredevˇs´ım z´ aklad indukce?
Vˇ eta. Pokud π je permutace, tak vnitˇrn´ı while cyklus vˇzdy skonˇc´ı a nalezne v π cyklus obsahuj´ıc´ı libovoln´y poˇc´ateˇcn´ı prvek x ∈ U. Nav´ıc vˇsechny prvky nalezen´eho cyklu odebere z mnoˇziny U. D˚ ukaz: Zde pˇr´ımo zopakujeme argument d˚ ukazu Vˇety 6.6: Vezmeme libovoln´y prvek x = x1 ∈ U a iterujeme zobrazen´ı xi+1 = π(xi ) pro i = 1, 2 . . . , aˇz dojde ke zopakov´an´ı prvku xk = xj pro k > j ≥ 1. (To mus´ı nastat, nebot’ A je koneˇcn´a.) Jelikoˇz prvek xj byl jiˇz odebr´an z U, v kroku x = xk dojde k ukonˇcen´ı naˇseho while cyklu. Nadto je π prost´a, a proto nem˚ uˇze nastat xk = xj = π(xj−1 ) pro j > 1. Takto byl nalezen a odebr´an z U cyklus ha1 , . . . , ak−1 i a d˚ ukaz je hotov. ✷
11.2
Pˇ rehled technik d˚ ukazu indukc´ı
Doposud v naˇsem textu byla matematick´a indukce pˇredstavov´ana ve sv´e pˇr´ımoˇcar´e formˇe, kdy dokazovan´e tvrzen´ı obvykle pˇr´ımo nab´ızelo celoˇc´ıseln´y parametr, podle nˇejˇz bylo potˇrebn´e indukci v´est. Indukˇcn´ı krok pak prostˇe zpracoval pˇrechod n → n + 1“. To ” vˇsak u dokazov´an´ı spr´avnosti algoritm˚ u typicky neplat´ı a naˇsim c´ılem zde je uk´azat moˇzn´e techniky, jak spr´avnˇe indukci na dokazov´an´ı algoritm˚ u aplikovat. Uvid´ıme, jak si z nab´ızej´ıc´ıch se parametr˚ u spr´avnˇe vybrat a jak je pˇr´ıpadnˇe kombinovat. Technika fixace parametru Prvn´ı technika d˚ ukazu prostˇe dopˇredu za nˇekter´e parametry dosazuje (obecnˇe zvolen´e) konstanty. Tato technika je vhodn´a pro pˇr´ıpady, kdy je sice v algoritmu v´ıce parametr˚ u, ale zjevnˇe“ doch´az´ı ke zmˇenˇe jen jednoho (nebo ˇc´asti) z nich a chov´an´ı algoritmu ke ” zbyl´ym nemˇenn´ym“ parametr˚ um je dobˇre pˇredv´ıdateln´e. ” Pˇ r´ıklad 11.7. Mˇejme n´asleduj´ıc´ı algoritmus. Co je jeho v´ysledkem v´ypoˇctu? Algoritmus . input x, y; res ← 0; while x > 0 do res ← res + y; x ← x-1; done output res; 94
Sledov´an´ım algoritmu zjist´ıme, ˇze hodnota promˇenn´e res bude nar˚ ustaj´ıc´ım souˇctem y + · · · + y, dokud se x nesn´ıˇz´ı na nulu. Pot´e odhadneme: Vˇ eta. Pro kaˇzd´e x, y ∈
N Algoritmus 11.7 vypoˇc´ıt´a hodnotu souˇcinu res = x · y.
Jak´y je vhodn´y postup k d˚ ukazu tohoto tvrzen´ı indukc´ı? Je snadno vidˇet, ˇze na hodnotˇe uleˇzit´e je sledovat x. Tato vstupu y vlastnˇe nijak podstatnˇe nez´aleˇz´ı (lze y fixovat) a d˚ u ´ vaha n´as dovede k n´asleduj´ıc´ımu:
N
libovoln´e ale pro dalˇs´ı u ´ vahy pevn´e. Dok´aˇzeme, ˇze pro kaˇzd´y D˚ ukaz: Budiˇz hy ∈ vstup x ∈ je v´ysledkem v´ypoˇctu hodnota r0 + x · hy , kde hy byla hodnota vstupu y a r0 byla hodnota v promˇenn´e res na zaˇc´atku uvaˇzovan´eho v´ypoˇctu (pro potˇreby indukce, r0 = 0 na u ´ pln´em zaˇc´atku). Podle principu matematick´e indukce uplatnˇen´e na parametr x dost´av´ame snadno: ∗ B´ aze x = 0 znamen´a, ˇze tˇelo cyklu ve v´ypoˇctu uˇz ani jednou neprobˇehne a v´ysledkem bude poˇc´ateˇcn´ı r0 .
N
∗ Indukˇ cn´ı krok. Necht’ je tvrzen´ı zn´amo pro x = i a uvaˇzujme nyn´ı vstup x = i + 1 > 0.
Prvn´ım pr˚ uchodem cyklem se uloˇz´ı res ← res + y = r0 + hy = r1 a x ← x − 1 = i. Zaˇc´ateˇcn´ı hodnota vstupu y nyn´ı (pro naˇse indukˇcn´ı u ´ vahy) tud´ıˇz je r0 + hy = r1 a podle indukˇcn´ıho pˇredpokladu je v´ysledkem v´ypoˇctu hodnota r1 + i · hy = (r0 + hy ) + i · hy = r0 + (i + 1) · hy = r0 + x · hy .
D˚ ukaz matematickou indukc´ı je t´ımto ukonˇcen.
✷
Koment´ aˇ r: Vˇsimnˇete si, ˇze techniku fixace parametru jsme mlˇcky pouˇzili jiˇz v Pˇr´ıkladˇe 10.8.
Indukce k souˇ ctu parametr˚ u Druhou techniku je vhodn´e pouˇz´ıt pˇredevˇs´ım v pˇr´ıpadech, kdy se v pr˚ ubˇehu algoritmu vˇzdy nˇekter´y parametr zmenˇsuje, ale pokaˇzd´e je to nˇekter´y jin´y parametr, takˇze v indukci se nelze zamˇeˇrit jen na jeden z nich. Jedn´a se sp´ıˇse o situaci u rekurzivn´ıch algoritm˚ u. Pˇ r´ıklad 11.8. Je d´an n´asleduj´ıc´ı rekurentn´ı algoritmus. Algoritmus . Funkce kombinacni(m,n) pro pˇrirozen´a m, n. res ← 1; if m > 0 ∧ n > 0 then res ← kombinacni(m-1,n) + kombinacni(m,n-1); fi return res; V´yˇse uveden´y vzorec (a ostatnˇe i n´azev funkce) naznaˇcuje, ˇze funkce m´a co spoleˇcn´eho s kombinaˇcn´ımi ˇc´ısly a Pascalov´ym troj´ uheln´ıkem
a+1 b+1
=
a a + , b+1 b
je vˇsak tˇreba spr´avnˇe nastavit“ v´yznam parametr˚ u a, b. . . ” je v´ysledkem v´ypoˇctu funkce Vˇ eta. Pro kaˇzd´e parametry m, n ∈ m+n kombinacni(m,n) hodnota r = (kombinaˇcn´ı ˇc´ıslo) – poˇcet vˇsech mm prvkov´ych podmnoˇzin (m + n)-prvkov´e mnoˇziny.
N
95
D˚ ukaz indukc´ı vzhledem k souˇctu parametr˚ u i = m + n: ∗ B´ aze i = m + n = 0 pro m, n ∈ znamen´a, ˇze m = n = 0. Zde vˇsak s v´yhodou vyuˇzijeme tzv. rozˇs´ıˇren´ı b´aze“ na vˇsechny hraniˇcn´ı pˇr´ıpady m = 0 nebo n = 0 zvl´aˇst’. ” V obou rozˇs´ıˇren´ych pˇr´ıpadech dan´a podm´ınka algoritmu nen´ı splnˇena, a proto v´ysledek v´ypoˇctu bude inici´aln´ı res = 1. Je toto platn´a odpovˇed’?
N
Kolik je pr´azdn´ych podmnoˇzin (m = 0) jak´ekoliv mnoˇziny? Jedna, ∅. Kolik je mprvkov´ych podmnoˇzin (n = 0) m-prvkov´e mnoˇziny? Zase jedna, ta mnoˇzina samotn´a. T´ım je d˚ ukaz rozˇs´ıˇren´e b´aze indukce dokonˇcen. ∗ Indukˇ cn´ı krok pˇrech´az´ı na souˇcet i + 1 = m + n pro m, n > 0. Nyn´ı je podm´ınka
algoritmu splnˇena a vykonaj´ı se rekurentn´ı vol´an´ı
kombinacni(m-1,n) + kombinacni(m,n-1) . Rekurentn´ı vol´an´ı se vztahuj´ı k v´ybˇeru podmnoˇzin m − 1 + n = m + n − 1 = i prvkov´e mnoˇziny, napˇr´ıklad M = {1, 2, . . . , i}. V´ysledkem tedy je, podle indukˇcn´ıho pˇredpokladu pro souˇcet i, poˇcet (m − 1)-prvkov´ych plus m-prvkov´ych podmnoˇzin mnoˇziny M. Kolik nyn´ı je m-prvkov´ych podmnoˇzin (i + 1)-prvkov´e mnoˇziny M ′ = M ∪ {i + 1}? Pokud ze vˇsech podmnoˇzin odebereme prvek i + 1, dostaneme pr´avˇe m-prvkov´e podmnoˇziny (z tˇech neobsahuj´ıc´ıch i + 1) plus (m − 1)-prvkov´e podmnoˇziny (z tˇech p˚ uvodnˇe obsahuj´ıc´ıch i + 1). A to je pˇresnˇe rovno kombinacni(m-1,n) + kombinacni(m,n-1), jak jsme mˇeli dok´azat. ✷ Zes´ılen´ı dokazovan´ eho tvrzen´ı Velmi ˇcastou situac´ı pˇri dokazov´an´ı algoritmu je, ˇze se zaj´ım´ame o hodnoty nˇekter´ych promˇenn´ych nebo v´ystupy“ nˇekter´e funkce, ale ke spr´avn´emu matematick´emu d˚ ukazu ” mus´ıme postihnout“ i chov´an´ı jin´ych funkc´ı a promˇenn´ych v algoritmu. Takov´a situace ” pak typicky vede na potˇrebu zes´ılen´ı poˇzadovan´eho tvrzen´ı v matematick´e indukci. Pˇ r´ıklad 11.9. Zjistˇete, kolik znak˚ u ’z’ v z´avislosti na celoˇc´ıseln´e hodnotˇe n vstupn´ıho parametru n vyp´ıˇse n´asleduj´ıc´ı algoritmus. Algoritmus 11.10. st ← "z"; foreach i ← 1,2,3,...,n-1,n do vytiskni ˇretˇezec st; st ← st . st ; (zˇretˇezen´ı dvou kopi´ı st za sebou) done Zkus´ıme-li si v´ypoˇcet simulovat pro n = 0, 1, 2, 3, 4 . . . , postupnˇe dostaneme poˇcty ’z’ jako 0, 1, 3, 7, 15 . . . . Na z´akladˇe toho jiˇz nen´ı obt´ıˇzn´e uhodnout“, ˇze poˇcet ’z’ bude ” (asi) obecnˇe urˇcen vztahem 2n − 1. Toto je vˇsak tˇreba dok´azat!
Koment´ aˇ r: Jak z´ ahy zjist´ıme, matematick´a indukce na naˇse tvrzen´ı pˇr´ımo nezab´ır´ a“, ale ” mnohem l´epe se n´ am povede s n´ asleduj´ıc´ım pˇrirozen´ ym zes´ılen´ım dokazovan´eho tvrzen´ı:
Vˇ eta. Pro kaˇzd´e pˇrirozen´e n Algoritmus 11.10 vyp´ıˇse pr´avˇe 2n − 1 znak˚ u ’z’ a n promˇenn´a st bude na konci v´ypoˇctu obsahovat ˇretˇezec 2 znak˚ u ’z’. 96
D˚ ukaz: Postupujeme indukc´ı podle n. B´aze pro n = 0 je zˇrejm´a, neprovede se ani jedna iterace cyklu a tud´ıˇz bude vytiˇstˇeno 0 = 20 − 1 znak˚ u ’z’, coˇz bylo tˇreba dok´azat. 0 Mimo to promˇenn´a st inici´alnˇe obsahuje 1 = 2 znak ’z’. Necht’ tedy tvrzen´ı plat´ı pro jak´ekoliv n0 a poloˇzme n = n0 + 1. Podle indukˇcn´ıho pˇredpokladu po prvn´ıch n0 iterac´ıch bude vytiˇstˇeno 2n0 −1 znak˚ u ’z’ a promˇenn´a st bude n0 obsahovat ˇretˇezec 2 znak˚ u ’z’. V posledn´ı iteraci cyklu (pro i ← n=n0 +1) vytiskneme dalˇs´ıch 2n0 znak˚ u ’z’ (z promˇenn´e st) a d´ale ˇretˇezec st zdvojn´asob´ıme“. Proto po n ” iterac´ıch bude vytiˇstˇeno celkem 2n0 − 1 + 2n0 = 2n0 +1 − 1 = 2n − 1 znak˚ u ’z’ a v st bude n0 n0 +1 n uloˇzeno 2 · 2 = 2 = 2 znak˚ u ’z’. ✷
11.3
Zaj´ımav´ e algoritmy aritmetiky
Pro dalˇs´ı uk´azky d˚ ukazov´ych technik pro algoritmy se pod´ıv´ame na nˇekter´e kr´atk´e algoritmy z oblasti aritmetiky. Napˇr´ıklad zbytkov´e“ umocˇ nov´an´ı na velmi vysok´e exponenty ” je podkladem zn´am´e RSA ˇsifry: arn´ı postup umocˇ nov´ an´ı. Algoritmus 11.11. Bin´ Pro dan´a ˇc´ısla a, b vypoˇcteme jejich celoˇc´ıselnou mocninu (omezenou na zbytkov´e tˇr´ıdy modulo m kv˚ uli prevenci pˇreteˇcen´ı rozsahu cel´ych ˇc´ısel v poˇc´ıtaˇci), tj. ab mod m, n´asleduj´ıc´ım postupem. res ← 1; while b > 0 do if b mod 2 > 0 then res ← (res·a) mod m ; b ← ⌊b/2⌋ ; a ← (a·a) mod m ; done output res; K d˚ ukazu spr´avnosti algoritmu pouˇzijeme indukci podle d´elky ℓ bin´arn´ıho z´apisu ˇc´ısla b. Vˇ eta. Algoritmus 11.11 skonˇc´ı a vˇzdy spr´avnˇe vypoˇcte hodnotu ab mod m. D˚ ukaz: B´aze indukce je pro ℓ = 1, kdy b = 0 nebo b = 1. Pˇritom pro b = 0 se cyklus v˚ ubec nevykon´a a v´ysledek je res = 1. Pro b = 1 se vykon´a jen jedna iterace cyklu a v´ysledek je res = a mod m. Necht’ tvrzen´ı plat´ı pro ℓ0 ≥ 1 a uvaˇzme ℓ = ℓ0 + 1. Pak zˇrejmˇe b ≥ 2 a vykonaj´ı se alespoˇ n dvˇe iterace cyklu. Po prvn´ı iteraci budou hodnoty promˇenn´ych po ˇradˇe a1 = a2 , b1 = ⌊b/2⌋ a res = r1 = (ab
mod 2
) mod m .
Tud´ıˇz d´elka bin´arn´ıho z´apisu b1 bude jen ℓ0 a podle indukˇcn´ıho pˇredpokladu zbyl´e iterace algoritmu skonˇc´ı s v´ysledkem res = r1 · a1b1 mod m = ab mod 2 · a2⌊b/2⌋ mod m = ab mod m . ✷ Euklid˚ uv algoritmus Jiˇz z d´avn´ych dob antiky poch´az´ı n´asleduj´ıc´ı zaj´ımav´y a koneckonc˚ u velmi jednoduch´y postup–algoritmus pro nalezen´ı nejvˇetˇs´ıho spoleˇcn´eho dˇelitele dvou ˇc´ısel. 97
Algoritmus 11.12. Euklid˚ uv pro nejvˇ etˇ s´ıho spoleˇ cn´ eho dˇ elitele. Pro zadan´a pˇrirozen´a ˇc´ısla p, q poˇc´ıt´a n´asledovnˇe: input p, q; while p>0 ∧ q>0 do if p>q then p ← p-q; else q ← q-p; done output p+q;
N
Vˇ eta. Pro kaˇzd´e p, q ∈ na vstupu algoritmus vr´at´ı hodnotu nejvˇetˇs´ıho spoleˇcn´eho dˇelitele ˇc´ısel p a q, nebo 0 pro p = q = 0. D˚ ukaz opˇet povedeme indukc´ı podle souˇctu i = p + q vstupn´ıch hodnot. (Jak jsme psali, je to pˇrirozen´a volba v situaci, kdy kaˇzd´y pr˚ uchod cyklem algoritmu sn´ıˇz´ı jedno z p, q, avˇsak nen´ı jasn´e, kter´e z nich.) •
B´aze indukce pro i = p + q = 0 je zˇrejm´a; cyklus algoritmu neprobˇehne a v´ysledek ihned bude 0.
•
Ve skuteˇcnosti je zase v´yhodn´e uvaˇzovat rozˇs´ıˇrenou b´azi, kter´a zahrnuje i pˇr´ıpady, kdy jen jedno z p, q je nulov´e (Proˇc? Jedn´a se o vˇsechny pˇr´ıpady, kdy pr˚ uchod cyklem neprobˇehne, neboli touto indukc´ı sledujeme poˇcet pr˚ uchod˚ u cyklem.) Pak v´ysledek p + q bude roven tomu nenulov´emu z obou sˇc´ıtanc˚ u, coˇz je v tomto pˇr´ıpadˇe z´aroveˇ n jejich nejvˇetˇs´ı spoleˇcn´y dˇelitel.
•
Indukˇcn´ı krok. Mˇejme nyn´ı vstupn´ı hodnoty p = hp > 0 a q = hq > 0 – tehdy dojde k prvn´ımu pr˚ uchodu tˇelem cyklu naˇseho algoritmu. Pˇredpokl´adejme hp > hq ; pot´e po prvn´ım pr˚ uchodu tˇelem cyklu budou hodnoty p = hp − hq a q = hq , pˇriˇcemˇz nyn´ı p + q = hp < hp + hq = i.
Podle indukˇcn´ıho pˇredpokladu (jelikoˇz nyn´ı p + q < i) tud´ıˇz v´ysledkem algoritmu pro vstupy p = hp − hq a q = hq bude nejvˇetˇs´ı spoleˇcn´y dˇelitel NSD(hp − hq , hq ). Symetricky pro hp ≤ hq algoritmus vr´at´ı NSD(hp , hq − hp ). (Kde NSD() kr´atce oznaˇcuje nejvˇetˇs´ıho spoleˇcn´eho dˇelitele.) D˚ ukaz proto bude dokonˇcen n´asleduj´ıc´ım Lematem 11.13. ✷ Lema 11.13. Pro kaˇzd´a pˇrirozen´a a, b plat´ı NSD(a, b) = NSD(a−b, b) = NSD(a, b−a). Koment´ aˇ r: Vˇsimnˇete si, ˇze dˇelitelnost je dobˇre definov´ana i na z´ aporn´ ych cel´ ych ˇc´ıslech.
D˚ ukaz: Ovˇeˇr´ıme, ˇze c = NSD(a − b, b) je tak´e nejvˇetˇs´ı spoleˇcn´y dˇelitel ˇc´ısel a a b (druh´a ˇc´ast je pak symetrick´a). ∗ Jelikoˇ z ˇc´ıslo c dˇel´ı ˇc´ısla a − b a b, dˇel´ı i jejich souˇcet (a − b) + b = a. Potom c je spoleˇcn´ym dˇelitelem a a b. ∗ Naopak necht’ d nˇ ejak´y spoleˇcn´y dˇelitel ˇc´ısel a a b. Pak d dˇel´ı tak´e rozd´ıl a − b. Tedy
d je spoleˇcn´y dˇelitel ˇc´ısel a − b a b. Jelikoˇz c je nejvˇetˇs´ı spoleˇcn´y dˇelitel tˇechto dvou ˇc´ısel, nutnˇe d dˇel´ı c a z´avˇer plat´ı. ✷
Relativnˇ e rychl´ e odmocnˇ en´ı Na z´avˇer odd´ılu si uk´aˇzeme jeden netradiˇcn´ı kr´atk´y algoritmus a jeho anal´yzu a d˚ ukaz ponech´ame zde otevˇren´e. Dok´aˇzete popsat, na ˇcem je algoritmus zaloˇzen? 98
Algoritmus 11.14. Celoˇ c´ıseln´ a odmocnina. √ Pro dan´e pˇrirozen´e ˇc´ıslo x vypoˇcteme doln´ı celou ˇc´ast jeho odmocniny ⌊ x⌋: p ← x; res ← 0; while p > 0 do while (res + p)2 ≤ x p ← ⌊p/2⌋ ; done output res ;
do res ← res + p ;
Pozn´ amka: Zamysleli jste se, jak´ y maj´ı algoritmy v tomto odd´ıle vlastnˇe v´ yznam? Vˇzdyt’ stejn´e u ´lohy jistˇe sami vyˇreˇs´ıte kaˇzd´ y jednou jednoduchou foreach smyˇckou. Pod´ıvejte se vˇsak (alespoˇ n velmi zhruba) na poˇcet krok˚ u, kter´e zde uveden´e algoritmy potˇrebuj´ı vykonat k z´ısk´an´ı v´ ysledku, a srovnejte si to s poˇcty krok˚ u onˇech jednoduch´ ych“ algoritm˚ u. ” Pro skuteˇcnˇe velk´a vstupn´ı ˇc´ısla zjist´ıte propastn´ y rozd´ıl – s takov´ ym jednoduch´ ym“ algo” ritmem, tˇreba ’foreach i ← 1,...b do res ← res·a mod m done’, se pro obrovsk´e hodnoty b v´ ysledku nikdy nedoˇck´ate, kdeˇzto Algoritmus 11.11 st´ale pobˇeˇz´ı velmi rychle. (Spoˇc´ıt´ate, jak rychle?) Obdobnˇe je tomu u Algoritmu 11.14.
11.4
Dynamick´ y algoritmus
Lekci zakonˇc´ıme kr´atkou, ale velmi hezkou uk´azkou tzv. dynamick´eho algoritmu, kter´y je zn´am pod jm´eny Floyd-Warshall˚ uv. Koment´ aˇ r: Kl´ıˇcovou myˇslenkou dynamick´ ych algoritm˚ u je rozklad probl´emu na podprobl´emy, jejichˇz ˇreˇsen´ı jsou postupnˇe ukl´ad´ ana pro dalˇs´ı moˇzn´e pouˇzit´ı. Metoda je obzvl´aˇstˇe vhodn´ a v pˇr´ıpadech, kdy rozloˇzen´e pod´ ulohy si jsou podobn´e a mohou se opakovat.
y v´ ypoˇ cet vˇ sech nejkratˇ s´ıch cest Metoda 11.15. Dynamick´ mezi vrcholy v grafu G na mnoˇzinˇe vrchol˚ u V (G) = {v0 , v1 , . . . , vN −1 }. • Na poˇ c´atku necht’ d[i,j] ud´av´a 1 (pˇr´ıpadnˇe v´ahu–d´elku hrany {vi , vj }), nebo ∞ pokud hrana mezi i, j nen´ı. •
Po kroku t ≥ 0 necht’ plat´ı, ˇze d[i,j] ud´av´a d´elku nejkratˇs´ı cesty mezi vi , vj , kter´y uˇz´ıv´a pouze vnitˇrn´ı vrcholy z mnoˇziny {v0 , v1 , . . . , vt−1 } (pr´azdn´e v t = 0).
•
Pˇri pˇrechodu z kroku t na n´asleduj´ıc´ı krok t + 1 upravujeme vzd´alenost pro kaˇzdou dvojici vrchol˚ u vi , vj – jsou vˇzdy pouh´e dvˇe moˇznosti: ∗ Bud’ je cesta d´ elky d[i,j] z pˇredchoz´ıho kroku t st´ale nejlepˇs´ı (tj. novˇe povolen´y
vrchol vt n´am nepom˚ uˇze),
∗ nebo cestu vylepˇs´ıme spojen´ım pˇres novˇ e povolen´y vrchol vt , ˇc´ımˇz z´ısk´ame menˇs´ı
vzd´alenost d[i,t]+d[t,j] → d[i,j]. (Nakreslete si obr´azek.)
•
Po N kroc´ıch u ´ prav je v´ypoˇcet hotov.
V´ ypoˇ cet nejkratˇ s´ıch cest Alternativnˇe si zap´ıˇseme postup t´eto metody aˇz pˇrekvapivˇe kr´atk´ym symbolick´ym algoritmem: 99
Algoritmus 11.16. V´ ypoˇ cet vˇ sech nejkratˇ s´ıch cest; Floyd–Warshall input ’Pole d[,] d´elek hran (nebo ∞) grafu G’; foreach t ← 0, 1, . . . , N − 1 do foreach i ← 0, 1, . . . , N − 1, j ← 0, 1, . . . , N − 1 d[i,j] ← min( d[i,j], d[i,t]+d[t,j] ); done done output ’Matice vzd´alenost´ı dvojic d[,]’;
do
Pozn´ amka: V praktick´e implementaci pro symbol ∞ pouˇzijeme velkou konstantu, tˇreba MAX INT/2. (Nelze pouˇz´ıt pˇr´ımo MAX INT, nebot’ by pak doˇslo k aritmetick´emu pˇreteˇcen´ı.)
Vˇ eta 11.17. Algoritmus 11.16 v poli d[i,j] spr´avnˇe vypoˇcte vzd´alenost mezi kaˇzdou dvojic´ı vrchol˚ u vi , vj . D˚ ukaz povedeme matematickou indukc´ı podle ˇr´ıd´ıc´ı promˇenn´e t cyklu. B´aze je snadn´a – na poˇc´atku kroku t = 0 ud´av´a d[i,j] vzd´alenost mezi i a j po cest´ach, kter´e nemaj´ı vnitˇrn´ı vrcholy (tj. pouze pˇr´ıpadnˇe existuj´ıc´ı hranu). Pˇrejdeme-li na krok t + 1, mus´ıme urˇcit nejkratˇs´ı cestu P mezi i a j takovou, ˇze P pouˇz´ıv´a (mimo vi , vj ) pouze vrcholy {v0 , v1 , . . . , vt }. Tuto nejkratˇs´ı cestu P si hypoteticky pˇredstavme: Pokud vt 6∈ V (P ), pak d[i,j] jiˇz ud´av´a spr´avnou vzd´alenost. Jinak vt ∈ V (P ) a oznaˇc´ıme P1 podcestu v P od poˇc´atku vi do vt a obdobnˇe P2 podcestu od vt do konce vj . Podle indukˇcn´ıho pˇredpokladu je pak d´elka P rovna d[i,t]+d[t,j]. Po proveden´ı kroku t = N − 1 jsme hotovi se vˇsemi vrcholy. ✷ Rozˇ siˇ ruj´ıc´ı studium ..............
100
12
Nekoneˇ cn´ e mnoˇ ziny, Zastaven´ı algoritmu
´ Uvod Bystr´eho ˇcten´ aˇre m˚ uˇze snadno napadnout myˇslenka, proˇc se vlastnˇe zab´ yv´ ame dokazov´an´ım spr´avnosti algoritm˚ u a program˚ u, kdyˇz by to pˇrece (snad?) mohl za n´ as dˇelat automaticky poˇc´ıtaˇc samotn´ y. Bohuˇzel to vˇsak nejde a je hlavn´ım c´ılem t´eto lekce uk´azat matematick´e d˚ uvody proˇc tomu tak je. Konkr´etnˇe si dok´aˇzeme, ˇze nelze algoritmicky rozhodnout, zda se dan´ y algoritmus na sv´em vstupu zastav´ı nebo ne. Hlavn´ımi n´ astroji, kter´e pouˇzijeme, budou nekoneˇcn´e mnoˇziny a d˚ ukazov´a technika tzv. Cantorovy diagon´ aly, kter´a se ve velk´e m´ıˇre pouˇz´ıv´a pr´ avˇe v teoretick´e informatice. Touto lekc´ı se tak kr´atce vyman´ıme ze zajet´ı naivn´ı teorie mnoˇzin, kter´a pr´ avˇe v t´eto oblasti m´ a sv´e nepˇrekonateln´e limity. (Pro zv´ıdav´e – obdobnˇe, ale mnohem sloˇzitˇeji, lze dok´azat ˇze ani matematick´e d˚ ukazy nelze obecnˇe algoritmicky konstruovat. . . )
C´ıle Zavedeme si ve zjednoduˇsen´em (a st´ ale ponˇekud naivn´ım“) pohledu nekoneˇcn´e mnoˇziny ” a na nich techniku d˚ ukazu Cantorovou diagon´ alou. Pak tuto kl´ıˇcovou d˚ ukazovou techniku teoretick´e informatiky vyuˇzijeme k d˚ ukazu algoritmick´e neˇreˇsitelnosti probl´emu zastaven´ı.
12.1
O nekoneˇ cn´ ych mnoˇ zin´ ach a kardinalitˇ e
Zat´ımco v naivn´ı teorii jsme si velikost koneˇcn´e mnoˇziny definovali jednoduˇse jako poˇcet jej´ıch prvk˚ u vyj´adˇren´y pˇrirozen´ym ˇc´ıslem, pro nekoneˇcn´e mnoˇziny je situace obt´ıˇzn´a a mnohem m´enˇe intuitivn´ı. Co n´am tˇreba br´an´ı zav´est pro velikost nekoneˇcn´e mnoˇziny symbol ∞? Ponejv´ıce z´avaˇzn´y fakt, ˇze nen´ı nekoneˇcno“ jako nekoneˇcno“ (Vˇeta 12.2)! ” ” Pr´avˇe proto si pro urˇcen´ı mohutnosti nekoneˇcn´ych mnoˇzin mus´ıme vypomoci n´asleduj´ıc´ım pˇr´ımˇerem: Velikosti dvou hrom´adek jablek dok´aˇzeme i bez poˇc´ıt´an´ı porovnat tak, ˇze budeme z obou hrom´adek po ˇradˇe odeb´ırat dvojice jablek (z kaˇzd´e jedno), aˇz dokud prvn´ı hrom´adka nez˚ ustane pr´azdn´a – druh´a hrom´adka pak je vˇetˇs´ı (nebo nejv´yˇse rovna) t´e prvn´ı. Definice: Mnoˇzina A je nejv´yˇse tak velk´a“ jako mnoˇzina B, pr´avˇe kdyˇz existuje injek” tivn´ı funkce f : A → B. Mnoˇziny A a B jsou stejnˇe velk´e“ pr´avˇe kdyˇz mezi nimi existuje ” bijekce. V pˇr´ıpadech nekoneˇcn´ych mnoˇzin pak m´ısto “velikosti” mluv´ıme form´alnˇe o jejich kardinalitˇe. s s
s s s
s s s
s s s
Koment´ aˇ r: Uveden´ a definice kardinality mnoˇzin funguje“ velmi dobˇre i pro nekoneˇcn´e ” mnoˇziny:
N a Z maj´ı stejnou kardinalitu (jsou ”stejnˇe velk´e“, tzv. spoˇcetnˇe nekoneˇcn´e). Lze snadno uk´azat, ˇze i Q je spoˇcetnˇe nekoneˇcn´ a, tj. existuje bijekce f : N → Q, stejnˇe 2 jako bijekce h : N → N .
∗ Napˇr´ıklad
∗
∗ Existuj´ı ale i nekoneˇcn´e mnoˇziny, kter´e jsou striktnˇe vˇetˇs´ı“ neˇz libovoln´ a spoˇcetn´ a ” mnoˇzina (pˇr´ıkladem je ve Vˇetˇe 12.2).
R
∗ Pozdˇeji dok´aˇzeme, ˇze existuje nekoneˇcn´ a posloupnost nekoneˇcn´ ych mnoˇzin, z nichˇz kaˇzd´ a je striktnˇe vˇetˇs´ı neˇz vˇsechny pˇredchoz´ı.
101
Pro porovn´av´an´ı velikost´ı mnoˇzin nˇekdy s v´yhodou vyuˇzijeme n´asleduj´ıc´ı pˇrirozen´e, ale nelehk´e tvrzen´ı (bez d˚ ukazu): Vˇ eta 12.1. Pro libovoln´e dvˇe mnoˇziny A, B (i nekoneˇcn´e) plat´ı, ˇze pokud existuje injekce A → B a z´aroveˇ n i injekce B → A, pak existuje bijekce mezi A a B. Cantorova diagon´ ala, aneb kolik je re´ aln´ ych ˇ c´ısel Prvn´ım kl´ıˇcov´ym poznatkem ukazuj´ıc´ım na neintuitivn´ı chov´an´ı nekoneˇcn´ych mnoˇzin je n´asleduj´ıc´ı d˚ ukaz, kter´y dal historicky vzniknout metodˇe tzv. Cantorovy diagon´aly. Vˇ eta 12.2. Neexistuje ˇz´adn´e surjektivn´ı zobrazen´ı g :
N → R.
D˚ usledek 12.3. Neexistuje ˇz´adn´e injektivn´ı (tud´ıˇz ani bijektivn´ı) zobrazen´ı h : Neform´alnˇe ˇreˇceno, re´aln´ych ˇc´ısel je striktnˇe v´ıce neˇz vˇsech pˇrirozen´ych.
R → N.
D˚ ukaz (Vˇety 12.2 sporem): Necht’ takov´e g existuje a pro zjednoduˇsen´ı se omezme jen na funkˇcn´ı hodnoty v intervalu (0, 1). Podle hodnot zobrazen´ı g si takto m˚ uˇzeme uspoˇr´adat“ dekadick´e z´apisy vˇsech re´aln´ych ˇc´ısel v intervalu (0, 1) po ˇr´adc´ıch do tabulky: ” g(0) = 0. 1 5 4 2 7 5 7 8 3 2 5 . . . g(1) = 0. 4 ... g(2) = 0. 1 ... g(3) = 0. 3 ... g(4) = 0. 9 ... .. .. .. . . . Nyn´ı sestroj´ıme ˇc´ıslo α ∈ (0, 1) n´asledovnˇe; jeho i-t´a ˇc´ıslice za desetinnou ˇc´arkou bude 1, pokud v i-t´em ˇr´adku tabulky na diagon´ale nen´ı 1, jinak to bude 2. V naˇsem pˇr´ıkladˇe α = 0.21211 . . . Kde se naˇse ˇc´ıslo α v tabulce nach´az´ı? (Nezapomeˇ nme, g byla surjektivn´ı, takˇze α nˇekde mus´ı b´yt.) Konstrukce vˇsak ukazuje, ˇze α se od kaˇzd´eho ˇc´ısla v tabulce liˇs´ı na aspoˇ n jednom desetinn´em m´ıstˇe, to je spor. (Aˇz na drobn´y technick´y detail s rozvojem . . . ¯9.) ✷
12.2
Naivn´ı“ mnoˇ zinov´ e paradoxy ”
Analogick´ym zp˚ usobem k Vˇetˇe 12.2 lze dok´azat n´asledovn´e zobecnˇen´ı vyjadˇruj´ıc´ı se o jak´ekoliv mnoˇzinˇe a j´ı pˇriˇrazen´e striktnˇe vˇetˇs´ı. Vˇ eta 12.4. Necht’ M je libovoln´a mnoˇzina. Pak existuje injektivn´ı zobrazen´ı f : M → M 2 , ale neexistuje ˇz´adn´e bijektivn´ı zobrazen´ı g : M → 2M . D˚ ukaz: Dok´aˇzeme nejprve existenci f . Staˇc´ı ale poloˇzit f (x) = {x} pro kaˇzd´e x ∈ M. Pak f : M → 2M je zjevnˇe injektivn´ı. Neexistenci g dok´aˇzeme sporem. Pˇredpokl´adejme tedy naopak, ˇze existuje bijekce g : M → 2M . Uvaˇzme mnoˇzinu K ⊆ M definovanou takto: K = {x ∈ M | x 6∈ g(x)}. Jelikoˇz g je bijektivn´ı a K ∈ 2M , mus´ı existovat y ∈ M takov´e, ˇze g(y) = K. Nyn´ı rozliˇs´ıme dvˇe moˇznosti: 102
– y ∈ g(y). Tj. y ∈ K. Pak ale y 6∈ g(y) z definice K, spor. – y 6∈ g(y). To podle definice K znamen´a, ˇze y ∈ K, tj. y ∈ g(y), spor.
✷
Koment´ aˇ r: Dvˇe navazuj´ıc´ı pozn´ amky. • Technika pouˇ zit´ a v d˚ ukazech Vˇet 12.2 a 12.4 se naz´ yv´ a Cantorova diagon´ aln´ı metoda, nebo tak´e zkr´acenˇe diagonalizace. Konstrukci mnoˇziny K lze zn´ azornit pomoc´ı n´ asleduj´ıc´ı tabulky:
g(a) g(b) g(c) g(d) .. .
•
a √ √ − − .. .
b − − √ − .. .
c − − − √
d √ √ √ √
.. .
.. .
··· ··· ··· ··· ··· .. .
√ Symbol resp. − ˇr´ık´a, ˇze prvek uveden´ y v z´ahlav´ı sloupce patˇr´ı resp. nepatˇr´ı do mnoˇziny uveden´e v z´ ahlav´ı ˇra´dku. Tedy napˇr. d ∈ g(b) a a 6∈ g(d). Mnoˇzina K pot´e obsahuje ty diagon´ aln´ı prvky oznaˇcen´e −, tj. pˇrevrac´ı“ v´ yznam diagon´ aly. ” Z toho, ˇze nekoneˇcna mohou b´ yt r˚ uznˇe velk´a“, lze lehce odvodit ˇradu dalˇs´ıch fakt˚ u. ” V jist´em smyslu je napˇr. mnoˇzina vˇsech probl´em˚ u vˇetˇs´ı neˇz mnoˇzina vˇsech algoritm˚ u (obˇe mnoˇziny jsou nekoneˇcn´e), a proto nutnˇe existuj´ı probl´emy, kter´e nejsou algoritmicky ˇreˇsiteln´e.
Cantor˚ uv paradox Naivn´ı teorie mnoˇzin, jak jsme si ji uvedli i v tomto pˇredmˇetu, trp´ı mnoha neduhy a nepˇresnostmi, kter´e vyplynou na povrch pˇredevˇs´ım pˇri neopatrn´e manipulaci“ s ” nekoneˇcn´ymi mnoˇzinami. Abychom se tˇemto neopatrnostem“ vyhnuli bez pˇr´ıliˇsn´e for” malizace, dva z´akladn´ı z tˇechto paradox˚ u si nyn´ı uk´aˇzeme. Pˇ r´ıklad 12.5. Uv´aˇz´ıme-li nyn´ı nekoneˇcnou posloupnost mnoˇzin
N
A1 , A2 , A3 , A4 , · · ·
N
kde A1 = a Ai+1 = 2Ai pro kaˇzd´e i ∈ , je vidˇet, ˇze vˇsechny mnoˇziny jsou nekoneˇcn´e a kaˇzd´a je striktnˇe vˇetˇs´ı neˇz libovoln´a pˇredchoz´ı. Kde vˇsak v tomto ˇrazen´ı mohutnost´ı bude mnoˇzina vˇsech mnoˇzin“? Na tuto ot´azku, jak ” sami asi c´ıt´ıte, nelze podat odpovˇed’. Co to vˇsak znamen´a? ✷ ∗ Takto se koncem 19. stolet´ı objevil prvn´ı Cantor˚ uv paradox novˇe vznikaj´ıc´ı teorie
mnoˇzin.
∗ Dneˇsn´ı modern´ı vysvˇ etlen´ı paradoxu je jednoduch´e, prostˇe mnoˇzinu vˇsech mnoˇzin“
nelze definovat, takov´a v matematice neexistuje.
Brzy se vˇsak uk´azalo, ˇze je jeˇstˇe mnohem h˚ uˇr. . .
103
”
Russel˚ uv paradox Fakt: Nen´ı pravda, ˇze kaˇzd´y soubor prvk˚ u lze povaˇzovat za mnoˇzinu. ∗ Necht’ X = {M | M je mnoˇ zina takov´a, ˇze M 6∈ M}. Plat´ı X ∈ X ?
– Ano. Tj. X ∈ X. Pak ale X splˇ nuje X 6∈ X. – Ne. Pak X splˇ nuje vlastnost X 6∈ X, tedy X je prvkem X, tj., X ∈ X.
∗ Obˇ e moˇzn´e odpovˇedi vedou ke sporu. X tedy nelze prohl´asit za mnoˇzinu. Jak je ale
nˇeco takov´eho v˚ ubec moˇzn´e?
Koment´ aˇ r: Vid´ıte u Russelova paradoxu podobnost pˇr´ıstupu s Cantorovou diagonalizac´ı? Russel˚ uv paradox se objevil zaˇc´ atkem 20. stolet´ı a jeho jednoduchost“ zasahuj´ıc´ı u ´pln´e ” z´aklady matematiky (teorie mnoˇzin) si vynutila hled´ an´ı seri´ ozn´ıho rozˇreˇsen´ı a rozvoj form´aln´ı matematick´e logiky. Pro ilustraci tohoto paradoxu, slyˇseli jste uˇz, ˇze v mal´em mˇesteˇcku ˇzije holiˇc, kter´ y hol´ı ” pr´ avˇe ty muˇze mˇesteˇcka, kteˇr´ı se sami nehol´ı“? Zm´ınˇen´e paradoxy naivn´ı teorie mnoˇzin zat´ım v tomto kurzu nerozˇreˇs´ıme, ale zapamatujeme si, ˇze vˇetˇsina matematick´ ych a informatick´ ych discipl´ın vystaˇc´ı s intuitivnˇe bezpeˇcn´ ymi“ mnoˇzinami. ”
12.3
Algoritmick´ a neˇ reˇ sitelnost probl´ emu zastaven´ı
V´yˇse vysvˇetlen´e myˇslenky diagonalizace a princip˚ u z´akladn´ıch paradox˚ u naivn´ı teorie mnoˇzin sice vypadaj´ı velmi matematicky“. Pˇresto je vˇsak t´emˇeˇr beze zmˇeny lze aplikovat ” i na bytostnˇe informatickou ot´azku, zda lze algoritmicky poznat, pro kter´e vstupy se dan´y algoritmus v˚ ubec zastav´ı. Negativn´ı odpovˇed’ na tuto ot´azku je jedn´ım z fundament´aln´ıch v´ysledk˚ u informatiky a pˇritom m´a pˇrekvapivˇe kr´atk´y a ˇcist´y d˚ ukaz diagonalizac´ı. Fakt: Uvˇedomme si (velmi neform´alnˇe) nˇekolik z´akladn´ıch myˇslenek. ∗ Program v kaˇ zd´em programovac´ım jazyce je koneˇcn´a posloupnost sloˇzen´a z koneˇcnˇe mnoha symbol˚ u (p´ısmena, ˇc´ıslice, mezery, speci´aln´ı znaky, apod.) Necht’ Σ je mnoˇzina vˇ u. Mnoˇzina vˇsech program˚ u je tedy jistˇe podmnoˇzinou mnoˇziny Ssech tˇiechto symbol˚ a je spoˇcetnˇe nekoneˇcn´a. Existuje tedy bijekce f mezi mnoˇzinou a i∈N Σ , kter´ mnoˇzinou vˇsech program˚ u. Pro kaˇzd´e j ∈ oznaˇcme symbolem Pj program f (j). Pro kaˇzd´y program P tedy existuje i ∈ takov´e, ˇze P = Pi .
N
N
N
∗ Kaˇ zd´y moˇzn´y vstup kaˇzd´eho moˇzn´eho programu lze zapsat jako koneˇcnou posloup-
nost symbol˚ u z koneˇcn´e mnoˇciny Γ. Mnoˇzina vˇsech moˇzn´ych vstup˚ u je tedy spoˇcetnˇe u. Pro kaˇzd´e nekoneˇcn´a a existuje bijekce g mezi mnoˇzinou a mnoˇzinou vˇsech vstup˚ j ∈ oznaˇcme symbolem Vj vstup g(j).
N
N
∗ Pˇredpokl´ adejme, ˇze existuje program Halt, kter´y pro dan´e i, j ∈
ano/ne podle toho, zda Pi pro vstup Vj zastav´ı, nebo ne.
N zastav´ı s v´ystupem
∗ Tento pˇredpoklad d´ ale dovedeme ke sporu dokazuj´ıc´ımu, ˇze probl´em zastaven´ı nem´a
algoritmick´e ˇreˇsen´ı.
Vˇ eta 12.6. Neexistuje program Halt, kter´y by pro vstup (Pi , Vj ) spr´avnˇe rozhodl, zda se program Pi zastav´ı na vstupu Vj . D˚ ukaz: Sporem uvaˇzme program Diag s n´asleduj´ıc´ım k´odem: 104
input k; if Halt(k,k) = ano
then
while true do ; done
(Program Diag(k) m´a na rozd´ıl od Halt jen jeden vstup k, coˇz bude d˚ uleˇzit´e.) Fungov´an´ı programu Diag lze zn´azornit za pomoc´ı n´asleduj´ıc´ı tabulky: V0 V1 V2 V3 .. .
P0 √ √ − − .. .
P1 − − √ − .. .
P2 − − − √
P3 √ √ √ √
.. .
.. .
··· ··· ··· ··· ··· .. .
√ Symbol resp. − ˇr´ık´a, ˇze program uveden´y v z´ahlav´ı sloupce zastav´ı resp. nezastav´ı pro vstup uveden´y v z´ahlav´ı ˇr´adku. Program Diag zneguje“ diagon´alu t´eto tabulky. ” Podle naˇseho pˇredpokladu (Diag je program a posloupnost Pi zahrnuje vˇsechny programy) existuje j ∈ takov´e, ˇze Diag = Pj . Zastav´ı Diag pro vstup Vj ? – Ano. Podle k´odu Diag pak ale tento program vstoup´ı do nekoneˇcn´e smyˇcky, tedy nezastav´ı.
N
– Ne. Podle k´odu Diag pak ale if test neuspˇeje, a tento program tedy zastav´ı. Pˇredpoklad existence programu Halt tedy vede ke sporu.
✷
Koment´ aˇ r: Ot´ azkami algoritmick´e (ne)ˇreˇsitelnosti probl´em˚ u se zab´ yv´ a teorie vyˇc´ıslitelnosti. Metoda diagonalizace se tak´e ˇcasto vyuˇz´ıv´a v teorii sloˇzitosti k d˚ ukazu toho, ˇze dan´e dvˇe sloˇzitostn´ı tˇr´ıdy jsou r˚ uzn´e.
Rozˇ siˇ ruj´ıc´ı studium L´ atka t´eto lekce zabrousila aˇz do teoretick´ ych hlubin matematick´e logiky a teorie mnoˇzin. Dalˇs´ı studium v tˇechto oblastech se d´ a oˇcek´avat hlavnˇe u student˚ u specificky zamˇeˇren´ ych teoretick´ ym smˇerem (a m´ıˇr´ıc´ıch sp´ıˇse do akademick´e neˇz aplikaˇcn´ı sf´ery), zaj´ımaj´ıc´ıch se o matematiku samotnou nebo o teorii vyˇc´ıslitelnosti. Proto tak´e uveden´e pokroˇcil´e poznatky nebudou vyˇzadov´any u zkouˇsky tohoto pˇredmˇetu.
105
Z´ avˇ erem Gratulujeme vˇsem, kteˇr´ı se naˇs´ım nelehk´ym uˇcebn´ım textem prokousali“ aˇz sem, a ” pˇrejeme mnoho u ´ spˇech˚ u v dalˇs´ım studiu informatiky. Koneˇcnˇe znovu pˇripom´ın´ame, ˇze ned´ılnou souˇc´ast´ı naˇseho studijn´ıho textu je Interaktivn´ı osnova pˇredmˇetu IB000 v IS MU a v n´ı pˇriloˇzen´e online odpovˇedn´ıky urˇcen´e k procviˇcov´an´ı pˇrednesen´e l´atky. http://is.muni.cz/el/1433/podzim2012/IB000/index.qwarp
106