মৌলিক স্বতন্ত্রতা ডিটারমিনিস্টিক লিনিয়ার সময়ে সমাধান করা যায়?


9

নিম্নলিখিত সমস্যা বিবেচনা করুন:

ইনপুট : সংখ্যার তালিকাভুক্ত করেX,Y

লক্ষ্য : উভয় তালিকায় একটি পূর্ণসংখ্যা রয়েছে কিনা তা নির্ধারণ করুন ।x

ধরুন উভয় তালিকাগুলি আকারের । এই সমস্যাটির জন্য কোনও ডিস্ট্রিমেন্টিক, লিনিয়ার-টাইম অ্যালগরিদম কি আছে? অন্য কথায়, এলোমেলোভাবে ব্যবহার না করেই আপনি সময়ে নির্বিচারে এই সমস্যার সমাধান করতে পারেন ?X,YnO(n)

দুর্ভাগ্যক্রমে, আপনি ধরে নিতে পারবেন না যে তালিকা উপাদানগুলি সমস্ত ছোট are


আমি এটিকে র্যান্ডমাইজড অ্যালগরিদম ব্যবহার করে প্রত্যাশিত সময়ে কীভাবে সমাধান করবেন তা দেখতে পাচ্ছি : এলোমেলোভাবে একটি 2-ইউনিভার্সাল হ্যাশ ফাংশন , এর উপাদানগুলিকে একটি হ্যাশটেবলে সংরক্ষণ করুন ( হ্যাশ ফাংশন হিসাবে ব্যবহার করে) এবং তারপরে সন্ধান করুন প্রতিটি উপাদান এটি হ্যাশটেবলে রয়েছে কিনা তা দেখতে। প্রত্যাশিত চলমান সময়টি । যাইহোক, চলমান সময়ের সাথে কীভাবে একটি ডিস্ট্রিমেন্টিক অ্যালগরিদম খুঁজে পাবেন তা আমি দেখতে পাই না । আপনি যদি এটিকে ড্যারানডমাইজ করার চেষ্টা করেন এবং একটি নির্দিষ্ট নির্দিষ্ট হ্যাশ ফাংশনটি ঠিক করেন, তবে এমন একটি খারাপ অবস্থার ইনপুট উপস্থিত থাকবে যা এই পদ্ধতিটি ta থেটাতে চালিত করেO(n)hXhYO(n)O(n)Θ(n2)সময়। আমি খুঁজে পেতে পারি সেরা নির্দোষী অ্যালগরিদম মান মান বাছাই জড়িত, কিন্তু যে লিনিয়ার সময় হবে না। আমরা কি লিনিয়ার চলমান সময় অর্জন করতে পারি?

এছাড়াও, আমি দেখতে চাই যে লিনিয়ার সময়ে এটি কীভাবে সমাধান করা যায় যদি আপনি ধরে নেন যে তালিকার সমস্ত উপাদানই পরিসীমাতে পূর্ণসংখ্যা (মূলত, গণনা অনুসারে কাজ করুন) - তবে আমি সাধারণভাবে যা ঘটে তাতে আগ্রহী কেস যখন আমরা ধরে নিতে পারি না।[1,n]

যদি উত্তরটি গণনার মডেলটির উপর নির্ভর করে, র‌্যাম মডেলটি মনে পড়বে তবে আমি গণনার কোনও যুক্তিসঙ্গত মডেলের ফলাফলগুলিতে আগ্রহী হব। আমি উপাদান স্বতন্ত্রতার জন্য সিদ্ধান্ত গাছের অ্যালগরিদমের নিম্ন সীমানা সম্পর্কে অবগত রয়েছি , তবে এটি চূড়ান্ত নয়, কারণ মাঝে মাঝে সত্ত্বেও আমরা লিনিয়ার-টাইম অ্যালগরিদমগুলি দেখতে পারি সিদ্ধান্ত-গাছের মডেলটিতে আবদ্ধ।Ω(nlogn) Ω(nlogn)


সংঘর্ষগুলি হ্যান্ডেল করার জন্য হ্যাশ টেবিলগুলি ও (এন লগ এন)।
থরবজর্ন রাভন অ্যান্ডারসন

1
@ থরবজর্ন রাভানএন্ডারসন, আপনি কোথা থেকে এটি পাচ্ছেন তা আমি দেখছি না। 2-সর্বজনীন হ্যাশ ফাংশন এবং উপযুক্ত আকারের হ্যাশ টেবিল ব্যবহার করে নিশ্চিত করে যে হ্যাশের সংঘর্ষের সংখ্যা ন্যূনতম (উচ্চ সম্ভাবনার সাথে), সুতরাং আমি বিশ্বাস করি চলমান সময় অর্জনযোগ্য। আমি নিশ্চিত নই আপনি কোথা থেকে পেয়েছেন; যদি আপনি বিশেষ কিছু না করেন (যেমন 2-সার্বজনীন হ্যাশিং ব্যবহার করুন) তবে সংঘর্ষের কারণে সবচেয়ে খারাপ পরিস্থিতি হ'ল । O(n)O(nlgn)O(n2)
ডিডাব্লিউ

শয়তান বিস্তারিতভাবে এখানে রয়েছে, এখানে একটি "উপযুক্ত আকারের হ্যাশ-টেবিল" রয়েছে। যদি আপনি সংঘর্ষ না চান তবে এটি বেশ বড় হতে পারে। একটি তালিকা সহ হ্যাশ ফাংশন সংঘর্ষগুলি পরিচালনা করার জন্য টিপিক্যাল এন-লগ-এন (যদি আমি সঠিকভাবে স্মরণ করি)।
থরবজর্ন রাভন অ্যান্ডারসন

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

উত্তর:


1

এক্স এবং ওয়াইয়ের প্রতিটি সম্ভাব্য মানের জন্য আপনার কাছে যদি কিছুটা মেমরি থাকে তবে আপনি লিনিয়ার সময়ে সমস্যার সমাধান করতে পারেন X এটি এক্স এবং ওয়াইয়ের ক্রমবর্ধনের কোনও বিধিনিষেধ আরোপ করে না does

  1. প্রাথমিকভাবে সমস্ত বিট আনসেট করা হয়।
  2. সংশ্লিষ্ট বিট সেট এক্স ওভার ইটারেট।
  3. সংশ্লিষ্ট বিট উপরে সেট করা হয়েছে কিনা তা ওভার ওয়াই চেক করে আইট্রেট করুন।

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

আসুন এর পরে নামকরণ করুন "উপযুক্ত আকারের বিট-অ্যারে"। বিট-দৈর্ঘ্যের মধ্যে লিনিয়ার লগ-এন এর সমতুল্য। আপনি ইনপুট ডেটাতে কোনও সীমাবদ্ধতা বা পূর্বশর্ত ছাড়াই লগ-এন পারফরম্যান্স পাওয়ার বিষয়ে গুরুতর?
থরবজর্ন রাভন অ্যান্ডারসন

2
@ থরবজরনআরভানএন্ডারসেন স্থানটি বিট দৈর্ঘ্যের ক্ষেত্রে তাত্পর্যপূর্ণ (আপনার সমস্ত সম্ভাব্য মান থেকে মানচিত্রের প্রয়োজন), এবং সময়টি মোট তালিকার আকারে রৈখিক (উভয় তালিকার সমস্ত মান দেখতে আপনাকে প্রয়োজন)। বিট-দৈর্ঘ্যে কোনও কিছুই রৈখিক নয়।
wchargin

0

যেহেতু আপনি বলছেন যে দুটি তালিকার মধ্যে পূর্ণসংখ্যা রয়েছে তাই আমি অনুমান করি যে আমরা দুটি তালিকার উপরে একটি রেডিক্স বাছাই করতে পারি এবং তারপরে সমতুল্য আইটেমগুলির জন্য দুটি তালিকার তুলনা করে একটি রৈখিক অনুসন্ধান করতে পারি।


4
এটি কেবল তখনই কাজ করে যদি সংখ্যার মাত্রার উপর একটি আবদ্ধ থাকে।
লুক ম্যাথিসন

তবে আমি ভেবেছিলাম যে উচ্চ মাত্রা কেবলমাত্র গণনা বাছাইয়ের জন্য সমস্যা হবে এবং রেডিক্স সাজানোর জন্য আমরা সেই সমস্যাটি সমাধান করার জন্য একটি উচ্চ পর্যায়ে র‌্যাডিক্স নির্বাচন করতে পারি ... অনুগ্রহ করে আমাকে জানাতে হবে আমি এখানে কী অনুপস্থিত
আনিরুদ

যদি সংখ্যাগুলির মধ্যে একটি 2 ^ (2 ^ 128) হয়?
মিনিবিল

@ অনিরুধ তবে তারপরে আপনার আলাদা ইনপুট আকারের জন্য আলাদা আলাদা অ্যালগরিদম রয়েছে - প্রতিবার যখন আপনি র‌্যাডিক্স বাড়ান তখন আপনার একটি বড় বর্ণমালা দরকার হয়, আপনি কেবল বর্ণমালার আকার বাড়ানোর মাত্রা বাড়ানোর জটিলতা রফতানি করছেন। অবশ্যই এটি তাত্ত্বিক ক্ষেত্রেও সম্ভব, আমি মনে করি না অনেকগুলি হার্ডওয়্যার আপনাকে কোন বেসটি সংখ্যার প্রতিনিধিত্ব করে তা পরিবর্তন করতে দেয় বলে মনে হয় না (আমরা ইনপুট এবং আউটপুট প্রান্তে ভান করতে পারি তবে এটি বেশিরভাগ ক্ষেত্রে) বাইনারি পর্যন্ত ফোটে )।
লুক ম্যাথিসন

0

কেন প্রতিটি তালিকার পূর্ণসংখ্যাগুলি একটি সরল বিটওয়াইজ ট্রাইতে প্রবেশ করান না? এটি কি সর্বোত্তম হবে না, এই অর্থে যে এটিO(nm¯), কোথায় m¯পূর্ণসংখ্যার গড় বিট আকার; বিশেষত, আপনি কীভাবে আরও ভাল করতে পারবেন তা আমি দেখতে পাচ্ছি না, কেবলমাত্র দুটি তালিকা পড়তে * এই পরিমাণ সময় লাগবে।


আপনার নোট জন্য ধন্যবাদ। প্রশ্নের শেষ অনুচ্ছেদটি দেখুন, যা এই বিষয়টিকে সম্বোধন করে। র‌্যাম মডেলে আপনি দুটি তালিকা পড়তে পারেনO(n) সময় - এটি লাগে না O(n\overbarm)সময়। সুতরাং সেখানেই গণনার মডেল এটির মধ্যে আসে - এই উত্তরটি আসলে প্রমাণ করে না যে নির্জনবাদী রৈখিক সময় অসম্ভব।
ডিডাব্লিউ

@ ডিডাব্লু র‌্যাম মডেলটিতে একটি শব্দের আকার রয়েছে w যা একটি ধ্রুবক এবং এটি সীমাবদ্ধ m এবং এইভাবে m¯যার একটি রানটাইমের ফলাফল results O(n), বা আমি ভুল করছি?
রিয়েলজ স্লাও

হুম সম্ভবত বিবেচনা wধ্রুবক একটি ভুল।
রিয়েলজ স্লাও

(w ধ্রুবক হিসাবে বিবেচিত হয় না, তবে নির্ভর করে n: আপনি এটি যে কোনও ধ্রুবক একাধিক পেতে পারেন m প্রতিনিধিত্ব করা প্রয়োজন কি n (উপস্থাপনের জন্য যথেষ্ট প্রশস্ত nm), কেবল নির্বিচারে বড় নয় ))
গ্রেইবার্ড

-1

এটি এলিমেট স্বতন্ত্রতা সমস্যার মতো, যেখানে আপনার n সংখ্যা রয়েছে এবং আপনি নির্ধারণ করতে চান যে সমস্ত উপাদান পৃথক কিনা। সমস্যাটির একটি বীজগণিত গণনা গাছের নীচের সীমানা রয়েছেO(nlogn)


1
লিনিয়ার নিয়ন্ত্রক সময় সম্পর্কে প্রশ্নটি বেশ স্পষ্ট, লগ-রৈখিক নয়। এছাড়াও (কোন মান অনুসারে নয়) সেটটিতে কেবল অনন্য উপাদান রয়েছে কিনা তা নির্ধারণ করতে আপনি লগলাইনারের চেয়ে দ্রুত করতে পারেন।
এভিল

1
তুমি বোঝাতে চাচ্ছ Ω(nlogn)? যদি তাই হয় তবে এটি পরামর্শ দিতে পারে যে প্রশ্নটিতে সমস্যাটি লিনিয়ার সময়ে সমাধান করা যায় না। তবে কেবল লগ-লিনিয়ার সময় কোনও সম্পর্কিত সমস্যার সমাধান করা সম্ভব বলে এই প্রশ্নের সত্যই উত্তর দেয় না। (সিসি @ এভিলজেএস)
ডেভিড রিচারবি

1
আপনার নোট জন্য ধন্যবাদ। আপনি যদি প্রশ্নের শেষ বাক্যটি মিস করেন তবে আমি অবাক হই। আমি এখানে এটি পুনরাবৃত্তি করব: "আমি অবগতΩ(nlogn) উপাদান স্বতন্ত্রতার জন্য সিদ্ধান্ত গাছ অ্যালগরিদমের জন্য নিম্ন সীমানা , তবে এটি সুনির্দিষ্ট নয়, কারণ কখনও কখনও আমরা লিনিয়ার-টাইম অ্যালগরিদমগুলি দেখতে পাই এমনকি যখনই সেখানে থাকেΩ(nlogn)সিদ্ধান্ত গাছের মডেলটিতে আবদ্ধ। "অন্য কথায়, এই উত্তরটি প্রশ্নের উত্তর দেয় না; এটি কেবল এমন কিছু পুনরাবৃত্তি করে যা আমি ইতিমধ্যে প্রশ্নে আগেই বলেছিলাম যা আমি অবগত ছিলাম, তবে যা প্রশ্নটির সমাধান করে না
DW

এটি করা যেতে পারে O(nloglogn) সময় দেওয়া থেকে ভাল O(nlogn)তাই আমি নিশ্চিত যে এটি ছিল না Ω(nlogn), কিন্তু এটি ডিডাব্লু প্রশ্নটি সমাধান করে না। সুতরাং এখানে শুধু মন্তব্য।
এভিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.