লিনিয়ার সময় ইন প্লেস রিফল শফলে অ্যালগরিদম


15

স্থানটিতে একটি রৈখিক সময় কি রিফাল শিফেল অ্যালগরিদম আছে? এটি হল অ্যালগরিদম যা কিছু বিশেষত ডেক্সট্রস হাতগুলি সম্পাদন করতে সক্ষম হয়: সমান আকারের ইনপুট অ্যারেটি সমানভাবে ভাগ করে নেওয়া হয় এবং তারপরে দুটি অংশের উপাদানগুলি ইন্টারলিয়েভ করে।

ম্যাথওয়ার্ল্ডের রাইফেল শফলে একটি সংক্ষিপ্ত পৃষ্ঠা রয়েছে । বিশেষত, আমি আউট-সাফাল বিভিন্নতে আগ্রহী যা ইনপুট অ্যারে 1 2 3 4 5 6 কে 1 4 2 5 3 তে রূপান্তর করে 6.. নোট করুন যে তাদের সংজ্ঞা অনুসারে, ইনপুট দৈর্ঘ্য 2n

লিনিয়ার সময়ে এটি সম্পাদন করা সোজা ward যদি আমরা আকারের n বা আরও কিছু সহজ কাজ পাই । প্রথমে অ্যারেতে সর্বশেষ n উপাদানগুলি অনুলিপি করুন । তারপর, অভিমানী 0 ভিত্তিক ইন্ডেক্স, প্রথম কপি n উপাদানের সূচকের থেকে [0,1,2,...,n1] থেকে [0,2,4,...,2n2] । তারপরে এন কপি করুনnইনপুট অ্যারের দ্বিতীয় অ্যারের ফিরে থেকে উপাদানগুলি সূচকের ম্যাপিং, [0,1,2,...,n1] থেকে [1,3,5,...,2n1] । (আমরা তার চেয়ে কিছুটা কম কাজ করতে পারি, কারণ ইনপুটটিতে প্রথম এবং শেষ উপাদানগুলি সরে না))

এই জায়গায় করার চেষ্টা করার একটি উপায় অন্তর্ভুক্ত করে চক্রের বিভাজনের ক্ষয় এবং তারপরে প্রতিটি চক্র অনুসারে উপাদানগুলিকে পুনর্বিন্যাসের সাথে জড়িত। আবার 0-ভিত্তিক সূচকে ধরে নেওয়া, 6 উপাদান ক্ষেত্রে জড়িত ক্রমটি হ'ল

σ=(012345024135)=(0)(5)(1243).

যেমনটি প্রত্যাশিত, প্রথম এবং শেষ উপাদানগুলি নির্দিষ্ট পয়েন্ট এবং আমরা মধ্য 4 টি উপাদানকে অনুমতি দিলে আমরা প্রত্যাশিত ফলাফলটি পাই।

দুর্ভাগ্যক্রমে, অনুমানের গণিত সম্পর্কে আমার বোঝা (এবং তাদের ) মূলত উইকিপিডিয়া ভিত্তিক, এবং আমি জানি না যে এটি লিনিয়ার সময়ে করা যায় কিনা। সম্ভবত এই বদলে যাওয়ার সাথে যুক্ত ক্রমগুলি দ্রুত পচে যেতে পারে? এছাড়াও, আমাদের এমনকি সম্পূর্ণ পচনের প্রয়োজন নেই। বিভেদ চক্রগুলির প্রতিটি একক উপাদান নির্ধারণই যথেষ্ট হবে, যেহেতু আমরা চক্রটিকে এর একটি উপাদান থেকে পুনর্গঠন করতে পারি। সম্ভবত একটি সম্পূর্ণ ভিন্ন পদ্ধতির প্রয়োজন।LATEX

সম্পর্কিত গণিতে ভাল সংস্থানগুলি একটি অ্যালগরিদমের মতোই মূল্যবান। ধন্যবাদ!


একটি সময় সমাধান রয়েছে ( ( 1 ) অতিরিক্ত স্থান সহ)। আমি কোনও লিনিয়ার-সময় সমাধান জানি না। O(nlgn)O(1)
রাদু গ্রেগোর

4
এটি সিএস স্ট্যাকেক্সচেঞ্জের জন্য আরও উপযুক্ত। অ-ইউনিফর্ম মডেলে, বার সর্বদা সম্ভব। এই ক্ষেত্রে এটি এমনকি অভিন্নভাবে হওয়া উচিত। O(n)
যুবাল ফিল্মাস

1
@ রাদু এই প্রশ্নের অনুরূপ , এই সমস্যাটির সম্ভবত কেবলমাত্র অতিরিক্ত স্থান ব্যবহারের সমাধান নেই , তবে ( লগ এন ) অতিরিক্ত স্থান ব্যবহার করে। O(1)O(logn)
টাইসন উইলিয়ামস

2
আমি আমার মতামত (এবং ভোট বন্ধ) ফিরে! (যদিও সাহিত্যে প্রশ্নের উত্তর দেওয়া হয়েছে))
যুবাল ফিল্মাস

1
আমি এই প্রশ্নটি গত সপ্তাহে একজন সিএস শিক্ষার্থীর কাছ থেকে শুনেছিলাম, যিনি একটি চাকরীর সাক্ষাত্কারে শুনেছিলেন।
जेফি

উত্তর:


12

সমস্যাটি আশ্চর্যের সাথে অ-তুচ্ছ। এখানে এলিস এবং মার্কভের দুর্দান্ত সমাধান রয়েছে, ইন-সিটু, পারফেক্ট শ্যাফলের মাধ্যমে স্থিতিশীলভাবে মার্জ করা (বিভাগ 7)। এলিস, ক্রাহান এবং ফ্যান, পারফেক্ট শফল পারমুয়েশনে চক্রের গণনা আরও স্মৃতির ব্যয়ে "চক্রের নেতা" নির্বাচন করতে সফল হয়। এছাড়াও সম্পর্কিত হ'ল ফিচ, মুনরো এবং পোবলিটের চমৎকার কাগজ, পারমুটিং ইন প্লেস , যা ওরাকল মডেলের জন্য একটি সাধারণ সময় আলগোরিদিম দেয়। যদি কেবল অনুমানের জন্য কোনও ওরাকল উপলব্ধ থাকে তবে অ্যালগরিদমের জন্য লোগারিদমিক স্থান প্রয়োজন; বিপরীতটির জন্য যদি আমাদের কাছে ওরাকল থাকে তবে এর জন্য ধ্রুব স্থান প্রয়োজন।O(nlogn)

এখন এলিস এবং মার্কভের সমাধানের জন্য। প্রথম, ধরুন । তারপরে অর্ডার এন এর নিখুঁত সাফল্য গণনা করা x এবং y অর্ডারগুলির নিখুঁত সাফল্যের গণনা কমিয়ে দেয় , তার আগে একটি ঘূর্ণন ঘটে । উদাহরণস্বরূপ একটি প্রমাণ এখানে রয়েছে ( n = 5 , x = 3 , y = 2 ): 012 345 67 89 012 567 34 89 051627 3849n=x+ynxyn=5x=3y=2

012345678901256734890516273849

এলিস এবং মার্কভ স্থির স্থান এবং রৈখিক সময় ব্যবহার করে, যখন নিখুঁত স্থানান্তরিত করার জন্য একটি সহজ উপায় খুঁজে পেয়েছিলেন । এটি ব্যবহার করে, আমরা নির্বিচারে এন এর জন্য নিখুঁত সাফল্যের গণনা করার জন্য একটি অ্যালগরিদম পাই । প্রথমত, লেখার এন = 2 0 + + + + 2 W এর বাইনারি এনকোডিং ব্যবহার এন , এবং দিন এন আমি = 2 আমি + + + + 2 W । মাঝের এন 0 বিট ঘোরান , ডান হাত 2 কে সাফ করুনn=2knn=2k0++2kwnni=2ki++2kwn0 বিট। ডানহাতে2 কে 0 বিটউপেক্ষা করেমাঝেরএন1বিটটিঘোরানএবং ডান হাতের2 কে 1 বিটগুলি সাফ করুন। ইত্যাদি। নোট করুন যে প্রথম কয়েকটি উপাদান চক্র নেতা হিসাবে ফাংশনটি ঘোরানো থেকে আবর্তন সহজ easy আবর্তনের মোট জটিলতা হয়হে(0+ ++ +W)=হে(), যেহেতুএন টি + + 1 <এনটি/2। ভেতরের shuffles মোট জটিলতা হয়হে(2k02k0n12k1O(n0++nw)=O(n)nt+1<nt/2O(2k0++2kw)=O(n)

যখন কীভাবে নিখুঁত সাফল্যের গণনা করা যায় তা দেখানো বাকি রয়েছে । প্রকৃতপক্ষে, আমরা চক্রের নেতাদের সনাক্ত করতে সক্ষম হব, গলায় হারগুলিতে ক্লাসিকাল কাজ অনুসরণ করে (ফ্রেড্রিকসেন এবং মাইওরানা, কে বর্ণের জপমালা এবং কে- কে ডি ডি ব্রুইজ সিকোয়েন্সস ; ফ্রেড্রিকসেন এবং ক্যাসলার, দুটি রঙে পুঁতির গলার জাল তৈরির জন্য একটি অ্যালগরিদম )।n=2kkk

n=8

000001010011100101110111000100001101010110011111
k0ka1akikik=di+r(a1ai11)da1arr=0

n=16

0000,0001,0010,0011,0101,0110,0111,1111.

চক্র নেতাদের হাইলাইট করা হয়।


3
2323k30,,3k

যদিও আমি মনে করি জৈনের কাগজটি কিছুটা সহজবোধ্য, তবে আমি আগের কাগজটি, পাশাপাশি আগের ভোটকেও সবচেয়ে বেশি ভোট দিয়ে পছন্দ করছি।
জনি 3

6

এটি cs.stackexchange.com এ একটি বীজ প্রশ্ন ছিল এবং একটি উত্তর এখানে রয়েছে: /cs/332/in-place-algorithm- for-interleaving-an-array/400#400

এটি কাগজের ব্যাখ্যা: http://arxiv.org/abs/0805.1598

k2k32k=2

নোট করুন যে উত্তরটি এর অনুক্রমের সাথে আলোচনা করেj2jmod2n+1


হা! আমি আলোচনায় অংশ নিলেও, আমি সেই প্রশ্নটি সম্পর্কে সম্পূর্ণ ভুলে গেছি। এর অর্থ এই সময়টি কীভাবে কার্যকর তা আমি বুঝতে পারি নি।
রাদু গ্রেগোর

2

মিএন=মি-2আমি(আমি)=2আমিআমিএন/2(আমি)=2(আমিগেলিক ভাষারএন/2)-1আমি>এন/2

হে(1)হে(লগএন)


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