পার্থক্য অফ অঙ্কের সমাধান দ্বারা প্রস্তাবিত টবি এবং মারিও আসলে যার জন্য আমরা একটি (নির্দিষ্ট-সময়) বাইনারি অপারেশন বর্ণনা করতে পারেন অন্য কোন ডাটা টাইপ করার সাধারণ যাবে ⊕ হয় যে:Θ ( এন )⊕
- মোট , এই ধরনের যে কোনো মানের জন্য এবং খ , একটি ⊕ খ সংজ্ঞায়িত করা হয় এবং একই ধরনের (অথবা এটা কিছু উপযুক্ত supertype, যার জন্য অপারেটর অন্তত ⊕ এখনও সংজ্ঞায়িত করা হয়);একটিখa ⊕ খ⊕
- সহযোগী , যেমন ;a ⊕ ( b ⊕ c ) = ( a ⊕ b ) ⊕ c
- পরিবর্তনমূলক , যেমন ; এবংa ⊕ b = b ⊕ a
- cancellative একটি বিপরীত অপারেটর অস্তিত্ব আছে, যেমন যে মাফিক ( একটি ⊕ খ ) ⊖ খ = একটি । প্রযুক্তিগতভাবে, এই বিপরীতমুখী অপারেশনটি অগত্যা অবিচ্ছিন্নভাবে থাকাও প্রয়োজন না, যতক্ষণ না "বিয়োগ" দুটি পরিমাণের এন উপাদানগুলির প্রত্যেকের ও ( এন ) সময়ের চেয়ে বেশি সময় লাগে না ।⊖( a ⊕ b ) ⊖ b = aএনও ( এন )
(প্রকারটি যদি কেবলমাত্র স্বতন্ত্র মানের একটি সীমাবদ্ধ পরিমাণ নিতে পারে, তবে এই বৈশিষ্ট্যগুলি এবেলিয়ান গোষ্ঠীতে পরিণত করার জন্য যথেষ্ট ; এমনকি যদি না হয়, তবে এটি কমপক্ষে একটি পরিবর্তনীয় বাতিল বাতিল সেমিগ্রুপ হবে ))
যেমন একটি অপারেশন ব্যবহার , আমরা একটি অ্যারের "সমষ্টি" define করতে একটি = ( একটি 1 , একটি 2 , ... , একটি এন ) হিসাবে ( ⊕⊕a = ( a)1, ক2, … , কএন) আরও একটি অ্যারে দেওয়া বি = ( বি 1 , বি 2 , … , বি এন , বি এন + 1 ) এর সাথে একটি প্লাস এক অতিরিক্ত উপাদান x এর সমস্ত উপাদান রয়েছে, আমাদের এভাবে রয়েছে ( ⊕
( ⊕)ক ) = ক1⊕ ক2⊕ ⋯ ⊕ একটিএন।
খ = ( খ1, খ2, … , খএন, খn + 1)একটিএক্স , এবং তাই আমরা কম্পিউটিং দ্বারা এই অতিরিক্ত উপাদান পেতে পারবেন:
এক্স = ( ⊕( ⊕)খ ) = ( ⊕ )একটি ) ⊕ এক্সx = ( ⊕)খ ) ⊖ ( ⊕ক ) ।
উদাহরণস্বরূপ, যদি অ্যারে মান পূর্ণসংখ্যা, তারপর উপরন্তু (অথবা পূর্ণসংখ্যা মডুলার উপরন্তু সসীম দৈর্ঘ্যের ইন্টিজার ধরনের জন্য) অপারেটর হিসেবে ব্যবহার করা যাবে , বিপরীত অপারেশন হিসাবে বিয়োগ সঙ্গে ⊖ । অন্যথা, জন্য কোন ডাটা টাইপ যার মান নির্দিষ্ট দৈর্ঘ্যের বিট স্ট্রিং হিসাবে প্রতিনিধিত্ব করা যেতে পারে, আমরা ব্যবহার করতে পারি XOR যাও, bitwise উভয় হিসাবে ⊕ এবং ⊖ ।⊕⊖⊕⊖
আরও সাধারণভাবে, আমরা এমনকি বিভাজ্য দৈর্ঘ্যের স্ট্রিংগুলিতে বিটওয়াইজ এক্সওআর পদ্ধতিটি প্রয়োগ করতে পারি, প্রয়োজনীয় দৈর্ঘ্য পর্যন্ত প্যাডিং করে যতক্ষণ না শেষ পর্যন্ত প্যাডিংগুলি বিপরীতভাবে মুছে ফেলার কিছু উপায় থাকে।
কিছু ক্ষেত্রে, এটি তুচ্ছ। উদাহরণস্বরূপ, সি-স্টাইলের নাল টার্মিনেটেড বাইট স্ট্রিংগুলি স্পষ্টভাবে তাদের নিজস্ব দৈর্ঘ্যটি এনকোড করে, সুতরাং তাদের জন্য এই পদ্ধতিটি প্রয়োগ করা ন্যূনতম: দুটি স্ট্রিং জোড়িং করার সময়, দৈর্ঘ্যের মিলটি তৈরি করতে নাল বাইটের সাথে সংক্ষিপ্ত একটিকে প্যাড করুন এবং এর থেকে অতিরিক্ত কোনও ট্রিলিং নালগুলি ট্রিম করুন from চূড়ান্ত ফলাফল। লক্ষ্য করুন অন্তর্বর্তী XOR যাও-সমষ্টি স্ট্রিং পারেন নাল ধারণ বাইট, যদিও, তাই আপনি তাদের দৈর্ঘ্য স্পষ্টভাবে সংরক্ষণ করতে হবে (কিন্তু আপনি যদি শুধুমাত্র একটি বা সর্বাধিক তাদের দুটি প্রয়োজন হবে)।
1001232বাইট দীর্ঘ, আমরা প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য 32-বিট পূর্ণসংখ্যার হিসাবে এনকোড করতে পারি এবং স্ট্রিংটিতে এটি প্রেন্ডেন্ড করতে পারি। অথবা আমরা কিছু উপসর্গ কোড ব্যবহার করে নির্বিচারে স্ট্রিং দৈর্ঘ্য এনকোড করতে পারি এবং স্ট্রিংগুলিতে সেগুলি প্রিপেন্ড করতে পারি। অন্যান্য সম্ভাব্য এনকোডিংগুলিও বিদ্যমান।
Θ(n)
একমাত্র সম্ভাব্য জটিল অংশটি হ'ল, বাতিলকরণের কাজ করার জন্য, প্রতিটি মানের জন্য আমাদের একটি অনন্য ক্যানোনিকাল বিটস্ট্রিং উপস্থাপনা চয়ন করতে হবে, যা দু'টি অ্যারের ইনপুট মানগুলি দেওয়া যেতে পারে তবে এটি কঠিন (প্রকৃতপক্ষে সম্ভাব্য এমনকি গণ্যও অনস্বীকার্য) হতে পারে বিভিন্ন সমতুল্য উপস্থাপনা। এটি অবশ্য এই পদ্ধতির নির্দিষ্ট দুর্বলতা নয়; এই সমস্যা সমাধানের অন্য কোনও পদ্ধতিও যদি ব্যয় করতে পারে যদি ইনপুটটিতে এমন মান থাকতে পারে যার সমতুল্যতা অনস্বীকার্য।