Kódování a modelování

Přejít ke cvičením na toto téma »

V informatice pracujeme s informacemi o světě kolem nás. Abychom s informacemi mohli pracovat, musíme je umět nějakým způsobem přesně zachytit. Informace lze kódovat mnoha způsoby, například:

  • Dopravní značky jsou obrázky, které kódují informace typu „zákaz vjezdu“ či „dej přednost v jízdě“.
  • Binární soustava kóduje čísla jako posloupnost nul a jedniček.
  • Barvy v obrázku můžeme kódovat pomocí trojice čísel vyznačujících podíl červené, zelené a modré složky.
  • Morseova abeceda kóduje písmena pomocí teček a čárek.

Hlavní užitečná kódování rozebírají sekce kódování informací, kódování obrazu a zvuku a kódování čísel.

Šifry nejen že informaci zakódují, ale navíc se ji snaží i utajit. Šifry lidé využívají již tisíce let, v poslední době mají velmi důležitou roli při komunikaci po internetu.

Zatímco kódování se zabývá především tím jak informace zachytit, modelování se zabývá i tím co chceme zachytit. Model je zjednodušené znázornění skutečnosti. V informatice se velmi často používá modelování pomocí grafů. Na počítačích také můžeme s modely provádět zajímavé simulace.

Inspirace pro učitele

Inspiraci pro začlenění těchto témat do výuky nabízí výukové moduly, které poskytují konkrétní náměty, jakým způsobem učivo procvičovat a v jakém pořadí:

  • Kódování a šifrování – základní úvod do kódování informací a šifrování za využití intuitivních příkladů, určeno pro žáky 4.–6. ročníku ZŠ.
  • Modelování, grafy, simulace – princip modelování na příkladě grafů, obecnější principy modelování, názorné ukázky simulací, určeno pro žáky 6.–8. ročník ZŠ.

Tato sekce ilustruje základní principy kódování na jednoduchých příkladech:

Navazující témata pak už detailněji probírají technické principy kódování:

Kódování informací obrázkem

Přejít ke cvičením na toto téma »

Informace o světě potřebujeme nějak zaznamenávat (kódovat). Typický způsob takového záznamu je pomocí písma. Pokud například máme jít v úterý v 9:00 k zubaři, zakódujeme si tuto informaci do diáře pomocí slova „zubař“. To ale není jediný možný způsob. Místo psaní slova bychom si mohli do diáře nakreslit obrázek zubaře.

Kódování informací pomocí obrázků se používalo jako předstupeň písma. Ale obrázky nejsou jen pro pračlověky, kteří si do svého kamenného diáře potřebují vytesat obrázek zubaře. I dnes, kdy již hodně používáme písmo, má stále kódování informací pomocí obrázků svůj smysl. Obrázky jsou totiž často přehlednější.

Mezi typické příklady kódování informace obrázkem patří:

  • dopravní značky
  • turistické mapové značky
  • symboly označující předpověď počasí
  • symboly označující sporty na olympiádě
  • ikonky v počítačových programech

Kódování informací textem i jinak

Přejít ke cvičením na toto téma »

Jeden z nejjednodušších způsobů kódování informací je pomocí textu. Například pokud máme jít k zubaři, bude pravděpodobně jednodušší napsat si do kalendáře „zubař“ místo kreslení obrázku zubaře. Nakreslit obrázek bude trvat o něco déle a rozluštit obrázek může být těžší, pokud jsme kreslení zubařů zatím moc netrénovali.

Způsoby kódování pomocí textu

Zakódovat jednu informaci do textu jde mnoha různými způsoby. Třeba bychom si místo prostého hesla zubař mohli zapsat Nezapomeň, že zítra máš jít na kontrolu k zubaři. Často stačí zaznamenat si jenom zásadní informace, ostatní můžeme většinou odvodit z kontextu nebo našich znalostí o světě. Díky tomu je často kód (zápis) výrazně stručnější než samotná informace, kterou zaznamenává.

Je ale potřeba dobře určit, které informace ještě můžeme vynechat a které už ne. Například pokud si do kalendáře zapíšeme DÚ Staré pověsti, za týden si už nemusíme pamatovat, v čem přesně vlastně úkol spočíval. A pokud by tento zápis po nás četl někdo jiný, nebude ani vědět, o které pověsti přesně jde.

Příklady kódování pomocí textu

  • Když píšeme na dopis adresu, kódujeme, kam má dopis být doručen.
  • Když si píšeme s kamarádem textové zprávy, kódujeme nejen to, co bychom vyprávěli, ale třeba i to, jak bychom se tvářili.
  • Názvy na obchodech kódují, co pravděpodobně v daném obchodu seženeme.
  • Text v knize kóduje příběh, pocity a spoustu dalšího, co se nám kniha snaží předat.

Další způsoby kódování

Text sám o sobě ale občas nestačí, takže se často hodí ho kombinovat s jinými způsoby kódování. Důležitou informaci v sešitě můžeme od ostatních barevně odlišit nebo ji podtrhnout. V mapách se kombinuje text s různými značkami a barvami. A pokud k nápisu „Nouzový východ“ přidáme i obrázek, může být lépe vidět a navíc ho mohou najít i cizinci, kteří by nerozuměli českým slovům.

Další příklady kódování z běžného života

  • Dopravní značky: Barvy, tvary a symboly na dopravních značkách kódují informace o silnici, dopravních pravidlech a nebezpečích.
  • Noty: Hudební notace kóduje zvuky, rytmus a hlasitost hudby pomocí not a dalších symbolů.
  • Čárové kódy na produktech: Čárové kódy na produktech v obchodě kódují informace o ceně a produktu.

Kódování textu a šifrování

Přejít ke cvičením na toto téma »

Kódování i šifrování mají společné to, že mění podobu textu. Mají však jiný účel. Cílem šifrování je uchování tajemství. Cílem kódování není utajení, pouze spolehlivý záznam či přenos zprávy.

Základní kódování textu bylo využíváno ještě před příchodem počítačů. Například Morseova abeceda se používala pro přenos zpráv telegrafem a Braillovo písmo kóduje text pro čtení hmatem. Pro kódování textu v počítačích se používají metody založené na binárních číslech (nuly a jedničky).

Kódování zprávu neutají. Pokud zapíšeme zprávu PES pomocí Morseovy abecedy (.--.|.|...), tak každý, kdo tuto abecedu zná, si může zprávu snadno přečíst. K utajení zprávy slouží šifrování. Lidé rádi něco tají, takže šifrování se používá skoro tak dlouho jako psaní. Již ve starověku se šifrování hojně používalo, známá je například Caesarova šifra. Šifrování hrálo mnohokrát důležitou roli v dějinách, klíčovou událostí bylo například v průběhu druhé světové války prolomení německého šifrovacího stroje Enigma.

Šifrování hraje důležitou roli i dnes. Bez kvalitních šifer by například nebylo možné elektronické obchodování. Každý uživatel internetu pravidelně používá šifrování, i když o tom třeba vůbec neví, protože šifrování provádí automaticky webový prohlížeč.

Téma šifrování si můžete procvičit několika způsoby:

  • Základní šifry – základní principy šifrování (transpozice, substituce) ilustrované na jednoduchých příkladech.
  • Šifry s nápadem – tyto šifry se nepoužívají pro praktické účely, ale dobře poslouží jako trénink myšlení a test základních kryptoanalytických dovedností.
  • Šifrování: pojmy a principy – pokročilejší téma, které se zabývá přesněji způsoby použití šifrování a hlavními pojmy.

Základní kódování textu

Přejít ke cvičením na toto téma »

Informace běžně kódujeme jako text, který zapisujeme na papír pomocí písmen abecedy. Zápis pomocí písmen na papír ale není jediný způsob, jak můžeme text zakódovat.

  • Morseova abeceda přiřazuje každému písmenu kód, který se skládá z teček a čárek. Používala se dříve především pro přenos informací telegrafem.
  • V námořní vlajkové abecedě má každé písmeno svoji vlajku. Text se kóduje jako řada vlajek.
  • V semaforové abecedě vysílající kóduje písmena pomocí různých pozic rukou, ve kterých drží barevné praporky. Stejně jako námořní vlajková abeceda má využití například mezi námořníky pro komunikaci na dálku.
  • Braillovo písmo kóduje písmena pomocí hrbolků v mřížce 2×3. Toto písmo je určeno pro lidi s postižením zraku pro čtení hmatem.
  • Počítače ukládají písmena pomocí číselných kódů. Kódování textu v počítačích se věnuje samostatné téma.

Kódování textu v počítačích

Přejít ke cvičením na toto téma »

V počítači jsou všechny informace uloženy jako nuly a jedničky. Pro uložení textové informace tedy potřebujeme kódování, které text převede na nuly a jedničky. V 60. letech 20. století za tímto účelem vznikla ASCII tabulka, která znakům přiřazovala čísla od 0 do 255 a tato čísla se následně zapsala v binární soustavě do jednoho bytu.

ASCII kódování však umožňovalo kódovat pouze písmena anglické abecedy a některé další základní znaky. Proto byl později vyvinutý standard Unicode, který umožňuje zápis nejen základních písmen, ale i jiných světových abeced a mnoha dalších symbolů (např. sněhuláka: ☃). Jaké další znaky se v Unicode nachází, můžete prozkoumat zde. Zatímco Unicode přiřazuje znakům čísla, různá kódování (např. UTF-8) určují, jak tato čísla převést na jedničky a nuly, které se uloží v počítači. Např. Unicode kóduje sněhuláka jako číslo 2603 v šestnáctkové soustavě. UTF-8 toto číslo zakóduje do tří bytů s hodnotami 11100010, 10011000 a 10000011.

Transpoziční šifry

Transpoziční šifry mění pouze pořadí písmen, nikoliv jejich vzhled. Základní transpoziční šifry jsou založeny na přepsání textu do řádku nebo do mřížky podle jednoduchého principu. Příklady:

  • zápis pozpátku (JABLONEC → CENOLBAJ)
  • zápis ob jedno písmeno (JABLONEC → JOANBELC)
  • prohazování sousedních písmen (JABLONEC → AJLBNOCE)
  • šifrovací mřížka

Existují i složitější transpoziční šifry, které umožňují šifrovat podle hesla.

Substituční šifry

Substituční šifry naopak zachovávají pořadí písmen, ale mění jejich podobu. Základní substituční šifrou je posun v abecedě (nazývaný též Caesarova šifra), kdy písmena nahrazujeme za jiná písmena, např. při posunu o jedna zašifrujeme BRNO → CSOP (B se posune na C, R se posune na S a tak dále). Složitějším příkladem substituční šifry je šifrování podle hesla (Vigenèrova šifra).

Podobné substitučním šifrám je kódování, např. Morseova abeceda, Braillovo písmo, či ASCII tabulka. Kódování samo o sobě však není šifrou, protože zprávu neutají. Když zapíšeme zprávu pomocí Morseovy abecedy, tak každý, kdo tuto abecedu zná, si ji snadno může přečíst.

Při praktických aplikacích šifrování je typicky základní šifrovací princip známý a bezpečnost šifry je založena na utajení klíče. V následujících cvičeních si můžete zkusit šifry, k jejichž vyluštění musíte odhalit jejich šifrovací princip. Takové šifry slouží především pro zábavu, využívají se například hojně v šifrovacích hrách, pokladovkách a soutěžích. I přesto, že tyto šifry nemají přímé praktické použití, můžete se na nich dobře procvičit principy základních šifer, ale i logické myšlení, hledání vzorů a trpělivost.

Šifrování: pojmy a principy

Přejít ke cvičením na toto téma »

Základní situace

Účelem šifrování je utajit zprávu. Obrázek znázorňuje základní situaci: Alice chce poslat Bobovi zprávu. Text této zprávy nazýváme holý text. Tento holý text Alice zašifruje pomocí předem domluveného šifrovacího postupu a tajného klíče. Tím vznikne zašifrovaný text, který Alice pošle Bobovi. Bob zašifrovaný text pomocí klíče rozšifruje a může si přečíst zprávu.

Šifrovaný text může někdo zachytit (na obrázku je to Eva). Eva se může pokusit zprávu odhalit, má to ale těžké, protože nezná tajný klíč (a případně ani použitý šifrovací princip). Provádí tedy luštění, které je o kus náročnější než rozšifrování.

Pojmy

  • Kryptologie je odborný název pro šifrování a luštění šifer. Dvě hlavní části kryptologie jsou kryptografie a kryptoanalýza.
  • Kryptografie se zabývá samotnými šifrovacími postupy, které používají ti, kdo spolu chtějí utajeně komunikovat (na obrázku Alice a Bob).
  • Kryptoanalýza se zabývá tím, co dělá na obrázku Eva, tedy jak vyluštit zachycenou zprávu, u které neznáme šifrovací klíč či způsob zašifrování.

Typy šifer

  • Transpozice mění pouze pořadí písmen, nikoliv jejich vzhled.
  • Substituce zachovává pořadí písmen, ale mění jejich podobu.
    • Monoalfabetická substituce nahrazuje jedno písmeno vždy za stejný znak. Příkladem je Caesarova šifra (posun v abecedě).
    • Polyalfabetická substituce nahrazuje písmeno za různé znaky v závislosti na poloze v textu. Příkladem je Vigenèrova šifra
  • Steganografie je snaha o úplné utajení existence zprávy, například pomocí neviditelného inkoustu nebo nenápadném skrytí textu v obrázku.

Metody kryptoanalýzy (prolomení šifer)

Útok hrubou silou spočívá ve vyzkoušení všech možných klíčů.

Frekvenční analýza spočívá v analýze frekvencí (četností) znaků ve zprávě. Tento způsob analýzy šifer je založen na využití toho, že písmena v jazyce jsou zastoupena velmi nerovnoměrně, např. v češtině je písmeno E velmi časté, zatímco F málo časté.

Moderní šifry

Moderní šifry jsou výrazně složitější než zápis pozpátku či posun v abecedě, typicky využívají pokročilou matematiku a složité algoritmy. Příkladem moderní šifry je RSA.

Moderní šifry jsou dvou základních typů:

  • Symetrické šifry využívají pro šifrování i dešifrování stejný tajný klíč (stejně jako na výše uvedeném obrázku s Alicí a Bobem).
  • Asymetrické šifry využívají pro zašifrování veřejný klíč a pro dešifrování tajný soukromý klíč. Tyto šifry lze využít i pro realizaci elektronického podpisu.

Kódování obrazu a zvuku

Přejít ke cvičením na toto téma »

Abychom mohli na počítači pracovat s multimediálním obsahem (obraz, zvuk, video), musíme jej umět zakódovat pomocí čísel.

Pro kódování obrazu se používají dva základní způsoby. V bitmapové grafice pracujeme s obrázkem jako s mřížkou pixelů, kde každý z nich má přidělenou svoji barvu. Ve vektorové grafice jsou obrázky tvořeny z geometrických útvarů (úsečky, kružnice a podobně). Každý z těchto způsobý má své využití a je důležité mezi použitím bitmapové a vektorové grafiky dobře rozlišovat (např. fotografii většinou reprezentujeme bitmapově, kdežto logo firmy vektorově).

Při práci s obrazem potřebujeme umět kódovat barvy. To lze dělat více různými způsoby. Jedním z nejčastěji používaných je RGB kódování.

Zvuk se kóduje jako posloupnost apmlitud (výchylek) zvukového signálu.

V bitmapové (rastrové) grafice jsou obrázky ukládány jako mřížka pixelů. Pixely jsou body, které mají danou polohu v obrázku a barvu. Barvy v pixelech kódujeme nějakým předem daným způsobem, často se používá např. RGB model. Čím jemnější je mřížka (čím víc pixelů obrázek obsahuje), tím kvalitnější a detailnější bude obraz. Protože pixely nelze dále rozdělovat, při zvětšování bitmapového obrázku se budou zvětšovat i pixely a dojde ke ztrátě kvality. Na obrázku vidíme, jak je možné uložit obrázek kruhu na malém počtu pixelů.

Barevná hloubka je počet barev, kterých může nabývat jeden pixel. Čím větší je barevná hloubka, tím více barev máme k dispozici a obraz tak může být kvalitnější. Na obrázku je vidět rozdíl mezi situacemi, kdy jsou k dispozici 2 barvy, 4 barvy a 256 barev.

Velikost bitmapového obrázku je určena počtem pixelů. Obrázek s rozměry 1024 × 1024 obsahuje 1024 \cdot 1024 (přibližně milion) pixelů a jeho velikost je 1 Mpx (megapixel). Rozlišení je hodnota, která říká, jak detailní je obraz. Udává se v jednotkách DPI (dots per inch).

Ve vektorové grafice jsou obrázky tvořeny z geometrických útvarů, například mnohoúhelníků, kružnic, křivek, lomených čar aj. Vektorově je možné popsat i text. Jednotlivé objekty jsou popsány různými číselnými a textovými parametry (např. poloha v souřadnicích, velikost, barva). Abychom si vektorový obrázek mohli zobrazit, počítač musí pokaždé interpretovat textový popis objektů a obrázek vykreslit. Díky vektorovému popisu objektů lze vektorové obrázky snadno zvětšovat a zmenšovat, aniž by byla jakkoli ovlivněna kvalita obrazu.

Vektorové obrázky se často ukládají ve formátu SVG. Textová reprezentace jednoduchého tvaru ve formátu SVG může vypadat následovně.

Prvně specifikujeme, o jaký typ objektu jde: circle znamená anglicky kruh. Následují různé parametry, které určují, jak přesně má tento kruh vypadat. Parametry cx a cy definují pozici středu kruhu na souřadnicích (60, 60) v obrázku. Parametr r určuje poloměr kruhu a v parametru fill je specifikována barva výplně jako zelená. Vykreslený obrázek tedy bude vypadat takto:

V SVG formátu lze kódovat i mnoho jiných typů objektů, například rect (rectangle = obdélník), polygon (mnohoúhelník) nebo line (linka). U každého typu objektu specifikujeme různé parametry – velikost obdélníku například určíme výškou a šířkou. Pokud však budeme vytvářet vlastní vektorové obrázky, nemusíme vše psát textově – existují počítačové programy, které nám umožní pouze pracovat s objekty a textový kód napíší za nás.

Bitmapová vs. vektorová grafika

Přejít ke cvičením na toto téma »

Existují 2 základní typy kódování obrazu: vektorovábitmapová grafika. Bitmapové obrázky se skládají z pixelů (barevných bodů), vektorové z geometrických objektů. Formáty využívající bitmapovou grafiku jsou například BMP, JPG, PNG a GIF. Nejpoužívanějším vektorovým formátem je SVG, vektorovou reprezentaci používá také formát PDF.

Bitmapová grafika je ideální pro ukládání fotografií, protože digitální fotoaparáty také snímají obraz jako mřížku barevných bodů. Vektorová grafika je pro tento účel naopak nevhodná, protože fotografie bývá velmi těžké popsat pomocí geometrických útvarů.

Pro obrázky složené z geometrických tvarů (např. loga, diagramy, ilustrace) je naopak vhodná vektorová grafika. Její zásadní výhodou je dobrá škálovatelnost (snadné zvětšování a zmenšování obrázků bez vlivu na jejich kvalitu). Bitmapová grafika je vždy omezená počtem pixelů, nemůžeme tedy získat větší detaily než jednotlivé pixely. Geometricky popsané útvary však můžeme zvětšovat libovolně. Proto se vektorová grafika často využívá i ve webdesignu, protože u webových stránek je vhodné, aby se velikostí uměly přizpůsobit různým zařízením a velikostem obrazovek.

Na obrázku můžeme vidět rozdíl při zvětšování. Levý trojúhelník byl uložen bitmapově, pravý vektorově.

Pokud obrázek obsahuje jednoduché tvary, obsadí jeho vektorová reprezentace méně místa v paměti počítače než bitmapová. Pro velmi členité tvary nebo pro fotografie však bude vektorový popis natolik složitý, že velikost bitmapového souboru bude menší.

Reprezentace barev je klíčová pro mnoho oblastí, např. webdesign, digitální fotografie, video, tisk. Existuje několik různých barevných modelů, z nichž nejčastější jsou RGB, CMYK a HSL.

RGB (Red-Green-Blue) model se používá pro digitální displeje, kde se barvy zobrazují jako kombinace tří základních barev – červené, zelené a modré. Každá z těchto barev má číselnou hodnotu v rozsahu 0–⁠255. RGB kódy se často zapisují pomocí hexadecimálních čísel. Protože toto kódování je velmi často využíváno v grafických programech, hodí se mít alespoň základní intuici, jakým barvám odpovídají různé RGB kódy.

CMYK (Cyan-Magenta-Yellow-Key) model se používá pro tisk, kde se barvy tvoří mícháním tří základních barev – azurové, purpurové a žluté – s černou.

HSL (Hue-Saturation-Lightness) model umožňuje reprezentovat barvy pomocí tří parametrů – odstín, sytost a jas. Odstín se mění v rozsahu 0–⁠360 stupňů, sytost určuje intenzitu barvy a jas určuje světlost nebo tmavost barvy. Tento model umožňuje jednoduché úpravy barev, jako je změna jasu nebo sytosti.

Barevný model RGB je způsob reprezentace barev pomocí tří složek: červená (red, R), zelená (green, G), modrá (blue, B). Jde o aditivní způsob míchání barev – jednotlivé složky barev se sčítají a vytvářejí světlo větší intenzity (světlejší barvu).

Při použití RGB modelu tedy barvu zapisujeme jako trojici čísel. Pro zápis hodnoty jednotlivých složek se používá mnoho různých zápisů. Například oranžovou barvu můžeme zapsat jako:

  • RGB(255, 160, 64) = dekadický zápis osmibitového čísla
  • #FFA040 = hexadecimální zápis
  • RGB(100%, 63%, 25%) = barevné složky v procentech
  • RGB(1, 0.63, 0.25) = barevné složky jako čísla od 0 do 1

Často používaný zápis je dekadický zápis osmibitového čísla, tj. číslice od 0 do 255.

Příklady barev z RGB zápisu

RGB(0, 0, 0) černá
RGB(255, 0, 0) červená
RGB(100, 0, 0) tmavá červená
RGB(0, 255, 0) zelená
RGB(0, 0, 255) modrá
RGB(255, 255, 0) žlutá
RGB(255, 0, 255) purpurová
RGB(0, 255, 255) azurová
RGB(150, 150, 150) šedá
RGB(255, 255, 255) bílá

Základní principy

Zvuk je mechanické vlnění prostředí (typicky vzduchu) o frekvenci asi 20 Hz – 20 000 Hz. Vyšší frekvence sluch vnímá jako vyšší tóny.

Při nahrávání zvuku do digitálního zařízení je mechanické vlnění vzduchu převedeno mikrofonem na elektrické napětí. A/D převodník tento spojitý signál převede na binární data. Při přehrávání zvuku se data D/A převodníkem přemění na analogový signál. Jeho výkon se zvětší zesilovačem a může dojít k jeho přehrání reproduktorem, který chvěním membrány opět rozechvěje vzduch.

Kódování zvukové vlny

Vlnění vzduchu je spojité, v každém okamžiku má určitou hodnotu okamžité výchylky. Souvislý je i analogový signál, který je vytvářen např. mikrofonem. Spojitý průběh zvukové vlny je na obrázku znázorněn oranžově. Vodorovná osa vyjadřuje čas, svislá osa okamžitou výchylku signálu.

Digitální zařízení nedokážou zpracovat informaci o zvuku v nekonečném množství okamžiků. Při převádění analogového signálu na digitální se tedy provádí tzv. vzorkování – signál se převede na nespojitý (diskrétní), ten během určitého času vystřídá omezený počet hodnot (na obrázku vyjádřeno modrými body). To souvisí se vzorkovací frekvencí, např. při vzorkovací frekvenci 48 kHz se během sekundy vystřídá 48 000 hodnot vzorku.

Ani okamžitá výchylka signálu nemůže mít neomezené množství hodnot, proto se provádí tzv. kvantování, které souvisí s rozlišením vzorku. Např. rozlišení (vzorku) 4 bit znamená, že okamžitá výchylka vzorku může nabývat 2⁴ = 16 stavů (vizte obrázek).

Při ztrátové kompresi má význam hodnota bitrate (značí přenosovou rychlost). Čím větší je bitrate, tím větším množstvím dat je popsána sekunda zvukového záznamu (např. 320 kb/s je nejvyšší bitrate u souborů mp3).

Kódování tónů

Kromě kompletního záznamu zvukových vln (popsaného výše) může být zvuk reprezentován jako sekvence tónů. To se využívá zejména při skládání hudby či v souvislosti s rozhraním MIDI. V rámci sekvence mohou mít tóny např. různou výšku, délku, hlasitost aj. Těmto tónům je potom „přiřazen“ určitý zvuk, ať už ve formě vzorku či generovaný syntezátorem. Zvuk reprezentovaný jako sekvence tónů (ve formátu MID) se historicky používal např. jako hudební doprovod počítačových her. V současnosti se využívá spíše pro práci se zvukem, výsledné skladby jsou následně vyexportovány ve formě běžného záznamu digitálního signálu.

V běžném životě jsme zvyklí zapisovat čísla v desítkové soustavě, ve které používáme deset různých cifer a jejich pozice odpovídá mocninám desítky. Tedy například 358 značí osm jednotek, pět desítek a tři stovky. To je jeden z mnoha možných způsobů kódování.

Jak bychom mohli zakódovat 358 jinak? Třeba tak, že bychom udělali tři sta padesát osm čárek vedle sebe. Nebo bychom se mohli domluvit, že drak bude znamenat sto, prase padesát a zajíc dvojku. Potom bychom 358 mohli znázornit obrázkem, na kterém budou tři draci, prase a čtyři zajíci.

Počítače ovšem draky a prasata nepoužívají. Pro počítače se nehodí ani desítková soustava, protože počítače nemají deset prstů. Zato umí dobře rozlišovat mezi dvěma stavy (aktivní a neaktivní). Proto se pro kódování čísel v počítači používá především binární (dvojková) soustava, ve které se používají pouze dvě cifry: 0 a 1.

Základní princip binární soustavy není nijak specifický pro počítače. Jde o matematický princip „poziční soustavy“, která funguje obecně. Můžete ji použít třeba na počítání na prstech, což vám umožní na prstech jedné ruky počítat od 0 až do 31. Také počítání v binární soustavě (sčítání, odčítání, násobení) je obecný princip, který funguje podobně jako počítání v naší obvyklé desítkové soustavě.

Pro kódování záporných a desetinných čísel už je potřeba zajít do detailů, které jsou trochu specifické pro počítače (kolik bitů paměti pro čísla vyčleníme, jak je přesně využijeme).

Kromě binární soustavy v informatice občas narazíme i na soustavy založené na mocninách dvojky, například osmičkovou či šestnáckovou soustavu. Konkrétně hexadecimální (šestnáckovou) soustavu můžeme často potkat při práci s RGB barvami.

Binární čísla: základy

Přejít ke cvičením na toto téma »

Princip binární soustavy

V binární (dvojkové) soustavě zapisujeme čísla pouze pomocí dvou číslic: 0 a 1. Pozice každé číslice v zápisu odpovídá určité mocnině dvojky. Mocniny vždy začínají nultou mocninou u číslice nejvíc vpravo a zvyšují se směrem doleva. Hodnotu binárního čísla pak spočteme jako součet těchto mocnin. Každou mocninu započítáme, pokud je na příslušné pozici 1 nebo nezapočítáme, pokud je na daném místě 0.

Značení soustav

Abychom odlišili, jestli mluvíme o čísle v binární nebo v desítkové soustavě, přidáváme k číslům dolní indexy značící soustavu. Například číslo 5 v desítkové soustavě budeme psát jako 5_{10}, binární číslo s hodnotou 5 napíšeme jako 101_2. Potom můžeme jasně rozlišit, že například zápisem 11_{10} myslíme desítkové číslo 11, zatímco zápis 11_2 budeme interpretovat jako binární číslo 11 a tedy desítkové číslo 3.

Intuitivní pomůcka

Pro základní představu u binárních číslech můžeme použít pomůcku, kterou máme vždy po ruce – totiž ruku samotnou. Představme si, že si na prsty ruky napíšeme mocniny dvojky:

Pak můžeme na prstech jedné ruky počítat nejen do pěti, ale až do třiceti jedné. Každé číslo lze totiž vyjádřit (jednoznačně) jako součet mocnin dvojky. Pokud polohu prstů zaznačíme pomocí nul a jedniček, dostaneme zápis v binární soustavě.

Příklady čísel zapsaných v binární soustavě

desítkově součet mocnin binárně
1 1 1
2 2 10
3 2+1 11
4 4 100
5 4+1 101
6 4+2 110
7 4+2+1 111
8 8 1000
9 8+1 1001
10 8+2 1010
16 16 10000
20 16+4 10100
30 16+8+4+2 11110

Binární čísla: záporná a desetinná

Přejít ke cvičením na toto téma »

V počítači často potřebujeme pracovat se zápornými nebo desetinnými čísly. Protože však počítače používají pouze nuly a jedničky, je potřeba tato čísla nějakým způsobem zapisovat bez použití mínusu nebo desetinné čárky.

Záporná čísla

Existuje více způsobů, jak zapisovat záporná čísla. Obvykle máme daný určitý počet bitů, se kterými můžeme pracovat, často jeden byte.

V přímém kódu první bit zleva slouží pro uchování znaménka čísla. Obsahuje 0, pokud je číslo kladné, a 1, pokud je záporné. Na ostatních 7 bitů se zapíše absolutní hodnota čísla. Číslo 5_{10} se tedy v jednom bytu zakóduje jako 0000 0101 a -5_{10} jako 1000 0101.

V inverzním kódu nejprve zapíšeme absolutní hodnotu čísla. Pokud je číslo kladné, dál neděláme nic. Pokud je záporné, obrátíme hodnotu všech bitů (vyměníme 0 za 1 a naopak). Číslo 5_{10} se tedy v jednom bytu napíše jako 0000 0101 a -5_{10} jako 1111 1010.

Kódování v doplňkovém kódu (dvojkovém doplňku) začíná podobně jako v inverzním. Nejprve napíšeme absolutní hodnotu čísla a pokud je číslo kladné, dál nepokračujeme. Pro záporná čísla provedeme obrácení (inverzi) bitů a následně ještě přičteme jedničku. Číslo 5_{10} tedy v jednom bytu zapíšeme jako 0000 0101 a -5_{10} jako 1111 1010 + 1 = 1111 1011. Pokud chceme získat hodnotu záporného čísla nebo obrátit znaménko zpět do plusu, provedeme ten samý sled operací. Nejprve obrátíme všechny bity a poté přičteme 1. Pro číslo -5_{10} by to vypadalo následovně: inverze bitů: 1111 1011 → 0000 0100, přičtení jedničky: 0000 0100 + 1 = 0000 0101. Získali jsme číslo 5_{10}.

Ve všech třech kódech poznáme záporné číslo podle toho, že má na prvním místě zleva 1. Kladná čísla na této pozici vždy obsahují 0.

Desetinná čísla

Desetinná čísla mohou být velmi dlouhá, občas mají dokonce nekonečný zápis. Počítače však mají omezený prostor v paměti, proto se i desetinná čísla ukládají na omezený počet bitů. Tento způsob reprezentace se nazývá zápis s plovoucí desetinnou čárkou a kvůli zmenšenému prostoru může být občas trochu nepřesný.

V zápisu s plovoucí desetinnou čárkou se číslo ukládá pomocí dvou hodnot: mantisy a exponentu. Ve speciálním bitu se navíc uchovává znaménko čísla, pro kladná se uloží 0 a pro záporná 1.

Mantisa představuje základ čísla – v podstatě jsou to číslice použité v zápisu. Desetinná čárka se v mantise nachází vždy na předem dohodnuté pozici, často například za první číslicí zleva. Čím větší prostor (počet bitů) máme na mantisu, tím přesněji můžeme číslo uložit.

Exponent je počet míst, o které se má desetinná čárka v mantise posunout, abychom dostali původní číslo. Kladný exponent znamená posun směrem doprava, čímž se číslo zvětšuje. Záporný exponent značí posun desetinné čárky doleva, tím se číslo víc přibližuje nule. Čím víc místa máme na exponent, tím větší rozsah hodnot můžeme ukládat.

Například číslo 1101{,}001_2 bude mít mantisu 1{,}101001_2 a exponent 3_{10}. Ve znaménkovém bitu bude 0.

Na obrázku je příklad, jak může být jedno číslo uloženo v paměti počítače na 32 bitech (4 bytech).

Binární čísla: aritmetika

Přejít ke cvičením na toto téma »

Pokud zvládáme základní princip binární soustavy, můžeme se pustit do aritmetických operací.

Sčítání binárních čísel

Binární čísla můžeme sčítat pod sebou velmi podobně, jako jsme zvyklí sčítat čísla v desítkové soustavě. Jediný rozdíl nastává, pokud sčítáme dvě jedničky. Protože 1_2 + 1_2 = 10_2, v takovém případě zapíšeme 0 a přenášíme 1 do vyššího řádu.

Odčítání binárních čísel

Odčítání binárních čísel funguje obdobně. K přenosu dochází pouze při počítání rozdílu 0_2 - 1. V takovém případě si „vypůjčíme“ jedničku z vyššího řádu – jako bychom počítali 10_2 - 1_2. Potom zapíšeme 1 a v dalším řádu navíc odečteme jedničku, kterou jsme si půjčili.

Násobení binárních čísel

Násobení binárních čísel je také téměř stejné jako u desítkových čísel. Násobíme tak, jako kdybychom měli dvě desítková čísla složená pouze z nul a jedniček. Sčítání řádků vzniklých násobením potom probíhá jako binární sčítání, které je popsáno výše.

Pokud máme binární číslo násobit mocninou dvojky, můžeme si práci velmi ulehčit. Stačí pouze přidat na konec čísla tolik nul, kolikátou mocninou dvojky násobíme. Například při násobení dvěma přidáváme 1 nulu (2 = 2^1), při násobení osmi přidáváme 3 nuly (8 = 2^3). Celočíselné dělení mocninou dvojky je také jednoduché, stačí odstranit tolik posledních číslic z dělence, kolikátou mocninou dvojky dělíme.

Hexadecimální čísla jsou čísla zapsaná v šestnáctkové (hexadecimální) soustavě. Tato soustava využívá 16 symbolů (0-9 a A-F, kde A-F představují desítku až patnáctku).

Hexadecimální čísla jsou úzce propojena s binární soustavou. Každý symbol v šestnáctkové soustavě představuje čtyři bity v binární soustavě, což usnadňuje převody mezi těmito soustavami. Každé číslo v hexadecimální soustavě lze převést na binární tím, že každému hexadecimálnímu symbolu přiřadíme čtyři bity.

Příklady převodu čísel

  • Hexadecimální číslo 1A odpovídá binárnímu číslu 00011010, protože 1 = 0001 a A = 10 = 1010. V desítkové soustavě odpovídá 1A číslu 26 (1 \cdot 16 + 10).
  • Desítkové číslo 255 může být vyjádřeno hexadecimálně jako FF, kde F značí patnáctku.

Hexadecimální čísla jsou často využívána v oblasti barevného zobrazení, například v RGB modelu. Každá složka barvy (červená, zelená, modrá) je vyjádřena osmi bity, což odpovídá dvěma hexadecimálním číslicím. Například barva červená s plnou intenzitou by byla zapsána jako #FF0000, kde FF reprezentuje maximální hodnotu červené složky.

Počítače často využíváme k tomu, abychom si ukládali informace a posílali je ostatním. Dejme tomu, že třeba vyfotíte fotku a chcete ji poslat kamarádovi.

Fotka je uložená na počítači jako posloupnost nul a jedniček. Kolik těch nul a jedniček je potřeba? To nám říká velikost dat, kterou měříme v bytech a jejich násobcích (megabyty, gigabyty). Velikosti dat se hodí rozumět, abychom třeba měli jasno v tom, kolik fotek se nám vleze na paměťovou kartu.

Pokud vyfotíme fotky s vysokým rozlišením, velikost souboru bude velká a do paměti se nám jich vejde málo. Možná bychom si raději uložili fotek víc, byť budou trochu méně kvalitní. K tomu slouží komprese dat.

A když vybranou fotku posíláme kamarádovi, dochází k přenosu dat. Nuly a jedničky, které reprezentují naši fotku, při přenosu mohou putovat vzduchem nebo optickými kabely. Při tom putování se může stát, že se něco pokazí. Přenos dat tedy potřebujeme udělat chytře, aby bylo možné chyby najít a opravit.

Jeden z hlavních účelů počítačů je práce s informacemi a daty. Informace můžeme ukládat, přenášet mezi počítači a upravovat je. Aby počítače mohly s informacemi pracovat, musíme je zakódovat, tedy zaznamenat je určitým ustáleným způsobem, kterému budou počítače rozumět. V počítači se všechna data kódují pomocí nul a jedniček.

Bit je základní a nejmenší jednotka informace. Může mít dvě různé hodnoty, 0 nebo 1. Bity se sdružují do bytů (bajtů), jeden byte se skládá z 8 bitů. Počítače obvykle pracují s celými byty, byte je tedy většinou nejmenší jednotka, se kterou počítač dokáže manipulovat. Proto i velikost počítačové paměti a souborů v ní uložených se udává v bytech. Bit se značí jako b, byte jako B.

Všechna data jsou v počítačích ukládána a zpracovávána jako řady bytů. Protože soubory v počítačích se často skládají z mnoha milionů bytů, pro jednodušší značení velikosti dat používáme násobné jednotky. Pro jednodušší převádění mezi jednotkami zde používáme vztah 1 kB = 1000 B, někdy se však můžeme setkat i se vztahem 1 kB = 1024 B = 2^{10} B. Stejně to platí i pro ostatní násobné jednotky, tedy někdy můžeme vidět 1 MB = 1024 kB, 1 GB = 1024 MB atd.

značka název velikost
kB kilobyte 1000 B
MB megabyte 1000 kB
GB gigabyte 1000 MB
TB terabyte 1000 GB
PB petabyte 1000 TB

Komprese je proces, kterým můžeme výrazně zmenšit prostor, který naše data zabírají v paměti, a přitom zachovat jejich obsah relativně nezměněný. Používáme ji, když chceme ušetřit místo v paměti nebo když potřebujeme data někam poslat. Když na soubor aplikujeme kompresi, komprimujeme ho, když chceme zpět získat původní obsah, dekomprimujeme ho.

Bezztrátová komprese zachovává všechny informace obsažené v souboru, nepřijdeme tak o žádná data a můžeme se kdykoli vrátit k původní verzi souboru. Její nevýhodou je, že nedokáže zmenšovat velikost tak dobře jako ztrátová. Velmi obvykle se používá pro texty a pro komprimaci souborů nezávisle na jejich formátu. Využívají ji například archivy zip a rar, které dokáží zkomprimovat několik různých souborů nebo složek najednou. Některé další formáty s bezztrátovou kompresí jsou png, gif (obraz) a flac (video).

Jedním z jednoduchých algoritmů pro bezztrátovou kompresi je RLE (run-length encoding). Řadu po sobě jdoucích stejných znaků zakóduje do dvojice (počet hodnot, hodnota). Například řetězec aaaaaa zakóduje jako 6a, řetězec cccddce jako 3c2d1c1e.

Ztrátová komprese je efektivnější ve zmenšování velikosti souborů. Při komprimaci však můžeme navždy přijít o nějaké informace, které byly v původním souboru. Zkomprimovaný soubor tak může obsahovat lehce zkreslené detaily nebo mít nižší kvalitu než originál. Hojně se používá pro obrázky, video a zvuk. Formáty využívající ztrátovou kompresi jsou například jpg (obraz), mp3 (zvuk), mp4 a ogg (video).

Informace jsou v počítači vždy nějak zakódované, tedy zaznamenané určitým ustáleným způsobem. Zakódování stejné informace pro různé účely (uložení, přenos, zobrazení) může vypadat úplně jinak. Informace se kódují do datového proudu, tedy do řady bytů, se kterou počítač může pracovat.

V současnosti neustále probíhá přenos dat mezi počítači, z velké části po internetu, avšak i jinými způsoby. Přenos mezi příjemcem a odesílatelem probíhá přes komunikační kanál, což je většinou skupina více různých prostředků (softwarových, hardwarových, …), které spolupracují, aby přenos dat mohl fungovat.

Přenosová rychlost je jednotka, která měří množství dat přenesených za určitou jednotku času. Základní jednotka je b/s (bit za sekundu), někdy také bps (bit per second). Používá se i B/s (byte za sekundu) a násobné jednotky jako kb/s, Mb/s apod.

Chyby při přenosu

V komunikačním kanálu na zprávy působí šum, který může data poškodit — na některém místě v datovém proudu se místo 0 objeví 1 nebo naopak. Proto často využíváme redundance — posíláme spolu se zprávou nějakou další informaci, která nám pomůže odhalit chybu, nebo ji rovnou opravit. Příklady redundancí jsou:

  • Kontrolní součet je číslo nebo řetězec, který pošleme spolu se zprávou. Jednoduchá metoda kontrolního součtu je sečíst hodnoty všech bytů, často se však používají i mnohem složitější funkce.
  • Do paritního bitu uložíme 1, pokud je počet 1 v daném úseku dat lichý a 0, pokud je počet 1 sudý.
  • Kontrolním číslem doplníme zprávu tak, aby celý datový proud měl určitou vlastnost, např. aby součet hodnot všech bytů byl dělitelný určitým číslem.
  • Poslání celé zprávy třikrát nám sice umožňuje chyby rovnou opravovat, posíláme však trojnásobný objem dat.

U přijaté zprávy zkontrolujeme, jestli redundance stále sedí (např. znovu spočítáme kontrolní součet a porovnáme s obdrženým). Pokud něco není v pořádku, můžeme zkusit chybu opravit, případně požádat odesílatele o opětovné poslání.

Signál

Data jsou přenášena pomocí signálu, který má dva druhy.

Analogový signál je spojitý a mnohem citlivější vůči šumu. Může nabývat nekonečně mnoha hodnot. V současnosti už se pro přenos dat nepoužívá tolik často. Aby s analogovým signálem mohly pracovat počítače, je nejprve potřeba ho převést na digitální.

Digitální signál je nespojitý a nabývá omezeného počtu hodnot, v informatice to jsou typicky 0 a 1. Nyní je hojně využíván pro přenos dat mezi počítači.

Na obrázku je analogový signál znázorněn oranžovou linkou a digitální pomocí modrých bodů.

Modelování pomocí grafů

Přejít ke cvičením na toto téma »

Pojem „graf“ má bohužel v češtině několik odlišných významů. Mimo jiné používáme grafy funkcí, grafy pro vizualizaci dat a grafy modelující vztahy mezi objekty.

Zde se zabýváme posledním zmíněným významem. V tomto případě se grafem rozumí vrcholy („tečky“) a hrany („spojnice“). Takovéto grafy se používají pro modelování vztahů mezi objekty, například:

  • Dopravní síť: vrcholy jsou města, hrany jsou silnice mezi nimi.
  • Sociální síť: vrcholy jsou lidé, hrany odpovídají přátelství.
  • Webové stránky: vrcholy jsou jednotlivé stránky, hrany odpovídají odkazům mezi nimi.

Základní témata o grafech se zaměřují na použití grafů na intutivní úrovni (tato témata jsou vhodná i na úrovni základní školy):

  • Grafy a abstrakce – použití grafu jako modelu skutečnosti, porozumění významu grafů.
  • Grafy sousednosti – jeden konkrétní případ užití grafů, na kterém se dá čistě obrázkovou formou dobře procvičit princip abstrakce.
  • Nejkratší cesty – intuitivní příklady na hledání nejkratších cest mezi vrcholy, což je jedna z typických aplikací grafů.
  • Izomorfní grafy – téma se složitě znějícím názvem, ale poměrně intuitivními obrázkovými zadáními; hledáme grafy, které mají „stejná spojení“.

Grafy mají v informatice bohaté využití. Abychom mohli s grafy více pracovat, nevystačíme jen s obrázky, ale potřebujeme i přesně pracovat s pojmy. Toto důkladnější pojetí už je na úrovni střední a vysoké školy: základní pojmy, vlastnosti a části grafů, pojmy a abstrakce.

Při řešení složitějšího nebo nepřehledného problému je často dobrý nápad si ho nakreslit. Grafy umožňují jednoduše graficky znázornit situaci s různými objekty, které mezi sebou mají vztahy. Grafy se skládají z vrcholů a hran, které propojují vrcholy mezi sebou. Vrcholy se obvykle zobrazují jako puntíky nebo kroužky, hrany kreslíme jako čáry nebo šipky. K vrcholům i hranám můžeme přidávat různé popisky, pokud se nám to hodí. Vrcholy modelují objekty, zatímco hrany představují vztahy mezi nimi.

Některými příklady modelování pomocí grafů jsou:

Případ Vrcholy Hrany
mapa místa cesty mezi místy
sociální síť lidé kdo koho sleduje
potravní síť živočichové kdo se kým živí
síť hromadné dopravy zastávky nebo přestupní stanice trasy

Grafy umožňují zachovat důležité informace o skutečnosti a přitom vynechat ty, které pro nás nejsou užitečné. Například, pro nalezení nejkratší cesty mezi vesnicemi nepotřebujeme vědět, jestli je v okolí nějaký rybník nebo les.

Příklad: mapa

Jednotlivá místa na mapě jsou modelovány jako vrcholy, cestám mezi nimi odpovídají hrany.

Příklad: sociální síť

Lidé jsou vrcholy, kdo koho sleduje modelují šipky (hrany).

Jednou z typických úloh na grafech je hledání cest mezi vrcholy. Pokud chceme v mapě najít co nekratší cestu z jednoho místa do jiného, můžeme mapu převést na graf, v němž budeme hledat nejkratší cestu po hranách. V takové situaci se často hodí k hranám (cestám mezi místy) doplnit údaje o jejich délce.

Z tohoto grafu bychom například zjistili, že nejkratší cesta z Rejšic do Jabkenic má 3 kilometry a vede přes Charvatce.

Cesty je možné kromě prostorové vzdálenosti porovnávat i podle jiných kritérií:

  • Když internetový poskytovatel zajišťuje propojení svých sítí, může případná spojení porovnávat podle ceny za jejich pronájem.
  • Navigace neporovnává cesty jen podle délky, ale i podle času dojezdu. Cesta po dálnici pravděpodobně bude o mnoho rychlejší, než stejně dlouhá cesta po okresní silnici.

Grafy jsou izomorfní, pokud mají stejný počet vrcholů a „stejná spojení“. Zde nebudeme rozebírat přesnou matematickou definici (tu najdete třeba zde), ale jen intuitivní představu. Představme si vrcholy grafu jako dřevěné kolíčky a hrany jako gumičky mezi nimi. S kolíčky a gumačkami můžeme hýbat a pořád je to „stejný graf“, protože vztah spojení zůstává zachován. Izomorfismus grafů se týká právě tohoto typu „stejnosti“. Můžeme s jedním grafem hýbat tak, až z něj dostaneme ten druhý?

Cvičení na izomorfní grafy nejsou užitečná ani tak kvůli pojmu samotnému, ale především jako trénink abstrakce. Při hledání izomorfních grafů musíme odhlédnout od detailů (jak přesně jsou hrany zakresleny) a soustředit se pouze na důležité vztahy (kdo je s kým spojen).

Teorie grafů: základní pojmy

Přejít ke cvičením na toto téma »

Graf je struktura, která nám pomáhá znázorňovat objekty a vztahy mezi nimi. Skládá se z vrcholů a hran. Vrcholy často reprezentují reálné objekty a obvykle je kreslíme jako tečky nebo kolečka. Hrany představují vztahy mezi vrcholy, na obrázku obvykle vypadají jako čáry mezi vrcholy. Každá hrana vede mezi dvěma vrcholy, oba její konce tedy musí být připojeny k některému vrcholu.

Mezi základní grafové pojmy patří:

  • Stupeň vrcholu je počet hran, které z daného vrcholu vychází.
  • Cesta mezi dvěma určenými vrcholy existuje, pokud v grafu dokážeme přejít po hranách z jednoho vrcholu do druhého.
  • Vzdálenost dvou vrcholů je délka nejkratší cesty mezi těmito vrcholy. Naopak nám vůbec nezáleží na tom, jak daleko jsou od sebe vrcholy na obrázku, pokud graf nakreslíme.

Dále si ukážeme některá rozšíření obyčejných grafů, tedy druhy grafů, jejichž vlastnosti jsou nějakým způsobem upravené.

V orientovaném grafu mají hrany přesně určený směr, kterým vedou, a tedy i začáteční a koncový vrchol. To je rozdíl od grafů, o kterých jsme uvažovali doposud –⁠ tam hrany vedou „mezi vrcholy“ a nemají dáno, kde začínají a kde končí. Hrany orientovaných grafů se často znázorňují jako šipky.

V ohodnoceném grafu má každá hrana přiřazenu určitou hodnotu (nazývanou také váha). V obrázku píšeme váhy jako čísla ke hranám. Pomocí těchto hodnot můžeme snadno znázornit například délky cest mezi městy.

Teorie grafů: vlastnosti a části grafů

Přejít ke cvičením na toto téma »

Graf je souvislý, pokud mezi každými dvěma z jeho vrcholů vede cesta. To znamená, že všechny vrcholy jsou spolu nějak propojené –⁠ dokážeme v grafu přejít po hranách z každého vrcholu do všech ostatních.

Komponenta souvislosti je část grafu, která je souvislá, ale pokud bychom do ní chtěli zahrnout nějaké další hrany nebo vrcholy, souvislá by být přestala. Každý graf je rozdělený na několik komponent souvislosti. Pokud je graf souvislý, tvoří sám o sobě jednu komponentu souvislosti.

Podgraf je část (tedy některé vybrané vrcholy a hrany) grafu, která sama o sobě také tvoří graf. Každá hrana v podgrafu tedy musí mít na obou svých koncích vrchol, který také patří do podgrafu.

V úplném grafu je každý vrchol je spojený s každým. Tento graf má tedy maximální počet hran, který může mít.

Strom je souvislý graf, který neobsahuje žádnou kružnici jako podgraf. Stromy mají mnoho zajímavých vlastností a často se používají v informatice, například pro přehledné a efektivní uložení dat.

Modelování vztahů a systémů

Přejít ke cvičením na toto téma »

Lidé, věci a další objekty na světě jsou často různými způsoby propojené – navzájem se ovlivňují, souvisí spolu, nebo jsou si třeba nějak podobné. Jinak řečeno, mají mezi sebou vztahy. Víc navzájem propojených objektů tvoří systém. Abychom se ve složitějším systému lépe vyznali, často pomáhá si daný systém znázornit nebo nakreslit – namodelovat.

Zde si můžete procvičit jednoduché rozlišování mezi vztahy a vlastnostmi. Cvičení využívá mimo jiné i entitně-vztahové modely – speciální typ diagramů, které se používají i k modelování databází. Těmito modely se do větší hloubky zabývá následující cvičení, které se na vztahy a vlastnosti dívá z více databázového pohledu.

Objekty (věci, lidé, skupiny, …) mohou mít vztahy s dalšími objekty. Vztahy vyjadřují, jak spolu různé objekty souvisí. Pokud o Ondrovi řekneme, že má sestru Anetu, říkáme, že mezi Ondrou a Anetou je vztah – konkrétně sourozenecký. Dále můžeme říct, že Ondra chodí na 2. ZŠ v Dobříši. To je vztah mezi Ondrou a školou, kterou navštěvuje. Objekty dále mohou mít různé vlastnosti, tedy další informace, které je nějak popisují. Ondrovy vlastnosti jsou například jeho zelené oči a tmavě hnědé vlasy. Vlastnost školy je třeba, že stojí na adrese Školní 1035.

Při určování, jestli jde o vlastnost, nebo o vztah mezi dvěma objekty, často pomáhá zamyslet se, jestli jedna část vztahu může existovat bez druhé. Pokud je jedna část závislá na existenci druhé, jde pravděpodobně o vlastnost. V opačném případě je to spíše vztah. Obecně, vazba mezi objektem a jeho vlastností je obvykle pevnější než vztah mezi dvěma objekty. Kdyby 2. ZŠ v Dobříši neexistovala, nebude existovat ani adresa Školní 1035 – protože na té adrese nebude stát žádná budova. Proto je adresa vlastností školy. Naproti tomu, pokud by neexistovala 2. ZŠ, Ondra by mohl jednoduše chodit na jinou školu. Zároveň, kdyby Ondra bydlel v jiném městě a nechodil na 2. ZŠ, ta by i přesto mohla stát v Dobříši a vzdělávat jiné děti. Proto věta „Ondra chodí na 2. ZŠ“ vyjadřuje vztah a nikoli vlastnost.

Entitně-vztahové modely

Přejít ke cvičením na toto téma »

Entitně-vztahové modely (diagramy) pomáhají znázorňovat a zpřehledňovat vztahy a vlastnosti mezi objekty. Používají je například databázoví architekti, aby naplánovali, jak bude vypadat jejich databáze. Diagramy jsou ale poměrně jednoduché, takže si s nimi můžeme pohrát i my.

V entitně-vztahovém modelu se vyskytují tři typy prvků:

  • Entity představují objekty. Mohou existovat samostatně, nezávisle na ostatních objektech, a mají vlastnosti (atributy). V diagramu se zakreslují do obdélníků.
  • Vztahy (relace) propojují entity. Zakreslují se jako diamanty, které jsou spojené čarou s danými entitami.
  • Atributy (vlastnosti) patří jednotlivým entitám. Typicky nemají smysl bez entity, které patří – nemohou existovat samostatně. Znázorňují se jako elipsy spojené s danou entitou.

Jednoduchý diagram může vypadat například takto:

Rozebraný příklad: význam diagramu

  • Uživatelé sociální sítě mohou zveřejňovat příspěvky a mají určitý počet sledujících.
  • Uživatelé a příspěvky jsou entity.
  • Jsou propojené vztahem, jehož název říká, jak spolu tyto dvě entity souvisí (uživatel zveřejňuje příspěvek).
  • Počet sledujících je atribut uživatele.

Vztahy mohou mít různé četnosti. Četnosti vyjadřují, s kolika entitami může být každá strana v daném vztahu. Uvažme zmínený příklad sociální sítě. Jeden uživatel může zveřejnit více příspěvků. Ale každý příspěvek je zveřejněn pouze jedním uživatelem. Proto je četnost vztahu „zveřejňuje“ 1 uživatel – více příspěvků. Naproti tomu, pokud bychom mluvili o vztahu „uživateli se líbí příspěvek“, byla by četnost více uživatelů – více příspěvků. To proto, že jednomu uživateli se může líbit více příspěvků, a jeden příspěvek může být „olajkován“ více uživateli.

Modelování je důležitou součástí mnoho oblastí informatiky (a nejen informatiky). Často jej používáme i bez toho, abychom přímo o modelování mluvili. Například témata Grafy a abstrakce a Abstrakce představují určitou formu modelování.

V této sekci se zabýváme především tím, co se označuje jako výpočetní modelování, tj. modely reprezentované na počítači, které následně můžeme strojově simulovat. Pro rozsáhlejší úvod do této oblasti lze použít e-knihu Modelování a simulace komplexních systémů (od jednoho z autorů Umíme).

Zde nabízíme procvičování k základním principům:

  • Modely a skutečnost: příklady modelů a zamyšlení nad tím, jakou část skutečnosti modelují.
  • Použití modelů a simulací: k čemu vlastně modely a simulace využíváme, jaký je účel konkrétních modelů, jak účel simulace ovlivňuje volbu modelu.
  • Interpretace simulací: interaktivní práce s konkrétními simulacemi a interpretace toho, co se v nich děje.

Model je zjednodušenou reprezentací skutečnosti. Model se zaměřuje jen na určité části skutečnosti a i ty zjednodušuje. Díky tomu nám ale dobrý model umožňuje o skutečnosti lépe přemýšlet. Takto obecně to vše může znít obecně a neuchopitelně. Ale s modely pracujeme neustále, i když o nich třeba nepřemýšlíme jako o modelech.

Typický příklad je mapa. Mapa je model prostoru. Turistická mapa například zachycuje polohu míst, vzdálenosti, nadmořské výšky. Zachycuje také tvar cest, ale jen zjednodušeně. A mnohé věci ze skutečnosti v mapě vůbec nejsou. Třeba aktuální počasí, barvu budov, nebo polohu srn v lese z běžné mapy nevyčteme.

Další příklady modelů:

  • glóbus jako model Země,
  • modely počasí používané pro předpovídání počasí,
  • malá autíčka či vláčky jako modely skutečných aut a vlaků,
  • 3D model postavy v počítačovém programu,
  • obrázek potravního řetězce jako model vztahů mezi živočichy v přírodě.

Použití modelů a simulací

Přejít ke cvičením na toto téma »

Model zachycuje pravidla a principy. Pokud model „rozhýbeme“, dostáváme simulaci. Například můžeme simulovat nehodu, ať už pomocí simulace modelu auta v počítači nebo pomocí fyzické nárazová zkoušky (crashtestu). Nebo simulujeme model počasí, abychom předpověděli budoucnost. Ne všechny modely simulujeme. Například u mapy nemá o simulaci příliš smysl mluvit.

Modely a simulace můžeme dělat s mnoha různými účely:

  • předpovídání budoucího chování, např. pomocí simulace modelu předpovídáme počasí,
  • zkoumání účinnosti opatření, např. pomocí modelu epidemie odhadujeme, jak efektivní může být zavedení karantény,
  • porovnání různých možností, např. různých variant křižovatky,
  • výuka, trénink dovedností, např. letecké simulátory,
  • zkoumání světa, porovnávání hypotéz, např. modely buněk používané v biologii.

Pomocí simulací často zkoumáme otázky typu „Co kdyby?“. Co kdyby rychlostní limit na silnici byl nižší? Co kdyby byla karanténa přísnější? Co kdybychom počítačovou síť propojili jiným způsobem?

Zpětné vazby hrají důležitou roli v práci s modely, ale má smysl o nich mluvit i bez toho, abychom přímo modely vytvářeli. Zpětnovazební cyklus je série příčin a následků, které se vzájemně ovlivňují.

Existují dva základní typy zpětné vazby: negativní a pozitivní. Toto dělení nijak nesouvisí s tím, jestli se nám příslušené děje líbí nebo nelíbí (jde o technické pojmy, nikoliv emotivní hodnocení). Následující obrázek intuitivně ilustruje základní rozdíl mezi negativní a pozitivní zpětnou vazbou.

Negativní zpětná vazba znamená, že změna v jedné složce zpětnovazebního cyklu vede v konečném důsledku ke zmenšení této změny. Negativní zpětná vazba tedy udržuje systém v rovnovážném stavu. Typický příklad je řízení teploty v místnosti pomocí termostatu: pokud je chladno, termostat zapne topení, místnost se ohřeje, topení se vypne. Podobně funguje regulace teploty těla pocením.

Pozitivní zpětná vazba nastává, když změna jedné složce zpětnovazebního cyklu vede v konečném důsledku ke zvětšení této změny. Pozitivní zpětná vazba tedy vyvádí systém z rovnováhy. Příkladem pozitivní zpětné vazby je epidemie infekční nemoci: když přibude nemocných, zvýší se i počet zdravých, kteří s nimi přijdou do kontaktu, a tím se zvýší počet nemocných.

V světě kolem nás se vyskytuje mnoho zpětných vazeb, které spolu vzájemně interagují. Porozumět jejich chování není jednoduché. Modelování často využíváme k tomu, abychom zpětným vazbám lépe porozuměli.

V této sekci si můžete zkusit práci s připravenými modely. Modely vychází z nástroje NetLogo, který je obsahuje celou řadu dalších zajímavých modelů.

Modely mají nastavitelné parametry, které ovlivňují chování simulací. Kdykoliv pracujeme se simulacemi, je užitečné zkoumat vliv parametrů na průběh simulace. Cvičení procvičují práci s parametry, porozumění popisu modelu a interpretování výsledků simulace.

NAPIŠTE NÁM

Děkujeme za vaši zprávu, byla úspěšně odeslána.

Napište nám

Nevíte si rady?

Nejprve se prosím podívejte na časté dotazy:

Čeho se zpráva týká?

Vzkaz Obsah Ovládání Přihlášení Licence