Автор работы: d***********@gmail.com, 28 Ноября 2011 в 07:34, курсовая работа
Жасанды интеллект (искуственный интеллект) – бұл адам ойын компьютерде бейнелейтін (имитирующий) программалық жүйе.Бұндай жүйені жасау үшін белгілі бір облыста шешім қабылдайтын немесе нақтылы есептерді шешетін адамның ойлау процесін зерттеу қажет және осы процестің негізгі қадамдарын бөліп көрсетіп , оларды компьютерде іске асыратын программалық жабдықтарды жасау қажет.
КІРІСПЕ....................................................................................................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
Әрбір анонимді айнымалы тұжырымға анонимді айгымалылардан анық ажыратылады.
А-а: Анонимдерден өзгеше айнымалылар атаулы деп ,ал нақтылан-баған (мән берілмеген) айнымалылар еркін деп аталады.
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 У мақсатының қосымша тиімді жағдайы жоқ және қайтадан келісілуі мүмкін емес.Егер Х анықталмаған айнымалы немесе сан болмаса , немесе егер У арифметикалық өрнек болмаса қате туындайды. Мысалы: