NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

 
Odpovědět
23.5.2013 15:35
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
14.10.2013 14:11
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
23.2.2014 17:46
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
23.2.2014 17:50
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

 
Odpovědět
10.10.2014 21:57
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.

 
Odpovědět
10.10.2014 22:08
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é.

 
Odpovědět
10.10.2014 22:13
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 10.10.2014 22:19
 
Odpovědět
10.10.2014 22:18
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 10.10.2014 22:41
 
Odpovědět
10.10.2014 22:38
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

 
Odpovědět
10.10.2014 23:04
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 34.