
- •Np толық есептердің кластары.
- •Np толықтық деген не?
- •P класы
- •Алгоритм верификациясы
- •Алгоритм дұрыстығы.
- •Алгоритм күрделілігін бағалау.
- •Алгоритм талдауындағы белгілеу жүйесі. Белгілеулерге анықтама бер.
- •Алгоритм тиімділігі дегеніміз не?
- •Алгоритм ұғымы, қасиеттері , түрлері
- •Алгоритмдер теориясы дегеніміз не? Алгоритмдер теориясының шығу тарихы.
- •Алгоритмдер теориясына кіріспе. Алгоритм ұғымы, анықтамасы.
- •P класы.
- •Алгоритмдерді талдау дегеніміз не?
- •Алгоритмдік шешімі болу және болмау ұғымы туралы айт.
- •Алгоритмнің бірігуі дегеніміз не?
- •Алгоритмнің зерттеу салалары
- •Алгоритмнің күрделілігі дегеніміз не?
- •Бағдарламаның дұрыстығын дәлелдеу әдісмтемесі
- •Бинарлық іздеу
- •Бөліп ал да басқар принципіне негізделген алгоритмдерді талдау.
- •Верификация дегеніміз не? Оның әдістері туралы айт?
- •Графта іздеудің қандай әдістері бар?
- •Есептеліну және шешімі болу дегеніміз не?
- •Есептердің алгоритмдік күрделілілігін өлшеу.
- •Күрделіліктің негізгі бағалауларының түрлері қандай?
- •Кірістіру арқылы сұрыптау
- •Қазіргі заманғы алгоритмдер теориясының даму бағыттары мен шешетін негізгі міндеттері.
- •Күрделілік функциясы бойынша алгоритмдерді жіктеу.
- •Қызыл-қара ағаштар.
- •Негізгі алгоритмдік проблемаларға нелер жатады?
- •Параллель алгоритмдердің күрделілігі.
- •Пирамидалық сұрыптау
- •Сараң алгоритмдердің күрделілігін бағалау.
- •Сұрыптау алгоритмдерін талдау, күрделілігін бағалау
- •Таңдау арқылы сұрыптау
- •Тьюринг машинасы дегеніміз не?
- •Шейкер сұрыптауы
- •Шелл арқылы сұрыптау
- •Іздеу ағашында орындалатын операциялар.(-)
- •Іздеудің екілік ағашы
- •Концептуалдық программалау. (-)
- •Алгоритмдерді синтездеуғе кіріспе(-)
- •Концептуалдық программалауды іске асырудың негізгі әдістемелік принциптері
- •Логикалық программаның синтездеу негіздері. Формуланы құрастыру.
- •Программаның синтездеу құрылымы. Есептеуге арналған амалдар
Алгоритм күрделілігін бағалау.
Программа орындау барысында ең қиын жұмыстардың бірі процедураны шақыру және циклдарды орындау болып табылады.
Егер бір процедура басқасын шақырса, соңғысының қиындығын дұрыс бағалау қажет.
Егер Fast ішкі процедураларында Slow процедурасы шақырылса, онда процедура қиындығы көбейтіледі. Осы кездегі алгоритм қиынды,ы O(N^2 )*O(N^3 )=O(N^5).
Егер денегізгі программа процедураларды кезекпен шақырса, онда олардығ қиындығы қосылады: O(N^2 )+O(N^3 )=O(N^3).
Қиындықты бағалаудың функциялары. Қазір бірнеше қиындықты анықтайтын функцияны қарастырайық. Функциялар қиындығы өсу реті бойынша орналасқан. Жоғары болған сайын орындалу бағасы тез болады:
1. C – константа
2. log(log(N))
3. log(N)
4. N^C, 0<C<1
5. N
6. N*log(N)
7. N^C, C>1
8. C^N, C>1
9 N!
Негізінен N*log(N) қиындығы бар алгоритм жақсы жылдамдықпен жұмыс жасайды. N^C қиындығы бар алгоритмді С мәні қатты үлкен болмаған жағдайда орындауға болады. C^N және N! Қатарлы Функциясы бар алгоритмді орындағанда қиындығы үлкен болуы мүмкін.
Алгоритм талдауындағы белгілеу жүйесі. Белгілеулерге анықтама бер.
Алгоритмдерді талдау алгоритмнің орындалуына қажетті ресурсарды анықтаудан тұрады. Кейде төмендегідей ресурстардың қажеттілігі бағаланады: жад, желінің өткізу қабілеті немесе қажетті аппараттық қамтама, бірақ көбінесе есептеу уақыты анықталады. Бір есепті шешудің бірнеше алгоритмдерін талдау арқылы ең тиімдісін таңдау оңай.
Алгоритмдерді жасау(разработка)
Алгоритмдерді жасаудың көптеген әдістері бар. Орналастыру(вставка) әдісімен жұмыс істейтін алгоритмде инкрементті тәсіл қолданылады: A[1..j-1] сұрыпталған ішкі массиві бар болған жағдайда кезекті A[j] элементін тұру керек орнына қоямыз, нәтижесінде сұрыпталған A[1..j] ішкі массивін аламыз.
Бұл жолы бөлу( “бөліп ал да басқар”) әдісі ретінде белгілі алгоритмдерді жасау тәсілін қарастырамыз.
Алгоритм тиімділігі дегеніміз не?
Алгоритм қандай да бір машинада командалардың жинағы түрінде орындалады. Бір есепті орындауға арналған екі немесе бірнеше алгоритмдердің орындалу жылдамдығын салыстыру үшін қолданылатын критерий (өлшем) жүйелік тиімділік деп аталады. Бір компьютерде бірдей деректер жинағымен бұл алгоритмдерді орындату арқылы олардың орындалуына кеткен салыстырмалы уақытты анықтауға болады.Ол үшін ішкі жүйелік сағат қолданылады.
Ішкі жүйелік сағатты қолданып уақытты бағалау бұл бір ғана есептің орындалуына арналған алгоритмдердің әрқайсысының жүйелік тиімділігінің өлшемі болады.
Кейбір алгоритмдердің орындалуында жадқа қойылған шектеулер проблема тудырады. Орындалу барысында ұзақ уақыт сақтау үшін бастапқы көлемді қысу қажет болады. Қандай да бір алгоритм пайдаланатын ішкі жадтың салыстырмалы санының өлшемі — бұл кеңістіктің тиімділігі (space efficiency). Бұл критерий алгоритмді қандай типті компьютер орындай алатынын және алгоритмнің толық жүйелік тиімділігін көрсетеді. Жаңа компьютерлік жүйелердің жадтарының көлемінің ұлғаюна байланысты бұл критерий маңызды болмай қалды.
Үшінші тиімділік критерийі — бұл есептеу тиімділігі (computational efficiency), ол алгоритмнің ішкі құрылымын қарастырады, оның жасалуын және алгоритмде қолданылатын итерациялар мен меншіктеу операторларын салыстыратын тесттердің санын да талдайды. Бұл өлшем типі нақты компьютерге тәуелсіз және бұл критерий алгоритмнің есептелу күрделілігін n-ге, яғни коллекциядағы деректер элементеріне қатысты өлшейді.
Тізімдер мен бұтақтар сияқты коллекциялардың жалпы кластарының деректерін өңдеу үшін алгоритмнің тиімділігінің өлшемі ретінде салыстыру қолданылады.