Сложеност просечног случаја

С Википедије, слободне енциклопедије

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

Постоје три основне мотивације за проучавање сложености просечног случаја.[1] Прво, иако неки проблеми могу бити сложени у најгорем случају, улази који изазивају овакво понашање се можда ретко јављају у пракси, тако да у том случају анализа просечне сложености може дати прецизније резултате приликом процене сложености алгоритма. Друго, анализа сложености просечног случаја обезбеђује алате и технике за генерисање примера проблема који се могу користити у областима као што су криптографија и дерандомизација (ен. derandomization). И трећа мотивација, сложеност просечног случаја омогућава разликовање најефикаснијег алгоритма у пракси међу алгоритмима са еквивалентно заснованом сложеношћу (нпр. квиксорт).

Анализа сложености просечног случаја захтева разумевање појма "просечног" улаза алгоритма, што доводи до проблема расподеле вероватноће над улазима. Алтернативно, може се користити рандомизовани алгоритам. Анализа таквих алгоритама доводи до сродног појма очекиване сложености.[2]

Историја и позадина[уреди | уреди извор]

Ефикасност алгоритама у просечном случају је почела да се изучава појавом савремених појмова ефикасности израчунавања који су развијени 1950—их година. Већи део овог иницијалног рада је био фокусиран на проблеме за које су већ били познати алгоритми са полиномијалном временском сложеношћу у најгорем случају.[3] 1973. године, Доналд Кнут[4] је објавио 3. том монографије Уметност рачунарског програмирања (енгл. The Art of Computer Programming) која опширно истражује ефикасност просечног случаја алгоритама за проблеме решиве у полиномијалном времену у најгорем случају (нпр. сортирање и тражење медијане).

Ефикасан алгоритам за NP-комплетне проблеме је окарактерисан као алгоритам који се извршава у полиномијалном времену за све улазе; то је еквивалентно захтеву за ефикасну сложеност у најгорем случају. Међутим, алгоритам који је неефикасан за мали број улаза и даље може бити ефикасан за већину улаза који се јављају у пракси. Према томе, пожељно је проучавати својства ових алгоритама где се просечна сложеност може разликовати од сложености најгорег случаја и пронаћи начин за налажење везе између њих.

Фундаменталне појмове сложености просечног случаја је 1986. године развио Леонид Левин када је објавио једнострани рад[5] дефинисањем сложености просечног случаја и комплетности кроз пример за distNP.

Дефиниције[уреди | уреди извор]

Ефикасност сложености просечног случаја[уреди | уреди извор]

Први задатак је прецизно дефинисати шта се подразумева под алгоритмом чија је сложеност "у просеку". Иницијални покушај би био да покушамо да дефинишемо ефикасан алгоритам просечне сложености као алгоритам који се извршава у очекиваном полиномијалном времену за све могуће улазе. Оваква дефиниција има разне недостатке; специјално, није робусна променама у моделу израчунавања. На пример, претпоставимо да се алгоритам А извршава у времену tA(x) за улаз x и алгоритам B се извршава у времену tA(x)2 за улаз x; тј, B је квадратно спорији од А. Интуитивно, било која дефиниција сложености просечног случаја би требало да обухвати идеју да је А ефикасан у просеку ако и само ако је B ефикасан у просеку. Претпоставимо, међутим, да су сви улази изведени насумично из униформне дистрибуције ниски дужине n, и да се А извршава у времену n2 за све улазе изузев за стрингове 1n који захтевају 2n времена. Онда се лако може проверити да је очекивано време извршавања алгоритма А полиномијално, али очекивано време извршавања алгоритма B је експоненцијално.[3] За креирање робусније дефиниције сложености просечног случаја, има смисла дозволити алгоритму А да се извршава дуже од полиномијалног времена за неке улазе, али да део улаза за које А захтева све веће и веће време извршавања постаје све мањи и мањи. Ова интуиција је обухваћена наредном формулом за просечно полиномијално време извршавања, која балансира полиномијални компромис између времена извршавања и дела улаза:

за свако n, t, ε > 0 и полином p, где tA(x) означава време извршавања алгоритма А за улаз x.[6] Алтернативно, ово може бити записано као

за неку константу C, где је n = |x|.[7] Другачије речено, алгоритам А има има добру сложеност просечног случаја ако, након покретања за tA(n) корака, А може да реши све осим делова улаза дужине n, за неке ε, c > 0.[3]

Проблем расподеле[уреди | уреди извор]

Следећи корак је дефинисање просечног улаза за одређени проблем. Ово се постиже удруживањем улаза сваког проблема са конкретном расподелом вероватноће. Проблем просечног случаја се састоји од језика L и придружене расподеле вероватноће D која формира пар (L, D).[7] Две најчешће класе расподеле које су дозвољене су:

  1. Полиномијално израчунљиве расподеле (П-израчунљиве): ово су расподеле за које је могуће израчунати кумулативну густину за било који улаз x. Формалније, за дату расподелу вероватноће μ и ниску x ∈ {0, 1}n могуће је израчунати све могуће вредности у полиномијалном времену. Ово подразумева да је Pr[x] такође израчунљив у полиномијалном времену.
  2. Полиномијално узорковане расподеле (П-узорковане): ово су расподеле из којих је могуће извући насумичне узорке у полиномијалном времену.

Ове две формулације, иако су сличне, нису еквивалентне. Ако је расподела П-израчунљива она је такође и П-узоркована, али обрнуто није тачно ако P ≠ P#P.[7]

AvgP и distNP[уреди | уреди извор]

Проблем расподеле (L, D) је у класи сложености AvgP ако постоји ефикасни алгоритам просечне сложености за L, као што је дефинисано горе. Класа AvgP се у литератури понекад назива distP.[7]

Проблем расподеле (L, D) је у класи сложености distNP ако је L у NP и ако је D П-израчунљива. Када је L у NP и D је П-узоркована, (L, D) припада sampNP.[7]

Заједно, AvgP и distNP дефинишу аналогије просечног случаја од P и NP, респективно.[7]

Редукције између проблема расподеле[уреди | уреди извор]

Нека су (L,D) и (L',D') два проблема расподеле. Просечан случај (L, D) се редукује на (L', D') (пише се (L, D) ≤AvgP (L', D')) ако постоји функција f која за свако n, за улаз x може бити израчуната у полиномијалном времену од n и

  1. (Исправност) x ∈ L ако и само ако f(x) ∈ L'
  2. (Доминација) Постоје полиноми p and m такви да, ѕа свако n и y,

Услов доминације намеће идеју да ако је проблем (L, D) тежак у просеку, онда је и (L', D') такође тежак у просеку. Интуитивно, редукција би требало да обезбеди начин решавања инстанце x проблема L израчунавањем f(x) и прослеђивањем излаза алгоритму који решава L'. Без овог услова, ово можда не би било могуће пошто алгоритам који решава L у полиномијалном времену у просеку може трајати у времену које није полиномијално за мали број улаза, али f можда пресликава ове улазе у много већи скуп D', па се онда алгоритам A' више не извршава у полиномијалном времену у просеку.[6]

DistNP-комплетни проблеми[уреди | уреди извор]

Аналогија просечне сложености NP-комплетности је distNP-комплетност. Проблем расподеле (L', D') је distNP-комплетан ако је (L', D') у distNP и за сваку (L, D) у distNP, (L, D) је сводљива на (L', D').[7]

Пример distNP-комплетног проблема је ограничени Халтинг проблем, BH, дефинисан као:

BH = {(M,x,1t) : M је недетерминистичка Тјурингова машина која прихвата x у ≤ t корака.}[7]

У његовом оригиналном раду, Левин приказује пример дистрибутивног поплочавања који је NP-комплетан.[5] Истраживања познатих distNP-комплетних проблема су доступна на Вебу.[6]

Једна област активног истраживања укључује проналажење нових distNP-комплетних проблема. Међутим, проналажење таквих проблема може бити компликовано због резултата Гуревича који показују да било који проблем расподеле са плитком расподелом не може бити distNP-комплетан осим уколико не важи EXP = NEXP.[8] (Плитка расподела μ је расподела за коју важи да је ε > 0 за свако x, μ(x) ≤ 2-|x|ε.) Ливнови резултати показују да сви природни NP проблеми имају DistNP-комплетне верзије.[9] Међутим, циљ проналажења природних проблема расподеле који су DistNP-комплетни и даље није постигнут. [10]

Примене[уреди | уреди извор]

Алгоритми сортирања[уреди | уреди извор]

Као што је већ речено, много раних радова се односи на сложеност просечног случаја за проблеме за које алгоритми са полиномијалном сложеношћу већ постоје (нпр. сортирање). На пример, многи алгоритми сортирања који користе случајност (нпр. квиксорт), у најгорем случају имају сложеност O(n2), али у просечном случају време извршавања је O(nlog(n)), где n представља величину улаза који се сортира.[2]

Криптографија[уреди | уреди извор]

За многе проблеме, анализа сложености просечног случаја се врши како би се пронашли ефикасни алгоритми за проблеме за које се сматра да су тешки у најгорем случају. Код примена у криптографији, међутим, важи обрнуто: сложеност најгорег случаја је ирелевантна; уместо тога желимо да гарантујемо да је сложеност просечног случаја за сваки алгоритам који разбија енкрипцију неефикасан.[11]

Према томе, све енкрипције се заснивају на постојању такозваних one-way функција (функције које се лако израчунавају у једном смеру, али у супротном смеру не).[3] Иако је постојање one-way функција и даље отворен проблем, многи кандидати one-way функција су базирани на NP-тешким проблемима као што су факторизација целих бројева или прорачунавање дискретног логаритма. Потребно је нагласити да није пожељно да функција кандидат буде NP-комплетна зато што то гарантује само да највероватније не постоји ефикасан алгоритам за решавање проблема у најгорем случају; оно што ми заправо желимо је да гарантујемо да не постоји ефикасан алгоритам који решава проблем за случајне улазе. Заправо, и факторизација бројева и дискретни логаритам су у NP ∩ coNP и због тога се не верује да су NP-комплетни.[7] Чињеница да је цела криптографија заснована на постојању сложености просечних случајева сложених проблема у NP је једна од главних мотивација за изучавање просечне сложености.

Други резултати[уреди | уреди извор]

1990-их, Impagliazzo и Левин показују да ако постоји ефикасан алгоритам у просечном случају за distNP-комплетан проблем према униформној расподели, онда постоји алгоритам у просечном случају за сваки проблем у NP према било којој полиномијално узоркованој расподели.[12] Примене ове теорије за природне расподеле и даље остају као отворено питање.[3]

1992., Ben-David et al., показују да ако сви језици у distNP имају у просеку добре алгоритме одлучивања, они такође у просеку имају и добре алгоритме за претрагу. Додатно, они показују да овај закључак важи и под слабијом претпоставком: ако је сваки језик у NP у просеку лак за алгоритме одлучивања у погледу уноформне расподеле, онда је он такође лак у просеку и за алгоритме за претрагу у погледу униформне расподеле.[13] Према томе, криптографичке one-way функције могу да постоје само ако постоје distNP проблеми у погледу униформне расподеле који су тешки у просеку за алгоритме одлучивања.

1993., Feigenbaum и Fortnow показују да није могуће доказати, под неприлагодљивим случајним редукцијама, да постојање у просеку доброг алгоритма за distNP-комплетан проблем према униформној расподели имплицира постојање ефикасног алгоритма у најгорем случају за све проблеме у NP.[14] 2003., Bogdanov и Trevisan генерализују овај резултат за произвољне неприлагодљиве редукције.[15] Ови резултати показују да вероватно није могуће пронаћи везу између сложености просечног случаја и сложености најгорег случаја преко редукција.[3]

Види још[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ O. Goldreich and S. Vadhan, Special issue on worst-case versus average-casecomplexity, Comput. Complex. 16, 325–330, 2007.
  2. ^ а б Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009) [1990]. Introduction to Algorithms (3rd изд.). MIT Press. стр. 28. ISBN 978-0-262-03384-8. 
  3. ^ а б в г д ђ A. Bogdanov and L. Trevisan, "Average-Case Complexity," Foundations and Trends in Theoretical Computer Science, Vol. 2, No 1 (2006) 1–106.
  4. ^ D. Knuth, The Art of Computer Programming. Vol. 3, Addison-Wesley, 1973.
  5. ^ а б L. Levin, "Average case complete problems," SIAM Journal on Computing, vol. 15, no. 1. стр. 285–286, 1986.
  6. ^ а б в J. Wang, "Average-case computational complexity theory," Complexity Theory Retrospective II. стр. 295–328, 1997.
  7. ^ а б в г д ђ е ж з S. Arora and B. Barak, Computational Complexity: A Modern Approach, Cambridge University Press, New York, NY, 2009.
  8. ^ Y. Gurevich, "Complete and incomplete randomized NP problems", Proc. 28th Annual Symp. on Found. of Computer Science, IEEE (1987). стр. 111–117.
  9. ^ N. Livne, "All Natural NPC Problems Have Average-Case Complete Versions," Computational Complexity, to appear. Preliminary version in ECCC, TR06-122, 2006.
  10. ^ O. Goldreich, "Notes on Levin's theory of average-case complexity," Technical Report TR97-058, Electronic Colloquium on Computational Complexity, 1997.
  11. ^ J. Katz; Y. Lindell (2007). Introduction to Modern Cryptography (Chapman and Hall/Crc Cryptography and Network Security Series). Chapman and Hall/CRC. 
  12. ^ R. Impagliazzo and L. Levin, "No Better Ways to Generate Hard NP Instances than Picking Uniformly at Random," in Proceedings of the 31st IEEE Sympo- sium on Foundations of Computer Science. стр. 812–821, 1990.
  13. ^ S. Ben-David, B. Chor, O. Goldreich, and M. Luby, "On the theory of average case complexity," Journal of Computer and System Sciences, vol. 44, no. 2. стр. 193–219, 1992.
  14. ^ J. Feigenbaum and L. Fortnow, "Random-self-reducibility of complete sets," SIAM Journal on Computing, vol. 22. стр. 994–1005, 1993.
  15. ^ A. Bogdanov and L. Trevisan, "On worst-case to average-case reductions for NP problems," in Proceedings of the 44th IEEE Symposium on Foundations of Computer Science. стр. 308–317, 2003.

Литература[уреди | уреди извор]

  • J. Katz; Y. Lindell (2007). Introduction to Modern Cryptography (Chapman and Hall/Crc Cryptography and Network Security Series). Chapman and Hall/CRC.