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

روش یادگیری پیچیدگی زمانی ؟

ارسال:
  

elhameli پرسیده:

Sad روش یادگیری پیچیدگی زمانی ؟

سلام به همه دوستان
لطفا منو راهنمایی کنید، من کتاب تست مقسمی و طراحی الگوریتم پوران و یکم گریمالدی در مورد پیچیدگی زمانی خوندم، کلا قاطی کردم.من نمی دونم از کجا باید بفهمم تعداد دفعات اجرای یک خط کد در یک الگوریتم رو از چه راه حلی باید بدست بیارم!!!Confused
یه جا از طریق عدد گذاری در سیگما رفته، لگاریتم، عدد گذاری در الگوریتم و یه جا هم از طریق ترکیب رفته....
در همه وارد هم سیگما جواب نمیده!!!Huh
میخواستم بدونم راه اساسی برای حل همه این الگوریتم ها چی هست ؟ هر کدوم راه حل جداگانه باید برم ؟ از کجا باید بفهمم برای هر کدوم از چه راه حلی باید برم ؟
کتابی در این موضوع هست؟؟ که خوب توضیح داده باشه، تا از پس هر نوع الگوریتمی بر بیام !!!Confused
لطفا یه راه حل اساسی بهم نشون بدین...Exclamation

با تشکر

۶
ارسال:
  

lsamimi پاسخ داده:

پیچیدگی زمانی ؟؟؟

در رابطه با پیچیدگی هر سوالی را با روش خاص خودش باید حل کنید
برای مثال اگر چند تا حلقه for داشته باشی که شمارنده های حلقه ها هیچ وابستگی به هم نداشته باشند نیازی نیست از سیگما استفاده کنی(البته از سیگما هم می تونه حل بشه) کافیه تعداد اجرای حلقه ها رو از طریق کرانهای بالا و پایین محاسبه کنی. برای مثال در کد زیر:
for i=1 to n do
for j=1 to m do
x=x+1
دستور سوم nm بار تکرار میشه چون for اول n-1+1 (کران بالا منهای کران پایین بعلاوه یک) و for دوم هم m-1+1 بار اجرا میشه و اینها در هم ضرب میشوند.
اما در جاهایی که شمارنده های حلقه بهم وابسته هستند راحتتره که از روش سیگما استفاده کنی
for i=1 to n do
for j=1 to i do
x=x+1
در این حالت شمارنده j به i وابسته هست وداریم:
[tex]\sum_{i=1}^{n} \sum_{j=1}^{i}1[/tex]
در رابطه با حلقه های while بهتره شمارنده رو تشخیص بدید یا از روش عددگذاری استفاده کنید

۱
ارسال:
  

Bache Mosbat پاسخ داده:

پیچیدگی زمانی ؟؟؟

برای پیچیدگی باید زیاد مسئله ببینین همین .

۰
ارسال:
  

elhameli پاسخ داده:

RE: پیچیدگی زمانی ؟؟؟

HuhHuhHuh

۰
ارسال:
  

sajad_8900 پاسخ داده:

پیچیدگی زمانی ؟؟؟

سلام دوست عزیز.
یه نگاهی به فصل اول کتاب ساختمان داده استاد هورویتز بنداز.گفته چیارو حساب کنی چیارو حساب نکنی.فک کنم به دردت بخوره.

۰
ارسال:
  

enkido5 پاسخ داده:

RE: پیچیدگی زمانی ؟؟؟

به نظر من به کتاب هورویتز و کتاب کورمن (CLRS) یه نگاهی بندازید.
نقل قول: یه جا از طریق عدد گذاری در سیگما رفته، لگاریتم، عدد گذاری در الگوریتم و یه جا هم از طریق ترکیب رفته....
در همه وارد هم سیگما جواب نمیده!!!
یه مسئله رو ممکنه از راه‌های متفاوتی بشه حل کرد. اگه مسئله مورد نظرتون رو بذارید بهتر میشه کمک کرد.

۰
ارسال:
  

soheiy پاسخ داده:

RE: روش یادگیری پیچیدگی زمانی ؟

(۰۶ خرداد ۱۳۹۱ ۰۳:۲۰ ب.ظ)elhameli نوشته شده توسط:  سلام به همه دوستان
لطفا منو راهنمایی کنید، من کتاب تست مقسمی و طراحی الگوریتم پوران و یکم گریمالدی در مورد پیچیدگی زمانی خوندم، کلا قاطی کردم.من نمی دونم از کجا باید بفهمم تعداد دفعات اجرای یک خط کد در یک الگوریتم رو از چه راه حلی باید بدست بیارم!!!Confused
یه جا از طریق عدد گذاری در سیگما رفته، لگاریتم، عدد گذاری در الگوریتم و یه جا هم از طریق ترکیب رفته....
در همه وارد هم سیگما جواب نمیده!!!Huh
میخواستم بدونم راه اساسی برای حل همه این الگوریتم ها چی هست ؟ هر کدوم راه حل جداگانه باید برم ؟ از کجا باید بفهمم برای هر کدوم از چه راه حلی باید برم ؟
کتابی در این موضوع هست؟؟ که خوب توضیح داده باشه، تا از پس هر نوع الگوریتمی بر بیام !!!Confused
لطفا یه راه حل اساسی بهم نشون بدین...Exclamation

با تشکر
______________________________________________________________________
راه حلش حل تست و تست و تست و تمرین . .
من به این نتیجه رسیدم. خودمم خیلی مشکل دارم. منتها سعی کن تست هارو مجددا بزنی . کتاب ساختمان داده پوران خوبه

اکه میشد اینجا تست های نکته دارو بررسی میکردیم خوب بود

۰
ارسال:
  

mrz_kamali پاسخ داده:

روش یادگیری پیچیدگی زمانی ؟

سلام خسته نباشید . اثبات این قضیه رو می خواستم کسی هست که بتونه جواب بده ؟
nlog n
عضو
logn!

البته عضو O بزرگ هستش

N log n ε (log n!)
خواهش می کنم کمکم کنید

۰
ارسال:
  

naderx پاسخ داده:

RE: روش یادگیری پیچیدگی زمانی ؟

خوب به مفهوم فاکتوریل فکر کن
فاکتوریل n یعنی چی ؟ یعنی n*n-1*n-2*n-3...*3*2*1
به نظرت این رو میشه تقریبا بگیریم ان تا ان که در هم ضرب شدن ؟ n*n*n*n*...*n*n*n*n
ٱره میشه گرفت ولی قبول داری اگر ان به توان ان رو بگیریم فاکتوریل ، انگار یه مقدار کوچیک رو با یه مقدار بزرگ جانشین کردیم ؟ چون قبلا بود n*n-1*n-2*n-3...*3*2*1 و حالا شده : n*n*n*n*...*n*n*n*n
پس به این دلیل بدیهی ان به توان ان از فاکتوریل کوچکتره و این رابطه همیشه برقراره : !n > n به توان n
و اگر از دو طرف لگاریتم بگیریم به این نتیجه که شما میخواستی خواهیم رسید. به همین سادگی به همین خوشمزگی Tongue

ارسال: #۱۰
  

javadem پاسخ داده:

RE: روش یادگیری پیچیدگی زمانی ؟

(۰۲ آبان ۱۳۹۱ ۰۸:۳۵ ب.ظ)naderx نوشته شده توسط:  خوب به مفهوم فاکتوریل فکر کن
فاکتوریل n یعنی چی ؟ یعنی n*n-1*n-2*n-3...*3*2*1
به نظرت این رو میشه تقریبا بگیریم ان تا ان که در هم ضرب شدن ؟ n*n*n*n*...*n*n*n*n
ٱره میشه گرفت ولی قبول داری اگر ان به توان ان رو بگیریم فاکتوریل ، انگار یه مقدار کوچیک رو با یه مقدار بزرگ جانشین کردیم ؟ چون قبلا بود n*n-1*n-2*n-3...*3*2*1 و حالا شده : n*n*n*n*...*n*n*n*n
پس به این دلیل بدیهی ان به توان ان از فاکتوریل کوچکتره و این رابطه همیشه برقراره : !n > n به توان n
و اگر از دو طرف لگاریتم بگیریم به این نتیجه که شما میخواستی خواهیم رسید. به همین سادگی به همین خوشمزگی Tongue

آره درست میگید، من گفتم شاید بشه به این صورت هم n! را نوشت :
[tex]n * (n-1)*(n-2)*...(n-n 2)*(n-n 1)[/tex]
و از ضرب این جمله ها در هم یه چند جمله ای درجه n به دست میاد که البته کم توجهی کردم. گویا اشتباه کردم. الان که بیشتر توجه میکنم اشتباهم خیلی شدیده. اما یهو ای تو ذهنم فوران کرد. اما شما این فوران بزرگ علمی رو خفه کردید.

(۰۲ آبان ۱۳۹۱ ۰۸:۳۵ ب.ظ)naderx نوشته شده توسط:  پس به این دلیل بدیهی ان به توان ان از فاکتوریل کوچکتره و این رابطه همیشه برقراره : !n > n به توان n
و اگر از دو طرف لگاریتم بگیریم به این نتیجه که شما میخواستی خواهیم رسید. به همین سادگی به همین خوشمزگی Tongue
البته این که شما میگید بدیهیه یعنی اگه از دو طرف لگاریتم بگیریم هنوز هم هم رشد نیستن؟ ([tex]log(n!)[/tex] و [tex]log(n^n)[/tex])
آخه این هم رشدی رو توی کتاب پوران فقط گفته.
من تو اثبات اشتباه کردم اما فکر میکنم همچین رابطه ای بر قرار باشه

نمیشه اینطور ثابت کرد؟
[tex]log(n!)[/tex] = [tex]log(n * (n-1) * ( n-2) ... *2* 1)[/tex]که اینم برابره با [tex]log(n) log(n-1) log(n-2) ... log(2) log(1)[/tex] و از اونجایی که در کتاب ثابت شده همه این لگاریتم ها که با هم جمع شدن هم رشد هستند که در نتیجه همه رو [tex]log(n)[/tex] در نظر میگیریم که جمعشون میشه [tex]nlogn[/tex] . فکر کنم این یکم معقولانه تر باشه نه؟

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



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۳,۹۲۴ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  ۷ قانون طلایی یادگیری آسان مکالمه زبان انگلیسی morweb ۱۲ ۱۰,۹۷۷ ۰۶ خرداد ۱۴۰۰ ۰۳:۱۹ ب.ظ
آخرین ارسال: cyruskingsolomon
  رودمپی برای یادگیری برنامه نویسی Doctorwho ۰ ۱,۵۷۴ ۲۳ اردیبهشت ۱۴۰۰ ۱۱:۲۲ ق.ظ
آخرین ارسال: Doctorwho
  یادگیری لغات حیاتی زبان انگلیسی cyruskingsolomon ۰ ۲,۱۴۱ ۰۷ اسفند ۱۳۹۹ ۰۴:۴۲ ب.ظ
آخرین ارسال: cyruskingsolomon
  تهیه کتاب یادگیری الکترونیکی هادی اسماعیلی lotuss ۰ ۱,۷۴۵ ۲۹ آبان ۱۳۹۹ ۰۲:۲۰ ب.ظ
آخرین ارسال: lotuss
  سوال یادگیری ماشین isoa ۳ ۳,۸۶۰ ۰۸ مرداد ۱۳۹۹ ۰۶:۳۴ ق.ظ
آخرین ارسال: BBumir
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۱,۳۲۸ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  چرا یادگیری برنامه نویسی ؟ elecomco ۰ ۲,۲۶۸ ۰۲ خرداد ۱۳۹۹ ۰۲:۵۷ ب.ظ
آخرین ارسال: elecomco
  مرتبه زمانی Sanazzz ۱۷ ۱۹,۳۲۷ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh
  پیچیدگی زمانی اکشن های قابل اعمال در یک وضعیت اsepid8994 ۰ ۱,۵۷۸ ۲۹ اسفند ۱۳۹۸ ۱۲:۵۱ ب.ظ
آخرین ارسال: اsepid8994

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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