Základy algoritmizace 4. Problémy, algoritmy, data
|
|
- Václav Doležal
- před 8 lety
- Počet zobrazení:
Transkript
1 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 1 Základy algoritmizace 4. Problémy, algoritmy, data doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
2 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 2 Základy algoritmizace Dnes: Řešení problému a algoritmus Rozklad problému na podproblémy Ukládání dat pole
3 Výpočet největšího společného dělitele Úloha Najděte největší společný dělitele přirozených čísel x a y. Řešení Vstup: dvě přirozená čísla x a y Výstup: přirozené číslo d největší společný dělitel x a y Základní varianta: def getgreatestcommondivisor(x, y): if (x<y) : d = x else: d = y while ((x % d!= 0) or (y % d!= 0)): d = d - 1 return d Pro ( , ) iterací cyklu while Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 3
4 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 4 Výpočet největšího společného dělitele Místo výběru menšího z čísel x a y vnoříme do těla hlavního cyklu dva cykly zmenšující hodnoty aktuálních hodnot x a y def getgreatestcommondivisorloops(x, y): while (x!= y): while (x>y): x -= y while (y>x): y -=x return x Pro ( , ) iterací vnitřních cyklů while Vnitřní cykly počítají nenulový zbytek po dělení většího čísla menším
5 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 5 Výpočet největšího společného dělitele Vnitřní cykly můžeme nahradit přímým výpočtem zbytku po dělení def getgreatestcommondivisoreuclid(x, y): remainder = x % y while (remainder!= 0): x = y y = remainder remainder = x % y return y Pro ( , ) 4 iterace cyklu while Euklidův algoritmus Určíme zbytek po dělení daných čísel Zbytkem dělíme dělitele a určíme nový zbytek, až dosáhneme nulového zbytku Poslední nenulový zbytek je největší společný dělitel
6 Jak najít správný algoritmus? Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 6
7 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 7 Rozklad problému na podproblémy Postupný návrh programu rozkladem na podproblémy Zadaný problém rozložíme na podproblémy Pro řešení podproblémů zavedeme abstraktní příkazy S abstraktními příkazy sestavíme hrubé řešení Abstraktní příkazy realizujeme jako funkce Příklad hra NIM První počítačová hra (1951) Hra dvou hráčů v odebírání herních kamenů (nebo zápalek)
8 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 8
9 Hra NIM Pravidla Hráč zadá počet herních kamenů Pak se střídá se strojem v odebírání Lze odebrat 1, 2, nebo 3 kameny Prohraje ten, kdo odebere poslední herní kámen Dílčí problémy Zadání počtu kamenů Odebrání kamenů hráčem Odebrání kamenů strojem Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 9
10 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 10 Příklad průběhu hry Zadej počet kamenů (15 až 35): 18 Stav hry Počet kamenů ve hře Kdo je na tahu počítač (P) nebo hráč (H) Průběh 1. Počet kamenů 18; Kolik odeberete? 1 (H) 2. Počet kamenů 17; Odebírám 1 (P) 3. Počet kamenů 16; Kolik odeberete? 3 (H) 4. Počet kamenů 13; Odebírám 1 (P) 5. Počet kamenů 12; Kolik odeberete? 3 (H) 6. Počet kamenů 11; Odebírám 1 (P) 7. Počet kamenů 8; Kolik odeberete? 3 (H) 8. Počet kamenů 5; Odebírám 1 (P) 9. Počet kamenů 4; Kolik odeberete? 3 (H) 10. Počet kamenů 1; Odebírám 1 (P) Hráč vyhrál, počítač odebral poslední kámen
11 NIM pravidla pro odebírání Počet kamenů nevýhodných pro protihráče je 1, 5, 9, Obecně 4n + 1, kde n je celé nezáporné číslo Stroj musí z počtu kamenů K odebrat x kamenů, aby platilo K x == 4n + 1 x == (K 1) 4n, tj. hledáme zbytek po dělení 4 x = (K 1) % 4 Je-li x == 0, je okamžitý počet kamenů pro stroj nevýhodný a bude-li protihráč postupovat správně, stroj prohraje Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 11
12 NIM hrubý návrh řešení Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 12 numberofstones = getnumberofstones(limits) machine = True while (numberofstones): if machine: machineturn() else: humanturn() machine = not machine if machine: print("machine wins!") else: print("human wins!") Podproblémy getnumberofstones, machineturn a humanturn reprezentují abstraktní příkazy, které implementujeme jako funkce vracející počet kamenů k odebrání
13 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 13 NIM podrobnější návrh Funkce na zadání počtu kamenů v rámci limitu Ošetříme vstup na rozsah hodnot Možno ošetřit proti špatnému zadání Zkuste si sami def getnumberofstones(min, max): n = int(input("enter number of stones in range [" + str(min)+ "," + str(max) + "]: ")) if n < min: return min if n > max: return max return n
14 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 14 NIM podrobnější návrh Funkce pro tah hráče Akceptujeme jen validní tahy 1, 2 nebo 3 kameny Vstupy plně ošetřeny def humanturn(n): r = "" while (r!= "1" and r!= "2" and r!= "3"): r = input("number of stones is " + str(n) + ". How many stones you will take: ") return int(r)
15 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 15 NIM podrobnější návrh Funkce pro tah stroje Pomocí výpočtu optimální strategie def machineturn(n): r = (n-1) % 4 if r == 0: r = 1 print("number of stones is " + str(n) + ". I take: " + str(r)) return r
16 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 16 NIM podrobnější návrh Finální program Vyzkoušejte si naprogramovat a otestovat pro případ, kdy začíná počítač nebo člověk Kdo vyhrává při aplikování optimální strategie? MIN_S = 15 MAX_S = 35 machine = True numberofstones = getnumberofstones(min_s, MAX_S) while (numberofstones > 0): if machine: numberofstones -= machineturn(numberofstones) else: numberofstones -= humanturn(numberofstones) machine = not machine if machine: print("machine wins!") else: print("human wins!")
17 Když proměnná nestačí Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 17
18 Stav hry U hry NIM je stav udržován v jedné proměnné Varianta multiple-heap musí udržovat více stavových proměnných heap1 = 10 heap2 = 20 heap3 = 30 Co když máme tisíc hromádek? Použijeme pole Vícerozměrná data? Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 18
19 Pole Vícerozměrná data pole polí Používáme seznamy, či tuple Matice, šachovnice, Příklad reprezentace piškvorky (tic-tac-toe) Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 19
20 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 20 Tic Tac Toe Jak se liší od hry NIM? Reprezentace dat Složitější výpočet strategie Test konce hry Test přípustnosti tahu sizeofgame = getsizeofgame(limits) machine = True while (not gamefinished()): if machine: machineturn() else: humanturn() machine = not machine if machine: print("machine wins!") else: print("human wins!")
21 Tic Tac Toe Příklad generování hry def getgame(): n = int(input("enter size of the game (minimum 3): ")) if n < 3: n = 3 game = [] for x in range(n): row = [] for y in range(n): row.append("-") game.append(row) return game Nebo def getgame(): n = int(input("enter size of the game (minimum 3): ")) if n < 3: n = 3 return [["-" for x in range(n)] for x in range(n)] Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 21
22 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 22 Tic Tac Toe Příklad vykreslování hry def printgame(game): for row in game: print(" ", end = '') for char in row: print(char+" ", end = '') print()
23 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 23 Tic Tac Toe Tah hráče def humanturn(game, char): x,y = -1, -1 while (not isallowed(game, x, y)): printgame(game) x = int(input("enter X position of your move: ")) y = int(input("enter Y position of your move: ")) game[x][y] = char
24 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 24 Tic Tac Toe Tah počítače Kde je AI???? Zacyklí se? import random def machineturn(game, char): x,y = -1, -1 while (not isallowed(game, x, y)): x = random.randint(0,len(game)-1) y = random.randint(0,len(game)-1) game[x][y] = char Udělejte si v klidu doma Statistika vs. pseudo-náhodná čísla
25 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 25 Tic Tac Toe Příklad testu tahu def isallowed(game, x, y): if x<0 or x >= len(game): return False if y<0 or y >= len(game): return False return game[x][y] == "-" Příklad testu remízy def boardfull(game): for row in game: for cell in row: if cell == "-": return False return True
26 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 26 Tic Tac Toe Test konce hry def gamefinished(game): for x in range(len(game)): for y in range(len(game)): char = game[x][y] if char == "-": continue if (y < len(game)-2 and game[x][y+1] == char and game[x][y+2]) == char: return char if (x< len(game)-2 and game[x+1][y] == char and game[x+2][y] == char): return char # add other two directions
27 Tic Tac Toe A celá hra. machine = True game = getgame() while True: if boardfull(game): print("no winner!") break; winner = gamefinished(game) if not winner: if machine: machineturn(game,"o") else: humanturn(game, "X") machine = not machine else: if winner == "O": print("machine wins!") else: print("human wins!") break Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 27
28 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 28 Tic Tac Toe Hra funguje? Nedostatky: Test pouze 3 kamenů Nekontrolujeme diagonály Slabá AI Není někde chyba? Jak to budeme testovat? Dodělejte/opravte si sami ;-) Měli jsme dobrou specifikaci hry? Je dobré si pořádně promyslet co program má dělat a za jakých podmínek
29 Práce s polem Seznamy a řetězce druhá přednáška Mohou být vnořené Tvoření pomocí append nebo zřetězení Přístup přes indexy array = [0 for x in range(n)] Možno modifikovat obsah Iterace pomocí cyklu for nebo while for x in array: dosomething(x) i = 0 while i<len(array): dosomething(array[i]) i+=1 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 29
30 Jiří Vokřínek, 2015 B6B36ZAL - Přednáška 4 30 Základy algoritmizace Dnes: Řešení problému a algoritmus Příklad výpočet společného dělitele Rozklad problému na podproblémy Příklad hra NIM Ukládání dat pole Příklad hra Tic Tac Toe Příště vyhledávání a řazení
Funkce a procedury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 A0B36PR1 Programování 1
Funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 5: Funkce a procedury
Část 1 Funkce, lokální proměnné a přidělování paměti. Funkce a procedury. Část 2 Cykly a řízení jejich průchodu. Část 3 Příklady
Část 1 Funkce, lokální proměnné a přidělování paměti Funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 A0B36PR1 Programování 1 Jména
Rozklad problému na podproblémy
Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních
5. přednáška - Rozklad problému na podproblémy
5. přednáška - Rozklad problému na podproblémy Obsah přednášky: Rozklad problému na podproblémy. Rekurze. Algoritmizace (Y36ALG), Šumperk - 5. přednáška 1 Rozklad problému na podproblémy Postupný návrh
8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 8 1 Základy algoritmizace 8. Rekurze doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří Vokřínek,
Rozklad problému na podproblémy, rekurze
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Rozklad problému
5. Vyhledávání a řazení 1
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 5 1 Základy algoritmizace 5. Vyhledávání a řazení 1 doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Rozklad problému na podproblémy, rekurze
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Rozklad problému na podproblémy, rekurze BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních
Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické
Kámen-nůžky-papír Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické Studijní program: Otevřená informatika 2018-10-09 08/10/18 než začneme
Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické
Kámen-nůžky-papír Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické Studijní program: Otevřená informatika 2017-10-10 18/10/17 než začneme
3. Řízení běhu programu
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 3 1 Základy algoritmizace 3. Řízení běhu programu doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
Funkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
10. Složitost a výkon
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 10 1 Základy algoritmizace 10. Složitost a výkon doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří
Dekompozice problému, rekurze
Dekompozice problému, rekurze BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České
Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
Chyby a výjimky. Chyba. Odkud se chyby berou? Kdo chyby opravuje? Co můžete dělat jako programátor? Dvě hlavní metody práce s chybami.
Chyby a výjimky Petr Pošík Katedra kybernetiky, FEL ČVUT v Praze OI, B4B33RPH Řešení problémů a hry, 2016 Chyba Stav programu (podmínky), který mu brání v dosažení požadovaného výsledku. Odkud se chyby
UPPAAL příklady. Jiří Vyskočil 2010
UPPAAL příklady Jiří Vyskočil 2010 Hra NIM Někdy se také označuje jako odebírání zápalek (existuje velké množství variant této hry). Hra dvou hráčů Na začátku si oba hráči stanoví počet zápalek, se kterými
3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti
Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace
Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
Rekurzivní algoritmy
Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS
11. Přehled prog. jazyků
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu
Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro
Návrh aplikace. Založeno na 9. kapitole knihy J. M. Zelle: Python Programming: An Introduction to Computer Science IB111
Návrh aplikace Založeno na 9. kapitole knihy J. M. Zelle: Python Programming: An Introduction to Computer Science IB111 Simulace hry volejbal Chceme vytvořit simulátor hry volejbal Ne grafický :-) Jde
SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů
SPJA, cvičení 1 ipython, python, skripty základy syntaxe: základní datové typy, řetězce podmínky: if-elif-else, vyhodnocení logických výrazů cykly: for, while kolekce: seznam, n-tice, slovník funkce, list
Programování v Pythonu
ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního
Teorie her a ekonomické rozhodování. 4. Hry v rozvinutém tvaru
Teorie her a ekonomické rozhodování 4. Hry v rozvinutém tvaru 4.1 Hry v rozvinutém tvaru Hra v normálním tvaru hráči provedou jediné rozhodnutí a to všichni najednou v rozvinutém tvaru řada po sobě následujících
Algoritmizace a programování
Algoritmizace a programování Jazyk C funkce České vysoké učení technické Fakulta elektrotechnická A8B14ADP Algoritmizace a programovaní -Jazyk C -Ver.1.00 funkce J. Zděnek 20151 Funkce Funkce - černá (programová)
Řídící struktury, if, while, switch
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Řídící struktury, if, while, switch BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních
Programy a algoritmy pracující s čísly. IB111 Úvod do programování
Programy a algoritmy pracující s čísly IB111 Úvod do programování 2016 1 / 56 Dnešní přednáška práce s čísly v Pythonu ukázky programů, ilustrace použití základních konstrukcí ukázky jednoduchých algoritmů,
Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python
Programy a algoritmy pracující s čísly IB111 Úvod do programování skrze Python 2013 1 / 60 Připomenutí z minule proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady: faktoriál, binární
Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program
Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup
Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
Řídící struktury, if, while, switch
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Řídící struktury,
Třídění a vyhledávání Searching and sorting
Třídění a vyhledávání Searching and sorting Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 33 Vyhledávání Třídění Třídící algoritmy 2 / 33 Vyhledávání Searching Mějme posloupnost (pole)
Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.
Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu
Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr
Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)
2. Řešení úloh hraní her Hraní her (Teorie a algoritmy hraní her)
Hraní her (Teorie a algoritmy hraní her) 4. 3. 2015 2-1 Hraní her pro dva a více hráčů Počítač je při hraní jakékoli hry: silný v komplikovaných situacích s množstvím kombinací, má obrovskou znalost zahájení
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
KTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
(a kryptografické odbočky) IB111 Úvod do programování skrze Python
Řetězce a seznamy (a kryptografické odbočky) IB111 Úvod do programování skrze Python 2013 1 / 50 Rozcvička: šifry 1 C S A R B V E K T E O A 2 C S B U J T M B W B 3 A J L B N O C E 2 / 50 Transpoziční šifry
NPRG030 Programování I, 2017/18 1 / :22:16
NPRG030 Programování I, 2017/18 1 / 26 20. 10. 2017 11:22:16 Ordinální typy standardní: integer, char, boolean Vlastnosti ordinálních typů: 1. hodnot je konečný počet a hodnoty jsou uspořádány 2. ke každé
Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python
Programy a algoritmy pracující s čísly IB111 Úvod do programování skrze Python 2015 1 / 66 Rozcvička 1 2 + 2 2 + 3 2 + + 99 2 + 100 2 2 / 66 Připomenutí z minule proměnné, výrazy, operace řízení výpočtu:
Algoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
Algoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
Hraní her. (Teorie a algoritmy hraní her) Řešení úloh hraní her. Václav Matoušek /
Hraní her (Teorie a algoritmy hraní her) 8. 3. 2019 2-1 Hraní her pro dva a více hráčů Počítač je při hraní jakékoli hry: silný v komplikovaných situacích s množstvím kombinací, má obrovskou znalost zahájení
IB111 Úvod do programování skrze Python Přednáška 7
. IB111 Úvod do programování skrze Python Přednáška 7. Datové typy Nikola Beneš 30. říjen 2015 IB111 přednáška 7: datové typy 30. říjen 2015 1 / 36 Práce s daty jaká data budu zpracovávat? jaká data budu
Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Rekurze doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Rekurze 161 / 344 Osnova přednášky
B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]
Funkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8] count=0 for i in range(1,len(data)):
Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)
Cykly Základy programování 1 Martin Kauer (Tomáš Kühr) Z minula Chary můžete používat jako znaky ale i jako čísla 0-255. Jakou formu vybrat záleží na konkrétní aplikaci. Když pracujete se znaky, používejte
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
Rekurze. IB111 Úvod do programování skrze Python
Rekurze IB111 Úvod do programování skrze Python 2015 1 / 64 XKCD: Tabletop Roleplaying https://xkcd.com/244/ 2 / 64 To iterate is human, to recurse divine. (L. Peter Deutsch) 3 / 64 Rekurze použití funkce
Abstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
Spojový seznam. Jan Kybic.
Spojový seznam Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 25 Složitost operací u lineárních datových struktur v Pythonu operace zásob. fronta pole pole řetězce přidej na začátek
Rekurze a rychlé třídění
Rekurze a rychlé třídění Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 54 Rekurze Rychlé třídění 2 / 54 Rekurze Recursion Rekurze = odkaz na sama sebe, definice za pomoci sebe
6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
Programování: základní konstrukce. IB111 Úvod do programování
Programování: základní konstrukce IB111 Úvod do programování 2016 Rozcvička 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10
Rekurze. Jan Hnilica Počítačové modelování 12
Rekurze Jan Hnilica Počítačové modelování 12 1 Rekurzivní charakter úlohy Výpočet faktoriálu faktoriál : n! = n (n - 1) (n - 2)... 2 1 (0! je definován jako 1) můžeme si všimnout, že výpočet n! obsahuje
ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení
ALG Radix sort (přihrádkové řazení) Counting sort Přehled asymptotických rychlostí jednotlivých řazení Ilustrační experiment řazení Radix sort Neseřazeno Řaď podle. znaku Cbb DaD adb DCa CCC add DDb adc
Da D to t v o é v ty t py IB111: Datové typy
Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité
Algoritmus pro generování normálních magických čtverců
1.1 Úvod Algoritmus pro generování normálních magických čtverců Naprogramoval jsem v Matlabu funkci, která dokáže vypočítat magický čtverec libovolného přípustného rozměru. Za pomocí tří algoritmů, které
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady
Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -
Větvení a cykly. Úvod do programování 1 Tomáš Kühr
Větvení a cykly Úvod do programování 1 Tomáš Kühr Konstrukce if u Příkazy se provádějí pouze při splnění dané podmínky u Podmínka = jakýkoli logický výraz = cokoli celočíselného u Volitelně i příkazy prováděné
Algoritmizace a programování
Algoritmizace a programování Procedurální programování Rekurze Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Procedurální programování - zásady Postupný návrh programu
A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk
A7B38UOS Úvod do operačních systémů 6. Cvičení Příkazy sed a awk sed sed [přepínače] 'příkaz' [soubory] sed [přepínače] -f skript [soubory] Stream editor - edituje neinteraktivně jeden nebo více souborů.
Optimalizace & soft omezení: algoritmy
Optimalizace & soft omezení: algoritmy Soft propagace Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných
Prioritní fronta, halda
Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2014 1 / 48 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý
2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5
Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou
Implementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
Lekce 01 Úvod do algoritmizace
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava
Vyhledávání v textu doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 9. března 209 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 402
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1
1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,
Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague
1 / 23 Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 2 / 23 biologové často potřebují najít často se opakující sekvence DNA tyto sekvence bývají relativně krátké,
Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla
Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla Použití: - náhodnost při rozhodování např. ve hrách (výběr z více možných stejně dobrých tahů v dané pozici, házecí kostka) - generování
Rekurze. Pavel Töpfer, 2017 Programování 1-8 1
Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo
Abstrakt. V příspěvku se budeme zabývat kombinatorickými hrami s úplnou informací
Teorie her Viki Němeček Abstrakt. V příspěvku se budeme zabývat kombinatorickými hrami s úplnou informací pro dva hráče. Vysvětlíme si základní pojmy, zahrajeme si několik jednodušších her a naučíme se
(a kryptografické odbočky) IB111 Úvod do programování skrze Python
Řetězce a seznamy (a kryptografické odbočky) IB111 Úvod do programování skrze Python 2014 1 / 56 Rozcvička: šifry 1 C S A R B V E K T E O A 2 A J L B N O C E 3 C S B U J T M B W B 2 / 56 Transpoziční šifry
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Řetězce a řídicí struktury
Řetězce a řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 3: Řetězce a řídicí
IB111 Úvod do programování skrze Python Přednáška 6
IB111 Úvod do programování skrze Python Přednáška 6 Datové typy Nikola Beneš 26. říjen 2016 IB111 přednáška 6: datové typy 26. říjen 2016 1 / 36 Práce s daty jaká data budu zpracovávat? jaká data budu
Diskrétní matematika. DiM /01, zimní semestr 2017/2018
Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2017/2018 O tomto souboru Tento soubor je zamýšlen především jako pomůcka
Algoritmus pro hledání nejkratší cesty orientovaným grafem
1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval
Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.
1. ŘEŠENÉ PŘÍKLADY 1.2 PŘÍKLAD 24-2-8-2_DOKONALÉ ČÍSLO Napište program, který má na vstupu přirozené číslo N > 1. Výstupem je informace o tom, zda toto číslo je/není dokonalé. (Dokonalé číslo je takové
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
Gymnázium, Praha 6, Arabská 16. předmět Programování, vyučující Tomáš Obdržálek Lodě Dokumentace ročníkového projektu Martin Karlík, 1E 17.5.
Gymnázium, Praha 6, Arabská 16 předmět Programování, vyučující Tomáš Obdržálek Lodě Dokumentace ročníkového projektu Martin Karlík, 1E 17.5.2014 Anotace In this school year we had to chose some year project.
Paměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
Operační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední