Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplom_Kaliyev.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
951.81 Кб
Скачать

1.3.2 Күрделілік теориясы

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

Әдетте есептеу күрделілігі “Үлкен О” нотациясы арқылы көрсетіледі, яғни есептеу күрделілігі дәрежесінің шамасымен [2]. Бұл жай ғана көпмүшелікке жіктелген және n өскен сайын шапшаң өсетін күрделілік функциясының мүшесі, төменгі ретті барлық мүшелер ескерілмейді. Мысалға, егер берілген алгоритмнің уақыттық күрделілігі 4n2 + 7n + 12, онда O(n2) түрінде жазылатын есептеу күрделілігі n2-қа тең.

Берілген тәсілмен өлшенетін уақыттық күрделілік оның іске асу жолына тәуелді емес. Әр түрлі инструкцияларды орындаудың дәл уақытын да, биттердің санын да, процессордың жылдамдығын да біліп керек емес. Бұл нотация кіріс мәліметтердің көлемі уақыт пен жадыға қойылатын талаптарға қалай әсер ететінін көрсетеді. Мысалға, егер T=O(n), онда кіріс мәліметтердің екі еселенуі алгоритмді орындау уақытын да екі еселейді. Егер T=O(2n), кіріс мәліметке бір биттің қосылуы алгоритмді орындау уақытын екі есе көбейтеді.

Алгоритмдерді олардың уақыттық және кеңістіктік күрделілігіне байланысты жіктейді. Егер алгоритмнің күрделілігі n-нен тәуелсіз болса, онда оны тұрақты дейді: O(1). Егер алгоритмнің күрделілігі O(n) болса, онда оны сызықты дейді. Алгоритмдер квадратталған, кубталған және т.б. бола алады. Бұл алгоритмдердің барлығы – полиноминалды, олардың күрделілігі – O(nm), мұнда m – тұрақты сан. Егер алгоритмнің күрделілігі O(tf(n)) болса, онда оны экспоненциалды дейді, мұнда t – бірден үлкен тұрақты сан, f(n) – n-ге байланысты қандай да бір полиноминалды функция. Экспоненциалды алгоритмдердің күрделілігі O(cf(n)) болса, онда оны суперполиноминалды дейді, мұндағы с – тұрақты, ал f(n) тұрақты санға қарағанда шапшаң, сызықты функцияға қарағанда баяу өсетін функция.

Шифрлеу алгоритмін тура шабуыл арқылы бұзу мәселесін қарастырайық. Мұндай шабуылдың уақыттық күрделілігі мүмкін болатын кілттер санына пропорционал, ал кілт өз кезегінде оның ұзындығына экспоненциалды тәуелді. Егер n – кілттің ұзындығы, онда тура шабуылмен бұзудың күрделілігі O(2n).

Күрделілік теориясы нақты бір алгоритмнің проблеманы шешу күрделілігімен қоса, проблемалардың өздерін күрделілік бойынша жіктейді. Күрделлілік теориясы проблеманың ең күрделі нұсқауын Тьюринг машинасы деген атпен белгілі теориялық компьютерде шешуге кететін минималды уақыт пен жадыны қарастырады. Тьюринг машинасы оқу-жазу үшін берілген шексіз ленталы жадысы бар шекті автомат түріндегі есептеудің шынайы моделі болып табылады.

Ең төменде орналасқан P классы полиноминалды уақытта шешуге болатын барлық проблемалардан тұрады. NP классы – полиноминалды уақытта тек Тьюрингтің детерминделген машинасында шешуге болатын проблемалардан тұрады (болжам жасай алатын Тьюрингтің қарапайым нұсқасы). Машина не “сәтті болжам” арқылы, не параллельді түрде барлық болжамдарды полиноминалды уақытта қоя отырып және полиноминалды уақытта өзінің болжамдарын тексере келе, проблеманың шешімін қарастырады [2].

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

Күрделілік теориясы әр түрлі әдістер мен алгоритмдерді есептеу күрделілігіне талдау жүргізудің методологиясын қамтамасыз етеді. Ол криптографиялық әдістер мен алгоритмдерді салыстырады және олардың қауіпсіздігін анықтайды.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]