Algoritmus

Pojem problém

Prvotným dôvodom vytvárania počítačového programu alebo všeobecnejšie algoritmu, je existencia problému, ktorý potrebujeme riešiť.

Problémov je okolo nás obrovské množstvo a mnohé z nich si v každodennom kolobehu už ani neuvedomujeme. Keď sa však pozastavíme a zamyslíme, zistíme, že  život je plný problémov a problémových situácií, ktoré sa človek už od malička snaží riešiť. Spočiatku (prvých desať rokov života) mu na vyriešenie problému stačí začať plakať (jemnejší výraz pre slovné spojenie „vrešťať ako pavián“), pričom túto formu aplikuje dovtedy, kým dospelí neurobia to, čo chce. Tento spôsob je najjednoduchší, relatívne najmenej namáhavý, ale bohužiaľ nedá sa používať stále, pretože v určitom veku už rodičia nereagujú na náš plač poslušne, ale vytiahnú remeň (príp. varechu).

Vezmime si jednoduchý problém: chceme piť kakao. Predtým ako sa pustíme do riešenia, je vhodné naplánovať si postup. (Plánovanie robíme zvyčajne len zo začiatku, neskôr takéto problémy riešime automaticky – bez rozmýšľania).

Ako prvé zrejme musíme overiť, či máme mlieko, cukor a kakao – tieto suroviny pre nás predstavujú vstupné podmienky. Pokiaľ ich nemáme a nechce sa nám ísť na nákup (ďalší problém zložený z mnohých menších), postup sa skončil.

Ak sú všetky suroviny k dispozícii, môžeme pristúpiť k samotnej operácii.

1. do hrnčeka nalejeme mlieko,
2. dáme ho zohriať,
3. do prázdnej šálky zmiešame cukor a kakao (môže byť aj granko),
4. skontrolujeme mlieko,
5. ak nie je dosť teplé, vrátime sa do bodu 4.,
6. zalejeme zmes v šálke,
7. necháme vychladnúť,
8. vypijeme

... a je po probléme.

Pozrime sa teraz na našu činnosť zo stránky informatickej.

Na počiatku bol problém.

pozorProblém je stav, v ktorom jestvuje rozdiel medzi tým, čo v danom momente máme a tým, čo chceme dosiahnuť (nemáme nič a chceme kakao). Problém je vždy viazaný na svojho majiteľa (pre iného to nemusí byť problém, ale nezmysel) a na problémové prostredie (okrem prostredia, v ktorom chceme piť kakao môže ísť napr. finančné, školské, citové).

pozorRiešenie problému chápeme ako odstraňovanie rozdielu medzi pôvodným stavom a tým, čo chceme dosiahnuť. Postup, ktorým sa pri tejto činnosti riadime, nazývame aj algoritmus. Keď sa nám podarí dosiahnuť pôvodný cieľ, hovoríme o vyriešení problému. Nie každý problém je však riešiteľný a nie vždy sa dopracujeme k požadovanému výsledku.

question

1. Popíšte postup pri prechode cez križovatku bez semaforov.
2. Popíšte postup pri nákupe topánok.
3. Vymyslite algoritmus pre nastupovanie päťčlennej rodiny do dvojdverového automobilu. Popíšte aj vystupovanie.

Riešiť pomocou algoritmu problémy reálneho života je dosť náročné, pretože správny algoritmus vždy berie do úvahy všetky možnosti, detaily, náhody alebo zriedkavé situácie. Napr. pri našom postupe s varením kakaa by sme mali vziať do úvahy, že vypnú prúd (zastavia plyn), príde návšteva a mlieko vykypí, susedov kocúr rozbije šálku a pod. Takéto algoritmy potom možno navrhnúť len približne a za obmedzených podmienok.
O algoritmoch má zmysel hovoriť vtedy, keď máme k dispozícii určitú obmedzenú množinu príkazov (môže byť aj veľmi veľká), pomocou ktorých dokážeme navrhnúť postup pri riešení.