Автор: Пользователь скрыл имя, 15 Марта 2012 в 08:06, курсовая работа
Жасанды интеллект (искуственный интеллект) – бұл адам ойын компьютерде бейнелейтін (имитирующий) программалық жүйе.Бұндай жүйені жасау үшін белгілі бір облыста шешім қабылдайтын немесе нақтылы есептерді шешетін адамның ойлау процесін зерттеу қажет және осы процестің негізгі қадамдарын бөліп көрсетіп , оларды компьютерде іске асыратын программалық жабдықтарды жасау қажет.
ЖОСПАР
КІРІСПЕ....................................................................................................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
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 ,X<Y, X<Y,X>Y предикаттарды қолдану келесі мысалдармен көрсетейік:
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) процедураның І тұжырыммен сәйкестендіруге тырысады,бірақ термнің І компоненттері сәйкестендірілмейтіндіктен талпыныс сәтсіздікке ұшырайды.