Матрицаларды көбейтудің есептеуіш аспектісі

Айталық Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru матрицалары берілсін және олардың Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru көбейтіндісін есептеу керек болсын. Бұны есептеудің классикалық алгоритмі мынадай (программа алгоритмдік Фортран тіліне ұқсас):

Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru

Алайда алдымен Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru элементтерін нөлге айналдырып алу керек.

«Бұл бағдарламаның жақсы жағы неде?»,- деген сұрақ туындайды. Бұл сұраққа жауап беру оңай емес. Алдымен бізге қандай да бір критерий қажет – айталық осы бағдарламаны орындау уақыты болсын. Алайда уақыт тек компьютердің түріне ғана тәуелді емес.

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

Алгоритм –бұл элементар амалдардың соңғы бекітілген жиынтығынан алынған элементар амалдардың тізбегі деп есептейік. Анықтық үшін, айталық бұл төрт арифметикалық амал болсын.

Сонымен, математикалық есеп қойылды. Бұрындары классикалық алгоритм ең жақсы деп есептелген. Қазір байқайтынымыздай ол бұлай емес.

1.8 Виноград әдісі

Классикалық алгоритмді қолданбай матрицаларды көбейткен алғашқылардың бірі (60 жылдардың басында) Виноград болды. Ол келесі тепе – теңдікті қолдануға болатынын көрсетті:

Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru

Айталық Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru болсын. Барлық Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru үшін екінші және үшінші қосындыны Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru көбейту және Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru қосу амалы арқылы табуға болады. Бірінші қосынды үшін Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru көбейту және Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru қосу амалы қажет.

Нәтижесінде – бұрынғыдай, Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru амал орындалады, бірақ мұнда енді Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru көбейту және Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru қосу амалы болады. көбейту амалы қосуға қарағанда күрделі амал болғандықтан Виноград әдісінің практикалық маңызы бар.

Штрассен әдісі

1965 жылы Штрассен Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді матрицаны тек қана 7 көбейтіндінің көмегімен көбейтуді анықтады (классикалық әдісте – 8 көбейтінді қолданылады). Штрассеннің ойлап тапқаны «көп өлшемді матрицалардың» тензорлық рангын есептеу көмегімен алынады.

Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru

1.10 Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді матрицалар үшін рекурсия

7 көбейтіндінің көмегімен есептелетін Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді матрицаларды көбейтуден Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru аспайтын амлады қажет ететін Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді матрицаларды көбейту әдісіне көшу оңай. Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru ұмтылғанда Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru ұмтылғандықтан, Штрассен әдісі классикалық әдістен асимптотикалық жақсырақ болып табылады.

Айталық Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru болсын және Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru матрицаларын Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді блокты матрица түрінде қарастырайық:

Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru

Штрассен әдісінде Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді матрицаларды көбейткенде коммутативтілік қолданылмайды. Сондықтан да бұл әдіс Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru - өлшемді блокты матрицаларды көбейту үшін де қолданылады.

Сонымен, Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru өлшемді есеп дәл осындай жеті Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru өлшемді есепке келтіріледі. Бұл 7 есепті құру үшін және осы 7 есепті шешкеннен кейін қорытынды нәтижені алу үшін Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru ретті блоктарды 18 рет қосу қажет.

Көрсетілген рекурсияны аяғына дейін «бұрмаласақ», соңғы кезеңде Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru көбейтуді аламыз. Барлық кезеңдегі қосудың жалпы саны

Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru

құрайды. (мұнда Матрицаларды көбейтудің есептеуіш аспектісі - student2.ru екендігін ескеру қажет).

Қазіргі кезде Штрассен әдісінен де аса жылдам әдістер ойлап табылған.

ДӘРІС 3,4

Наши рекомендации