كيفية فرز الكائنات القائمة فقط على العلاقات "أقل من"؟

cs.stackexchange https://cs.stackexchange.com/questions/121124

  •  29-09-2020
  •  | 
  •  

سؤال

أقول أن لدي كائنات N، ولكل منها قيمة غير معروفة، ومصفوفة من قبل matrix z. بحيث z (i، j)= 1 إذا كانت قيمة الكائن الأول أقل من قيمة الكائن J و Z (أنا، ي)= 0 خلاف ذلك.كيف يمكنني فرز كائنات N هذه، مع إعطاء فقط مصفوفة Z؟

هل كانت مفيدة؟

المحلول

ما الذي تبحث عنه هو مقارنة فرز . يرجى إلقاء نظرة على هذه المادة.


اسمح لنا الدولة بوضوح بمتطلبات أي كائنتين معينين، وجوه أنا والكائن J عندما تظهر في القائمة المرتبة النهائية. الكائن يجب أن أحدث قبل كائن J إذا z (i، j)= 1. كائن يمكنني حدوثه قبل أو بعد كائن J إذا z (i، j)= z (j، i)= 0.

كما ذكر Vonbrand، يجب أن نفترض أن مصفوفة Z يحدد "أقل من" العلاقات المعرفة جيدا أو، من حيث الرياضيات، إجمالي طلب صارم على قيم الكائنات. خلاف ذلك، قد لا يتم فرز الكائنات المعينة.

  • z [i، j]= 0 إذا z [j، i]= 1. خلاف ذلك، لا يمكننا فرز الكائن الأول والكائن J.
  • z [j، i]= 0 إذا z [i، k]= 1 و z [k، j]= 1 لبعض k. خلاف ذلك، لا يمكننا فرز كائن I، J و K (فكر في صخرة مقص الورق).

افترض أن Z يحدد "أقل من" العلاقة المعرفة جيدا. ثم يحدد أيضا " $ \ € $ " عملية المقارنة بشكل طبيعي. وهي، إذا z (j، i)= 0، ثم كائن i $ \ € $ كائن J. حتى نتمكن من تطبيق أي نوع مقارنة لفرز $ n $ كائن.

جميع خوارزميات الفرز تقريبا هي أنواع المقارنة. على سبيل المثال، QuickSort، Mergesort، ترتيب الإدراج، فرز الاختيار وفرز الفقاعة. استثناء ملحوظ هو حساب فرز .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top