زمان کنونی: ۳۱ فروردین ۱۴۰۳, ۰۴:۰۵ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

الگوریتم مناسب برای یافتن دو عنصر از ارایه که مجموع مقادیرشان برابر x است

ارسال:
  

fulgent پرسیده:

الگوریتم مناسب برای یافتن دو عنصر از ارایه که مجموع مقادیرشان برابر x است

سلام، سوال از این قرار است:
فرض کنید ارایه نامرتب A با n عنصر ، و عدد معینی مانند x داده شده است.
حال می خواهیم در صورت وجود دو عنصر از ارایه که مجموع مقادیرشان برابر x است را پیدا کنیم.
در بدترین حالت، بهترین الگوریتم چیست و از چه پیچیدگی زمانی برخوردار است؟
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

masoud67 پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

اول در زمان [tex]nlogn[/tex] آرایه را مرتب میکنیم
حالا در n مرحله اعمال زیر را انجام میدیم
مرحله ۱ :
x - A[1] = y
و مقدار y را در آرایه مرتب با جستجوی دودویی جستجو میکنیم و اگر بود که مسئله حل شده و اگر نبود مرحله بعدی

مرحله ۲ :
x - A[2] = y
و مقدار y را در آرایه مرتب با جستجوی دودویی جستجو میکنیم

... و تا اینکه برای تمام n عنصر آرایه این رویه را انجام میدیم که هر مرحله هزینه جستجوی logn داره و n مرحله داشتیم که میشه nlogn

و در کل زمان میشه ۲nlogn
نقل قول این ارسال در یک پاسخ

ارسال:
  

fulgent پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۱۰:۲۲ ب.ظ)masoud67 نوشته شده توسط:  اول در زمان [tex]nlogn[/tex] آرایه را مرتب میکنیم
حالا در n مرحله اعمال زیر را انجام میدیم
مرحله ۱ :
x - A[1] = y
و مقدار y را در آرایه مرتب با جستجوی دودویی جستجو میکنیم و اگر بود که مسئله حل شده و اگر نبود مرحله بعدی

مرحله ۲ :
x - A[2] = y
و مقدار y را در آرایه مرتب با جستجوی دودویی جستجو میکنیم

... و تا اینکه برای تمام n عنصر آرایه این رویه را انجام میدیم که هر مرحله هزینه جستجوی logn داره و n مرحله داشتیم که میشه nlogn

و در کل زمان میشه ۲nlogn

از اینکه وقت گذاشتین متشکرم Smile
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

e.shrm پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۰۱:۲۳ ب.ظ)fulgent نوشته شده توسط:  سلام، سوال از این قرار است:
فرض کنید ارایه نامرتب A با n عنصر ، و عدد معینی مانند x داده شده است.
حال می خواهیم در صورت وجود دو عنصر از ارایه که مجموع مقادیرشان برابر x است را پیدا کنیم.
در بدترین حالت، بهترین الگوریتم چیست و از چه پیچیدگی زمانی برخوردار است؟
از مرتبه nlogn میشه.
آرایه A را مرتب میکنیم
یه مجموعه 'A تشکیل میدیم ، که اعضاش x-y باشند و y عضو A
عناصر 'A رو مرتب میکنیم
اگر عنصر تکراری داشت ، تکراری ها رو حذف میکنیم
A و 'A رو با هم ادغام میکنیم
شرط لازم و کافی برای ایکه در مجموعه A فقط دو عنصر وجود داشته باشد که مجموعشان دقیقا برابر X شود این است که مقادیر مشابه یکدیگر در مجموعه ادغام شده خروجی در موقعیت های پست سر هم ظاهر شوند.
نقل قول این ارسال در یک پاسخ

ارسال:
  

fulgent پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۰۱:۳۷ ب.ظ)e.shrm نوشته شده توسط:  
(19 بهمن ۱۳۹۲ ۰۱:۲۳ ب.ظ)fulgent نوشته شده توسط:  سلام، سوال از این قرار است:
فرض کنید ارایه نامرتب A با n عنصر ، و عدد معینی مانند x داده شده است.
حال می خواهیم در صورت وجود دو عنصر از ارایه که مجموع مقادیرشان برابر x است را پیدا کنیم.
در بدترین حالت، بهترین الگوریتم چیست و از چه پیچیدگی زمانی برخوردار است؟
از مرتبه nlogn میشه.
آرایه A را مرتب میکنیم
یه مجموعه 'A تشکیل میدیم ، که اعضاش x-y باشند و y عضو A
عناصر 'A رو مرتب میکنیم
اگر عنصر تکراری داشت ، تکراری ها رو حذف میکنیم
A و 'A رو با هم ادغام میکنیم
شرط لازم و کافی برای ایکه در مجموعه A فقط دو عنصر وجود داشته باشد که مجموعشان دقیقا برابر X شود این است که مقادیر مشابه یکدیگر در مجموعه ادغام شده خروجی در موقعیت های پست سر هم ظاهر شوند.

خب این الگوریتم پیچیدگی اش چیه؟ میشه همین طور پیچیدگی هر مرحله رو جدا بگی؟
ادغام A و 'Aمگه میشه؟! یکی مرتب و دیگری نامرتب؟
بالاخره کی اون دوتا عنصر پیدا شد؟ در کدام مرحله؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

e.shrm پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۰۱:۳۷ ب.ظ)e.shrm نوشته شده توسط:  از مرتبه nlogn میشه.
آرایه A را مرتب میکنیم ----> nlogn
یه مجموعه 'A تشکیل میدیم ، که اعضاnش x-y باشند و y عضو A هستند. ----> n
عناصر 'A رو مرتب میکنیم -----> nlogn
اگر عنصر تکراری داشت ، تکراری ها رو حذف میکنیم ---->n
A و 'A رو با هم ادغام میکنیم-------> n
شرط لازم و کافی برای ایکه در مجموعه A فقط دو عنصر وجود داشته باشد که مجموعشان دقیقا برابر X شود این است که مقادیر مشابه یکدیگر در مجموعه ادغام شده خروجی در موقعیت های پست سر هم ظاهر شوند.
مرتبه زمانی ها رو اضافه کردم بالا. گفتم که هر دو رو مرتب میکنیم.
یه مثال برا خودت بزن ، منم اینو یه جا خوندم که برات نوشتم.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

fulgent پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۰۱:۵۵ ب.ظ)e.shrm نوشته شده توسط:  
(19 بهمن ۱۳۹۲ ۰۱:۳۷ ب.ظ)e.shrm نوشته شده توسط:  از مرتبه nlogn میشه.
آرایه A را مرتب میکنیم ----> nlogn
یه مجموعه 'A تشکیل میدیم ، که اعضاnش x-y باشند و y عضو A هستند. ----> n
عناصر 'A رو مرتب میکنیم -----> nlogn
اگر عنصر تکراری داشت ، تکراری ها رو حذف میکنیم ---->n
A و 'A رو با هم ادغام میکنیم-------> n
شرط لازم و کافی برای ایکه در مجموعه A فقط دو عنصر وجود داشته باشد که مجموعشان دقیقا برابر X شود این است که مقادیر مشابه یکدیگر در مجموعه ادغام شده خروجی در موقعیت های پست سر هم ظاهر شوند.
مرتبه زمانی ها رو اضافه کردم بالا. گفتم که هر دو رو مرتب میکنیم.
یه مثال برا خودت بزن ، منم اینو یه جا خوندم که برات نوشتم.
میشه روی این مثال حلش کنی؟ من به جواب نمیرسم!
این ارایه منه:
[۱,۴,۷,۵,۱۳,۲,۱۹,۰,۱۵,۸]
و عدد x= 10 هست.
حال شما برای پیدا کردن دو عنصر در ارایه که جمعشون بشه ۱۰ (یعنی ۸ و۲ ) روند الگوریتم رو میگید؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

mahsalove پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

با الگوریتم حاصل جمع زیر مجموعه ها می شه اینکارو کرد اونوقت (۲ به توان n) می شه ولی اونوقت همه زیر مجموعه ها پیدا می شن ولی این چون گفته یکیشو نمی دانم شاید الگوریتم دیگه ای که زمانش کمتر از این بشه وجود داشته باشه!مثلا اول آرایه رو مرتب کنیم بعد با جستجوی دودویی ببینیم پیدا می شه یا نه؟!Huh
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

hosshah پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

مرحله اول آرایمون رو با مرتبه nlogn مرتب می کنیم
از اینجا دو تا راه داریم که اولی راه عادی و دومی یه مقدار بهینه تر هست

راه اول: مقدار i رو برابر اندیس اولین عنصر و j رو برابر اندیس آخرین عنصر قرار بدیم
اگر حاصل جمع از x بزرگتر بود مقدار j یک واحد کم میشه و اگر حاصل جمع از x کوچکتر بود مقدار i یک واحد اضاف میشه
این عمل اونقدر ادامه پیدا میکنه که یا اون دو عدد پیدا شه و یا i بزرگتر از j بشه که به معنی عدم وجود این دو عدد هست
هزینه هم برابر n میشه
هزینه میشه: nlogn+n

راه دوم: اول به دنبال عدد x بگردیم به صورت دودویی اگر x داخل آرایه بود اندیسش منهای ۱ رو داخل j میریزیم و اگر داخل آرایه نبود این الگوریتم کوچکترین عدده بزرگتر از x رو به ما میده و در اینصورت اندیس این عنصر منهای ۱ داخل j میریزیم و بقیه اعمال میشه همون مراحل بالا
هزینه میشه nlogn+logn+n که البته اینجا دقیقا n نیست و کمتر از n میشه
نقل قول این ارسال در یک پاسخ

ارسال: #۱۰
  

fulgent پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۰۳:۱۶ ب.ظ)hosshah نوشته شده توسط:  مرحله اول آرایمون رو با مرتبه nlogn مرتب می کنیم
از اینجا دو تا راه داریم که اولی راه عادی و دومی یه مقدار بهینه تر هست

راه اول: مقدار i رو برابر اندیس اولین عنصر و j رو برابر اندیس آخرین عنصر قرار بدیم
اگر حاصل جمع از x بزرگتر بود مقدار j یک واحد کم میشه و اگر حاصل جمع از x کوچکتر بود مقدار i یک واحد اضاف میشه
این عمل اونقدر ادامه پیدا میکنه که یا اون دو عدد پیدا شه و یا i بزرگتر از j بشه که به معنی عدم وجود این دو عدد هست
هزینه هم برابر n میشه
هزینه میشه: nlogn+n

راه دوم: اول به دنبال عدد x بگردیم به صورت دودویی اگر x داخل آرایه بود اندیسش منهای ۱ رو داخل j میریزیم و اگر داخل آرایه نبود این الگوریتم کوچکترین عدده بزرگتر از x رو به ما میده و در اینصورت اندیس این عنصر منهای ۱ داخل j میریزیم و بقیه اعمال میشه همون مراحل بالا
هزینه میشه nlogn+logn+n که البته اینجا دقیقا n نیست و کمتر از n میشه
بله جواب داد....متشکرمSmile
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال: #۱۱
  

hosshah پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

(۱۹ بهمن ۱۳۹۲ ۰۳:۳۹ ب.ظ)fulgent نوشته شده توسط:  بله جواب داد....متشکرمSmile

Rolleyes
خدا رو شکر
خواهش می کنم
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال: #۱۲
  

arshad90 پاسخ داده:

RE: یافتن الگوریتم بهینه در مساله داده شده

این سوال دو جواب دارد. یکی nlogn که دوستان اشاره کردند.
یکی دیگه هم با استفاده از جدول درهم ساز که می شه او ان. البته قبل از اینکه بدونم چنین راه حلی هست منم مثل بقیه فکر می کردم حداقلش nlogn هست که اشتباه می کردم.
پاسخ درهم ساز به این مساله در یکی از آزمون های مدرسان اومده بود.
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  کمک فوری برای مصاحبه استخدامی رشته هنراموزی کامپیوتر hamide.m ۳ ۳,۹۷۵ ۲۷ فروردین ۱۴۰۱ ۰۷:۳۰ ب.ظ
آخرین ارسال: SetareSokhanrani
  معرفی منبع مناسب برای ارشد گسسته saharitst ۲۱ ۲۴,۶۴۷ ۲۲ دى ۱۴۰۰ ۰۶:۱۱ ب.ظ
آخرین ارسال: YasiAli
  کدام زبان برای هوش مصنوعی بهتر است؟ فرق بین زبان های هوش مصنوعی چیست؟ azam2075 ۳ ۵,۴۹۰ ۱۴ مهر ۱۴۰۰ ۰۷:۲۱ ب.ظ
آخرین ارسال: علیصا
  منبع مناسب تستی و کنکوری درس شناسای الگو atousayazd ۷ ۷,۱۱۸ ۲۰ بهمن ۱۳۹۹ ۰۳:۰۶ ب.ظ
آخرین ارسال: سعید_سخت افزار
  تکمیل قطعه کد مجموع آرایه Xzrix ۰ ۱,۳۰۰ ۰۲ دى ۱۳۹۹ ۰۷:۱۹ ب.ظ
آخرین ارسال: Xzrix
  فرصت استفاده از استعداد برای ورودی دکتری wskf ۳ ۲,۹۸۰ ۲۴ فروردین ۱۳۹۹ ۰۵:۵۷ ب.ظ
آخرین ارسال: wskf
  انجام پایان نامه برای داده کاوی استقرایی روی FIM ویافتن ARM با دوتا یا بیشتر CUDA GPU zaliabbass ۲ ۴,۰۲۶ ۰۶ اسفند ۱۳۹۸ ۰۸:۳۳ ب.ظ
آخرین ارسال: bankabzar
  مرتبه زمانی یافتن قطر Sepideh96 ۲ ۳,۴۳۹ ۰۸ آذر ۱۳۹۸ ۰۴:۳۴ ب.ظ
آخرین ارسال: erfan30
  استالینگز یا سیلبر؟برای گرایش نرم افزار؟ ریحان ۱۲ ۸,۱۴۵ ۰۷ مهر ۱۳۹۸ ۱۲:۱۸ ق.ظ
آخرین ارسال: marvelous
Smile چه دروس و استادی برای کنکور ارشد خوبه؟ NersiA ۱۴ ۱۰,۷۵۳ ۰۷ شهریور ۱۳۹۸ ۱۰:۵۴ ق.ظ
آخرین ارسال: NersiA

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close