Одсецање

Један од основних принципа за добијање ефикаснијих алгоритама и програма је да рачунар не треба да израчунава ствари за које се унапред може проценити да нису потребне за добијање коначног решења проблема. Важан пример овог принципа се јавља код алгоритама претраге. Претрагу елемената не треба експлицитно вршити међу елементима за које се може унапред утврдити да не могу да задовоље услов претраге. Када прескочимо проверу таквих елемената, кажемо да смо учинили одсецање у претрази. Сличан принцип се примењује и када се врши оптимизација (тражи најмањи односно највећи елемент), када се може прескочити анализа елемената за које се унапред може доказати да нису већи (односно нису мањи) од траженог максимума (односно минимума).

Да би се осигурала коректност алгоритама у којима се врши одсецање увек је потребно веома пажљиво утврдити да је одсецање оправдано и да се у делу простора претраге који се не испитује заиста не може налазити решење проблема.

У наставку овог поглавља ћемо кроз одређен број примера приказати како се одсецањем постиже асимптотски ефикаснији алгоритам, пре свега вршењем одсецања током линеарне претраге. Један од најзначајнијих примера одсецања представља бинарна претрага, која ће, због свог значаја бити анализирана у посебном поглављу. Одсецање се примењује и у другим облицима претраге (бектрекинг претрази, претрази у дубину, претрази у ширину), о чему ће више бити речи у каснијим поглављима.

Задаци: