پاسخ سوال اول
(در این راه حل ،هزینه allocateکردن آرایه در نظر گرفته نشده است .با در نظر گرفتن این هزینه ،باز هم کلیت راه حل به
همین صورت باقی می ماند).
فرض کنید
هزینه عمل
ام باشد .به طور کلی دو نوع عمل داریم:
-1درج و حذف عادی که در آن مقدار
برابر با یک است.
-2درج و حذف غیر عادی که عالوه بر درج و حذف شامل انتقال اعضای آرایه به آرایه جدید هم می باشند .در این حالت
برابر با 1به عالوه تعداد اعضای انتقال یافته می باشد.
هزینه
الف) روش حسابداری
در روش حسابداری ،به این صورت عمل می کنیم:
-1به ازای هر درج و حذف هر عنصر 4 ،ریال هزینه می کنیم که 3ریال آن در حساب ذخیره می شود و 1ریال آن صرف
انجام عمل می شود.
-2انتقال بین آرایه ها را با استفاده از ذخیره موجود در حساب انجام می دهیم.
لم ) 1حساب هیچ گاه منفی نمی شود .به عبارتی همیشه موجودی کافی در حساب برای انجام عملیات انتقال بین آرایه ها وجود
دارد.
اثبات) اولین زمانی که اعضا به یک آرایه با اندازه
منتقل شده اند را در نظر بگیرید .در این زمان ،اعضا یا از یک آرایه با اندازه
و یا از یک آرایه با اندازه به این آرایه منتقل شده اند .بنابراین در حالت اول
آرایه و در حالت دوم
از آرایه پر می
باشد.
حال زمانی را در نظر بگیرید که می خواهیم عناصر این آرایه را انتقال دهیم .در این صورت یکی از شرایط زیر رخ داده است:
-1تعداد اعضای آرایه به رسیده است :از آنجا که آرایه در ابتدا حداقل
میزان
عنصر داشته است ،در طول این مدت حداقل به
عملیات حذف صورت گرفته است .توجه نمایید که به ازای هر کدام از آنها 3 ،ریال در حساب قرار گرفته است و
این یعنی حداقل میزان
-2تعداد اعضای آرایه به
ریال در حساب قرار دارد که این مقدار برای انتقال
رسیده است :از آنجا که در ابتدا حداکثر
عنصر کافی است.
عضو در آرایه داشتیم ،در طول این مدت حداقل
درج داشته ایم که به ازای هر کدام 3ریال در حساب ذخیره شده است و این یعنی حساب در حال حاضر دارای
حداقل
ریال می باشدکه برای انتقال این
بنابراین حساب هیچ گاه خالی نمی شود.
عنصر کافی است.
ب) روش تابع پتانسیل
تابع پتانسیل زیر را در نظر بگیرید:
{
که در آن
برابر با تعداد عناصر موجود در آرایه می باشد.
برابر با طول آرایه فعلی و
است و همیشه حداقل
ابتدا توجه نمایید که چون همیشه مقدار
عنصر در آرایه قرار دارد ،تابع پتانسیل هیچ گاه
منفی نمی شود.
حال قرار دهید:
̂
در این قسمت ،از توضیح درج و حذف عادی صرف نظر می کنیم و انجام آن به عهده خواننده است( .توجه کنید که در زمان
،دو عبارت
با یکدیگر برابر می شوند) .به طور کلی می توان نشان داد در این حالت،
و
̂
برای حذف غیر عادی داریم:
در این حذف ،ابتدا اندازه آرایه ) ( برابر با
بوده است ،اما چون عناصر آرایه کمتر از شده است ،عناصر به یک آرایه به اندازه
منتقل شده اند .لذا برای آرایه دوم،
است .هزینه این عملیات هم طبق آنجا در ابتدا گفته شد برابر با بوده است ،به عالوه
یک حذف که در مجموع میشود
است.
همچنین بعد از حذف ،تعداد اعضای آرایه برابر با
̂
)
)
(
(
̂
)
(
)
(
)
(
)
(
̂
̂
̂
همچنین برای درج غیر عادی نیز داریم:
در این درج ،ابتدا اندازه آرایه ) ( برابر با
بوده است .اما چون عناصر آرایه بیشتر از
منتقل شده اند .هزینه این عملیات برابر با
شده اند ،عناصر به یک آرایه با اندازه
بوده است .تعداد اعضا بعد از درج برابر با
می شود .بنابراین
داریم:
̂
)
)
(
(
)
(
)
̂
(
̂
̂
لذا در همه حالت های درج و حذف عادی و غیر عادی،
می باشد .بنابراین برای
̂
و چون داریم:
̂
و بنابراین ،هزینه سرشکن عملیات برابر با ) ( است.
عمل حذف و درج داریم:
ﭘﺎﺳﺦ ﺳﻮال ٢
اﻟﻒ(
ﺑﺎ ﻓﺮض اﯾﻦﮐﻪ آراﯾﻪی اول را Aو آراﯾﻪ دوم را Bﺑﻨﺎﻣﯿﻢ و ﻫﻤﭽﻨﯿﻦ ﻋﻀﺮ iام آراﯾﻪی Aرا ﺑﺎ aiﻧﺸﺎن دﻫﯿﻢ و ﻫﻤﯿﻦﻃﻮر ﻋﻀﻮ
iام آراﯾﻪی Bرا ﺑﺎ biﻧﺸﺎن دﻫﯿﻢ ،اﻟ ﻮرﯾﺘﻢ ﺑﻪ ﺷﺮح زﯾﺮ اﺳﺖ:
.١اﮔﺮ k = 1ﺑﻮد ﭘﺎﺳﺦ ﻣﺴﺌﻠﻪ ﺑﺮاﺑﺮ ﺑﺎ } min{a1 , b1اﺳﺖ .در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﺑﻪ ﻣﺮﺣﻠﻪ ٢ﺑﺮو
A′ .٢و B ′را ﺑﻪ ﺻﻮرت زﯾﺮ ﺑﺴﺎز:
)آ( اﮔﺮ ⌋ |A| ≥ ⌊ k2و ⌋ :|B| ≥ ⌊ k2
ﻋﻀﻮ ⌋ a⌊k/2و ⌋ b⌊k/2را ﺑﺮرﺳ ﮐﻦ و ﮐﻤﯿﻨﻪ آندو را در ﻧﻈﺮ ﺑ ﯿﺮ .اﮔﺮ ﮐﻤﯿﻨﻪ آنﻫﺎ ⌋ a⌊k/2ﺑﺎﺷﺪ ⌊ k2 ⌋ ،ﻋﻀﻮ اول
آراﯾﻪی Aرا ﺣﺬف ﮐﻦ و اﻋﻀﺎی ﺑﺎﻗﯿﻤﺎﻧﺪه را در آراﯾﻪی A′ﻗﺮار ﺑﺪه و ﻫﻤﭽﻨﯿﻦ .B ′ = Bدر ﺻﻮرﺗ ﮐﻪ ﮐﻤﯿﻨﻪ آن
دو ⌋ b⌊k/2ﺑﻮد ﻧﯿﺰ ﺑﻪ ﻃﻮر ﻣﺸﺎﺑﻪ A′ = Aو B ′ﻧﯿﺰ از ﺣﺬف ﮐﺮدن ⌋ ⌊ k2ﻋﻀﻮ اول Bﺑﻪ دﺳﺖ ﻣ آﯾﺪ.
)ب( اﮔﺮ ﺗﻌﺪاد اﻋﻀﺎی ﯾ از دو آراﯾﻪ ﮐﻤﺘﺮ از ⌋ ⌊ k2ﺑﺎﺷﺪ:
⌋ ⌊ k2ﻋﻀﻮ اول آراﯾﻪی ﺑﺰرﮔﺘﺮ را ﺣﺬف ﮐﻦ و ﻣﺎﻧﻨﺪ ﻗﺴﻤﺖ ﻗﺒﻞ A′و B ′را ﺑﺴﺎز.
)ج( اﮔﺮ اﻧﺪازهی ﻫﺮ دو آراﯾﻪ ﮐﻤﺘﺮ از kﺑﺎﺷﺪ:
اﯾﻦ ﺣﺎﻟﺖ اﻣ ﺎنﭘﺬﯾﺮ ﻧﯿﺴﺖ .زﯾﺮا در اﯾﻦ ﺻﻮرت ﺗﻌﺪاد ﮐﻞ اﻋﻀﺎی ﻣﻮﺟﻮد ﮐﻤﺘﺮ از kاﺳﺖ و ﺑﻨﺎﺑﺮاﯾﻦ ﻋﻀﻮ kام
در ﮐﻞ وﺟﻮد ﻧﺪارد.
ﺳﭙﺲ ﺑﻪ ﻣﺮﺣﻠﻪ ٣ﺑﺮو.
.٣ﺑﺎ ﻣﻘﺪار ⌋ k′ = k − ⌊ k2و آراﯾﻪﻫﺎی ﻣﺮﺗﺐ A′و B ′ﺑﻪ ﻣﺮﺣﻠﻪ ١ﺑﺮو )ﺑﺎ اﺳﺘﻔﺎده از ﻫﻤﯿﻦ اﻟ ﻮرﯾﺘﻢ ﺑﻪ ﺻﻮرت ﺑﺎزﮔﺸﺘ
ﻋﻀﻮ k′ام اﺟﺘﻤﺎع دو آراﯾﻪی ﻣﺮﺗﺐ A′و B ′را ﭘﯿﺪا ﮐﻦ(.
*ﺗﻮﺿﯿﺢ درﺳﺘ اﻟ ﻮرﯾﺘﻢ :اﻟ ﻮرﯾﺘﻢ ﺑﻪ اﯾﻦ ﺻﻮرت ﻋﻤﻞ ﻣ ﮐﻨﺪ ﮐﻪ ﺗﻌﺪادی از اﻋﻀﺎﯾﯽ ﮐﻪ ﻣﻄﻤﺌﻦ ﻫﺴﺘﯿﻢ از ﻋﻀﻮ kام
ﻣﺠﻤﻮﻋﻪی دو آراﯾﻪ ﮐﻮﭼ ﺘﺮ ﻫﺴﺘﻨﺪ را ﺑﺎ ﺣﻔﻆ ﻣﺮﺗﺐ ﺑﻮدن آراﯾﻪﻫﺎ ﺣﺬف ﻣ ﮐﻨﯿﻢ و ﺳﭙﺲ ﺑﻪ دﻧﺒﺎل k′اﻣﯿﻦ ﻋﻀﻮ اول آراﯾﻪﻫﺎی
ﺟﺪﯾﺪ )ﮐﻪ ﻫﻤﺎن kاﻣﯿﻦ ﻋﻀﻮ آراﯾﻪﻫﺎی ﻗﺒﻠ اﺳﺖ( ﻣ ﮔﺮدﯾﻢ.
اﺛﺒﺎت اﯾﻦﮐﻪ اﻋﻀﺎی ﺣﺬف ﺷﺪه ﻫﻤ از ﻋﻀﻮ kام ﻣﺠﻤﻮﻋﻪی دو آراﯾﻪ ﮐﻮﭼ ﺘﺮ ﻫﺴﺘﻨﺪ ﻧﯿﺰ ﺑﻪ اﯾﻦ ﺻﻮرت اﺳﺖ ﮐﻪ:
• اﮔﺮ ﺣﺎﻟﺖ اول رخ دﻫﺪ )ﮐﻪ اﻧﺪازهی ﻫﺮ دو آراﯾﻪ از( ⌋ ⌊ k2ﺑﺰرﮔﺘﺮ اﺳﺖ ،اﮔﺮ ﻓﺮض ﮐﻨﯿﻢ ⌋ a⌊k/2⌋ ≤ b⌊k/2در اﯾﻦ ﺻﻮرت
ﺣﺪاﮐﺜﺮ ⌋ ⌊ k2ﻋﻀﻮ اول آراﯾﻪی Aو ﻫﻤﭽﻨﯿﻦ ⌊ k2 ⌋ − 1ﻋﻀﻮ اول آراﯾﻪی Bﮐﻮﭼ ﺘﺮ از ⌋ a⌊k/2ﻫﺴﺘﻨﺪ .ﺑﻨﺎﺑﺮاﯾﻦ ⌋a⌊k/2
ﺣﺪاﮐﺜﺮ ﻣ ﺗﻮاﻧﺪ ﻋﻀﻮ k − 1ام ﺑﺎﺷﺪ و اﻋﻀﺎی ﻗﺒﻞ از آن در آراﯾﻪی Aﻧﯿﺰ از آن ﮐﻮﭼ ﺘﺮ ﻫﺴﺘﻨﺪ.
• در ﺣﺎﻟﺖ دﯾ ﺮ ﮐﻪ ﺗﻌﺪاد اﻋﻀﺎی ﯾ از آنﻫﺎ ﮐﻮﭼ ﺘﺮ از ⌋ ⌊ k2ﺑﺎﺷﺪ ﻧﯿﺰ ﻫﺮ ﯾ از ⌋ ⌊ k2ﻋﻀﻮ اول آراﯾﻪی ﺑﺰرﮔﺘﺮ ﺣﺪاﮐﺜﺮ
ﻣ ﺗﻮاﻧﻨﺪ از ﮐﻞ اﻋﻀﺎی ﻗﺒﻠ ﻫﻤﺎن آراﯾﻪ و ﺗﻤﺎم اﻋﻀﺎی آراﯾﻪی دﯾ ﺮ ﺑﺰرﮔﺘﺮ ﺑﺎﺷﺪ .ﺑﻨﺎﺑﺮاﯾﻦ ﺣﺪاﮐﺜﺮ ﻣ ﺗﻮاﻧﺪ ﻋﻀﻮ k − 1
ام ﺑﺎﺷﺪ.
ب(
ﺑﺎ اﺳﺘﻔﺎده از ﻗﻀﯿﻪی اﺻﻠ ﺛﺎﺑﺖ ﻣ ﮐﻨﯿﻢ اﮔﺮ زﻣﺎن اﺟﺮای ﻣﺴﺌﻠﻪ ﺑﻪ ازای ورودی kرا ) T (kﺑﻨﺎﻣﯿﻢ:T (k) ∈ O(log k) ،
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺻﻮرت اﻟ ﻮرﯾﺘﻢ،
k
T (k) = T (k − ⌊ ⌋) + C
2
T (1) = 1
ﮐﻪ Cﻣﻘﺪاری ﺛﺎﺑﺖ اﺳﺖ )زﯾﺮا در ﻫﺮ ﻣﺮﺣﻠﻪ ﺣﺪاﮐﺜﺮ اﻧﺪازهی آراﯾﻪﻫﺎ و ﻫﻤﭽﻨﯿﻦ ﯾ ﻋﻀﻮ از آراﯾﻪﻫﺎ ﻣﻘﺎﯾﺴﻪ ﻣ ﺷﻮد و ﺳﺎﺧﺘﯿﻦ
A′و B ′را ﻧﯿﺰ ﻣ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از ﯾ اﺷﺎرهﮔﺮ و ﺟﺎﺑﻪﺟﺎ ﮐﺮدن آن ﭘﯿﺎدهﺳﺎزی ﮐﺮد(.
ﺣﺎل اﮔﺮ ﺑﺮای راﺣﺘ ﻓﺮض ﮐﻨﯿﻢ ﮐﻪ kﺗﻮاﻧ از ٢ﺑﺎﺷﺪ دارﯾﻢ:
k
T (k) = T ( ) + c
2
١
ﺑﻨﺎﺑﺮاﯾﻦ
}
⇒ c = logb a = 0
و ﻫﻤﭽﻨﯿﻦ
a=1
b=2
)f (k) = C ⇒ f (k) ∈ Θ(k c log k
ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺣﺎﻟﺖ دوم ﻗﻀﯿﻪی اﺻﻠ دارﯾﻢ
)T (k) ∈ Θ(k c log k) ⇒ T (k) ∈ O(k c log k
و ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﯾﻦ ﮐﻪ c = 0دارﯾﻢ
)T (k) ∈ O(log k
ﮐﻪ در ﻧﻬﺎﯾﺖ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﯾﻦ ﮐﻪ k < nﻣ ﺗﻮان ﮔﻔﺖ ﻣﺴﺌﻠﻪ از ) O(log nاﺳﺖ.
٢
© Copyright 2026 Paperzz