C(n/2+1:n,n/2+1:n)
Download
Report
Transcript C(n/2+1:n,n/2+1:n)
اهداف
درس این جلسه
(1بدست آوردن پیچیدگی محاسباتی برخی از توابع پیچیدگی بازگشتی
(1
بیان قضیهای پرکاربرد در این حوزه
(2تکمیل مهارت حل مساله با رویکرد تقسیم و حل
(1
(2
مرتبسازی سریع
ضرب ماتریسهای استراسن
قضیه:
تابع پیچیدگی ) T(nکه بصورت افزایش ی است و شرایط زیر را دارد را درنظر بگیرید:
که b ≥ 2و k ≥ 0ثابتهای صحیحی هستند و c ،aو dثابتهایی هستند که
a > 0, c > 0و d ≥ 0آنگاه:
در قضیه گفته شده داشتیم:
همچنین چنانچه رابطه بازگشتی به دوصورت زیر تغییر کند:
در این صورت نتایج با “ "big Oیا Ωبه جای Θتغییر خواهد کرد.
ب) مرتبسازی ادغامی )(Merge Sort
پیچیدگی زمانی در بدترین حالت:
ج) مرتبسازی سریع ) (Quick Sortیا
Partition Exchange Sort
فرض کنید آرایه زیر شامل لیستی از اعداد به صورت زیر باشد:
آرایه را به گونهای پارتیشنبندی میکنیم که تمامی املانهای که کوچکتر از املان محوری
سمت چپ آن و املانهای بزرگتر از آن در سمت راستش قرار بگیرند:
هرکدام از زیرآرایهها را مرتب میکنیم:
هستند در
(Quick Sort) ج) مرتبسازی سریع
function [A,ppoint]=partition(A)
len=length(A);
pitem=A(1);
ppoint=1;
for i=2:len
if A(i)<pitem
ppoint=ppoint+1;
temp=A(ppoint);A(ppoint)=A(i);A(i)=temp;
end
end
temp=A(1);A(1)=A(ppoint);A(ppoint)=temp;
end
(Quick Sort) ج) مرتبسازی سریع
function S=quickSort(A)
len=length(A);
if (len>1)
[A,ppoint]=partition(A);
S(1:ppoint-1)=quickSort(A(1:ppoint-1));
S(ppoint)=A(ppoint);
S(ppoint+1:len)=quickSort(A(ppoint+1:len));
else
S=A;
end
end
ج) مرتبسازی سریع )(Quick Sort
تحلیل پیچیدگی زمانی در بدترین حالت:
…
ج) مرتبسازی سریع )(Quick Sort
تحلیل پیچیدگی زمانی در حالت میانگین:
...
ج) مرتبسازی سریع )(Quick Sort
تحلیل پیچیدگی زمانی در حالت میانگین:
...
یکی از ویژگیهای توابع لگاریتمی:
د) ضرب ماتریسهای استراسن
) (Strassen's Matrix Multiplication
فرض کنید که میخواهیم ماتریس Cکه حاصلضرب دو ماتریس A 2*2و Bاست را بدست آوریم.
استراسن فرمولهایی به صورت زیر ارائه کردهاست که با بهرهگیری از آنها میتوان ماتریس Cرا محاسبه نمود.
Strassen determined that if we let
د) ضرب ماتریسهای استراسن
این روش برای ماتریسهای 2*2چندان جالب نیست
فرمولهای استراسن به گونهای هستند که میتوانیم ماتریسهای بزرگتر را به صورت افراز 4ماتریس
کوچکتر در نظر گرفت
د) ضرب ماتریسهای استراسن
د) ضرب ماتریسهای استراسن
د) ضرب ماتریسهای استراسن
function C=sterasen(A,B)
M1=sterasen(A11+A22,B11+B22);
n=max(size(A));
M2=sterasen(A21+A22,B11);
if (n==2)
M3=sterasen(A11,B12-B22);
M4=sterasen(A22,B21-B11);
C=A*B;
M5=
else
M6
A11=A(1:n/2,1:n/2);
M7
A12=A(1:n/2,n/2+1:n);
C11=M1+M4-M5+M7;
A21=A(n/2+1:n,1:n/2);
C12
A22=A(n/2+1:n,n/2+1:n);
C21
B11=B(1:n/2,1:n/2);
C22
B12=B(1:n/2,n/2+1:n);
C(1:n/2,1:n/2)=C11;
C(1:n/2,n/2+1:n)C12;
B21=B(n/2+1:n,1:n/2);
C(n/2+1:n,1:n/2)=C21;
B22=B(n/2+1:n,n/2+1:n);
C(n/2+1:n,n/2+1:n)=C22;
end
end
د) ضرب ماتریسهای استراسن
تحلیل پیچیدگی زمانی تعداد جمعها و تفریقها در حالت معمول
این روش برای ضرب دو ماتریس ،2×2به 7عمل ضرب و 18عمل جمع و تفریق نیاز دارد
پس از حل این رابطه بازگشتی به پیچیدگی زمانی در حالت معمول به صورت زیر خواهیم رسید.
پرسشهای
درس این جلسه
(1
(2
(3
(4
(5
(6
الگوریتم partitioningدر مرتبسازی سریع
الگوریتم مرتبسازی سریع
تحلیل پیچیدگی زمانی الگوریتم مرتبسازی سریع در بدترین حالت
تحلیل پیچیدگی الگوریتم مرتبسازی سریع در حالت میانگین
الگوریتم ضری ماتریس استراسن
تحلیل پیچیدگی زمانی ضرب ماتریس استراسن در حالت معمول