জায়গায় জায়গায় আদেশের প্রয়োগের জটিলতা


27

আমার অবাক করে দিয়ে আমি এই সম্পর্কে কাগজপত্র সন্ধান করতে সক্ষম হই নি - সম্ভবত ভুল কীওয়ার্ডগুলি অনুসন্ধান করেছে।

সুতরাং, আমরা কিছু একটি অ্যারের, এবং একটি ফাংশন পেয়েছেন তার সূচকের উপর; একটি অনুগমন।ff

কীভাবে আমরা অনুযায়ী অ্যারের পুনর্বিন্যাস না মেমরি এবং পাসে যেমন রানটাইম সঙ্গে এবং যতটা সম্ভব?fO(1)O(n)

এই কাজটি সহজ হয়ে যাওয়ার পরে কি কোনও অতিরিক্ত শর্ত রয়েছে? যেমন যখন আমরা স্পষ্টভাবে জানেন একটি ফাংশন বিপরীত হয় ?gf

আমি জানি এমন একটি অ্যালগরিদম যা চক্র অনুসরণ করে এবং প্রতিটি সূচকে এটির চক্রের মধ্যে সবচেয়ে কম কিনা তা পরীক্ষা করার জন্য একটি চক্রকে ঘুরিয়ে দেয় তবে আবার এটির সবচেয়ে খারাপ পরিস্থিতি রান সময় রয়েছে, যদিও গড় হিসাবে এটি আরও ভাল আচরণ করে বলে মনে হচ্ছে ...O(n2)


একটি সহজ পর্যবেক্ষণ: যদি কেবল আইটেমগুলির অ্যারেই নয় তবে ফাংশন এফ সহ অ্যারেও লিখিত হয়, তবে ও (1) পূর্ণসংখ্যার রেজিস্টারগুলি (দৈর্ঘ্যের প্রত্যেকটি ( লগ এন) বিট) এবং প্রতিটি চক্র অনুসরণ করে একটি আইটেমের জন্য অতিরিক্ত স্থান। তবে এটি কাজ করে না যদি ফ ফাংশনটি কেবল পঠনযোগ্য স্টোরেজে দেওয়া হয় (বা চ কেবলমাত্র ওরাকল হিসাবে দেওয়া হয়), যা আমি মনে করি এই প্রশ্নের একটি অনুমিতি।
সোসোশি ইটো

23
ফিচ ইত্যাদি। 1995 : সময়, স্পেস। এটি কয়েকটি বিশেষ ক্ষেত্রেও আলোচনা করে। O(nlogn)O(logn)
জুক্কা সুমেলা

হ্যাঁ, আমি ধরে নিচ্ছি আমাদের কাছে ওরাকল হিসাবে রয়েছে।
jkff

3
@ জুলকাসুমেলা, আপনার এটি উত্তর দেওয়া উচিত। এছাড়াও, যে বিবেচনায় একটি অবাধ বিন্যাস, একটি সহজ এনট্রপি যুক্তি উৎপাদনের হয় স্থান এবং / অথবা সময়, তাই আমি বিস্মিত হতে তাহলে তোমার থেকে ভালো কাজ করতে পারে সময় এবং স্থান । ( এন লগ এন ) ( এন লগ এন )fO(nlogn)O(nlogn)
ব্যবহারকারী 834

উত্তর:


4

বিকল্প 0: পার্থিউটিং ইন প্লেস (1995) ফাইথ ই। ফিচ, জে। আয়ান মুনরো, প্যাট্রিসিও ভি। পোবলিট সময় স্পেস দ্বারা।( লগ 2 এন )O(nlogn)O(log2n)

বিকল্প 1: একটি সংক্ষিপ্ত তথ্য কাঠামোর সাথে আপনার অনুমতিটি সংকুচিত করে প্রতারণা করুন , মুনরো http://www.itu.dk/people/ssrao/icalp03-a.pdf দেখুন

বিকল্প 2: পারম সংক্ষেপে সঞ্চয় করতে একটি প্রাথমিক চক্রের পচন ব্যবহার করুন এবং প্রতারণার জন্য অতিরিক্ত স্থানটি ব্যবহার করুন http://oeis.org/A186202

বিকল্প 3: প্রতিটি চক্রের সবচেয়ে বড় ইনডেক্সের সূচকের উপর নজর রাখুন। প্রতিটি পুনরাবৃত্তির জন্য তার চক্রের সমস্ত কিছু একে একে সরিয়ে নিতে বৃহত্তম অদেখা সূচক ব্যবহার করুন। যদি কোনও দেখা সূচককে হিট করে তবে সেই সমস্ত কাজ পূর্বাবস্থায় ফিরে আসুন কারণ চক্রটি ইতিমধ্যে ম্যানিপুলেট করা হয়েছে। সময়, স্থান।( # চক্র লগ এন )O(n2)O(#cycleslogn)

বিকল্প 4: প্রতিটি চক্রের দ্বারা পরিচালিত বৃহত্তম সূচকের উপর নজর রাখুন, তবে কেবল সেগুলি পৃথক চক্রের দৈর্ঘ্যের ব্যাচে করুন। প্রতিটি পুনরাবৃত্তির জন্য এর চক্রের সমস্ত কিছু একে একে সরিয়ে নিতে বৃহত্তম অদেখা সূচক ব্যবহার করুন। যদি এটি দেখা সূচককে হিট করে তবে সেই সমস্ত কাজ পূর্বাবস্থায় ফিরে আসুন কারণ থাই চক্রটি ইতিমধ্যে হেরফের হয়েছে। সময়, স্পেস।হে ( ( # চক্র : _ সঙ্গে : _ একই : _ আকার ) * লগ এন )O(n2distinct_cycle_lengths)O((#cycles_with_same_size)logn)

বিকল্প 5: মুনরো দ্বারা একই কাগজ থেকে বিকল্প 0 হিসাবে, চক্রটি ঘোরান যদি সেই চক্রের বৃহত্তম সূচক হয়। সময় এবং স্পেস।পি ( i ) আমি ( এন 2 ) ( লগ এন )i=1..np(i)iO(n2)O(logn)


সংকোচন পদ্ধতিগুলি সাধারণভাবে স্থান সংরক্ষণ করতে পারে না: একটি অনুমান সংরক্ষণের সবচেয়ে খারাপ ক্ষেত্রে স্থানটি । 3, 4 এবং 5 টি সাধারণ সমাধান হিসাবে দেখা যায় না যেমন সমাধান ওপি ইতিমধ্যে জানে বা ফিশ, মুনরো এবং পোবেল্টের সমাধান। এবং এই সমাধানটি ইতিমধ্যে @ জুলকা দ্বারা নির্দেশিত হয়েছিলnlogn
সাশো

# 5 লগ (এন) ফ্যাক্টর দ্বারা # 0 এর চেয়ে কম স্থান ব্যবহার করে।
চাদ ব্রিউবেকার

1

যদি আপনি অনুক্রমের চক্র উপস্থাপনাটি ব্যবহার করেন তবে আপনার বর্তমানে অনুমতিপ্রাপ্ত আইটেমটি সংরক্ষণ করার জন্য 1 টি অতিরিক্ত অ্যারে উপাদান প্রয়োজন এবং আপনি চিকিত্সার মাধ্যমে আরও খারাপ O (N) ক্রিয়াকলাপ চালাতে পারেন।


2
জে কেএফএফ ইতিমধ্যে জানিয়েছে যে তিনি চক্র অনুসরণকারী অ্যালগরিদম জানেন, তাই তিনি স্পষ্টভাবে চান যে অনুমতিটি নিজেই একটি কালো বাক্স হিসাবে ধরা হবে (নিকটে)। তিনি যখন প্রশ্নের মধ্যে উল্লেখ করেছেন, একটি (প্রায়) ব্ল্যাক বক্স থেকে চক্রের উপস্থাপনায় রূপান্তর করা O (n ^ 2) সময় নিতে পারে।
জোশুয়া গ্রাচো

ব্ল্যাক বক্স পি (i) ঠিক আছে। আমি ফিরে না আসা পর্যন্ত আপনি কেবল চক্রটি ঘুরে দেখেন। সমস্যাটি হ'ল কোলমোগোরভ জটিলতার মধ্যে রয়েছে যেগুলি আপডেট করা আইটেমগুলির তালিকা সংরক্ষণ করার জন্য যাতে আপনি একাধিক বার চক্রটি না করেন। মুনরোও তার সীমাবদ্ধ। itu.dk/people/ssrao/icalp03-a.pdf
চাদ

-2

এন আইটেমের যে কোনও ক্রিয়াকলাপ এন -1 বা তার চেয়ে কম এক্সচেঞ্জ ব্যবহার করে অন্য যে কোনও ক্রিয়াকলাপে রূপান্তরিত হতে পারে। এই পদ্ধতির জন্য সবচেয়ে খারাপ ক্ষেত্রে আপনার ওরাকল, এফ () এ O (n ^ 2) কলগুলির প্রয়োজন হতে পারে। কমপক্ষে অবস্থান থেকে শুরু করুন। এক্স বর্তমানে যে অবস্থানটি আমরা অদলবদল করছি তা হতে দিন।

যদি F (x)> = x হয় তবে এক্স এবং এফ (এক্স) পদের অবস্থানগুলি অদলবদল করুন। অন্যথায়, আমাদের অবশ্যই F (x) পজিশনে থাকা আইটেমটি তালিকায় থাকা উচিত find আমরা নিম্নলিখিত পুনরাবৃত্তির সাহায্যে এটি করতে পারি। যাক y = এফ (এক্স)। Y> = x: y = F (y) অবধি করুন: শেষ করুন। এখন এক্স এবং ওয়াই পজিশনের বিনিময় করুন।


3
ওপি ইতিমধ্যে জানিয়েছে যে সময়ে এটি কীভাবে করা যায় সে জানে । O(n2)
জুক্কা সুমেলা

দুঃখিত। আমি এই গ্রুপে নতুন। সরলতার কারণে আমি এই পদ্ধতিটি পছন্দ করি। আমি মাঝে মাঝে দক্ষতার চেয়ে দ্রুত সরলতা খুঁজে পাই। আমি অন্য একটি পদ্ধতি জানি যার জন্য O (n) পদক্ষেপ প্রয়োজন, তবে হে (nlogn) স্পেস।
রাসেল ইস্টারলি

1
রাসেল, এমনকি ও (এন লগ এন) স্থান বরাদ্দকরণ এবং শূন্য করার জন্য ইতিমধ্যে ও (এন লগ এন) রয়েছে, আপনি কি অন্য দিক দিয়ে বোঝাতে চেয়েছিলেন?
jkff

আপনার কাছে সত্যিই বরাদ্দ এবং শূন্য স্থান নেই। প্রাথমিক ধারণাটি যখন এফ (এক্স)> এক্স হয় তখন আমাদের মনে রাখা দরকার যে আমরা আইটেমটি পজিশনে রেখেছি। সত্যিই বড় এন এর জন্য, আমি একটি ডাটাবেস ব্যবহার করব এবং আইটেম এক্স কোথায় স্থানান্তরিত হবে তার একটি রেকর্ড রাখব। এক্স এর চূড়ান্ত স্থানে গেলে রেকর্ডটি মুছতে পারে।
রাসেল ইস্টারলি

1
তবে আপনি কেন তখন বলছেন যে এটির জন্য ও (এন লগ এন) স্থান প্রয়োজন?
jkff

-2

এই পদ্ধতিতে F এর বিপরীতমুখী ব্যবহার করে এবং স্টোরেজের n বিটগুলির প্রয়োজন। X যদি মূল অ্যারেতে কোনও আইটেমের অবস্থান হয় তবে সাজানো অ্যারেতে জি (এক্স) আইটেমের অবস্থান হতে দিন। বি একটি এন বিট অ্যারে হতে দিন। বি এর সমস্ত এন বিট সেট করুন 0

X = 1 থেকে n-1 এর জন্য: IF B (x) == 0 TH: y = G (x): অবধি x x == y: অবস্থানগুলি এক্স এবং y: বি (y) = 1: y = G ( y): লুপ: সমাপ্তি: পরের এক্স

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


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