একটি সাবসেট লুকআপ অ্যালগরিদম


9

ধরুন আমি একটি তালিকা আছে এর সাব-সেট নির্বাচন এর । প্রয়োজনে এই তালিকায় প্রিপ্রোসেসিং করতে পারি। এই প্রাক-প্রক্রিয়াকরণ পর, আমি অন্য সেট দিয়ে উপস্থাপন করছি । আমি সাথে কোনও সেট সনাক্ত করতে চাই ।X{1,...,n}A{1,...,n}BXBA

সুস্পষ্ট অ্যালগরিদম (যে কোন প্রাক-প্রক্রিয়াকরণ ছাড়া) লাগে সময় আপনি কেবল পরীক্ষা - প্রতিটি বিরুদ্ধে আলাদাভাবে। এর চেয়ে ভাল কিছু আছে কি?O(n|X|)ABX

যদি এটি সহায়তা করে তবে আপনি ধরে নিতে পারেন যে কোনও জন্য এর মোট মিলের সংখ্যা মতো কিছু দ্বারা আবদ্ধ ।ABXO(1)

উত্তর:


3

এটি কোনও উত্তর নয়। এটি একটি সাধারণ তবে দীর্ঘ পর্যবেক্ষণ। আমি আশা করি এটি কার্যকর হবে।

আপনার সমস্যা সিদ্ধান্ত সংস্করণ: কি একটি উপসেট ধারণ ?XA

এই সমস্যাটি ভেরিয়েবলগুলির একজাতীয় বুলিয়ান ফাংশনগুলি মূল্যায়নের সমস্যার সাথে সম্পর্কিত । একটি উপসেট একটি সমতূল্য তাই পরিবার, -bitstring একটি বুলিয়ান ফাংশন সমতূল্য এর ভেরিয়েবল। প্রদত্ত একটি ফাংশন , এক অন্তত একঘেয়েমি ফাংশন যা চেয়ে বড় নয় বর্ণনা করতে পারেন , যথা । এরপরে মূল সমস্যাটি মূল্যায়নের ক্ষেত্রে হ্রাস করা হয় । বিপরীতভাবে, একরঙা বুলিয়ান ফাংশনটি মূল্যায়নের সমস্যাটিকে মূল সমস্যার মধ্যে হ্রাস করা যেতে পারে, হয় নির্লজ্জভাবে গ্রহণ করে eithern{1,,n}nXfnffg(y)=(xy,f(x))g(A)f=gঅথবা এমন একটি নির্বাচন করে যা that ছোট করে।fX

অনুশীলনে বিডিডিগুলি ভাল কাজ করার ঝোঁক থাকে। সুতরাং একটি সম্ভাব্য পন্থা হ'ল জন্য বিডিডি তৈরি করা , এ থেকে জন্য বিডিডি নেওয়া এবং তারপরে মূল্যায়ন করা । জন্য বিডিডি-র গড় আকার অবশ্যই হতে হবে , কারণ এখানে অনেক একঘেয়ে বুলিয়ান ফাংশন রয়েছে । সুতরাং, তত্ত্বগতভাবে এটি একটি খারাপ সমাধান।fgggΩ((nn/2))

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

সম্পূর্ণতার জন্য, জন্য BDD থেকে জন্য বিডিডি গণনার জন্য একটি সাধারণ অ্যালগরিদম নিম্নলিখিত is এখানে or হল বিডিডিগুলিতে স্ট্যান্ডার্ড বা অপারেশন।gf

m(x?f1:f0)=x?(m(f0)m(f1)):m(f0)

2
এটি কি আরও কম-বেশি each এর প্রতিটি উপসেটের জন্য উত্তরকে প্রাক্কলক করার সমতুল্য নয়, আকারের বাইনারি গাছের সমস্ত ফলাফলের ক্যাচ করে , এবং তারপরে ডানদিকে খোঁজা ফলাফল (সময় ) আপনি যখন দেওয়া করছি ? {1,2,...,n}2nO(n)A
এমজেকিএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স

প্রিপ্রোসেসড ডেটা সঞ্চয় করতে এক্সপোনেনশিয়াল স্পেস ব্যবহার করা আমার কাছে প্রতারণার মতো শোনায়, যদিও এটি প্রশ্নে নিষিদ্ধ নয়। তবে আমি চার্চ অফ ওয়ারস্ট-কেস কমপ্লেসিটির প্রতি পক্ষপাতদুষ্ট হতে পারি।
সোসোশি ইতো

এমজেকিএক্সএক্সএক্সএক্সএক্সএক্সক্স এবং স্যুওশি: আমি আপনার দুজনের সাথেই একমত আমি পাঠ্যটি আবার লিখেছি যাতে, আমি আশা করি, এটি আরও স্পষ্ট যে আমি সম্মত। :)
রাদু গ্রেগোর

3

সম্ভবত আপনি একটি "তথ্য পুনরুদ্ধার" কৌশলটি ব্যবহার করতে পারেন: প্রাক-প্রসেসিংয়ের পর্যায়ে একটি উল্টানো সূচক তৈরি করুন (আপনার ক্ষেত্রে একটি সহজ দ্বি মাত্রিক অ্যারে যথেষ্ট) যেটি একটি উপাদানকে maps maps maps মানচিত্র করে এর সেটে :।n×|X|xi{1,...,n}Xinv(xi)={XjX|xiXj}

দৈর্ঘ্যের একটি পূর্ণসংখ্যার অ্যারের সেট আপ করুন।occ|X|

তারপর প্রত্যেকের জন্য উদ্ধার , এবং প্রতিটি জন্য নাyiAinv(yi)Xjinv(yi)occ[j]=occ[j]+1

শেষে আপনার যে সেটগুলি প্রয়োজন সেগুলি যার জন্য ।|Xj|=occ[j]

আপনি ইচ্ছামত দুটি বা ততোধিক উপাদানকে একত্রে সূচিত করে প্রক্রিয়াটি (এক্সফোনেনশিয়াল স্পেসের মূল্যে) গতি বাড়িয়ে তুলতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.