Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Екілік арифметика ережелері




Пост машинасы

Абстрактылы Пост машинасы шексіз лента түрінде болады, ол жеке ұяшықтарға бөлінген, оған белгіні енгізеді немесе бастиек көмегімен белгіні жазады немесе оқиды.

i-2
i-1
i
i+1
i+2

 


Сурет3.1.Абстрактылы Пост машинасы

Лента немесе бастиек командаға байланысты бір қадам солға немесе оңға жылжиды. Лента бастиек қарама-қарсы ұяшыққа орналасатындай тоқтайды. Абстрактылы автоматтың құрамына төмендегі әрекеттердің біреуі кіреді (кесте 3.1)

                                             Кесте 3.1 Пост машинасының командалары

Команда

лентаның қалып-күйі

  командадан кейін
Бастиекті оңға жылжыту
Бастиекті солға жылжыту
Белгіні жазуMm
Белгіні өшіруCm
Басқаруды беру
Тоқтатоқтаn

Әрбір команданың өзінің i нөмері болады. Стрелка жылжу бағытын көрсетеді. Команда соңындағы екінші j саны жөнелту деп аталады. Басқаруды беру командасында екі жөнелту болады. Сондықтан абстрактылы автомат екі қасиетке ие: 1) бірінші орында номер 1 команда, екінші орында 2 номерлі және т.с.с; 2) кез-келген командадан жөнелту бағдарлама командасының тізімінен алынады.

Лентаны солға немесе оңға жылжытқаннан кейін бастиек ұяшықтың қалып күйін оқиды. Бос немесе белгіленген ұяшықтар туралы ақпарат лентаның қалып күйін немесе автоматтың қалып күйін құрайды. Автоматтың бағдарламасы деп командалардың бос емес шектелген тізімін айтамыз.

Абстрактылы автоматтың жұмыс істеуі үшін бағдарлама және бастапқы күйін беру керек, яғни бастиектің орны мен лента ұяшықтарының күйін беру керек. Әрбір команда бір қадамда орындалады, одан кейін жөнелтуде номері көрсетілген команданың орындалуы басталады. Егер команда екі жөнелтуден тұрса және бастиек бос ұяшықта тұрса, онда жоғарғы жөнелту орындалады. Егер бастиек белгісі бар ұяшықта тұрса, онда төменгі жөнелту орындалады. Басқаруды беру командасының орындалуы автоматтың күйін өзгертпейді. Автоматты іске қосқанда төмендегі жағдайлардың біреуі болуы мүмкін:

1) автомат орындалмайтын командаға жетті(белгіні бос емес ұяшыққа жазу, бос ұяшықтағы белгіні өшіру); бұл жағдайда орындалу аяқталады, автомат тоқтайды, нәтижесіз тоқтату болады.

2) автомат тоқта командасына жетті, бағдарлама орындалды деп есептеледі, нәтижелі тоқтату болады.

3) автомат нәтижелі тоқтатуға да, нәтижесіз тоқтатуға да жетпейді, шексіз жұмыс істеледі. (автомат «тұрып қалады»).

Пост машинасының типтік бағдарламасын орындау кезіндегі автомат жұмысын қарастырамыз.

Бастиектің бастапқы күйі берілген және бос лентаға екі белгі жазу керек.

 

Бастапқы күйі

1. M 2
2.
3. M 4
4. Тоқта 4

Циклдық процесс ұйымдастыру үшін шартты өту командасын қолдануды көрсетейік. Лентада қатарынан бірнеше белгісі бар жазу бар және бастиек шеткі оң жақ белгіде орналасқан. Бастиекті ең бірінші бос позицияға дейін солға жылжыту керек.

бастапқы күйі 1. 2. 3.
  тоқта 3
1-шіжүріс п. 1  
2-шіжүріс п. 1  
3-шіжүріс п. 1  
4-шіжүріс п. 3 тоқта

 

Пост машинасы сияқты элементар автоматтарда сандарға әр түрлі амалдар қолдануға болады. Ол үшін сандарды абстрактылы автоматта көрсету керек. Санның автоматтық бейнелеуі белгісі бар ұяшықтар тізбегі түрінде жүзеге асырылады. Бұл тізбекті массивтер деп атайды, ал ондағы ұяшықтар санын массив ұяшығы деп атайды, n саны лентада ұзындығы n+1 болатын массив түрінде көрсетіледі. Мысалы, 6,3 және 2 сандарының автоматтық бейнеленуі төмендегі суретте келтірілген.

Пост машинасында қолданылатын сандар позициялық емес.

Кез келген санға бірді қосатын бағдарлама құрайық. Лентада бір ғана сан жазылған және бастиек осы санға кіретін белгінің үстінде орналасқан. Есепті шешу үшін бастиекті солға немесе оңға бірінші бос ұяшыққа дейін жылжытуға болады, одан кейін белгіні жазу керек. Бағдарлама төмендегідей болуы мүмкін:

1-ші нұсқа

 

2-ші нұсқа

1.   1.
2.   2.
3. M 4   3. M 4
4. Тоқта 4   4. Тоқта 4

Бастапқы күйі ретінде бастиек лентаның белгіленген ұяшығында орналасқан деп қарастырамыз.

Бастиек санның сол жағындағы бірнеше ұяшықтан кейін орналасқан. Сол санға 1-ді қосу керек. Бағдарлама мәтінін келтіреміз, 1-ді сол жағынан және оң жағынан қосады:

1.   1.
2.   2.
3.   3.
4. M5   4.
5. Тоқта 5   5. M 6
      6. Тоқта 6

Бірінші жағдайда бастиекті санның сол жақ белгісіне жылжытудың керегі жоқ.

Абстрактылы автомат көмегімен сандық ақпараттың басқа түрлендіруін жүзеге асыруға болады. Мысалы, екі санды қосуды қарастырайық. Жалпы жағдайда бұл есеп былайша тұжырымдалады: лентада кез келген ара қашықтықта жазылған а және b сандарын қосу бағдарламасын құрыңдаp. Автоматтың алғашқы қалып күйі суретте көрсетілген:

a+1
b+1

 

Бағдарлама жазу үшін, мысалы, сол жақ массивті оң жақ массивпен тоғыстырғанша жылжытамыз. Массивті жылжыту сол жақ шеткі белгіні оң жақтағы ең жақын бос ұяшыққа тасымалдау (өшіру) арқылы жүзеге асырылады.

 

Дәріс5.

Тақырыбы: Ақпараттық үрдістерді автоматтандыру. Цифрлы автоматтардағы ақпараттың көрсетілуі. Санау жүйелері

( 5 апта 1 сағат)

Дәріс жоспары:

5.1. Ақпаратты көрсету үшін санау жүйелерін таңдау

5.2. Позициялық санау жүйесі

5.3. Позициялық емес санау жүйесі

5.1 Ақпаратты көрсету үшін санау жүйелерін таңдау

ЭЕМ ішінде ақпарат әрқашанда белгілі бір санау жүйелеріндегі сандар түрінде өрнектеледі. Санау жүйелері — сандарды цифрлық таңбалар немесе символдармен жазудың тәсілдері мен ережелерінің жиынтығы. Бізге кеңінен таныс санау жүйесі ондық санау жүйесі болып табылады, онда сандарды жазу үшін 0, 1, ..., 9 цифрлары қолданылады.

Барлық сандарды көрсету жүйесі позициялық және позициялық емес болып бөлінеді. Сандарды жазудың ең қарапайым тәсілі төмендегі өрнекпен сипатталады

,

мұндағы АD — D санау жүйесінде А санын жазу; Di— жүйенің D={D1, D2, …, Dk} негізін құрайтын символдары.

Санаудың позициялық емес жүйесі осы принцип бойынша құрылған.

5.2 Позициялық емес санау жүйесі

Позициялық емес санау жүйесі — символдың мәні, санның орнына байланысты тәуелді болмайтын жүйе. Позициялық емес санау жүйесінің мысалы ретінде рим жүйесін алуға болады, мұнда келесі символдардың жиынтығы қолданылады: I, X, V, L, С, D, М және т.с.с. Бұл жүйеде цифрдың сандағы орнына байланысты мәнінің тәуелсіздігінің ережелерінен ауытқулар болуы мүмкін. LX және XL сандарында X символы екі түрлі мән қабылдайды: +10 — бірінші жағдайда және - 10 — екінші жағдайда.

Жалпы жағдайда санау жүйелерін келесі принцип бойынша құруға болады:

, (4.1)

мұндағыАBнегізі Biболатын санау жүйесінде А санының жазылуы; негізіBi болатын санау жүйесінің цифры (символы); Biжүйенің базасы, немесе негізі.

ЕгерBi = qiдеп есептесек, онда (4.1)-ді ескере отырып алатынымыз

. (4.2)

5.3 Позициялық санау жүйесі

Позициялық санау жүйесі — (4.2) теңдігін қанағаттандыратын жүйе.

Егер q — бүтін оң сан болса, позициялық санау жүйесі орын алады.

Позициялық санау жүйесінде цифрдың мәні оның сандағы орнымен анықталады: бірдей таңба әр түрлі мән қабылдайды. Мысалы, 222 ондық санында оң жақтағы бірінші цифр екі бірлікті, оған көрші — екі ондықты, ал сол жақтағысы — екі жүздікті білдіреді.

Кез келген позициялық санау жүйесі негізімен сипатталады. Позициялы санау жүйесінің q негізі (базисі)— берілген жүйеде санды бейнелеуде қолданылатын таңбалар немесе символдардың саны.

Позициялық санау жүйесі үшін келесі теңдікті жазуға болады

(4.3)

немесе , мұндағыАq— негізіqболатын санау жүйесінде жазылған кез-келген сан; п + 1, т — бүтін және бөлшек разрядтардың саны.

Практикадасанның қысқартылған жазылуын қолданады:Aqn аn-1 ...а1а0а-1 ...аm.

Кесте4.1-де ондық цифрлардың әр түрлі санау жүйесіндегі эквиваленті келтірілген.

                                                                                               Кесте4.1

Ондық цифр

Басқа санау жүйелеріндегі эквиваленттері

q=2 q=3 q=5 q=8 q=16
0 0000 000 00 00 0
1 0001 001 01 01 1
2 0010 002 02 02 2
3 0011 010 03 03 3
4 0100 011 04 04 4
5 0101 012 10 05 5
6 0110 020 11 06 6
7 0111 021 12 07 7
8 1000 022 13 10 8
9 1001 100 14 11 9

Кез келген позициялық санау жүйесінде кез келген санды мына түрде жазуға болады

. (4.4)

ЭЕМ-де негізінен позициялық санау жүйелерін қолданады. Санның позициялық санау жүйесінде рi разрядының салмағы төмендегі қатынаспен өрнектеледі

, (4.5)

мұндағыi — оңнан солға есептегендегі разряд номері.

Егер разрядтың салмағырi = 10kболса, онда келесі жоғарғы разрядтың салмағы pi+1 = 10k+1көрші кіші разряд салмағы — pi-1 = 10k-1. Разрядтардың арасындағы мұндай өзара байланыс олардың арасындағы ақпараттарды беру мүмкіндігіне алып келеді.

 

Дәріс6.

Тақырыбы: Ақпараттық үрдістерді автоматтандыру.Екілік қосындылауыштарда арифметикалық амалдардың орындалуы

( 6 апта 1 сағат)

Дәріс жоспары:

6.1. Екілік арифметика ережелері

6.2. Екілік қосындылауышта нүктесі бекітілген түрде көрсетілетін сандарды қосу.


Екілік арифметика ережелері

ЭЕМ-ге түсетін ондық жүйедегі сандарды процессор олардың екілік эквивалентіне түрлендіреді. ЭЕМ бағдарламаға байланысты ақпараттарды өңдегеннен кейін процессор екілік түрде алынған нәтижелерді ондық санау жүйесіне қайта түрлендіреді. Ондық сандардың екілік эквивалентіне амалдар қолданғанда процессор екілік арифметика ережелерін басшылыққа алады.

Кез келген ЭЕМ-нің арифметикалық – логикалық құрылғысының негізі ретінде қосындылауыш немесе азайтатын құрылғы алынады. Қосындылауыш – екілік екі цифрларды қосу амалын орындайтын цифрлық электронды құрылғы. Бұл құрылғыны екілік қосындылауыш деп атайды.

Арифметикалық амал нәтижесінде жаңа сан пайда болады: 

С=АÑ В (5.1)

мұндағы Ñ- арифметикалық амал таңбасы (қосу, азайту, көбейту,бөлу ).

Операнд - цифрлы автоматта орындалғанда арифметикалық амалдарға қатысатын сан. Цифрлы автомат сандардың автоматтық бейнелеріне ғана амал орындағандықтан санның автоматтық бейнесі операнд болып табылады. Яғни, машиналық амалдар үшін (5.1) өрнекті төмендегіндей жазған дұрыс:   

[C]=[А ] Ñ [В] (5.2)

 мұндағы квадрат жақшада операндтардың автаматтық бейнесі белгіленген.

 Операндтар разрядтарының деңгейіне қосу және азайту арифметикалық амалдарының орындалуының ережелерін қарастырайық. Мұндағы аi, вi - А және В операндтарының разрядтары; сi - қосынды разряды; пi– берілген разрядтан көрші үлкен разрядқа тасымалдау.                        

Екілік жартылай қосындылауыш – арифметикалық әрекеттерді кесте 5.1-де көрсетілген ереже бойынша дайындайтын құрылым.

Екі разрядты қосқанда 1-ді тасымалдау екілік цифрларды қосу ережелерін бірқатар өзгертеді (кесте 5.2);

 Кесте 5.1                                 Кесте 5.2

 

аi 0 0 1 1
вi 0 1 0 1
сi 0 1 1 0
пi 0 0 0 1
аi 0 0 1 1 0 0 1 1
вi 0 1 0 1 0 1 0 1
пi-1 0 0 0 0 1 1 1 1
сi 0 1 1 0 1 0 0 1
пi 0 0 0 1 0 1 1 1

 

 


 

жоғарыда айтылғандарды жалпылай айтқанда, А және В операндтарын қосқанда разрядтық әрекеттер ережесін былайша тұжырымдауға болады: 

аii+пi-1i+пi;    (5.3)

 мұндағы пi-1- (i-1)-ші разрядтан тасымалдау пi - (i+1)-ші разрядқа тасымалдау (тасымалдар 0 немесе 1 мәндерін қабылдайды.)                                      

Екілік қосындылауыш - арифметикалық әрекеттерді кесте 5.2-де көрсетілген ереже бойынша орындайтын құрылғы.

Екілік арифметиканың ережесі негізінде екілік цифрларды азайту ережелерін  кесте 5.3-те көрсетілгендей етіп жазуға болады, мұндағы zi+1, zi - үлкен разрядтардан бірді қарызға алу. Қарызға алу – үлкен разрядтан бірді aзайтқанға тең. Көрші үлкен разрядтан бірді қарызға алғанды ескере отырып екілік цифрларды азайтуды кесте 5.4-те көрсетілгендей етіп жазуға болады (қарызға алуды тасымалдаудан айыру үшін бірдің алдына минус таңбасын қоямыз).

Кесте 5.3                               Кесте 5.4

аi 0 1 1 0
вi 0 0 1 1
сi 0 1 0 1
zi 0 0 0 -1
аi 0 1 1 0 0 1 1 0
вi 0 0 1 1 0 0 1 1
zi 0 0 0 0 -1 -1 -1 -1
сi 0 1 0 1 1 0 1 0
zi+1 0 0 0 -1 -1 0 -1 -1

 

Егер А азайғыш (1-ші операнд), В азайтқыш (2- ші операнд) болса, онда разрядты әрекет үшін былай жазуға болады:

ai+bi+zii+zi+1 (5.4)

Екілік азайтатын құрылғы деп арифметикалық әрекеттерді кесте 5.4-те көрсетілген ереже бойынша орындайтын құрылғыны айтамыз.

6.2 Екілік қосындылауышта нүктесі бекітілген түрде көрсетілетін сандарды қосу

Екілік қосындылауыштың бірнеше түрін қарастырамыз.

Тура кодтың екілік қосындылауышы - үлкен цифрлық таңбалық разрядтардың арасында разрядтық тасымалдау тізбегі болмайтын қосындылауыш. Тура кодтың екілік қосындылауышы таңбалары бірдей сандарды қосады. Яғни мұндай қосындылауыш алгебралық қосу амалын орындай алады.

[A]т=SgA a1,a2,…an, [B]т=SgB b1,b2,…bnоперандтары берілсін. Мұндағы SgA, SgB - А және В үшін разрядтық таңбалар; аi, вi – кескіндердің цифрлық разрядтары.

Егер SgA=SgB болса, онда сандардың қосындысының таңбасы қосылғыштың таңбасына ие болады, ал нәтиженің цифрлық бөлігі операндтардың цифрлық бөліктерін қосқанға тең.

Мысал 1. A=0,1011; B=0,0100 сандарын тура кодтың қосындылауышында қосу керек.

[A]т= 0,1011               SgA=0

+[B]т= 0,0100 SgB=0

[C]т= 0,1111                SgC=0                                  Жауабы: [C]т=0,1111

Мысал 2. A=-0,0101, B=-0,1001 сандарын тура кодтық қосындылауышында қосу керек.

[A]т=-0,0101  SgA=0,0101

+ [B]т=-0,1001 SgB=0,1001

                                 SgC=0,1110                                  Жауабы: [C]т=0,1110

Тура кодтың екілік қосындылауышында сандарды қосқанда, операндтардың қосындысының абсолют мәні бірден асып кететін жағдай болуы мүмкін. Онда автоматтың разрядтық торының толып кетуі мүмкін. Толып кету белгісі- қосындылауыштың цифрлық бөлігінің үлкен разрядынан тасымалдау бірлігінің бар болуы. Бұл жағдайда j=1 толып кету сигналы пайда болуы керек. Бұл сигнал бойынша машина автоматты түрде тоқтайды және толып кетуді болдырмайтындай масштабтық коэффициентті түзетеді.

Қосымша кодтың қосындылауышы – қосымша кодтағы сандардың кескіндеріне амалдар қолданатын қосындылауыш. Қосымша кодтың екілік қосындылауышының ерекшелігі цифрлық бөліктің үлкен разрядынан таңбалық разрядқа разрядтық тасымалдау тізбегінің бар болуы.

Мысал 3.Қосымша код қосындылауышын қолданып A=0,1010, B=0,0100 сандарының қосындысын табу керек.

Бұл сандардың машиналық кескіндері қосылады:

[A]қ=0,1010

+[B]қ=0,0100

[C]қ=0,1110                                                    Жауабы : [C]қ =0,1110

Мысал 4.Қосымша код қосындылауышында A=-0,1011;B=0,0100 сандарының қосындысын табыңдар.

[A]қ=1,0101

+ [B]қ=0,0100

[C]қ=1,1001                                                  Жауабы : [C]қ =-0,0111      

Мысал 5.Қосымша код қосындылауышында A=0,1011;B=-0,0100 сандарының қосындысын табыңдар.

[A]қ=0,1011

+ [B]қ=1, 1100

[C]қ=-(1)0,0111                                             Жауабы : [C]қ =-0,1001

Кері кодтың екілік қосындылауышы – кері кодтағы сандардың кескіндеріне амалдар қолданатын қосындылауыш.

Мысал 6. Кері кодтың қосындылауышында сандардың A=0,0101, B=0,0111 қосындысын табыңдар.

   [A]к=0,0101

+ [B]к=0, 0111

   [C]к=0,0111                                                               Жауабы : [C]к =0,0111

Мысал 7. Кері кодтың қосындылауышында сандардың A=-0,0101, B=0,0111 қосындысын табыңдар.

    [A]к=1,1010

 + [B]к=0, 0111

       +(1)0,001

                             1

    [C]к= 0,0010                                                   Жауабы : [C]к = 0,0010

 

Дәріс 7.

Тақырыбы: Ақпараттық үрдістерді автоматтандыру.Логикалар алгебрасының негізгі ұғымдары

( 7 апта 1 сағат)

Дәріс жоспары:

7.1. Тұжырым. Логикалық (бульдік) айнымалы. Логикалық функция.

7.1 Тұжырым. Логикалық (бульдік) айнымалы. Логикалық функция

Логикалар алгебрасының негізгі ұғымы – тұжырым. Тұжырым қандайда бір сөйлемнің ақиқат немесе жалған екендігін бекітетін сөйлем. Кез – келген тұжырымды х символымен белгілеуге болады және егер тұжырым ақиқат болса x=1, ал жалған болса x=0 деп есептеуге болады.

Логикалық (бульдік ) айнымалы деп тек екі ғана мән x={0,1} қабылдайтын шаманы айтамыз. Егер тұжырымға сәйкес логикалық айнымалы кез-келген жағдайда x=1 мәнін қабылдайтын болса, онда тұжырым абсолютті ақиқат. Егер тұжырымға сәйкес логикалық айнымалы кез-келген жағдайда x=0 мәнін қабылдайтын болса, онда тұжырым абсолютті жалған.

 

Дәріс 8.

Тақырыбы: Алгоритмдер теориясының негізгі ұғымдары. Алгоритм ұғымы.

( 8 апта 1 сағат)

Дәріс жоспары:

8.1. Алгоритм ұғымы

8.2. Тьюринг және Пост машинасы көмегімен «алгоритм» ұғымын анықтау

8.3. Марковтың нормальды алгоритмдері

8.1 Алгоритм ұғымы

Алгоритм ұғымы – информатиканың фундаментальды ұғымдарының бірі. Алгоритмдеу модельдеумен қатар информатиканың жалпы әдісі ретінде қолданылады. Алгоритмдер алгоритмдер теориясы деп аталатын ғылыми пәннің жүйелі зерттеулерінің объектісі болып табылады. «Алгоритм» терминінің бірнеше анықтамасы бар. Мысалы, акдемик А.Н. Колмогоровтың анықтамасы бойынша алгоритм немесе алгорифм дегеніміз қойылған есепті қандай да бір қадамнан кейін шешімге әкелетін нақты қатаң ережелер бойынша орындалатын есептеу жүйесі.

Алгоритмнің математикалық анықтамасы ХХ ғасырдың 30 жылдарында үш типтегі модельдер түрінде алынды: Есептелетін (рекурсивті) функциялар; Шектелген немесе шектелмеген автоматтар теориясы; Марковтың нормальды алгоритмдері.

8.2 Тьюринг және Пост машинасы көмегімен «алгоритм» ұғымын анықтау

Жоғарыда Тьюринг және Пост машиналары цифрлы автоматтар мысалы ретінде қарастырылған. Бұл машиналар толығымен детерминделген универсалды орындаушылар болып табылады. Олардың көмегімен алғашқы деректер енгізілгеннен кейін нәтижені «оқуға» болады. Тьюринг және Пост машиналарында орындалатын есептеулерге шектеулер бар ма деген сұраққа Пост былайша жауап берген: «егер кез – келген және бір ғана деректер бойынша нәтижеге әкелетін жалпы әдіс болса ғана программа құруға берілген есептердің шешімі болады».

8.3 Марковтың нормальды алгоритмдері

Алгоритм ұғымын формальдау үшін 50 жылдары орыс математигі А.А. Марков ассоциативтік есептеулерді қолдануды ұсынды, ол нормальды алгоритм ұғымын енгізді. Мұнда алгоритм ауыстырымдар жүйесі түрінде беріледі, олар қандай символдарды ауыстыру керек екендігін және бұл ауыстырулар қандай ретпен жүретіндігін көрсетеді.

Ассоциативті есептеудің кейбір ұғымдарын келтіреміз. А алфавиті (әр түрлі символдардың шектелген тобы) берілсін. Оны құрайтын символдарды әріптер деп атаймыз. Алфавиттің кез – келген шектелген тізбегін осы алфавиттегі сөзі деп атаймыз. Сөздегі символдар саны оның ұзындығы деп аталады. Ұзындығы нолге тең сөз бос деп аталады. Егер q сөзін q=rst түрінде көрсетуге болса, онда S сөзі q сөзінің ішкі сөзі деп аталады. Мұндағы r және t - сол алфавиттегі кез – келген сөз.

А алфавитінде N және M екі сөзін қарастырамыз. Егер NM-нің бөлігі болса, онда NM-ге кіреді деп аталады. Қандай да бір алфавитте N-M, S-T, ... ауыстыруларының шектелген жүйесі берілсін. Мұндағы N,M,S,T ... осы алфавиттегі сөздер. N-M кез – келген ауыстыруын k сөзіне былайша қолдануға болады. Егер K-ге N сөзі бір немесе бірнеше рет кіретін болса, онда оның кез – келгені M сөзімен ауыстырыла алады және керісінше.

А алфавитіндегі алгоритм деп тиімді есептелетін функцияны айтамыз. Оның анықталу облысы ретінде А алфавитіндегі барлық сөздер жиынтығындағы қандай да бір ішкі жиынды айтамыз және мәні ретінде А алфавитіндегі сөздер болып табылады.

Дәріс 9.

Тақырыбы: Алгоритмдер теориясының негізгі ұғымдары. Алгоритм тиімділігі мен күрделілігіне талдау жасау

(9 апта 1 сағат)

Дәріс жоспары:

9.1. Алгоритм күрделілігі. Алгоритмнің асимптотикалық күрделілігі

9.2. Енгізілетін деректер классы

9.3. Нені есептеу керек және нені ескеру керек

9.1 Алгоритмнің күрделігі. Алгоритмнің асимтотикалық күрделілігі

Алгоритмге талдау жасай отырып, қойылған есепті берілген алгоритммен шешу қанша уақыт алатынын есептеуге болады. Әрбір қарастырылатын алгоритм үшін ұзындығы N болатын кіріс деректері массивінде берілген есеп қаншалықты жылдам шешілетінін бағалай аламыз. Алгоритмдердің тиімділігіне талдау жасағанда бізді алдымен уақыт қызықтырады, ал жады маңызды болған жағдайларды да қажет кезінде қарастырамыз.

Алгоритмдерді талдау нәтижесі – нақты алгоритмдерге қажетті дәл секундтар санын немесе компьютердегі циклдарды есептеу формулалары емес. Мұндай ақпарат тиісімді емес, өйткені онда компьютер типін көрсету керек, бір немесе бірнеше қолданушы бола ма, компьютердің процессоры және тактылық жиілігі қандай, процесор чипіндегі командалар жиыны толық па және компьютор орындалатын кодты қаншалықты тиімді қолданатындығын көрсету қажет болады. Осы шарттардың барлығы алгоритмді жүзеге асыратын программа жұмысының жылдамдығына әсер етеді. Осы шарттардың барлығын ескеру программаны жылдам компьютерде орындаса алгоритм жақсырақ болып тез істейді дегенді білдірер еді. Бірақ біздің талдауымыз компьютер ерекшелігін ескермейді.

Күрделі емес немесе қарапайым программалардағы орындалатын амалдар санын N – ге тәуелді функция ретінде дәл есептеуге болады. Біз алгоритмдер талдауын амалдардың дәл санын есептеуден бастаймыз.

Мысалы файлға кіретін әр түрлі символдар санын есептеу алгоритмін қарастырамыз

For all 256 символ do

санауышты нольге айналдыр

endfor

whileфайлда тағы да символдар бар ма do

кезекті символды енгіз

end while

Бұл инициализациялау циклында 256 жүріс орындалады. Егер кіріс файлында N символ болса, онда екінші циклда N жүріс болады. «Нені есептеу керек?» деген сұрақ туады. For циклында алдымен айнымалы циклы инициализацияланады, одан кейін әр бір айнымалы цикл шекарасынан шығып кетпеді ме деп тексеріледі және айнымалы өсіріледі. Бұл инициализация циклы 257 меншіктеу жасайды дегенді білдіреді (біреуі цикл айнымалысы үшін және 257 санауыш үшін), айнымалы цикл 256 рет өсіріледі, және айнымалы цикл шекарасында жататындығын 257 рет тексереді (бір қосымша циклды тоқтату үшін). Екінші циклда N+1 рет шартын тексереді (+1 файл бос болғандағы соңғы тексеру үшін) және санауышты N рет өсіреді. Барлық амалдар:

Өсірулер N+256

Меншіктер 257

Шарттарды тексеру N+258

Сонымен кіріс файлының өлшемі 500 символ болғанда алгоритмде 1771 амал амал орындалады, оның 770 – і инициализациялауға кетеді (43%). Енді N – ді өсірсе не болатынын көрейік. Егер файл 50 000 символдан тұрса онда алгоритм 100 771 амал орындайды, оның 770 – і инициализациялаумен байланысты (бұл барлық амалдың 1%). Инициализациялау амалының саны өскен жоқ, бірақ проценттік қатынаста N – ді өсіргенде ол өте аз болады.         

Енді басқа жағынан қарайық. Компьютердегі деректер былайша ұйымдастырылған – деректердің үлкен блогтарын көшірудің жылдамдығы меншіктеумен бірдей жүреді. Біз алдымен 16 санауышқа 0-ге тең мәндерді меншіктеп, одан кейін бұл блогты басқа санауыштарды толтыру үшін 15 рет көшірейік. Мұның нәтижесінде инициализациялау циклындағы тексерулер саны 33–ке дейін, меншіктеулер саны 33 және өсірулер саны 31 – ге дейін кемиді. Инициализациялау амалдарының саны 770-тен 97-ге, яғни 87% - ке кемиді. Егер біз алынған пайданы 50000 символдан тұратын файлды өңдеу амалдарының санымен салыстырсақ пайда 0,7% - тен кем (100 771 амалдың орнына 100 098 жұмсадық).

Бұдан біз инициализациялау салмағы алгоритмнің орындалу уақытына қатысты аса маңызды емес екндігін көреміз.










Последнее изменение этой страницы: 2018-05-30; просмотров: 1547.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...