
- •Np толық есептердің кластары.
- •Np толықтық деген не?
- •P класы
- •Алгоритм верификациясы
- •Алгоритм дұрыстығы.
- •Алгоритм күрделілігін бағалау.
- •Алгоритм талдауындағы белгілеу жүйесі. Белгілеулерге анықтама бер.
- •Алгоритм тиімділігі дегеніміз не?
- •Алгоритм ұғымы, қасиеттері , түрлері
- •Алгоритмдер теориясы дегеніміз не? Алгоритмдер теориясының шығу тарихы.
- •Алгоритмдер теориясына кіріспе. Алгоритм ұғымы, анықтамасы.
- •P класы.
- •Алгоритмдерді талдау дегеніміз не?
- •Алгоритмдік шешімі болу және болмау ұғымы туралы айт.
- •Алгоритмнің бірігуі дегеніміз не?
- •Алгоритмнің зерттеу салалары
- •Алгоритмнің күрделілігі дегеніміз не?
- •Бағдарламаның дұрыстығын дәлелдеу әдісмтемесі
- •Бинарлық іздеу
- •Бөліп ал да басқар принципіне негізделген алгоритмдерді талдау.
- •Верификация дегеніміз не? Оның әдістері туралы айт?
- •Графта іздеудің қандай әдістері бар?
- •Есептеліну және шешімі болу дегеніміз не?
- •Есептердің алгоритмдік күрделілілігін өлшеу.
- •Күрделіліктің негізгі бағалауларының түрлері қандай?
- •Кірістіру арқылы сұрыптау
- •Қазіргі заманғы алгоритмдер теориясының даму бағыттары мен шешетін негізгі міндеттері.
- •Күрделілік функциясы бойынша алгоритмдерді жіктеу.
- •Қызыл-қара ағаштар.
- •Негізгі алгоритмдік проблемаларға нелер жатады?
- •Параллель алгоритмдердің күрделілігі.
- •Пирамидалық сұрыптау
- •Сараң алгоритмдердің күрделілігін бағалау.
- •Сұрыптау алгоритмдерін талдау, күрделілігін бағалау
- •Таңдау арқылы сұрыптау
- •Тьюринг машинасы дегеніміз не?
- •Шейкер сұрыптауы
- •Шелл арқылы сұрыптау
- •Іздеу ағашында орындалатын операциялар.(-)
- •Іздеудің екілік ағашы
- •Концептуалдық программалау. (-)
- •Алгоритмдерді синтездеуғе кіріспе(-)
- •Концептуалдық программалауды іске асырудың негізгі әдістемелік принциптері
- •Логикалық программаның синтездеу негіздері. Формуланы құрастыру.
- •Программаның синтездеу құрылымы. Есептеуге арналған амалдар
Күрделілік функциясы бойынша алгоритмдерді жіктеу.
Алгоритмнің күрделілігі.
Big-O-бағалау алгоритмнің орындалу уақытының өлшемін (runtime) береді. Әдетте алгоритмнің жақсы және нашар жағдайлар үшін есептеу тиімділіктері әртүрлі , сондықтан әр нақты жағдай үшін Big-О мәні есептеледі. Егер алгоритм реті —0(1) болса, оның реті коллекциядағы элементтер санына тәуелсіз болады. Бұл алгоритм тұрақты уақыт бірлігі ішінде орындалады, мысалы егер массив соңын көрсететін индекс сақталса, массив элементіне мән меншіктеу реті 0(1) болады.
Алгоритм О(п) сызықты (linear). Оның күрделілігі тізім размеріне пропорционал. Реті log2n болатын алгоритмдер логарифмдік (logarithmic) деп аталады. Мұндай күрделілік тізімдерді бірнеше рет ішкі тізімдерге 1/2, 1/4, 1/8 етіп бөлгенде туындайды. Мысалы бинарлық бұтақтарда іздеу алгоритмдерінің күрделілігі орташа және нашар жағдайлар үшін O(log2n) болады.
Реті О(п2) болатын алгоритмдер квадраттық (quadratic) деп аталады. Шағын n үшін ғана практикада қолданылады. п екіге артқан сайын алгоритмнің орындалу уақыты 4-ке артады.
Реті О(n3) болатын алгоритмдер өте баяу орындалады, кубтық (cubic) уақытты қажет етеді. п екіге артқан сайын алгоритмнің орындалу уақыты 8 есе артады. Оның мысалына графтарға қолданылатын реті О(п3) болатын Уоршел алгоритмі жатады.
Күрделілігі О(2п) тең алгоритмде экспоненциальды күрделілік (exponential complexity) болады. Өте баяу орындалатындықтан өте аз п үшін қолданылады.
Күрделілікті бағалаудың функциялары дегеніміз не?
Алгоритмнің күрделілігінің f(n) функциясының негізгі бағалауы Q бағасы. Мұндағы n - деректер көлемінің шамасы немесе кірістің ұзындығын білдіреді.
Алгоритмнің күрделілігінің негізгі бағасы f(n)= Q (g(n))
егер g > 0 , n > 0 болғанда мынандай оң с1, с2, n0, болса : с1 g(n) <= f(n) <= с2 g(n)
n > n0 болғанда мынандай с1 мен c2 табуға болады, үлкен n үшін f(n) мәні мына с1 g(n) және с2 g(n) екеуінің аралығында болады.
Бұл жағдайда g(n) функциясын f(n) функциясының асимтотикалық нақты бағасы деп атайды.
Мысалы heapsort сұрыптау әдісі үшін күрделілік бағасы f(n)= Q (nlogn) болады, яғни g(n) = nlogn.
f(n)= Q (g(n)) теңдіктен g(n) = Q (f(n)) туындайды.
Маңыздысы: Q (g(n)) функция емес, функциялардың жиыны, ол f(n)-нің өсуін тұрақты көбейткішке дейін дәлдікпен көрсетеді.
Q бағасы бір мезгілде функция өсімінің жоғары және төменгі бағаны береді. Көбінесе бұл бағаларды жеке қарастыруға тура келеді.
О бағасы алгоритм қиындығының, яғни f(n) функциясының өсуінің жоғарғы асимптотикалық бағасын береді. f(n)= О (g(n)) болады, егер
орындалса.
Басқаша айтқанда тұрақты көбейткішке дейін дәлдікпен g(n) функциясына қарағанда f(n) функциясы жылдам өспейтін функциялар класын анықтайды.
бағасы алгоритм қиындығының, яғни f(n) функциясының өсуінің төменгі асимптотикалық бағасын береді және тұрақты көбейткішке дейін дәлдікпен g(n) функциясына қарағанда f(n) функциясы баяу өспейтін функциялар класын анықтайды.
f(n)= (g(n)) болады, егер
Егер f(n)= О (g(n)) және f(n)= (g(n)) орындалса ғана, f(n)= Q (g(n)) теңдігі орындалады
Алгоритмдерді асимптотикалық талдауды практикалық та , теориялық та маңызы зор. Мысалы,элементтерді жұптап сұрыптауға негізделген