অন্তর্ভুক্তি পরীক্ষার জন্য পূর্ণসংখ্যার সেট হ্যাশিং


10

আমি সেটগুলি এইচ (।) এবং একটি সম্পর্ক আর (।,।) এর ওপরে একটি হ্যাশ ফাংশন সন্ধান করছি যাতে এটিকে বি এর অন্তর্ভুক্ত করা হয় তবে আর (এইচ (এ), এইচ (বি))। অবশ্যই, আর (।,।) অবশ্যই যাচাই করা সহজ হতে হবে (ধ্রুবক সময়), এবং এইচ (এ) রৈখিক সময়ে গণনা করা উচিত।

এইচ এবং আর এর একটি উদাহরণ:

  • H(A)=xA1<<(h(x)modk) , যেখানে k একটি পূর্ণসংখ্যা এবং h (x) পূর্ণসংখ্যার উপর একটি হ্যাশ ফাংশন।
  • আর (এইচ (এ), এইচ (বি)) = ((এইচ (এ)) এবং এইচ (বি)) == এইচ (এ))

অন্য কোন ভাল উদাহরণ আছে? (সংজ্ঞা দেওয়া ভাল তবে স্বজ্ঞাতভাবে যদি আর (এইচ (এ)), এইচ (বি) থাকে তবে WHP A বিতে অন্তর্ভুক্ত থাকে)।

পরে সম্পাদনা করুন :

  1. আমি হ্যাশ ফাংশনগুলির একটি পরিবার খুঁজছি। আমার অনেক সেট আছে; প্রতিটি সেট 3 - 8 উপাদান; এর মধ্যে 90% এর 3 বা 4 উপাদান রয়েছে। উদাহরণস্বরূপ হ্যাশ ফাংশনটি এই ক্ষেত্রে খুব ভাল বিতরণ করা হয় না।
  2. এইচ (।) এর বিটের সংখ্যা (আমার উদাহরণে, কে) যা ছোট হওয়া উচিত (যেমন। এইচ (।) অবশ্যই একটি পূর্ণসংখ্যার বা দীর্ঘ হতে হবে)।
  3. আর এর একটি দুর্দান্ত সম্পত্তি হ'ল যদি এইচ (।) এর কে বিট থাকে তবে আর ((।,।) (3 ^ কে - 2 ^ কে) / 4 ^ কে জোড়া, অর্থাৎ for খুব কয়েক জোড়া জন্য।
  4. ব্লুম ফিল্টারগুলি বড় সেটগুলির জন্য বিশেষত ভাল good আমি এই সমস্যার জন্য বিএফ ব্যবহার করার চেষ্টা করেছি, তবে কেবলমাত্র একটি ফাংশন সহ সর্বোত্তম ফলাফল ছিল।

(স্ট্যাকওভারফ্লো থেকে ক্রসপোস্ট , আমি যথেষ্ট ভাল উত্তর পাইনি)


"whp" কি উপর? আপনি কি অনুমান করেন যে আপনার ইনপুটগুলি নির্দিষ্ট বিতরণ থেকে এসেছে?
Jukka Suomela

এবং আপনি কি সত্যিই একটি একক, স্থির হ্যাশ ফাংশন সন্ধান করছেন এবং হ্যাশ ফাংশনগুলির পরিবার নয়?
Jukka Suomela

@ যুক্কা: আমি মনে করি তার অর্থ যদি আর (এইচ (এ), এইচ (বি)) হয়, তবে উচ্চ সম্ভাবনার সাথে আমরা এই সিদ্ধান্তে পৌঁছে যাই যে এ বি একটি উপসেট, পাশাপাশি সম্ভাব্যতা এ এবং বি এর এলোমেলো নির্বাচনের উপরও নেওয়া হয়েছে, পাশাপাশি এইচ এবং আর এর অভ্যন্তরীণ মুদ্রা টসস (যদি থাকে)।
এমএস দৌস্তি

আমি হ্যাশ ফাংশনগুলির একটি পরিবার খুঁজছি। আমার সেটগুলি ছোট হতে থাকে (প্রতিটি 3 - 8 উপাদান; তাদের 90% এর মধ্যে 3 বা 4 উপাদান থাকে) তাই আমি যে উদাহরণ দিয়েছি হ্যাশ ফাংশনটি খুব ভাল বিতরণ করা হয়নি।
আলেকজান্দ্রু

আর এর একটি দুর্দান্ত সম্পত্তি হ'ল যদি এইচ (।) এর n বিট থাকে তবে আর ((।,।) 3 (3 ^ n - 2 ^ n) / 4 ^ n জোড়া, অর্থাৎ ie খুব কয়েক জোড়া জন্য।
আলেকজান্দ্রু

উত্তর:


10

(এই উত্তরটি মূলত মন্তব্যে ছিল তবে আমি সুরেশের পরামর্শে এটিকে পৃথক উত্তরে নিয়ে চলেছি।)

খুব ছোট সেট সঙ্গে আপনার অ্যাপ্লিকেশনের জন্য আপনি সম্ভবত ব্লুম হ্যাশ ফাংশন নম্বর চান বেশ মিথ্যা positives সংখ্যা কমানোর জন্য বৃহৎ যাবে। গণনার সময় বাঁচাতে আমি একটি ব্লুম ফিল্টারের নিম্নলিখিত পরিবর্তনের প্রস্তাব করছি। ধরে নিন যে প্রতিটি উপাদানগুলির জন্য বিট স্ট্রিং উত্পাদন করে আপনার জন্য তিনটি traditional হ্যাশ ফাংশন রয়েছে , , । বিটওয়াস এবং এই তিনটি হ্যাশ ফাংশনের প্রতিটি উপাদানকে হ্যাশ করুন। ফলাফলের উপাদানগুলির হ্যাশগুলি প্রায়1 2 3 মিটার 2 - 3 = 1 / 8 টি kh1h2h3m23=1/8thবেশী। প্রতিটি সেট বিটওয়াইস বা এর উপাদান উপাদানগুলির হ্যাশগুলিতে হ্যাশ করুন। কারণ আপনার সেটে 3-8 উপাদান রয়েছে ফলে প্রাপ্ত হ্যাশগুলি দেড়-আধটি পাড়ার আশেপাশে থাকবে যা সম্ভবত আপনি সবচেয়ে ভাল মিথ্যা ইতিবাচক হারকে নীচে রাখতে চান is

উপরোক্ত স্কিমের মধ্যে পার্থক্যটি ব্লুম ফিল্টারটি ক্লাসিক এরদোস এলোমেলো গ্রাফ মডেল এবং এলোমেলো নিয়মিত গ্রাফের মধ্যে পার্থক্যের সাথে সমান। উপরের স্কিমটিতে ব্লুম হ্যাশগুলির কার্যকর সংখ্যাটি এর গড় প্রায় কিছুটা পরিবর্তিত হয়েছে তবে বেশ বড় তাই এই পার্থক্যটি বিবেচনা করা উচিত নয়। ডি কে এম / 8 মি / 8Gn,pdkm/8m/8


আপনার প্রস্তাবিত হিসাবে এটি বড় মিটার (32 বা 64) এর জন্য বিশেষত ভাল।
আলেকজান্দ্রু

4

আমি আপনার প্রস্তাবের মতো সম্পর্কের সাথে আপনার হ্যাশ হিসাবে একটি ব্লুম ফিল্টার ব্যবহার করার চেষ্টা করব। সেরা ফিল্টার আকার কম্পিউটিং এবং হ্যাশ ফাংশন সংখ্যা আপনার অ্যাপ্লিকেশনের জন্য খুব কঠিন নয় হওয়া উচিত; অনুপ্রেরণার জন্য উইকিপিডিয়ায় ব্লুম ফিল্টার নিবন্ধটি দেখুন । আপনি কতটা খারাপভাবে মিথ্যা পজিটিভ এড়াতে চান তার উপর নির্ভর করে এবং মতো কিছু যথেষ্ট হতে পারে।কে এম = 64 কে = 4mkm=64k=4


খুব ছোট সেট সহ আপনার আবেদনের জন্য আপনি সম্ভবত বেশ বড় চাইপ্রচলিত পদ্ধতির সাথে এটি বেশ ধীর হতে পারে। আমি পরিবর্তে নিম্নলিখিত পরামর্শ। k
ওয়ারেন স্কুডি

(পূর্ববর্তী মন্তব্যের ধারাবাহিকতা) এটি মূলত ব্লুম ফিল্টারগুলির একটি প্রকরণ। ধরে নিন যে বিট স্ট্রিং উত্পাদনকারী উপাদানগুলির জন্য আপনার তিনটি হ্যাশ ফাংশন রয়েছে , , । বিটওয়াইস এবং এই তিনটির একটি উপাদান হ্যাশ করুন। ফলস্বরূপ হ্যাশগুলি প্রায় 1/8 ম 1s হবে। বিটওয়াইস বা এর উপাদান উপাদানগুলির হ্যাশগুলির একটি সেট হ্যাশ করুন। কারণ আপনার সেটে 3-8 টি উপাদান রয়েছে ফলস্বরূপ হ্যাশগুলি দেড় ভাগের নিকটবর্তী অঞ্চলে থাকবে যা সম্ভবত মিথ্যা ইতিবাচক হারকে কমিয়ে রাখতে সহায়তা করবে। h 2 h 3 মিh1h2h3m
ওয়ারেন শুডি

এই পরিবর্তনের সুবিধাটি হ'ল এটি বেশিরভাগ কম্পিউটারের শব্দ অপারেশনের অন্তর্নিহিত সমান্তরালতার আরও ভাল ব্যবহার করে।
ওয়ারেন শুডি

ওয়ারেন, আপনার উত্তর হিসাবে এটি পোস্ট করা উচিত। এটি কিছু ভোটের দাবিদার
সুরেশ ভেঙ্কট

2
@ ওয়ারেন, @ সুরেশ: আমার মনে হয় এই দুটি ঘনিষ্ঠভাবে সম্পর্কিত উত্তরগুলি সংযুক্ত করে আরও মন্তব্যগুলি মুছলে আরও বুদ্ধি হবে । এটি অনুসরণ করা আরও সহজ হবে, বিশেষত যেহেতু উত্তরের একটির মধ্যে অন্যটিতে সংজ্ঞায়িত পরামিতিগুলি বোঝানো হয়।
Jukka Suomela
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.