Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]

Slides:



Advertisements
Podobné prezentace
Zpracování informací a znalostí Datové struktury a algoritmy pro vyhledávání informací Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního.
Advertisements

VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
PLANARITA A TOKY V SÍTÍCH
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Práce s vektory a maticemi
10. Dynamické datové struktury
ALGO – Algoritmizace 6. cvičení
Red-Black Stromy Binární Vyhledávací Stromy, u kterých je časová složitost operací v nejhorším případě rovná O(log n)
Aplikace teorie grafů Základní pojmy teorie grafů
1/12 ALGO – Algoritmizace 5. cvičení 1.ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D.
ALGO – Algoritmizace 1. cvičení
4IZ 229 – Cvičení 3 Práce s neurčitostí Vladimír Laš.
Algoritmy I Cvičení č. 3.
Algoritmy zpracování textů II
NÁZEV ŠKOLY: Základní škola Nový Jičín, Komenského 66, p. o
Metody řazení s lineární časovou složitostí
Skip-List je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura.
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Binární stromy, AVL stromy
Obchodní akademie, Ostrava-Poruba, příspěvková organizace
ARITMETICKÁ POSLOUPNOST II
Úpravy algebraických výrazů
ARITMETICKÁ POSLOUPNOST I
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Základy informatiky přednášky Efektivní kódy.
Vytvořil: Libor Lepík Frýdek-Místek. Loc 49°41'12.649N, 18°21'4.158E Time 21h 59min
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Informatika I 3. přednáška
Jazyk vývojových diagramů
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
Posloupnosti, řady Posloupnost je každá funkce daná nějakým předpisem, jejímž definičním oborem je množina všech přirozených čísel n=1,2,3,… Zapisujeme.
doc. RNDr. Zdeněk Botek, CSc.
Tento Digitální učební materiál vznikl díky finanční podpoře EU- Operačního programu Vzdělávání pro konkurenceschopnost Není –li uvedeno jinak, je tento.
Informatika I 2. přednáška
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Lineární rovnice – 1. část
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Datové struktury a algoritmy Část 12 Výpočetní geometrie Computational Geometry Petr Felkel.
Algoritmy vyhledávání a řazení
Jazyk vývojových diagramů
Funkční hodnota a argument funkce
Algoritmizace a programování Třídící algoritmy - 12
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ.1.07/1.5.00/ Šablona III/2VY_32_INOVACE_763.
Teorie složitosti I když je problém rozhodnutelný (řešitelný algoritmicky), může mít příliš velké nároky na čas výpočtu nebo paměť, a může se tedy.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Kvadratické rovnice 1) Vypočítejte rovnici: 3x 2 – 4x + 1 = – a = 3 b = -4 c = 1 Pokračovat.
Desetinná čísla SOŠ Josefa Sousedíka Vsetín Zlínský kraj Anotace
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Datové typy a struktury
2 CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Podle řídící proměnné proveď n-krát příkaz P1.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
KIV/PRO Cvičení Částečný součet v posloupnosti Najděte maximální částečný součet v posloupnosti Vstup: – Reálná čísla Výstup: – Maximální.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
KIV/PRO Cvičení N nejvyšších hodnot Mějme 2D čtvercové pole [1,..., n][1,..., n] – n 2 vzájemně různých kladných celých čísel Zkonstruujte.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Grafický zápis algoritmů (vývojové diagramy) Test na trojúhelník (trojúhelníková nerovnost) Maximum ze tří čísel s použitím pomocné proměnné Pravoúhlý.
VISUAL BASIC PRALG.
NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6.
Inf Cykly ve vývojových diagramech
Výška stromu - algoritmus
© Copyright Radim Štefan
ALG 07 Selection sort (Select sort) Insertion sort (Insert sort)
Různé algoritmy mají různou složitost
Algoritmizace a datové struktury (14ASD)
Logické programování Prezentace číslo 5.
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a] [k,r,k] [i,d,o,l,z,l,o,d,i] Navrhněte vhodný algoritmus pro tuto úlohu Určete složitost navrženého algoritmu Navrhněte případně algoritmus rychlejší

Palindrom Algoritmus 1: 1. jestliže je seznam prázdný nebo jednoprvkový, potom skonči úspěšně 2. vezmi první prvek seznamu, smaž ho a jdi na konec seznamu ověřit, zda je tam tentýž prvek; jestliže ano také ho smaž, jinak konec 3. pokračuj krokem číslo 1 palindrom([]) :- !. palindrom([H]) :- !. palindrom([H|T]) :- kontrola(H, T, T1), !, palindrom(T1). kontrola(H, [H], []) :- !. kontrola(H, [C|T], [C|T1]) :- kontrola(H, T, T1). Pro 1. prvek dělám n kroků, potom n-2, n-4, … Složitost je tedy: f  O(n 2 )

Palindrom Algoritmus 2: 1. otoč seznam 2. postupně porovnávej prvky v původním a otočeném seznamu palindrom([]) :- !. palindrom2(Sez) :- reverse(Sez, S1), kontroluj(Sez, S1), !. kontroluj([], []) :- !. kontroluj([H|T], [H|T1]) :- kontroluj(T, T1). Otočení proběhne v lineárním čase Kontrola proběhne také v lineárním čase Složitost je tedy: f  O(n)

Palindrom Praktický rozdíl mezi použitím algoritmu 1 a 2 na seznamu o velikosti N: (čas je uveden ve formátu min:sec:ssec) N Algoritmus 1 O(n 2 ) Algoritmus 2 O(n) : 06 : 5900 : 00 : : 49 : 9500 : 00 : : 08 : 6300 : 00 : : 51 : 6300 : 00 : 01

Cvičení 2 Úloha 2: V zadané posloupnosti reálných čísel délky N nalezněte úsek s maximálním součtem. Př.: 1,3,5,-8,4,-7,15,3,-12,-8,7,-1,9,4,-6,-14,3,5,4,-17,11 Navrhněte vhodný algoritmus pro tuto úlohu Určete složitost navrženého algoritmu Navrhněte případně algoritmus rychlejší

Posloupnost Algoritmus 1: max:=0; for i=1 to n do for j=i to n do pom:=0; for k=i to j do pom := pom+a[k]; if pom > max then max := pom; Zkoumá všechny možné začátky a konce úseků Mezi nimi provede součet prvků Tři do sebe vnořené cykly; složitost je: f  O(n 3 )

Posloupnost Algoritmus 2: max:=0; for i=1 to n do pom:=0; for j=i to n do pom := pom+a[j]; if pom > max then max := pom; Pro každý začátek zkoušíme počítat součty všech úseků Zbavili jsme se jednoho cyklu Složitost je: f  O(n 2 )

Posloupnost Algoritmus 3: max:=0; pom:=0; for i=1 to n do pom := pom+a[i]; if pom > max then max := pom else if pom < 0 then pom := 0 Úsek s maximálním součtem musí začínat kladným číslem; pokud při načítání klesneme pod nulu, je čas začít znovu Zbavili jsme se dalšího cyklu Složitost je: f  O(n)

Cvičení 3 Úloha 3: V zadané posloupnosti reálných čísel P1 délky N1 nalezněte nejdelší úsek, který neobsahuje žádný prvek z druhé zadané posloupnosti P2 o délce N2. Př.: P1: 1,3,5,-8,4,-7,15,3,-12,-8,7,-1,9,4,-6,-14,3,5,4 P2: 3,11,4,25,-12,-1,5,41,17,-22,13 Navrhněte vhodný algoritmus pro tuto úlohu Určete složitost navrženého algoritmu Navrhněte případně algoritmus rychlejší

Dva seznamy Algoritmus 1: 1. procházej seznam P1, pro každý prvek ověř, zda je i v P2 a pokud ano, nahraď jej vhodnou značkou (N1*N2 kroků) 2. projdi seznam P1 a nalezni nejdelší úsek bez značky (N1 kroků) Celkem: N1*N2 + N1 ≈ N 2 Složitost je: f  O(n 2 ) Jsou-li seznamy dlouhé, vyplatí se zvážit datovou strukturu seznamu P2, ve kterém často vyhledávám

Dva seznamy Algoritmus 2: 1. Převeď seznam P2 na binární strom (N2*log 2 N2 kroků) 2. procházej seznam P1, pro každý prvek ověř, zda je i v P2 (strom) a pokud ano, nahraď jej vhodnou značkou (N1*log 2 N2 kroků) 2. projdi seznam P1 a nalezni nejdelší úsek bez značky (N1 kroků) Celkem: N2*log 2 N2 + N1*log 2 N2 + N1 ≤ 2*N*log 2 N + N ≈ N*log 2 N Složitost je: f  O( n*log 2 n)