طلب إيجاد خوارزمية لمسألتي

  • MouhcineFD

السلام عليكم

واجهتني مشكلة في إيجاد حل لهده المسألة

والله قضيت أكتر من أسبوعين وأن أحاول حلها ولم أفلح في ذالك

المرجو المساعدة جزاكم الله خيرا

المسألة:A جدول مكون من n سطر m عمود

كل سطر وكل عمود يحتوي على x خانة مملوءة

x>=2

خانة مملوءة تمثل 1

خانة فارغة تمثل 0

المطلوب

تغيير قيمة بعض الخانات من الواحد الى الصفر وليس من الصفر الى الواحد لتحقيق الشرط الأول مع تغيير أقل عدد ممكن من الخانات(الشرط الثاني)

الشرط الأول

يجب أن يكون عدد الخانات المملوءة في كل سطر وعمود عددا زوجيا أو بمعنى آخر أن يكون المجموع في كل سطر وعمود قيمة زوجية وممكن أن يكون الصفر

يعني سيصبح x=2k / k>=0

الشرط الثاني

يجب أن تغير أقل عدد ممكن من الخانات أو بمعنى آخر أن تحصل على أكبر مجموع للخانات التي تمثل واحد في الجدول

مثال

لدينا هدا الجدول

نلاحظ أن العمود الثاني والثالث يحتويان على عدد فردي

الحل هو

مجموع الخانات التي تحتوي على القيمة واحد يساوي 10

يمكن أن يكون أكثر من حل

وهدا حل خاطئ لأنه يحقق الشرط الأول فقط يعني تم تغيير عدد من الخانات أكثر من الازم أي مجموع الخانات التي تحتوي على القيمة واحد يساوي 6 و6 ليست أكبر قيمة ممكن أن تحصل عليها (الحل الصحيح هو دو القيمة 10)

ملاحظة

في بعض الحالات يمكن أن يكون الحل الوحيد هو الجدول فارغ


التعليق السابق

كتبت في أول الموضوع

A جدول مكون من n سطر m عمود

n>=1 و m>=1

يمكن أن تكون المصفوفة 4x4 5x3 2x1 15x20

ولدي العديد من الجداول بمثل هده الابعاد 35x16 23x17

هل البرنامج الذي ستكتبه سيكون مخصص لحل مصفوفة ثابتة الابعاد أم أنه كل مرة سيتم ادخال أبعاد مختلفة

لا يهم لأنني لا أريد برنامج أو كود

ما أريده هو فكرة عن طريقة حل المسألة يمكنك اعتبار الأبعاد ثابتة m و n

سأكتب توضيح عن فكرتي برد أخر

إدا كنت تتحدث عن فكرة تمثيل المصفوفة بسلسلة من البتات

فقد فهمت الفكرة وهي صحيحة لكن غير عملية يمكن تطبيقها على المصفوفات الصغيرة فقط

الان وضحت الصورة ....

حجم المصفوفة أكبر من رقعة الشطرنج . مممم

يمكنني ابداء بعض الملاحظات لعلها تساعدك ...

مثلا

يمكن البحث عن الحل بشكل معاكس .... وهو بناء مصفوفة جديدة من الصفر عوضا عن حزف واحدات !!!!


فكرت ايضا كيف تستطيع بناء مصفوفة صحيحة

فوجدت الشروط التالية :

أن المصفوفة تكون صحيحة اذا اضفنا الواحدات بمضاعفات عدد 4 و موزعة بشكل مستطيل " أو مربع "

واذا ظهر صفر في احد الزوايا يتم تعويضه بظهور ثلاث واحدات عندها نستخدم 6 واحدات

في أول مصفوفة محلولة أنت وضعتها ظهر مستطيل كامل و مستطيل بزاوية صفرية و عدد لواحدات


محاولة لترتيب الفكرة

مثلا نبدأ بلبحث على اكبر مستطيل يحقق الشرط

حسب مثالك

1010

1111

1111

1100

أكبر مستطيل

x01x

1111

1111

x10x

غير محقق

نبحث عن مستطيل اصغر

x01z

1111

x11x

1100

هنا وجدنا اكبر مسطيل له زاوية صفرية

ثم يتم تثبيت الواحدات " سوف اكتبها كرقم 2

2020

1122

2112

1100

نتابع البحث

2020

xx22

2112

xx00

وجدنا مستطيل تم التثبيت ....

حتى لم يعد بالامكان العثور على مستطيلات

مبروك

طبعا تحتاج لدراسة مقدار التثقيل مثلا اخذ مساحة المستطيل و ربما وجود زوايا صفرية تعدل بقيمة المستطيل " تخفيض أو زيادة " فيما لو ظهر احتمالان بنفس المساحة


أنا فقط حاولت توليد بعض الافكار ... ويسعدني معرفت حلك النهائي