সংখ্যা বেস সিস্টেমের ভিত্তিতে অ্যালগরিদম? [বন্ধ]


88

আমি সম্প্রতি লক্ষ্য করেছি যে সৃজনশীল ভিত্তিতে সংখ্যার চতুর ব্যবহারের উপর ভিত্তি করে বা পুরোপুরি সেখানে প্রচুর অ্যালগরিদম রয়েছে। উদাহরণ স্বরূপ:

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

আমার প্রশ্ন হ'ল: এখানে কী কী অন্যান্য অ্যালগরিদম রয়েছে যা তাদের স্বজ্ঞাততা বা প্রমাণের মূল পদক্ষেপ হিসাবে একটি চৌকস নম্বর সিস্টেমটি ব্যবহার করে? । আমি এই বিষয়টিতে একসাথে কথা বলার কথা ভাবছি, সুতরাং আমাকে আরও উদাহরণগুলি কীভাবে আঁকতে হবে তত ভাল।


4
আমি প্রশ্নটিও পছন্দ করি তবে আপনি কীভাবে 'সঠিক' উত্তরটি চয়ন করেন? এটি কি সম্প্রদায়ের উইকি হওয়া উচিত?
ভ্লাদ

14
এটি সম্প্রদায়ের উইকি হতে হবে
ব্লু রাজা - ড্যানি প্লেফুঘিফ্ট

18
@ ক্লোজ ভোটার: যদি অ্যালগরিদম সম্পর্কে কোনও প্রশ্ন এসও-তে বন্ধ থাকে তবে আমি জানি না যে এখানে বিষয়টিতে কী আছে। সিএসএস সম্পর্কে বোকা নবী প্রশ্ন? "আমি হেজ রেইজেক্স প্লিজ করতে পারি"? "plz ইমেল তেহ কোডজ 4 মাইল হেমোভোক"?
এমএকে

4
গ্যালাক্সিতে হিচিকারের গাইড: জীবন, মহাবিশ্ব এবং সব কিছুর উত্তর কী? গভীর চিন্তার উত্তর: 42. মেশিন হিসাবে পৃথিবী প্রশ্নটি খুঁজে পেতে: 9 x 6 কী? এবং এই কারণেই সবকিছু এত চ ***** আপ। টিশার্টে দেখা হয়েছে: 9 (বেস 13) x 6 (বেস 13) = 42 (বেস 13) কিউইডি
ক্রিস ওয়ালটন

"অন্য কোন অ্যালগরিদমগুলি কী আছে যা তাদের স্বজ্ঞাততা বা প্রমাণের মূল পদক্ষেপ হিসাবে একটি চৌকস নম্বর সিস্টেম ব্যবহার করে?" স্ট্যাক ওভারফ্লো কোনও সুপারিশ ইঞ্জিন নয় , সমস্ত জিনিসের একটি তালিকা বা একটি লিঙ্ক ফার্ম । বাস্তব প্রোগ্রামিং প্রশ্নগুলি সমাধান করার জন্য অ্যালগরিদম, একেবারে। চতুর অ্যালগরিদমগুলির জন্য ক্লিয়ারিংহাউস, না। তারা যদি এটি চান তবে আপনি গণিতে 'মেটা'র বিষয়ে জানতে চাইতে পারেন ।

উত্তর:


39

ক্রিস ওকাসাকির তাঁর "পিউরিলি ফাংশনাল ডেটা স্ট্রাকচারস " বইটিতে একটি খুব ভাল অধ্যায় রয়েছে যা "সংখ্যার উপস্থাপনা" নিয়ে আলোচনা করে: মূলত কোনও সংখ্যার কিছু উপস্থাপনা নিয়ে এটি একটি ডেটা কাঠামোতে রূপান্তরিত করে। গন্ধ দিতে, এখানে এই অধ্যায়ের বিভাগগুলি রয়েছে:

  1. পজিশনাল সংখ্যা সিস্টেম
  2. বাইনারি নম্বর (বাইনারি র‌্যান্ডম-অ্যাক্সেসের তালিকা, জিরোলেস উপস্থাপনা, অলস উপস্থাপনা, খণ্ডিত প্রতিনিধিত্ব)
  3. বাইনারি নম্বরগুলি স্কিউ করুন (বাইনারি র‌্যান্ডম অ্যাক্সেসের তালিকাগুলি, স্কিউ দ্বিপদী হিপস)
  4. ত্রয়ী এবং চতুর্মুখী নম্বর

নিখুঁত কয়েকটি সেরা কৌশল:

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

এখানে এই অধ্যায়ের জন্য রেফারেন্স তালিকাটিও রয়েছে:

  • গুইবাস, ম্যাকক্রাইট, প্লাস এবং রবার্টস: রৈখিক তালিকার জন্য একটি নতুন উপস্থাপনা।
  • মাইয়ার্স: একটি প্রয়োগমূলক র্যান্ডম-অ্যাক্সেস স্ট্যাক
  • কার্লসন, মুনরো, পোবলিট: ধ্রুবক সন্নিবেশ সময়ের সাথে একটি অন্তর্নিহিত দ্বিপদী সারি।
  • কাপলান, টারজান: পুনরাবৃত্তির ধীর-ডাউনের মাধ্যমে ক্যাটেনেশন সহ বিশুদ্ধভাবে কার্যকরী তালিকা।

4
+1 আমার কাছে ওকাসাকির বইয়ের একটি অনুলিপি আছে ... আমি এই অধ্যায়গুলি পছন্দ করেছিলাম এবং তারা আংশিকভাবে কেন আমি এই প্রশ্নটি মোটেই জিজ্ঞাসা করেছি (বুটস্ট্র্যাপেড স্কিউ দ্বিপদী স্তূপগুলি সত্যিই দুর্দান্ত!) যদিও আমি এটির মাধ্যমে পুরোটা পড়িনি didn't সম্ভবত আমার উচিত. এছাড়াও, আমি সেই উল্লেখগুলি পরীক্ষা করে দেখব; তারা দেখতে সুন্দর.
টেম্পলেটটিফাইফ

ওকাসাকির সম্পূর্ণ থিসিসটি অনলাইনে উপলব্ধ: সিএসসি.এম.এম.ইউ
গিগি

20

"টেরানারি নম্বরগুলি সিয়েরপিনস্কি ট্রায়াঙ্গল বা ক্যান্টর সেট সুবিধামত সেট-এর মতো স্ব-অনুরূপ কাঠামো জানাতে ব্যবহার করা যেতে পারে।" উৎস

"2 ডি হিলবার্ট কার্ভের উপস্থাপনে কোয়ার্টারনারি নম্বরগুলি ব্যবহৃত হয়।" উৎস

"কোয়াটার-কাল্পনিক সংখ্যার ব্যবস্থাটি ১৯৫৫ সালে ডোনাল্ড নথের দ্বারা প্রথম একটি হাইস্কুল বিজ্ঞানের প্রতিভা অনুসন্ধানের জন্য প্রস্তাবিত হয়েছিল It এটি একটি অ-মানক অবস্থানিক সংখ্যা পদ্ধতি যা কাল্পনিক সংখ্যা ২ আইটিকে তার ভিত্তি হিসাবে ব্যবহার করে able এটি সক্ষম শুধুমাত্র 0, 1, 2 এবং 3 সংখ্যা ব্যবহার করে প্রতিটি জটিল সংখ্যার প্রতিনিধিত্ব করতে " উৎস

"রোমান সংখ্যাগুলি একটি দ্বিখণ্ডিত সিস্টেম" " উৎস

"বেসিক সংখ্যাটি অধ্যয়নের ক্ষেত্রে সেনেরিকে দরকারী হিসাবে বিবেচনা করা যেতে পারে, যেহেতু সমস্ত প্রাইমস যখন বেস-সিক্সে প্রকাশিত হয়, 2 এবং 3 ব্যতীত চূড়ান্ত অঙ্ক হিসাবে 1 বা 5 থাকে।" উৎস

"সেক্সেজেসিমাল (বেস 60) এর সংখ্যা হিসাবে ষাটটি একটি সংখ্যা পদ্ধতি It এটি খ্রিস্টপূর্ব 3 য় সহস্রাব্দে প্রাচীন সুমেরীয়দের সাথে উদ্ভূত হয়েছিল, এটি প্রাচীন ব্যাবিলনীয়দের নিকটে প্রেরণ করা হয়েছিল, এবং এটি এখনও ব্যবহার করা হয় - পরিবর্তিত আকারে - পরিমাপের জন্য সময়, কোণ এবং ভৌগলিক স্থানাঙ্ক যা কোণ "" উৎস

ইত্যাদি ...

এই তালিকাটি একটি ভাল সূচনা পয়েন্ট।



11
অবশ্যই তারা। ত্রিনিয়ারীতে একটি সিয়েরপিনস্কি ত্রিভুজ ত্রিভুজ তৈরি করা, বা সেক্সেজিমালগুলিতে ভৌগলিক স্থানাঙ্ক গণনা করা। রোমান সংখ্যাগুলিকে দশমিক রূপান্তর করার জন্য একটি অ্যালগরিদম সম্পর্কে কীভাবে? সিনিয়ারি সিস্টেমের উপর ভিত্তি করে প্রাইম-নম্বর সন্ধানের অ্যালগরিদম সম্পর্কে কীভাবে?
বেনিয়ামিন

9

আমি অন্য দিন আপনার প্রশ্নটি পড়েছি এবং আজ একটি সমস্যার মুখোমুখি হয়েছিল: আমি কীভাবে কোনও সেটের সমস্ত বিভাজন তৈরি করতে পারি? আমার কাছে যে সমাধানটি হয়েছিল এবং আমি এটি ব্যবহার করেছি (সম্ভবত আপনার প্রশ্নটি পড়ার কারণে) এটি ছিল:

(এন) উপাদানগুলির সাথে সেট করার জন্য যেখানে আমার (পি) পার্টিশন প্রয়োজন, বেস (পি) এ সমস্ত (এন) ডিজিটের সংখ্যা দিয়ে গণনা করুন।

প্রতিটি সংখ্যা একটি বিভাজনের সাথে মিলে যায়। প্রতিটি অঙ্কটি সেটের একটি উপাদানের সাথে মিলে যায় এবং অঙ্কটির মান আপনাকে বলে যে কোনটি বিভাগে রেখে দিতে হবে।

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


4
আমি মনে করি এটি টেম্পলেট টাইপফাইফের পোস্ট থেকে পুরোপুরি চুরি হয়ে গেছে, এটি অবশ্যই আমার অবচেতন অবস্থায় আটকে আছে। আমি কেবল এটি ফেলে রেখেছি কারণ এটি কেবল বাইনারি ছাড়াও আরও বেশি ঘাঁটি নিয়ে কথা বলে।
বেন হর্নার

4
এটি বেশিরভাগ পি পার্টিশন সহ সমস্ত পার্টিশন তৈরি করে এবং এতে অপ্রয়োজনীয়তা রয়েছে। কীভাবে 111222আলাদা 222111?
নুল সেট

7

আমি সম্প্রতি 0 এবং 2 এন - 1 এর মধ্যে সংখ্যার বাইনারি উপস্থাপনার উপর ভিত্তি করে ডিক্সোগ্রাফিকাল ক্রমে সাবসেটগুলি উত্পন্ন করার জন্য একটি দুর্দান্ত অ্যালগরিদম জুড়ে এসেছি - সেটগুলির জন্য কী উপাদান নির্বাচন করা উচিত এবং স্থানীয়ভাবে পুনরায় সাজানোর জন্য এটি উভয় সংখ্যার বিট ব্যবহার করে উৎপন্ন সেটগুলি তাদের অভিধানভিত্তিক ক্রমে পাওয়ার জন্য। আপনি যদি কৌতূহলী হন তবে আমার এখানে একটি লিখনআপ পোস্ট করা আছে

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


4
এটি উপসেটগুলি উত্পন্ন করার সহজতম উপায় :)
st0le

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

@ st0le- আমি মনে করি এটি স্ট্যান্ডার্ড সংস্করণের তুলনায় কিছুটা জটিল কারণ এটি বিটস এবং অন্তর্ভুক্তির মধ্যে এক-এক-এক ম্যাপিং থেকে প্রাপ্ত সাধারণ ক্রমগুলির চেয়ে লিক্সোগ্রাফিকাল ক্রমে সেট করে।
টেম্পলেটটিফাইফ

6

ঠিক একটি চালাক বেস সিস্টেম নয় তবে বেস সিস্টেমটির একটি চতুর ব্যবহার: ভ্যান ডের করপুট সিকোয়েন্সগুলি সংখ্যার বেস-এন উপস্থাপনাকে বিপরীত করে গঠিত স্বল্প- তাত্পর্যপূর্ণ ক্রমগুলি । এগুলি 2-ডি হাল্টোন ক্রমগুলি তৈরি করতে ব্যবহার করা হয় যা দেখতে এই জাতীয় চেহারা ।


6

আমি অস্পষ্টভাবে কিছু ম্যাট্রিক্স গুণনের গতি বাড়ানোর জন্য ডাবল বেস সিস্টেমগুলি সম্পর্কে কিছু মনে করি।

ডাবল বেস সিস্টেম একটি রিডানড্যান্ট সিস্টেম যা একটি সংখ্যার জন্য দুটি ঘাঁটি ব্যবহার করে।

 n = Sum(i=1 --> l){ c_i * 2^{a_i} * 3 ^ {b_i}, where c in {-1,1}

রিডানড্যান্ট মানে এক নম্বরকে বিভিন্ন উপায়ে নির্দিষ্ট করা যায়।

টডর কুক্লেভের ভ্যাসিল দিমিট্রভের "ম্যাট্রিক্স পলিনোমিয়ালের গণনার জন্য হাইব্রিড অ্যালগরিদম" নিবন্ধটি সন্ধান করতে পারেন।

আমি পারি সেরা সংক্ষিপ্ত ওভারভিউ দেওয়ার চেষ্টা করছি।

তারা ম্যাট্রিক্স বহুপদী গণনা করার চেষ্টা করছিলেন G(N,A) = I + A + ... + A^{N-1}

সুপারসিং এন যৌগিক G(N,A) = G(J,A) * G(K, A^J), যদি আমরা জে = 2 এর জন্য আবেদন করি তবে আমরা পাই:

         / (I + A) * G(K, A^2)        , if N = 2K
G(N,A) = |
         \ I + (A + A^2) * G(K, A^2)  , if N = 2K + 1

এছাড়াও,

         / (I + A + A^2) * G(K, A^3)           , if N = 3K
G(N,A) = | I + (A + A^2 + A^3) * G(K, A^3)     , if N = 3K + 1
         \ I + A * (A + A^2 + A^3) * G(K, A^3) , if N = 3K + 2

এটি যেমন "স্পষ্টত" (কৌতুকপূর্ণভাবে) যে এর মধ্যে কিছু সমীকরণ প্রথম সিস্টেমে দ্রুত এবং কিছুটা দ্বিতীয়টিতে আরও ভাল - সুতরাং নির্ভরশীলদের মধ্যে সেরাটি বেছে নেওয়া ভাল ধারণা N। তবে এর জন্য 2 এবং 3 উভয়ের জন্য দ্রুত মডিউলো অপারেশন প্রয়োজন হবে এখানে ডাবল বেসটি কেন আসে - আপনি মূলত উভয়কেই একটি সংযুক্ত ব্যবস্থা দেওয়ার জন্য আপনি মডুলো অপারেশনটি দ্রুত করতে পারেন:

         / (I + A + A^2) * G(K, A^3)       , if N = 0 or 3 mod 6
G(N,A) = | I + (A + A^2 + A^3) * G(K, A^3) , if N = 1 or 4 mod 6
         | (I + A) * G(3K + 1, A^2)        , if N = 2 mod 6
         \ I + (A + A^2) * G(3K + 2, A^2)  , if N = 5 mod 6

নিবন্ধটি আরও ভাল ব্যাখ্যা করার জন্য দেখুন কারণ আমি এই অঞ্চলে বিশেষজ্ঞ নই।



5

"জাল মুদ্রা" সমস্যা সমাধানের জন্য এখানে তিনটি সংখ্যা ব্যবহার করার জন্য একটি ভাল পোস্ট রয়েছে (যেখানে আপনাকে নিয়মিত একটি ব্যাগে একক জাল মুদ্রা সনাক্ত করতে হবে, যতবার সম্ভব কয়েক বার ব্যালেন্স ব্যবহার করে)


এটি একটি দুর্দান্ত পোস্ট ছিল এবং আমি একটি কথার মাধ্যমে এটি ব্যবহার করে শেষ করেছিলাম "মজা উইথ নং সিস্টেমস" called এটি পোস্ট করার জন্য অনেক ধন্যবাদ!
টেম্পলেটটিফাইফ

স্বাগতম, এবং আপনি এটি ব্যবহার করতে পেরে আনন্দিত!
মার্টিন ডিমেলো

5

হ্যাশিং স্ট্রিং (উদাহরণস্বরূপ রবিন-কার্প অ্যালগরিদমে) স্ট্রিংটিকে প্রায়শই n অঙ্কের সমন্বয়ে বেস-বি নম্বর হিসাবে মূল্যায়ন করে (যেখানে এন স্ট্রিংয়ের দৈর্ঘ্য হয়, এবং খ কয়েকটি পছন্দসই বেস যা যথেষ্ট বড়)। উদাহরণস্বরূপ "ABCD" স্ট্রিংটি হ্যাশ করা যেতে পারে:

'A'*b^3+'B'*b^2+'C'*b^1+'D'*b^0

অক্ষরের জন্য ASCII মানগুলি প্রতিস্থাপন করা এবং খ নেওয়া 256 হয়ে যায় এটি হয়ে যায়,

65*256^3+66*256^2+67*256^1+68*256^0

যদিও বেশিরভাগ ব্যবহারিক অ্যাপ্লিকেশনগুলিতে, ফলাফলটি যথেষ্ট পরিমাণে ছোট রাখার জন্য ফলাফলটি কিছুটা যুক্তিসঙ্গত আকারের সংখ্যায় নেওয়া হয়।



4

ভিতরে Hackers Delight (ক বই প্রত্যেক প্রোগ্রামার আমার চোখে জানা উচিত) unusal ঘাঁটি সম্পর্কে একটি সম্পূর্ণ অধ্যায় আছে মত -2 বেস হিসাবে (হ্যাঁ, ঠিক নেতিবাচক ঘাঁটি) অথবা -1 + I (ঝ যেমন কাল্পনিক একক SQRT (-1)) যেমন বেস। এছাড়াও আমি সেরা বেসটি কী তা গণনা করি (হার্ডওয়্যার ডিজাইনের নিরিখে, যারা এটি পড়তে চান না তাদের জন্য: সমীকরণটির সমাধান ই হয়, তাই আপনি 2 বা 3, 3 দিয়ে যেতে পারেন কিছুটা ভাল হবে (ফ্যাক্টর 2% এর চেয়ে 1.056 গুণ ভাল) - তবে এটি প্রযুক্তিগত আরও কার্যকর)।

আমার মনে আসা অন্যান্য জিনিসগুলি ধূসর পাল্টা (আপনি যখন এই সিস্টেমে কেবলমাত্র 1 বিট পরিবর্তনগুলি গণনা করেন, আপনি প্রায়শই এই সম্পত্তিটি মেটাস্টেটিবিলিটি সমস্যাগুলি হ্রাস করতে হার্ডওয়্যার ডিজাইনে ব্যবহার করেন) বা ইতিমধ্যে উল্লিখিত হাফম্যান এনকোডিংয়ের সাধারণীকরণ - পাটিগণিত এনকোডিং ing


3

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



1

দুর্দান্ত প্রশ্ন। তালিকা আসলেই দীর্ঘ। সময় বলা মিশ্র ঘাঁটির একটি সহজ উদাহরণ (দিন | ঘন্টা | মিনিট | সেকেন্ড | সকাল / সন্ধ্যা)

আপনি যদি এটি সম্পর্কে শুনতে আগ্রহী হন তবে আমি একটি মেটা-বেস এনুমারেশন এন-টুপল ফ্রেমওয়ার্ক তৈরি করেছি। এটি বেস নাম্বারিং সিস্টেমগুলির জন্য খুব মিষ্টি সিনট্যাকটিক চিনি। এটি এখনও মুক্তি পায় না। আমার ব্যবহারকারী নাম ইমেল করুন (জিমেইলে)।


4
এবং যে কোনও ক্যালেন্ডার সিস্টেম - মায়ান, লুনার, ব্যাবিলনীয় .... একসাথে ১৯ 1971১ সালের আগে (এলএসডি) ইংলিশ মুদ্রা। যেমন আপনি বলেন তালিকা চলছে।
ক্রিস ওয়ালটন


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