Otázka:
Přístupy shora dolů vs. zdola nahoru při popisu algoritmu ve výzkumné práci
user12635
2015-06-20 19:05:36 UTC
view on stackexchange narkive permalink

Při psaní výzkumné práce (informatiky) musím svou metodu popsat v termínu v pseudokódu. Kvůli čitelnosti a opakovanému použití chci svou metodu rozdělit na menší kousky. Nevím však, jak je prezentovat v mé práci. Pokud vím, existují dva přístupy:

  • shora dolů: nejprve představte hlavní pseudokód, který volá / vyvolává další menší, které budou vysvětleny později.
  • Zdola nahoru: nejprve představte a vysvětlete všechny menší kousky a poté je spojte dohromady do většího.

Například ve svém příspěvku představuji metodu řešení problém, tato metoda je popsána pomocí funkce s názvem SOLVE_PROBLEM takto:

  SOLVE_PROBLEM (vstup) {if CHECK (input) then: FUNCTION_1 (input) else: FUNCTION_2 (vstup)}  

Jak vidíte, SOLVE_PROBLEM používá další funkce ( CHECK , FUNCTION_1 a FUNCTION_2 ) k nalezení řešení. Moje otázka je, jak prezentovat tyto funkce v mé práci. Měl bych nejprve představit i) SOLVE_PROBLEM (protože jde o řešení problému, které je hlavním bodem příspěvku), nebo ii) jiné metody fisrt (protože jsou stavebními kameny řešení) )?

Lidé číst shora dolů, zleva doprava v angličtině. Nejprve tedy SOLVE_PROBLEM, poté KONTROLA, poté FUNCTION_1, poté FUNCTION_2
Zdá se, že jde spíše o otázku informatiky než o akademickou sféru * per se *.
Cokoli nejlépe sdělí algoritmus lidskému čtenáři. (
Dva odpovědi:
Jouni Sirén
2015-06-20 21:50:29 UTC
view on stackexchange narkive permalink

Odpověď závisí na osobních preferencích i na samotném algoritmu. Zvažte následující dva popisy SOLVE_PROBLEM:

Shora dolů: Chceme vyřešit problém A při vstupu . Funkce SOLVE_PROBLEM řeší problém. Existují dva případy, v závislosti na podmínce B, které můžeme zkontrolovat pomocí funkce CHECK . Pokud podmínka platí, vyřešíme problém pomocí FUNCTION_1 . Jinak použijeme FUNCTION_2.

Bottom-up: Chceme vyřešit problém A na vstupu . Obecně lze problém vyřešit pomocí FUNCTION_1 . Obecné řešení předpokládá podmínku B, kterou můžeme zkontrolovat pomocí funkce CHECK . Pokud podmínka neplatí, můžeme speciální případ vyřešit pomocí FUNCTION_2 . Tím je dokončena funkce SOLVE_PROBLEM.

Osobně preferuji přístup shora dolů, pokud má algoritmus několik stejně důležitých částí. Přístup zdola nahoru se stává výhodnějším, pokud jedna část algoritmu útočí na jádro problému, zatímco zbytek se zabývá pouze zvláštními případy a administrativními záležitostmi.

Blaisorblade
2017-06-03 00:33:35 UTC
view on stackexchange narkive permalink

Obecně byste se měli vyvarovat toho, abyste čtenáři něco řekli, aniž byste zdůvodňovali, proč to říkáte (ve smyslu, které čtenář již dostane), abyste se vyhnuli frustraci jeho motivace. Příspěvek by zároveň měl být čitelný alespoň lineárně, takže o věcech, které jste dosud nepředložili, nemůžete říci příliš mnoho.

Podle tohoto pokynu se často (ale ne vždy) ) je lepší postupovat shora dolů. Na začátku jste vysvětlili, proč by se čtenáři měli o váš problém starat, a proto potřebujete SOLVE_PROBLEM. Poté představíte SOLVE_PROBLEM a vysvětlíte, čeho jsou jednotlivé kroky dosaženy (nikoli jak). Doufejme, že jména napoví, ale často to nestačí. SOLVE_PROBLEM zase motivuje ostatní postupy, takže je můžete vysvětlit stejným způsobem.

Při prezentaci zdola nahoru riskujete prezentaci kódu, aniž byste zdůvodnili, proč je to potřeba. Možná, že váš řešič FuzzBahzz potřebuje řešič BarBuzz, který potřebuje řešitele BipBop, ale čtenáři, kteří se o FuzzBahzz zajímají, nemusí hádat, proč BipBop souvisí.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...