Фсо пгу 18. 2/07 Қазақстан Республикасының Білім және ғылым министрлігі


Тақырып «Прологта логикалық есептерді шешу»



бет3/3
Дата28.06.2016
өлшемі407.31 Kb.
#162837
1   2   3

Тақырып «Прологта логикалық есептерді шешу»


Бұл тақырып практикалық болып есептеледі. Онда логикалық есептерді шешудің екі белгілі әдістері қарастырылады: бірнеше жиын арасында сәйкестікті және объект арасында реттілік орнату. Практикалық мысалдармен осы әдістердің Прологта қалай қолдануын көрсетіңіз. Әдістер, оларды қолдануың және кейбір есептер тізімдері [3,т2,241-245 бет] әдебиетінде көрсетілген.
Тақырып «Салыстыру операторы. Арифметикалық операторлар. Енгізу – шығару предикаттары. Сұхбат программаларын ұйымдастыру. Салыстыру операторын және арифметикалық операторын қолданып білім базасында іздеу есептерін шешу».

Осы тақырыпта аталған операторлар мен предикаттарды көрсету арқылы тілдің кеңейтілуі беріледі. Арифметикалық және салыстыру операторларын қарастырған кезде олардың жазылыуындағы және тіл стандарты мен нақты программалау жүйесі арасындағы айырмашылықтарына назар аударыңыз.


Тақырып «Прологтағы рекурсия (төмен бағыттылған стратегия). Рекурсивті бағдарламмалардың қол трассировкасы. Символдық арифметикаға есептерді шығару. Рекурсия (жоғары бағыттылған стратегия)».

Прологта рекурсивті әдіс анықтамалардың минималды санын қажет ететін есептерді шешудің жалғыз тәсілі болып саналады. Анықтамалар бекітпелерді іздеу процессі барысында қайталанады (процедуралық тілдерде қайталану командаларына сәйкес). Оны түсіну қиындығының себебі, әдістеменің жетіспеушілігінде.

Әдістемелік нұсқауларда әдіс түсіндірілмейді, ол жалғыз факториал функциясының мысалымен көрсетіледі (бұл функция мектепте математиканың курсында қолданылмайды).

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

Осы сипатталған әдіс нәтижелі болу үшін, ол (декларативті) - шешілетін есепке әкелу тиіс. Есептің декларативті шешілуі шекаралық шарт деп аталады.

Осыдан есепті рекурсивті шешу үшін не қажет болатынын табамыз:

а) берілген және көмекші есеп арасында байланысты аңықтау;

б) шекаралық шартты анықтау;

Мысал: алғашқы N натурал сандардың қосындысын рекурсивті әдіспен табу.

Бұл жерде нәтиже натурал санға байланысты болатын S(N) функциясы болады.



Алғашқы (N-1) қосындылары (N-1) мүшеден тұратын осындай функция нәтижесі болады. Бұл рекурсивті әдістің шартарын қанағаттандыратын көмекші есеп болады. Шекаралық шарт S(1)=1 деп жазылады. Осылайша есептің математикалық формасы мына түрде көрсетіледі:



Енді есеп шешуін Прологта жазу қиын емес:

сумма (1.1):-!. /* шекаралық шарт S(N)=1 */

cумма(N,S): -M is N-1, /* M=N-1 */

cумма(M,S), /* көмекші есеп */

S is C+N /* есептер арасында байланыс*/

Осы есепті шешу барысында қолданған стратегия жоғары бағыттылған деп аталады. Әдісті толық түсіну үшін кейбір программаларды қол трассировкасы режимінде орындау ұсынылады және де материалды қабылдаудың алғаш кезеңінде Прологта функцияларды жазар алдында, оларды алдымен математикалық формада жазғыздыру қажет. Осы тақырыпта «Символдық арифметика» деп аталатын көптеген есептерді шешуге болады. Оларды шешу барысында мына мақсаттарға жету қажет: біріншіден, рекурсивті функциялардың табиғатын терең түсіну, екіншіден, арифметикалық операторларды анықтағанда рекурсивті әдіс қолданылатынын анықтау.

Жоғары бағыттылған стратегия рекурсия әдісінің бір түрі. Оның негізінде келесі идея жатыр: шекаралық шарттан бастап үлкен көлемді есептерді шешу. Ол үшін екі қосымша айнымалы енгізіледі – шешілген есептің көлемі және аралық нәтиже. Бұл стратегия көмегімен таңдау есептері шешіледі.
Тақырып «Мәліметтер құрылымы: тізімдер. Тізімдермен жұмыс істейтін негізгі предикаттар. Тізім көмегімен есептерді шешу. Таңдау көмегімен шығарылатын есептер»
Тақырыпты кейбір есептер классын шешу барысында мәліметтер қоры тым үлкен болатынын және оны құру жалықтыратындығы туралы айтып бастаса болады. Егер тізімді қолданатын болсақ, есеп қысқа түрде жазылады. Тізімге (рекурсивті) анықтама берілген соң, негізгі болатын кейбір предикаттарды Прологта шығаруға және жазуға керек болады. Бұл программаларды тізімдермен жұмыс істеуді толық түсіну үшін қол трассировкасы реимінде орындау ұсынылады.

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

Тапсырма. Тізім элементтерін циклдік оңға жылжту. Бұл есеп тізім элементтерін солға циклдік жылжытатын қарапайым есепке кері есеп боады және бір жолға жазылады:

оңға_жылжыту (L, R): - солға_жылжыту (R, L).

Тақырыпта көптеген оқулықта жазылған «Ханой мұнарасы», «Сегіз ферзтің есебі», «Орын ауыстыру есебі» секілді классикалық есептерді шешу ұсынылады.
Тақырып «Мәліметтердің құрылымы: бинарлы ағаштар. Негізгі предикаттар. Бинарлық ағаштар көмегмен есептерді шешу»

Тақырып атында айтылған құрылымға кіріспені тізімде үлкен көлемді элементті іздеу есебінен бастаса болады. Бұл еепте салыстырулар саны тым көп болатыны анықталады, әсіресе тізімде элемент табылмаған жағдайда. Жаңа құрылымды (бинарлы ағаш) енгізу іздеуді жеңлдетеді. Ары қарай бинарлы ағаштың анықтамасын беру, мысалмен оның графпен жазылуын көрсету, сызықтық тізімдермен байланысын көрсету (сызықтық ағаш бұл тізім) керек. Мысалмен балансталған, реттелген бинарлы ағаштары көрсетіледі және анықтамасы беріледі. Осы құрылымды Прологта жазу онша қиын емес, бірақ оның үлкен көледілігін ескеру қажет. Сондықтан сол жақ ішкі ағаштарды (поддеревья), түбірлерін және оң жақ ішкі ағаштарды белгілегендеанықталған жүйеге ұстану қажет, мысалы бос орын қалтырылған ағаштың әр бөліміне әр – түрлі жолдарды қолдану. Бинарлық ағаштармен жұмыс жасайтын негізгі предикаттарды қол трассировкасы режимінде тексеру қажет. Бірақ нақты құрылымдардың өлшемі кішкентай болу қажет.

Есепті таңдау іздеудің тиімділігімен анықталады, бірақ нәтижелер Прологта тізім ретінде жақсы көрінеді.
Тақырып “Прологты қолдану: табиғи тілді түсіну”

Тақырып мазмұнында алғашында Прологта есептелініп жүрген жасанды интеллектің екі есебінен бір есеп – табиғи тілді түсіну ашылған. Осы есептің сәтті шешілуіне байланысты, Пролог- программалау тілі ретінде бекітілгені туралы дәрістің кіріспе бөлімінде айтып кету қажет. Контексті- бос грамматика (КС грамматика) теориясы арқасында синтаксистік талдаушы жасалған. Синтаксистік талдаушы - тілдің синтаксисі мен семантикасын ескеріп сөйлемнің дұрыс құрылуын тексеретін программа. Бұл программа қазіргі заманғы барлық программалық өнімдерде мәтіндік редакторлардан бастап программалау жүйелеріне дейін қолданылады (Паскальда әр конструкция дұрыстылығына тексеріледі).



Тақырыпты КС – грамматикалардың қысқа теориясынан бастауға болады, ары қарай мысал ретінде қазақ-орыс тілінің белгілі бір ережесіне синтаксистік талдаушының құрылуын көрсетуге болады. Осы программаның тура қолданылуына қарамастан, оның кері қолданылуы – дұрыс сөйлемдердің генерациясы көп қолданылады. Әдістеме жағынан бұл дұрыс. Практикалық есептерді сөйлем құрылудың анықталған ережесі бойынша синтаксистік талдаушы – генератор құруға болатындай таңдау қажет.

Достарыңызбен бөлісу:
1   2   3




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет