স্টার্ন-Brocot গাছ ভগ্নাংশের একটি বাইনারি ট্রি যেখানে প্রতিটি ভগ্নাংশ numerators এবং এবং এটি প্রতিবেশী উপরে মাত্রা দুই ভগ্নাংশের denominators, যোগ করে অর্জিত হয়।
এটি "সমাপ্তি ভগ্নাংশ" দিয়ে শুরু করে 0/1
এবং 1/0
সেখান থেকে উত্পাদিত হয় এবং সেখান থেকে প্রতিটি ভগ্নাংশের প্রতিটি ক্রমাগত জোড়ের মধ্যে একটি ভগ্নাংশ স্থাপন করে পুনরাবৃত্তি করে সেই ভগ্নাংশের সংখ্যক এবং সংজ্ঞা যুক্ত করে, যেমন:
0. 0/1 1/0
1. 0/1 1/1 1/0
2. 0/1 1/2 1/1 2/1 1/0
3. 0/1 1/3 1/2 2/3 1/1 3/2 2/1 3/1 1/0
4. 0/1 1/4 1/3 2/5 1/2 3/5 2/3 3/4 1/1 4/3 3/2 5/3 2/1 5/2 3/1 4/1 1/0
স্টার্ন-Brocot বৃক্ষ (প্রতিটি পুনরাবৃত্তির n
তম পুনরাবৃত্তির), আছে 2^n + 1
ক্রমানুসারে উপাদান, যা আমরা থেকে একটি ভগ্নাংশ আরোপ করতে 0/2^n
করতে 2^n/2^n
। প্রতিটি নতুন পুনরাবৃত্তি একটানা প্রতিটি ভগ্নাংশের মধ্যে একটি ভগ্নাংশ "অর্ধেক" সন্নিবেশ করায়।
এটি স্টার্ন-ব্রোকট গাছকে ধনাত্মক যুক্তিযুক্ত সংখ্যা এবং বাইনারি ভগ্নাংশগুলি 0 এবং 1 এর মধ্যে এক থেকে এক ম্যাপিং করে তোলে, যার ফলে দুটি সেট একই কার্ডিনালিটির রয়েছে তার প্রমাণ হিসাবেও পরিবেশন করে।
আপনার কাজটি এমন কোনও প্রোগ্রাম বা ফাংশন লিখতে হয় যা সর্বনিম্ন পদে ধনাত্মক যুক্তিযুক্ত সংখ্যার সংখ্যক এবং ডিনোমিনেটর দেওয়া হয়, স্টার-ব্রোকট গাছের মধ্যে ভগ্নাংশের অবস্থানের সাথে বাইনারি ভগ্নাংশ নির্ধারণ করে।
ইনপুট এবং আউটপুটগুলির উদাহরণ নীচে সরবরাহ করা হয়েছে:
2/3 -> 3/8 (4th number in iteration 3)
4/7 -> 9/32 (between 1/2 and 3/5 in the chart above)
1/1 -> 1/2 (middle number in the first iteration)
ইনপুটগুলি আপনাকে সমর্থন করার দরকার নেই, তবে রেফারেন্সের জন্য এটি অন্তর্ভুক্ত করা হয়েছে:
0/1 -> 0/1 (0/1 is considered the left number)
1/0 -> 1/1 (1/0 is considered the rightmost number)
এই লক্ষ্য অর্জনে যে কোনও ভাষায় সংক্ষিপ্ততম প্রোগ্রামটি জয়ী হয়।
1/1 => 1
, 1/2 => 2
, 2/1 => 3
, 1/3 => 4
, ইত্যাদি)। যদি কোনও নোডের জন্য উত্পন্ন সংখ্যাটি হয় n
তবে 2^lg n
(বাইনারি লগ) সর্বাধিক বিট সেট করা থাকে n
এবং কাঙ্ক্ষিত বাইনারি ভগ্নাংশ হয় (2*(n - 2^lg n) + 1) / 2^(lg n + 1)
। (যে ব্যক্তি যে কোনও নির্দেশ-সেট-এ একত্রিতকারী সমাধানটি সর্বাধিক-সেট-বিটের সাহায্যে গ্রহণ করে সে সম্ভবত এই পদ্ধতির ব্যবহার করতে চাইবে)।