"খারাপ আপেল" অ্যালগরিদম বা প্রক্রিয়া ভাগ করা স্যান্ডবক্সকে ক্র্যাশ করে


9

আমি নিম্নলিখিত সমস্যাটি পরিচালনা করতে একটি অ্যালগরিদম খুঁজছি, যা আমি (আপাতত) "খারাপ আপেল" অ্যালগরিদম বলছি।

সমস্যাটি

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

যদি এটি কোনও এককভাবে খারাপ আচরণ করা প্রক্রিয়া হত, তবে আমি দুর্বৃত্তদের খুঁজে না পাওয়া পর্যন্ত আমি একটি সাধারণ দ্বিধা ব্যবহার করে একটি স্যান্ডবক্সে অর্ধেক প্রক্রিয়া এবং অন্য স্যান্ডবক্সে রেখে দিতে পারি।

প্রশ্নটি

যদি একাধিক প্রক্রিয়া খারাপভাবে আচরণ করা হয় - তবে তারা সকলেই খারাপ আচরণ করে এমন সম্ভাবনা সহ - এই নিষ্পাপ আলগোরিদমটি কি "কাজ" করে? এটি কিছু বুদ্ধিমান সীমার মধ্যে কাজ করার গ্যারান্টিযুক্ত?

Simplifications

তর্কের খাতিরে, ধরে নেওয়া যাক যে কোনও খারাপ প্রক্রিয়া তাত্ক্ষণিকভাবে তার স্যান্ডবক্সটি নামিয়ে আনবে এবং একটি ভাল প্রক্রিয়া কখনই ঘটে না।


কিভাবে নিশ্চিত যে খারাপভাবে সুশীল প্রক্রিয়া হবে স্যান্ডবক্স নিচে আনতে? আমার অর্থ - আমরা যখন সুনির্দিষ্টভাবে জানতে পারি যে প্রদত্ত স্যান্ডবক্সটি ক্র্যাশ না হওয়ায় কেবল "পরিষ্কার" প্রক্রিয়া চালাচ্ছে তখন কি আমরা একটি সীমাবদ্ধ সময় ধরে নিতে পারি?
এসএফ

দুর্ভাগ্যক্রমে নয়: 5 মিনিটের জন্য একটি স্যান্ডবক্স ক্রাশ না হওয়ার অর্থ এই নয় যে সমস্ত প্রক্রিয়াটি ভালভাবে আচরণ করা হয়েছে, তবে এটি আমাদের সেই সত্যটির আরও আত্মবিশ্বাস দেয়।
রজার লিপসক্বে

... তবে এই প্রশ্নের প্রয়োজনে, একটি সীমাবদ্ধ সময় দেওয়ার মাধ্যমে আমরা আনুমানিক পারি could
রজার লিপসক্বে

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

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

উত্তর:


2

যদি আপনি একটি খারাপ আপেল সন্ধান করে থাকেন তবে আলগোরিদিমটি প্রয়োগ করতে পারেন:

  1. এনগুলিকে এম গ্রুপে ভাগ করুন
  2. প্রতিটি গ্রুপে পরীক্ষা করুন।
  3. গ্রুপের আকার যদি 1 এর বেশি হয় তবে খারাপ দলে আইটেমের সংখ্যা দিয়ে N এর পরিবর্তে 1 ধাপে ফিরে যান।

তেমনি, আপনি যদি একটি "ভাল" আপেল খুঁজে পেয়েছিলেন তবে একই অ্যালগরিদম প্রয়োগ হয়, তবে ভাল গোষ্ঠীটি সন্ধান করছেন।

এই অ্যালগরিদমের একটি ও (লগ_এম (এন)) পারফরম্যান্স হার রয়েছে তবে এটি কেবলমাত্র একটি খারাপ আপেল রয়েছে তা নির্ভর করে।

আপনি যদি জানেন না যে সেখানে কতগুলি ভাল / খারাপ আপেল রয়েছে তবে আপনি নিম্নলিখিত আলগোরিদমটি ব্যবহার করতে পারেন:

For each M processes in N
  Test M processes

এটি সবচেয়ে খারাপ পরিস্থিতি, তবে এটি O(N/M)সময়ের সাথে সাথে চলে (বা O(N)আপনি যদি একটি একক পাসকে একক পরীক্ষা হিসাবে বিবেচনা করেন বা সমান্তরালে সঞ্চালিত পরীক্ষাগুলির সংগ্রহ হিসাবে বিবেচনা করছেন) তার উপর নির্ভর করে। সমস্ত বিষয় বিবেচনা করা হয়, এটি কোনও উপায়েই খারাপ দৃষ্টিভঙ্গি নয়

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

আশা করি এইটি কাজ করবে!

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


1
দুর্ভাগ্যক্রমে, আমি প্রক্রিয়াগুলি "পরীক্ষা" করতে পারি না; কেবলমাত্র আমি জানি যে স্যান্ডবক্সগুলির মধ্যে একটি ক্র্যাশ হয়ে গেছে এবং এটি এর এক বা একাধিক প্রক্রিয়ার কারণে হয়েছিল।
রজার লিপসক্বে

1
সমস্যাটি হ'ল, সেটটি দ্বিখণ্ডিত করার পরে, উভয় পার্টিশনেরই তাদের মধ্যে খারাপ আপেল থাকতে পারে। যা আমাকে ভাবতে বাধ্য করে যে আমার একটি সাধারণ পার্টিশনের চেয়ে আরও বেশি প্রয়োজন ...
রজার লিপসক্বে

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

ঠিক আছে, সুতরাং "পরীক্ষা" দ্বারা, আপনি কেবল বোঝাচ্ছেন "তাদের আত্মবিশ্বাসের জন্য দীর্ঘকাল ধরে চালিয়ে দিন" ...?
রজার লিপসক্বে

@ রজারলিপস কমবে আমি মনে করি আরও সময় নিতে পারে, তবে আপনি কতক্ষণ অপেক্ষা করতে হবে তা নির্ধারণ করতে হবে। এটি জেনে এবং এই অ্যালগরিদম অনুসরণ করে আপনি প্রযুক্তিগতভাবে কোনও এবং সমস্ত খারাপ আপেল খুঁজে পেতে পারেন। যাইহোক, ক্র্যাশগুলির জন্য উইন্ডোজ ইভেন্টের লগটি সহজভাবে দেখার জন্য এটি আরও দ্রুত হতে পারে।
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.