জো দ্বারা লিঙ্ক করা কাগজ থেকে অ্যালগোরিদমের উপর বিস্তারিত যা উত্তর এখানে: http://arxiv.org/abs/0805.1598
প্রথমে একটি আলগোরিদিম বিবেচনা করি যা বিভাজন এবং বিজয় ব্যবহার করে।Θ(nlogn)
1) ভাগ এবং বিজয়
আমাদের দেওয়া হয়
a1,a2,…,b1,b2,…bn
এখন বিভাজন এবং বিজয় ব্যবহার করতে, কিছু , আমরা অ্যারেটি পাওয়ার চেষ্টা করিm=Θ(n)
[a1,a2,…,am,b1,b2,…,bm],[am+1,…,an,bm+1,…bn]
এবং পুনরাবৃত্তি।
লক্ষ্য করুন যে একটি চক্রীয় স্থানান্তরb1,b2,…bm,am+1,…an
am+1,…an,b1,…bm
স্থান দ্বারা ।m
এটি একটি ক্লাসিক এবং তিনটি বিপরীতমুখী এবং সময়ে স্থানে করা যায় ।O(n)
সুতরাং বিভাজন এবং বিজয় আপনাকে অনুরূপ পুনরাবৃত্তি সহ একটি অ্যালগরিদম দেয় ।Θ(nlogn)T(n)=2T(n/2)+Θ(n)
2) আবর্তন চক্র
এখন, সমস্যার আরেকটি উপায় হ'ল বিযুক্তি চক্রের সেট হিসাবে অনুচ্ছেদটিকে বিবেচনা করুন।
অনুমানটি দেওয়া হয় (অনুমান থেকে শুরু করে )1
j↦2jmod2n+1
যদি আমরা কোনওভাবে ধ্রুবক অতিরিক্ত স্থান ব্যবহার করে চক্রগুলি ঠিক কী তা জানতাম, তবে আমরা একটি উপাদান বাছাই করে অনুভূতিটি উপলব্ধি করতে পারি , নির্ধারণ করতে পারি যে সেই উপাদানটি কোথায় যায় (উপরের সূত্রটি ব্যবহার করে), উপাদানটিকে অস্থায়ী স্থানে স্থাপন করে, রাখুন উপাদান যে লক্ষ্য অবস্থান মধ্যে এবং চক্র বরাবর অবিরত। একবার যখন আমরা একটি চক্র সম্পন্ন করি তখন আমরা পরবর্তী চক্রের একটি উপাদানের দিকে চলে যাই এবং সেই চক্রটি অনুসরণ করি এবং আরও অনেক কিছু।AA
এটি আমাদেরকে সময় অ্যালগরিদম দেবে, তবে এটি ধরে নেওয়া হয়েছে যে আমরা "কোনওভাবে সঠিক চক্রগুলি কী তা জানতাম" এবং book space স্থান সীমাবদ্ধতার মধ্যে এই বই-রাখার চেষ্টা করছিলাম এই সমস্যাটি কি কঠিন করে তোলে।O(n)O(1)
এই যেখানে কাগজ সংখ্যা তত্ত্ব ব্যবহার করে।
এটি দেখানো যেতে পারে যে, , অবস্থান , positions এ থাকা উপাদানগুলি বিভিন্ন চক্রে থাকে এবং প্রতিটি চক্রের একটি উপাদান থাকে অবস্থানে ।2n+1=3k13,32,…,3k−13m,m≥0
এটি জেনারেটর তা ব্যবহার করে ।2(Z/3k)∗
সুতরাং , চক্রের অনুসরণ অনুসরণ করে তখন আমাদের একটি সময় অ্যালগরিদম দেয়, প্রতিটি চক্র হিসাবে, আমরা ঠিক জানি কোথায় শুরু করতে হবে: ক্ষমতা ( সহ ) (সেগুলি স্পেসে গণনা করা যায় ।2n+1=3kO(n)31O(1)
3) ফাইনাল অ্যালগরিদম
এখন আমরা উপরের দুটিটি একত্রিত করি: ভাগ করুন এবং বিজয়ী করুন + পেরমুটেশন চক্র।
আমরা একটি ডিভাইড এবং বশীভূত কিন্তু বাছাই যাতে একটি শক্তি এবং ।m2m+13m=Θ(n)
সুতরাং উভয় "অর্ধ" এর পুনরাবৃত্তি করার পরিবর্তে, আমরা কেবলমাত্র একটিতে পুনরাবৃত্তি করি এবং ta অতিরিক্ত কাজ করি।Θ(n)
এটি আমাদের পুনরাবৃত্তি (কিছুটা ) এবং এটি আমাদেরকে একটি সময়, স্পেস অ্যালগরিদম!T(n)=T(cn)+Θ(n)0<c<1O(n)O(1)