IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 1. diel - Úvod do teórie algoritmov

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
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 :-)"

 
Odpovedať
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 ;-)

Odpovedať
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" ?

Odpovedať
23.2.2014 17:46
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Benjibs
David Hartinger:23.2.2014 17:50

Melo, díky, opraveno :)

Odpovedať
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

 
Odpovedať
10.10.2014 21:57
Avatar
Odpovedá 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.

 
Odpovedať
10.10.2014 22:08
Avatar
coells
Tvůrce
Avatar
Odpovedá 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é.

 
Odpovedať
10.10.2014 22:13
Avatar
relycanx
Člen
Avatar
Odpovedá 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.
Editované 10.10.2014 22:19
 
Odpovedať
10.10.2014 22:18
Avatar
coells
Tvůrce
Avatar
Odpovedá 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ší.

Editované 10.10.2014 22:41
 
Odpovedať
10.10.2014 22:38
Avatar
relycanx
Člen
Avatar
Odpovedá 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

 
Odpovedať
10.10.2014 23:04
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!