Cvičení Programování I. Stručné poznámky ke cvičení ze

Podobné dokumenty
Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

2. Elementární kombinatorika

Binární vyhledávací stromy pokročilé partie

Řešení 1. série. Řešení S-I-1-1 Nejdříve si uvědomme, že platí následující vztahy. h = 1 2 v d, h = 1 2 s k,

KOMBINATORIKA (4.ročník I.pololetí DE, 2.ročník I.pololetí NS)

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

Teorie her a ekonomické rozhodování. 4. Hry v rozvinutém tvaru

Výroková logika dokazatelnost

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

Úvod do řešení lineárních rovnic a jejich soustav

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

10 Přednáška ze

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Přednáška 3: Limita a spojitost

Cílem seminární práce je aplikace teoretických znalostí z přednášky na konkrétní úlohy. Podstatu algoritmu totiž

2. LIMITA A SPOJITOST FUNKCE

Jan Pavĺık. FSI VUT v Brně

Přijímací zkouška na MFF UK v Praze

Digitální učební materiál

Návrh Designu: Radek Mařík

Úvod do matematiky. Mgr. Radek Horenský, Ph.D. Důkazy

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Matematická analýza pro informatiky I. Limita funkce

(4x) 5 + 7y = 14, (2y) 5 (3x) 7 = 74,

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

Návody k úlohám domácí části I. kola 59. ročníku MO kategorie B

3. Podmíněná pravděpodobnost a Bayesův vzorec

VY_52_INOVACE_2NOV60. Autor: Mgr. Jakub Novák. Datum: Ročník: 6., 7., 8.

Úlohy krajského kola kategorie C

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

15. Goniometrické funkce

Programování I. Martin Pergel,

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

II. kolo kategorie Z9

6. blok část C Množinové operátory

Obsah. Aplikovaná matematika I. Gottfried Wilhelm Leibniz. Základní vlastnosti a vzorce

Kongruence na množině celých čísel

Úlohy krajského kola kategorie C

Kombinatorika. Michael Krbek. 1. Základní pojmy. Kombinatorika pracuje se spočitatelnými (tedy obvykle

1.5.7 Znaky dělitelnosti

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Usekne-li Honza 1 hlavu, narostou dva ocasy. Tento tah můžeme zakreslit následujícím způsobem: Usekne-li 2 hlavy, nic nenaroste.

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

v z t sin ψ = Po úpravě dostaneme: sin ψ = v z v p v p v p 0 sin ϕ 1, 0 < v z sin ϕ < 1.

1. jarní série Termín odeslání: 4. února 2019

Lineární algebra : Změna báze

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

3.10 Rezoluční metoda ve výrokové logice

Návody k domácí části I. kola kategorie C

Kombinatorika. November 12, 2008

opravdu považovat za lepší aproximaci. Snížení odchylky o necelá dvě procenta

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

5 Informace o aspiračních úrovních kritérií

56. ročník Matematické olympiády. tedy číslice 1, 2, a 3. Dále nám zbývají zlomky. Má-li být jejich součet co nejmenší,

Copyright 2013 Martin Kaňka;

Přijímací zkouška na MFF UK v Praze

Matematická analýza III.

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

UDBS Cvičení 10 Funkční závislosti

: [ : (101 96)] = : [ : 5] = : [20 + 5] = = : 25 = = 98

1 0 0 u 22 u 23 l 31. l u11

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

Hypergrafové removal lemma a Szemérediho

Požadavky na zápočet a zkoušku

Lineární algebra : Metrická geometrie

O dělitelnosti čísel celých

UPPAAL příklady. Jiří Vyskočil 2010

Cvičení 5 - Průchod stromem a grafem

3. ANTAGONISTICKÉ HRY

Matematická analýza III.

Univerzita Karlova v Praze Pedagogická fakulta

12. Aproximační algoritmy

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

12PPOK PROJEKTOVÁNÍ POZEMNÍCH KOMUNIKACÍ

Úvod do informatiky. Miroslav Kolařík

čtyřicet ponožek od jedné barvy a po třech ponožkách od všech ostatních, tedy celkem = 58

Teorie informace II: obtížnější řešené příklady 2014 Tomáš Kroupa

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Obyčejnými diferenciálními rovnicemi (ODR) budeme nazývat rovnice, ve kterých

Matematická logika. Rostislav Horčík. horcik

DOE (Design of Experiments)

Řešení úloh z TSP MU SADY S 1

Základy umělé inteligence

Příklad z učebnice matematiky pro základní školu:

Co víme o přirozených číslech

4 Pojem grafu, ve zkratce

Modely Herbrandovské interpretace

VZOROVÝ TEST PRO 1. ROČNÍK (1. A, 3. C)

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto

Instrukce: Jednotlivé části nejdou přesně po sobě, jak jsme se učili, je to shrnutí.

Algoritmus pro hledání nejkratší cesty orientovaným grafem

kuncova/, 2x + 3 (x 2)(x + 5) = A x 2 + B Přenásobením této rovnice (x 2)(x + 5) dostaneme rovnost

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

1 Linearní prostory nad komplexními čísly

5 Pravděpodobnost. Sestavíme pravděpodobnostní prostor, který modeluje vytažení dvou ponožek ze šuplíku. Elementární jevy

13. cvičení z PSI ledna 2017

Transkript:

Cvičení Programování I Cvičící: Pavel urynek, KIM, pavel.surynek@seznam.cz emestr: Zima 2005/2006 Kroužek: Matematika/59 Rozvrh: Pátek 10:40-12:10 (učebna K2) tručné poznámky ke cvičení ze 14.10.2005 1. Organizační záležitosti. Během semestru proběhnou dvě schůzky v počítačové laboratoři. První schůzka bude věnována seznámení se s vývojovým prostředím urbo Pascal (Borland Pascal). V prostředí urbo Pascal se bude skládat praktický test na zápočet, proto je zvládnutí práce v tomto programu důležité. Na druhé schůzce se bude konat praktický test nanečisto. Doporučuji, aby si všichni obstarali přístup k počítači s instalovaným urbo Pascalem, případně s Free Pascalem, který je volně šiřitelný. Jakékoli dotazy ke cvičení lze posílat na uvedenou e-mailovou adresu. Osobní konzultace ke cvičení lze dohodnout e-mailem (alespoň den předem). 2. Úloha o přelévání vody. K dispozici jsou dvě nádoby, jedna o objemu 5 litrů, druhá o objemu 3 litry. Dále je k dispozici neomezený zdroj vody. Vaším úkolem je pomocí daných dvou nádob odměřit 2 a 4 litry. Řešení. nadné! 3. Úloha o vážení kuliček (těžší varianta). Je dáno 12 na pohled stejných kuliček. Jedna z kuliček má jinou hmotnost než ostatní, nevíme ale, jestli je těžší nebo lehčí. Zbylých 8 kuliček má stejnou hmotnost. Určete pomocí rovnoramenných vah kuličku s odlišnou hmotností. Opět si představte, že se za použití vah platí, snažte se tedy minimalizovat počet vážení. Pokuste se určit minimální počet použití vah bez toho, abyste úlohu řešili (použijte podobnou úvahu jako v lehčí variantě úlohy o vážení kuliček). Řešení. Máme 12 kuliček, to znamená 12 možností pro odlišnou kuličku. Zde ale navíc nevíme, zda je ta odlišná kulička lehčí nebo těžší. o jsou další 2 možnosti u každé z 12 možností. Celkem tedy musíme umět rozlišit mezi 24 možnostmi, pokud navíc chceme určit, zda je hledaná kulička lehčí nebo těžší. Nejmenší k, pro které je 3 12, resp. 3 24, je k = 3. V k k obou případech tedy potřebujeme aspoň 3 vážení. Konkrétní postup vypadá následovně.

1) Kuličky budeme rozdělovat do tří množin. 8 kuliček se stejnou hmotností budeme označovat jako stejné. První množina bude obsahovat stejné kuličky nebo lehčí kuličku. Druhá množina bude obsahovat pouze stejné kuličky. Nakonec množina bude obsahovat stejné kuličky nebo těžkou kuličku. Na začátku jsou množiny, a prázdné. 2) Kuličky rozdělíme do 3 hromádek po 4 kuličkách. 4) Provedeme první vážení. 3) Vybereme libovolné dvě hromádky a ty zvážíme (jedna hromádka na levou misku vah, druhá na pravou). Bez újmy na obecnosti, nechť je to 1. a. 4) Dostáváme evá miska těžší provedeme kuliček do množin, a. Misky jsou stejně těžké provedeme kuliček do množin, a. Pravá miska těžší provedeme kuliček do množin, a.

4a) Předpokládejme, že nastala situace, kdy jsou misky stejně těžké. V tomto případě se úloha redukovala na nalezení odlišné kuličky mezi 4 zbylými. 5a) Rozdělíme zbylé kuličky na 3 hromádky. V 1. a 2. hromádce bude 1 kulička ve 3. hromádce budou 2 kuličky. 6a) Zvážíme 1. a 2. hromádku (jedna hromádka na levou misku vah, druhá na pravou). Druhé vážení. 7a) Dostáváme tři možné výsled- evá miska těžší provedeme kuliček do množin, a. Miska jsou stejně těžké provedeme kuliček do množin, a. Pravá miska těžší provedeme kuliček do množin, a. 1. a 8a) Zvážíme 1. hromádku a jednu kuličku z množiny (jedna hromádka na levou misku vah, druhá na pravou). řetí vážení. evá miska těžší hledaná kulička je na levé misce. jedna kulička z množiny Misky jsou stejně těžké hledaná kulička je v 2. hromádce. 9a) Dostáváme ento případ nenastává. 8b) Zvážíme jednu kuličku z množiny a jednu zbylou kuličku (jedna hromádka na levou misku vah, druhá na pravou). řetí vážení. jedna kulička ze zbylých evá miska těžší hledaná kulička je na levé misce. 8c) Postupujeme podobně jako v případě 8a). jedna kulička z množiny Misky jsou stejně těžké hledaná je ta, co zbyla. 9b) Dostáváme Misky jsou stejně těžké hledaná kulička je na levé misce.

4b) Předpokládejme, že nastala situace, kdy je pravá miska těžší. ituace, kdy je těžší levá miska by se řešila stejně. 5b) Na levou misku dáme 1 kuličku z množiny a 3 kuličky z množiny. Na pravou misku dáme 2 kuličky z množiny a 2 kuličky z množiny. Druhé vážení. 6b) Dostáváme evá miska těžší kuličky z množin a, které nejsou na váze, přesuneme do množiny. Kuličky z množiny na pravé misce přesuneme do množiny. Dostaneme do množin, a. Misky jsou stejně těžké všechny kuličky na váze přesuneme do množiny. Dostaneme do množin, a. Pravá miska těžší kuličky z množin a, které nejsou na váze, přesuneme do množiny. Kuličky z množiny na pravé misce přesuneme do množiny. Dostaneme do množin, a. 7b) Zvážíme kuličky z množiny (jedna na levou misku, druhá na pravou misku). řetí vážení. 7c) ěžší kuličku z množiny určíme na jedno vážení stejně jako v předchozí úloze. 8b) Dostáváme evá miska těžší hledaná kulička je na pravé misce. Misky jsou stejně těžké hledaná kulička je v množině. Pravá miska těžší hledaná kulička je na levé misce.

Pozn.: Na cvičení jeden pan kolega ukazoval lepší řešení, kdy v při druhém vážení v situaci 4a) vážíme 3 a 3 kuličky. ímto postupem lze navíc ve všech případech zjistit, zda je hledaná jiná kulička lehčí nebo těžší. 4. Úloha o hledání nejtěžších kuliček. Je dáno N na pohled stejných kuliček. Každá z kuliček má jinou hmotnost. Najděte pomocí rovnoramenných vah nejtěžší kuličku. Najděte pomocí rovnoramenných vah druhou nejtěžší kuličku. nažte se minimalizovat počet vážení. Řešení. Hledání nejtěžší kuličky: vezmeme první kuličku, zvážíme ji s další kuličkou. Vítěznou kuličku si ponecháme a vážíme ji s další kuličkou. Vítěznou kuličku si opět ponecháme. Atd. Při posledním vážení je vítězná kulička nejtěžší. Při tomto postupu je použito N 1 vážení. Hledání druhé nejtěžší kuličky: lze použít předchozí postup s tím, že nejprve dáme nejtěžší kuličku stranou a dále s ní nepracujeme. Pokud již víme, která kulička je nejtěžší, pak tento postup spotřebuje N 2 vážení. Pokud to nevíme, celý postup zabere N 1 + N 2 = 2N 3. ze to ale udělat lépe (pomocí méně vážení). Použijeme stromové schéma (čísla v kroužku reprezentují hmotnosti kuliček). 12 1 99 50 22 27 43 17 4 vážení (obecně N / 2 vážení) 12 99 99 27 43 99 43 2 vážení (obecně N / 4 vážení) 1 vážení (obecně N / 8 vážení) Celkem 7 vážení (obecně N 1 vážení) Pro nalezení nejtěžší kuličky nám toto schéma oproti předchozímu postupu příliš nepomůže. Počet vážení je v obou případech stejný. Užitečnost schématu se projeví až při hledání druhé nejtěžší kuličky. Odstraníme ze schématu nejtěžší kuličku. 12 1 50 22 27 43 17 12 27 43 43 Nejtěžší kulička se vyskytuje na 4 místech (obecně na log 2 N 1 místech). V druhé fázi doplníme místa ve schématu, postupujeme odshora.

12 1 50 22 27 43 17 nejvýše 1 vážení (konkrétně žádné) 12 50 50 27 43 43 nejvýše 1 vážení (konkrétně jedno) Pro nalezení nejtěžší a druhé nejtěžší kuličky potřebujeme celkem nejvýše N 1 + log2 N 1 = N + log2 N 2, jinak řečeno,,zhruba N + log2 N vážení (kde slůvko,,zhruba bude vysvětleno na přednášce). ímto postupem můžeme kuličky seřadit od nejtěžší k nejlehčí. Celkem na to spotřebujeme nejvýše,,zhruba + N log N, jinak řečeno,,zhruba log N. Co znamená to zhruba? N 2 50 N 2 Definice. Mějme dvě funkce f : N N a g : N N. Říkáme, že f je asymptoticky menší nebo rovna g, označujeme f je O (g) nebo f O(g), právě když c R, c > 0 takové, že pro skoro všechna n N je f ( n) cg( n). Přičemž pro skoro všechna n N znamená pro všechna až na konečnou množinu, neboli n N, že pro n N, n > n daný výrok platí. 0 0 nejvýše 1 vážení (konkrétně jedno) Celkem 2 vážení (obecně nejvýše log 2 N 1 vážení) Užijeme-li tuto definici na příklad. Počet vážení potřebných k seřazení N kuliček od nejlehčí k nejtěžší pomocí výše popsaného stromového schématu je O ( N log N 2 ). 5. Hra sirky. Máme hromádku sirek. Hraje se tak, že se střídají dva hráči a odebírají z hromádky sirky. V každém tahu je možné odebrat 1,2 nebo 3 sirky. Prohrál ten hráč, na kterého už nic nezbylo. Navrhněte co nejlepší hrací strategii pro jednoho z hráčů. Řešení. tačí dostat protihráče do situace, kdy je na tahu a počet sirek na hromádce je dělitelný 4. Pak lze hrát tak, že protihráč určitě prohraje. Pro situaci, kdy jsou na hromádce 4 sirky to jistě platí (nepřítel něco odebere, my sebereme zbytek). Předpokládejme, že toto tvrzení platí pro 4k sirek na hromádce, kde k je přirozené číslo. Je-li nepřítel na tahu a na hromádce je 4(k+1) sirek, pak po nepřítelově tahu zbude 4(k+1)-1, 4(k+1)-2 nebo 4(k+1)-3 sirek. My pak vezmeme tolik sirek, aby na nepřítele zbylo 4k sirek. Že je to možné, je vidět.