ফাংশন যা ইনপুট ছড়িয়ে দেয়


14

আমি আছে যদি একটি ফাংশন জানতে চাই f এন-বিট সংখ্যা আছে যা নিম্নলিখিত বৈশিষ্ট্য এন-বিট সংখ্যা থেকে:

  • f দ্বিখণ্ডক হওয়া উচিত
  • উভয় f এবং উভয়ই f1খুব দ্রুত গণনযোগ্য
  • f এমন একটি নম্বর ফেরত দেওয়া উচিত যার এর ইনপুটটির সাথে কোনও উল্লেখযোগ্য সম্পর্ক নেই।

যুক্তিটি হ'ল:

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

আমার ধারণা প্রতীক সংখ্যাগুলিকে সাথে একত্রিত করা fযা তারা এর পুরো পরিসীমা জুড়ে বিস্তৃত [0,2641]। যেহেতু প্রতীক সংখ্যাগুলি কেবলমাত্র ইনপুট এবং আউটপুট চলাকালীন ঘটে যা কেবল একবার ঘটে তাই এই জাতীয় ফাংশন প্রয়োগ করা খুব ব্যয়বহুল হওয়া উচিত নয়।

আমি জোরশিফ্টের এলোমেলো সংখ্যা জেনারেটরের এক পুনরাবৃত্তি সম্পর্কে ভেবেছিলাম, তবে আমি এটিকে পূর্বাবস্থায় ফেলার কোনও উপায় জানি না, যদিও এটি তাত্ত্বিকভাবে সম্ভব হওয়া উচিত।

কেউ কি এই ধরনের ফাংশন জানেন?
এই একটি ভাল ধারণা?


1
আমি একজন বিশেষজ্ঞ নই, কিন্তু সম্ভবত আপনি একটি সিউডোরান্ডম বিন্যাস (উদাহরণস্বরূপ দেখুন ব্যবহার করতে পারেন Feistel সাইফার )
মাস

আপনি যদি মূলত একটি হ্যাশ ফাংশন গণনা করছেন তবে কেন হ্যাশিং ব্যবহার করবেন না?
ভোনব্র্যান্ড

@ ভনব্র্যান্ড হ্যাশিং বিপরীত নয়। প্রয়োজনীয় নম্বরটি দেখুন 2
FUZxxl

কেন এটি বিপরীতমুখী হতে হবে? এটি দেখার দ্বারা এটিকে বিপরীতমুখী করে তোলার কী আছে?
ভোনব্র্যান্ড

1
আপনি (f (x), x) কী হিসাবে সংরক্ষণ করতে পারেন।
এড্রিয়ানএন

উত্তর:


6

আপনি ফিবোনাচি হ্যাশিং ব্যবহার করতে পারেন , যথা

hF(k)=k512k512

জন্য আপনি পেতে এন pairwise-স্বতন্ত্র সংখ্যা (প্রায়) সমানভাবে ছড়িয়ে [ 0 , 1 ] । থেকে স্কেলিং দ্বারা [ 1 .. এম ] এবং rounding (নিচে), আপনি যে ব্যবধান সম্পর্কে সমানভাবে বিস্তার নম্বর পেতে।k=1,,nn[0,1][1..M]

উদাহরণস্বরূপ, এইসব হয় ছোটো [ 0..10000 ] (বাম মূল ক্রম, ডান সাজানো):hF(1),,hF(200)[0..10000]

enter image description here

এটি নথকে গুণিতকৃত হ্যাশিং বলে । জন্য কম্পিউটারের শব্দ আকার, একটি কিছু পূর্ণসংখ্যা অপেক্ষাকৃত প্রধানমন্ত্রীর W এবং এম প্রয়োজন ঠিকানাগুলির নম্বর, আমরা ব্যবহারwAwM

h(k)=M((kAw)mod1)

হ্যাশিং ফাংশন হিসাবে। উপরেরগুলি A / w = = - 1 = with দিয়ে অনুসরণ করে (নিশ্চিত হয়ে নিন যে আপনি এটি যথাযথ নির্ভুলতার সাথে গণনা করতে পারেন)। যদিও এটিϕ-1 এরবাইরে অন্য যে কোনও অযৌক্তিক সংখ্যার সাথে কাজ করে, এটি কেবলমাত্র দুটি সংখ্যার মধ্যে একটি যা "সর্বাধিক অভিন্ন বিতরণ" সংখ্যার দিকে পরিচালিত করে।A/w=ϕ1=512ϕ1

আরো অনেক কিছু খুঁজুন কম্পিউটার প্রোগ্রামিং আর্ট , খন্ড 3 ডোনাল্ড Knuth (দ্বিতীয় সংস্করণ পৃষ্ঠা 513 থেকে অধ্যায় 6.4) দ্বারা। বিশেষত আপনি খুঁজে পাবেন যে ফলাফলগুলি সংখ্যক জোড়াবিশিষ্ট স্বতন্ত্র (কমপক্ষে যদি ) থাকে এবং আপনি যদি ϕ - 1 এর পরিবর্তে প্রাকৃতিক এবং ডাব্লু ব্যবহার করেন তবে বিপরীত কার্যটি কীভাবে গণনা করতে হবে ।nMAwϕ1


1
কীভাবে দক্ষতার সাথে গণনা করবেন ? f1
ফ্রেফএল

1
@ ফ্রাফল আশা করি আমার সম্পাদনাটি আপনার উদ্বেগকে কিছুটা সমাধান করবে। এটি পরিষ্কার, যদিও, এই হ্যাশিং কৌশলগুলি দক্ষতার সাথে অবিচ্ছিন্নভাবে নকশাকৃত করার জন্য বিশেষভাবে ডিজাইন করা হয়নি।
রাফেল

হ্যাঁ এটি করে, আমি এটি উত্সাহিত করব, তবে আমি এটি গ্রহণযোগ্য উত্তর হিসাবে সুপারিশ করব না।
ফ্রেফএল

1

জন্য -বিট ইনপুট, এই ফাংশন কাজ করে:k

hash(n)=(nmod2k2)2k2+ndiv2k2

এই উলটাকর হয়, যে , এবং অ অনুক্রমিক যুগল রয়েছে { এন , মি } , এন < মি , যেখানে একটি গুলি ( মি ) < একটি গুলি ( এন ) । সতর্ক হন যে আউটপুট এবং ইনপুটটি পারস্পরিক সম্পর্ক হতে পারে, বিশেষত যদি আপনার ইনপুটটি { 1 , , 2 কে হয়hash(hash(n))=n{n,m},n<mhash(m)<hash(n){1,,2k21}

রেফ: ফেরতযোগ্য হ্যাশ ফাংশন


এটি দেখতে সহজ এবং সুন্দর দেখাচ্ছে। আমি যে পরীক্ষা করতে যাচ্ছি।
FUZxxl

1
1. ইনপুট উপর নির্ভর করে, এটি ভারী সম্পর্ক স্থাপন করতে পারে (অবধি) 1 স্পিয়ারম্যান এর জন্য ρ) 2. এটি 32 বিটের জন্য, 64 বিটের জন্য নয় 3. আপনি দয়া করে এটি ভাষা-স্বাধীনভাবে লিখতে পারেন?
ফ্রেফল

এটা বেশ পরিষ্কার! 64-বিট (0x00000000FFFFFFFF) এর জন্য এবং আপনার 32 বিট স্থানান্তরিত হওয়া উচিত (<<)। এই ফাংশনটি সহজ, ব্যবহারিক এবং অনুশীলনে যথেষ্ট দ্রুত।
রেজা

1
তবে আপনি কেন বিটের একটি ক্রম ব্যবহার করবেন না, যা প্রতিটির মানচিত্র নয় এক্স{1,...,232-1} প্রতি 232এক্স? উপরে উল্লিখিত হিসাবে এটি স্পষ্টতই ওপি কর্তৃক দাবি করা পারস্পরিক সম্পর্ক শর্ত লঙ্ঘন করে।
ফ্রেফএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.