আমি কীভাবে দক্ষতার সাথে গাদা থেকে মোজা জোড়া করতে পারি?


3911

গতকাল আমি পরিষ্কার লন্ড্রি থেকে মোজা জোড় করছিলাম এবং এটি যেভাবে করছিলাম তা খুব কার্যকর নয় is আমি একটি নির্লজ্জ অনুসন্ধান করছিলাম - একটি জোয়াল বাছাই করা এবং এটির জুড়িটি খুঁজে পেতে গাদাটি "পুনরাবৃত্তি করা"। এই N / 2 * এন / 4 = ঢ উপর iterating প্রয়োজন 2 /8 গড়ে মোজা।

কম্পিউটার বিজ্ঞানী হিসাবে আমি ভাবছিলাম আমি কী করতে পারি? বাছাই করা (আকার / রঙ / ... অনুযায়ী) অবশ্যই একটি O (NlogN) সমাধান অর্জন করতে মনে আসল।

হ্যাশিং বা অন্য জায়গায় না থাকা সমাধানগুলি কোনও বিকল্প নয়, কারণ আমি আমার মোজাগুলির সদৃশ করতে সক্ষম নই (যদিও আমি পারতাম তবে এটি দুর্দান্ত হতে পারে)।

সুতরাং, প্রশ্নটি মূলত:

nমোজাগুলির জোড়াগুলির একটি গাদা দেওয়া , এতে 2nউপাদান রয়েছে (ধরুন প্রতিটি ঝুলিতে ঠিক একটি মিলের জুড়ি রয়েছে), লগারিদমিক অতিরিক্ত স্থান পর্যন্ত দক্ষতার সাথে তাদের যুক্ত করার সর্বোত্তম উপায় কী? (আমি বিশ্বাস করি প্রয়োজনের পরিমাণে আমি সেই পরিমাণ তথ্য মনে করতে পারি))

আমি নীচের দিকগুলি সম্বোধন করে এমন একটি উত্তরকে প্রশংসা করব:

  • বিপুল সংখ্যক মোজার জন্য একটি সাধারণ তাত্ত্বিক সমাধান।
  • মোজাগুলির আসল সংখ্যা এত বড় নয়, আমি আমার স্ত্রীকে বিশ্বাস করি না এবং আমার কাছে 30 টিরও বেশি জোড় রয়েছে have (এবং আমার মোজা এবং তাঁর মধ্যে পার্থক্য করা মোটামুটি সহজ; এটিও কি ব্যবহার করা যেতে পারে?)
  • এটি উপাদান স্বতন্ত্রতা সমস্যার সমতুল্য ?

448
লন্ড্রি গাদা থেকে একে একে যুক্ত করতে কবুতরের ছিদ্র নীতিটি ব্যবহার করি। আমার মোজা 3 টি বিভিন্ন রঙের (লাল, নীল এবং সবুজ) এবং প্রতিটি রঙের 2 জোড়া রয়েছে। আমি প্রতিবার 4 সংখ্যক মোজা সংগ্রহ করি এবং আমি সর্বদা একটি জুড়ি তৈরি করি এবং কাজ করতে চাই।
শ্রীনিবাস

59
তবুও আরেকটি কবুতরের ছিদ্র নীতি: আপনি যদি এন / 2 +1 মোজার একটি উপসেট গ্রহণ করেন তবে এই উপসেটটিতে কমপক্ষে একটি জোড়া থাকতে হবে
ওয়াইল্ডপ্লেজার

40
দুর্দান্ত প্রশ্ন! আপনার জন্য একটি সম্পর্কিত সমস্যার উপর আমার প্রবন্ধে, যা গাদা থেকে বের দুই মিলেছে মোজা কাছে সম্ভাবনা একটি আলোচনা আগ্রহী হতে পারে: blogs.msdn.com/b/ericlippert/archive/2010/03/22/...
এরিক লিপার্ট

335
বাচ্চাটিকে কেন স্প্যান করবেন না এবং waitpidতাই পিতা-মাতা হিসাবে আপনি নিজেও কোনও মোজা বাছাই করছেন না?
ম্যাক্সেক

137
আমি কেবল সাদা হাঁটু-উচ্চ মোজাগুলির মালিক হয়ে এই সমস্যাটি সমাধান করেছি। তারা সব মিলছে। আমি কেবল গাদা থেকে যেকোন দুটি মোজা এলোমেলোভাবে ধরতে পারি এবং সেগুলি মিলবে। মোজাটি জোড়া না দিয়ে আমি সমস্যাটি আরও সহজ করে তুলছি। আমার কাছে একটি মোজা ড্রয়ার রয়েছে যা আমি কেবল আমার সমস্ত মোজা অবিবাহিত throw আমি প্রতিদিন সকালে ড্রয়ার থেকে দু'জনকে এলোমেলো করে ধরি। আমি এটিকে ও (0) এ সরল করে দিয়েছি। এর চেয়ে সহজ আর কিছু পাচ্ছে না। :)
লি

উত্তর:


2448

বাছাইয়ের সমাধানগুলির প্রস্তাব দেওয়া হয়েছে, তবে বাছাই করা একটু বেশিই : আমাদের আদেশের দরকার নেই; আমাদের কেবল সমতা গ্রুপ দরকার

সুতরাং হ্যাশিং যথেষ্ট হবে (এবং দ্রুত)।

  1. মোজা প্রতিটি রঙের জন্য, একটি গাদা গঠন । আপনার ইনপুট ঝুড়িতে সমস্ত মোজা নেভিগেশন Iterate এবং রঙ গাদা মধ্যে বিতরণ
  2. প্রতিটি স্তূপের উপরে ইটারেট করুন এবং এটি অন্য কয়েকটি মেট্রিক (উদাহরণস্বরূপ) পাইলসের দ্বিতীয় সেটটিতে বিতরণ করুন
  3. যতক্ষণ না আপনি দর্শনীয়ভাবে তাত্ক্ষণিকভাবে প্রক্রিয়া করতে পারেন এমন সমস্ত মোজা খুব ছোট পাইলগুলিতে বিতরণ না করা পর্যন্ত এই স্কিমটি পুনরাবৃত্তি করুন

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

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

যদি প্রতিটি ঝুলির "পেয়ারআইডিডি" নামক একটি পূর্ণসংখ্যা থাকে তবে সহজেই PairID % 10(শেষ অঙ্ক) অনুযায়ী 10 বালতিতে বিতরণ করা যেতে পারে ।

আমি ভাবতে পারি সেরা রিয়েল-ওয়ার্ল্ড বিভাজন হ'ল পাইলসের একটি আয়তক্ষেত্র তৈরি করা : একটি মাত্রা রঙ, অন্যটি নিদর্শন। কেন একটি আয়তক্ষেত্র? কারণ আমাদের পাইলগুলিতে ও (1) এলোমেলোভাবে অ্যাক্সেস দরকার। (একটি 3 ডি কিউবয়েডও কাজ করবে তবে এটি খুব ব্যবহারিক নয় is)


হালনাগাদ:

সমান্তরালতা সম্পর্কে কি ? একাধিক মানুষ কি মোজাগুলি দ্রুত মেলাতে পারে?

  1. সবচেয়ে সহজ সমান্তরাল কৌশল হ'ল একাধিক কর্মী ইনপুট ঝুড়ি থেকে নিয়ে এবং মোজাটি গাদাগুলিতে রাখে। এটি কেবলমাত্র এত পরিমাণে স্কেল করে - কল্পনা করুন যে 100 জন লোক 10 টি পাইলের বেশি লড়াই করছেন। সিঙ্ক্রোনাইজেশন ব্যয় (হ্যান্ড-সংঘর্ষ এবং মানব যোগাযোগ হিসাবে নিজেকে প্রকাশ করে) দক্ষতা এবং গতি বৃদ্ধি করে ( ইউনিভার্সাল স্কেলাবিলিটি আইন দেখুন !)। এটি কি অচল হয়ে পড়েছে ? না, কারণ প্রতিটি কর্মীকে একবারে কেবল একটি গাদা প্রবেশ করতে হবে। একটি মাত্র "লক" দিয়ে কোনও অচলাবস্থা থাকতে পারে না। লাইভলকগুলি পাইলসের অ্যাক্সেসকে কীভাবে সমন্বয় করে তার উপরে নির্ভর করে। তারা কেবল এলোমেলো ব্যাকঅফ ব্যবহার করতে পারেনেটওয়ার্ক কার্ডগুলি শারীরিক স্তরে এমনটি করে যা কোনও কার্ডটি কেবল নেটওয়ার্ক তারে অ্যাক্সেস করতে পারে তা নির্ধারণ করার জন্য। যদি এটি এনআইসির পক্ষে কাজ করে তবে এটি মানুষের জন্যও কাজ করা উচিত।
  2. এটি প্রতিটি কর্মীর নিজস্ব পাইলসের সেট থাকলে প্রায় অনির্দিষ্টকালের জন্য এটি স্কেল করে । তারপরে শ্রমিকরা ইনপুট ঝুড়ি থেকে মোজাগুলির বড় অংশগুলি নিতে পারে (তারা খুব কমই এগুলি করছিল কারণ তারা এটি খুব কমই করছে) এবং মোজাগুলি বিতরণ করার সময় তাদের একত্রীকরণের প্রয়োজন হয় না (কারণ তাদের থ্রেড-লোকাল পাইল রয়েছে)। শেষে, সমস্ত কর্মীদের তাদের পাইলস সেটগুলি একত্রিত করতে হবে। আমি বিশ্বাস করি যে ও (লগ (কর্মী অনুসারে কর্মী গণনা * পাইলস)) এ কাজ করা যেতে পারে যদি শ্রমিকরা একটি সংগ্রহ গাছ তৈরি করে

উপাদান স্বতন্ত্রতা সমস্যা সম্পর্কে কি ? নিবন্ধে বলা হয়েছে, উপাদান স্বতন্ত্রতা সমস্যা সমাধান করা যেতে পারে O(N)। মোজা সমস্যার ক্ষেত্রে এটি একই রকম (এছাড়াও O(N), যদি আপনার কেবলমাত্র একটি বিতরণের পদক্ষেপের প্রয়োজন হয় (আমি একাধিক পদক্ষেপের প্রস্তাব দিয়েছিলাম কারণ শুধুমাত্র মানুষ গণনায় খারাপ) - আপনি যদি বিতরণ করেন তবে একটি পদক্ষেপ যথেষ্ট md5(color, length, pattern, ...), অর্থাত্ সমস্ত গুণাবলীর একটি নিখুঁত হ্যাশ ))।

স্পষ্টতই, এর চেয়ে দ্রুত আর কেউ যেতে পারে না O(N), তাই আমরা সর্বোত্তম নিম্ন সীমানায় পৌঁছেছি ।

যদিও ফলাফলগুলি হুবহু এক নয় (এক ক্ষেত্রে কেবল একটি বুলিয়ান the অন্য ক্ষেত্রে, মোজারের জোড়), অ্যাসিপটোটিক জটিলতা একই the


72
ঠিক এটাই আমি করি! আমি মোজাটি খোলার শৈলীর উপর নির্ভর করে পাইলস তৈরি করি (আমার কাছে কেবল সাদা আছে), যা আমাকে প্রত্যেকটিকে দ্রুত মেলে যথেষ্ট "বালতি" দেয়।
স্কট চেম্বারলাইন

29
আমি আমার মোজা দিয়ে এটি চেষ্টা করেছি (আমি সহজেই 30+ জোড়া পেয়েছি) এবং এটি দ্রুততম মানুষ। একটি সমস্যা আমি খুঁজে পেয়েছি যখন আমার কাছে যথেষ্ট পরিমাণে হ্যাশ অ্যালগরিদম না থাকতে পারে (কোনও ধরণের ছাড়াই আমি প্রচুর সাদা মোজা পেয়েছি) তাই এটি শক্ত হয়ে যায়। সেক্ষেত্রে এটি করার সর্বোত্তম উপায় কী হবে?
নোটিংিংস ইম্পসিবল

56
@ নথিংসআইপসিবল, হ্যাশের সংঘর্ষের আক্রমণগুলি কোনও দুর্বল ওয়েব-সার্ভারের মতো অনুভব করে! সাদা মোজা কিছু বৈশিষ্ট্য দ্বারা পৃথকযোগ্য? তাদের বিতরণ করতে পারে এমন কিছু অবশ্যই আছে। অন্যথায়, আপনি স্বেচ্ছায় জোড়গুলি গঠন করতে পারেন।
usr

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

49
যে ছেলেটির সাথে আমি কলেজে গিয়েছিলাম তার আসলে পেয়ারআইডিস ছিল। এটি থ্রেড সহ প্রতিটি জুতা মোজা উপর সেলাই করা ছিল: 1, 2, 3, 4 ...
রায়ান লুন্ডি

579

যেহেতু মানব মস্তিষ্কের স্থাপত্যটি একটি আধুনিক সিপিইউর চেয়ে সম্পূর্ণ পৃথক, এই প্রশ্নটি ব্যবহারিকভাবে বোঝায় না।

মানুষ সিপিইউ অ্যালগরিদমের উপরে জয় অর্জন করতে পারে এই সত্যটি ব্যবহার করে যে "একটি ম্যাচিং জুটি সন্ধান করা" একটি সেট খুব বেশি বড় নয় এমন একটি অপারেশন হতে পারে।

আমার অ্যালগরিদম:

spread_all_socks_on_flat_surface();
while (socks_left_on_a_surface()) {
     // Thanks to human visual SIMD, this is one, quick operation.
     pair = notice_any_matching_pair();
     remove_socks_pair_from_surface(pair);
}

কমপক্ষে এটিই আমি বাস্তব জীবনে ব্যবহার করছি এবং আমি এটি খুব দক্ষ বলে মনে করি। খারাপ দিকটি এটির জন্য সমতল পৃষ্ঠের প্রয়োজন, তবে এটি সাধারণত প্রচুর পরিমাণে।


228
মোজার সংখ্যা বাড়ার সাথে সাথে মানুষের সিমডি সিপিইউর চেয়ে ভাল হয় না।
মিথ্যা রায়ান

25
সেরা উত্তর, আইএমও। যদিও এটি মজাদার এবং চতুর (এবং এসও এর জন্য উপযুক্ত) একটি কম্পিউটার অ্যালগোরিদমে প্রতিদিন-প্রতিদিনের সমস্যা হ্রাস করার জন্য, এটি eye 60 মোজা হিসাবে ছোট একটি সেট হিসাবে মানুষের চোখ / মস্তিষ্কের রেজোলিউশন শক্তিটি ব্যবহার করা আরও বেশি বোধগম্য।
ড্রাগ_ইউজার 841417

13
@ লিরিয়ান যদি মোজাগুলি সমানভাবে বিতরণ করা হয় তবে আপনি জন্মদিনের প্যারাডক্সের কারণে মোজাগুলির পর্যাপ্ত পরিমাণে কোনও ছোট সেটগুলিতে একটি জুটি লক্ষ্য করবেন (যদি না আপনি সালিশী নির্ভুলতার সাথে রঙগুলি আলাদা করতে না পারেন, যা আমি সন্দেহ করি) তাই এখানে বাধাটি না হয়ে থাকত here মানব রঙ মেলে অ্যালগরিদম কিন্তু ছড়িয়ে পড়া পদক্ষেপ।
টমাস

13
@ dpc.ucore.info না, কারণ তাদের বোনা কাফের ধরণগুলি, কাফের দৈর্ঘ্য, সামগ্রিক দৈর্ঘ্য এবং কালো ছায়াছবি রয়েছে (আমার স্ত্রী সম্ভবত শেষের জন্য আমাকে শারীরিকভাবে আহত করবে)।
খ্রিস্টান

199
আপনার আরও ভাল মোজা ছিল আশা করি, অন্যথায় আপনি দীর্ঘ সময়ের জন্য মোজা ভাঁজ হতে চলেছেন ...
প্যাট্রিক জেমস ম্যাকডগল

258

কেস 1 : সমস্ত মোজা অভিন্ন (উপায় দ্বারা আমি বাস্তব জীবনে এটিই করি)।

একটি জুড়ি তৈরি করতে তাদের যে কোনও দুটি বাছাই করুন। ধ্রুব সময়।

কেস 2 : স্থির সংখ্যক সমন্বয় রয়েছে (মালিকানা, রঙ, আকার, জমিন ইত্যাদি)।

ব্যবহারের সাজানোর Radix । এটি কেবল রৈখিক সময় যেহেতু তুলনা প্রয়োজন হয় না।

কেস 3 : সংমিশ্রণের সংখ্যা আগে থেকে জানা নেই (সাধারণ কেস)।

দুটি মোজা জোড়ায় আসে কিনা তা পরীক্ষা করতে আমাদের তুলনা করতে হবে। এক চয়ন করুন O(n log n)তুলনা ভিত্তিক বাছাই আলগোরিদিম।

তবে বাস্তব জীবনে যখন মোজার সংখ্যা তুলনামূলকভাবে কম (ধ্রুবক) থাকে, তখন এই তাত্ত্বিকভাবে অনুকূল অ্যালগরিদমগুলি ভাল কাজ করে না। এটি অনুক্রমিক অনুসন্ধানের চেয়ে আরও বেশি সময় নিতে পারে, যা তাত্ত্বিকভাবে চতুর্ভুজ সময় প্রয়োজন requires


8
> এটি ক্রমিক অনুসন্ধানের চেয়ে আরও বেশি সময় নিতে পারে, যার জন্য তত্ত্বের ক্ষেত্রে চতুর্ভুজ সময় প্রয়োজন। হ্যাঁ এজন্যই আমি এটি করা ঘৃণা করি, সম্ভবত আমার সমস্ত মোজা ফেলে দেওয়া উচিত এবং কেস 1 দিয়ে শুরু করা উচিত
নীল

57
সমস্ত অভিন্ন মোজা থাকার নীচের দিকটি হ'ল তারা বিভিন্ন হারে বয়সের দিকে ঝোঁক। সুতরাং আপনি এখনও তাদের জীর্ণের উপর ভিত্তি করে তাদের সাথে মেলে দেখার চেষ্টা করে শেষ করেছেন। (যা কেবল প্যাটার্ন অনুসারে কেবল মিলের চেয়ে শক্ত)
এসডিসি

118
Pairs০ জোড়া অভিন্ন মোজা থাকার সমস্যা "কারণ এটি জুড়ি সহজ করে তোলে" এটি হ'ল এটি কম্পিউটারের সাথে আপনার কাজ করার ধারণা দেয় people
স্টিভ আইভেস 12

13
কেস 1 স্থির সময় নয় যখন কোনও অপারেশন জড়িত থাকে, যেমন জোড়া ভাঁজ করে। এই ক্ষেত্রে, এটি সর্বনিম্ন ধ্রুবক ফ্যাক্টরের সাথে লিনিয়ার সময় (যার প্রমাণ পাঠকের জন্য অনুশীলন হিসাবে ছেড়ে গেছে)। একটি সম্ভবত একই সময়ে এক জোড়া এবং মোজা পূর্ণ বালতিটি একই সময় নিতে পারে না। তবে এটি রৈখিকভাবে স্কেল করে। আমদাহলের আইন অনুসারে, এর ওভারহেড উপেক্ষা করে সীমাহীন স্পিডআপ রয়েছে। গুস্তাফসনের আইন অনুসারে, ওভারহেড উপেক্ষা করে পর্যাপ্ত কর্মী (যার পরিমাণ পাঠকের জন্য অনুশীলন হিসাবে বাকি আছে) ভাঁজ করতে এক জোড়া ভাঁজ করতে আপনি যতগুলি জোড়া ভাঁজ করতে পারেন।
acelent

7
@ পাওলোমাদিরা বাছাই করা ধ্রুব সময় - আপনি কেবল স্তূপটি নিয়ে আপনার ড্রয়ারে রেখে দেন। এক্ষেত্রে একমাত্র অপারেশন আসলে আপনার পায়ে মোজা লাগানো যা স্থিরও। পারফরম্যান্স মোজা পরা মুলতুবি কার্যকর দ্বারা অর্জন করা হয়, সম্ভবত কিছু স্থান ত্যাগের সাথে (নন-ভাঁজ মোজাগুলির গ্রাসের স্থানটি ভাজ করা থেকে বড়) is আমি যুক্তি দিয়েছি যে এটি মূল্যবান; আমি সাধারণত আমার স্ত্রীর সাথে এই যুক্তিটি হারাতে পারি।
ট্র্যাভিস

157

অ-অ্যালগোরিদমিক উত্তর, তবুও "দক্ষ" যখন আমি এটি করি:

  • পদক্ষেপ 1) আপনার বিদ্যমান সমস্ত মোজা ফেলে দিন

  • পদক্ষেপ 2) ওয়ালমার্ট এ যান এবং 10 - এন প্যাকেট সাদা এবং এম প্যাকেট কালো। দৈনন্দিন জীবনে অন্য রঙের প্রয়োজন নেই।

তবুও বারবার, আমাকে আবার এটি করতে হবে (হারিয়ে যাওয়া মোজা, ক্ষতিগ্রস্ত মোজা ইত্যাদি), এবং আমি খুব ভাল ঘন ঘন ঘন মোজা ফেলে দিতে ঘৃণা করি (এবং আমি আশা করি তারা একই মোজা রেফারেন্স বিক্রি করে রাখে!), তাই আমি সম্প্রতি নিয়েছিলাম একটি ভিন্ন পদ্ধতির।

অ্যালগরিদমিক উত্তর:

দ্বিতীয় মোজা মোজাগুলির জন্য যদি আপনি কেবল একটি ঝোলা আঁকেন তবে এটি বিবেচনা করুন, নিখুঁত অনুসন্ধানে মেলানো মোজাটি খুঁজে পাওয়ার আপনার প্রতিক্রিয়াগুলি বেশ কম।

  • সুতরাং এলোমেলোভাবে এগুলির মধ্যে পাঁচটি বাছাই করুন এবং তাদের আকার বা দৈর্ঘ্য মুখস্থ করুন।

পাঁচটি কেন? সাধারণত মানুষেরা কার্যক্ষম স্মৃতিতে পাঁচ থেকে সাতটি পৃথক উপাদান স্মরণ করে রাখে - একটি আরপিএন স্ট্যাকের মানুষের সমতুল্য - পাঁচটি একটি নিরাপদ ডিফল্ট।

  • 2n-5 এর স্ট্যাক থেকে একটি বাছুন।

  • আপনি যে পাঁচটি আঁকেন তার ভিতরে এখন একটি ম্যাচ (ভিজ্যুয়াল প্যাটার্ন মেলানো - মানুষ এতে একটি ভাল স্ট্যাকের সাথে ভাল) সন্ধান করুন, যদি আপনি কোনওটি খুঁজে পান না, তবে এটি আপনার পাঁচটিতে যুক্ত করুন।

  • স্ট্যাক থেকে এলোমেলো মোজা তুলতে থাকুন এবং ম্যাচের জন্য আপনার 5 + 1 মোজার সাথে তুলনা করুন। আপনার স্ট্যাকটি বাড়ার সাথে সাথে এটি আপনার কার্যকারিতা হ্রাস করবে কিন্তু আপনার প্রতিকূলতা বাড়িয়ে তুলবে। অনেক দ্রুত.

ম্যাচের 50% প্রতিকূলতার জন্য আপনাকে কতগুলি নমুনা আঁকতে হবে তা গণনা করার জন্য সূত্রটি নির্দ্বিধায় লিখুন। আইআইআরসি এটি একটি হাইপারজমেট্রিক আইন।

আমি প্রতি সকালে এটি করি এবং খুব কমই তিনটির বেশি আঁকার প্রয়োজন - তবে আমার nঅনুরূপ জোড়া রয়েছে (প্রায় 10, হারিয়ে যাওয়াগুলি দিন বা নিন) mআকৃতির সাদা মোজা। এখন আপনি আমার স্টকের স্ট্যাকের আকারটি অনুমান করতে পারেন :-)

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


25
'অ-অ্যালগোরিদমিক' উত্তরের জন্য উত্সাহ দিন। এটি আমি যা করি ঠিক তা হয় এবং এটি আশ্চর্যজনকভাবে কাজ করে। প্রতি সকালে ধুয়ে থাকা মোজা রেখে এবং সকালে ড্রয়ারের সামনের দিক থেকে টেনে নিজের মোজা স্টকটি 'আবর্তিত' করে প্রতিস্থাপনের সমস্যাটি কোনও সমস্যা নয়। সমস্ত মোজা সমান পরেন। আমি যখন কিছু পরার বিষয়টি লক্ষ্য করি তখন আমি পুরো ক্লাসের মোজা সম্পূর্ণরূপে প্রতিস্থাপনের জন্য শপিং তালিকায় রাখি। পুরানো মোজাগুলির জন্য, আমি গুডউইলকে সেরা 20% দিয়েছি (একটি মুদি থলে বেঁধে দেওয়া যাতে তারা আবার মিশ্রিত না হয়) এবং বাকী অংশটি পিচ করে। আপনি মোজা নষ্ট করছেন না, এই মুহুর্তে, 80% কেবল যাইহোক 6 মাস বাকি রয়েছে।
ফাস্টআল

2
বিটিডাব্লু (১) আপনার মোজা বাঁধাইয়ের ফলে স্থিতিস্থাপক একটি প্রসারিত হয়ে যায় এবং এটি আরও দ্রুত ব্যর্থ হবে। আপনার যে ধরণের অনন্য মোজা রয়েছে তা সীমাবদ্ধ করা বাধ্যতামূলক বিন্যস্ত করে তোলে। (২) অনন্য মোজা সীমাবদ্ধ করার একটি অসুবিধা হ'ল নির্দিষ্ট ফ্যাশন উদ্বেগযুক্ত লোকদের জন্য, পদ্ধতিটি অনুপযুক্ত হতে পারে।
ফাস্টএল

3
আমি আপনার "অ-অ্যালগোরিদমিক" উত্তর পোস্ট করার জন্য এখানে বিশেষভাবে এসেছি। সত্য কম্পিউটার বিজ্ঞানের মতো, বেশিরভাগ লোকেরা ডেটা এবং এর কাঠামোর দিকে কখনই পর্যাপ্ত মনোযোগ দেয় না।
bkconrad

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

3
White n সাদা এবং এম প্যাকেটের কালো রঙের প্যাকেট। প্রতিদিনের জীবনে অন্য রঙের প্রয়োজন নেই easy সহজ মোজা নির্বাচনের জন্য একটি ভাল মানের নিয়মটি হ'ল এটি হ'ল আপনার ট্রাউজারের রঙ বা আপনার বেল্টের রঙের সাথে মেলে। এই কারণে, সর্বাধিক ব্যবহৃত রঙগুলি সম্ভবত কালো, নীল, ধূসর এবং কিছু বাদামী হবে। বিশ্বাস করা খুব কঠিন যে কারও একাধিক সাদা মোজা দরকার।
Andrea Lazzarotto

106

আমি যা করি তা হ'ল আমি প্রথম মোজাটি তুলে এটিকে নামিয়ে রাখি (বলুন, লন্ড্রি বাটির কিনারায়)। তারপরে আমি অন্য মোজা বাছাই করে দেখি যে এটি প্রথম মোজা হিসাবে একই if যদি তা হয় তবে আমি উভয়কেই সরিয়ে দিই। যদি তা না হয় তবে আমি এটি প্রথম মোজার পাশে রেখে দিয়েছি। তারপরে আমি তৃতীয় মোজাটি বেছে নিয়ে প্রথম দুটিটির সাথে এটি তুলনা করি (যদি তারা এখনও সেখানে থাকে)। প্রভৃতি

এই পদ্ধতিকে মোটামুটি সহজেই অ্যারেতে প্রয়োগ করা যেতে পারে, ধরে নিই যে মোজা "অপসারণ" একটি বিকল্প। আসলে, আপনার এমনকি মোজা "মুছে ফেলার" দরকার নেই। যদি আপনার মোজাগুলি বাছাই করার প্রয়োজন না হয় (নীচে দেখুন), তবে আপনি কেবল এগুলি ঘুরিয়ে নিতে পারেন এবং অ্যারে দিয়ে শেষ করতে পারেন যাতে সমস্ত মোজা অ্যারেতে জোড়ায় সাজানো থাকে।

ধরে নিই যে মোজাগুলির একমাত্র অপারেশনটি সাম্যের জন্য তুলনা করা, এই অ্যালগরিদমটি মূলত এখনও একটি এন 2 অ্যালগরিদম, যদিও আমি গড় কেস সম্পর্কে জানি না (কখনই এটি গণনা করতে শিখিনি)।

বাছাই করা অবশ্যই দক্ষতা উন্নত করে, বিশেষত বাস্তব জীবনে যেখানে আপনি আরও দুটি মোজার মধ্যে একটি ঝোলা সহজেই "সন্নিবেশ" করতে পারেন। কম্পিউটিংয়ে একটি গাছ দ্বারা এটি অর্জন করা যেতে পারে তবে এটি অতিরিক্ত জায়গা। এবং অবশ্যই, আমরা NlogN এ ফিরে এসেছি (বা আরও কিছুটা, যদি বেশ কয়েকটি মোজা থাকে যা মানক্রম অনুসারে বাছাই করে একই, তবে একই জুটি থেকে নয়)।

তা ছাড়া, আমি কিছুই ভাবতে পারি না, তবে এই পদ্ধতিটি বাস্তব জীবনে বেশ দক্ষ বলে মনে হচ্ছে। :)


7
এটি আমি যা করি তাও, (দ্রষ্টব্য যে আপনি যদি খালি জায়গা ছেড়ে যান তবে সন্নিবেশগুলি ও (1)) হয় তবে এটি তাত্ত্বিকভাবে বৃহত সংখ্যক মোজা দ্বারা স্কেল করে।
মাকিং হাঁস

15
এর তাত্ত্বিক বৃহৎ সংখ্যার দুর্বল আইশ ধরনের মোজা
স্টিভেন লু

@ স্টিভেনলু - যেমনটি আমি বলেছি - এটি এন * এন বা এনলগ, আপনি এটি বাছাই করুন বা না তার উপর নির্ভর করে। সুতরাং এটি কোনও বাছাইকরণ অ্যালগরিদমের মতোই দরিদ্র sc আপনি যদি দ্রুত চান, তাদের নম্বর দিন এবং রেডিক্স বাছাই করুন।
Vilx-

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

3
2 টি মোজারের মধ্যে মোজা সন্নিবেশ করানোর সাথে জুটি তৈরির মোজার লক্ষ্যটি কী সরবরাহ করে? মোজার কোনও কার্ডিনালিটি নেই। : -x
জোব্রোকহাউস

60

এটি ভুল প্রশ্ন জিজ্ঞাসা করছে। সঠিক প্রশ্নটি জিজ্ঞাসা করা হ'ল, আমি মোজা বাছাই করতে কেন সময় ব্যয় করছি? আপনি যখন নিজের পছন্দের এক্স আর্থিক ইউনিটগুলির জন্য আপনার ফ্রি সময়কে মূল্য দেন তখন বার্ষিক ভিত্তিতে এর কত খরচ হয়?

এবং প্রায়শই না করা, এটি কেবল কোনও নিখরচায় সময় নয়, এটি সকালের ফ্রি সময়, যা আপনি বিছানায় কাটাতে পারেন, বা আপনার কফিকে চুমুক দিয়েছিলেন, বা কিছুটা তাড়াতাড়ি রেখে যান এবং ট্র্যাফিকের কবলে পড়েছেন না।

প্রায়শই একটি পদক্ষেপ ফিরে নেওয়া এবং সমস্যার আশেপাশের উপায় চিন্তা করা ভাল good

এবং একটি উপায় আছে!

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

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

আপনি যদি বিভিন্ন বাম এবং ডান মোজা দিয়ে অভিনব জুড়িটি বেছে নিয়ে থাকেন তবে পুরো বালতিটি বাম এবং ডান পায়ের বালতিতে ও (এন + এম) নিন, যেখানে এন মোজার সংখ্যা এবং এম উপরের মতোই। অন্য কেউ প্রথম জোড় সন্ধানের গড় পুনরুক্তির সূত্রটি দিতে পারে, তবে অন্ধ অনুসন্ধানের সাথে একটি জুড়ি খুঁজে পাওয়ার জন্য সবচেয়ে খারাপ ঘটনাটি N / 2 + 1, যা যুক্তিসঙ্গত এন এর জন্য জ্যোতির্বিজ্ঞানের অসম্ভব কেস হয়ে যায়। উন্নত চিত্র ব্যবহার করে এটিকে আরও বাড়ানো যেতে পারে স্বীকৃতি অ্যালগরিদম এবং হিউরিস্টিক্স, যখন এম কে 1 আইবলের সাথে অরসোর্টেড মোজার গাদা স্ক্যান করে ।

সুতরাং, ও (1) সক পেয়ারিং দক্ষতা অর্জন করার জন্য (প্রতিসম মোজা ধরে নেওয়া) একটি অ্যালগরিদম হ'ল:

  1. আপনার সারা জীবনের জন্য আপনাকে কত জোড়া মোজা লাগবে তা অনুমান করতে হবে, বা অবসর নেওয়ার আগ পর্যন্ত আর কখনও মোজা পরার দরকার নেই এমন উষ্ণ জলবায়ুর দিকে না যাওয়া পর্যন্ত। আপনি যদি যুবক হন তবে আপনিও অনুমান করতে পারেন যে আমাদের ঘরে ঘরে সক্কর বাছাই করা রোবটগুলি নেওয়ার আগে এটি কতটা সময় নেয় এবং পুরো সমস্যাটি অপ্রাসঙ্গিক হয়ে যায়।

  2. আপনার নির্বাচিত মোজাটি কীভাবে আপনি প্রচুর পরিমাণে অর্ডার করতে পারেন এবং এটির কত ব্যয় হয় এবং তারা কী সরবরাহ করে তা আপনাকে খুঁজে বের করতে হবে।

  3. মোজা অর্ডার!

  4. আপনার পুরানো মোজা পরিত্রাণ পান।

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

সমস্যা সমাধান. সুতরাং, কেবল নতুন মোজা পান, আপনার পুরানোগুলি ফেলে দিন / দান করুন এবং আপনি সারাজীবন প্রতিদিন অর্থ এবং সময় সাশ্রয় করছেন তা জেনে সুখের সাথে বাঁচুন।


একটি আজীবন (75 বছর ধরে ধরে) মোজার সরবরাহ (আপনি 4 জোড় / মাস নিঃসরণ ধরে নিচ্ছেন, যেটি 3600 জোড়া তৈরি করে) ধরে নেওয়া হবে (ধরে নেওয়া নতুন মোজা 20 কিউবিক ইঞ্চি ধরে) মোট 1 1/2 ঘন গজ। এটি একটি বিশাল পরিমাণ স্থান। ধরে নিলাম তারা এটিকে আপনার কাছে একটি বাক্সে পৌঁছেছে যা মোটামুটি কিউব, সেই ক্রেটটি একপাশে প্রায় 3 ফুট 4 ইঞ্চি হবে।
এজেম্যানসফিল্ড

2
@ এজেমনসফিল্ড বৈধ উদ্বেগ তবে আমি আপনার কয়েকটি সংখ্যার সাথে একমত নই। আমি মাত্র 40 বছর (25 ... 65) টাইমস্প্যান নেব (পিতা-মাতা / আস্তানা / ইত্যাদিতে বসবাস না করা এবং অবসর নেওয়ার মধ্যে সময়, উপরে দেখুন)। এছাড়াও, আমি মনে করি যে এক জোড়া মূল প্যাকেজিংয়ে 0,5x4x6 ইঞ্চির মতো বেশি লাগে। এই সংখ্যাগুলি আপনার স্থানটিকে বেশ খানিকটা নিচে নামায়!
হাইড

চতুর্থ ধাপটি অযথা অপ্রয়োজনীয়, -১।
ড্যান বেচার্ড

2
অন্যদের জন্য গাইড যিনি এজেম্যানসফিল্ডের পরিমাপ দ্বারা বিভ্রান্ত হতে পারেন, মেট্রিকের একটি অনুবাদ: take এটি গ্রহণ করবে (নতুন জোতা মোজা 327 সেন্টিমিটার গ্রহণ করে) মোট ১.১৪ মিলিয়ন মাইল ³ এটি একটি বিশাল পরিমাণ স্থান। ধরে নিই তারা এগুলি আপনার কাছে একটি বাক্সের কাছে পৌঁছেছে যা মোটামুটি কিউব, সেই ক্রেটটি একপাশে প্রায় 1.04 মিটার হবে «
জোয়

কৌতূহল-ভিত্তিক প্রশ্ন কীভাবে "ভুল প্রশ্ন" হতে পারে? ক্লাসিক স্ট্যাক ওভারফ্লো ...
টিম্ম্ম্ম

52

তাত্ত্বিক সীমাটি হ'ল (এন) কারণ আপনাকে প্রতিটি ঝাঁকুনি স্পর্শ করতে হবে (যদি না কেউ ইতিমধ্যে কোনওভাবে জোড়া তৈরি করে)।

আপনি রেডিক্স বাছাই করে ও (এন) অর্জন করতে পারেন । আপনাকে কেবল বালতিগুলির জন্য কিছু বৈশিষ্ট্য বাছাই করতে হবে।

  1. প্রথমে আপনি (তাঁর, আমার) চয়ন করতে পারেন - এগুলিকে 2 টি পাইলে বিভক্ত করুন,
  2. তারপরে রঙগুলি ব্যবহার করুন (বর্ণগুলির বর্ণের সাথে বর্ণের জন্য কোনও ক্রম থাকতে পারে) - রঙের সাহায্যে পাইলগুলিতে বিভক্ত করুন (একই স্তূপের সমস্ত মোজার জন্য প্রথম ধাপ থেকে প্রাথমিক ক্রমটি মনে রাখবেন),
  3. তারপর মোজা দৈর্ঘ্য,
  4. তারপরে টেক্সচার, ....

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


3
মোজা প্রায়শই 4-প্যাক এবং বৃহত্তর আসে, যেহেতু এটি সস্তা, তবে এটি তাদেরকে পৃথক পৃথক করে তোলে। এটির মোকাবিলা করার জন্য, আমার স্ত্রী আমি যে প্রতিটি মোজা কিনে তা নতুন জোড়ায় একটি ছোট চিহ্ন সেলাই করে। চিহ্নটি প্রতিটি জুটির জন্য আলাদা রঙের, বা যদি তার রঙ বাদ পড়ে তবে আলাদা আকৃতির। এই পদ্ধতির সাথে আপনার এমনকি বৈশিষ্ট্যের একটি সীমিত সেট প্রয়োজন হয় না। কেবল প্রতিটি জোড়ায় একটি অনন্য নম্বর সেলাই করুন। :) অতিরিক্ত পয়েন্টগুলির জন্য, বাইনারি ব্যবহার করুন।
ভিলাক্স- 21

29
@ ভিলক্স- কেন?!? পুরো পয়েন্টটি কি এগুলি আলাদা করা যায় না?
ফ্লপ

2
@ ফ্লুপ - আমি মনে করি পুরো পয়েন্টটি বড় আকারের বান্ডিলগুলিতে বিক্রি করা। :) আমার হিসাবে এটি এগুলিকে জোড়ায় পরতে সাহায্য করে। অন্যথায় আমি তিনটি খুব পরা মোজা এবং একটি একেবারে নতুন একটি দিয়ে শেষ করতে পারি। কিন্ডা মূর্খ।
Vilx-

13
আমি ও (এন) এর গণনার সাথে একমত নই। $ কে $ কী? $ k গুণাবলীর সংখ্যা। আমি যুক্তি দেব $ k $ হ'ল $ O (লগ এন) $ কারণ প্রতিটি জুটিকে স্বতন্ত্রভাবে সনাক্ত করার জন্য এটি পর্যাপ্ত পরিমাণে থাকতে হবে। আপনার যদি 2 জোড়া (কালো এবং সাদা) থাকে তবে রঙ ($ কে = 1, এন = 2 $) যথেষ্ট। যদি আপনার এক জোড়া কালো হয়, সংক্ষিপ্ত; এক জোড়া কালো, দীর্ঘ; এক জোড়া সাদা, সংক্ষিপ্ত; এবং এক জোড়া সাদা, লম্বা - তারপরে $ k = 2, n = 4 $ $ তারপরে যদি আমরা $ কে limit সীমাবদ্ধ করি তবে আমরা একই সময়সীমায় $ n $ $ যদি আমরা limit n limit সীমাবদ্ধ করতে চলেছি তবে অর্ডার গণনাটি আর বোঝা যায় না।
এমুরি

3
@ এমরি, আমি মনে করি যে আপনি $আপনার স্টাফ কোড-ওয়াই করে দেওয়ার জন্য আপনি চরিত্রটি নয়, চরিত্রটি নয়, ব্যাকটিক খুঁজছেন ।
জিমোস্টেক

33

ব্যবহারিক সমাধান হিসাবে:

  1. সহজেই আলাদা আলাদা মোজাগুলির গাদা দ্রুত তৈরি করুন। (রঙ দিয়ে বলুন)
  2. প্রতিটি স্তূপ Quicksort এবং তুলনা জন্য মোজা দৈর্ঘ্য ব্যবহার করুন। একজন মানুষ হিসাবে আপনি একটি মোটামুটি দ্রুত সিদ্ধান্ত নিতে পারেন যা কোন বিভাজনকে ব্যবহার করে সবচেয়ে খারাপ পরিস্থিতি এড়ায় ock (আপনি সমান্তরালভাবে একাধিক মোজা দেখতে পারেন, এটি আপনার সুবিধার জন্য ব্যবহার করুন!)
  3. পাইলস বাছাই করা বন্ধ করুন যখন তারা এমন এক প্রান্তে পৌঁছে যান যেখানে আপনি ঝটপট দাগ জুটি এবং অপ্রয়োজনীয় মোজা খুঁজে পেতে স্বাচ্ছন্দ্য বোধ করেন

যদি আপনার 8 টি রঙ এবং গড় বিতরণ সহ 1000 মোজা থাকে তবে আপনি সি * এন সময়ে প্রতিটি 125 মোজার 4 টি পাইল তৈরি করতে পারেন। 5 মোজার প্রান্তিকের সাহায্যে আপনি প্রতিটি গাদা 6 রানে বাছাই করতে পারেন। (ডান গাদাতে একটি ঝুলি ছুঁড়ে ফেলতে 2 সেকেন্ড গণনা করা আপনার পক্ষে 4 ঘন্টারও কম সময় লাগবে))

আপনার যদি মাত্র 60 মোজা, 3 টি রঙ এবং 2 ধরণের মোজা (আপনার / আপনার স্ত্রীর) থাকে তবে আপনি 10 মোজার প্রতিটি গাদা 1 রান (বাছাইয়ের প্রান্তে = 5) বাছাই করতে পারেন। (2 সেকেন্ড গণনা করতে এটি আপনাকে 2 মিনিট সময় নেবে)।

প্রাথমিক বালতি বাছাই করা আপনার প্রক্রিয়াটিকে ত্বরান্বিত করবে, কারণ এটি আপনার এন মোজাগুলিকে c*nসময়মতো কে বালতিতে ভাগ করে দেয় তাই আপনাকে কেবল c*n*log(k)কাজ করতে হবে । (দোরগোড়ায় আমলে নিচ্ছেন না)। সুতরাং আপনি সমস্ত n*c*(1 + log(k))কাজ সম্পর্কে যা করেন তা হল, যেখানে সি সময় একটি স্তূপের উপর একটি মোজা নিক্ষেপ করার সময়।

c*x*n + O(1)মোটামুটি দীর্ঘস্থায়ী যে কোনও পদ্ধতির তুলনায় এই পদ্ধতির পক্ষে অনুকূল হবে log(k) < x - 1


কম্পিউটার বিজ্ঞানে এটি সহায়ক হতে পারে: আমাদের এন জিনিসগুলির একটি সংগ্রহ রয়েছে , তাদের উপর একটি অর্ডার (দৈর্ঘ্য) এবং সমতা সম্পর্ক (অতিরিক্ত তথ্য, উদাহরণস্বরূপ মোজার রঙ) ks সমতা সম্পর্ক আমাদের মূল সংগ্রহের একটি বিভাজন তৈরি করতে দেয় এবং প্রতিটি সমতুল্য শ্রেণিতে এখনও আমাদের অর্ডার বজায় থাকে। এর সমতুল্য শ্রেণিতে কোনও জিনিসের ম্যাপিং O (1) এ করা যায়, সুতরাং প্রতিটি আইটেমকে একটি শ্রেণিতে বরাদ্দ করার জন্য কেবল ও (এন) প্রয়োজন needed এখন আমরা আমাদের অতিরিক্ত তথ্য ব্যবহার করেছি এবং প্রতিটি ক্লাসকে বাছাই করতে যে কোনও উপায়ে এগিয়ে যেতে পারি। সুবিধাটি হ'ল ডেটা সেটগুলি ইতিমধ্যে উল্লেখযোগ্যভাবে ছোট।

পদ্ধতিটি নীচে বাসাতে পারে, যদি আমাদের একাধিক সমতুল্য সম্পর্ক থাকে -> রঙের পাইলগুলি টেক্সচারের প্রতিটি পাইল পার্টিশনের মধ্যে, দৈর্ঘ্যের ভিত্তিতে বাছাইয়ের চেয়ে। সমান আকারের প্রায় 2 টিরও বেশি উপাদানগুলির সাথে একটি পার্টিশন তৈরি করে এমন কোনও সমতা সম্পর্কিত সম্পর্ক বাছাইয়ের ক্ষেত্রে গতি উন্নতি করে আসবে (তবে আমরা সরাসরি তার স্তূপে একটি ঝাঁকাকে নির্ধারণ করতে পারি), এবং ছোট ডেটা সেটগুলিতে বাছাই খুব দ্রুত ঘটতে পারে।


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

28

আপনি ভুল সমস্যা সমাধানের চেষ্টা করছেন।

সমাধান 1: প্রতিবার যখন আপনি আপনার লন্ড্রি ঝুড়িতে নোংরা মোজা রাখবেন, তখন তাদের কয়েকটি গিঁট দিয়ে বেঁধে রাখুন। এই ধরণের ধোয়া পরে আপনি কোনও বাছাই করতে হবে না। এটি একটি মঙ্গো ডাটাবেসে একটি সূচক নিবন্ধকরণ করার মতো ভাবেন। ভবিষ্যতে কিছু সিপিইউ সঞ্চয়ের জন্য সামান্য কাজ।

সমাধান 2: এটি শীতকালীন হলে, আপনাকে ম্যাচিং মোজা পরতে হবে না। আমরা প্রোগ্রামার। যতক্ষণ না এটি কাজ করে ততক্ষণ কাউকে জানার দরকার নেই।

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

আশাকরি এটা সাহায্য করবে!


5
একটি গিলে মোজা (বা কোনও কাপড়) বেঁধে ধোয়া ধোয়া ওয়াশারের সক্ষমতা হ্রাস করে এবং এটিকে আরও শক্ত করে পরাতে দেয়। সমাধান 2 রক্ষণাবেক্ষণকে আরও কঠিন করে তোলে যতক্ষণ পরিস্থিতি উন্নতি করে; months মাস পরে, যখন আপনি একটি জোড়া শর্টস এবং স্নিকারের সাথে পরতে দুটি কালো গোড়ালি মোজা প্রয়োজন, 6 মাস যা কিছু কাজ করে যাচ্ছেন সেই জুটিকে একই অবস্থায় (নোংরা / পরিষ্কার, অনুরূপ পোশাক) খুঁজে পাওয়ার সম্ভাবনা অনেক কম। সমাধান 3 কম "অ্যাসিনক্রোনাস" এবং আরও সোজা-আপ "অলস"; আপনার যখন প্রয়োজন ঠিক তখনই ন্যূনতম কাজটি করুন।
কিথস

পুনরায় সমাধান 2: লোকেরা জানবে যে আমি ম্যাচিং মোজা পরা নেই কারণ তারা সেগুলি আমার বার্কগুলিতে দেখতে পাবে :)
বব প্রোবস্ট

@ BobProbst হ্যাঁ তবে আপনার সহযোগী প্রোগ্রামাররাও বার্কসের সাথে তুলনাহীন মোজা পরা থাকবে এবং তাই তারা কেবল একমাত্র নয় তা দেখে খুশি হবেন।
ফ্রান্সেস্কো পাসা

27

এই প্রশ্নটি আসলে গভীরভাবে দার্শনিক। এটি সমস্যার সমাধান করার মানুষের শক্তি (আমাদের মস্তিষ্কের "ওয়েটওয়্যার") কি অ্যালগোরিদম দ্বারা সম্পন্ন করা যায় তার সমান কিনা তা হৃদয়স্থলে।

মজাদার বাছাইয়ের জন্য একটি সুস্পষ্ট অ্যালগরিদম হ'ল:

Let N be the set of socks that are still unpaired, initially empty
for each sock s taken from the dryer
  if s matches a sock t in N
    remove t from N, bundle s and t together, and throw them in the basket
  else
    add s to N

এখন এই সমস্যায় কম্পিউটার বিজ্ঞান সমস্ত পদক্ষেপ সম্পর্কে

  1. "যদি এনতে সোক টি দিয়ে এস যুক্ত হয়"। এতক্ষণ আমরা যা দেখেছি তা কীভাবে আমরা "স্মরণ" করতে পারি?
  2. "এন থেকে টি অপসারণ করুন" এবং "এস এ এন যোগ করুন"। আমরা এতক্ষণ যা দেখেছি তা ট্র্যাক করা কত ব্যয়বহুল?

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

মোজাগুলির ক্ষেত্রে, নিখুঁত স্মরণ করানো মানে একটি ঝোলা দেখা sসর্বদা তার ভাইবোনটির স্মৃতি তৈরি করে t, tধীরে ধীরে সময় সনাক্ত করার জন্য পর্যাপ্ত তথ্য (যেখানে এটি ইস্ত্রি বোর্ডে রয়েছে) সহ । ফটোগ্রাফিক মেমরির একজন ব্যক্তি ব্যর্থতা ছাড়াই স্থির সময়ে 1 এবং 2 উভয়ই সম্পন্ন করে।

নিখুঁত মেমরির চেয়ে কম কেউ ট্র্যাক করার দক্ষতার মধ্যে থাকা বৈশিষ্ট্যের উপর ভিত্তি করে কয়েকটি কমনসেন্স সমতুল্য ক্লাস ব্যবহার করতে পারেন: আকার (প্যাপা, মামা, শিশুর), রঙ (সবুজ, লালচে ইত্যাদি), প্যাটার্ন (আরগাইল, প্লেইন ইত্যাদি) pattern , শৈলী (পাদদেশ, হাঁটু-উচ্চ, ইত্যাদি)। সুতরাং ইস্ত্রি বোর্ডটি বিভাগগুলির জন্য বিভাগগুলিতে বিভক্ত হবে। এটি সাধারণত বিভাগটিকে মেমরির দ্বারা ধ্রুব সময়ে স্থিত হতে দেয় তবে তারপরে "বালতি" বিভাগের মাধ্যমে একটি লিনিয়ার অনুসন্ধান প্রয়োজন।

স্মৃতি বা কল্পনাশক্তি সহ মোটেও নেই (দুঃখিত) মোজা কেবল একটি গাদাতে রাখবে এবং পুরো গাদাটির একটি লিনিয়ার অনুসন্ধান করবে।

একটি ঝরঝরে ফ্রিকিক জোড়গুলির জন্য সংখ্যার লেবেলগুলি কারও পরামর্শ মতো ব্যবহার করতে পারে। এটি সামগ্রিক অর্ডারিংয়ের দরজা উন্মুক্ত করে, যা মানুষকে সিপিইউ দিয়ে আমরা ঠিক একই অ্যালগরিদমগুলি ব্যবহার করতে দেয়: বাইনারি অনুসন্ধান, গাছ, হ্যাশ ইত্যাদি use

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


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

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

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

22

ব্যয়: মোজা সরানো -> উচ্চ, লাইন মোজা সন্ধান / অনুসন্ধান -> ছোট

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

এক্স = তোমার, ওয়াই = আপনার স্ত্রী

সমস্ত মোজার গাদা থেকে:

দুটি মোজা বাছুন, এক্স লাইনে সংশ্লিষ্ট এক্স মোজা এবং পরবর্তী উপলব্ধ অবস্থানে ওয়াই লাইনে ওয়াই মোজা রাখুন।

এ খালি না হওয়া পর্যন্ত করুন।

প্রতিটি লাইন এক্স এবং ওয়াইয়ের জন্য

  1. প্রথম মোজাটিকে লাইনে বাছাই করুন, লাইনটি অনুসন্ধান করুন যতক্ষণ না এটি সম্পর্কিত মোজাটি খুঁজে পায়।

  2. মোজা সম্পর্কিত সমাপ্ত লাইনে রাখুন।

  3. Ption চ্ছিক আপনি যখন লাইনটি অনুসন্ধান করছেন এবং বর্তমান সোকটি আপনি আগেরটির সমান, এই মোজাগুলির জন্য দ্বিতীয় পদক্ষেপ করুন।

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

এক্স এবং ওয়াই উভয়ই খালি না হওয়া পর্যন্ত করুন।

সম্পন্ন

তবে এটি যেমন বাছাইয়ের ধরণের হিসাবে সিমিলার জটিলতা রয়েছে তাই আই / ও (চলমান মোজা) এবং অনুসন্ধান (সকের জন্য রেখাটি অনুসন্ধান করা) এর গতির কারণে নেওয়া সময়টি খুব কম হয়।


22

তুলনা ভিত্তিক মডেলের তুলনায় এখানে একটি ওমেগা (এন লগ এন) কম। (একমাত্র বৈধ অপারেশন দুটি মোজার সাথে তুলনা করে))

মনে করুন যে আপনি জানেন যে আপনার 2n মোজা এইভাবে সাজানো হয়েছে:

পি 1 পি 2 পি 3 ... পি এন পি চ (1) পি এফ (2) ... পি চ (এন)

যেখানে f 1,2, ..., n set সেটটির অজানা অনুমান} এটি জানার ফলে সমস্যা আরও কঠিন হতে পারে না। সেখানে নাই! সম্ভাব্য আউটপুট (প্রথম এবং দ্বিতীয়ার্ধের মধ্যে মিল), যার অর্থ আপনার লগ দরকার (এন!) = ওমেগা (এন লগ এন) তুলনা। এটি বাছাইয়ের মাধ্যমে প্রাপ্ত।

যেহেতু আপনি উপাদানটির স্বতন্ত্রতার সমস্যার সাথে যুক্ত হতে আগ্রহী: উপাদান স্বতন্ত্রতার জন্য আবদ্ধ ওমেগা (এন লগ এন) প্রমাণ করা শক্ত, কারণ আউটপুট বাইনারি হ্যাঁ / না হয়। এখানে, আউটপুটটি একটি মিলে যেতে হবে এবং শালীন সীমাটি পেতে সম্ভাব্য আউটপুটগুলির সংখ্যা যথেষ্ট। তবে উপাদান স্বতন্ত্রতার সাথে একটি বৈকল্পিক সংযুক্ত রয়েছে। মনে করুন আপনাকে 2n মোজা দেওয়া হয়েছে এবং আশ্চর্যরূপে যদি সেগুলি অনন্যভাবে তৈরি করা যায়। আপনি ইডি থেকে একটি হ্রাস পেতে পারেন (একটি 1 , একটি 2 , ..., একটি এন ) এ (একটি 1 , একটি 1 , একটি 2 , একটি 2 , ..., একটি এন , এন ) প্রেরণ করে । (জন্মগতভাবে, টপোলজির মাধ্যমে ED এর কঠোরতার প্রমাণ খুব আকর্ষণীয়।)

আমি মনে করি যে কেবলমাত্র সাম্য পরীক্ষার অনুমতি দিলে মূল সমস্যার জন্য একটি ওমেগা (এন 2 ) থাকা উচিত । আমার স্বজ্ঞাততাটি হ'ল: একটি পরীক্ষার পরে আপনি একটি প্রান্ত যুক্ত করুন এমন একটি গ্রাফটি বিবেচনা করুন এবং যুক্তি দিন যে গ্রাফটি ঘন না হলে আউটপুট স্বতন্ত্রভাবে নির্ধারণ করা হয় না।


19

P জোড়া মোজা ( এন = 2 পি স্বতন্ত্র মোজা) এর জন্য আমি এটি আসলে এটি করি :

  • গাদা থেকে এলোমেলোভাবে একটি মোজা ধরুন।
  • প্রথম ঝুলির জন্য, বা যদি পূর্বে নির্বাচিত সমস্ত মোজা তৈরি করা হয়, তবে কেবল মোজাটি আপনার সামনে অপরিশোধিত মোজাগুলির "অ্যারে" এর প্রথম "স্লট" এ রাখুন।
  • আপনার যদি এক বা একাধিক বাছাইবিহীন মোজা থাকে তবে অ্যারেতে সমস্ত অযৌক্তিক মোজাগুলির বিরুদ্ধে আপনার বর্তমান মোজাটি দেখুন।
    • আপনার অ্যারে তৈরি করার সময় মোজাগুলি সাধারণ শ্রেণি বা ধরণের (সাদা / কালো, গোড়ালি / ক্রু, অ্যাথলেটিক / পোষাক) আলাদা করা সম্ভব, এবং কেবল পছন্দমতো পছন্দ করার জন্য "ড্রিল-ডাউন"।
    • যদি আপনি কোনও গ্রহণযোগ্য মিল খুঁজে পান তবে উভয় মোজা একসাথে রেখে অ্যারে থেকে সরিয়ে দিন।
    • আপনি যদি তা না করেন তবে বর্তমান সোকে অ্যারেতে প্রথম খোলা স্লটে রাখুন।
  • প্রতিটি ঝুলিতে পুনরাবৃত্তি করুন।

এই স্কিমের সবচেয়ে খারাপ পরিস্থিতিটি হ'ল প্রতিটি জুতা মোজা যথেষ্ট আলাদা যে এটি অবশ্যই সঠিকভাবে মেলে এবং আপনার প্রথম এন / 2 মোজা যেগুলি বেছে নেয় তা সবই আলাদা। এটি আপনার (এন 2 ) দৃশ্য এবং এটি অত্যন্ত অসম্ভব। সক অনন্য ধরনের সংখ্যা যদি টন জোড়া সংখ্যার চেয়ে কম হয় P = ঢ / 2 , এবং প্রতিটি ধরনের মোজা একইভাবে যথেষ্ট (সাধারণত পরিধান-সম্পর্কিত পদ) আছে ধরনের কোনো সক কোনো সঙ্গে যুক্ত করা যেতে পারে যে অন্যান্য, তারপর যেমন আমি উপরের অনুমিত, আপনি কি কখনো সাথে তুলনা করতে হবে মোজা সর্বোচ্চ সংখ্যা হল টন , যার পরে পরের এক আপনি টান ইচ্ছাএকজোড়া মোজা মেলে। এই দৃশ্যটি সবচেয়ে খারাপ অবস্থার তুলনায় গড় সোক ড্রয়ারে অনেক বেশি সম্ভাবনা রয়েছে এবং এটি (এন * টি) -এ সবচেয়ে খারাপ ক্ষেত্রে জটিলতা হ্রাস করে যেখানে সাধারণত টি << n হয়


1
এটি সম্ভবত আমার মানসিক প্রক্রিয়ার খুব কাছাকাছি। আমার প্রাক-সাজানোর অপ্টিমাইজেশনের একটি যুক্ত স্তর রয়েছে। আমার অ্যাথলেটিক মোজা সাদা সঙ্গে ধুয়ে যায় এবং আমার পোষাকের মোজা রঙ দিয়ে ধুয়ে যায়। এর অর্থ হ'ল যতক্ষণ না আমি দুটি বোঝা লন্ড্রি একসাথে ডাম্প না করি, আমার মোজা ইতিমধ্যে প্রকার অনুসারে গোষ্ঠীযুক্ত। সাদা লোড সত্যিই দ্রুত চলে যায় (অনেকগুলি অভিন্ন মোজা) তবে পোশাকের মোজা বেশি সময় নেয় take অন্যান্য কী টিপ - ধরণের জন্য আরও উপলব্ধ মেমরি তৈরি করুন (প্রথমে সমস্ত নন-মোজাগুলি ভাঁজ করুন এবং মুছে ফেলুন এবং
তারপরে জোড়টিটি

17

বাস্তব-বিশ্ব পদ্ধতির:

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

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


15

আপনার প্রশ্ন থেকে এটি পরিষ্কার যে আপনি লন্ড্রি :) এর সাথে খুব প্রকৃত অভিজ্ঞতা নেই। আপনার একটি অ্যালগরিদম দরকার যা অল্প সংখ্যক অ-জোড় মোজাগুলির সাথে ভালভাবে কাজ করে।

এখনও অবধি উত্তরগুলি আমাদের মানবিক প্যাটার্ন স্বীকৃতি ক্ষমতার ভাল ব্যবহার করে না। সেট গেমটি কীভাবে এটি করা যায় তার একটি সূত্র সরবরাহ করে: সমস্ত মোজা একটি দ্বি-মাত্রিক স্থানে রাখুন যাতে আপনি উভয়কেই ভালভাবে সনাক্ত করতে পারেন এবং সহজেই নিজের হাতে এগুলি পৌঁছাতে পারেন। এটি আপনাকে প্রায় 120 * 80 সেমি বা এর বেশি সীমাবদ্ধ করে। সেখান থেকে আপনি যে জোড়গুলি সনাক্ত করেছেন তা নির্বাচন করুন এবং সেগুলি সরান। খালি জায়গায় অতিরিক্ত মোজা রাখুন এবং পুনরাবৃত্তি করুন। আপনি যদি সহজে স্বীকৃত মোজা (ছোট বাচ্চাদের মনে আসে) এমন লোকদের জন্য ধোয়া পান তবে আপনি প্রথমে এই মোজা নির্বাচন করে একটি রেডিক্স বাছাই করতে পারেন। এই অ্যালগরিদম তখনই ভাল কাজ করে যখন একক মোজার সংখ্যা কম থাকে


আমি সাধারণত এটি করি। প্রতিটি বারে বাকি সমস্ত মোজাগুলির মধ্যে পুনরাবৃত্তি করার চেয়ে অনেক ভাল কাজ করে।
yu_ominae

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

আমি মনে করি এটি 20 জানুয়ারী থেকে stackoverflow.com/a/14423956 , এখানে অন্য উত্তরগুলির মতই মূলত একই Both উভয় +1। মানব দৃষ্টিভঙ্গি ব্যাপকভাবে সমান্তরাল।
নেস

15

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


1
এটিই একমাত্র বৈধ উত্তর। অন্যরা সকলেই এই বিষয়টিকে উপেক্ষা করে যে বেশিরভাগ সময় একই রকমের মোজাগুলির মধ্যে পার্থক্য করতে ব্যয় করা হয় (সুতরাং তাদের শারীরিক উপস্থিতিতে একসাথে লম্পিং করা আরও খারাপ করে তোলে)।
entonio

মজাদার জন্য আমি মোজাগুলি পাইল করার এই পদ্ধতিটি লিখেছিলাম অল্প অজগর প্রোগ্রামে gist.github.com/justinfay/53b574cf0a492f6795ef
জাস্টিন ফে

12

গাদা থেকে মোজা যুক্ত করা কতটা দক্ষ তা বলতে গেলে, আমাদের প্রথমে মেশিনটি সংজ্ঞায়িত করতে হবে, কারণ জুড়িটি টুরিং দ্বারা বা এলোমেলো অ্যাক্সেস মেশিন দ্বারা করা হয় না, যা সাধারণত একটি ভিত্তির জন্য ব্যবহৃত হয় অ্যালগরিদমিক বিশ্লেষণ।

যন্ত্র

যন্ত্রটি হ'ল প্রকৃত বিশ্ব উপাদানটির বিমূর্ততা যা মানুষ বলে। এটি এক জোড়া চোখের মাধ্যমে পরিবেশ থেকে পড়তে সক্ষম। এবং আমাদের মেশিন মডেল 2 টি অস্ত্র ব্যবহার করে পরিবেশকে কাজে লাগাতে সক্ষম। লজিকাল এবং পাটিগণিত অপারেশনগুলি আমাদের মস্তিষ্ক ব্যবহার করে গণনা করা হয় (আশা করি ;-))।

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

তবে যান্ত্রিক পদার্থবিজ্ঞান আমাদের পাশাপাশি কিছু জিনিস দেয়। আমরা একটি বাহু দিয়ে সর্বাধিক এক মোজা সরানো সীমাবদ্ধ নয়। আমরা তাদের পুরো একযোগে একবারে স্থানান্তর করতে পারি।

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

  • যৌক্তিক এবং গাণিতিক ক্রিয়াকলাপ
  • পরিবেশগত পড়া
  • পরিবেশগত পরিবর্তন

আমরা এই সত্যটি ব্যবহার করতে পারি যে লোকের কাছে কেবলমাত্র সীমিত পরিমাণের মোজা রয়েছে। সুতরাং একটি পরিবেশগত পরিবর্তন গাদা সমস্ত মোজা জড়িত করতে পারে।

অ্যালগরিদম

সুতরাং এখানে আমার পরামর্শ:

  1. মেঝেতে গাদা সমস্ত মোজা ছড়িয়ে দিন।
  2. মেঝেতে মোজা দেখে একটি জুড়ি সন্ধান করুন।
  3. 2 থেকে পুনরাবৃত্তি করুন যতক্ষণ না কোনও জুড়ি তৈরি করা যায় না।
  4. মেঝেতে মোজা না পাওয়া পর্যন্ত 1 থেকে পুনরাবৃত্তি করুন।

অপারেশন 4 প্রয়োজনীয়, কারণ মেঝেতে মোজা ছড়িয়ে দেওয়ার সময় কিছু মোজা অন্যকে আড়াল করতে পারে। এখানে অ্যালগরিদম বিশ্লেষণ করা হল:

বিশ্লেষণ

অ্যালগরিদম উচ্চ সম্ভাবনার সাথে শেষ হয়। এটি দ্বিতীয় ধাপ 2-তে মোজা জোড়গুলি খুঁজে পেতে অক্ষম হওয়ার কারণে এটি।

জোড়জোড়া জোড়ার জোড়গুলির নিম্নলিখিত রানটাইম বিশ্লেষণের জন্য n, আমরা ধরে নিই যে কমপক্ষে অর্ধেক 2nমোজা 1 ম পদক্ষেপের পরে লুকানো নেই So সুতরাং গড় ক্ষেত্রে আমরা n/2জোড়া খুঁজে পেতে পারি । এর অর্থ হ'ল লুপটি 4 র্থ ধাপে কার্যকর O(log n)হয়। পদক্ষেপ 2 O(n^2)বার নির্বাহ করা হয় । সুতরাং আমরা উপসংহারে আসতে পারি:

  • অ্যালগরিদমে O(ln n + n)পরিবেশগত পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে (ধাপ 1 O(ln n)প্লাস মেঝে থেকে প্রতিটি জুড়ি বাছাই করা)
  • অ্যালগরিদমটি O(n^2)পদক্ষেপ 2 থেকে পরিবেশগত পাঠগুলি জড়িত
  • অ্যালগরিদম O(n^2)পদক্ষেপ 2 এ অন্য একটি ঝোলা তুলনা জন্য যৌক্তিক এবং পাটিগণিত অপারেশন জড়িত

সুতরাং আমরা একটি মোট রানটাইম জটিলতা আছে O(r*n^2 + w*(ln n + n))যেখানে rএবং wপরিবেশগত পঠিত এবং পরিবেশ লেখার অপারেশনের জন্য কারণের মোজা একটি যুক্তিসঙ্গত পরিমাণ যথাক্রমে। লজিকাল এবং গাণিতিক ক্রিয়াকলাপগুলির ব্যয় বাদ দেওয়া হয়েছে, কারণ আমরা মনে করি যে 2 মোজা একই জোড়ের অন্তর্ভুক্ত কিনা তা সিদ্ধান্ত নিতে এটি একটি ধ্রুব পরিমাণ যৌক্তিক এবং গাণিতিক ক্রিয়াকলাপ গ্রহণ করে। এটি প্রতিটি দৃশ্যে সম্ভব হয় না।



@ উইলনেস ইয়েপ, আরও কিছুটা ব্যাখ্যা সহ
স্পেসট্রকার

12
List<Sock> UnSearchedSocks = getAllSocks();
List<Sock> UnMatchedSocks = new list<Sock>();
List<PairOfSocks> PairedSocks = new list<PairOfSocks>();

foreach (Sock newSock in UnsearchedSocks)
{
  Sock MatchedSock = null;
  foreach(Sock UnmatchedSock in UnmatchedSocks)
  {
    if (UnmatchedSock.isPairOf(newSock))
    {
      MatchedSock = UnmatchedSock;
      break;
    }
  }
  if (MatchedSock != null)
  {
    UnmatchedSocks.remove(MatchedSock);
    PairedSocks.Add(new PairOfSocks(MatchedSock, NewSock));
  }
  else
  {
    UnmatchedSocks.Add(NewSock);
  }
}

12

আমি আরও একটি সমাধান নিয়ে বেরিয়ে এসেছি যা কম অপারেশনের প্রতিশ্রুতি দেয় না, কম সময় ব্যয়ও করে না, তবে এটি চেষ্টা করার চেষ্টা করা উচিত যে মোটা জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় জোড়ায় series

পূর্ব শর্তাদি: একই মোজা রয়েছে এমন কোনও গ্যারান্টি নেই। যদি তারা একই রঙের হয় তবে এর অর্থ এই নয় যে তাদের আকার বা প্যাটার্ন একই রয়েছে। মোজা এলোমেলোভাবে পরিবর্তিত হয়। অদ্ভুত মোজা থাকতে পারে (কিছু অনুপস্থিত, আমরা জানি না কত) many একটি ভেরিয়েবল "সূচক" মনে রাখার জন্য প্রস্তুত করুন এবং এটি 0 তে সেট করুন।

ফলাফলের 1. "মিলেছে" এবং 2. "অনুপস্থিত": এক বা দুই পাইলস থাকবে

অনুসন্ধানমূলক:

  1. সর্বাধিক স্বাদযুক্ত মোজা।
  2. এর ম্যাচটি সন্ধান করুন।
  3. যদি কোনও মিল না থাকে তবে এটি "অনুপস্থিত" স্তূপে রাখুন।
  4. আর কোনও সুনির্দিষ্ট মোজা না পাওয়া পর্যন্ত 1 থেকে পুনরাবৃত্তি করুন।
  5. যদি 6 টি মোজা কম থাকে তবে 11 এ যান।
  6. অন্ধভাবে সমস্ত মোজা তার প্রতিবেশীর সাথে জুড়ুন (এটি প্যাক করবেন না)
  7. সমস্ত মিলিত জোড়া সন্ধান করুন, এটি প্যাক করুন এবং প্যাক করা জোড়াকে "ম্যাচ করা" গাদাতে সরান; কোনও নতুন ম্যাচ না থাকলে - ইনক্রিমেন্ট "ইনডেক্স" by
  8. যদি "সূচক" আরও 2 হয় তবে এটি মোটা সংখ্যার উপর নির্ভরশীল মানের হতে পারে কারণ মোজার সংখ্যার সাথে এগুলি অন্ধভাবে জুড়ে দেওয়ার সুযোগ কম থাকে) 11 এ যান
  9. বাকি গুলো
  10. 1 এ যান
  11. "সূচক" ভুলে যান
  12. একটি মোজা বাছুন
  13. এর জুড়িটি সন্ধান করুন
  14. মোজা জন্য কোন জুড়ি না থাকলে, এটি "অনুপস্থিত" স্তূপে সরান
  15. যদি এটির মিল খুঁজে পায় তবে জোড়াটি প্যাক করুন এবং এটিকে "ম্যাচড" স্তূপে নিয়ে যান
  16. যদি এখনও আরও কিছু থাকে তবে একটি মোজা 12 এ যায়
  17. যদি কেবল একটি বাম থাকে তবে 14 এ যান
  18. হাসি সন্তুষ্ট :)

এছাড়াও, ক্ষতিগ্রস্থ মোজাগুলির জন্য চেক যুক্ত করা যেতে পারে, যেন সেগুলি অপসারণ করা হয়। এটি 2 এবং 3 এর মধ্যে এবং 13 এবং 14 এর মধ্যে সন্নিবেশ করা যেতে পারে।

আমি কোনও অভিজ্ঞতা বা সংশোধন সম্পর্কে শুনতে প্রত্যাশায় রয়েছি।


আমি এটি লেখার পরে, আমি এটি প্রতিবার ব্যবহার করি। এটি আমাকে কিছুটা দক্ষ হয়ে উঠতে সহায়তা করেছে এবং চাকরিটি এখন কম বিরক্তিকর।
সাসা

11

আমি যখন মোজাগুলি বাছাই করি, তখন আমি প্রায় একই রঙের / প্যাটার্নের ধরণের অন্যান্য মোজার কাছে মোজা ফেলে, আনুমানিক র‌্যাডিক্স বাছাই করি । ক্ষেত্রেটি বাদে যখন আমি অবস্থানটির নিকটে / কাছাকাছি একটি সঠিক মিল দেখতে পাচ্ছি যখন আমি মোজাটি ফেলে যাচ্ছি তখন আমি সেই সময়ে জোড়টি বের করব।

প্রায় সমস্ত অন্যান্য অ্যালগোরিদম ( ইউএসআর দ্বারা শীর্ষের স্কোরিং উত্তর সহ ) সাজান, তারপরে জোড়গুলি সরান। আমি দেখতে পেয়েছি যে, একজন মানুষ হিসাবে, এক সময় বিবেচিত মোজার সংখ্যা হ্রাস করা ভাল।

আমি এটি দ্বারা:

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

এটি ও (1) সময়ে অস্পষ্ট-মিলনের মানুষের ক্ষমতার সুযোগ নেয় যা কোনও কম্পিউটিং ডিভাইসে হ্যাশ-ম্যাপ স্থাপনের সমান।

প্রথমে স্বতন্ত্র মোজা টান দিয়ে আপনি যে বৈশিষ্ট্যগুলি কম স্বাতন্ত্র্যবান সেগুলি শুরু করতে "জুম" করতে জায়গা ছেড়ে যান।

ফ্লুরো রঙিন, স্ট্রাইপযুক্ত মোজা এবং তিন জোড়া দীর্ঘ মোজা বাদ দেওয়ার পরে, আপনি প্রায়শই সাদা মোজা শেষ করতে পারেন যে তারা কতটা পরা by

এক পর্যায়ে, মোজাগুলির মধ্যে পার্থক্যগুলি যথেষ্ট পরিমাণে ছোট যে অন্য লোকেরা এই পার্থক্যটি লক্ষ্য করবে না, এবং আরও কোনও মিলের প্রয়াসের প্রয়োজন নেই।


10

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

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


এটি আমিই করছি ... ও (এন)
পাইক্লার

2
@ পাইক্লার - এটি সবচেয়ে ভাল ক্ষেত্রে ও (এন) এবং সবচেয়ে খারাপ ক্ষেত্রে ও (এন * এন)।
ভিলেক্স-

2
এটি ধরেই নেওয়া যে আপনি ইতিমধ্যে দেখেছেন এমন সমস্ত মোজার সম্পর্কে আপনি আপনার মনে পুরোপুরি অনন্য হ্যাশ তৈরি করতে পারবেন না, যা আমার জন্য একটি ও (1) যা আমি দেখেছি এবং আগে দেখা এবং একটি ম্যাচ হ্যাশের
রেখেছি তা মিলানোর

10

আকার 'এন' এর একটি হ্যাশ-টেবিল বিবেচনা করুন।

আমরা যদি সাধারণ বিতরণ অনুমান করি, তবে একটি বালতিতে কমপক্ষে একটি মোজা ম্যাপ করার জন্য 'সন্নিবেশের' আনুমানিক সংখ্যা হ'ল এনলগএন (অর্থাত্, সমস্ত বালতি পূর্ণ)

আমি এটি অন্য ধাঁধার অংশ হিসাবে পেয়েছি, তবে আমি ভুল প্রমাণিত হতে পেরে খুশি হব। এখানে আমার ব্লগ নিবন্ধ

আপনার যে মোজাগুলির অনন্য রঙ / প্যাটার্ন রয়েছে তার সংখ্যার উপর 'এন' একটি আনুমানিক উপরের-আবদ্ধের সাথে সামঞ্জস্য করুন।

আপনার মুখোমুখি সংঘাতের পরে (ওরফে: একটি ম্যাচ) কেবল সেই জুতা মোজাটি সরিয়ে ফেলুন। এনলগএন মোজার পরবর্তী ব্যাচের সাথে একই পরীক্ষার পুনরাবৃত্তি করুন। এর সৌন্দর্য হ'ল মানব মন যেভাবে কাজ করে সে কারণে আপনি এনলগএন সমান্তরাল তুলনা (সংঘর্ষ-রেজোলিউশন) তৈরি করতে পারেন। :-)


10

মোজা, আসল বা কিছু উপমা কাঠামো, জোড়ায় সরবরাহ করা হবে।

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

এটি বিমূর্ততার একটি স্তর দিয়ে মুছে ফেলার মাধ্যমে যে কোনও গণনামূলক সমস্যা সমাধান করে।

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

দুটি শারীরিক সম্ভাবনা রয়েছে:

'জোড়া' অবজেক্টের জন্য যা প্রতিটি ঝুলিতে একটি পয়েন্টার রাখে আমরা একটি কাপড়ের ব্যাগ রাখতে পারি যা আমরা মোজা একসাথে রাখতে ব্যবহার করি। এটি বিশাল ওভারহেডের মতো মনে হচ্ছে।

তবে প্রতিটি ঝুলি অন্যের কাছে রেফারেন্স রাখার জন্য একটি ঝরঝরে সমাধান রয়েছে: একটি পপার (বা আপনি যদি আমেরিকান হন তবে 'স্ন্যাপ বোতাম') যেমন:

http://www.aliexpress.com/compare/compare-invisible-snap-buttons.html

তারপরে আপনার মোজাগুলি একসাথে সরিয়ে নেওয়ার পরে আপনার ওয়াশিংয়ের ঝুড়িতে রাখার পরে আপনি যা কিছু করেন তা হ'ল এবং আবার আপনি 'জুড়ি' ধারণার শারীরিক বিমূর্ততার সাথে আপনার মোজাগুলি জোড়া দেওয়ার প্রয়োজনীয় সমস্যাটি সরিয়ে দিয়েছেন।


এটি প্রশ্নের উত্তর দেয় না, কারণ ইতিমধ্যে জোড়যুক্ত ডেটা সহ পরিচালনা করা সহজ, যখন ডেটা ইউএনএপিএআরডিড হয় এবং আপনি এটি যুক্ত করতে চান তখন প্রশ্নটি কী করা উচিত।
amit

8

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

আমি শুকনো হয়ে ঝুলতে বাছাইয়ের প্রক্রিয়াটিকে একীভূত করে দেখতে পেলাম এটিকে বাতাস বানিয়েছে। আমার যাইহোক যাইহোক প্রতিটি ঝোলা বাছাই করা দরকার, এবং এটি ঝুলানো (সরানো) এবং এটি স্ট্রিংগুলির নির্দিষ্ট স্থানে ঝুলিয়ে রাখার জন্য আমার কিছুই খরচ করে না। এখন কেবল পুরো বাফারের অনুসন্ধানের জন্য নয় (স্ট্রিংগুলি) আমি রঙ / ছায়া দ্বারা মোজা স্থাপন করতে পছন্দ করি। গাark় বাম, উজ্জ্বল ডান, আরও রঙিন সামনে ইত্যাদি Now এখন আমি প্রতিটি ঝোলা ঝুলানোর আগে আমি এর "ডান সান্নিধ্যে" সন্ধান করি যদি এর সাথে কোনও মিল খুঁজে পাওয়া যায় - তবে এটি "স্ক্যান" ২-৩ টি অন্যান্য মোজা পর্যন্ত সীমাবদ্ধ করে - এবং যদি তা হয় , আমি অন্যটিকে ঠিক তার পাশেই ঝুলিয়ে দেব। তারপরে আমি শুকনো স্ট্রিংগুলি থেকে সরানোর সময় তাদের জোড়ায় রোল করি।

এখন শীর্ষস্থানীয় উত্তরগুলির দ্বারা প্রস্তাবিত "রঙের ভিত্তিতে পাইলস গঠন করা" থেকে এটি সমস্তই পৃথক বলে মনে হচ্ছে না তবে প্রথমে, পৃথক পৃথক পাইলগুলি বা রেঞ্জগুলি বাছাই না করে, "বেগুনি" "লাল" বা "নীল" গাদাতে যায় কিনা শ্রেণিবদ্ধ করতে আমার কোনও সমস্যা নেই; এটা ঠিক মাঝখানে যায়। এবং তারপরে দুটি ক্রিয়াকলাপকে একীভূত করে (শুকনো এবং সাজানোর জন্য ঝুলিয়ে রাখুন) হ্যাং করার সময় বাছাইয়ের ওভারহেডটি আলাদা আলাদা বাছাইয়ের 10% এর মতো।


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

8

আমি এখনই আমার মোজাগুলির জুড়ি তৈরি শেষ করেছি এবং আমি দেখতে পেয়েছি যে এটি করার সর্বোত্তম উপায়টি হল:

  • মোজাগুলির মধ্যে একটি বেছে নিন এবং এটিকে দূরে রাখুন (সেই জোড়ার জন্য একটি 'বালতি তৈরি করুন)
  • পরেরটি যদি আগেরটির জুটি হয় তবে এটি বিদ্যমান বালতিতে রেখে দিন, না হলে একটি নতুন তৈরি করুন।

সবচেয়ে খারাপ ক্ষেত্রে এর অর্থ হ'ল আপনার কাছে এন / ২ টি পৃথক বালতি থাকবে এবং যে বালতিতে বর্তমান জালের জুড়ি রয়েছে সে সম্পর্কে আপনার এন -2 নির্ধারণ হবে। স্পষ্টতই, এই অ্যালগরিদম ভাল কাজ করে যদি আপনার কয়েকটি জোড় থাকে; আমি 12 জোড়া দিয়ে এটি করেছি।

এটি তেমন বৈজ্ঞানিক নয়, তবে এটি ভালভাবে কাজ করে :)


এটি এখনও একটি ও (এন ^ 2) অ্যালগরিদম যেহেতু আপনি যখনই নতুন বালকে টানছেন তখন আপনাকে প্রতিটি বালতিতে পুনরাবৃত্তি করতে হবে। তবে, একই ব্যাচের মধ্যে কেনা মোজাগুলির মধ্যে সামান্য পার্থক্য রয়েছে তা বিবেচনা করে কার্যকরভাবে জুটি-অনন্য (বা এমনকি একক-অনন্য) রেন্ডার করে, সেভাবে আর কোনও ভাল উপায় নেই
সেমিসনিক

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

8

আমার সমাধানটি আপনার প্রয়োজনীয়তার সাথে হুবহু মিল নয়, কারণ এটিতে আনুষ্ঠানিকভাবে O(n)"অতিরিক্ত" স্থান প্রয়োজন। তবে আমার শর্তাবলী বিবেচনা করে এটি আমার ব্যবহারিক প্রয়োগে খুব দক্ষ very সুতরাং আমি মনে করি এটি আকর্ষণীয় হওয়া উচিত।

অন্যান্য টাস্কের সাথে একত্রিত করুন

আমার ক্ষেত্রে বিশেষ শর্তটি হ'ল আমি শুকানোর মেশিন ব্যবহার করি না, কেবল আমার কাপড় একটি সাধারণ কাপড়ের ড্রায়ারে ঝুলিয়ে রাখি। ঝুলন্ত কাপড়ের জন্য O(n)অপারেশন প্রয়োজন ( যাইহোক , আমি সর্বদা এখানে বিন প্যাকিংয়ের সমস্যাটি বিবেচনা করি ) এবং এর প্রকৃতির সমস্যাটি লিনিয়ার "অতিরিক্ত" স্থান প্রয়োজন। আমি যখন বালতিটি থেকে একটি নতুন মোড় নিয়েছি তবে জুটিটি ইতিমধ্যে স্তব্ধ হয়ে থাকলে তার জোড়ার পাশে এটি স্তব্ধ করার চেষ্টা করব। এটি যদি নতুন জুটি থেকে ঝুলিতে থাকে তবে আমি এর পাশের কিছু জায়গা রেখে দেব leave

ওরাকল মেশিনটি আরও ভাল ;-)

ইতিমধ্যে কোথাও ঝুলন্ত ম্যাচিং সোক রয়েছে কিনা তা যাচাই করার জন্য অবশ্যই কিছু অতিরিক্ত কাজ প্রয়োজন এবং এটি কোনও কম্পিউটারের জন্য O(n^2)সহগের সাথে সমাধান সরবরাহ করে solution 1/2তবে এক্ষেত্রে "হিউম্যান ফ্যাক্টর" আসলে একটি সুবিধা - আমি সাধারণত খুব দ্রুত (প্রায় O(1)) মেলানো শকটি সনাক্ত করতে পারি যদি এটি ইতিমধ্যে স্তব্ধ হয়ে থাকে (সম্ভবত কিছুটা দুর্ভেদ্য-মস্তিষ্কের ক্যাচিং জড়িত রয়েছে) - এটিকে এক ধরণের বিবেচনা করুন ওরাকল মেশিনের মতো সীমাবদ্ধ "ওরাকল" ;-) আমরা, মানুষের কিছু ক্ষেত্রে ডিজিটাল মেশিনের মাধ্যমে এই সুবিধা রয়েছে ;-)

এটা প্রায় আছে O(n)!

ঝুলন্ত কাপড়ের সমস্যার সাথে জুতা মোজাগুলির সমস্যার সাথে সংযোগ স্থাপন করে আমি O(n)বিনামূল্যে "অতিরিক্ত স্থান" পাই O(n)এবং সময় মতো একটি সমাধান পাই , সাধারণ ঝুলন্ত কাপড়ের তুলনায় আরও কিছুটা কাজ প্রয়োজন এবং অবিলম্বে সম্পূর্ণ জোড়াটি অ্যাক্সেস করার অনুমতি দেয় মোজা এমনকি খুব খারাপ সোমবার সকালে ... ;-)


8

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

এছাড়াও, আমাদের বৃহত সংখ্যক মোজা, এমনকি বড় পরিবারগুলিরও ধরে রাখার দরকার নেই। মোজাগুলি ড্রয়ারের বাইরে নিয়ে যায় এবং এটি পরা হয় এবং তারপরে তারা এমন জায়গায় ছুঁড়ে ফেলা হয় (সম্ভবত একটি বিন) যেখানে তারা লন্ডার হওয়ার আগে থাকে stay যদিও আমি বিনকে একটি লাইফ-স্ট্যাক বলব না, আমি বলব এটি ধরে নেওয়া নিরাপদ

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

যেহেতু আমি যে সমস্ত ওয়াশিং মেশিন সম্পর্কে জানি সেগুলি আকারে সীমিত (আপনার কতগুলি মোজা ধোয়া উচিত তা নির্বিশেষে) এবং সত্যিকারের র্যান্ডমাইজিংটি ওয়াশিং মেশিনে ঘটে, আমাদের যত মোজা থাকুক না কেন, আমাদের সর্বদা ছোট সাবসেট থাকে যা প্রায় নেই singletons।

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

Put_socks_on_line () এর জন্য অ্যালগরিদম এখানে রয়েছে:

while (socks left in basket) {
 take_sock();
 if (cluster of similar socks is present) { 
   Add sock to cluster (if possible, next to the matching pair)
 } else {
  Hang it somewhere on the line, this is now a new cluster of similar-looking socks.      
  Leave enough space around this sock to add other socks later on 
 }
}

মোজা ঘোরানো বা সর্বোত্তম ম্যাচের সন্ধানে আপনার সময় নষ্ট করবেন না, এটি সমস্ত O (n) এ করা উচিত, যা আমাদের কেবল সেগুলি সাজানো লাইনে রাখার জন্য প্রয়োজন। মোজা এখনও জোড় করা হয়নি, আমাদের কেবল লাইনে বেশ কয়েকটি মিলের ক্লাস্টার রয়েছে। এটি সহায়ক যে এখানে আমাদের মোজা সীমিত রয়েছে, কারণ এটি আমাদের "ভাল" ক্লাস্টার তৈরি করতে সহায়তা করে (উদাহরণস্বরূপ, যদি মোজাগুলির সেটগুলিতে কেবল কালো মোজা থাকে, রঙ দ্বারা ক্লাস্টারিং উপায় না হয়)

টেক_সকস_ফর্ম_লাইন () এর জন্য অ্যালগরিদম এখানে রয়েছে:

while(socks left on line) {
 take_next_sock();
 if (matching pair visible on line or in basket) {
   Take it as well, pair 'em and put 'em away
 } else {
   put the sock in the basket
 }

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

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

এই ধরণের অ্যালগরিদম এখানে সাজানো_সেইমাইনিং_ক্লাস্টার ():

while(clusters present in basket) {
  Take out the cluster and spread it
  Process it immediately
  Leave remaining socks where they are
}

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

সমস্ত অবশিষ্ট মোজাগুলির জন্য, আমি ধরে নিচ্ছি যে তাদের সমকক্ষগুলি এখনও ধৌত হয়েছে এবং পরবর্তী পুনরাবৃত্তির জন্য এগুলি ফেলে রাখে। যদি আপনি সময়ের সাথে অবিযুক্ত মোজাগুলির বৃদ্ধির জন্য রেজিস্ট্রেশন করেন ("" সোক লিক "), আপনার আপনার বাক্সটি পরীক্ষা করা উচিত - এটি এলোমেলো হয়ে যেতে পারে (সেখানে বিড়ালগুলি কী আছে?)

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

সমান্তরালতা সম্পর্কে: যতক্ষণ আপনি উভয় মোজা একই পাতায় টস করেন, আপনি সহজেই এই সমস্ত পদক্ষেপের সমান্তরাল করতে পারেন।


মোজা কেবলমাত্র কিছু ডাটাবেসে স্বেচ্ছাসেবী বিষয়গুলিকে যুক্ত করার জন্য রূপক।
amit

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

1
এছাড়াও, আপনি> 2 কে আপব্যাটস পান নি কারণ আপনি ডাটাবেসে স্বেচ্ছাসেবী বিষয়গুলি জোড়া দেওয়ার বিষয়ে একটি প্রশ্ন জিজ্ঞাসা করেছিলেন। আপনি মোজাগুলির খুব প্রকৃতির কারণে এই প্রশ্নটিকে বিশেষভাবে সীমাবদ্ধ করেছিলেন (যা আপনি ডুপ্লিকেট করতে পারবেন না, তথ্যের বিপরীতে), আপনি এমনকি আপনার স্ত্রীকে মোজা থেকে আপনার মোজা সহজেই আলাদা করতে পারবেন এই বিষয়টি ব্যবহার করতে উত্সাহিত করেছিলেন। আপনি যদি মোজা সম্পর্কে কোনও প্রশ্ন জিজ্ঞাসা করেন তবে উত্তরগুলি ডাটাবেসগুলি সম্পর্কে আশা করবেন না ;-)
ফিলিপ ফ্লেঙ্কার

1
কয়েকটি অনুমান রয়েছে: একটি সাধারণ ওয়াশিং ম্যাশিন, একটি, সাধারণ জামাকাপড়, এবং আপনি একই সাথে বিনটিতে উভয় মোজা টস করেন, যার অর্থ বেশিরভাগ ক্ষেত্রে উভয় মোজা একই মেশিনে রয়েছে এবং সংখ্যার সংখ্যা বাঁচানো মোজা বাছাই করতে তাই ছোট therefore আপনি যেহেতু ডাটাবেসে স্বেচ্ছাসেবক বস্তুগুলি সংরক্ষণ করার বিষয়ে সত্যই উত্তর চেয়েছিলেন, তাই আমার সমাধানটি আরও কোনও বিষয়ে আলোচনা করা কি সত্যই কার্যকর?
ফিলিপ ফ্লেঙ্কার

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

8

ও (১) সময় গ্রহণের প্রক্রিয়াতে আমার প্রচেষ্টা হ্রাস করার জন্য আমি সহজ পদক্ষেপ নিয়েছি।

আমার ইনপুটগুলি দুই ধরণের মোজা (বিনোদনের জন্য সাদা মোজা, কাজের জন্য কালো মোজা) এর মধ্যে হ্রাস করে, আমার কেবল দুটি মোজা হাতে আছে তা নির্ধারণ করতে হবে। (প্রযুক্তিগতভাবে, যেহেতু এগুলি কখনই একসাথে ধুয়ে ফেলা হয় না, তাই আমি প্রক্রিয়াটি ও (0) সময়ে কমিয়ে দিয়েছি))

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

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


7

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


এটি জায়গায় না রেখে কীভাবে করবেন, যেমনটি প্রশ্নের মধ্যে উল্লেখ করা হয়েছে?
amit

7

আপনার এন জোড়া মোজা বাছাইয়ের সমস্যা হ'ল ও (এন) । লন্ড্রি ঝুড়িতে ফেলে দেওয়ার আগে আপনি বামদিকে ডানদিকে থ্রেড করেন। এগুলি বের করার পরে, আপনি থ্রেডটি কেটে প্রতিটি জোড়কে আপনার ড্রয়ারে রেখেছেন - 2 জোড় n জোড়ায়, সুতরাং হে (এন)।

এখন পরবর্তী প্রশ্নটি হ'ল আপনি নিজের লন্ড্রি করেন এবং আপনার স্ত্রী তাঁর করেন না। এটা একটা একটা সমস্যা সম্ভাবনা থাকে সমস্যার সম্পূর্ণরূপে পৃথক ডোমেইন । :)


এটি প্রশ্নের উত্তর দেয় না, যেখানে মোজাগুলি কেবল একটি রূপক।
amit

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