Kolmogorov জটিলতা একটি স্ট্রিংয়ের এস সবচেয়ে কম প্রোগ্রামের দৈর্ঘ্য হল পি , কিছু প্রোগ্রামিং ভাষায় লেখা এল , যার আউটপুট ঠিক এস ।
(হ্যাঁ, আসল সংজ্ঞাটি আরও আনুষ্ঠানিক তবে এটি চ্যালেঞ্জের পক্ষে যথেষ্ট))
এই প্রতিদ্বন্দ্বিতায় আপনার টাস্ক সম্ভাব্য স্বল্পতম "Kolmogorov জটিলতা সমাধানকারী", যে, লেখা একটি প্রোগ্রাম লিখতে হয় এল নিজেই যে একটি স্ট্রিং লাগে এস এবং আয় সবচেয়ে কম পি লেখা এল যে আউটপুট এস ।
এর নিখুঁত পন্থাটি হল সমস্ত দৈর্ঘ্য 1 টি প্রোগ্রাম, তারপরে সমস্ত দৈর্ঘ্য 2 টি প্রোগ্রাম, তারপরে সমস্ত দৈর্ঘ্য 3 টি প্রোগ্রাম এবং এরপরে, প্রতিটি চালানো এবং এস আউটপুট এমন কোনও প্রোগ্রাম পাওয়া না পাওয়া পর্যন্ত আউটপুট পরিমাপ করা । এই পদ্ধতির সাথে সমস্যাটি হ'ল এই প্রোগ্রামগুলির মধ্যে কয়েকটি কখনও চলমান বন্ধ করে দিতে পারে যার অর্থ হ'ল সমাধানকারী নিজে কখনও থামতে পারে না। এবং থামার সমস্যার কারণে যে প্রোগ্রামগুলি থামছে না তা এড়ানোর কোনও নিশ্চিত আগুনের উপায় নেই।
একটি সহজ, যদিও অপূর্ণ সমাধান হ'ল সম্ভাব্য পি এর প্রত্যেকের সম্পাদনের সময়সীমা নির্ধারণ করা । যে প্রোগ্রামগুলি যে সময়ের মধ্যে থামতে হবে না তা অতিক্রান্ত হতে পারে তবে সমাধানকারী অবশ্যই বন্ধ হয়ে যাবে (ধরে নিই যে এল-তে কোনও প্রোগ্রাম প্রকৃতপক্ষে সময়সীমার মধ্যে এস আউটপুট আনতে পারে)।
চ্যালেঞ্জ
আপনার সমাধানকারীকে একটি প্রোগ্রাম বা ফাংশন হিসাবে লিখুন যা তিনটি জিনিস গ্রহণ করে:
- স্ট্রিং এস ।
- একটি ধনাত্মক পূর্ণসংখ্যা টি যা সেকেন্ডে সময় সীমা বা কিছুটা ছোট সময়কাল (যেমন মিলি সেকেন্ড)।
- একটি স্ট্রিং একটি সম্ভাব্য জন্য ব্যবহার করতে অক্ষরের বর্ণমালার পি 's।
এবং সবচেয়ে সংক্ষিপ্ত পি আউটপুট করে যা কেবলমাত্র A তে অক্ষর রাখে , টি সময়ের চেয়ে কম সময়ের মধ্যে চলে এবং এসকে আউটপুট দেয় ।
এটি সাধারণ সিউডোকোড:
Function KolmogorovComplexitySolver(S, T, A):
Assign N to 0
Loop until function returns:
In any order, iterate over all strings of length N that only contain characters from *A*. Call the current string P:
Execute P, saving the output to O, stopping the execution if it takes longer than time T
If (P did not throw any errors) and (P did not timeout) and (O and S are identical):
Return P
Add 1 to N
বিস্তারিত
- আপনি ধরে নিতে পারেন যে সবসময় A এর অক্ষরগুলি থেকে পি তৈরি করা হবে যা সময় টিতে সঞ্চালিত হয় যা এসকে ছাড়িয়ে যায় ।
- আপনি ধরে নিতে পারেন যে সম্ভাব্য পি এর কার্যকর করার কোনও পার্শ্ব প্রতিক্রিয়া নেই যা সলভারকে সঠিকভাবে চালানো বা কাজ করা থেকে বিরত করে না (যেমন সলভারের বরাদ্দকৃত মেমরির সাথে গোলযোগ)।
- আপনি ধরে নিতে পারেন না যে সম্ভাব্য পি এর ত্রুটিমুক্ত। এক্সিকিউশন কলের আশেপাশে
try
/catch
ব্লক বা যা কিছু প্রযোজ্য তা অবশ্যই অন্তর্ভুক্ত করুন। - যদি একাধিক সংক্ষিপ্ত পি থাকে তবে যে কোনওটি যথেষ্ট। "স্বল্পতা" বাইটগুলি না করে অক্ষরে পরিমাপ করা হয়।
- সম্ভাব্য পি এর আউটপুট হ'ল স্টডআউট (বা আপনার ভাষার স্বাভাবিক আউটপুট অঞ্চল) এ মুদ্রিত। খালি স্ট্রিং একটি সম্ভাব্য পি ।
- মূলত আপনার সমাধানকারী অনুমতি দেবে একটি যে কোন অক্ষর ধারণ করে। একটি ছাপার যোগ্য ASCII অক্ষর প্লাস ট্যাব এবং নতুনলাইন ধারণ করতে সক্ষম হতে হবে ।
- ইনপুট ফাইল / স্টিডিন / কমান্ড লাইন / ফাংশন আরগগুলি থেকে আসতে পারে। আউটপুট স্টডআউট বা অনুরূপে চলে যায় বা আপনি কোনও ফাংশন লিখলে স্ট্রিং হিসাবে ফিরে আসতে পারে।
স্কোরিং
সবচেয়ে কম বাইটস সহ জমাটি জয়লাভ করে। টাইব্রেকার প্রথম পোস্ট জমা দেওয়া যায়।