V každé zebře jde zjednodušeně o to, že máme několik stejně velkých množin prvků (pojmů), které musíme seskupit tak, aby to vyhovovalo všem podmínkám (nápovědám) formulovaným v zadání. K vyřešení nám mohou být předloženy zebry jednoduché i obtížnější, je-li však zebra správně sestavena, není neřešitelná. Obtížnost zebry je určena především dvěma parametry:
Je-li dáno m různých množin M1, M2, ..., Mm, z nichž každá obsahuje právě n prvků, mluvíme o zebře typu mxn (dále jen zebra (mxn)). Jazykem teorie množin pak lze říci, že řešením zebry (mxn) je podmnožina Z kartézského součinu M1x M2 x ... x Mm , která má velikost n, a navíc platí, že každý prvek množiny Mi, kde `iin` {1,2, ... m}, se vyskytuje v právě jedné m-tici z množiny řešení Z. Na tuto vlastnost se v dalším textu budeme odkazovat jako na princip zebry.
Dalším faktorem, který ovlivňuje obtížnost zebry, je způsob formulace nápověd (podmínek), které jsou nedílnou součástí zadání. Jsou formulovány v jednoduchých oznamovacích větách či souvětích (která lze na jednoduché věty rozložit). Kvalitativně můžeme rozlišit dva typy podmínek:
V dalším poznáme, že obtížněji se do řešení zapracovávají negativní nápovědy.
Prvním úkolem při řešení zebry je odhalit v zadání množiny Mi, kde i`in` {1, 2, ... m} a všechny jejich prvky. V dalším kroku pracujeme se zadanými podmínkami – snažíme se je přeformulovat do jednoduchých oznamovacích vět (pokud v tomto tvaru již nejsou) a pro lepší orientaci jednotlivé nápovědy očíslujeme. Další postup závisí na zvolené metodě řešení. V následující části si připomeneme dvě již popsané metody řešení a popíšeme původní metodu, která se ukáže být nejuniverzálnější. Každá metoda je ilustrována řešením konkrétní úlohy.
Nejjednodušší zebry bývají typu 2xn, kde nejčastěji n`in`{4, 5, 6}. Pro řešení těchto zeber se jako nejvýhodnější strategie jeví záznam do tabulky formátu nxn, což je dáno také tím, že množinu řešení Z tvoří právě n uspořádaných dvojic, které lze tabulkou pohodlně zachytit.
Příklad 1: Zebra (2x5) –Rybáři
Pět rybářů se vydalo na lov. Jmenovali se Kapr, Mřínek, Vokoun, Cejn a Štika. Každý z nich chytil jednu rybu. Tyto ryby byly shodou okolností stejného jména, jako byla jména rybářů. Nikdo však nechytil rybu, jejíž jméno nesl. Pan Cejn nechytil Štiku a pan Štika nechytil cejna. Štiku ulovil jmenovec ryby, kterou chytil pan Vokoun, nebyl to ale kapr. Toho nechytil ani pan Štika. Jakou rybu ulovil pan Kapr? [2]
řešení:
M1= {Kapr, Mřínek, Vokoun, Cejn, Štika}
M2= {kapr, mřínek, okoun, cejn, štika}
Přeformulování podmínek zadání:
Sestavení tabulky – tabulka 5x5 (tabulka 1), kde řádky jsou označeny prvky množiny M1 a sloupce prvky množiny M2.
Vyplňování tabulky – na základě očíslovaných nápověd vyplňujeme tabulku dvěma symboly:
![]() |
tabulka 1 – Autor díla: Stanislav Novák |
U některých symbolů v tabulce jsou čísla podmínek zadání, podle nichž byly doplněny. Není-li číslo uvedeno, byl symbol doplněn na základě principu zebry.
odpověď: Pan Kapr ulovil cejna.
Metoda řešení tabulkou však selhává již u zeber (3xn) – je zde použitelná, ovšem na úkor přehlednosti a elegance řešení [1]. V tomto případě se efektivnější ukazuje metoda vycházející z teorie grafů. Jednotlivé prvky množin M1, M2, M3 tvoří uzly, mezi nimiž konstruujeme hrany na základě podmínek v zadání – úspěšného řešení dosáhneme tehdy, podaří-li se nám zkonstruovat právě n kružnic obsahujících právě 3 uzly, z nichž každý patří do jiné množiny Mi, kde i`in` {1, 2, 3}.
Příklad 2: Zebra (3x5) – Geologové
Pět geologů se vybralo do různých oblastí, aby tam pátrali po nových nalezištích. Každý muž byl jiné národnosti a našel jiný druh nerostného bohatství v jiném typu krajiny:
Odpovězte na tyto otázky:
řešení:
M1 = {Australan, Američan, Angličan, Francouz, Švéd}
M2 = {poušť, hory, údolí, moře, prales}
M3 = {nafta, železo, zlato, diamanty, opály}
Přeformulování podmínek zadání – podmínky zadání jsou v požadovaném tvaru
Všechny prvky jednotlivých množin rozmístíme pohromadě po obvodu rovnostranného trojúhelníku (viz obrázek 1). Tyto prvky tvoří uzly konstruovaných grafů – v průběhu řešení budeme mezi uzly konstruovat dva typy hran v závislosti na formulaci nápovědy:
![]() |
obrázek 1 – Autor díla: Stanislav Novák |
U některých hran grafu je číslo podmínky zadání, podle níž byla sestrojena. Není-li číslo uvedeno, byla hrana sestrojena na základě principu zebry. Při řešení na papíře si můžeme „použité“ nápovědy škrtat.
odpovědi:
Zvýšíme-li obtížnost a zaměříme se na zebry (4xn), metoda konstrukce kružnic také nestačí (některé podmínky zadání mohou vést ke konstrukci hrany uvnitř očekávané kružnice obsahující tentokrát 4 uzly). Přesto lze nalézt metodu inspirovanou teorií grafů, která přehledně a spolehlivě vede ke správnému řešení jakékoliv zebry. Algoritmus této metody bude nastíněn v další části textu a ilustrován původním příkladem zebry (5x5).
Příklad 3: Zebra (5x5) – Farmáři
Na venkově vedle sebe leží pět farem. Každou farmu vlastní právě jeden z pěti mužů, každý z nich má jiného psa, pěstuje jinou plodinu a chová jiný druh hospodářských zvířat. Navíc každý muž využívá ke své práci na farmě jiný dopravní prostředek. Odpovězte na tři otázky, pokud víte následující:
Odpovězte na tyto otázky:
řešení:
M1 nechť neobsahuje pojmy, které se v podmínkách zadání nevyskytují, ale vyskytují se pouze v otázkách. V našem případě zvolíme jako prvky množiny M1 jména farmářů.
M1 = {Albrecht, Bonifác, Cyril, Dařbuján, Evžen}
M2 = {Ben, Brok, Bull, Bax, Brix}
M3 = {ovce, kozy, krávy, koně, prasata}
M4 = {mrkev, mák, brambory, chmel, víno}
M5 = {jeep, pick-up, traktor, náklaďák, dodávka}
Přeformulování podmínek zadání – podmínky zadání jsou v požadovaném tvaru.
Postup řešení metodou hledání cesty spočívá v konstrukci jednoduchého schématu obsahujícího pouze prvky množin Mi, kde i `in`{1, 2, ..., m}. Mezi těmito prvky (uzly) budeme následně konstruovat hrany podle informací z nápověd.
Schéma je složeno z právě m řádků a n sloupců (viz obrázek 2):
Schéma Farmářů vypadá následovně (v průběhu řešení v časové tísni je praktičtější nahradit celé pojmy srozumitelnými, ale jednoznačnými zkratkami – viz poslední řádek s dopravními prostředky):
![]() |
obrázek 2 – Autor díla: Stanislav Novák |
Ve schématu nalezneme uzly dvojího druhu:
Postup řešení spočívá v zaznamenávání informací z nápověd do připraveného schématu v duchu následujících zásad (viz obrázek 3):
![]() |
obrázek 3 – Autor díla: Stanislav Novák |
U některých uzlů grafu je číslo podmínky zadání, podle níž byly označeny za pevné uzly nebo odstraněny z množiny potencionálních uzlů. Není-li číslo uvedeno, byl úkon proveden základě principu zebry.
Zbylé pozitivní nápovědy a všechny negativní nápovědy pak do zjednodušeného schématu zaznamenáme odstraněním daných potencionálních uzlů, které se podle podmínek nemohou stát uzly pevnými. V průběhu práce se schématem využíváme principu zebry tak, že zbude-li nám na průsečíku sloupce a řádku schématu právě 1 z n původních potencionálních uzlů, označíme ho za uzel pevný a z dalších sloupců ho v daném řádku odstraníme.
Úloha je vyřešena, vznikne-li nám ve schématu po zaznamenání nápověd právě n cest, z nichž každá obsahuje právě m pevných uzlů. Následně budeme uzly jednotlivých cest interpretovat jako uspořádané m-tice, které náleží do množiny řešení Z.
odpovědi:
Metoda hledání cesty se ukazuje být nejuniverzálnější ze všech zde uvedených, neboť není limitována ani počtem množin pojmů m, ani počtem jejich prvků n. Může však selhat, bude-li zadána zebra, jejíž podmínky zadání nebude možné do schématu jednoduše zaznamenat (podmínky například mohou mít podobu implikace). Takovým zebrám bude v budoucnu věnován samostatný článek.
Podrobná řešení všech tří úloh uvedených v článku jsou k dispozici jako přílohy.
Všechny články jsou publikovány pod licencí Creative Commons BY-NC-ND.
Článek nebyl prozatím komentován.
Pro vložení komentáře je nutné se nejprve přihlásit.
Článek není zařazen do žádného seriálu.