ফিবোনাচি শব্দ


11

আমি আমার পুরানো চেক অ্যালগরিদম পাঠ্যপুস্তকে নিম্নলিখিত সমস্যাটি জুড়ে এসেছি, দুঃখের সাথে কোনও ইঙ্গিত বা সমাধান না দিয়ে এসেছিল।

"আমরা ফিবোনাচি শব্দগুলিকে , , as হিসাবে বর্ণনা করি , যেখানে এবং সাধারণ অক্ষর letters স্ট্রিং (সম্ভাব্য বৃহত বর্ণমালার উপরে) আপনি লিনিয়ার সময়ের মধ্যে দীর্ঘতম ফিবোনাকির উপ-শব্দটি খুঁজে পেতে পারেন? "এফ 1 = এফ এন + + 2 = এফ এন এফ এন + + 1 একটি F0=aF1=bFn+2=FnFn+1ab

আমি চতুর্ভুজ সময়ে একটি সমাধান জানি, কিন্তু এটি রৈখিক হ্রাস করতে পারে না। কেউ কি আমাকে সঠিক দিকে নির্দেশ করতে পারে?


3
এই পুরাতন চেক অ্যালগরিদম পাঠ্যপুস্তকের নাম কী ;-)
সাইদ

এই বইতে কি সাব-শব্দের সংলগ্ন (অর্থাত্ ফ্যাক্টর) হওয়া প্রয়োজন?
ক্লাউস ড্রায়ার 30'15

উত্তর:


12

Go to সুস্পষ্ট পথ গতিশীল প্রোগ্রামিং হল: দিন দুটি বর্ণের যা আদেশ একটি ফিবানচি শব্দের জন্য সংরক্ষণ অবস্থানে শুরু হয় , এবং এ খুঁজছেন দ্বারা এই নিরূপণ এবং । এটি বেশিরভাগ ক্ষেত্রে সময় নেয়, কারণ কেবলমাত্র লোগারিথিকভাবে অনেকগুলি সম্ভাব্য মান রয়েছে ।i j F ( i - 2 , j ) F ( i - 1 , j + fib ( i ) ) ( এন লগ এন ) iF(i,j)ijF(i2,j)F(i1,j+fib(i))O(nlogn)i

তবে আমি সন্দেহ করি যে কেবল পজিশন থাকতে পারে যার জন্য অদম্য (যেমন যখন একই দৈর্ঘ্যের দুটি ফিবোনাচি শব্দ উপস্থিত থাকে তবে তারা কেবল তাদের দৈর্ঘ্যের বেশিরভাগ অংশের চেয়ে স্থায়ী ভগ্নাংশের জন্য ওভারল্যাপ করুন। এর অজস্র অবস্থানগুলি কেবলমাত্র এগুলির জন্য আপনাকে জন্য (ধ্রুবক সময়) গণনা করতে হবে । তাই আপনি যদি আমার সন্দেহ সত্য তাহলে আপনি এটি পর্যন্ত গতি বাড়াতে পারে প্রতিটি মানের জন্য nonempty অবস্থানের একটি তালিকা সম্পর্কে অবগত থাকার দ্বারা এবং জন্য তালিকাটি ব্যবহার করে জন্য তালিকার গণনার গতি বাড়াতে ।F ( i - 2 , j ) F ( i - 2 , j ) F ( i , j ) O ( n ) i i - 2 iO(n/fib(i))F(i2,j)F(i2,j)F(i,j)O(n)ii2i

আপনি যদি একটি অ্যারে সঞ্চয় করে রাখেন তবে স্পিডআপের পরেও স্পেসটি হবে তবে পরিবর্তে হ্যাশ টেবিল ব্যবহার করে এটি উন্নত করা যেতে পারে। অথবা বিকল্পভাবে আপনি বিট শব্দের সাথে বিট-প্যাকড অ্যারে সংরক্ষণ করতে পারেন (পর্যবেক্ষণটি ব্যবহার করে যা আপনাকে কেবল এটি খালি বা না তা জানা দরকার; আপনি প্রতিটি স্ট্রিংয়ের জন্য দুটি অক্ষর সন্ধান করে খুঁজে পেতে পারেন) ইনপুট স্ট্রিংয়ে এর প্রথম অবস্থানে রয়েছে)।( এন লগ এন ) এফ ( এন ) লগ এনFO(nlogn)FO(n) logn


আপনি কি আমাকে বলতে পারেন, আপনি কেন ভাবেন যে এই সমস্যাটির জন্য ডায়নামিক প্রোগ্রামিং সেরা পছন্দ হবে? আমরা যদি সি এর মতো কোনও স্ট্যাটিক প্রোগ্রামিং ব্যবহার করি তবে আমরা কোথায় সমস্যার মুখোমুখি হব ?
তারেট গোস্বামী

1
ডায়নামিক প্রোগ্রামিং হ'ল একটি অ্যালগরিদম ডিজাইনের কৌশল, প্রোগ্রামিং ভাষার ক্লাস নয়।
ডেভিড এপস্টেইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.