ﺳﺎﺧﺘﻤﺎندادهﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ
ﻧﯿﻢﺳﺎل دوم ٩۵-٩۴
ﻣﺪرس :دﮐﺘﺮ ﻋﻠ ﺷﺮﯾﻔ
داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ
ﭘﯿﭽﯿﺪﮔ اﻟ ﻮرﯾﺘﻢ
ﺗﻤﺮﯾﻦ ﻧﻈﺮی دوم
اﻣﯿﺮﻣﺤﺴﻦ آﻫﻨﭽ
ﻣﺴﺌﻠﻪی .١ﻣﺮﺗﺐ ﺳﺎزی
زﻣﺎن اﻟ ﻮرﯾﺘﻢ ﻫﺎی ﻣﺮﺗﺐ ﺳﺎزی زﯾﺮ را در ﺑﻬﺘﺮﯾﻦ ) (Best Caseو ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ ) (Worst Caseﺑﻪ ﻃﻮر دﻗﯿﻖ
)ﺑﺮ اﺳﺎس ﮐﺪ ﻫﺎی اراﺋﻪ ﺷﺪه در ﮐﻼس( ﺣﺴﺎب ﮐﺮده و ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﺪ.
Selection Sort .١
Insertion Sort .٢
Bubble Sort .٣
Merge Sort .۴
ﺣﻞ .زﻣﺎن ﻣﻨﻈﻮر از زﻣﺎن در اﯾﻨﺠﺎ ﺗﻌﺪاد ﻣﻘﺎﯾﺴﻪ ﻫﺎی اﻧﺠﺎم ﺷﺪه اﺳﺖ.
ﺑﺮای ﻣﺮﺗﺐ ﺳﺎزی ﻫﺎی ٣ ،٢ ،١ﻣﺜﺎل } {1, 2, ..., nﺑﻬﺘﺮﯾﻦ ﺣﺎﻟﺖ اﺳﺖ و ﻣﺜﺎل } {n, n-1, ..., 1ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ
اﺳﺖ.
ﺟﺪول :١ﺗﻌﺪاد ﻣﻘﺎﯾﺴﻪ ﻫﺎی اﻟ ﻮرﯾﺘﻢ ﻫﺎی ﻣﺮﺗﺐ ﺳﺎزی
ﺗﻮﺿﯿﺤﺎت
) (
ﻫﻤﯿﺸﻪ n٢اﺳﺖ
Worst Case
) (n
Best Case
) (n
n
) (n٢
٢
n
) (n٢
٢
Sort Name
Selection Sort
Insertion Sort
Bubble Sort
در ﻣﺮﺗﺐ ﺳﺎزی ادﻏﺎﻣ ﻣﺜﺎل } {1, 2, ..., nﺑﻬﺘﺮﯾﻦ ﺣﺎﻟﺖ اﺳﺖ و اﻟ ﻮرﯾﺘﻢ زﯾﺮ ﻣﺜﺎل ﺑﺮای ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ را ﻣ ﺳﺎزد.
ﻗﺒﻞ از آﺧﺮﯾﻦ ﻣﺮﺣﻠﻪ ﮐﻪ ﻣﺮﺗﺐ ﺳﺎزی ﺗﻤﺎم ﻣ ﺷﻮد ،ﻧﺼﻔﻪ اول } {1, 3, ..., 2k −1ﺑﺎﺷﺪ و ﻧﺼﻔﻪ دوم }{0, 2, ..., 2k
ﺑﺎﺷﺪ ،ﺑﯿﺸﺘﺮﯾﻦ ﻣﻘﺎﯾﺴﻪ اﻧﺠﺎم ﻣ ﺷﻮد .اﯾﻦ ﮐﺎر را ﺑﺮای ﻫﺮ دو دﺳﺘﻪ ﺑﻪ ﺻﻮرت ﺑﺎزﮔﺸﺘ اﻧﺠﺎﻣ ﻣ دﻫﯿﻢ.
١
ﻣﺜﺎل ﺑﺮای :n = ٨
][4,0,6,2,5,1,7,3
\ /
/
\
][4,0,6,2] and [5,1,7,3
\ /
\ /
/
\
/
\
][4,0] [6,2
][5,1] [7,3
|
|
|
|
|
|
|
|
][0,4] [2,6
][1,5] [3,7
\
/
\
/
\
/
\
/
][0,2,4,6
][1,3,5,7
\
/
\
/
][0,1,2,3,4,5,6,7
▷
ﻣﺴﺌﻠﻪی .٢ﮐﺘﺎب
ﺳﻮاﻻت زﯾﺮ از و را از ﮐﺘﺎب درﺳ )ﮐﺘﺎب دﮐﺘﺮ ﻗﺪﺳ ( ﺣﻞ ﮐﻨﯿﺪ.
• ٢ .٢-٣
ﺣﻞ i .و jﻫﺮ ﮐﺪام ﺣﺪاﮐﺜﺮ ﯾ
ﺑﺎر ﺗﻐﯿﯿﺮ ﻣ ﮐﻨﺪ و ﭘﺲ ﻣ ﺗﻮان ﮔﻔﺖ اﻟ ﻮرﯾﺘﻢ از ) O(nاﺳﺖ.
▷
• ۵ .٣-٣
ﺣﻞ .ﺗﻤﺮﯾﻦ ) (3.2-4ﮐﺘﺎب .١ CLRS
▷
• ) ١٣ .٣-٣ﻣﻬﻢ(
ﺣﻞ .ﺳﻮال ) (3.2ﮐﺘﺎب CLRS.
▷
• ١۴ .٣-٣
ﺣﻞ .ﺳﻮال ) (3.3ﮐﺘﺎب CLRS
▷
ﻣﺴﺌﻠﻪی (٠،١) .٣
درﺳﺘ و ﻧﺎ درﺳﺘ ﻋﺒﺎرت ﻫﺎی زﯾﺮ را ﺑﺮرﺳ ﮐﻨﯿﺪ.
))• f (n) + g(n) ∈ Θ(min(f (n), g(n
))• f (n) ∈ O(n) ⇒ g(n) ∈ Ω(f (n
١ﻣﻘﺪﻣﻪای ﺑﺮ اﻟ ﻮرﯾﺘﻢﻫﺎ‐وﯾﺮاﯾﺶ ﺳﻮم
٢
))• log(f (n)) ∈ Θ(log(g(n))) ⇒ f (n) ∈ Θ(g(n
) • f (n) ∈ O(f (n)2
))• f (n) + o(f (n)) ∈ Θ(f (n
))• f (n) ∈ Θ(f (n/2
ﺣﻞ .ﺳﻮال ) (3.4ﮐﺘﺎب CLRS.
▷
ﻣﺴﺌﻠﻪی .۴اﺛﺒﺎت
.١ﺛﺎﺑﺖ ﮐﻨﯿﺪ )log(n!) ∈ Θ(n log n
Θ(log∗ log n) .٢و ) Θ(log log∗ nرا ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﺪ.
√
.٣ﺛﺎﺑﺖ ﮐﻨﯿﺪ )i ∈ Θ(n n
.۴ﺛﺎﺑﺖ ﮐﻨﯿﺪ )∈ Θ(log n
√ n
∑
1
n
i=1
.
n
∑
i=1
.۵ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﺗﺎﺑﻊ ﻓﯿﺒﻮﻧﺎﭼ از ﻣﺮﺗﺒﻪ ﻧﻤﺎﯾﯽ اﺳﺖ )) f (nﻧﻤﺎﯾﯽ اﺳﺖ اﮔﺮ (١ + δ)n ⩽ f (n) ⩽ (١ + ϵ)nﮐﻪ
ϵو δﺛﺎﺑﺖ ﻫﺴﺘﻨﺪ(
∈ ).g(n
∈ ) f (nو ))/ O(f (n
.۶دو ﺗﺎﺑﻊ ) f (nو ) g(nﭘﯿﺪا ﮐﻨﯿﺪ ﮐﻪ ))/ O(g(n
.٧ﺛﺎﺑﺖ ﮐﻨﯿﺪ ) logkb n ∈ O(nﮐﻪ kو bﺛﺎﺑﺖ اﻧﺪ.
ﺣﻞ.
.١در ﮐﺘﺎب درﺳ اﺛﺒﺎت ﺷﺪه.
.٢ﺗﻤﺮﯾﻦ ) (3.2-5ﮐﺘﺎب CLRS
.٣ﺗﺎﺑﻊ ﺑﻪ ﺷ ﻞ زﯾﺮ اﺳﺖ:
1+1+1+2+2+2+2+2+3+3+3+3+3+3+3+4+4+4+4+4+4+4+4+4+...
ﻫﺮ jدر اﯾﻦ دﻧﺒﺎﻟﻪ (j + 1)2 − j 2 = 2j + 1ﺑﺎر ﺗﮑﺮار ﺷﺪه.
m
∑
ﮐﻪ ﻣ ﺗﻮان ﺑﻪ راﺣﺘ راﺑﻄﻪ ﺧﻮاﺳﺘﻪ ﺷﺪه را اﺛﺒﺎت ﮐﺮد.
ﭘﺲ اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎj(2j + 1) :
i=1
.۴ﺗﺎﺑﻊ ﺑﻪ ﺷ ﻞ زﯾﺮ اﺳﺖ:
1 1 1 1 1 1 1 1
+ + + + + + + + ...
1 2 3 4 5 6 7 8
٣
ﮐﺮان ﭘﺎﯾﯿﻦ اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ:
1 1 1 1 1 1 1
1
+ + + + + + +
+ ...
2 4 4 8 8 8 8 16
ﮐﺮان ﺑﺎﻻ اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ:
1 1 1 1 1 1 1 1
+ + + + + + + + ...
1 2 2 4 4 4 4 8
و ﻣ ﺗﻮان از ﮐﺮان ﻫﺎی ﺑﺎﻻ راﺑﻄﻪ ﺧﻮاﺳﺘﻪ ﺷﺪه را اﺛﺒﺎت ﮐﺮد.
f (n) = f (n − 1) + f (n − 2) ⇒ 1.5f (n − 1) ⩽ f (n) ⩽ 2f (n − 1) .۵
f (n) = n1+sin n , g(n) = n .۶
.٧از راﺑﻄﻪ ﻫﺎی زﯾﺮ ﻣ ﺗﻮان راﺑﻄﻪ ﺧﻮاﺳﺘﻪ ﺷﺪه را اﺛﺒﺎت ﮐﺮد:
log2 n
log2 b
= logb n
k log log n < log n ⇒ logk n < n
▷
ﻣﺴﺌﻠﻪی .۵اﻟ ﻮرﯾﺘﻢ
ﯾ ﻣﺎﺗﺮﯾﺲ n × nدر ﺣﺎﻓﻈﻪ ذﺧﯿﺮه ﺷﺪه اﺳﺖ ﺑﻪ ﻃﻮری ﮐﻪ ﻋﺪد ﻫﺮ ﺧﺎﻧﻪ ﮐﻮﭼ ﺘﺮ از ﺧﺎﻧﻪ راﺳﺖ و ﭘﺎﯾﯿﻨ ﺧﻮد اﺳﺖ.
اﻟ ﻮرﯾﺘﻤ از ) O(nدر ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ اراﺋﻪ دﻫﯿﺪ ﮐﻪ ﻣﺸﺨﺺ ﮐﻨﺪ ﻋﺪد Xدر ﻣﺎﺗﺮﯾﺲ داده ﺷﺪه وﺟﻮد دارد ﯾﺎ ﻧﻪ.
ﺣﻞ .ﻓﺮض ﻣ ﮐﻨﯿﻢ ﺟﺪوﻟ ﺑﺎ اﺑﻌﺎد n × mدارﯾﻢ.
ﺑﺎ ﺷﺮوع از ﺑﺎﻻﺗﺮﯾﻦ و راﺳﺖ ﺗﺮﯾﻦ ﺧﺎﻧﻪ ،ﺑﺮ اﺳﺎس ﻣﻘﺪار اﯾﻦ ﺧﺎﻧﻪ ﻣ ﺗﻮان ﻓﻬﻤﯿﺪ ﮐﻪ Xدر ﺳﻄﺮ اول ﯾﺎ ﺳﺘﻮن آﺧﺮ
وﺟﻮد ﻧﺪارد ،ﺣﺎل ﺑﻪ ﺻﻮرت اﺳﺘﻘﺮاﯾﯽ اﻟ ﻮرﯾﺘﻢ را روی ﺟﺪول ﮐﻮﭼ ﺘﺮ )) n × (m − ١ﯾﺎ ((n − ١) × mاﺟﺮا
▷
ﻣ ﮐﻨﯿﻢ.
ﻣﺴﺌﻠﻪی .۶ﮐﺪ
ﺗﺎﺑﻊ ﻫﺎی زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ.
۴
1 def f1(n):
2
a = [0] * n
3
for i in range(n):
4
flag = True
5
while flag:
6
flag = False
7
a[i] = random.randint(0, n - 1)
8
for j in range(i):
9
if a[j] == a[i]:
10
flag = True
11
return a
1 def f2(n):
2
a = [0] * n
3
used = [0] * n
4
for i in range(n):
5
while True:
6
a[i] = random.randint(0, n - 1)
7
if not used[a[i]]:
8
break;
9
used[a[i]] = 1
10
return a
1 def f3(n):
2
a = [i for i in range(n)]
3
for i in range(n):
4
j = random.randint(0, i)
5
a[i], a[j] = a[j], a[i] #Swap element i with random element(0, i)
6
return a
.اﻟﻒ( ﺛﺎﺑﺖ ﮐﻨﯿﺪ اﯾﻦ ﺗﻮاﺑﻊ ﺟﺎﯾ ﺸﺖ ﻫﺎی ﺗﺼﺎدﻓ ﺑﺎ اﺣﺘﻤﺎل ﺑﺮاﺑﺮ ﺗﻮﻟﯿﺪ ﻣ ﮐﻨﻨﺪ
.ج( زﻣﺎن اﺟﺮای ﺗﻮاﺑﻊ در ﺑﺪﺗﺮﯾﻦ ﺣﺎﻟﺖ را ﺣﺴﺎب ﮐﻨﯿﺪ
.ﺣﻞ
. ﻫﺮ ﺟﺎﯾ ﺸﺖ ﺑﻪ اﺣﺘﻤﺎل ﺑﺮاﺑﺮ ﺗﻮﻟﯿﺪ ﻣ ﺷﻮﻧﺪf2 وf1 اﻟﻒ( ﺑﻪ راﺣﺘ ﻣ ﺗﻮان ﺛﺎﺑﺖ ﮐﺮد ﮐﻪ در ﺗﺎﺑﻊ
. را ﻫﻢ ﺑﻪ ﺻﻮرت اﺳﺘﻘﺮاﯾﯽ ﻣ ﺗﻮان ﺛﺎﺑﺖ ﮐﺮدf3 ﺗﺎﺑﻊ
. ( ج،ب
ﺗﺎﺑﻊAverage Case
Worst Case
راﻫﻨﻤﺎﯾﯽ
f1
Θ(n٢ log n)
ﺑﯽ ﻧﻬﺎﯾﺖ
g(i) =
f2
Θ(n log n)
ﺑﯽ ﻧﻬﺎﯾﺖ
g(i) =
f3
Θ(n)
Θ(n)
n−i
g(i + ١) +
n
n−i
g(i + ١) +
n
i
g(i) + i
n
i
g(i) + ١
n
ﺑﺮاﺑﺮﻧﺪBest Case وWorst Case
▷
۵
© Copyright 2026 Paperzz