نمایش نتایج 1 تا 14 از 14

نام تاپیک: محاسبه باز گشتی Fibonacci Series از مرتبه لگاریتم (n)

  1. #1

    محاسبه باز گشتی Fibonacci Series از مرتبه لگاریتم (n)

    با سلام،

    آیا کسی الگوریتمی دارد که عناصر سری فیبوناچی را بصورت بازگشتی محاسبه کند و مرتبه این الگوریتم O[Log(n)]j باشد؟

    اگر دارید لطف کنید مرا بی خبر نگذارید.

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1382
    محل زندگی
    ایران - تهران
    پست
    447
    این الگوریتمش هست
    Function Fibonacci (N: integer) 

    Begin

    If N < 0 then raise an exception
    Else if N = 0 or 1 then return 1
    Else return Fibonaccci(N-1)+Fibonacci(N-2) End if

    End Fibonacci

  3. #3
    با سلام و تشکر،

    الگوریتمی که شما داده اید از رتبه n است، منظور من الگوریتمی از رتبه لگاریتم (n) بود شبیه الگوریتم FFT.

    ممنون میشوم اگر مرا راهنمایی کنید.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    فقط الگوریتم تکراری (itterative) دارای زمان اجرای <span dir=ltr>O(n)</span> است.
    الگوریتمهای مختلف و زمان اجرای هر کدوم در لینک زیر موجوده:
    http://people.msoe.edu/~durant/courses/cs285/bigO.cpp

  5. #5
    سلام،

    من الگویتم رو با روش زیر امتحان کردم:

    یک متغیر عمومی استفاده کردم، هردفعه که یک دستور اجرا میشد یکی به اون اضافه کردم، بعد با شروع صفر الگوریتم رو اجرا کردم برای هر عددی که به عنوان ورودی دادم مقدار اون متغیر عمومی خود عدد ورودی بود. برای همین احساس کردم رتبه n باشه.

    اگه تو روش کار اشتباه کردم لطفا بگید، راه درستش رو هم بگید. (البته منظورم بدون محاسبه و با آزمایشه)

    ممنون.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    موضوع زیر رو ببین:
    http://www.barnamenevis.org/viewtopic.php?t=2909

  7. #7
    آقای خجسته عزیز سلام،

    اگر ممکن است به سوال من جواب دهید. من واقعا دنبال این هستم که ببینم چگونه می توان نتایج محاسبات تئوری را آزمایش کرد.

    در مورد الگوریتم بازگشتی ارائه شده توسط خانم تفرشی هم اگر فرصت دارید لطف کنید راه محاسبه مرتبه آنرا بگویید (به نظر روش تقسیم و تسخیر نمی آید)

    با عرض شرمندگی :oops: ممنون

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    ببخشدید، متوجه وجود پست جدید نشدم.

    نماد O بزرگ (Big O) تقریبی از زمان اجرای الگوریتم رو در اختیار می‌گذاره نه زمان اجرای دقیق الگوریتم رو.

    به عنوان نمونه٬ در الگوریتمی که توسط خانم تفریشی ذکر شده٬ تابع به ازای هر n بزرگتر از 1 الگوریتم دو بار فراخوانی میشه یا به عبارتی برای هر n دفعات فراخوانی تابع تقریبا" <span dir=ltr>2^n</span> است.

    حال اگر برای آزمایش تعداد واقعی فراخوانی‌ها٬ همانند روشی که شما بکار بردید، مقدار یک شمارنده را در اولین خط این تابع افزایش دهیم٬ این شمارنده در خاتمه مقداری کمتر از <span dir=ltr>2^n</span> را نشان می‌دهد که البته در هر حال مقدار حاصل بیانگر افزایش توانی تعداد فراخوانی‌ها بر اساس اندازه‌ی ورودی مسئله هست.

    اجازه دهید دلیل برابر نبودن مقدار نهایی شمارنده با <span dir=ltr>2^n</span> را با یک مثال ببینیم. فرض کنید که مقدار n ورودی عدد 4 باشد.

    • فراخوانی n = 4
      [list:6ed9736a02]
    • فراخوانی n = 3
      [list:6ed9736a02]
    • فراخوانی n = 2
      [list:6ed9736a02]
    • فراخوانی n = 1
    • فراخوانی n = 0
    [*]فراخوانی n = 1[/list:u:6ed9736a02][*]فراخوانی n = 2
    • فراخوانی n = 1
    • فراخوانی n = 0
    [/list:u:6ed9736a02][/list:u:6ed9736a02]همانطور که در این مثال می‌بینید٬ تعداد فراخوانی‌ها به جای مقدار محاسباتی <span dir=ltr>2^4 = 16</span>برابر مقدار 9 شد. دلیل این امر این است که برای هر بار فراخوانی، اندازه مسئله اصلی به دو اندازه‌ی نابرابر n-1 و n-2 تقسیم می‌شوند و لذا هر چقدر مقدار n بزرگتر باشه بین مقدار محاسباتی و مقدار واقعی فراخوانی‌ها اختلاف بیشتری بوجود میاد. اگر اندازه تقسیمات برابر بود٬ مقدار واقعی با مقدار محاسباتی برابر می‌شد.

  9. #9

    ادامه

    کتاب طراحی الگوریتم نوشته نو پو لیتن و یا طراحی الگوریتم دکتر نقیب زاده رو یه نگاهی بکن

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    قفس فیلترینگ(ایران)
    پست
    208
    با سلام

    دوستان
    من سه الگوریتم برای فیبوناچی می شناسم
    1- همان فیبو بازگشتی هست با مرتبه زمانی (O(1.61^n
    2- الگوریتم چرخشی(itration) با مرتبه (O(n
    3- الگوریتم شبیه سازی شده الگوی کاری آقای فیبوناچی که دارای زمان لگاریتم n است اما ضرایب بزرگی دارد که در نماد O پنهان می شود.
    اگر این الگوریتم سوم را خواستید به کتاب زیر مراجعه کنید
    Algorithmics theory ad practice by brassard
    ضمنا شنیدم آقای مهدس جم پور ترجمه این کتاب رو تحت عنوان طراحی و تحلیل الگورتم ها وارد بازار کرده اند انتشارات اون رو نمی دونم

    موفق باشید

  11. #11
    کاربر دائمی آواتار el_abdollahi
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    شهر قنات و قنوت و قناعت
    پست
    476

    نقل قول: محاسبه باز گشتی Fibonacci Series از مرتبه لگاریتم (n)

    سلام.
    باز هم همون سوال اول
    نقل قول نوشته شده توسط B-Vedadian مشاهده تاپیک
    با سلام،

    آیا کسی الگوریتمی دارد که عناصر سری فیبوناچی را بصورت بازگشتی محاسبه کند و مرتبه این الگوریتم O[Log(n)]j باشد؟

    اگر دارید لطف کنید مرا بی خبر نگذارید.
    کسی جوابی داره؟

  12. #12
    کاربر دائمی آواتار pesar irooni
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران
    سن
    40
    پست
    495

    نقل قول: محاسبه باز گشتی Fibonacci Series از مرتبه لگاریتم (n)

    این الگوریتم که مینویسم از نوع تکراریه و فکر نکنم الگوریتم بازگشتی از این مرتبه وجود داشته باشه
    function fib(n)
    i=1; j=0; k=0; h=1;
    while n>0 do
    if n is odd then
    t=jh;
    j=ih+jk+t;
    i=ik+t;
    t=h^2;
    h=2kh+t;
    k=k^2+t
    n=n div 2;
    return j

  13. #13
    کاربر دائمی آواتار el_abdollahi
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    شهر قنات و قنوت و قناعت
    پست
    476

    نقل قول: محاسبه باز گشتی Fibonacci Series از مرتبه لگاریتم (n)

    خیلی ممنون
    فقط اگر یه توضیحی هم درباره الگوریتمش بدین، که منطقش چه جوریه خیلی خوب میشه.
    این هم از کدش به زبان C++‎:

    int fib(int n)
    {
    int i,j,k,h,t;
    i=1; j=0; k=0; h=1; j=0;
    while (n>0)
    {
    if (n%2==1)
    {
    t=j*h;
    j=i*h+j*k+t;
    i=i*k+t;
    }
    t=h*h;
    h=2*k*h+t;
    k=k*k+t;
    n=n / 2;
    }
    return j;
    }

  14. #14
    کاربر دائمی آواتار pesar irooni
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران
    سن
    40
    پست
    495

    نقل قول: محاسبه باز گشتی Fibonacci Series از مرتبه لگاریتم (n)

    واقعا نمیدونم منطقش چیه و چه رابطه منطقی بین i j h و اینا برقراره. اما با مطالعه شاید بشه فهمید. اما اینکه ایده اولیه به ذهن طراحش رسیده واقعا جای تحسین داره

تاپیک های مشابه

  1. Exploit-Me Series
    نوشته شده توسط houtanal در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 0
    آخرین پست: چهارشنبه 07 آذر 1386, 15:51 عصر
  2. Add Dynamically Series In QRChart
    نوشته شده توسط atiyeh در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 0
    آخرین پست: دوشنبه 23 مهر 1386, 09:14 صبح
  3. Join the Two Weeks of Delphi/C++‎ 2006 Webinar Series!
    نوشته شده توسط Mahyaa در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: یک شنبه 21 آبان 1385, 09:59 صبح
  4. Bruce Perens' Open Source Series
    نوشته شده توسط Inprise در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 3
    آخرین پست: یک شنبه 23 اسفند 1383, 23:43 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •