SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

Podobné dokumenty
SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

Programy na PODMÍNĚNÝ příkaz IF a CASE

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)

teorie logických spojek chápaných jako pravdivostní funkce

II. Úlohy na vložené cykly a podprogramy

Výroková a predikátová logika - V

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

ALGEBRA. Téma 5: Vektorové prostory

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

Extrémy funkce dvou proměnných

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

Lekce 01 Úvod do algoritmizace

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Operace s maticemi. 19. února 2018

Slovo ALGEBRA pochází z arabského al-jabr, což znamená nahrazení. Toto slovo se objevilo v názvu knihy

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY DUBNA 2017

Algoritmizace a programování

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Hisab al-džebr val-muqabala ( Věda o redukci a vzájemném rušení ) Muhammada ibn Músá al-chvárizmího (790? - 850?, Chiva, Bagdád),

VĚTY Z LINEÁRNÍ ALGEBRY

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

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

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

APLIKACE. Poznámky Otázky

Umělá inteligence I. Roman Barták, KTIML.

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Optimalizace & soft omezení: algoritmy

Systematická tvorba jízdního řádu 2. cvičení

Logika a logické programování

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2016

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

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Gymnázium Jiřího Ortena, Kutná Hora

1 Báze a dimenze vektorového prostoru 1

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í

3. ledna list a odevzdejte tento zvláštní list (listy) i všechny ostatní listy, které jste při řešení

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

19 Hilbertovy prostory

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

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

Základní pojmy teorie množin Vektorové prostory

Úvod do logiky (VL): 4. Zjištění průběhu pravdivostních hodnot formule tabulkovou metodou

64. ročník matematické olympiády Řešení úloh krajského kola kategorie A

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Příklad elektrický obvod se stejnosměrným zdrojem napětí

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

Matematika IV, VŠB-TU Ostrava. Úvodní 5minutovky. Pavel Ludvík. 18. listopadu 2015

3. ANTAGONISTICKÉ HRY

(Auto)korelační funkce Statistické vyhodnocování exp. dat M. Čada ~ cada

1 Řešení soustav lineárních rovnic

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

Úvod do lineární algebry

12. Globální metody MI-PAA

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

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

ALGORITMIZACE A PROGRAMOVÁNÍ

Predikátová logika. prvního řádu

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

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

Globální matice konstrukce

Sémantika predikátové logiky

Formální systém výrokové logiky

Třídy složitosti P a NP, NP-úplnost

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY ZADÁNÍ NEOTVÍREJTE, POČKEJTE NA POKYN!

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

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

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Lineární funkce, rovnice a nerovnice 4 lineární nerovnice

1 Extrémy funkcí - slovní úlohy

Obecná rovnice kvadratické funkce : y = ax 2 + bx + c Pokud není uvedeno jinak, tak definičním oborem řešených funkcí je množina reálných čísel.

Zadání soutěžních úloh

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

1 Linearní prostory nad komplexními čísly

Zavedení a vlastnosti reálných čísel

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matematika B101MA1, B101MA2

MATURITNÍ TÉMATA Z MATEMATIKY

TGH09 - Barvení grafů

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

Semestrální písemka BMA3 - termín varianta A13 vzorové řešení

Výroková logika - opakování

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

Soustavy lineárních rovnic

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

ANTAGONISTICKE HRY 172

Úlohy krajského kola kategorie A

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY BŘEZNA 2017

Transkript:

Cvičení 7 SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh) 1. Polynomy Návod: Polynomy lze reprezentovat (nejen v Prologu) několika způsoby, které lze rozdělit do následujících skupin: A) podle množství uvedených koeficientů (př. x^3+2*x) A.1) řídký tvar jsou uvedeny pouze nenulové koeficienty s příslušnou mocninou u proměnné/proměnných (př. [[2,1],[1,3]]) A.2) hustý tvar jsou uvedeny všechny koeficienty v rostoucím/klesajícím pořadí (př. [0,2,0,1]) B) podle způsobu shlukování proměnných B.1) rekurzivní tvar polynom více proměnných je vyjádřen jako polynom jedné proměnné, jehož koeficienty jsou obdobné polynomy v ostatních proměnných B.2) distributivní tvar polynom je zapsán jako součet termů, z nichž každý je tvořen součinem koeficientů a proměnných Úloha 1a: Řídký rekurzivní zápis Je dán libovolně uzávorkovaný výraz s celými čísly, proměnnými (reprezentovány atomy), operacemi +, -, *, ^ (mocnina je pouze na přirozená čísla) a seznam proměnných určující jejich důležitost (např. [x,y] znamená, že hlavní polynom je v proměnné x a jeho koeficienty v proměnné y ). Vytvořte program, který převede polynom do řídkého rekurzivního zápisu, a vytvořte program, který vrací řídký rekurzivní zápis v "lidském" tvaru, tj. operacemi +, -, *, ^ bez zbytečných nul, jedniček apod. Úloha 1b: Řídký distributivní zápis dtto, ale převod do řídkého distributivního zápisu Úloha 1c: Hustý rekurzivní zápis dtto, ale převod do hustého rekurzivního zápisu Úloha 1d: Hustý distributivní zápis dtto, ale převod do hustého distributivního zápisu 2. Barvení grafu (splňování podmínek) Je dán graf, ve kterém vrcholy odpovídají proměnným s doménami (obory hodnot) a hrany jsou označeny jménem podmínky mezi proměnnými. Obarvěte graf, tj. přiřaďte každé proměnné hodnotu z její domény tak, aby byly splněny všechny podmínky. Navrhněte vlastní reprezentaci grafu a vytvořte generátor, který připraví graf pro řešení problému N-dam. Úloha 2a: Dopředná kontrola (forward checking) Po "obarvení" vrcholu se z domén všech okolních vrcholů vyřadí nekonzistentní hodnoty, viz Constraint Propagation.

Úloha 2b: Pohled dopředu (look ahead) Po "obarvení" vrcholu se z domén všech okolních vrcholů vyřadí nekonzistentní hodnoty, viz Constraint Propagation. Úloha 2c: Lokální prohledávání s Tabu seznamem Nejprve se "náhodně" obarví všechny vrcholy. Pokud existuje nějaký vrchol, který je v konfliktu se svým okolím (není splněna podmínka na hraně), program najde pro tento vrchol jinou barvu tak, aby se konflikt zmenšil. Pro odstranění lokálního minima použijte techniku Tabu seznamu (viz Heuristics and Stochastic Algorithms). Úloha 2d: Back-jumping (inteligentní navracení) Barvení se provádí podobně jako při backtrackingu, ale program se při nalezení nekonzistence nevrací pouze o jednu úroveň, ale vrací se až na úroveň, která nekonzistenci způsobila. 3. Hříčky Úloha 3a: NIM (lehká varianta) Je dáno N hromádek zápalek, ze kterých střídavě odebírají dva hráči tak, že mohou odebrat libovolný počet zápalek z jedné hromádky. Vyhrává ten, kdo odebral poslední zápalku. Napište program, který hledá optimální strategii pro jednoho hráče. Úloha 3b: NIM (těžší varianta) Je dáno N hromádek zápalek, ze kterých střídavě odebírají dva hráči tak, že mohou odebrat libovolný počet zápalek z jedné hromádky, případně odebrat stejný počet zápalek ze dvou hromádek. Vyhrává ten, kdo odebral poslední zápalku. Napište program, který hledá optimální strategii pro jednoho hráče. Úloha 3c: Přelévání vody Je dáno N nádob, jejich objem, počáteční naplnění a koncové naplnění. Vytvořte program, který najde nejkratší posloupnost přelití vedoucí z počátečního stavu do koncového stavu. Úloha 3d: Přelévání vody se zdrojem a kanálem dtto, ale k dispozici je navíc nevyčerpatelný zdroj vody a nepřeplnitelný kanál. Úloha 3e: Lloydova 15 Ve čtverci N*N je N*N-1 kostiček a jedno volné pole. Vytvořte program, který složí kostičky tak, aby byly uspořádané. Uspořádání vhodně zvolte. Úloha 3f: Vážení Je dáno N identických předmětů. Nejvýše jeden z těchto předmětů je vadný, což se pozná podle jeho menší, resp. větší, hmotnosti (nevíte, která varianta platí). Napište program, který pro dané N zjistí nejmenší počet vážení na rovnoramenných vahách tak, aby se zjistilo, který předmět je vadný a zda je těžší nebo lehčí než ostatní. Program také vrátí doporučený postup vážení.

Úloha 3g: Zebra Napište program, který je schopen řešit úlohy typu Zebra (např. jsou čtyři domy, v každém bydlí jeden člověk mající nějaké zaměstnání a auto a jsou dány podmínky typu "doktor jezdí v mercedesu" apod.; najděte příslušné rozložení obyvatel domu). Úloha 3h: Mastermind (Logik) Napište program, který řeší hru Mastermind (počet políček a barev je vstupním parametrem) sofistikovaným způsobem, tj. ne prohledáváním všech alternativ. K dispozici by měly být dvě varianty programu; jedna umožní zadávat ohodnocení zvenku (ručně), druhá ohodnocuje automaticky podle zadaného vzoru. Úloha 3i: Ortogonální latinské čtverce Latinský čtverec řádu n obsahuje čísla 1 až n, každé n krát, rozmístěné tak, že v žádném sloupci ani řádku se žádné číslo nevyskytuje dvakrát. Ortogonální latinský čtverec obsahuje dvojice čísel <i, j>, 1=<i, j<=n, každou jedenkrát, tak, že v první i druhé složce tvoří latinský čtverec. Naprogramujte generování ortogonálního latinského čtverce daného řádu tak, aby se co nejdříve vyloučily nevyhovující možnosti (tj. ne jednoduchý backtracking, ale například dopředná kontrola). Úloha 3j: Obecné hledání optimální (herní) strategie Je dána hra dvou hráčů (při hře se střídají), která je definována procedurami mozny_tah, vitezna_pozice apod. Napište program, který hraje optimální hru za jednoho z hráčů. 4. Rozvrhování a plánování Úloha 4a: Letiště Je dána množina typu letadel a pro každý typ letadla je dán seznam stojánek, u kterých může stát. Na každé stojánce může v daný čas stát pouze jedno letadlo, s výjimkou stojánky "volná plocha", na které může stát libovolně mnoho letadel (existují ale letadla, která nemohou stát na volné ploše např. Concorde). Dále je dán letový plán, tj. seznam letadel s určením jejich typu, doby příletu a odletu. Napište program, který rozvrhne letadla na jednotlivé stojánky tak, aby co nejvíce letadel bylo obhospodařeno stojánkami (tj. ne na volné ploše). Letiště je definováno množinou všech stojánek. Úloha 4b: Alokace pultu (odbavovací přepážky) na letišti Odbavovací přepážky na letišti jsou popsány jako množina pultů, které jsou po několika sdruženy do "ostrovů". Dále je dán letový řád, kde je u každého letu zadán čas odbavení (interval od-do) a počet pultů, které jsou potřeba. Napište program, který provede rozmístění pultů pro lety tak, že všechny pulty daného letu se nacházejí ve stejném ostrově. Úloha 4c: Nemocnice Je dána množina sester, každá sestra má přiřazenu množinu činnosti, které může vykonávat (kvalifikaci). Dále je dán rozvrh požadavků na činnosti v daném časovém období. Napište program, který vytvoří rozvrh pro konkrétní sestry tak, aby požadavky byly naplněny a přitom žádná sestra nesloužila déle jak tři směny za sebou.

Úloha 4d: Výrobní podnik Je dána množina strojů a množina produktů. Každému produktu je přiřazena množina strojů a doba, za kterou daný stroj produkt vyrobí. Dále je dána množina preferenci říkajících, jaký produkt musí být vyroben před jiným produktem. Napište program, který naplánuje výrobu tak, aby trvala co nejkratší dobu. Úloha 4e: Reklamy Je dána sada reklam a u každé reklamy je zadán interval, ve kterém musí být vysílána. Spojitě za sebou smi byt promítnuto jen M reklam a mezi reklamními bloky musí být minimálně N volných časových jednotek. Napište program, který provede rozvržení reklam. Úloha 4f: Obchodní cestující Je dán graf, ve kterém vrcholy představují města a hrany jsou ohodnoceny časem nutným pro cestu mezi dvěma městy. Každému městu/vrcholu je přiřazena dvojice: délka jednání/obsluhy a interval, ve kterém musí jednání/obsluha proběhnout. Vytvořte program, který najde cestu obchodního cestujícího začínající a končící v daném městě tak, že se zúčastní všech jednání. 5. Omezující podmínky Úloha 5a: Řešení aritmetických podmínek Je dána množina proměnných a jejich domén ve tvaru a::[1, 5..10] (definujte příslušné operátory). Dále je dán seznam lineárních aritmetických podmínek s rovnostmi (=) a nerovnostmi (\=), např. a+2*b = c. Vytvořte program, který nejprve zredukuje domény proměnných propagací přes podmínky (např. a::[1..5], b::[1..5], a+1=b přejde na a::[1..4], b::[2..5]) a následně najde řešení podmínek, tj. omezí všechny domény na jeden prvek (další řešení metoda vydá backtrackingem). Úloha 5b: Řešení aritmetických podmínek 2 (algebrogramy) Je dána množina proměnných a jejich domén ve tvaru a::[1, 5..10] (definujte příslušné operátory). Dále je dán seznam aritmetických podmínek s rovnostmi (=) a operacemi +, -, *, např. a+a*b = c, a podmínky ve tvaru alldiff([a,b,c]) zaručující různost proměnných. Vytvořte program, který nejprve zredukuje domény proměnných propagací přes podmínky (např. a::[1..5], b::[1..5], a+1=b přejde na a::[1..4], b::[2..5]) a následně najde řešení podmínek, tj. omezí všechny domény na jeden prvek (další řešení metoda vydá backtrackingem). Úloha 5c: Obecné řešení podmínek Je dána množina proměnných a jejich domén (např. jako v předchozím příkladu). Dále buď dán seznam podmínek ve tvaru constr(seznampromennych,reductor), kde Reductor je název predikátu sloužícího pro redukci domén proměnných při změně domény některé proměnné ze SeznamuPromennych. Každý Reductor má dva argumenty, první je seznam vstupních domén proměnných (v daném pořadí) a druhý (ten se počítá) je seznam redukovaných domén (mohou byt i prázdné). Napište program, který nejprve maximálně zredukuje domény proměnných pomocí reduktoru a potom najde řešení podmínek, tj. omezí všechny domény na jeden prvek, případně zjistí, že podmínky nelze vyřešit. Pro vyzkoušení navrhněte vlastní reduktory.

Úloha 5d: Binarizace podmínek Je dána množina proměnných a jejich konečných domén (např. jako v předchozích příkladech). Dále je dán seznam podmínek ve tvaru constr(seznampromennych,podminka), kde Podminka je predikát, který testuje, zda je podmínka splněna při daných hodnotách proměnných, např. constr([x,y],'=') používá test x a = y b (x a je konkrétní hodnota proměnné x, y b je konkrétní hodnota y). Navrhněte program, který danou sadu podmínek převede na ekvivalentní seznam binárních podmínek. Úloha 5e: Kompilace podmínek Je dána sada podmínek ve tvaru constr(seznampromennych,popiszavislosti), kde PopisZavislosti je seznam trojic: název převodní funkce, vstupní proměnné, výstupní proměnné. Převodní funkce má dva argumenty, první argument je vstupní a obsahuje seznam hodnot vstupních proměnných, druhý argument je výstupní (je počítán) a obsahuje seznam hodnot výstupních proměnných (např.: constr([a,b,c],[[plus,[a,b],[c]],[minus,[c,a],[b]],[minus,[c,b],[a]]]) je zachycením podmínky a+b = c). Vytvořte program, který jako vstup dostane seznam podmínek a seznam vstupních proměnných a jako výstup vydá prologovský cíl skládající se z volání převodních funkcí, který řeší danou soustavu podmínek. Úloha 5f: Řešení lineárních podmínek eliminací Je dána množina proměnných a množina lineárních rovností a nerovností nad těmito proměnnými. Napište program, který řeší podmínky postupnou eliminací proměnných (podobně jako při symbolickém řešení soustav rovnic a nerovnic pomocí Gaussovy a Fourierovy eliminace). 6. Ostatní Úloha 6a: Přepisovací pravidla Je dána sada přepisovacích pravidel tvaru Vzor => Prepis Straz a Vzor => Pridej Straz, kde Vzor a Prepis jsou seznamy termu a Straz je prologovský cíl, který může případně chybět (př.: [X <= Y, Y <= Z] => [X <= Z] nebo [X <= X] <=> [] ). Interpretace pravidel je následující: je-li vzor nalezen ve vstupním seznamu predikátů a je-li splněna Straz, potom a) v případě <=> je vzor nahrazen seznamem Prepis b) v případě => je přidán seznam Pridej. Napište program, který převede seznam termů na redukovaný seznam termů aplikací všech možných přepisovacích pravidel. Úloha 6b: Analýza výrazů s operátory Vstupem programu je seznam definic operátorů ve tvaru op(priorita,asoc,nazev) a seznam tokenů (atomy, čísla a závorky). Analyzujte posloupnost tokenů podle operátorů a převeďte ji do struktury prologovského termu. Např.:?-analyzuj([op(4,yfx,plus),op(2,yfx,times)],[a,plus,b,times,c],X). vrací: X = plus(a,times(b,c)).

Úloha 6c: Splnitelnost logického výrazu Je dán logický výraz se spojkami and, or, not, xor, impl, equiv (definujte pomocí operátorů) obsahující logické konstanty true, false a proměnné (reprezentované atomy). Vytvořte program, který rozhodne, zda je zadaný výraz pravdivý, resp. splnitelný, případně vydá nutné ohodnoceni proměnných tak, aby byl výraz splněn. Např.:?-sat((x or not x) and y, R). vrací R=[y/true]