Vyšlo v týdeníku Computerworld č. 37/94 v roce 1994
Vytištěno z adresy: http://www.earchiv.cz/a94/a437c120.php3

Heuristics

Přístup člověka k řešení nejrůznějších problémů je zřejmě zásadně odlišný od přístupu, který k řešení obdobných problémů používají počítače. Ty většinou důsledně aplikují algoritmický přístup, kdy pro nějaký dostatečně přesně definovaný problém je k dispozici algoritmus jeho řešení (vyjádřený programem srozumitelným počítači) a počítače jej pouze vykonávají. Tento algoritmický přístup je přitom charakteristický právě svou "mechaničností" (v tom smyslu, že jej může vykonávat stroj), svým determi nismem (v každém kroku je jednoznačně dáno, co bude následovat) a v neposlední řadě i svou konečností (běh programu v konečném čase skončí a bude mít jednoznačný výsledek).

Naproti tomu lidé při řešení problémů postupují spíše "nealgoritmicky" - v tom smyslu, že se často řídí vlastní intuicí, vlastními zkušenostmi, subjektivními pocity, a leckdy i na základě náhody.

Existuje ale i ve světě počítačů možnost obdobného přístupu k řešení problémů, jaký mají lidé? Odpověď je kupodivu kladná a lze ji nejlépe dokumentovat na příkladu takových problémů, které sice jsou v principu algoritmicky řešitelné, ale jejichž náročnost algoritmického řešení je neúnosně vysoká. Učebnicovým příkladem takovýchto problémů jsou nejrůznější šachové úlohy: všechny mají společné to, že se týkají konečného počtu figurek, konečného počtu políček na šachovnici, a tedy i konečného počtu možností tahů. Není tedy nejmenším problémem vymyslet a sestavit (napsat, naprogramovat) takový algoritmus, který jednoduše projde všechny možnosti a vyřeší libovolnou šachovou úlohu. Potíž je ale v tom, že provedení takovéhoto algoritmu není, a nejspíše ani nikdy nebude v silách žádného výpočetního prostředku - skončí sice vždy v konečném čase, ale tak velkém, že se samotný počítač dávno rozpadne na prach, ale ještě předtím si bude nárokovat tolik systémových zdrojů (například paměti pro uchovávání mezivýsledků), že nebude v silách celého lidstva je vyrobit. Přesto ale i dnes dokáží počítače hrát šachy, a některé dokonce už i porážet světové velmistry. Jak je to možné?

Pouze tak, že tyto šachové počítače již nepoužívají důsledně algoritmický přístup, ale řídí se něčím, co je obdobou lidské intuice, předtuchy a zkušeností a co se ve světě počítačů označuje jako heuristika (anglicky: heuristics). Například v námi uvažovaném příkladu šachových úloh je velmi často používanou heuristikou pravidlo o tom, že soupeři by se měl ponechat co možná nejmenší prostor, resp. co možná nejméně možných tahů. Počítačový program, který "hraje šachy", pak toto pravidlo (případně jinou heur istiku) používá k tomu, aby při systematickém prohledávání všech potenciálních možností dalších tahů některé zavrhl a již je dále neuvažoval - v případě námi citované heuristiky ty, které ponechávají soupeři příliš velký prostor (větší než jiné varianty).

Obecně je tedy heuristika určitým pravidlem, podmínkou, vztahem či jinou formou vyjádření skutečností (získaných nejčastěji empiricky), které jsou využity při hledání řešení - nejčastěji pro omezení všech možných variant, které připadají v úvahu. Tato pravidla jsou aplikována v rámci algoritmů, které se pak stávají heuristickými algoritmy (heuristic algorithms) a dokáží "spět" mnohem rychleji ke svému cíli - i když za cenu toho, že k němu nemusí dospět vůbec (ačkoli bez aplikace příslušné heuristiky by k němu v principu dospět měly).

Toto tvrzení lze ostatně doložit i šachovou teorií - je znám případ konkrétní šachové partie, ve které aplikace heuristiky "soupeři je třeba ponechat co nejmenší prostor" vedla k horším výsledků, než kdyby použita nebyla.

Právě v souvislosti s hrou v šachy je jistě zajímavé tvrzení odborníků, že například světový velmistr se od průměrného hráče neliší ani tak v tom, o kolik tahů dokáže myslet dopředu, ale liší se v tom, jaké heuristiky používá.