Mikuláš je tady! Získej 90 % extra kreditů ZDARMA s promo kódem CERTIK90 při nákupu od 1199 kreditů. Pouze do neděle 7. 12. 2025! Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 1 - Úvod do teorie algoritmů

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
ejoty
Člen
Avatar
ejoty:23.5.2013 15:35

Děkuji sdraco za velice zajímavý úvod do algoritmů, "snad ho časem pochopím :-)"

Avatar
Andrej Farkaš:14.10.2013 14:11

MIT zverejnila materiály k svojím predmetom + nejaké videá z prednášok. Ja som minule pozeral zrovna Introduction to algorithms. Ak to niekoho teda zaujíma a nemá problém s angličtinou, nech sa páči: http://www.youtube.com/watch?…

PS: Na MIT stránke nájdete aj podklady k predmetu, príp. ďalšie predmety ;-)

Odpovědět
Live. Love. Learn.
Avatar
Benjibs
Člen
Avatar
Benjibs:23.2.2014 17:46

Na konci článku je toto:

"Říkáme např., že třídíme na místě, pokud potřebujeme kromě vstupního pole žádnou dodatečnou paměť."

Nemalo by tam byť skôr "nepotrebujeme" ?

Odpovědět
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:23.2.2014 17:50

Melo, díky, opraveno :)

Odpovědět
New kid back on the block with a R.I.P
Avatar
relycanx
Člen
Avatar
relycanx:10.10.2014 21:57

ahoj, k těm algoritmům bych měl ještě jeden dotaz - když dostanu napsaný algoritmus ve zdrojovém kódu, tak existuje nějaký rychlý způsob, jak se v něm zorientovat a dokázat během chvíle určit výstup programu? jako popravdě, nikdy jsem nečekal, že mi půjdou tvořit algoritmy, ale bude tak těžké se zorientovat v předepsaném kódu, kde je několik proměnných, hromada znamínek a všechno si to pamatovat, aby se pak dal nějakým způsobem určit výsledek :/ a co teprv, když jsou pak dva cykly v sobě a těch několik proměnných se tam začne mixovat :D

Avatar
Odpovídá na relycanx
Michal Žůrek - misaz:10.10.2014 22:08

když dostaneš cizí kód je mnohdny mnohem ěžší se v něm zorientovat ne ho napsat. Záleží jak moc zodpovědný člověk ho dělal. Pokud je tam komentář je to úplně snadné, pokud ne, musíš mnohdy i chodit s debuggerem a zkoumat co kde z čeho vyleze (determinovanost), tak aby ses vůbec mohl hnout dál a dobrat konce.

Avatar
coells
Tvůrce
Avatar
Odpovídá na relycanx
coells:10.10.2014 22:13

Jenom léta zkušeností, nic jiného nepomůže. Je nesmírně těžké poznat, co program dělá, dokonce i pokud je program doslova na pár řádek a máš potřebné znalosti. U složitějších algoritmů je to skoro nemožné.

Avatar
relycanx
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
relycanx:10.10.2014 22:18

děkuji za odpovědi :) tohle se týká pravděpodobně jednoduchých algoritmů ze školy, jako ten, který zasílám níže. Já jen, jestli prostě neexistuje třeba nějaká technika, jako např. "všímat si v kódu nejdřív jedné proměnné, jaký má efekt", nebo "nejprve si prohlédnout celý kód a až pak to postupně projíždět od začátku" a tak, protože se kolikrát jedná o mraky výpočtů :D

začátek
   čti(p);
   i:=3;
   počet := 1;
   součin := 1;
   dokud počet <= p opakuj
           začátek
                součin := součin * i;
                počet := počet + 1;
                i:=i+3;
          konec;
konec.
Editováno
Avatar
coells
Tvůrce
Avatar
Odpovídá na relycanx
coells:10.10.2014 22:38

Existují postupy v teoretické informatice, ale nejspíš ti přijdou složitější, než takové samotné zadání.

Jak by takový postup vypadal?

1) inicializace
p = integer - libovolný, pevný
pocet = 1
soucin = 1
i = 3

2) stanovení invariantu smyčky F
soucin *= i
pocet += 1
i += 3

3) rekurzivní definice smyčky F
F(1, 1, 3) = (1, 1, 3) pro pocet < 1
F(soucin, pocet, i) = F(soucin * i, pocet + 1, i + 3) pro pocet <= p

4) induktivní postup přes rekurzivní definici
F = (1, 1, 3) pro pocet < 1
F = (3, 1, 6) pro pocet == 1
F = (18, 2, 9) pro pocet == 2
F = (162, 3, 12) pro pocet == 3

5) díky invariantu víme, že
F = (SOUCIN, N, 3*N+3) pro pocet == N
kde
SOUCIN = PRODUCT(3*k+3) pro k [0, N-1]

Tohle je ale snadný příklad, podobné postupy se obvykle používají při dokazování korektnosti algoritmů o řády složitější.

Editováno
Avatar
relycanx
Člen
Avatar
Odpovídá na coells
relycanx:10.10.2014 23:04

děkuji, ale asi by to bohužel chtělo trochu teorie, abych z tohoto dokázal číst, no :D

Nejnovější komentáře jsou na konci poslední stránky.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 35.