Հաշվարկային բարդության տեսությունը կենտրոնանում է հաշվողական խնդիրների դասակարգման վրա՝ ըստ դրանց ռեսուրսների օգտագործման և այդ դասերը միմյանց հետ կապելու վրա: Հաշվողական խնդիրը համակարգչի կողմից լուծվող խնդիր է: Հաշվարկային խնդիրը լուծելի է մաթեմատիկական քայլերի մեխանիկական կիրառմամբ, օրինակ՝ ալգորիթմով:
Ի՞նչ նկատի ունեք ալգորիթմի բարդություն ասելով:
Ալգորիթմի բարդությունը է ժամանակի և/կամ տարածության չափը, որը պահանջվում է ալգորիթմի կողմից տվյալ չափի մուտքագրման համար (n):
Ի՞նչ է ալգորիթմական բարդությունը տվյալների կառուցվածքում:
Ալգորիթմական բարդությունը չափում է, թե որքան ժամանակ կպահանջվի ալգորիթմի ավարտի համար՝ հաշվի առնելով n չափի մուտքագրումը: Եթե ալգորիթմը պետք է մասշտաբի, ապա այն պետք է հաշվարկի արդյունքը վերջավոր և գործնական ժամանակում, որը սահմանվում է նույնիսկ n-ի մեծ արժեքների համար: Այդ պատճառով բարդությունը հաշվարկվում է ասիմպտոտիկ կերպով, երբ n-ը մոտենում է անսահմանությանը:
Ինչու է ալգորիթմական բարդությունը կարևոր:
Համակարգչային գիտնականները օգտագործում են բարդության մաթեմատիկական չափումներ, որոնք թույլ են տալիս կանխատեսել կոդը գրելուց առաջ, թե որքան արագ կաշխատի ալգորիթմը և որքան հիշողություն կպահանջի: Նման կանխատեսումները կարևոր ուղեցույց են ծրագրավորողների համար, ովքեր իրականացնում և ընտրում են ալգորիթմներ իրական աշխարհի հավելվածների համար:
Ինչպե՞ս է հաշվարկվում ալգորիթմական բարդությունը:
Ցանկացած օղակի համար մենք պարզում ենք դրանց ներսում գտնվող բլոկի գործարկման ժամանակը և այն բազմապատկում ենք ծրագրի անգամների քանակով:կրկնել հանգույցը: Բոլոր օղակները, որոնք աճում են մուտքային չափին համաչափ, ունեն գծային ժամանակային բարդություն O(n): Եթե դուք շրջեք զանգվածի միայն կեսը, դա դեռ O(n) է: