تكلفة سلاسل المصفوفات
أوجد أقل تكلفة ضرب قياسي لسلسلة تضم حتى 12 مصفوفة.
def chain_cost(dimensions):
if type(dimensions) not in (list, tuple) or not 2 <= len(dimensions) <= 13:
raise ValueError("one through twelve matrices")
if any(type(d) is not int or not 1 <= d <= 1000 for d in dimensions):
raise ValueError("dimensions 1 through 1000")
n = len(dimensions)-1
cost = [[0]*n for _ in range(n)]
for width in range(2, n+1):
for left in range(n-width+1):
right = left+width-1
cost[left][right] = min(
cost[left][k]+cost[k+1][right]+
dimensions[left]*dimensions[k+1]*dimensions[right+1]
for k in range(left,right))
return cost[0][n-1]| المشروع | اختبر مصفوفة واحدة وتجميعات مختلفة وارفض الأبعاد خارج 1 إلى 1000 دون ضرب عناصر المصفوفات. |
|---|---|
| راجع قبل التطبيق | قارن السلوك الفعلي بالنتيجة المتوقعة. إذا فشل فحص، تحقّق من السبب قبل إجراء تغييرات إضافية. |
| النماذج | اضبط نقطة اتصال متوافقة مع OpenAI أو Anthropic باستخدام العنوان الأساسي ومفتاح API عند الحاجة. اختبر الاتصال. يجب أن يعمل خادم النموذج المحلي؛ وقد ترسل الأدوات البعيدة البيانات بشكل منفصل. |
def chain_cost(dimensions):
if type(dimensions) not in (list, tuple) or not 2 <= len(dimensions) <= 13:
raise ValueError("one through twelve matrices")
if any(type(d) is not int or not 1 <= d <= 1000 for d in dimensions):
raise ValueError("dimensions 1 through 1000")
n = len(dimensions)-1
cost = [[0]*n for _ in range(n)]
for width in range(2, n+1):
for left in range(n-width+1):
right = left+width-1
cost[left][right] = min(
cost[left][k]+cost[k+1][right]+
dimensions[left]*dimensions[k+1]*dimensions[right+1]
for k in range(left,right))
return cost[0][n-1]ميز الخطة المحسوبة عن العمل الذي تمثله
يوفر ChainArbor مساحة عمل للبرمجة على Windows لأعمال التخطيط الحسابي، حيث يمكنك مناقشة الافتراضات مع نموذج متصل. ابدأ بتحديد ما تعيده دالة التخطيط فعليا ومن يستخدمه. فتقدير الكلفة وترتيب التنفيذ والعملية المنفذة مخرجات مختلفة، ويوضح طلب التعديل المفيد هذا التمييز صراحة.
تخطيط كلفة سلسلة المصفوفات هو مهمة المثال المقدمة. يمكنك طلب مراجعة التحقق من الأبعاد والكلفة الحسابية المبلّغ عنها قبل توسيع التطبيق المحيط. أدرج المستدعي وتوقعاته كي لا يعرض تعديل مقترح الكلفة الدنيا خطأ كما لو كانت جدولا للضرب أو نتيجة مصفوفة مكتملة.
استخدم المحادثة لإظهار قرارات الواجهة هذه، ثم افحص تعديلات المصدر الناتجة. اختبر سلاسل أبعاد صغيرة بكلف محددة بصورة مستقلة، بما فيها حالة المصفوفة الواحدة، وشغل اختبارات المشروع نفسه. إذا طلبت خطة تنفيذ لاحقا، فتعامل مع تمثيلها والتحقق منها كمتطلبات إضافية، ولا تفترض أنهما ينتجان من حساب الكلفة.
لاختيار نموذج ذكاء اصطناعي غير مفلتر، اتصل بخدمة مدعومة متوافقة مع OpenAI أو تابعة لـ Anthropic توفر النموذج الذي تريده. تعتمد بيانات الاعتماد ودعم الأدوات وحدود السياق على هذا الإعداد. لا تتجاوز مساحة العمل قيود المزود؛ بل تساعد في ربط تعديلات التخطيط المقترحة بالمصدر ومعايير القبول التي يمكنك مراجعتها.
أسئلة توضح نطاق كود التخطيط
ماذا أطلب إذا احتجت إلى ترتيب تنفيذ؟
اطلب تمثيلا صريحا للترتيب وصف كيفية استخدام المستدعي له. قد لا تنتج الدالة التي تبلغ عن أقل كلفة حسابية هذا التمثيل. أدرج أمثلة للتحقق من الخطة ومن كلفتها المبلّغ عنها معا.
لماذا أختبر سلسلة تحتوي على مصفوفة واحدة فقط؟
تحدد السلوك الأساسي حين لا يلزم أي ضرب. أدرج هذه الحالة إلى جانب مثال صغير متعدد المصفوفات، ليفحص اقتراح المساعد عند الحد وفي منطق التخطيط المستخدم للسلاسل الأطول.
هل يمكن لمساحة العمل التحقق من النتائج العددية الفعلية للمصفوفات؟
استخدم الأدوات العددية واختبارات مشروعك لهذه النتائج. تدعم مساحة البرمجة مناقشة التعديلات المقترحة ومراجعتها؛ ولا تثبت حالة اختبار صحيحة للكلفة أن تنفيذ ضرب منفصلا ينتج قيما صحيحة.
كيف أمنع إعادة هيكلة الكلفة من توسيع واجهتها؟
حدد نوع القيمة المعادة حاليا وسلوك المستدعي المطلوب في الطلب. راجع الفروق بحثا عن مخرجات جديدة أو وحدات متغيرة. إذا أردت خطة أغنى، فعرفها كمتابعة مقصودة، لا كنتيجة عرضية لإعادة الهيكلة.
ChainArbor · آخر تحديث 2026-10-25