ЖОСПАР
КІРІСПЕ ...........................3
НЕГІЗГІ БӨЛІМ
Жасанды интеллект жүйесіндегі аспаптық
құрылғылар.
2.Жасанды интеллект обылысындағы зерттеудің
негізгі бағыттары 5
3.Пролог логикалық программалау
тілі 6
3.1.1-ші ретті предикаттарды есептеу 10
3.2.1-ші ретті предикаттар тілінің синтаксисі
12
3.3.1-ші ретті предикаттар тілінің симантикасы
13
4.Синтаксис және унификация ...14
4.1.Унификация ...........................19
5.Арифметикалық өрнектеу ......20
5.1.Арифметикалық өрнектеу 21
5.2.Арифметикалық операторлар 22
5.3.Арифметикалық өрнектерді есептеу 22
5.4.Арифметикалық өрнектер нәтижесін салыстыру
23
6.Рекурсия .....................................23
ҚОРЫТЫНДЫ .................30
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР 31
КІРІСПЕ
Жасанды интеллект (искуственный интеллект)
– бұл адам ойын компьютерде бейнелейтін
(имитирующий) программалық жүйе.Бұндай
жүйені жасау үшін белгілі бір облыста
шешім қабылдайтын немесе нақтылы есептерді
шешетін адамның ойлау процесін зерттеу
қажет және осы процестің негізгі қадамдарын
бөліп көрсетіп , оларды компьютерде іске
асыратын программалық жабдықтарды жасау
қажет.
Адам іс-әрекетінің негізінде ойлау қабілеті
жатады.Адам ойлау процесінің соңғы нәтижесі
мақсат деп аталады.Әдетте барлық белгілі
фактілерді қолдану ережесі негізінде
мақсатқа жетеміз.
1-Мысал:
1-Факт.Жанып тұрған плита-ыстық.
1-Ереже.Егер қолыңды жанып тұрған плитаға
қойсаң,онда күйіп қалуға болады.
2-Мысал:
2-Факт.Час пик кезінде көшеде машина көп.
2-Ереже.Егер час пик кезінде жолдан өтсең
, онда машина астына түсіп қалуға болады.
3-Мысал:
3а-Факт.Тыныш , қараңғы көше қорқынышты.
3б-Факт.Кәрі адамдар әдетте қылмыс жасамайды.
3в-Факт.Полиция адамдарды қылмыскерлерден
қорғайды.
3а-Ережесі.Егер тыныш , қараңғы көшеде
кәрі адам кездессе , онда онша қорықпауға
болады.
3б-Ережесі.Егер тыныш,қараңғы көшеде полицияны
көрсеңіз ,онда өзінізді қорғанған адам
ретінде сезінуіңізге болады.
Жасанды интеллект жұмысы екі бағытқа
бөлінеді.
Сонымен бірінші бағыт адамның интеллектуальды
әрекетінің өнімін қарастырады , оның
құрылысын меңгереді(есептерді шешу, теоремаларды
дәлелдеу ,ойындар) және бұл өнімдерді
қазіргі техника көмегімен жасайды.
Жасанды интеллектінің екінші бағыты
интеллектуальды іс- әрекетінің нейрофизиологиялық
және психологиялық механизмі туралы
мәліметтерді , дәлірек айтқанда адамның
саналы іс-әрекетін қарастырады.
Жасанды интеллект облысындағы
зерттеудің негізгі бағыттары
Нейрон тәрізді желілер – робототехникалық
қоңдырғыларды басқару жүйесін тұрғызудың
тиімді құралы.
ПРОЛОГ ЛОГИКАЛЫҚ ПРОГРАММАЛАУ
ТІЛІ.
Пролог программалауда дәстүрлі
түрде қолданылатын тілдерден кәдімгідей
өзгеше.Бейсик, Алгоритм және Паскаль
тілдерінде программалау әдісі есепті
дискретті қадамдарға бөлу және оларды
тізбекті түрде сипаттау болып табылады.Қадамдар
тізбегі компьютерде орындалатын машиналық
командаларға бейнеленеді.Алдыңғы орындалған
командаларды өзгерту мүмкін емес , себебі
жадыдағы мәліметер үнемі өзгертіліп
отырады.Мұндай түрдегі программалау
тілдері алгоритмдік деп аталады.Алгоритм
– есепті ақырлы санды қадамда шешетін
математикалық процедура.Пролог алгоритмдік
тілге жатпайды.
Пролог өз атауын «ЛОГикалық тілде ПРОграммалау»
сөзінен алынған. Шын мәнінде Пролог таза
логикалық программалау тілі болып есептелінбейді,бірақ
оның ашылуы – бұл бағыттағы маңызды кезең.
Прологқа білім инженериясы мен жасанды
интеллект облысы мамандары көп көңіл
бөледі.Оның академиялық әлемде беделі
өсе түсуде.
Пролог жапондардың бесінші ұрпақ ЭЕМ-дерін
жасау бағдарламасында базалық тіл негізінде
қабылданған.Бұл ЭЕМ-дер логикалық программалау
және жасанды интеллект әдістерін зерттеуге
бағытталған.
Пролог тілінде программалағанда шешімді
сипаттау біраз жеңілдетіледі, және программист
есеп шешімдерін алгоритмдік тілдерде
программалағандағыдай шағын қадамдарға
бөліп программалау әдістерін іздестірмейді,керісінше
тікелей есеппен айналысу мүмкіндігіне
ие болады.
Прологтың теоретикалық негізін предикаттарды
есептеу деп аталатын символдық логика
бөлімі құрайды.Пролог дәстүрлі программалау
тілдерінде жоқ біраз қасиеттерге ие.Бұл
қасиеттер оны логикалық программалау
облысында қуатты етіп көрсетеді.Мұндай
қасиеттерге іздестіретін және кері қайтаратын
мүмкіндігі бар шығару механизмі, үлгімен
сәйкестендіретін кіріктірілген механизмі
, және мәліметтердің қарапайым бірақ
оны өзгерте алатындай мүмкіндігі бар
құрылымы жатады.Мәліметтер мен программалар
– Пролог объектілеріне тек екі түрлі
көзқарас қана.Мәліметтердің біріккен
(единая) қоймасында жеке элементтерді
еркін түрде жасауға және жоюға болады.Програмалар
мен мәліметтер арасында айырмашылық
болмайтындықтан, программаны оның жұмысы
барысында да өзгертуге болады.Пролгта
көрсеткіштер , GO_TO және меншіктеу операторлары
жоқ.Программалаудың негізгі әдісі рекурсия
болып табылады.
Прологта программа жұмысы аяқталғанда
(мақсат дәлелденгенде) екі жағдай ғана
туындауы мүмкін: «дәлелденді» және «дәлелденген
жоқ».Кейде олар сәйкесінше «ақиқат» және
«жалған» деп аталады.Біздер «ақиқат»
және «жалған» терминдерін қолданбаймыз,себебі
олар нәтиже мағынасын анықтайды. Дәлелденген
тұжырым әдетте ақиқат болып табылады,
бірақ міндетті емес , себебі дәлелдеу
белгілі деректер мен олардың негізінде
жасалған қорытындыларға тәуелді болады.
Дерек (факт) дегеніміз қайсыбір тұжырым;барлық
деректер дәлелденген болып анықталады.Дербес
жағдайда «рекс-бұл ит» деректеледі.Бірақ
«Феликс ит болып табылады ма?» дерегігн
сұрау белгілі деректер көмегімен дәлелденілмейді.Пролог
жүйесінің теріс жауабы «феликс - ит» тұжырымы
жалған дегенді емес , тек бізде «феликс»
туралы және оның ит болу мүмкігдігі туралы
деректердің жоқтығын білдіреді.Деректердің
көп болуына байланысты ,біз оларда сипатталған
объектілердің жаңа қасиеттерін анықтай
аламыз.Басқаша айтқанда деректерден
қасиеттер шығады. «Рекс-бұл ит» дерегіне
қайтып оралайық.Біз белгілі деректер
негізінде «ит болу» қасиетіне ие барлық
объектілерді анықтағымыз келеді дейік.
«Қандай тіршілік иелері ит болып табылады?»
сұрағын қойып «Рекс- бұл ит» жауабын аламыз.Біз
қорытынды шығарудың тривиалды мысалын
келтірдік.Қайсыбір қосымша ақпарат енгізейік:
«Рекс-бұл ит» :дерек
«Голди рекстің ата-анасы» :дерек
«Джек рекстің ата-анасы» :дерек
«объект ит болады ,егер ол иттің ата –
анасы болып табылады шарты орындалса».
Мәліметтердің алғашқы 3 элементі дерек
болып табылады,ал 4-ші элемент ереже деп
аталатын қалыпты түрдегі қорытынды.Перпендикуляр
қарастырылып отырған есепке алгоритімдік
көзқарасты көрсету үшін сәйкес программасын
Паскаль тілінде көрсетейік.
Төмендегі программада «Рекске», «Голдиге»
және «Джекки»-ге қатысты ақы сипатталады,
сосын барып анықтама бойынша және қорытынды
нәтижесі бойынша «ит» болып табылатын
объектілер қарастырылады.
Progrom является Собакой
(input,output);
type
строка =packet array [1..6] of char;
{определить символы}
Символ= (рекс, голди,джек);
{определить виды информации}
информация =(собакаИнф,родительИнф);
объект=record
case инф: информация of
родительИнф:(родитель Чей –либо:символ);
собакаИнф (являетьсяСобакой:логический);
end{record};
var
данные:array[символ] of объект ;
имя: array[символ] of строка;
Х: символ;
{эта функция будет возвращать значение
«истсна» ,если объект являеться собакой}
Function собака (Х:объект):логический;
Begin
If Х.инф=собакаИнф
Then собака:=Х являеться Собакой
Else собака:=собака(данные [Х.родительЧей-либо])
end;
begin
{Установить имена объектов}
Имя[рекс]:=рекс;
Имя[голди]:=голди;
Имя[джек]:=джек;
{устоновить информацию для рекса}
With данные [рекс] do
Begin
Инф:=собакаИнф;
являетьсяСобакой:=истина;{рекс-это собака}
end;
{Установить информацию для голди}
With данные [голди] do
Begin
инф:=РодительИнф;
родитель:=рекс;
End;
Данные [джек]:=данные [голди];
For X:=рекс to джек do
If собака(данные [Х]) then
Writeln (‘строку’,или[Х];
End.
Осы есептің Прологтағы программаларынан
үзінді келтірейік:
(*факт ‘рекс – это собака’
Собака (рекс).
/*вывод “ объект являеться собакой если
он
/*является родителем У являющив.собакой
Собака(Х):-родитель (Х,У), собака(У)
/*факт ‘голди является родителем рекса’
Родитель(Джек,рекс).
Қолданылған Пролог синтаксисінің кейінірек
нақтылап анықтаймыз.Әзірше кішкене әріптермен
жазылған әрбір әріптер Литерал деп есептейік.Ол
объектіні береді және өзгертуге келмейді.
Үлкен әріптен басталатын әрбір сөз (мыс:Х,У,Кім)
айнымалы болып табылады.Программаның
орындалу барысында айнымалыларға мән
беріледі.Яғни одан кейін келетін мақсатты
дәлелдеу көзделеді.Пролог мәліметтер
базасының сұраныстардың немесе программаның
орындалу барысында ақпаратын өзгерте
алатындай немесе қосымша ақпараттар
еңгізе алатындай етіп,жабдықталған.
I РЕТТІ ПРЕДИКАТТАРДЫ
ЕСЕПТЕУ.
1.Формальды жүйені анықтау.
Формальды жүйе деп синтаксистік түрде
өңделген символдар жиының мағынасын
ескермей өңдеу ережелері анықталатын
абстрактілі объектінің жиының айтамыз.Формальды
жүйе құраушылары төменде берілген:
1. Ақырлы алфавит (Символдардың ақырлы
жиыны)
2. Формальды жүйе формулаларын (немесе
сөздерін) жасау процедурасы.
3. Аксиома деп аталатын формулалар жиыны.
4. Формулалардың ақырлы жиының алуға мүмкіндік
беретін қорытынды шығару ережелердің
ақырлы жиыны.
Бұл ережелер келесі түрде берілуі мүмкін:
U1 U2…..Um W1 W…Wn.
Мұнда Ui , Wj – формальды жүйе формулалары
, ал “ “ - ‘шығады’ немесе ‘туындайды’
дегенді білдіреді.
Формальды жүйе кейде аксиоматикалық,
формальды теория немесе формулалар жиыны
деп те аталады.
Алфавит ақырлы деп есептеледі және оны
кейде сөздік деп те атайды.Оған const-лар
, айнымалылар және операторлар кіреді.
Формулаларды жасау процедурасы құрылып
тұрған символдардан синтаксистік немесе
граматикалық символдарды тұрғызуға арналады.Ол
қорытынды шығару ережесінен өзгеше болады.
Формальды дәлелдеу деп М1 ,М2 ... Мп формулалардың
ақырлы жиынында әрбір Мі формуласы не
аксиома немесе алдыңғы Мj (j<<) формулаларынан
қорытынды шығару ережелері көмегімен
алынатындай формулалардың жиынтығын
айтамыз.
t формуласы th деп аталады, егер оның соңғы
болатындығын анықтайтын дәлелдеу болса
Mn= t
Жеке жағдайда кез келген аксиома th болып
табылады.Қорытынды шығару ережесінің
2 типі бар. І типтегі ережелер бір тұтас
деп есептелетін формулаларға қолданылады.(Бұл
жағдайда оларды өнім, өнім ережелері
немесе өнімдік ережелер деп аталады).
ІІ типтегі ережелер формуланы жеке бөліктеріне
қолданылуы мүмкін.Сонымен қатар , бұл
бөліктер қалыпты жүйеге енетін формулалар
болып табылады.Мұндай ережелер қайта
жазу ережелері деп аталады.
Мысал :
1) Алфавит :Е,S,A;
2) Формула: алфавит кез келген символдардың
тізбегі;
3) Аксиома : (Т,А); ТА;
4) Қорытынды шығару ережелері;
R1)tA – tAS (өнім)
R2)Tt – Ttt (өнім)
R 3)AAA – S (қайтып жазу)
R4)SS –
R1 ережесі болып табылады және тек th-ң
соңғы әріпі А болғанда ғана қолданылады.Мыс:
“TASTA” th-нан “TASTAS”-ты шығаруға болады.
R2 ережесі “TSA” th-сын “TSASA” th-сын шығаруға
мүмкін береді.
R3 ережесі мысалы ,“TSAAAST”-дан “TSSST”-ға
өтуге мүмкін береді.
R4 ережесі “TASSSST” әрбір 2 S-ті бос орынмен
алмастырады және нәтижесінде “TAT”-ты
аламыз.
Формальды жүйелер өңделетін тұжырымды
мағынасын қарыстырмай-ақ ой-қорытындыларын
жасауға арналған.Яғни ой-қорытындылар
жасалатын барлық элементтер мағыналары
басқа кез келген элементтермен алмастырылуы
мүмкін.
Жақсы белгілі целлогизмді қарастырайық.
«Барлық ер адамдар өлуге жаратылған.Сократ-
ер адам , демек Сократ өлуге жаралған.»
Бұл сөйлемде кез келген ер адам немесе
барлық «Сократ» , «өлуге жаратылған»
сөздері қорытынды жасау мағынасы ақиқат
болатындай кез келген сөздермен алмастырылады.Мысалы,
абстрктілі модельдерде «кез келген Х
дегеніміз У болып табылады.Егер Z Х болып
табылса , онда Z У-те болып табылады.» X,Y,Z
айнымалылары қолданылады.Байланыс сөздері
: «егер», «онда», «немесе» және т.б.
Оператарлар деп аталатын бірінші ретті
предикаттар тілінің синтаксисі.
І РЕТТІ ПРЕДИКАТТАР
ТІЛІНІҢ СИНТАКСИСІ.
Предикат кез келген логикалық функция
деп , ақиқат мәндер қабылдайтын аргументтер
саны кез келген болатын функция аталады.Мысалы,И-истина -1, Л-жалған
-0 , аргументтер арқылы, шексіз немесе
кез келген Д жиынының пәндік облысы деп
аталатын бөлігінен мәндер қабылдайды.Аргументтінің
саны п-ге тең предикат , п-орынды предикат
деп аталады.
Д пәндік облысында анықталған F(X) предикаты
Д жиынының элементтеріне белгілі бір
қасиет береді, сонымен қатар егер пікір
ақиқат болса , онда F И мәніне ие және жалған
болса Л мәніне ие.
F(x1, x2……xn) предикаты x1, x2……xn элементтері
арасындағы қатынасты береді және «x1,
x2……xn өзара F қатынасында болады» пікірін
береді.Мысалы, Д натурал сандар жиыны
болсын , онда F(X) предикатын «Х жұп сан»
немесе «Х тақ сан» деп белгілеуге ,ал
G(X,Y) предикатын «Х У-тен артық» немесе
«Х У-ке бөлінеді» деп белгілеуге болады.
І ретті предикаттар тілінің алфавиті
келесі символдар жиынынан тұрады:
1.Бөлімдер (разделитель) ашылатын немесе
жабылатын жақшалар, үтір.
2.Кішкентай әріптермен немесе осындай
әріптер тіркесімен белгіленетін тұрақтылар,мысалы
«а», «друг» .
3.Үлкен әріптермен белгіленетін айнымалы:
мысалы «У», «АДРЕC».
4.Үлкен әріптермен белгіленетін предикаттар:
«Р» , «Q» , «артық».
5.Бір пәндік облыс мәнін басқа пәндік
облысқа бейнелейтін және тәуелділікті
орнататын функциялар , п орынды функция
,предикаттын аргументтері болып қызмет
жасай алады.Функцияларды кішкентай әріптермен
белгілейміз.
І РЕТТІ ПРЕДИКАТ
ТІЛІНІҢ СИМАНТИКАСЫ.
Формула белгілі бір мағынаға ие болады,яғни
қайсыбір пікірді білдіреді , егер қандай
да бір интерпретация бар болса , формуланы
интерпретациялау бұл онымен белгілі
бір бос емес Д жиынын байланыстыру деген
сөз яғни пәндік облысы нақтылау және
мыналарды көрсету:
1.Формуладағы әрбір тұрақты үшін Д-дан
нақтылы элементі.
2.Формуладағы әрбір п орында функцияльдық
әріп үшін Д-дан п орынды нақтылы функцияны.
3.Формуладағы әрбір п орынды предикаттын
әріп үшін Д-ң п элементтері арасындағы
нақтылы қатынас.
Мысалы ,G(f(a,b)) ,g(a,b) атомы п төмендегі интерпретацияны
қарастырайық: Д – нақты сандар жиыны
а=2,b=3 ,f – қосу функциясы f(a,b)=a+b, g- көбейту
функциясы , g(a,b)=a*b G –«кем емес» қатынасы.
Мұндай интерпретацияда төмендегі формула
«2+3 қосындысы 2*3 көбейтіндісінен кем емес»
пікірін білдіреді.Бұл тұжырым дұрыс емес
, сондықтан G(f(a,b)6g(a,b))=Л ,яғни жалған.Егер
в=1 немесе в=2 деп интерпретацияның түрін
өзгертсек , онда G(f(a,b)6g(a,b))=U ақиқат болады.
СИНТАКСИС ЖӘНЕ УНИФИКАЦИЯ.
СИНТАКСИС.
1.Термдер. Прологта мәліметтер объектісі
термдер деп аталады. Терм тұрақты (константа),
айнымалы немесе құрамды терм (құрылым)
болуы мүмкін. Бүтін немесе нақты сандар
константа болып табылады, мысалы:
0, -1, 123.4, 0.23Е-5
Прологтың кейбір версияларында нақты
сандар қолданылмайды.
Константаларға сонымен қатар
голди, а, атом, +, :, ‘Фред Блогс’,
сияқты атомдар да жатады.
Атом дегенміз бірлік тырнақшаға алынған
символдардың кез-келген тізбегі. Егер
атомдарды айнымалалрды сипаттауға арналған
символдардан ажырата алуға болатын болса,
онда бірлік тырнақшаларды қолданбауға
болады. Атомдардың тағы бірнеше мысалдарын
келтірейік:
abсd, фред, ‘:’, Джо
Басқа программалау тілдеріндегі сияқты
константалар нақтылы элементар объектілерді
береді, ал мәліметтердің барлық басқа
типтері константалар мен айнымалардың
бірігуінен тұрады.
Айнымалалр аттары үлкен әріптерден немесе
сызықша «_» белгісінен басталады. Мысалы:
Х, Айнымалы, _3, _айнымалы.
Егер айнымалы бір-ақ рет қолданылса,онда
оған ат беру міндетті емес ,оны сызықша
белгісінен тұратын анонимді айнымалы
сияқты жазуға болады.Айнымалыларда атом
тәрізді Пролог тілінің элементар объектілері
болып табылады.
А-а:Айнымалыларға немесе тұрақтыларға
жатқызуға келмейтін синтаксистік бірлік
күрделі терм деп аталады. Демек күрделі
терм айнымалылар мен тұрақтылардан тұрады.Тұрақтылар
барлық программисттерге белгілі.Прологта
тұрақты атом немесе сан болуы мүмкін.
2.Атом. Атом дегеніміз бірлік тырнақшаға
алынған символдар тізбегі.Атом ішінде
кездесетін бірлік тырнақша 2 рет жазылады.Атом
баспаға шыққанда тырнақшаның ішкі символдары
жазылмайды , атомды тырнақшаның ішіне
жазу міндетті болмайтын бірнеше ерекше
жағдайлар бар.Олар: тек сандардан,әріптерден,,сызықша
символынан тұратын және бас әріптен басталатын
атомдар.ІІ тұтастай арнайы символдардан
тұратын атомдар.Олар: + , - , * , / , : , ; , @ ,
$ , ^ , &;
Егер /* жазудан басталатын атом , бірлік
тырнақшаға алынбаса түсіндірмені басталуы
ретінде қадылданады.
Тырнақшаға алу міндетті емес атомдарды
тырнақшаға алыпта жазуға болады.Ішкі
тырнақшалармен немесе оларсыз да жазылған
жазу бір атомды анықтайды.
Ескерту: Атом бірден-бір символы жоқ (нольдік
атом деп аталады) немесе баспаға шықпайтын
символдардан тұруы мүмкін.(Прологта атомдарды
тұрғызуға арналған баспаға шықпайтын
немесе басқарушы символдардан тұратын
предикаттар бар).Мұндай атомдарды баспаға
шығарғанда қате туындауы мүмкін.
Прологтың көптеген версияларында бүтін
немесе нақты сандармен жұмыс жасалады.Олардың
диапазондары мен дәлдігі қандай екенін
білу үшін сол версия туралы мәліметтерге
көз салу қажет.
3.Айнымалылар. Прологтағы айнымалы ұғымы
көптеген программалау тілінде қабылданғандағыдан
біраз өзгеше.Айнымалы жадының бір бөлінген
аумағы сияқты қарастырылмайды.Ол аты
бойынша қарастырылған болмайтын объектіні
белгілеу үшін қолданылады.Айнымалыны
қайсыбір объектіні локальды аты деп есептеуге
болады.
Айнымалы үлкен әріптен немесе сызықша
белгісінен басталуы және тек әріп , сан
және сызықша символдарынан тұруы тиіс.
Айнымалының әрекет ететін облысы тұжырым
болып табылатын шекарасында бір ат,сол
бір айнымалыға ғана тән ,2 тұжырым бір
айнымалы атын әртүрлі әдіспен қолдануы
мүмкін.
Әрбір анонимді айнымалы тұжырымға анонимді
айгымалылардан анық ажыратылады.
А-а: Анонимдерден өзгеше айнымалылар
атаулы деп ,ал нақтылан-баған (мән берілмеген)
айнымалылар еркін деп аталады.
4.Күрделі терминдер немесе құрылымдар.
Құрылым – басты функтор деп аталатын
атомнан және құрылым компоненттері деп
аталатын термдер тізбегінен тұрады.Компоненттер
үтірмен ажыратылады және дөңгелек жақшаға
алынады.Құрылымды термдерге мысал кел-тірейік
: собака (рекс) , родитель (Х,У) құрылымдағы
компонент саны құрылым арносты деп аталады.Берілген
мысалда собака құрылымы 1 арносты болып
, ал родитель құрылымы 2 арносты болып
табылады.Атомды нолінші арностаға құрылым
ретінде қарауға болады.
Егер құрылымды басты функтор ретінде
қолданылатын атомды оператор деп жарияласақ
,онда 1-ші және 2-ші арносты құрылым операторлық
түрінде жазылады.
А-а: Тізім – қайсы бір 2-ші арносты құрылым
болып табылады.
Жол – деп қос тырнақша алынған баспаға
шығаруға болатын символдар тізбегін
айтамыз. « » жол ішінде 2 рет жазылады.
ПРОЛОГ-тың кейбір версияларында жолда
атомдар немесе тізімдер сияқты белгілі
бір объектілер типі ретінде қарастырады.оларды
өңдеу үшін арнайы кіріктірілген тридекаттар
еңгізіледі.Басқа версияларда жолдар
тізімдер сияқты өңделсе ,онда тізімдерді
өңдеуге арналған кіріктірілген тридикаттар
қолданылады.
5.Тұжырымдар.Пролог программасы дегеніміз,
бұл тұжырым жиынтығы.Тұжырымдар мақсаттардан
тұрады және Прологтың мқ-да сақталады.Тұжырым
соңында нүкте қойылады , кейде тұжырым
сөйлем деп аталады.
Прологтың негізгі операциясы – тұжырымға
кіретін мақсаттарды дәлелдеу.
Тұжырымның 2 типі бар: дерек – бұл міндетті
түрде ақиқат болатын бірлік мақсат.
ІІ ереже: Кейбір жағдайларда ақиқат болатын
бір басты мақсаттан және бір-бірінше
құйрықты мақсаттардан тұрады.
Ереже әдетте, мақсаттар конъюнкциясы
түрінде болатын бірнеше құйрықты мақсаттардан
тұрады.
Конъюкцияны логикалық функция «және»
түрінде қарастыруға болады.Сонымен ,
ереже келісіледі, егер оның құйрықты
мақсаттары келісілсе.
Деректер мысалдары: собака (рекс),
родитель (голди,рекс).
Ереже мысалдары: собака (х):-родитель (х,у)
, собака (х),
человек (х):- мужчина (х) .
Ережелер мен деректер арасындағы айырмашылық
таза симантикалық түрде болады: собака
(х):- родитель (х,у) , собака (у); ережесінен
:- собака(х) ‘,’ родитель (х,у) ,собака(у)
жазу дұрыс болады,өйткені « :- » шарты
орындалады.Егер («приусловии , что») операторы
болып табылады.Ал ‘,’ бұл конъюкция операторы.Бірақ
бұны мына түрде: соьака (х) :- родитель
(х,у) , собака (у); түрде жазған ыңғайрырақ
және оны келесі түрде оқимыз:
«х-собака , приусловии , что родителями
х является У и У собака».
6.Сұраныстар.МҚ-на тұжырымдар еңгізілген
соң , есептеу сұраныстар еңгізу арқылы
жүргізіледі.Сұраныс Пролог-та арносы
1 болатын «?» тұжырыммен белгіленеді.Әдетте
сұраныс операторлық түрде былай жазылады:
«?» - белгісінен кейін бірнеше құйрықты
мақсаттық тұжырымдар жазылады.
Сұраныстар мысалдары: ? – собака (х)
? – родитель (х,у) , собака (у) немесе басқаша
‘?’ – (собака (х))
(‘?’-) ‘,’ (родитель (х,у),собака(у))
Соңғы жазуда аргументтерді бөлуші үтір
символы құрылымдағы конъюнкция символымен
сәйкес келетіндіктен , былай жазу ыңғайсыз:
Сұранысты кейде басқарушы команда (деректива)
деп аталады,себебі ол Пролог - жүйеден
кейбір әрекеттердің орындалуын талап
етеді.
Прологтың кейбір версияларында басқарушы
команда үшін альтернативті символ қолданылады,ал
«?»- символы ПРОЛОГ интерпритаторының
жоғарғы деңгейін шақыруды білдіреді.Альтернативті
символ болып :- символы табылады.Сонымен
:-write (собака) бұл басқарушы команда орындалу
нәтижесінде собака атомы баспаға шығады.
7.Программаны еңгізу.Пролог – жүйеге
тұжырымдар тізімін енгізу кіріктірілген
consult придекаты көмегімен жүргізіледі.Consult
предикатының аргументі атом болып табылады.Бұл
атом әдетте жүйеде Пролог-тағы программа
текстін қамтитын файл аты ретінде интерпритацияланады.Файл
ашылып, ондағы мәлімет мқ-да жазылады.
Егер файлды басқарушы командалар болса,онда
олар бірден орындалады.Кейде файл басқа
файлдарды жүктеуге арналған басқарушы
командалардан басқа ештеңнден тұрмауы
мүмкін терминальдан тұжырымдарды енгізу
үшін көбіне Пролог-та арнайы атом user қолданылады.Оның
көмегімен тұжырымдар мқ-на енгізіледі
, ал басқарушы команда бірден орындалуға
жіберіледі.
Прологта consult-тан басқа reconsult предикаты
бар.Ол да жоғарыдағыдай жұмыс жасайды.Бірақ
тұжырымды мқ-на жазар алдында , одан басты
мақсаттарды қайта жүктеу файлдардағы
мақсаттармен сәйкес келетін тұжырымдар
автоматты түрде алынып тасталынады.Бұндай
механизм мқ-на өзгеріс енгізуге мүмкіндік
береді.Пролог-та мқ-на тұжырымдарды енгізу
және алып тастаудың басқа да әдісі бар.
Бэкус-Наур жазуын пайдаланатын , кейде
Бэкустық қалыптық форма деп аталатын
Пролог синтаксисін келтірейік:
Сұраныс: : = тұжырым басы .
Ереже: : = тұжырым басы :- тұжырым аяғы.
Дерек : : = тұжырым басы .
Тұжырым басы : : = атом / құрылым.
Тұжырым аяғы : : = атом / құрылым.
Термдер : : = терм [, термдер ,]
Терм : : = Сан /айнымалы / атом / құрылым
Құрылым : : = атом (термдер).
УНИФИКАЦИЯ.
Пролог-та программалаудың ең маңызды
аспектілердің бірі унификация және айнымалыларды нақтылау
ұғымдары болып табылады.
Пролог дәлелдеу кезіңде немесе тұтас
тұжырымды келіскенде термдерді теңдестіруге
тырысады.Мысалы , ?- собака (х) сұранысымен
келісу үшін тұтас тұжырым собака (х),собака
(рекс) дерегімен теңд.-ді, нәтижесінде
х айнымалысы нақтыланып х= рекс болады.
Тұжырымға енетін айнымалылар ерекше
түрде теңд.-ді - сәйкестендіріледі.Дерек
айнымалылардың барлық мәндері үшін дәлелденеді.Ереже
басты мақсаттық тұжырым үшін дәлелденеді
, егер құйрықтық мақсаттық тұжырымдар
дәлелденген болса.Деректер мен басты
мақсаттық тұжырымдағы айнымалылар баршаға
жалпы кванторымен байланысады деп есептеледі.Мақсаттық
тұжырымды дәлелдеу уақытында айнымалылар
нақтылы мәндерді қабылдайды.
Егер айнымалылар тек құйрықты мақсаттық
тұжырымдарда ғана кездессе , онда ереже
дәлелденген деп есептелінеді, егер құйрықты
мақсаттық тұжырым айнымалылардың бір
немесе бірнеше мәедері үшін ақиқат болса
.Тек құйрықты мақсаттық тұжырымда ғана
кездесетін айнымалылар бар болу кванторымен
байланысады.Сонымен олар тек айнымалылары
келісілген мақсаттық тұжырым дәлелденіп
тұрған уақыты аралығында ғана нақтылы
мәндерді қабылдайды.
Х термі У терімен келесі ереже бойынша
сәйкестендіріледі.Егер Х пен У тұрақты
болса , онда олар бірдей болғанда ғана
сәйкестендіріледі.Егер Х тұрақты немесе
құрылым . ал У – нақтыланбаған айнымалы
болса ,онда Х пен У-ті сәйкестендіруге
болады немесе УХ-тің мәнін қабылдайды
(және керісінше).Егер Х және У құрылымдар
болса,онда олар сәйкестендіріледі сонда
және тек сонда ғана , егер олардың басты
функторы да, сол бір функтор арносы да
1 арнос болса және сәйкес әрбір компоненті
сәйкестендірітен болса .Егер Х пен У нақтыланбаған
айнымалылар болса , онда олар сәйкестендіріледі
, бұл жағдайда оларды байланысқан деп
атайды.
Унификация көбіне термдердің ішкі компоненттеріне
ену үшін қолданылады.Сонымен жоғарыдағы
мысалда Х поз(23) термнің 1 компонентімен
нақтыланады.Ал поз(23) термнің өзі строка
термнің компоненті болып табылады.
АРИФМЕТИКАЛЫҚ
ӨРНЕКТЕУ.
Пролог тілінде
арифметикалық амалдар саны көп есептерді шығаруға
келмейді.Ол үшін процедуралық программалау
тілі қолданылады.Бірақ кез келген ПРОЛОГ
– жүйеге әдеттегі арифметикалық амалдар
енеді : +, - , * , / , mod , div.Прологтың кейбір
версияларында кіріктірілген арифметикалық
амалдардың кеңірек түрлері кездеседі.ПРОЛОГ
келесі кіріктірілген предикаттарды қолданып
арифметикалық амалдарды салыстыруға
мүмкіндік береді.
Арифметикалық өрнектеу сан немесе құрылым
болып табылады.Құрылымға сан,арифметикалық
амалдар, арифметикалық тізімдік өрнектер
, арифметикалық өрнекпен нақтыланған
айнымалылар , бірлік функторлар сияқты
бір немесе бірнеше компоненттер кіреді.
Арифметикалық тізімдік өрнектер.Егер
Х арифметикалық өрнек болса , онда [X] тізімі
де арифметикалық өрнек болып табылады.Мысалы:
[1,2,3]
Тізімнің бірінші элементі өрнекте операнд
сияқты қолданылады.
X is ([1,2,3]+5) 6 мәніне ие болады.Жолдарды шағын
бүтін сандар түрінде қарауға болатындықтан
арифметикалық тізімдік өрнектерді символдарды
өңдеуге де қолданған тиімді болып табылады.Мысалы:
«а» символы [97]- ге эквивалентті болғандықтан
өрнекте қолданылатын болса , [97] түрінде
есептелінеді.
Арифметикалық өрнекпен нақтыланған айнымалыларға
мысал : Х=5+2; У=3*(2+А);
Түрлендіру функторлары.Прологтың кейбір
версияларында жылжымалы нүктелі арифметика
бар.Сондықтан түрлендіру функторы да
бар деген сөз.Мысалы: float (х) бүтін Х саны
жылжымалы нүктелі санға ауысады.
Математикалық функторлар.Мысалы: Квадрат
(Х) оператор ретінде жарияланған және
(Х*Х) арифметикалық өрнегіне эквивалентті.
АРИФМЕТИКАЛЫҚ ОПЕРАТОРЛАР.
+ , - , * , / , div , mod атомдары ПРОЛОГтың әдеттегі
атомдары болып табылады және кез келген
контекстте қолданылады болады.Көрсетілген
атомдар кіріктірілген предикаттар емес
қайта арефметикалық өрнектерде ғана
өз күшіне ие болатын функторлар.Олар
инфексттік операторлар сияқты анықталған.
Бұл атомдар құрылым да басты функтор
болып табылады, ал құрылымның өзі тек
жоғарыда сипатталған формаларда ғана
беріледі.Арифметикалық оператор келесі
түрде орындалады: біріншіден , 2 жақтағы
да арифметикалық өрнектер есептеледі.Екіншіден
, есептеу нәтижесінде қажет амал (операция)
орындалады.Арифметикалық операторларды
ПРОЛОГ жүйе анықталады.Егер біз
Среднее (Х,У,Z) :- Z is (X+Y)/2 предикаттың жазсақ
, онда орта мәнді ?-ор (250,хfx,среднее) операторы
түрде анықтауға болатын болса да бірақ
, ПРОЛОГ , егер Z is X среднее У өрнегін кездестірсе
, қате туралы хабарлама береді.Бұл өйткені
Х среднее У арифметикалық өрнекті орындамайтының
, ал средниенде жерден алынған арифметикалық
амал болып табылмайтындығында.
АРИФМЕТИКАЛЫҚ
ӨРНЕКТЕРДІ ЕСЕПТЕУ.
ПРОЛОГ-та сумма
= 2+4 түрінде меншіктеу болмайды.Бұндай
түрдегі өрнек тек is жүйелік предикаты
көмегімен ғана есептеледі.Мысалы:
сумма is 2+4.is предикаты инфекстік
операторлар түрінде анықталған.Оның
сол жақ аргументі не сан немесе нақтыланбаған айнымалы
, ал оң жақ бөлігі арифметикалық өрнек
болып табылады.
Х is У мақсаттық тұжырымды дәлелдеу келесі
жағдайларда ғана сәтті аяқталады:
А) Х – нақтыланбаған айнымалы , ал У - өрнегін
есептеу нәтижесі сан болса.
Б) Х-У өрнегін есептеу нәтижесін тең сан
болса.
Х is У мақсатының қосымша тиімді жағдайы
жоқ және қайтадан келісілуі мүмкін емес.Егер
Х анықталмаған айнымалы немесе сан болмаса
, немесе егер У арифметикалық өрнек болмаса
қате туындайды. Мысалы:
D is 10-5 , сәтті аяқталады және D=5.
4 is 2*4-4 , сәтті аяқталады.
2*4-4 is 4 , сәтсіз аяқталады.
а is 3+3 , сәтсіз аяқталады.
X is 4+a , сәтсіз аяқталады.
2 is 4-X , сәтсіз аяқталады.
Сонымен is предикаты оның оның бірінші
аргументі сан немесе анықталмаған айнымалы
болуын талап етеді.Сондықтан ,М-2 is 3 жазуы
дұрыс емес.
АРИФМЕТИКАЛЫҚ
ӨРНЕКТЕР НӘТИЖЕСІН САЛЫСТЫРУ.
=,< , >, < > , жүйелік предикаттары инфекстік
операторлар сияқты анықталған және 2
арифметикалық өрнек нәтижесін салыстыру
үшін қолданылады.
@ предикаты үшін X @ Y мақсаттық тұжырымын
дәлелдеу сәтті аяқталады, егер Х және
У арифметикалық өрнектерін есептеу нәтижесінің
бір-біріне қатынасы @ предикатымен сипатталғандай
қатынаста болатын болса.Мұндай мақсаттық
тұжырымның қосымша тиімді жағдайлары
жоқ және қайтадан келісілуі мүмкін емес.Егер
Х немесе У арифметикалық өрнек болмаса
қате туындайды.Предикаттар көмегімен
келесі қатынастар сипатталады: Х=Y,X<
>Y,X>Y ,XY предикаттарды қолдану келесі
мысалдармен көрсетейік:
A<5, сәтсіз аяқталады.
5+2+7>5+2, сәтті аяқталады.
3+2=5, сәтті аяқталады.
2+1<>1 , сәтті аяқталады.
N>3 , сәтті аяқталады, егер N үлкен болса
, қарсы жағдайда сәтсіз.
РЕКУРСИЯ.
ПРОЛОГ-та рекурсия программалаудың қуатты
әдісі болып табылады.Өйткені мұнда әднттегі
программалау тілдерінің while..do және Repeat….until циклдік құрылымы
жоқ.
«БӨЛУ ЖӘНЕ БАСҚАРУ» СТРАТЕГИЯСЫ.
Әдетте есепті
шешу стратегиясы оны бірнеше
ұсақ ішкі есептерге бөліп соларды
шешуден сосын барып берілген
есеп шешімін алу үшін ішкі есептерді
біріктіруден тұрады. «Бөлу және басқару» стратегиясы мәні осындай.
Ішкі есептерді одан ұсақ ішкі есептерге
бөліп , оларды бөліетеп шешу қажет болуы
мүмкін.
Егер ішкі есеп беретін есептің кішірейтілген
вариантты болса , онда оны бөліктеу және
шешу әдісі берілген есепке қолданылатын
әдіспен бірдей.Бұндай процесс рекурсия
деп аталады.Сипатталған әдіс нәтижелі
болуы үшін ол ақыр соныңда тікелей есептелетін
бастапқы есепке алып келуі тиіс.Оны шешуге
шекаралық әдіс деп аталатын тұжырымдар
мүмкін болады.
Мысалы №1:Тізбектегі п-ші термді анықтау
әдісін қарастырайық: 1,2,6,24,120,720, т.с.с.
Сипаттаудың І варианты мынадай :
0-ші терм 1-ге тең ,1-ші терм 1*1 көбейтіндісі
арқылы табылады,2-ші терм 1*1*2 көбейтіндісінде
, 3-ші терм 1*1*2*3 көбейтіндісінде табылады
және жалпы жағдайдағы п-ші терм 1*1*2*3*...*п
көбейтіндісі арқылы табылады.
Басқаша 0-ші терм дегеніміз 1 , ал п-ші терм
дегеніміз п-ге көптеген п-1-ші терм.
2 анықтама эквивалентті екені түсінікті.Тізбектің
N –ші мүшесі V-ға тең дерегін белгілеуүшін
посл(N,V) предикатын пайдаланамыз.Рекурсивті
анықтама ПРОЛОГ-тың келесі тұжырымдармен
өрнектеледі:
/*Шекаралық шарт – 0-ші терм 1-ге тең*/
Посл.(0,1).
/*Рекурсивтік шарт – егер N-1 термі U-ға
тең болса , онда N-ші терм U*N*/
Посл.(N,V):-M is N-1 , посл (M,U), V is U*N
?посл(3,Z) сұрағының жауабы Z=6 болады.
Басқа шешім (иә/жоқ)? Жоқ
Егер біз «Иә» деп жауап берсек ПРОЛОГ
жүйе шексіз циклға түсіп кетеді.
ПРОЛОГ жауапты қалай табатының қарастыру
үшін
?посл(3,Х) сұрағын қарастырайық және ПРОЛОГ
жұмысының 2 кезеңін сипаттайық.
2.Бөліктеу фазасы немесе кезеңі.
БІРІНШІ ШАҚЫРУ.
ПРОЛОГ посл(3,Х) сұранысын қанағаттандыру
үшін тізбекті сипаттайтын процедураның
І тұжырымы посл(0,1) –ді пайдаланады.
Термнің І компоненті , сұраныстың І компоненті
(3)пен сәйкес келмейтіндіктен талпыныс
сәтсіздікпен аяқталады.
Енді ПРОЛОГ- тізбекті сипаттайтын ІІ
тұжырымды пайдалануға тырысады.Бұл жолы
ІІ посл(N,V) тұжырымның басы , посл(3,Х) сұранысына
сәйкестендіріліп N 3 мәнін қабылдайды
, ал V X-пен байланысады.ПРОЛОГ тұжырым
денесіндегі мақсаттарды дәлелдеуге көшеді.
/*N=3
/*V=X
M is 3-1
посл(H,U)
X is U*3
/*откладывается
І мақсаттық тұжырым N=2 болғанда келісіледі.ІІ
посл(2,U) мақсаттық тұжырымы ІІ рекурсивтік
шақыруға алып келеді.
ПРОЛОГ ІІІ мақсаттық тұжырымды ІІ –сі
келісілгенде ғана келісуге тырысады.Сондықтан
ІІІ мақсаттық тұжырым қалыс қалады.
ЕКІНШІ ШАҚЫРУ.
Посл(2,U) тұжырымын келісу үшін ПРОЛОГ
Посл(2,U) –ды посл(0,1) процедураның І тұжырыммен
сәйкестендіруге тырысады,бірақ термнің
І компоненттері сәйкестендірілмейтіндіктен
талпыныс сәтсіздікке ұшырайды.
Дей тұрғанмен , Посл(2,U) –ды N=2-ге тең және
V=U-ға тең болғандағы ІІ посл(N2,V2) тұжырымның
басымен сәйкестендіру мүмкіндік береді.Енді
ПРОЛОГ тұжырым денесі келісуге тырысады.
/*N2=2
/*V2=U
M2 is 2-1
посл(M2,U2)
U is U2*2
/*откладывается
Сонымен, біз І шақырудағы тұжырымды тағы
да қолдансақ,бірақ мұнда кішірек N2 аргументін
пайдаландық.
Тұжырымды ІІ рет шақыруды І шақырудан
ажырату үшін айнымалыға 2 индексін береміз.Жалпы
жағдайда айнымалының п индексі оның п-ші
шақырылымда қолданылатының білдіреді.І
шақыру айнымалылары индекссіз жазылған.
Мақсатты тұжырымның І-сі N2=1 болғанда
келісімді ІІ мақсаттық тұжырым үшін ІІІ
шақырылуға алып келеді , ал ІІІ мақсаттық
тұжырым қалыс қалады.
ҮШІНШІ ШАҚЫРУ.
Посл(1,U2)-ні келісу үшін ПРОЛОГ оны посл(0,1)
анықталатының І тұжырыммен сәйкестендіруге
тырысады,бірақ ол сәтсіздікке ұшырайды.
Дей тұрғанмен , посл(1,U2) ІІ тұжырым басымен
сәйкестендіруге мүмкіндік туады және
мұнда N3 1 мәніне ие болады,ал V3 U2 –мен
байланысады.Демек енді келесі мақсаттарды
салыстыру қажет:
/*N3=1
/*V3=U
M is 1-1
посл(M3,U3)
U is U3*1
/*откладывается
І мақсаттық тұжырым M3=3 болғанда келісімді.ІІ
мақсаттық тұжырым посл(0 ,U3)-ті ПРОЛОГ
анықтаманың І тұжырыммен сәйкестендіре
отырып келісуге тырысады.Бұл жолы U3=1
болғанда 2 термді сәйкестендіру сәтті
аяқталады.
Есеп редукциясы аяқталады және шекаралық
шарттар соңғы есепті шешуге мүмкіндік
береді.Енді ПРОЛОГ қалыс қалған мақсаттық
тұжырымға қайта оралып , олардың ең соңғысын
келісуге тырысады.
Егер соңғы тұжырым келісілсе , онда ПРОЛОГ
оның алдындағы қалыс қалған тұжырымды
келісуге тырысады.Сөйтіп,ең І қалыс қалған
тұжырым келісілгенше жалғаса береді.
3.ЕСЕПТІ ШЕШУ
КЕЗЕҢІ(ФАЗАСЫ).
Посл(1,U2)- ні келісу.
Қалыс қалған тұжырымның ішіндегі ең соңғысы
ІІІ шақырудағы ІІІ мақсаттық тұжырым:
U2 is U3*1
ІІ мақсаттық тұжырымды келісуге нәтижеде
U3 айнымалысы 1 – ге тең болғандықтан,
U2 1 мәніне ие болады. Сонымен, посл (1, U2)
U2 =1 болғанда келісіледі.
Посл (2, U)-ды келісу.
Соңғының алдында қалыс қалған мақсаттық
тұжырымның бұл ІІ шақырудағы ІІІ мақсаттық
тұжырым:
U is U2*2
Сонымен, U2 =1 болғанда мақсаттық тұжырымды
келісу нәтижесінде U=2 мәніне ие болады.
Демек , посл(2, U) U=2 болғанда келіседі.
Посл(3,Х)-ті келісу.
Қалыс қалған мақсаттық тұжырымның алдыңғысы І шақырудағы ІІІ мақсаттық
тұжырым Х is U*3 U айнымалысы 2 мәніне тең
болғандықтан ІІ мақсаттық тұжырымды
келісу нәтижесінде Х=6 мәніне ие болады.
Посл(3,Х) мақсаттық тұжырымы Х=6 болғанда
келіседі. Егер қалыс қалған басқа мақсаттық
тұжырым жоқ болса, онда Пролог – айнымалысының
қандай мәнінде сұраныс қанағатандырылатының
анықтайды.
Жоғарыда сұраныстың толық трассировкасы
келтірілген мақсаттан шығатын доғалар
сәйкестендірілетін тұжырым номерімен
және сәйкестігі айнымалы мәнімен белгіленеді.
Мақсаттық тұжырымы келісілетін айнымалылар
дөңгелек жақшаға алынған және сәйкес
мақсаттық тұжырымда жазылған жолдарға
жазылады. Төбелерге айнымалылар мәнімен
енетін доғалардағы белгілеулер осы мәндерге
алып келетін мақсаттық тұжырым болып
табылады.
4. ВОСХОДЯЩАЯ СТРАТЕГИЯСЫ.
Біз есеті ішкі есептерге
бөлу және оларды шешу процесін қарастырдық.
Посл(U,V) анықтау үшін
Посл(3,V2), посл(2, V3,...,посл(0, V5))-ты есептеу
және шешімді құру қажет, мұнда шекаралық
шартты базис ретінде таңдаймыз.
Екінші әдіс шешімді шекар |