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

مشکل در ساختمان داده

ارسال:
  

jafar.sh پرسیده:

Exclamation مشکل در ساختمان داده

با سلام بر دوستان
اگر دوستانی که درس ساختمان داده را در دانشگاه و یا حتی جاهای دیگه یاد گرفتند لطفا راهنمایی کنند؟؟؟؟
سئوا من در مورد پیچیده گی زمانی و مرتبه ی اجرا هست؟؟؟؟ (مخصوصا مرتبه اجرایی)
به این حقه تو در تو لطفا نگاه کنید!!!

[تصویر:  w76kkiwbalpnhjy5fgo.jpg]


مرتبه اجرایی این حلقه ۱۳ میشه؟؟
حال میخواستم بدونم چرا؟؟؟
من روند حلقه های تو در تو را نمیدانم???? یعنی عملیاتش چطوری هست؟؟؟؟؟؟؟!!
لطفا هر کی بلده توضح بدهد!!Huh
سپاس

۲
ارسال:
  

Aurora پاسخ داده:

RE: مشکل در ساختمان داده

شرط رسیدن به پایان حلقه اول i<=2 و برای حلقه دوم همj<=2 است. به ازای هربار اجرای حلقه اول حلقه دوم باید اجرا شود. یعنی وقتی در حلقه اول i=1 است شرط i<=2 چک میشه چون شرط برقرار است وارد حلقه دوم شده و حلقه دوم هم اجرا شده (شرط حلقه دوم هم چک میشه j<=2 و در اینجا هم شرط برقرار است) و سپس دستور x=x+1 اجرا میشه. دوباره بر میگرده وارد حلقه دوم و شرط چک میشه j<=2 حالا که j=2 شده بازهم شرط برقرار است و بازهم دستورx=x+1 اجرا میشه. دوباره وارد حلقه دو میشه اینبار هم شرط چک میشه و چون j=3 هست شرط برقرار نیست و دستور x=x+1 اجرا نشده و حالا برمی گردیم به حلقه اول. اینبار شرط حلقه اول را برای i=2 چک می کنیم شرط برقراره و وارد حلق دوم میشیم و مراحلی که با رنگ دیگه مشخص کردم تکرار میشه. و همین طور ادامه میدیم. که اگه حساب کنید همان ۱۳ میشه. یعنی اینجا n=2 است.
تو کنکور اینطوری سوال نمیدند که چند بار اجرا میشه . از شما مرتبه اجرایی میخوان که تو این سوال همون طور که تو شکلی که خودتون گذاشتید از مرتبه n^2 است (به ازای i<n , j<n )

۲
ارسال:
  

Aurora پاسخ داده:

RE: مشکل در ساختمان داده

باید بیاد حلقه رو خط به خط دنبال کنید.
حلقه زیر رو در نظر بگیر
[tex]for(i=1, i<=2, i )[/tex]
در این حلقه شرط پایانی i<=2 است یعنی وقتی این شرط نقض بشه دیگه حلق تکرار نمیشه.پس برای i=1 و i=2 و i=3 حلقه بررسی میشه و در هر مرحله هم یک واحد به i اضافه میشه .پس این حلقه ۳ بار بررسی شد. در بار سوم که i=3 بررسی میشه چون شرط برقرار نیست وارد دستورات داخلی حلقه نشده و حلقه اجرا نمیشه. پس برای i=1,2 که شرط برقراره وارد دستورات داخلی میشه ولی برای i=3 وارد دستورات داخلی نمیشه و فقط عمل چک کردن انجام میشه. تا اینجا شد۳بار
حالا فرض کنید که دوتا حلقه داریم
[tex]for(i=1, i<=2, i )[/tex]
[tex]for(j=1, j<=2, j )[/tex]

گفتیم که حلقه بالا به ازای i=1,2 وارد دستورات داخلی میشه. وقتی i=1 است وارد حلقه۲ شده و حلقه ۲ هم به ازای j=1,2 وارد دستورات داخلی میشه . ولی خودش ۳بار شرط رو چک میکنه. پس وقتی i=1 است حلقه دوم ۳ بار چک میکنه و وقتی i=2 است بازهم ۳بار عمل چک کردن انجام میشه . حالا همون طور که در بالا گفتم به ازای i=3 دیگه دستورات داخل اجرا نشده. پس در اینجا هم دیگه حلقه دوم تکرار نمیشود. پس حلقه دوم ۶بار چک کردن رو انجام داد.
خوب حالا فرض کنید که
حلقه دوم یک دستور داخلی داره.
[tex]for(i=1, i<=2, i )[/tex]
[tex]for(j=1, j<=2, j )[/tex]
[tex]x=x 1[/tex]
دستور داخلی وقتی اجرا میشه که شرط حلقه دوم و حلقه اول درست باشه. یعنی به ازای i=1,2 و j=1,2 . وقتی که i=1 است شرط درسته وارد حلق دوم میشه.
در حلقه دوم هم j=1 است درسته وارد دستور داخلی میشه. پس یکبار اجرا شد
حالا j=2 میشه شرط برقراره دستور داخلی اجرا میشه پس شد ۲بار
حالا j=3 میشه شرط درست نیست پس برمیگرده حلقه اول . حالا i=2 میشه شرط برقراره وارد حلق ۲ میشه. j=1 میشه شرط برقراره وارد دستور داخلی میشه. دستورداخلی یکبار دیگه اجرا میشه پس شد ۳بار. حالا j=2 میشه. باز شرط برقرار پس دستور داخلی بازهم اجرا شد پس شد. ۴بار
پس داریم.
۴+۳+۶=۱۳

۲
ارسال:
  

Aurora پاسخ داده:

RE: مشکل در ساختمان داده

خوب اگه سوالتون درست باشه اینطوری حل میکنیم
اول شرط رو چک میکنه یعنی بررسی میکنه که آیا i>1 است یانه.
اگه درست بود که وارد حلقه میشه و دستور x=x+1 یکبار اجرا میشه.
دوباره شرط بررسی میشه و چون i تغییری نکرده دوباره x=x+1 اجرا میشه.
همین طور بار دیگه شرط بررسی میشه خوب i که تغییری نکرده پسx=x+1 دوباره اجرا میشه
پس تا بینهایت همین طوری اجرا میشه چون هیچ وقت i به شرط توقف نمیرسه i اصلا تغییر نمیکنه. i همیشه ثابت خواهد ماند و همیشه i>1 خواهد بود.

۱
ارسال:
  

jafar.sh پاسخ داده:

RE: مشکل در ساختمان داده

با سلام
میخواستم بدونم این حلقه درست هست یانه!!
لطفا راهنمایی کنید!؟؟
i = n

while (i>1)
{
x+=1
i-=1
}


سپاس

۰
ارسال:
  

لهمشد پاسخ داده:

RE: مشکل در ساختمان داده

(۱۶ اسفند ۱۳۹۰ ۱۰:۰۶ ب.ظ)jafar.sh نوشته شده توسط:  با سلام بر دوستان
اگر دوستانی که درس ساختمان داده را در دانشگاه و یا حتی جاهای دیگه یاد گرفتند لطفا راهنمایی کنند؟؟؟؟
سئوا من در مورد پیچیده گی زمانی و مرتبه ی اجرا هست؟؟؟؟ (مخصوصا مرتبه اجرایی)
به این حقه تو در تو لطفا نگاه کنید!!!

[تصویر:  w76kkiwbalpnhjy5fgo.jpg]


مرتبه اجرایی این حلقه ۱۳ میشه؟؟
حال میخواستم بدونم چرا؟؟؟
من روند حلقه های تو در تو را نمیدانم???? یعنی عملیاتش چطوری هست؟؟؟؟؟؟؟!!
لطفا هر کی بلده توضح بدهد!!Huh
سپاس
چرا ۱۳ ؟
ببین کلا روند اجرا حلقه های تو در تو تو شرایط مختلف متفاوته خب مثلا بسته به زبان های مختلف syntx های مختلف می تونند داشته باشن این رو میگم ولی برا اینکه متوجه بشی یکی از این کتاب های کنکور کاردانی به کارشناسی واسه درس برنامه نویسی رو بخر اون رو بخونی متوجه میشی .
اما جواب با فرض x=0 داریم به ازای i=1 حلقه j 2 بار اجرا میشه مقدارش میشه ۲ و بعد شرط حلقه غلط میشه حالا دوباره تو مرحله دوم
اجراi=2 میره به حلقه j و دوبار اجرا میشه و مقدار x که ۲ بود ۲تا دیگه اضافه میشه و درنهایت میشه ۴ .
کلا یه قانون برا این فرم از حلقه ها وجود داره :
اگه حلقه برحسب n نوشته شده باشه (یعنی مقدار نهایی حلقه ی شما بجای ۲ , n باشه ترتیب به اینصورت هستش که به ازای هر بار اجرای حلقه خارجی n بار حلقه داخلی اجرا میشه .

۰
ارسال:
  

jafar.sh پاسخ داده:

RE: مشکل در ساختمان داده

متشکر: منظور من این هست که چطور باید مرتبه اجراش زا فهمید!؟؟؟
من که زیاد متوجه نشدم چی گفتید!!!
به ما یک روش دیگه گفتند که به صورت یک جدول هست!!! عکس را میزارم ببینید روش اش را !!
راستی روش کار حلقه های تو در تو (for)چطوری هست!!؟؟؟ من توی کتاب جعفرنژاد را دیدم ولی مثال خوبی نزده بود!!!

[تصویر:  64854213148410916445.jpg]

سپاس

۰
ارسال:
  

jafar.sh پاسخ داده:

RE: مشکل در ساختمان داده

نقل قول: اینبار شرط حلقه اول را برای i=2 چک می کنیم شرط برقراره و وارد حلق دوم میشیم و مراحلی که با رنگ دیگه مشخص کردم تکرار میشه. و همین طور ادامه میدیم. که اگه حساب کنید همان ۱۳ میشه. یعنی اینجا n=2 است.
تو کنکور اینطوری سوال نمیدند که چند بار اجرا میشه . از شما مرتبه اجرایی میخوان که تو این سوال همون طور که تو شکلی که خودتون گذاشتید از مرتبه n^2 است (به ازای i<n , j<n )

متشکر از شما ۴۰%حرف هاتون را فهمیدم :من چون پایه برنامه نویسی ضعیف هستن : مشکل دارم: کار حلقه های تو در تو را نمبدونم!!!
ولی یک جاش را نفهمیدم لطفا راهنمایی کنید!!
روند یا کار حلقه های تو در تو چطوری هست !!!!؟؟؟؟ یعنی تا چند دور حلقه ها تکرار میشند؟؟؟

۰
ارسال:
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

یک دنیا ممنونم از شما دوست عزیز: انشا الله دانشگاه ارشد سراسری قبول بشید: واقعا خیلی قشنگ توضیح دادید: حق شما هست که استاد دانشگاه بشید
والا ۸۰% را فهمیدم :فقط این حلقه های تو در تو را یکم هنگ میزنم: روند کارشان : سعی میکنم روش بیشتر کار کنم!!!! تا بفهمم : اگه نشد دوباره از شما راهنمایی طلب می کنم

سپاس فراوان
موفق باشد

۰
ارسال: #۱۰
  

jafar.sh پاسخ داده:

RE: مشکل در ساختمان داده

راستی یک سئوال دیگه هم داشتم لطفا راهنماییی کنید؟؟؟؟
جواب این مسئله چی میشه!!!
مرتبه اجرایی چی میشه؟؟ مثل مثال قبلی!!
لطفا اگه بلدید یک توضیح مختصر بدید!!؟؟؟؟Exclamation
[تصویر:  z9z661n89dcrriyk9p.png]

سپاس
موفق باشید

۰
ارسال: #۱۱
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

بله : سئوالش همین هست!!
جوابش چی میشه!!! ایا بی نهایت یار اجرا میشه؟؟؟
ایا فرمول خاصی براش میشه نوشت!؟؟؟
Huh
سپاس

۰
ارسال: #۱۲
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

متشکر از راهنمایی تان
راستی اونجا پس n چه کاره هست؟؟؟ چون نوشته i=n !!!
ایا نمیشه عددی را همینجوری به i یا n نسبت داد؟؟؟؟ یا روشی براش تعیین کرد؟؟
سپاس

۰
ارسال: #۱۳
  

Aurora پاسخ داده:

RE: مشکل در ساختمان داده

بله N خوب میتونه هر عددی باشه.
مثلا اگه N =1 یا N=0 باشه هیچ وقت شرط حلقه درست نیست و هیچ بار اجرا نمیشه.
ولی اینجا که مقدارش مشخص نیست من N رو یک عدد بزرگ در نظر گرفتم.

۰
ارسال: #۱۴
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

باز هم تشکر از شما دوست عزیز
به نظر شما باید چه تغییراتی انجام داد تا حلقه بینهایت انجام نشه؟؟؟ لطفا اگه میتونید یک مثال در همین مورد بزنید که حلقه تکرا نشه و شرط مشخص داشته باشه؟؟!!

سپاس

۰
ارسال: #۱۵
  

Aurora پاسخ داده:

RE: مشکل در ساختمان داده

اینجور سوالها حالت های مختلفی دارند. من دوتا مثال ساده می زنم. بهتره که شما هم از روی یک کتاب این مباحثو بخونید و تمرین حل کنید قلق کار رو متوجه می شید.
j=n
while j>1 do
j=j-1
در مثال بالا j با مقدار n مقداردهی میشه.
در داخل حلقه هربار از j یک واحد کم میشه تا j به مقدار کوچکتر یا مساوی ۱ برسه.
پس به اندازه ی n بار حلقه اجرا میشه. یعنی اگر مثلا n= 5 قرار بدید، با هر اجرای حلقه یک واحد از j کم میشه. تا اینکه j به ۱ برسه.
j=5 شرط درسته حلقه اجرا می شود
j=4 شرط درسته حلقه اجرا می شود
j=3 شرط درسته حلقه اجرا می شود
j=2 شرط درسته حلقه اجرا می شود
j=1 شرط درست نیست حلقه اجرا نمی شود

j=n
while j>1 do
j=j/2
در این مثال هر بار j نصف میشه . خوب مسلما دیگه n بار اجرا نمیشه و کمتر از n بار خواهد بود.
در اینجا اگه یک مثال بزنیم مثلا n=8 قرار بدیم در هر مرحله با نصف شدن j داریم
j=8 شرط درسته حلقه اجرا می شود
j=4 شرط درسته حلقه اجرا می شود
j=2 شرط درسته حلقه اجرا می شود
j=1 شرط درست نیست حلقه اجرا نمی شود.
پس کلا ۳ بار اجرا شد. یعنی مرتبه log n است.

۰
ارسال: #۱۶
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

بسیار ممنون از شما
به نظر شما بهترین کتاب برای ساختمان داده چی هست؟؟؟؟ که ساده و روان و با جزئیات کامل توضیح داده باشه؟؟؟؟
راستی من تازه تمرین اولی که حل کرده بودید را دیدم چرا حلقه ها را جدا جدا کرده بودید!!!! ادم یکم گیج میشه!!!
اگه حلقه ها را باهم کلی حل می کردید خیلی خوب میشد!!! اون اولین جوابی که به من داده بودید که رنگ ابی نوشته بودید : دقیقا نصف مسئله را قشنگ توضیح داده بودید و فهمیده بودم: لطفا نصف دیگه اش را توضیح بدید؟؟؟؟ لطفا به اون سبک بگویید!!

موفق باشید
سپاس
Huh

۰
ارسال: #۱۷
  

Aurora پاسخ داده:

RE: مشکل در ساختمان داده

شرط رسیدن به پایان حلقه اول i<=2 و برای حلقه دوم همj<=2 است. به ازای هربار اجرای حلقه اول حلقه دوم باید اجرا شود. یعنی وقتی در حلقه اول i=1 است شرط i<=2 چک میشه چون شرط برقرار است وارد حلقه دوم شده و حلقه دوم هم اجرا شده (شرط حلقه دوم هم چک میشه j<=2 و در اینجا هم شرط برقرار است) و سپس دستور x=x+1 اجرا میشه. دوباره بر میگرده وارد حلقه دوم و شرط چک میشه j<=2 حالا که j=2 است باز هم شرط برقرار است و باز هم دستورx=x+1 اجرا میشه. دوباره وارد حلقه دو میشه اینبار هم شرط چک میشه و چون j=3 هست شرط برقرار نیست و دستور x=x+1 اجرا نشده و حالا برمی گردیم به حلقه اول. اینبار شرط حلقه اول را برای i=2 چک می کنیم شرط برقراره و وارد حلقه دوم میشیم. در حلقه دوم j=1 رو چک میکنه چون شرط برقرار است پس دستور x=x+1 اجرا شده دوباره شرط حلقه دوم برای j=2چک میشه چون شرط برقرار است پس x=x+1 اجرا میشه . حالا شرط j=3 چک میشه. دیگه شرط برقرار نیست. از حلقه دوم خارج شده وارد حلقه اول میشه.
i=3 رو چک میکنه. اینجا هم شرط برقرار نیست پس دیگه اینجا از حلقه خارج میشه . پس حلقه اول ۳بار چک شد. حلقه دوم ۶بار (۲*۳) چک شد. دستور x=x+1 هم ۴بار (۲*۲). پس کلا ۶+۳+۴=۱۳
حالا درست شد؟

۰
ارسال: #۱۸
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

متشکر از شما
من الان کاملا منظور شما رافهمیدم ولی موقع ای که میخوام توی اون جدول(توی عکس هست) بندازمش یا روی کاغذ پیادش کنم قاطی می کنم!! نمیدونم چرا؟؟

سپاس

۰
ارسال: #۱۹
  

jafar.sh پاسخ داده:

مشکل در ساختمان داده

باشه: باز هم سپاس از راهنمایی تان
اگه مشکلی بود دوباره بهتون میگم

موفق باشید

۰
ارسال: #۲۰
  

fatima1537 پاسخ داده:

مشکل در ساختمان داده

درسته.چون در اینجا شرط حلقه بالاخره بعد از مراحل معدودی خاتمه پیدا میکنه و از حلقه خارج میشیم
البته حتما نباید شرط حلقه اینطوری باشه که از حلقه خارج بشیم بلکه باید بالاخره بعد از مراحل محدودی تموم بشه(ولی معمولا شرط while رو اینطوری مینویسن که شمارنده حلقه در جلوی while هست و بعد درون حلقه while از مقدارش کم(یا به اون اضافه )میشه تا بالاخره به اون عدد مطلوب در شرط برسیم.

این حلقه به تعداد n-1 بار اجرا میشه.چون وقتی برای آخرین بار میخواد حلقه رو اجرا کنه مقدار i رو با شرط چک میکنه و میبینه ۱<1 نیست پس دیگه اون یکمرتبه آخر رو اجرا نمیکنه(برای اینکه N بار اجرا بشه باید شرط به صورت i>=1 باشه تا شرط درست دربیاد و مرحله یکم(آخر) رو اجرا کنه)



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Question بهترین منبع ساختمان داده برای کنکور ارشد marvelous ۱۰ ۱۲,۵۸۴ ۱۵ آذر ۱۴۰۱ ۰۷:۵۶ ب.ظ
آخرین ارسال: msnmkh
  فیلم آموزش ساختمان داده negin_bt ۰ ۱,۲۶۸ ۲۰ مهر ۱۴۰۱ ۰۷:۵۶ ب.ظ
آخرین ارسال: negin_bt
  رفع اشکال نصب جاوا، مشکل ساخته نشدن virtual machine shiivaa ۱۲ ۲۰,۸۰۶ ۱۹ آبان ۱۳۹۹ ۰۷:۲۹ ب.ظ
آخرین ارسال: wanted471
  معرفی کتاب برای ساختمان داده siamakaf ۲ ۴,۶۶۹ ۱۲ آبان ۱۳۹۹ ۰۹:۲۱ ق.ظ
آخرین ارسال: siamakaf
Sad مشکل در برنامه نویسی شیء گرا Xialu ۰ ۲,۲۹۲ ۰۵ شهریور ۱۳۹۹ ۱۲:۰۰ ب.ظ
آخرین ارسال: Xialu
  ساختمان داده و پایگاه داده پارسه امیدوار ۴ ۴,۵۳۸ ۱۲ خرداد ۱۳۹۹ ۰۸:۰۳ ب.ظ
آخرین ارسال: marvelous
  مشکل در حل تست ۲۲ فصل اول کتاب گسسته یوسفی pure.yaser ۷ ۹,۳۵۸ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۵۴ ب.ظ
آخرین ارسال: mohsentafresh
  فصل HEAP از کتاب ساختمان داده طورانی (پارسه) tourani ۳۷ ۴۰,۰۳۹ ۱۲ اسفند ۱۳۹۸ ۰۵:۱۹ ب.ظ
آخرین ارسال: hossein4070
  منبع ساختمان داده RASPINA ۷ ۷,۹۵۳ ۱۶ آذر ۱۳۹۸ ۰۱:۳۰ ق.ظ
آخرین ارسال: Behnam‌
  ساختمان داده پوران، فصل اول، راهنمایی برای حل یک مثال ساده marvelous ۲ ۲,۹۴۵ ۲۲ مرداد ۱۳۹۸ ۰۳:۳۰ ب.ظ
آخرین ارسال: marvelous

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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