Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
dain algoritm dina.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
442.58 Кб
Скачать
  1. Бағдарламаның дұрыстығын дәлелдеу әдісмтемесі

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

Алгоритмнің дұрыстығын дәлелдеу дегеніміз төмендегідей тұжырымды дәлелдеу деген сөз: «Егер кіріс деректері кіріс шартын қанағаттандырса, онда алгоритм ақырлы қадамнан кейін жұмысын тоқтатып, шығыс деректері талап етілген шығыс шартына сейкес келеді».

Тәжірибе жүзінде, мұндай тұжырымды 2-ге бөледі:

«Егер кіріс деректері кіріс шартын қанағаттандырса, онда алгоритм ақырлы қадамнан кейін жұмысын тоқтатып, шығыс деректері талап етілген шығыс шартына сейкес келеді».

«Егер кіріс деректері кіріс шартын қанағаттандырса, онда алгоритм ақырлы қадамдардан кейін жұмысын аяқтайды».

(1) тұжырым ғана дәлелденген алгоритм жартылай дұрыс немесе жартылай түзетілген деп аталады. Егер де (1) және (2) бар болса, онда алгоритм дұрыс немесе түзелген деп аталады.

(2) тұжырымды дәлелдеу жеңе алмайтын қиындықтар тудырғанда, (1) ғана дәлелдеумен шектелетіндігін айта кетейік. Мысалға, ұқсастық облысы белгісіз болатын итерациялық алгоритмдер сондай. Ондай кезде, егер алгоритм құптауға болатын уақытта жұмысын аяқтаса, онда жауаптың дұрыстығы кепілденеді.

  1. Бинарлық іздеу

Екілік (Бинарлық) іздеу - Сұрыпталған массив элементтерінің классикалық алгоритмделініп ізделінуі. Яғни, х қатарының у берілген санын немесе бөлімін табу үшін, оны жақындаған сайын екіге бөліп отыру болып табылады.

Бинарлық іздеу ағашы бинарлы ағаш мәліметтер құрылымы. Әр түйіннің ішінде кілт және массив элементтерінің мәні болады. Ішкі сол ағаштың түйіндерінің кілттері ішкі оң жақ ағаштарының түйіндерінің кілттерінен кіші болады.

  1. Бөліп ал да басқар принципіне негізделген алгоритмдерді талдау.

Декомпозиция әдісі

Көптеген пайдалы алгоритмдердің құрылымы рекурсивті болып келеді: белгілі есепті шешу үшін олар өз өзін рекурсивті бір немесе бірнеше рет шақырады, Мұндай алгоритмдер көбіне декомпозиция немесе бөлу әдістерінің көмегімен жасалады : күрделі есептер бірнеше қарапайым есептерге бөлінеді , олар берілген есепке ұқсас келеді, бірақ көлемі аз болады; кейіннен осы қосымша есептер рекурсивті әдіспен шешіледі, кейіннен алынған шешімдер берілген есептің шешімін табу мақсатында қосылады(комбинируется).

“бөліп ал да басқар” декомпозиция әдісі негізінде жатқан парадигма рекурсияның әрбір деңгейінде 3 этаптан өтеді.

Бөлу: есепті бірнеше кіші есептерге бөлу.

Бағындыру – алдыңғы кіші есептерді рекурсивті шешу. Кіші есептің көлемі жеткілікті аз болса, бөлінген кіші есептер тікелей шешіледі.

Қосу(комбинирование)- қосымша есептердің шешімдері арқылы берілген есептің шешімін шығару.

Біріктіріп сорттау(merge sort) алгоритмі бөлу әдісінің парадигмасына сәйкес келеді. Оның жұмысын төмендегідей сипаттауға болады.

Бөлу: сұрыпталатын n элементтен тұратын тізбек кішірек екі тізбекке бөлінеді, олардың әрбірінде n/ 2 элементтен тұрады.

Бағындыру: екі қосымша тізбек те біріктіру әдісімен сұрыпталады.

Қосу(комбинирование): екі сұрыпталған тізбекті біріктіріп соңғы шешімді аламыз.

Рекурсия сұрыпталатын тізбектің ұзындығы 1-ге тең болған кезде өзінің төменгі шегіне жетеді. Бұл жағдайда барлық жұмыс істелінді деп есептеледі, себебі мұндай тізбек реттелген деп есептеледі.

Біріктіру әдісі арқылы сұрыптау барысында орындалатын негізгі операция, ол –қосу барысында екі сұрыпталған тізбектерді біріктіру.

Бөліп ал да басқар” принципіне негізделген алгоритмдерді талдау.

Егер алгоритм өз өзіне рекурсивті бұрылса оның жұмыс уақыты рекурентті теңдеумен немесе рекурентті байланыс көмегімен сипатталады. Мұнда n кіріс көлемі бар есептің барлығын шешу үшін қажетті толық уақыт қосымша есептерді шешуге кететін уақыт арқылы сипатталады. Кейін осы рекурентті теңдеу белгілі бір математикалық әдістердің көмегімен шешіледі және алгоритмнің өнімділігінң шекаралары қойылады.

“Бөліп ал да басқар” принципіне негізделген алгоритм уақыты үшін рекуренттік байланысты алу 3этапқа негізделеді. T(n) арқыты өлшемі n-ге тең есепті шешу уақытын белгілейміз. Егер есептің өлшемі жеткілікті аз болса, айталық n<=c , мұнда c- кейбір алдын ала белгілі константа, онда есеп белгілі бір Θ(1)(тета )нақтыланған уақытта шешіледі. Есеп а кіші есептерге бөлінеді десек, олардың көлемі берілген есептің көлемінің 1/b бөлшегіне тең. Егер есепті қосымша есептерге бөлу уақыты D(n) уақыт аралығында болса, ал кіші есептердің шешімін бастапқы есептің шешіміне біріктіру уақыты C(n) уақытына тең болса, төмендегідей рекуреттік байланысты аламыз:

Біріктіріп сұрыптау алгоритмін талдау

Бұл алгоритм сұрыпталатын элементтердің еркін санына дұрыс жұмыс істейді. Дегенмен егер бастапқы есептің элементтер саны екінің дәрежесіне тең болса, онда рекурентті теңдеудің талдауы оңайланады. Бұл жағдайда бөлудің әрбір қадамында екі ішкі тізбектер алынады, олардың өлшемі дәл n/2 –ге тең болады.

n санды сұрыптайтын алгоритмнің T(n) жұмыс уақытының жоғарғы бағасы үшін рекурентті теңдеу алу үшін төмендегідей пайымдаймыз. Біріктіру әдісімен бір элементті сұрыптау нақты уақыт ішінде жасалады. Егер n>1 , жұмыс уақыты төмендегідей бөлінеді.

Бөлу: Бөлу барысында ішкімассивтің ортасы анықталады. Бұл операция нақты уақытқа созылады, сондықтан D(n) =Θ(1).

Бағындыру: көлемі n/2 –ге тең екі ішкі есеп рекурсивті шешіледі. Бұл ішкіесептерді шешу уақыты 2Т(n/2 ) –ге тең.

Қосу(комбинирование): біріктіру процедурасы n-элементті ішкі массивте Θ(n) уақытта орындалады, сондықтан C(n)= Θ(n).

D(n) және C(n) функцияларын қосып Θ(n) және Θ(1) шамаларының қосындысын аламыз, ол сызықтық функция болып табылады, яғни Θ(n) бұл шамаға 2Т(n/2 ) –ні қосып бағындыру этабына сәйкес ең нашар жағдайдағы біріктіру әдісі бойынша сұраптау алгоритмінің T(n) жұмыс уақыты үшін рекурентті байланыс аламыз

  1. В-ағаштар.

Б-ағаштары дегеніміз- магниттік дискіде немесе тікелей жеткізілетін құралдарда ақпаратты сақтауды қамтамасыз ететін теңестірілген ағаштардың бір түрі. Б-ағаштары қызыл–қара ағаштарға ұқсайды.Айырмашылығы мынада: қолданылатын дисктің мінездемесіне қарай Б-ағаштарының бөліктерінде көп бала, іс жүзінде мыңға дейін болуы мүмкін.Осыған байланысты ағаштың биіктігі O (log n)-ді бағалау нәтижесі бойынша қызыл–қара ағаштарға қарағанда айтарлықтай аз мөлшерде. Қызыл–қара ағаштар сияқты Б-ағаштары да O (log n) мерзімінде көптеген n өлшемдегі әр қилы операцияларды жүзеге асыра алады. x түйіншегі, сақта- n[x] кілттердің, n имеет[x] + 1 бала-шағалардың. x кілттерге деген сақтал- қызмет ет- барлық оның бұтақтарын бас n бөлетін шекаралармен[x] + 1 топтардың; үшін бас-басы топты бір x бала-шағаларынан жауап береді. ізденісте Б-ағашта біз кілтті пен n салыстырамыз[x] ара x сақталатын кілттермен, қарамастан және нәтижені салыстырамыз.

Б-ағаштарымен жүргізілетін негізгі операциялар. Б-ағашының тамыры әрқашанда оперативті есте болады деп санауға болады,өйткені дисктен оқу операциясы тамыр үшін қажет етілмейді; дегенмен де біз ылғи да тамырды өзгерткенде, дискте сақтауымыз керек.

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