بازارهای سهام جایی است که خریداران و فروشندگان به خرید و فروش سهام متصل می شوند که سهام مالکیت در یک شرکت دولتی است. بسیاری از مردم با تجارت میلیونر شده اند.
در عصر امروز ، بسیاری از شرکت ها راه حل هایی را برای آزمایش استراتژی های ما در مورد داده های قبلی ارائه می دهند. ما این تست پشت را می نامیم. اگر این استراتژی ها سود خوبی را در حین تست پشتی برگردانیم ، می توانیم آن را در بازارهای زنده مستقر کنیم.
یکی از جنبه های آزمایش پشتی ، دانستن حداکثر سود بالقوه است. ما حداکثر سود بالقوه را از قیمت سهام محاسبه می کنیم و عملکرد استراتژی را با حداکثر سود ممکن مقایسه می کنیم. هنگامی که روش تست پشت با حداکثر سود است ، ما آن را در تجزیه و تحلیل زمان واقعی مستقر می کنیم.
بیان مسأله
با توجه به لیستی از قیمت ها در یک بازه زمانی ، ما حداکثر سود ممکن را از طریق انجام یک عملیات خرید یا یک عملیات فروش در یک زمان معین محاسبه می کنیم. در یک زمان بندی مشخص ، فقط از یکی از دو عمل می توان استفاده کرد. تعداد کل عملیات خرید و فروش که می تواند انجام شود نامحدود است.
رویکرد حریص
ما از روش حریص برای به دست آوردن حداکثر سود ممکن استفاده خواهیم کرد. روش حریص نوعی استراتژی حل مسئله است که در آن بهترین راه حل ممکن در نمونه فعلی انتخاب می شود.
بر خلاف سایر الگوریتم ها ، که راه حل بهینه را در یک بازه زمانی گسترده تر در نظر می گیرند ، الگوریتم های حریص در نمونه زمانی تصمیم گیری می کنند.
این منجر به محاسبات کارآمد و نتایج سریعتر می شود. با این حال ، یک نکته منفی برای این رویکرد وجود دارد. رویکرد حریص ممکن است همیشه بهینه ترین راه حل را ارائه ندهد. این اتفاق می افتد زیرا فقط نمونه فعلی را برای تصمیم گیری در نظر می گیرد.
در این مشکل ، ما ماهیت الگوریتم حریص را درک خواهیم کرد و حداکثر سود ممکن را تعیین خواهیم کرد. شروع کنیم.
مقدمه ای برای راه حل حریص
در این مشکل ، از روش حریص برای به حداکثر رساندن سود با توجه به لیستی از مقادیر استفاده می شود. الگوریتم حریص با رفتن با مبلغی که در هر زمان بندی به نظر می رسد ، سود را بدست می آورد. دامنه این پروژه محدود به داده های قبلی است و نمی تواند نوسانات و تغییرات در بورس سهام را مدل کند. ما فرض می کنیم که داده های قبل از تاریخ در دسترس است.
ورودی با توجه
ورودی به برنامه لیستی از ارزشهای تاریخی (اعداد صحیح) است. در یک آرایه ذخیره می شود. لیست پایتون یک اجرای کارآمد از آرایه پویا است. مزیت آرایه پویا این است که با درج عناصر اضافی به طور خودکار رشد می کند و هیچ فضایی برای عنصر جدید در دسترس نیست.
هزینه استهلاک درج یک عنصر به یک آرایه پویا O (1) است ، در حالی که بدترین حالت هنوز θ (n) است.
خروجی مورد نظر
با توجه به لیست قیمت ها ، این برنامه حداکثر سود ممکن را خروجی می کند. خروجی برنامه از نوع int است. از آنجا که ما با سود سر و کار داریم ، کارآمد است تا به نزدیکترین ₹ برسیم.
رویکرد حریص: شبه کد
کد شبه الگوریتم را برای محاسبه حداکثر سود توضیح می دهد.
با توجه به لیستی از قیمت ها ، ما شروع می کنیم:
رویکرد حریص: کد
ما الگوریتم حریص را در این بخش کدگذاری خواهیم کرد. با استفاده از کد شبه ارائه شده در بالا ، ما آن را به یک کد پایتون تبدیل می کنیم. شما ممکن است از هر زبان مورد نظر خود استفاده کنید.
خروجی
خروجی کد در زیر آورده شده است:
تجزیه و تحلیل خروجی
بیایید خروجی به دست آمده را تجزیه و تحلیل کنیم.
مورد 1:
خروجی: حداکثر سود: 4: خرید در 1: در 5 بفروشید
مورد 2:
خروجی: حداکثر سود: -2: خرید در 9: در 7 فروش کنید
مورد 3:
ورودی: تعداد زیادی ، لیست گسترده تر:
لیست ورودی: [100،180،260،310،40،535،695]
خروجی: حداکثر سود: 655: خرید در 40: در 695 بفروشید
راه حل بهینه:
- در 100 خرید ، در 310 بفروشید
- در 40 سال بخرید ، در 695 بفروشید
سود کل = 865
مزایای رویکرد حریص
- بدترین حالت پیچیدگی زمان عملکرد حداکثر_پروفیت () θ (n) است.
- پیچیدگی فضایی عملکرد θ (1) است.
- این برنامه اجرا را در یک پاس از کل لیست انجام می دهد.
- از آنجا که از یک رویکرد حریص استفاده می کند ، سود در هر مرحله اضافه می شود و از این طریق سود را تضمین می کند.
محدودیت های رویکرد حریص
- این برنامه به دلیل ماهیت حریص خود می تواند تنها با یک خرید و یک عملیات فروش کار کند. در تمبرهای مختلف فروش و خرید نمی کند.
- راه حل های الگوریتم حریص همیشه بهینه نیستند. بنابراین ، حداکثر سود محاسبه شده ممکن است حداکثر محلی باشد. این برنامه می تواند در رسیدن به حداکثر جهانی ناکام باشد. به عنوان مثال ، راه حل بهینه در سناری و-3 865 است. خروجی الگوریتم حریص 655 است.
همین مشکل را می توان با استفاده از سایر پارادایم های برنامه نویسی مانند Divide و Conquer ، برنامه نویسی پویا و غیره حل کرد. مقاله بعدی در این سری حل همان مشکل با استفاده از Divide و Conquer خواهد بود.
الگوریتم های تقسیم و تسخیر مسئله را به بسیاری از مشکلات فرعی تقسیم و تسخیر کنید تا اینکه مشکلات فرعی به طور مستقیم حل شوند. سپس راه حل های به دست آمده در کنار هم قرار می گیرند تا جواب نهایی را بدست آورند.
نتیجه
در این مقاله ، ما رویکرد حریص را برای به دست آوردن حداکثر سود با توجه به لیستی از شاخص ها در نظر گرفتیم. مشاهده کنید که از گزینه انجام چندین خرید و فروش چندین کار استفاده نمی شود. امیدوارم شهود پشت رویکرد حریص به خوبی ارائه شود. آیا به من اطلاع دهید که در مورد رویکردی که برای حل مشکل انجام شده است چه فکر می کنید. از بازخورد بسیار استقبال می شود.
آموزش تحلیل گری...
ما را در سایت آموزش تحلیل گری دنبال می کنید
برچسب :
نویسنده : ملیکا زارعی
بازدید : 36
تاريخ : پنجشنبه
14 ارديبهشت
1402 ساعت: 18:23