Екi тiзiмдi беттестiру.
Бұл есептi келесi өрнек түрiнде жазуға болады:
а) негiзгi түсiнiктемесiнде, егер бос тiзiмге [ ] Р тiзiмiн қосса, онда нәтижесiнде Р пайда болады.
б) Егер Р тiзiмiн С тiзiмi соңына қосса, егер Р С соңына қосылса және В басына бiрiктiрiлсе бұл рекурсиялық жағдайы болады. Пролог-Д-да предикаттарды мына түрде жазуға болады:
добавить([],[P],[P]);
добавить(C,P,B)<- равно(C,[X,Y]),добавить(Y,P,Z),
равно(B,[T,Z]);.
Жоғарыдағыларға Пролог-Д-ның семантикалық процедура қасиетiн қолданғанда бұл программаны қысқартуға болады:
присоединить([],[P],[P]);
присоединить([X|Y],P,[X|T])<-присоединить(Y,P,T);.
Мысалы, осы базалық бiлiмге сұрақ қойылса,
?присоединить(L,[Джим |R],[Джек, Билл, Джим, Тим, Джим, Боб];,
онда жауап мына түрде алынады:
L=[Джек, Билл] R=[Тим, Джим, Боб] L=[Джек, Билл, Джим, Тим] R=[Боб].
Тапсырмалар
Элементтерi бүтiн өспелi болатын сұрыптау тiзiмiн сипаттайтын берiлгендер қорын жазыңыз.
Айналу тiзiмiн сипаттайтын бiлiм қорын жазыңыз. (бiрiншi элемент соңы болатын)
Тiзiмнен п-нөмiрлi элементтi табуды сипаттайтын бiлiм қорын құрыңыз.
Тiзiмнен п-шi элементтi жоюды сипаттайтын бiлiм қорын жазыңыз.
Элементтерi бүтiн кемiмелi болатын сұрыптау тiзiмiн сипаттайтын берiлгендер қорын жазыңыз.
Зертханалық жұмыс №6
Тақырыбы: Пролог-Д жүйесінде рекурсияны қолдану.
Жұмыстың мақсаты: Пролог-Д жүйесінде рекурсияны қолдануды түсіндіру.
Теориялық бөлім
Біршама көлемді есептерде объектілер арасындағы қатынасты анықтау үшін рекурсия аталатын ереже пайда болады.
1-мысал. Екі санның ең үлкен ортақ бөлгішін есептеу. Берілген екі санның ЕОБ табылатын предикаттың НОД аты және үш аргументі: a, b саны және НОД – c мәні болады. ЕОБ-ті есептеуді сипаттау үшін келесі өрнекті қарастырамыз.
Біріншіден, егер a=b болса, онда c=a=b.
Екіншіден, егер a>b болса, b және a - b үшін ЕОБ-ті есептеу қажет.
Үшіншіден, егер b>a болса, a және b – a сандары үшін ЕОБ есептеу қажет.
Бұл тұжырымдамаларды Пролог-Д тілінде жазылуы қажет.
нод (а,а,а);
нод (а,b,c)<-БОЛЬШЕ(а,b), нод(b,#a-b#,c);
нод (а,b,c)<-БОЛЬШЕ(b,а), нод(a,#b-a#,c);
Егер осы білім қорына сұрақ қойсақ:
?нод (10,25,x);
Пролог-Д жүйесінің жауабы:
x=5
Басқа шешім жоқ.
Достарыңызбен бөлісу: |