- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •1. Пәннің оқу бағдарламасы - syllabus
- •1.1. Оқытушы жөнінде мәліметтер:
- •1.2. Пән бойынша мәліметтер:
- •1.3. Осыған дейінгі пәндер тізімі: Информатика, Математикалық талдау, Алгебра және геометрия, Математикалық логика.
- •1.4. Шектес пәндер тізімі: Сандық әдістер, Бағдарламалау тілі, Компьютерде тәжірибе
- •1.5. Пән мақсаты:
- •1.6. Пән бойынша берілген тапсырмаларды орындау және тапсыру графигі
- •11. Рашбаев ж.М. Массивті реттеу алгоритмдерін программалау. Оқу және методикалық әдебиеттер жөніндегі Республикалық баспа кабинеті. Алматы-1991 ж.
- •1.8. Бағалау ақпараттары
- •1.9. Курс саясаты және процедурасы
- •2. Пән бойынша оқу-әдістемелік кешен материалдары
- •2.1. Курстың тақырыптық жоспары
- •2.2. Дәріс сабақтар
- •1 Дәріс тақырыбы: Алгоритмдер. Алгоритмдерді талдау. Алгоритмдер құру.
- •2 Дәріс тақырыбы: Программа құру тілі. Программа құрылымы. Енгізу және шығару командалары.
- •3 Дәріс тақырыбы: Есептің қойылымы. Математикалық моделін тұрғызу. Алгоритмін құру. Есепті компьютерде шешу. Проектіні тексеру.
- •4 Дәріс тақырыбы: Циклдік алгоритм. Цикл түрлері. Цикл құрылымы.
- •5 Дәріс тақырыбы: Берілгендердің символдық типі. Жолдық тип.
- •6 Дәріс тақырыбы: Берілгендердің фундаментальді типі. Массив, жазба және жиынның қойылымы.
- •7 Дәріс тақырыбы: Рекурсивті алгоритмдер.
- •Мұндай рекурренттік қатынас п- факториалды санының рекурсивтік есептеу алгоритмін шамалайды.
- •8 Дәріс тақырыбы: Қосалқы программа. Функция. Процедуралық тип.
- •9 Дәріс тақырыбы: Ақпараттық құрылым. Сызықты тізім.
- •10 Дәріс тақырыбы: Ақпараттық құрылымдар. Стектер, кезектер.
- •1 Сурет
- •2 Сурет
- •4 Сурет
- •5 Сурет
- •11 Дәріс тақырыбы: Тізбекті үлестіру. Байланысқан үлестіру.
- •12 Дәріс тақырыбы: Бірбағытталған және екібағытталған байланысқан тізімдер. Көрсеткіштер.
- •13 Дәріс тақырыбы: Ақпараттық құрылым. Ағаш. Ағаштардың қойылымы.
- •14 Дәріс тақырыбы: Көпбайланысқан құрылымдар. Жадыны динамикалық бөлу.
- •15 Дәріс тақырыбы: Ішкі сұрыптау алгоритмдері: таңдау, қосу. Тікелей таңдауға талдау.
- •16 Дәріс тақырыбы: Ішкі сұрыптау алгоритмдері: Екілік қосылымға талдау жасау.
- •17 Дәріс тақырыбы: Көпіршікті және шейкерлік сұрыптауды талдау.
- •18 Дәріс тақырыбы: Бөліп алу көмегімен сұрыптау.
- •19 Дәріс тақырыбы: Медиананы табу.
- •20 Дәріс тақырыбы: Сызықты іздеу.
- •21 Дәріс тақырыбы: Екілік іздеу.
- •22 Дәріс тақырыбы: Қатарда іздеу. Кнут - Моррис - Пратт алгоритмі.
- •23 Дәріс тақырыбы: Қатарда іздеу. Боуер-Мура алгоритмі.
- •24 Дәріс тақырыбы: Жолды өңдеу алгоритмі. Рабин алгоритмі.
- •25 Дәріс тақырыбы: Қайталанбалы алгоритм.
- •26 Дәріс тақырыбы: Қайталанбалы алгоритм. Аттың жүрісі туралы есеп.
- •27 Дәріс тақырыбы: Программалаудың кейбір фундаментальді әдістері. Программаны құрастырудың технологиясы және таралуы.
- •28 Дәріс тақырыбы: Есептеуді тиімдеу. Программаны жөндеу және тестілеу әдістемесі.
- •29 Дәріс тақырыбы:
- •30 Дәріс тақырыбы: Объектіге-бағытталған программалау.
- •2.3. Зертханалық сабақ жоспарлары
- •Алгоритм. Қасиеттері. Алгоритм қойылымы.
- •2.4. Оқытушы жетекшілігімен жүргізілетін студенттердің өзбетіндік жұмысы
- •Орындаушы тәжірибе аяқталғаннан кейін шығыс ақпаратын немесе екі хабардың бірін береді.
- •65387 Санында – 5 цифр !
- •Тақырыбы: Ағаш. Ағашты қалыптастыру. Қалыпты ағашты құру.
- •Ноталардың дыбысталу жиілігі
- •Студенттердің өзбетіндік жұмыс жоспары
- •Тақырыбы: Берілгендер. Берілгендер типі, тұрақты және айнымалы. Өрнектер.
- •Тақырыбы: Динамикалық ақпаратты құрылым. Ағаш.
- •Тақырыбы: Ішкі жолдарды іздеу. Текстке сөз енгізу.
- •Тақырыбы: Ішкі сұрыптау алгоритміне программа құру.
- •Тақырыбы: Сұрыптау алгоритмі
- •Тақырыбы: Массивті сұрыптау алгоритмінің таралымы
- •Тақырыбы: Файлдық тип. Тексттік файлдар.
- •Тақырыбы: Файлмен жұмыс
- •Тақырыбы: Кіру және шығу файлдарымен жұмыс.
- •Тақырыбы: Файлдарды сұрыптау және последовательностей
- •Тақырыбы: Кнут-Морис- Пратта алгоритмін қолдану
- •Тақырыбы: Поиск подстроки в строке
- •Тақырыбы: Манипулирование строками
- •Тақырыбы: Рекурсивті алгоритмдердің таралымы. Лабиринт есебі.
- •Тақырыбы: Рекурсивті алгоритмдер құрастыру.
- •2 Мысал:
- •Тақырыбы: Мәтіндік режимде экранды басқару. Crt модулін қою.
- •2 Мысал: Күн жүйесінің динамикалық моделі.
- •2.6. Курс бойынша жазба жұмыстарының тақырыптамалары
- •Курстық жұмыс және проектілер тақырыптамалары
- •Алгоритм дегеніміз -
- •B) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
23 Дәріс тақырыбы: Қатарда іздеу. Боуер-Мура алгоритмі.
Егер Р үлгісі ұзын, ал S алфавиті айтарлықтай үлкен болса, онда кіші жолдарды іздеудің ең тиімді алгоритмі Бойер (Robert S.Boyer) мен Мур (J. Strother Moore) ойлап тапқан келесі алгоритм болып табылады:
BOYER-MOORE-MATCHER(T,
P,
)
1 n <— length[Т]
2 m <— length[P]
3
<-
COMPUTE-LAST-OCCURRENCE- FUNCTION (P, m,
)
4
<-
COMPUTE-GOOD-SUFFIX-FUNCTION(P,m)
5 s <- 0
6 while s
n-m
7 do j <— m
8 while j>0 and P[j]=T[s+j]
9 do j <— j-1
10 if j=0
11 then print ‘Үлгі ығыстырумен шығады' s
12 s <— s+y[0]
13 else s <— s+max(Y[j] , j-A,[T[s+j ] ] )
Егер
белгісіз
мен
-ға
назар
аудармаса,
бұл
алгоритм
кіші
жолдарды
іздеудің
қарапайым
алгоритміне
өте
ұқсас.
Шындығында,
егер
біз
3-4 жолдарды
түсіндірсек
және
12-13 жолдарды
12 s <— э+1
13 else s <— s+1
ауыстыратын болсақ онда, бір жалғыз айырмасы бар кіші жолды іздеудің қарапайым алгоритмі алынады, P [1..m] және T[s + 1..s + т] салыстыруы солдан оңға емес, оңнан солға жүреді.
Бойер-Мур алгоритмі оңнан солға салыстыруы бар қарапайым алгоритмге, «стоп-символдың эвристикасы» және «қауіпсіз суффикс эвристикасы» деп аталатын екі жетілдіру енгізеді (суретті қараңыз).
Бұл
эвристикалар
s
ығысуының
кейбір мәнін (практикада- көпшілігі)
қарамауға мүмкіндік береді. Екі эвристика
да тәуелсіз әрекет етеді және бір уақытта
қолданылады. Егер s
ығысуын
тексеру кезінде T[s
+ 1..s + т]
кіші
жолы
үлгімен
сәйкес
келмейтіні
анықталса,
онда
эвристикалардың
әрқайсысы
болжалған
ығыстыруды
жіберіп
алудан
қауіптенбей
s
–ті көбейтуге болатын мәнді көрсетеді
(бұл стоп-символ эвристикасы үшін j—
[T[s
+j]] және
қауіпсіз суффикс эвристикасы үшін
j—
[T[s
+j]];
Бойер-Мур
алгоритмі
екі
ығыстырудың
үлкенін
таңдайды.
s үлгіге ығыстырылғанды текстпен (мәтінмен) салыстырған кезде (оңнан солға), екі шеткі оң сандар сәйкес келетіні анықталды (олар се “қауіпсіз суффикс” құрайды), ал үлгідегі үшінші оң жақтағы әріп –текстегідей емес. Тексте бұл жерде і “стоп символы” тұр: онда жолдарды салыстыру үзіледі (а-суреті). Стоп-символдың эвристикасы үлгіні оңға стоп-символ тексте осы символдың үлгіге шеткі оң кіруі қарсы орналасатындай қашықтықта ығыстыруды ұсынады. Біздің жағдайымызда бұл 4 позицияға ығыстыруды білдіреді. Егер стоп-символ үлгіде мүлдем жоқ болса, онда үлгіні текстің стоп-символына толықтай ығыстыру қажет; егер стоп-символ үлгіде текстегі стоп-символдан оңға қарай кездессе, онда стоп-символдың эвристикасы пайдалы ештеңе ұсынбайды. Ол алгоритм елемейтін теріс ығысу береді (б-сурет). Қауіпсіз суффикс эвристикасы үлгіні оңға қауіпсіз суффикстің үлгіге жақын кіруі (егер оңнан солға қараса) текстегі қауіпсіз суффикске қарсы орналасатындай етіп ығыстыруды ұсынады. Біздің мысалымызда бұл 3 позицияға ығыстыруды білдіреді. Бойер-Мур алгоритмі екі ұсынылатын ығыстырудың үлкенін таңдайды – біздің жағдайымызда 4-ке ығыстыру (в-суреті).
Бұл алгоритм алғашында мүмкін емес сияқты көрінетінді жасайды: қалыпты жағдайда ол сөздің берілген үлгі ізделетін барлық әріптерінің азғантай бөлігін ғана оқиды. қалайша бұлай болады? Идея қарапайым. Мысалы, біз abcd үлгісін іздейміз делік. Сөздің төртінші әрпін қараймыз: егер мысалға бұл әріп с болса, онда алғашқы үш әріпті оқудың ешқандай қажеттілігі жоқ. (Шын мәнінде, үлгіде е әрпі жоқ, сондықтан ол бесінші әріптен басталуы мүмкін).
