পূর্ণতর তাত্ত্বিক গ্যারান্টি রয়েছে এমন পূর্ণসংখ্যার সংগ্রহের জন্য (যেমন, বহু-সেট) জন্য কি কোনও হ্যাশ ফাংশন রয়েছে?


36

আমি উত্সাহী যে নীচের বৈশিষ্ট্যগুলি রয়েছে এমন একটি বহু-সেট পূর্ণসংখ্যার একটি হ্যাশ সংরক্ষণ করার উপায় আছে কি না:

  1. এটি O (1) স্পেস ব্যবহার করে
  2. ও (1) সময়ে একটি সন্নিবেশ বা মোছা প্রতিফলিত করার জন্য এটি আপডেট করা যেতে পারে
  3. দুটি অভিন্ন সংগ্রহ (যেমন, একই গুণাগুলির সাথে একই উপাদানগুলির সংগ্রহগুলি) সর্বদা একই মানের সাথে হ্যাশ করা উচিত এবং দুটি স্বতন্ত্র সংগ্রহের উচ্চ সম্ভাবনার সাথে পৃথক মানগুলিতে হ্যাশ হওয়া উচিত (অর্থাত্ ফাংশনটি স্বতন্ত্র বা জোড়াযুক্ত স্বাধীন)

এটির প্রাথমিক প্রাথমিক চেষ্টাটি হ'ল পণ্যটির মডুলো পৃথক উপাদানগুলির হ্যাশগুলির একটি এলোমেলো প্রধান store এটি 1 এবং 2 কে সন্তুষ্ট করে তবে এটি স্পষ্ট নয় যে এটি বা একটি নিকটতম পরিবর্তনগুলি 3 পূরণ করবে fy

আমি মূলত এটি স্ট্যাকওভারফ্লোতে পোস্ট করেছি

* 1 এবং 2 এর বৈশিষ্ট্যগুলিকে ও (লগ এন), বা একটি ছোট সাবলাইনারি বহুপদী থেকে কিছুটা শিথিল করা যেতে পারে। বিষয়টি দেখার বিষয়টি হ'ল আমরা কী উপাদানগুলি নিজেরাই সংরক্ষণ না করে বহু-সেটগুলি সনাক্ত করতে পারি এবং নির্ভরযোগ্যভাবে সমতা পরীক্ষা করতে পারি কিনা।


আপনার মাল্টিস্টের উপস্থাপনা কী? অর্থাত্, আপনি কীভাবে একটি বিট স্ট্রিং হিসাবে একটি মাল্টিসেটটি এনকোড করবেন? আপনি যদি সত্যিই -কালীন ক্রিয়াকলাপগুলি (মাল্টিসেটের আকারের স্বতন্ত্রভাবে পেতে চান তবে আমার মনে হয় আপনার এনকোডিংটি স্পষ্ট করা উচিত। O(1)
Jukka Suomela

সেটগুলির এনকোডিং গুরুত্বহীন। হ্যাশ ফাংশনটি সেটগুলির প্রতিনিধিত্বের চেয়ে স্বতন্ত্র হওয়া উচিত। যদি আমি কোনও হ্যাশ সেটটির প্রমিত উপস্থাপনা ব্যবহার করি, তবে সেটটির বিট উপস্থাপনায় যে কোনও মানক হ্যাশটি 3 এবং সম্ভবত 1 নয়, 2 পূরণ করবে 2. আমার যুক্ত করা উচিত যে দুটি সমান সংগ্রহ সর্বদা একই মানের সাথে হ্যাশ হওয়া উচিত।
jonderry

আপনি 2 দ্বারা ঠিক কী বোঝাতে চান? আপনি কি পুরানো সেট, পুরানো হ্যাশ কোড এবং নতুন উপাদান পেয়েছেন এবং আপনি নতুন হ্যাশ কোডটি গণনা করতে চান? বা আপনি কি কেবল পুরানো হ্যাশ কোড এবং নতুন উপাদান পান?
মিহাই

আদর্শভাবে, আপনার পুরানো সেটটি লাগবে না। আপনার এমনকি সদস্য কোয়েরি (গুরুত্বপূর্ণ, স্থান সীমা প্রদত্ত), কেবল সাম্যতা পরীক্ষা করা, সম্ভবত হ্যাশ মানগুলির তুলনা করার মাধ্যমে ফলস পজিটিভের কম সম্ভাবনা রয়েছে এমনটি করার প্রয়োজন হবে না।
jonderry

উত্তর:


17

যদি আপনি মহাবিশ্বে বসবাসের মতো সেটগুলি মনে করেন , আপনার আপডেটের সাথে আপনার সমস্যার সমাধান করা বেশ সহজ । আপনার কেবলমাত্র সংখ্যাগুলির একটি ভেক্টরের জন্য দ্রুত "স্থানীয় আপডেটগুলি" সহ একটি দ্রুত হ্যাশ ফাংশন ।( এলজি ইউ ) ইউ[u]O(lgu)u

উইকিপিডিয়া / ইউনিভার্সাল হ্যাশিংh(x)=(i=1uxiai)modppa[p]iaiO(lgi)uuO(u/p) । যথেষ্ট পরিমাণে হিসাবে এটি খুব ছোট করা যায় (উদাহরণস্বরূপ, এবং আপনি "ডাবল স্পষ্টতা" তে কাজ করেন)। যদি সেটগুলি চেয়ে অনেক ছোট হয় তবে অবশ্যই আপনি মহাবিশ্বকে একটি ছোট মহাবিশ্বের দিকে নামিয়ে দিয়ে শুরু করতে পারেন।pp=u2[u]

হ্যাশিং হ্যাশ করার সময় কি কেউ সংঘর্ষের সম্ভাবনার সমাধান সমাধান জানেন ? এটি সম্ভব হওয়া উচিত।O(1/p)[p]


0

কার্টার এবং ওয়েগম্যান এটিকে নতুন হ্যাশ ফাংশনগুলিতে আচ্ছাদন করে এবং প্রমাণীকরণে তাদের ব্যবহার করে এবং সমতা সেট করে ; এটি আপনার বর্ণনার সাথে খুব মিল। মূলত একটি পরিবর্তনীয় হ্যাশ ফাংশন ও (1) এ সন্নিবেশ এবং মুছে ফেলার জন্য এবং উচ্চ সম্ভাবনার ম্যাচগুলির জন্য একবারে একটি উপাদান আপডেট করা যেতে পারে।


আমি মনে করি এটি কেবল মাল্টিসেটস নয়, সেটগুলিতে কাজ করে (যেমন প্রশ্ন জিজ্ঞাসা করা হয়েছিল)। বিভাগের 5 থেকে 274 পৃষ্ঠার নীচের অংশে: "ADD (x, S) - এস নামক সেটের সাথে উপাদানটি x যুক্ত করুন x ইতিমধ্যে এস এর সদস্য হলে এই ক্রিয়াকলাপটি ব্যবহার করা যাবে না" x
jbapple

তুমি ঠিক বলছো; আমি "মাল্টি" অংশটি মিস করেছি। মনে হচ্ছে কোনও হ্যাশ ফাংশনটি সদৃশগুলি পরিচালনা করতে পারে, যদিও এর কাছে আমার কাছে প্রশংসাপত্র নেই।
KWillets

-2

একটি হ্যাশ ফাংশনের গুণমান সর্বদা হ্যাশ করার উপাদানগুলির বৈশিষ্ট্যের উপর নির্ভর করবে। আপনি এই সম্পর্কে কিছু বলতে পারেন? উদাহরণস্বরূপ, আপনার মাল্টিসেটের x_i উপাদানগুলিতে সাধারণত অনেকগুলি ছোট ছোট প্রধান উপাদান থাকলে আপনার পণ্যের পরামর্শ সম্ভবত একটি দুর্বল হ্যাশ ফাংশন। তবে আপনি কেবল কিছু প্রাইম পি এবং কিউর জন্য সমস্ত এক্স_আই + পি মোড কিউ এর পণ্য গ্রহণের মাধ্যমে এটিকে উন্নত করতে পারেন।


1
হ্যাঁ, পৃথক উপাদানগুলির একসাথে গুণ করার আগে হ্যাশগুলি গ্রহণ করার কারণ এটি।
jonderry

কি? ওপির পরামর্শটি কেবল তাদের সমস্তকে একসাথে গুন করার জন্য, তাই না? আমি বলছি যে এটি করার আগে আপনি যদি প্রতিটিটিতে একটি ধ্রুবক যোগ করেন তবে আপনি সম্ভবত আরও ভাল হ্যাশ পাবেন।
টনিকে

-5
A = 0x4F1BBCDD
B = 0x314EFB75
A*B = 1 
N = size of set before addition/removal<P>
Add X
H = (H-N)*B
U = H >> 16
V = H & 0xFFFF
H = (((U+X)&M)<<16) + ((V^X)&M)
H *= A
H += N+1

Remove X
H = (H-N)*B
U = H >> 16
V = H & 0xFFFF
H = (((U-X)&M)<<16) + ((V^X)&M)
H *= A
H += N-1

যোগফলটি আমাদের একই মানটির একাধিক সংঘটন
করতে অনুমতি দেয় যে জোররা আমাদের একই পরিমাণের সমষ্টি সেট করতে দেয়

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