Klasifikace textu do kategorií spam/ne-spam

Rozměr: px
Začít zobrazení ze stránky:

Download "Klasifikace textu do kategorií spam/ne-spam"

Transkript

1 Západočeská univerzita v Plzni Fakulta aplikovaných věd Klasifikace textu do kategorií spam/ne-spam KIV/PC 2. ledna 2015 Marek Zimmermann A12B0215P zimmma@students.zcu.cz

2 Obsah 1 Zadání 2 2 Analýza úlohy Klasifikační algoritmy Datové struktury Popis implementace Dictionary Item Fungování programu Uživatelská příručka Překlad programu Spuštění programu Závěr 12

3 1 Zadání Naprogramujte v ANSI C přenositelnou konzolovou aplikaci, která bude rozhodovat, zda úsek textu (textový soubor) je nebo není spam. Aplikace bude přijímat z příkazové řádky sedm parametrů: První dva parametry budou vzor jména a počet trénovacích souborů obsahujících nevyžádané zprávy (tzv. spam). Třetí a čtvrtý parametr budou vzor jména a počet trénovacích souborů obsahujících vyžádané zprávy (tzv. ham). Pátý a šestý parametr budou vzor jména a počet testovacích souborů. Sedmý parametr představuje jméno výstupního textového souboru, který bude po dokončení činnosti Vaší aplikace obsahovat výsledky klasifikace testovacích souborů. Program se bude spouštět příkazem: classify.exe spam spam-cnt ham ham-cnt test test-cnt out-file Symboly spam, ham a test představují vzory jména vstupních souborů. Symboly spam-cnt, ham-cnt a test-cnt představují počty vstupních souborů. Vstupní soubory mají následující pojmenování: vzorn, kde N je celé číslo z intervalu 1; N. Přípona všech vstupních souborů je.txt, přípona není součástí vzoru. Váš program tedy může být během testování spuštěn například takto:...\>classify.exe spam 10 ham 20 test 50 result.txt Výsledkem činnosti programu bude textový soubor, který bude obsahovat seznam testovaných souborů a jejich klasifikaci. Pokud nebude na příkazové řádce uvedeno právě sedm argumentů, vypište chybové hlášení a stručný návod k použití programu v angličtině podle běžných zvyklostí (viz např. ukázková semestrální práce na webu předmětu Programování v jazyce C). Vstupem programu jsou pouze argumenty na příkazové řádce interakce s uživatelem pomocí klávesnice či myši v průběhu práce programu se neočekává. Hotovou práci odevzdejte v jediném archivu typu ZIP prostřednictvím automatického odevzdávacího a validačního systému. Archiv necht obsahuje všechny zdrojové soubory potřebné k přeložení programu, makefile pro Windows i Linux (pro překlad v Linuxu připravte soubor pojmenovaný makefile a pro Windows makefile.win) a dokumentaci ve formátu PDF vytvořenou v typografickém systému TEX, resp. L A TEX. Bude-li některá z částí chybět, kontrolní skript Vaši práci odmítne 1. 1 Úplné znění zadání dostupné na webové adrese předmětu KIV/PC: 2

4 2 Analýza úlohy Cílem programu je klasifikovat danou množinu e mailů. Klasifikovat budeme do 2 kategorií: ham (vyžádaná pošta) nebo spam (nevyžádaná pošta). Požadovaná přesnost klasifikace je alespoň 90% 2. Při analýze úlohy pak bude důležitá volba klasifikačního algoritmu a struktury, kterou budeme využívat pro trénování a posléze klasifikaci. 2.1 Klasifikační algoritmy Pro klasifikaci e mailů lze využít několika klasifikátorů: Support Vector Machine, naivní Bayesův klasifikátor, klasifikátor Maximální entropie a další. Support Vector Machines (SVM) je metoda strojového učení, která v úloze klasifikace hledá nadrovinu, která v prostoru příznaků rozděluje data od sebe tak, aby minimální vzdálenost bodů z n množin byla maximální (viz obrázek 1). Toto platí v případě, kdy jsou od sebe množiny lineárně separovatelné. Pokud tomu tak není, využívá se tzv. jádrová funkce (kernel function, nebo také kernel transformation), která převede lineárně neseparovatelnou úlohu na lineárně separovatelnou pomocí projekcí do vyšší dimenze, než jsou vstupní data [1]). Obrázek 1: Binární SVM klasifikátor, Zdroj: ml/introduction_to_svm/introduction_to_svm.html Naivní Bayesův klasifikátor (NBC) je pravděpodobnostní klasifikátor, založený na aplikaci tzv. Bayesovy věty a předpokladu nezávislosti mezi danými příznaky (což v realitě většinou neplatí proto naivní ). Mezi jeho klady patří schopnost inkrementálního učení (je možné ho po testování dotrénovat pomocí nových dat) a také je vhodný pro klasifikaci velkého souboru dat díky předpokladu nezávislosti mezi danými příznaky tato vlastnost totiž zjednodušuje vzorec potřebný pro výpočet pravděpodobnosti. Jeho klasifikační úspěšnost je výrazně závislá na kvalitě trénovací množiny. Grafická ukázka klasifikace bodu podle jeho polohy je zachycena v obrázku 2. Z těchto dvou algoritmů, které patří mezi nejpoužívanější v oblasti klasifikace e mailů, jsem se rozhodl zvolit NBC, nebot s ním lze dosáhnout požadované úspěšnosti, byl doporučen v zadání práce a přišel mi jednodušší na implementaci. 2 Tedy například ze 100 klasifikovaných dokumentů jich musí být správně klasifikováno nejméně 90. 3

5 Obrázek 2: NBC klasifikace bílého bodu na základě polohy, Zdroj: Datové struktury Pro daný klasifikátor je pak třeba navrhnout vhodnou datovou strukturu, která bude uchovávat výsledky trénování a posléze bude využita pro klasifikaci testovacích e mailů. První strukturou, která by mohla být použita, je binární vyhledávací strom (BST Binary search tree). Ten se skládá z binárního stromu, tj. orientovaného grafu s jedním bodem jakožto počátkem (tzv. kořen), z něhož lze najít cestu do jakéhokoliv vrcholu, přičemž každý vrchol má maximálně dva potomky a právě jednoho předka (pouze kořen žádného nemá). Binární vyhledávací strom se od binárního stromu liší tak, že klíče, přiřazené každému uzlu, jsou uspořádány tak, že hodnota levého podstromu uzlu je menší než hodnota uzlu a hodnota pravého podstromu je naopak vyšší než hodnota uzlu (viz obrázek 3). Obrázek 3: Ukázka jednoduchého BST, Zdroj: http: //cs.wikipedia.org/wiki/bin%c3%a1rn%c3%ad_vyhled%c3%a1vac%c3%ad_strom Druhou strukturou vhodnou k použití je hashovací tabulka (hash table). Její princip spočívá v tom, že pro data, která chceme uložit, získáme klíč pomocí tzv. hashovací funkce a data pak podle klíče uložíme. Klíč poté rovněž slouží k nalezení dat v dané tabulce. Jako struktura pro uložení tabulky se nejčastěji používá pole. Při vkládání dat může díky přiřazení stejného klíče různým datům nastat kolize, kterou lze řešit několika způsoby. Nejjednodušším řešením je tzv. zřetězení záznamů (separate chaining), kdy každá položka tabulky je seznamem prvků se stejným klíčem. Dalším způsobem pak může být otevřená adresace (nebo také otevřené rozptylování, anglicky open addressing), kde data, která by měla být umístěna na již obsazené místo, jsou umístěna na jiné volné místo, které určí zvolený algoritmus. Rozdíl je zobrazen na obrázku 4. Další strukturou, která by mohla být vhodná pro uchovávání dat, je trie. Strukturou je velmi podobná BVS, avšak vrchol zde nemusí mít nejvýše dva potomky (může jich mít tolik, kolik potřebujeme) a jako klíč se zde hojně využívají řetězce (popř. znaky z jednotlivých 4

6 Obrázek 4: Zřetězení záznamů (vlevo) a otevřená adresace (vpravo) u hashovací tabulky, Zdroj: řetězců). Všichni následníci uzlu mají společný prefix, který je shodný s řetězcem přiřazeným k danému uzlu. Kořen je asociovaný s prázdným řetězcem. Každý uzel si s sebou nese informaci, zda je nebo není koncovým písmenem nějakého slova. Trie bývá velmi často používána pro uložení slovníků, kde vyniká kromě rychlosti i v příznivých nárocích na pamět, a to tím více, čím více je ve slovníku slov se stejným prefixem. Na obrázku 5 můžeme vidět uložení daných slov ze slovníku tak, že pro slova s celkovým součtem osmnácti znaků stačí v trie pouze jedenáct uzlů. Obrázek 5: Trie pro slova A, to, tea, ted, ten, i, in a inn, Zdroj: U námi zvolené struktury klademe důraz zejména na operace vložení a hledání prvku, nebot při trénování budeme do struktury pouze vkládat, nebo ji hledat (abychom jí upravili) a při klasifikaci již pouze hledat (pro čtení uložených informací). V tabulce 1 lze vidět, že dobré výsledky v těchto operacích by měla podávat zejména hashtable[2] a trie. V nejhorším případě má u operací vkládání a hledání BVS a hashtable složitost O(n), kde n je počet prvků ve stromu či tabulce a trie O(m), kde m je počet uzlů vedoucí k prvku (tedy počet písmen ve slově). Zde by tedy měla být vítězem trie[3]. Ze dvou vhodných kandidátů jsem se nakonec rozhodl zvolit hashovací tabulku se zřetě- 5

7 Operace BVS Hashtable Trie Hledání O(log n) O(1) O(m) Vkládání O(log n) O(n) O(m) Tabulka 1: Průměrná asymptotická složitost operací u BVS, hashtable a trie zením záznamů jakožto dobrý kompromis mezi pamět ovou a výpočetní náročností a jednoduchostí implementace. 6

8 3 Popis implementace 3.1 Dictionary Struktura Dictionary (viz zdrojový kód 1) v sobě uchovává slova ve formě hashtabulky (pole ukazatelů na strukturu Item o velikosti DICT ARRAY SIZE 3 ), počet zpracovaných slov ze spamových (spam words) a hamových (ham words) souborů včetně duplicit, počet unikátních zpracovaných slov z obou kategorií (unique words) a počet zpracovaných spamových a hamových souborů (spam files a ham files). Zdrojový kód 1: Struktura Dictionary typedef struct { Item words [ DICT ARRAY SIZE ] ; int spam words ; int ham words ; int unique words ; int s p a m f i l e s ; int h a m f i l e s ; } Dictionary ; 3.2 Item Struktura Item (viz zdrojový kód 2) uchovává dané slovo (word), informace o počtu výskytů daného slova ve spamu (spam occur) a v hamu (ham occur), hodnoty pravděpodobnosti výskytu slova v dané kategorii (spam prob a ham prob), a protože je tato struktura koncipována zároveň jako položka spojového seznamu, uchovává i ukazatel na další prvek (next). typedef struct ITEM { char word ; Zdrojový kód 2: Struktura Item int spam occur ; int ham occur ; double spam prob ; double ham prob ; } Item ; struct ITEM next ; 3 Konkrétní velikost pole popsána v sekci 5 7

9 3.3 Fungování programu Program nejprve zkontroluje vstupní parametry programu jejich správný počet (musí jich být přesně sedm) a zda je druhý, čtvrtý a šestý parametr celé číslo. V případě, že některá z kontrol selže, program vypíše chybu, nápovědu a ukončí se. Pokud kontrola proběhla v pořádku, program se pokusí alokovat místo pro slovník (strukturu Dictionary). V případě neúspěšného pokusu se zobrazí výpis chyby a program se ukončí. Pokud do této chvíle proběhlo vše v pořádku, začíná trénování. E maily jsou předzpracovány do souborů s příponou.txt tak, že jeden soubor je roven jednomu e mailu. Soubor se pak skládá ze slov oddělených mezerou. Všechna slova jsou na jedné řádce, konec řádky je tedy i koncem souboru 4. Program postupně otevře každý soubor, načte jeho obsah do bufferu a postupně z něj zpracuje každé slovo. Právě zpracovávané slovo zkusí najít ve slovníku. V případě jeho nalezení zvýší o jedna potřebné čítače. Pokud slovo nenajde, pokusí se ho vytvořit a uložit do slovníku. Pokud dojde k chybě u zpracování souboru, program vypíše chybu a její stručný popis a ukončí se. Tento postup byl zvolen, protože pokud by došlo k chybnému natrénování díky chybějícím datům, mohlo by nastat výrazné ovlivnění klasifikace testovacích souborů. Jako hashovací funkce bylo zvoleno sečtení ASCII hodnot písmen daného slova modulo velikostí slovníku. Protože program pracuje ve stylu načti, natrénuj, klasifikuj, ukonči se a nevyužívá tedy jednu z vlastností NBC (viz sekce 2) schopnost inkrementálního učení můžeme ještě před samotnou klasifikací provést malou optimalizaci. Aby program nemusel pro každé slovo opakovaně počítat hodnotu pravděpodobnosti v dané kategorii, můžeme si tyto hodnoty předem vypočítat a uložit do samotné struktury daného slova 5 (viz spam prob a ham prob v podsekci 3.2). V tuto chvíli může začít klasifikace testovacích souborů. Každý testovací soubor je otevřen, jeho obsah je načten a zpracován. Standardně by se pro výpočet pravděpodobnosti, že daný soubor patří do dané kategorie, použil vzorec 1, kde P C je pravděpodobnost výskytu dané kategorie (zpracované soubory podělené všemi soubory) a P (word i C) je pravděpodobnost výskytu slova v dané kategorii. n P S = P C P (word i C) (1) i=0 Protože by zde však došlo k tzv. podtečení (ztráta přesnosti, zde díky násobení velmi malých hodnot mezi sebou), pravděpodobnosti zlogaritmujeme a sečteme (viz vzorec 2), čímž docílíme správného výsledku, nebot malé hodnoty se zde sčítají a k podtečení tak nedojde. n P s = log (P C ) + log (P (word i C)) (2) i=0 Pravděpodobnost výskytu slova v dané kategorii se spočte dle vzorce 3, kde n i je počet výskytů slova v dané kategorii zvýšený o jedna (aby v logaritmu nebyla nula), D C je celkový počet slov zpracovaný slovníkem v dané kategorii a D U je celkový počet unikátních slov zpracovaný slovníkem. P (word i C) = n i + 1 D C + D U (3) 4 Přesněji: soubory neobsahují žádný znak pro ukončení řádky, obsahují pouze znak konce souboru. 5 Výsledky provedené optimalizace viz sekce 5 8

10 Po výpočtu pravděpodobnosti souboru v obou kategoriích se dle vyšší hodnoty jedné z nich rozhodne, zda jde o spam nebo ham. Výsledky se pak zapisují do souboru, jehož název byl zadán jako sedmý parametr při spuštění. Na každý řádek souboru je zapsán jeden výsledek ve formátu: název souboru, tabulátor, H (signalizující ham) nebo S (signalizující spam) a konec řádky. Pokud se některá z částí programu nevykoná správně a program je nucen ukončit svou činnost, kromě stručného výpisu chyby získáme i návratový kód chyby. Kódy jsou rozděleny následovně: 0 program proběhl správně (bez chyb), 1 špatně zadané nebo žádné vstupní parametry, 2 problém s alokací paměti při vytváření struktury Dictionary, 3 I/O chyba (nezdařilo se otevření souboru, zápis do souboru, soubor neexistuje...), 4 jiné problémy s alokací paměti (např. struktury Item pro nové slovo) 9

11 4 Uživatelská příručka 4.1 Překlad programu Program musí být před použitím přeložen. Pro zjednodušení jsou připraveny dva makefile soubory (makefile pro Linux a makefile.win pro Windows). Oba dva vyžadují mít na daném systému zprovozněný make a gcc překladač. V Linuxu se tohoto stavu dá docílit prostým nainstalováním balíčků make a gcc 6. Ve Windows bude potřeba nainstalovat MinGW 7 nebo CygWin a (pokud to bude nutné) přidat umístění daného programu do systémové proměnné PATH. Na Linuxu můžeme program přeložit v daném adresáři příkazem: make Pokud překlad probíhá na Windows, přeložíme program pomocí: make f m a k e f i l e. win 4.2 Spuštění programu Po překladu se ve stejném adresáři objeví soubor classify.exe. Program se pouští přes konzoli v následujícím formátu: classify.exe spam spam-cnt ham ham-cnt test test-cnt out-file Prvním parametrem je vzorové jméno trénovacích spamových souborů (např pro vzor spam může být jeden ze souborů spam3.txt ). Druhým parametrem je pak počet těchto souborů. Třetím parametrem je vzorové jméno trénovacích hamových souborů, čtvrtým pak jejich počet. Pátým je vzorové jméno souborů, které mají být klasifikovány, šestým parametrem je pak jejich počet. Posledním (sedmým) parametrem je pak název souboru, do kterého se budou zapisovat výsledky klasifikace jednotlivých testovaných souborů. Na obrázku 6 lze vidět chování při spuštění s korektními parametry. Obrázek 6: Ukázka výstupu správného běhu programu Pokud jsou vstupní parametry špatné nebo při běhu nastane chyba, program stručně vypíše kde nastala chyba a ukončí svůj běh. Pokud jsou zadány chybné parametry, program 6 Překlad otestován na gcc ve verzi na operačním systému Debian GNU/Linux 8.0 (64 bit). 7 Překlad otestován za pomocí MinGW verze na operačním systému Windows 7 Professional 64 bit. 10

12 kromě výpisu problému s parametry zobrazí i nápovědu. Pro ukázku běhu programu při chybějícím trénovacím souboru viz obrázek 7. Obrázek 7: Ukázka výstupu programu, pokud chybí testovací soubor 11

13 5 Závěr Program splnil zadání, jeho úspěšnost klasifikace byla 98 % (z dodaných 200 testovaných souborů 3 ham soubory klasifikoval jako spamy a 1 spam jako ham). Časy běhu programu na Linuxu (tabulka 2) ukazují přibližně 4 až 5 % zrychlení programu vlivem optimalizace (viz sekce 3.3) a mírné urychlování běhu při zvyšování velikosti hashovací tabulky, kromě poslední hodnoty 5000, která se téměř rovnala výsledkům u velikosti Pokud se podíváme na časy běhu programu ve Windows (tabulka 3), ukazují víceméně podobný trend, pouze hodnoty u velikosti 1500 jsou neočekávaně vysoké. Pravděpodobně se na jejich výsledcích projevily služby běžící na pozadí (a to i přes to, že každá výsledná hodnota představuje průměr z 10 měření). Bohužel, hodnoty pro porovnání běhu se stejným nastavením v Linuxu a ve Windows nejsou porovnatelné, nebot při měření běhu na Windows byl omylem zapnutý debug režim (zajišt ující detailnější výpisy běhu programu), což pravděpodobně ovlivnilo výsledný čas. Časy jsou tak vzájemně porovnatelné pouze v rámci stejného systému. Dle mého názoru však nebylo ovlivnění natolik velké, aby se nedalo konstatovat, že program běžel rychleji na Linuxu. Čas běhu programu v závislosti na optimalizaci a velikosti hash tabulky Velikost hashovací tabulky Bez optimalizace 0,138 s 0,126 s 0,122 s 0,123 s S optimalizací 0,131 s 0,122 s 0,116 s 0,117 s Tabulka 2: Měření času běhu programu Linux Čas běhu programu v závislosti na optimalizaci a velikosti hash tabulky Velikost hashovací tabulky Bez optimalizace 0,280 s 0,268 s 0,274 s 0,271 s S optimalizací 0,275 s 0,271 s 0,270 s 0,270 s Tabulka 3: Měření času běhu programu Windows Program by samozřejmě mohl být ještě vylepšen. Ke kontrole parametrů by šlo přidat i kontrolu existence samotných souborů potřebných pro běh programu (tak, aby program nebyl přerušen kvůli tomuto problému uprostřed učení či klasifikace). Urychlení by mohlo přinést implementování datové struktury jakožto trie za cenu zvýšené pamět ové náročnosti, což dnes není žádný problém, nebot paměti bývá obecně více než procesorového výkonu. Pokud zůstaneme u hashovací tabulky, bylo by vhodné vymyslet algoritmus, který by její velikost vypočítal v závislosti na vstupních datech a pak ji dynamicky vytvářel. Nyní je vytvářena staticky s velikostí, která byla optimalizována pro testovací data, ale nemusí být stejně efektivní pro jiný (jinak velký) soubor dat. Zrychlení programu by také mohla přinést lepší hashovací funkce, která by rovnoměrněji zaplňovala tabulku (méně prázdných řádků a méně nebo žádné kolize na některých řádcích). Program úspěšně prošel testováním pomocí Valgrindu (nebyly detekovány žádné úniky paměti) a kontrolou pomocí Splint, který nakonec nahlásil pouze jedno varování ohledně používání funkce sprintf a radil nahrazení bezpečnější funkcí snprintf. Tuto chybu bohužel nebylo možné opravit, nebot snprintf není součástí standardu ANSI C. Program byl však konstruován tak, že by k přetečení u funkce sprintf nikdy nemělo dojít. 12

14 Reference [1] Autor: Michal Hrala, Název publikace: Automatická klasifikace dokumentů s podobným obsahem. Vydavatel: Západočeská univerzita v Plzni, Rok: 2012, URI: [2] URL: Rok: 2014, Poznámka: poslední přístup [3] URL: Rok: 2014, Poznámka: poslední přístup

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016 Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016 Obsah 1 Zadání 1 2 Analýza úlohy 2 2.1 Uložení dat ze vstupního souboru................ 2 2.2 Graf

Více

Pokud nebude na příkazové řádce uveden právě jeden argument, vypište chybové hlášení a stručný

Pokud nebude na příkazové řádce uveden právě jeden argument, vypište chybové hlášení a stručný KIV/PC ZS 2015/2016 Zadání ZADÁNÍ SEMESTRÁLNÍ PRÁCE ŘEŠENÍ KOLIZÍ FREKVENCÍ SÍTĚ VYSÍLAČŮ VARIANTA 2 (REx) Naprogramujte v ANSI C přenositelnou 1 konzolovou aplikaci, která jako vstup načte z parametru

Více

Semestální práce z předmětu PC

Semestální práce z předmětu PC A05450 ZCU ZS2006 Martin Lipinský martin@lipinsky.cz Semestální práce z předmětu PC Přebarvování souvislých oblastí 1. Zadání Naprogramujte v ANSI C přenositelnou konzolovou aplikaci, která provede v binárním

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

Semestrální práce z KIV/PC. Kolja Matuševský (A14B0310P)

Semestrální práce z KIV/PC. Kolja Matuševský (A14B0310P) Semestrální práce z KIV/PC Řešení kolizí frekvencí sítě vysílačů Kolja Matuševský (A14B0310P) mkolja@students.zcu.cz 10. ledna 2016 Obsah 1 Zadání 2 2 Analýza úlohy 3 2.1 Vytvoření grafu..........................

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky 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

Více

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce) 13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací

Více

Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů)

Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů) Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů) Autor: Vladimir Vapnik Vapnik, V. The Nature of Statistical Learning Theory.

Více

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Zadání druhého zápočtového projektu Základy algoritmizace, 2005 Zadání druhého zápočtového projektu Základy algoritmizace, 2005 Jiří Dvorský 2 května 2006 Obecné pokyny Celkem je k dispozici 8 zadání příkladů Každý student obdrží jedno zadání Vzhledem k tomu, že odpadly

Více

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004 Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.

Více

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

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

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

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

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 binární vyhledávání a bst Karel Horák, Petr Ryšavý 23. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Naimplementujte binární vyhledávání. Upravte metodu BinarySearch::binarySearch. 1 Příklad 2 Mysĺım

Více

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

Binární vyhledávací stromy pokročilé partie Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald

Více

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující Stromy 2 AVL AVL stromy jména tvůrců stromů: dva Rusové Adelson-Velskii, Landis vyvážené binární stromy pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1

Více

Implementace numerických metod v jazyce C a Python

Implementace numerických metod v jazyce C a Python Fakulta elektrotechnická Katedra matematiky Dokumentace k semestrální práci Implementace numerických metod v jazyce C a Python 2013/14 Michal Horáček a Petr Zemek Vyučující: Mgr. Zbyněk Vastl Předmět:

Více

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

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]

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých

Více

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

Datový typ prioritní fronta Semestrální práce z předmětu 36PT Datový typ prioritní fronta Semestrální práce z předmětu 36PT Martin Tůma Cvičení 113, Út 18:00 22. května 2004 Specifikace problému Často potřebujeme přístup k informacím, tak aby tyto byly seřazeny podle

Více

Systém adresace paměti

Systém adresace paměti Systém adresace paměti Základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného

Více

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

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)):

Více

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 1. Vymezení pojmů Strom: Strom je takové uspořádání prvků - vrcholů, ve kterém lze rozeznat předchůdce - rodiče a následovníky - syny.

Více

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

Zadání soutěžních úloh 16. až 18. dubna 2015 Krajské kolo 2014/2015 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou úlohu můžete dostat maximálně 10 bodů, z nichž je většinou 9 bodů

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

Spojová implementace lineárních datových struktur

Spojová implementace lineárních datových struktur Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Návrh designu: Radek Mařík

Návrh designu: Radek Mařík Návrh designu: Radek Mařík 1. Hashovací (=rozptylovací) funkce a) převádí adresu daného prvku na jemu příslušný klíč b) vrací pro každý klíč jedinečnou hodnotu c) pro daný klíč vypočte adresu d) vrací

Více

Trénování sítě pomocí učení s učitelem

Trénování sítě pomocí učení s učitelem Trénování sítě pomocí učení s učitelem! předpokládá se, že máme k dispozici trénovací množinu, tj. množinu P dvojic [vstup x p, požadovaný výstup u p ]! chceme nastavit váhy a prahy sítě tak, aby výstup

Více

KRY. Projekt č. 2. Kamil Dudka xdudka00

KRY. Projekt č. 2. Kamil Dudka xdudka00 KRY Projekt č. 2 Kamil Dudka xdudka00 1 Úvod Úkolem bylo vytvořit program, který do určeného obrázku umí schovat text a tento text z obrázku později vytáhnout. Schovaný text měl být zabezpečený pomocí

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Tento dokument popisuje instalaci a používání elektronické cvičebnice Styx.

Tento dokument popisuje instalaci a používání elektronické cvičebnice Styx. Kapitola 1 Uživatelská příručka Tento dokument popisuje instalaci a používání elektronické cvičebnice Styx. 1.1 Systémové požadavky Cvičebnice je napsána v jazyce Java, uživatel proto musí mít nainstalováno

Více

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018 Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018 doc. Mgr. Jiří Dvorský, Ph.D. 24. dubna 2018 Verze zadání 24. dubna 2018 První verze 1 1 Hašovací tabulka V tomto zadání

Více

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing. Program pro tvorbu technických výpočtů VIKLAN - Výpočty Uživatelská příručka pro seznámení se základními možnostmi programu Ing. Josef Spilka VIKLAN - Výpočty Verse 1.10.5.1 Copyright 2010 Ing. Josef Spilka.

Více

Matematika v programovacích

Matematika v programovacích Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?

Více

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 27.11.2017,

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

NOVINKY v PROGRAMU DOCHÁZKA ADS

NOVINKY v PROGRAMU DOCHÁZKA ADS NOVINKY v PROGRAMU DOCHÁZKA ADS 4 1.2.2010 Uživatelské prostředí nové grafické prostředí programu rychlé menu ve dvou režimech - pouze ikony, ikony s popisem implementace Drag & Drop při přiřazování kalendáře,

Více

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

Popis programu EnicomD

Popis programu EnicomD Popis programu EnicomD Pomocí programu ENICOM D lze konfigurovat výstup RS 232 přijímačů Rx1 DIN/DATA a Rx1 DATA (přidělovat textové řetězce k jednotlivým vysílačům resp. tlačítkům a nastavovat parametry

Více

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

Zadání soutěžních úloh Zadání soutěžních úloh Kategorie žáci Soutěž v programování 24. ročník Krajské kolo 2009/2010 15. až 17. dubna 2010 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou

Více

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více

Šifrování/Dešifrování s použitím hesla

Šifrování/Dešifrování s použitím hesla Fakulta elektrotechnická Katedra teoretické elektrotechniky Dokumentace k semestrální práci Šifrování/Dešifrování s použitím hesla 2012/13 Petr Zemek Vyučující: Ing. Petr Kropík, Ph.D Předmět: Základy

Více

1 Nejkratší cesta grafem

1 Nejkratší cesta grafem Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto

Více

Testování prvočíselnosti

Testování prvočíselnosti Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo

Více

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

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10

Více

Geometrické algoritmy pro počítačovou grafiku

Geometrické algoritmy pro počítačovou grafiku České vysoké učení technické v Praze Fakulta jaderná a fyzikálně inženýrská Katedra fyzikální elektroniky Informatická fyzika Geometrické algoritmy pro počítačovou grafiku Semestrální práce Autor práce:

Více

Zpracování deklarací a přidělování paměti

Zpracování deklarací a přidělování paměti Zpracování deklarací a přidělování paměti Účel deklarací -pojmenování objektů -umístění objektů v paměti Tabulka symbolů -uchovává informace o objektech -umožňuje kontextové kontroly -umožňuje operace

Více

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého

Více

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc. Katedra informatiky a výpočetní techniky České vysoké učení technické, fakulta elektrotechnická Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc. 10. prosince 2007 Pamět ové banky S výhodou používáme

Více

Operační systémy. Cvičení 3: Programování v C pod Unixem

Operační systémy. Cvičení 3: Programování v C pod Unixem Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené

Více

b) červená, zelená, modrá, c) černá, bílá, d) černá, bílá, šedá. 5. PNG je formát: a) textový,

b) červená, zelená, modrá, c) černá, bílá, d) černá, bílá, šedá. 5. PNG je formát: a) textový, Opravil: Kontroloval: Přijímací zkouška xx_xx_xxxx_v1 (INF komb. st.) Identifikační údaje: 1. Mezi znakové sady nepatří: a) Windows CP 1250, b) ISO 8859-14, c) Unicode, UTF-13. 2. Unicode používá k reprezentaci

Více

Systém souborů (file system, FS)

Systém souborů (file system, FS) UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Čí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

Více

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010 FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku

Více

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte

Více

Recognoil RRW Manager rychlý návod k obsluze

Recognoil RRW Manager rychlý návod k obsluze Recognoil RRW Manager rychlý návod k obsluze Obsah: 1) Úvod charakteristika funkcí 2) Instalace 3) První spuštění - menu 4) Selektivní vyhodnocení plochy + uložení 5) Práce s projektem a exporty 6) Poznámky

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Základní datové struktury III: Stromy, haldy

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy 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í

Více

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student:

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student: Semestrální úloha 1 z předmětu Programovací jazyk C Textový merge Napište program, který spojí dva textové soubory. První soubor je datový, obsahuje databázi, tj. první řádek představuje seznam sloupců

Více

Komprese dat (Komprimace dat)

Komprese dat (Komprimace dat) Komprese dat (Komprimace dat) Př.: zakódovat slovo ARARAUNA K K 2 četnost absolutní relativní A 4,5 N,25 R 2,25 U,25 kód K : kód K 2 :... 6 bitů... 4 bitů prefixový kód: žádné kódové slovo není prefixem

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Osmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 20.11.2017,

Více

1 Uživatelská dokumentace

1 Uživatelská dokumentace 1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

Nápověda k aplikaci EA Script Engine

Nápověda k aplikaci EA Script Engine Nápověda k aplikaci EA Script Engine Object Consulting s.r.o. 2006 Obsah Nápověda k aplikaci EA Script Engine...1 1. Co je EA Script Engine...2 2. Důležité upozornění pro uživatele aplikace EA Script Engine...3

Více

Formulář pro křížový filtr

Formulář pro křížový filtr Formulář pro křížový filtr Formulář pro křížový filtr je určen zejména autorům křížovek a má sloužit jako pomůcka při jejich tvorbě. Levé části formuláře dominuje tzv. šablona, což je síť 20 krát 20 políček

Více

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek Prezentace aplikace Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek Osnova Úvod Programovací jazyk - PHP Etapy vývoje Funkce aplikace Co SW umí Na čem se pracuje Vize do budoucna Úvod Úvod Inspirováno

Více

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina Program LibTex Uživatelská příručka 1 Obsah Program Textilní Design... 1 Uživatelská příručka... 1 1 Obsah... 2 2 Rejstřík obrázků... 2 3 Technické požadavky... 3 3.1 Hardware... 3 3.1.1 Procesor... 3

Více

SEMESTRÁLNÍ PROJEKT Y38PRO

SEMESTRÁLNÍ PROJEKT Y38PRO SEMESTRÁLNÍ PROJEKT Y38PRO Závěrečná zpráva Jiří Pomije Cíl projektu Propojení regulátoru s PC a vytvoření knihovny funkcí pro práci s regulátorem TLK43. Regulátor TLK43 je mikroprocesorový regulátor s

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

Rozdělování dat do trénovacích a testovacích množin

Rozdělování dat do trénovacích a testovacích množin Rozdělování dat do trénovacích a testovacích množin Marcel Jiřina Rozpoznávání je důležitou metodou při zpracování reálných úloh. Rozpoznávání je definováno dvěma kroky a to pořízením dat o reálném rozpoznávaném

Více

Rekurzivní algoritmy

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

Více

Interpret jazyka IFJ2011

Interpret jazyka IFJ2011 Dokumentace projektu Interpret jazyka IFJ2011 Tým číslo 093, varianta b/3/i: 20 % bodů: Cupák Michal (xcupak04) vedoucí týmu 20 % bodů: Číž Miloslav (xcizmi00) 20 % bodů: Černá Tereza (xcerna01) 20 % bodů:

Více

Automatické vyhledávání informace a znalosti v elektronických textových datech

Automatické vyhledávání informace a znalosti v elektronických textových datech Automatické vyhledávání informace a znalosti v elektronických textových datech Jan Žižka Ústav informatiky & SoNet RC PEF, Mendelova universita Brno (Text Mining) Data, informace, znalost Elektronická

Více

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Programování 3. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Implementace zásobníku a fronty pomocí

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

Obsah přednášky Jaká asi bude chyba modelu na nových datech?

Obsah přednášky Jaká asi bude chyba modelu na nových datech? Obsah přednášky Jaká asi bude chyba modelu na nových datech? Chyba modelu Bootstrap Cross Validation Vapnik-Chervonenkisova dimenze 2 Chyba skutečná a trénovací Máme 30 záznamů, rozhodli jsme se na jejich

Více

PA152. Implementace databázových systémů

PA152. Implementace databázových systémů PA152 Implementace databázových systémů RAID level 1 zrcadlení disku výpočet MTTF 2 stejné disky, MTTF 3 roky výměna vadného 3,5 dne výpadek oba disky během 3,5 dne p(výpadku disku za rok) = 1/6 p(výp.

Více

Práce se soubory. Základy programování 2 Tomáš Kühr

Práce se soubory. Základy programování 2 Tomáš Kühr Práce se soubory Základy programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup

Více

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Vyvažování a rotace v BVS, všude se předpokládá AVL strom Vyvažování a rotace v BVS, všude se předpokládá AVL strom 1. Jednoduchá levá rotace v uzlu u má operační složitost a) závislou na výšce levého podstromu uzlu u b) mezi O(1) a Θ(n) c) závislou na hloubce

Více

Zásadní dovednosti Indesign. Stručné otázky a odpovědi

Zásadní dovednosti Indesign. Stručné otázky a odpovědi Zásadní dovednosti Indesign Import a úprava textu Stručné otázky a odpovědi Otázky 1,2 12 Co se stane, když v ID otevřete dokument, který obsahuje písmo, které v systému nemáte? Jak lze situaci řešit?

Více

Základy algoritmizace. Hašování

Základy algoritmizace. Hašování Základy algoritmizace Hašování Problematika hašování Hašování - nástroj na jednoduchý způsob "zakódování vstupních dat. Vstupní data jsou zpracována hašovací funkcí jsou jistým způsobem komprimována. Relativně

Více

František Hudek. duben ročník

František Hudek. duben ročník VY_32_INOVACE_FH09_WIN Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek duben 2013 6.

Více

Nápověda pro vyplnění elektronického formuláře Oznámení o provedení asanace vytěženého jehličnatého dříví

Nápověda pro vyplnění elektronického formuláře Oznámení o provedení asanace vytěženého jehličnatého dříví Nápověda pro vyplnění elektronického formuláře Oznámení o provedení asanace vytěženého jehličnatého dříví Nápověda pro vyplnění elektronického formuláře Oznámení o provedení asanace vytěženého jehličnatého

Více

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6 APS mini.ed programová nadstavba pro základní vyhodnocení docházky Příručka uživatele verze 2.2.0.6 APS mini.ed Příručka uživatele Obsah Obsah... 2 Instalace a konfigurace programu... 3 Popis programu...

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

Datové struktury Úvod

Datové struktury Úvod Datové struktury Úvod Navrhněte co nejjednodušší datovou strukturu, která podporuje následující operace: 1. Insert a Delete v O(n), Search v O(log n); Datové struktury Úvod Navrhněte co nejjednodušší datovou

Více

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

Gymnázium Jiřího Ortena, Kutná Hora Předmět: Náplň: Třída: Počet hodin: Pomůcky: Informatika a výpočetní technika (IVT) Úvod do předmětu, základní pojmy IVT, operační systém MS Windows, Internet, netiketa, číselné soustavy a uložení dat

Více