Есептеу күрделілігі теориясында **алгоритмнің орташа есеппен күрделілігі** – бұл алгоритмді басқаруға қажетті белгілі бір есептеу ресурстарының (әдетте уақыт), барлық мүмкін болатын кіріс деректері бойынша орташаланған мөлшері. Тұжырымдама жиі нашар жағдайларда күрделілігі (ағыл.) қарама-қарсы қойылады, мұнда барлық кірістер бойынша алгоритмнің максималды күрделілігі қарастырылады.

Орташа есеппен күрделілікті зерттеудің үш негізгі себебі бар . Біріншіден, ең нашар жағдайда кейбір мәселелерді шешу қиын болуы мүмкін, осындай беталысқа әкелетін кіріс мәліметтер іс жүзінде сирек кездеседі, сондықтан орташа есеппен күрделілігі алгоритм өнімділігінің дәлірек өлшемі болуы мүмкін. Екіншіден, орташа есеппен күрделілігі криптография мен дерандомизациялау (ағыл.) қолдануға болатын қарастырылатын мәселе үшін күрделі деректерді генерациялау құралдары мен әдістемесін қамтамасыз етеді. Үшіншіден, орташа есеппен күрделілік бірдей негізгі күрделіліктегі (мысалы, жылдам сұрыптау ) алгоритмдер арасында тәжірибедегі ең тиімді алгоритмді анықтауға мүмкіндік береді.

Алгоритмдерді орташа есеппен талдау алгоритмнің "орташа" деректері ұғымын қажет етеді, бұл кіріс деректерінің, ықтималдығын үлестірілу туралы ойлауға әкеледі. Ықтималдық алгоритмін де қолдануға болады. Мұндай алгоритмдерді талдау **күтілетін күрделілікті** байланысты тұжырымдамасына әкеледі.

Тарих және негіздеме
--------------------

Орташа есеппен алгоритмдердің өнімділігі 1950 жылдары есептеу тиімділігінің заманауи ұғымдарын енгізгеннен кейін зерттелді. Бастапқы жұмыстардың көпшілігі полиномиалды ең нашар жағдайда уақыты алгоритмдер үшін белгілі болған есептерге назар аударды. 1973 жылы Дональд Кнут  «Бағдарламалау өнерінің» үшінші томын шығарды, онда ол сұрыптау және. медиананы есептеу сияқты ең нашар жағдайда полиномиалды уақытта шешілетін есептер үшін орташа алгоритмдердің өнімділігіне кең шолу жасады.

NP-толық есептердің тиімді алгоритмі жалпы жағдайда барлық кірістер үшін полиномиалды уақытта жұмыс істейді деп болжайды, бұл ең нашар жағдайда күрделілікке тең. Дегенмен, деректердің "аз" санында тиімсіз алгоритм іс жүзінде кездесетін деректердің "көпшілігі" үшін жеткілікті тиімді болуы мүмкін. Осылайша, алгоритмдердің қасиеттерін зерттеген жөн, олар үшін орташа күрделілігі есеппен ең нашар жағдайда күрделіліктен айтарлықтай өзгеше болуы мүмкін.

Орташа есеппен күрделіліктің іргелі тұжырымдамаларын Левин, Леонид Анатольевич әзірледі, ол 1986 жылы бір беттік мақала жариялады , онда ол орташа есеппен күрделілікті және толықтылық бойынша анықтап, distNP класының толық мәселесінің мысалын келтірді, орташа есеппен күрделілік бойынша NP-толықтығының аналогы.

Белгілі үлестірімдері бар тапсырмалардың жинақталуы
---------------------------------------------------

**Орташа есеппен тиімді алгоритм**

Бірінші мақсат – алгоритм «орташа есеппен» тиімді дегенді дәл анықтау. Орташа есеппен тиімді алгоритм ретінде барлық мүмкін кірістер үшін математикалық күтуі полиномиалды болып табылатын алгоритм деп анықтауға болады. Бұл анықтаманың әртүрлі кемшіліктері бар. Атап айтқанда, бұл анықтама есептеу моделіндегі өзгерістерге қатысты тұрақты емес (мысалы, көп таспалы Тьюринг машинасын бір таспалы машинасына ауыстыру кезінде). Мысалы, А алгоритмі х кірісінде t A (x) уақытында, ал B алгоритмі х кірісінде t A (x) 2 уақытында орындалсын. Яғни В А-ға қарағанда квадраттық баяу. Интуитивті түрде, орташа есеппен тиімділіктің кез-келген анықтамасы А орташа есеппен в орташа есеппен тиімді болған кезде ғана тиімді деген идеяны қолдануы керек. Дегенмен, кірістер ұзындығы n біркелкі бөлінген жолдан кездейсоқ алынғанын және A 1 n жолынан басқа барлық кірістерде n 2 уақытында жұмыс істейді делік, бұл 2 n уақытты алады. А алгоритмінің жұмыс уақытын математикалық күту полиноминалды екенін тексеру оңай, бірақ В алгоритмінің жұмысын математикалық күту экспоненциалды  .

Орташа есеппен тиімділіктің неғұрлым берік анықтамасын жасау үшін А алгоритмінің кейбір кірістерде полиноминалды уақыттан артық жұмыс істеуіне мүмкіндік беру мағынасы бар, бірақ А көп уақытты қажет ететін деректердің үлесі азаяды. Бұл идея жұмыс уақыты мен кіріс үлесі теңдестірілген орташа полиноминалды жұмыс уақыты үшін келесі формулада жазылған: 

{\displaystyle \Pr \_{x\in \_{R}D\_{n}}[t\_{A}(x)\geq t]\leq {\frac {p(n)}{t^{\epsilon }}}}

кез келген n, t, ε > 0 және p полиномы үшін, мұнда t A (x) x кірісіндегі A алгоритмінің орындалу уақытын білдіреді . Немесе оны келесідей жазуға болады 

{\displaystyle E\_{x\in \_{R}D\_{n}}[{\frac {t\_{A}(x)^{\epsilon }}{n}}]\leq C}

кейбір тұрақты С үшін, мұндағы n = |x| . Басқаша айтқанда, A алгоритмінің орташа күрделілігі жақсы, егер t A (n) қадамнан кейін А қадамдарынан басқа барлық есептерді шеше алатын болса. {\displaystyle {\frac {n^{c}}{(t\_{A}(n))^{\epsilon }}}} кіріс ұзындығы n, кейбір ε үшін c > 0 болатын тапсырмалардың үлесі  .

**Белгілі үлестірімдерге қатысты мәселелер**

Келесі қадам белгілі бір тапсырма үшін «орташа» кірісті анықтау болып табылады. Бұған әрбір тапсырманың кірісін белгілі бір ықтималдық үлестіріміне салыстыру арқылы қол жеткізіледі. Яғни, «орташа» есеп L тілінен (яғни кіріс деректерін білдіретін сөздер жиынынан) және байланысты D таралудан тұрады, нәтижесінде жұп (L, D) (белгілі үлестірімдері бар есеп) шығады . Ықтималдық үлестірімінің ең көп тараған екі класы:

1. Полиномиалды уақытта есептелетін үлестірімдер (P-есептелетін) кез келген берілген x кірісінің жиынтық тығыздығын есептеуге болатын үлестірімдер. Ресми түрде μ үлестірімі мен x ∈ {0, 1} n жолын ескере отырып, мәнді есептеуге болады {\displaystyle \mu (x)=\sum \limits \_{y\in \{0,1\}^{n}:y\leq x}\Pr[y]} полиномиалды уақытта. Бұдан шығатыны, Pr[x] да полиномиалды уақытта есептелетін болады.
2. Полиномиалды уақыта (P-құрастырылмалы) құрастырылмалы үлестірімдер деп полиномдық уақытта кездейсоқ іріктеу таңдауға болатын үлестірімдер болып табылады.

Бұл екі ұғым ұқсас болғанымен, баламасы емес. Егер үлестірім P-есептелетін болса, ол да P-құрастырылмалы, бірақ егер P ≠ P #P  болса, керісінше жағдай дұрыс емес.

1. ↑  Goldreich, Vadhan, 2007
2. ↑  Cormen, Leiserson, Rivest, Stein, 2009
3. 1 2  Bogdanov, Trevisan, 2006
4. ↑  Knuth, 1973
5. ↑  Levin, 1986
6. ↑  Wang, 1997
7. 1 2 3  Arora, Barak, 2009
8. ↑  Bogdanov, Trevisan, 2006