حاسبة عُقد شجرة الاستدعاء
عُدّ عقد شجرة الاستدعاء الذاتي لخوارزميات فرّق تسد مستوى بعد مستوى: مسألتان فرعيتان بنصف الحجم انطلاقًا من 16 تعطيان 5 مستويات فيها 1 و2 و4 و8 و16 عقدة، أي 31 عقدة منها 16 ورقة. تحقق من التمارين دون رسم الشجرة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- عامل التفرع
- 2
- نسبة التصغير
- 2
- حجم المدخل
- 16
- عدد المستويات
- 5
- ارتفاع الشجرة
- 4
- إجمالي العقد
- 31
- العقد الورقية
- 16
تظهر علاقات الاستدعاء من نوع التقسيم والتغلّب بالشكل T لـ n يساوي a مضروبة في T لـ n على b زائد العمل غير الاستدعائي في كل مقرر خوارزميات عندما يُرسم الفرز بالدمج أو التقسيمات المكانية الثنائية أو الاستدعاء متعدد الاتجاهات كأشجار. يحتاج الطلاب إلى عدّ موثوق لعدد العُقد في كل مستوى ولعمق الشجرة قبل أن تبلغ المسائل الجزئية الحالة الأساسية. تقبل حاسبة عُقد شجرة الاستدعاء هذه عامل التفرّع a ونسبة الانكماش b وحجم الإدخال عند الجذر n، وتسير في الشجرة حتى يصبح حجم المسألة الجزئية واحداً على الأكثر، وتعيد عدد المستويات وارتفاع الشجرة وإجمالي العُقد والأوراق وتسلسل العُقد لكل مستوى وأحجام المسائل الجزئية وتوزيعين كسريين للعمل. يفترض أحدهما تكلفة وحدة لكل عقدة؛ ويفترض الآخر عملاً متناسباً مع حجم المسألة الجزئية، بما يوافق صورة الفرز بالدمج الكلاسيكية حيث يؤدي كل مستوى كامل عملاً خطياً في n.
ماذا تعدّ شجرة الاستدعاء وكيف تُعرَّف المستويات
شجرة الاستدعاء صورة لكل مسألة جزئية ينشئها خوارزمية تقسيم وتغلّب زمنها يحقق T لـ n يساوي a مضروبة في T لـ n على b زائد f لـ n. يمثل الجذر النسخة الأصلية بحجم n. لكل عقدة داخلية a أبناء بالضبط، يحل كلٌّ منها مسألة حجمها حجم الأب مقسوماً على b.
تُرقَّم المستويات من الصفر عند الجذر. في المستوى i يوجد a مرفوعة إلى i من العُقد، ولكل منها حجم مسألة جزئية n مقسوماً على b مرفوعة إلى i ما دامت الأحجام حقيقية وموجبة. يستمر السير ما دام الحجم الحالي أكبر من واحد بصرامة؛ ويُحفظ أول مستوى حجمه أصغر من واحد أو يساويه كمستوى أوراق للحالات الأساسية ثم يتوقف السير.
تطابق هذه الاتفاقية شرط التوقف في الكتب عند حل مدخلات الحجم الثابت مباشرة. ارتفاع الشجرة هو عدد المستويات ناقص واحد، أي عدد الحواف على مسار من الجذر إلى ورقة. تساوي عُقد الأوراق a مرفوعة إلى الارتفاع عندما تبلغ الأحجام واحداً على حدّ قوة تام، وبشكل أعم عدد عُقد آخر مستوى مسجّل.
العُقد الداخلية هي الإجمالي ناقص الأوراق. عند عامل تفرّع واحد تكون الشجرة عموداً واحداً طوله عدد القسمات المتتالية حتى يصبح الحجم واحداً على الأكثر. وعند عامل أكبر من واحد تكون الصيغة المغلقة لإجمالي العُقد على L مستويات هي a مرفوعة إلى L ناقص واحد الكل على a ناقص واحد؛ ويعيد هذا الطرف حسابها بجمع المتسلسلة الهندسية لتبقى الأحجام الكسرية والحالات الأساسية المبكرة متسقة مع السير.
متى يفيد عدّ عقد شجرة الاستدعاء
تستخدم مقررات الخوارزميات ومنصات التدريس حاسبة عُقد شجرة الاستدعاء ليتحقق المتعلمون من العمق والعرض لأي a و b و n دون رسم مئات العُقد يدوياً. تحتاج مولّدات الامتحانات إلى أوراكل حتمي يعلّم خطأً عدد أوراق أو مستويات مدّعى بدل قبول تخمينات تقاربية فضفاضة. تقرن أدوات التحضير للمقابلات ومصورات التعقيد المصفوفات لكل مستوى بمخططات ليرى المرشحون لماذا غالباً ينفق التقسيم والتغلّب المتوازن العمل نفسه في كل مستوى عندما يساوي a قيمة b.
يمكن لدفاتر الهندسة التي تُنمذج تقسّمات متعددة الاتجاهات أو مخططات مهام متوازية التحقق من التفرع قبل كتابة مجدولي الإنتاج. تستفيد مواقع المحتوى التي تتنافس على كلمات حاسبة شجرة الاستدعاء وعدد العُقد من ودجة حية يطابق مسارها المجاني في المتصفح مسار الأتمتة المدفوع على الوحدة النقية نفسها. لا يستهلك فشل التحقق الرصيد.
حالات الاستخدام
واجبات الخوارزميات والتدريس
اسمحوا للطلاب بإرسال a و b و n لـ T(n)=a T(n/b)+f(n) والتحقق من عدد المستويات والأوراق والتسلسل الهندسي للعُقد مقابل رسوم الكتاب.
التصحيح التلقائي للامتحانات و LMS
صحّحوا بنود شجرة الاستدعاء بأوراكل حتمي لإجمالي العُقد والارتفاع بدل قبول تخمينات تقاربية كإجابات دقيقة.
الأسئلة الشائعة
كم عقدة في شجرة الاستدعاء لخوارزمية الترتيب بالدمج؟
مع مدخل حجمه 16 يُقسم إلى نصفين في كل استدعاء، هناك 5 مستويات فيها 1 و2 و4 و8 و16 عقدة. المجموع 31 عقدة، منها 16 ورقة و15 عقدة داخلية.
متى تتوقف الشجرة عن النمو؟
عند أول مستوى يصبح فيه حجم المسألة الفرعية 1 أو أقل، وهذا المستوى يضم الحالات الأساسية. والارتفاع هو عدد المستويات ناقص واحد، فخمسة مستويات تعني ارتفاعًا قدره 4.
ماذا يبيّن توزيعا العمل؟
يفترض الأول أن كل عقدة تكلف القدر نفسه، فيتركز معظم العمل في الأوراق. ويفترض الثاني أن العمل يتناسب مع حجم المسألة، كما في الترتيب بالدمج، حيث يؤدي كل مستوى من المستويات الخمسة خُمس العمل.
ماذا لو أنشأ كل استدعاء مسألة فرعية واحدة فقط؟
عندها تصبح الشجرة سلسلة واحدة، طولها بعدد القسمات اللازمة لإنزال الحجم إلى 1. ويجب أن تكون نسبة التصغير أكبر من واحد دائمًا، وإلا فلن تصغر المسائل الفرعية أبدًا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/recursion-tree-nodes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"branching_factor":2,"shrink_ratio":2,"input_size":16}'const res = await fetch("https://api.kit.forhosting.com/dev/recursion-tree-nodes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"branching_factor": 2,
"shrink_ratio": 2,
"input_size": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/recursion-tree-nodes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"branching_factor": 2,
"shrink_ratio": 2,
"input_size": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/recursion-tree-nodes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"branching_factor":2,"shrink_ratio":2,"input_size":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"branching_factor":2,"shrink_ratio":2,"input_size":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/recursion-tree-nodes", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"branching_factor": 2,
"shrink_ratio": 2,
"input_size": 16
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.recursion_tree_nodes",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
يغذي نفس الوحدة التحليلية النقية أداة المتصفح المجانية وواجهة API المدفوعة مسبقاً، فلا تختلف فحوصات الواجبات وخطوط الأتمتة أبداً في العمق أو عدد الأوراق لنفس a و b و n.
عقد الإدخال وحقول الاستجابة وصور توزيع العمل
تعيد سلسلة recurrence صياغة T لـ n بدلالة a و b، ويلخّص حقل formula قاعدة المستويات والصيغة المغلقة لإجمالي العُقد. تُرفض التركيبات المرضية التي تتجاوز سقفاً آمناً للمستويات أو العُقد برسالة واضحة حتى لا يعلق العملاء على شجرة منفجرة. مثال: عامل تفرّع اثنان ونسبة انكماش اثنان وحجم إدخال ستة عشر ينتج خمسة مستويات بأعداد واحد واثنان وأربعة وثمانية وستة عشر، بإجمالي واحد وثلاثين عقدة وستة عشر ورقة — شجرة الاستدعاء الثنائية الكاملة الكلاسيكية للفرز بالدمج على مصفوفة قوة الاثنين. أرسلوا جسم JSON بطريقة POST بثلاثة أعداد منتهية إلزامية: branching_factor عدد صحيح أكبر من واحد أو يساويه؛ shrink_ratio عدد منتهٍ أكبر من واحد بصرامة حتى تنكمش المسائل الجزئية؛ و input_size عدد منتهٍ لا يقل عن واحد للجذر. تُقبل السلاسل الرقمية؛ وتفشل الحقول الناقصة والقيم غير المنتهية وعوامل التفرّع غير الصحيحة أو دون الواحد ونسب الانكماش غير الأكبر من واحد وأحجام الجذر دون الواحد بـ invalid_input دون فوترة. عند النجاح يعيد الجسم المدخلات الثلاثة ويبلّغ level_count و tree_height و total_nodes و leaf_nodes و internal_nodes. يسرد المصفوفة nodes_per_level كم عقدة في كل مستوى من الجذر نزولاً. تسرد subproblem_size_per_level الحجم المشترك لكل عُقد ذلك المستوى، مقرباً إلى اثنتي عشرة مرتبة عشرية لمساواة مستقرة عبر بيئات التشغيل. مصفوفتان كسريتان متوازيتان مجموعهما واحد: node_fraction_per_level تقسم عدد عُقد كل مستوى على الإجمالي العام لنمذجة عمل وحدة لكل استدعاء؛ و size_work_fraction_per_level توزّن كل مستوى بالعُقد مضروبة في حجم المسألة الجزئية لنمذجة عمل غير استدعائي متناسب مع الحجم عند تلك العقدة.
أين تثبت واجهة API لعُقد شجرة الاستدعاء قيمتها
لأن التنفيذ pure parse من الطبقة A، تكلف كل مكالمة ناجحة السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة.
حالات التكامل
مصورات التعقيد والتحضير للمقابلات
غذّوا nodes_per_level و size_work_fraction_per_level في مخططات ليرى المرشحون كيف يتوزع العمل عبر المستويات في أشجار بأسلوب الفرز بالدمج.
أسئلة تقنية
كيف أعدّ عُقد شجرة استدعاء للتقسيم والتغلّب؟
أرسلوا branching_factor a صحيحاً ≥ 1 و shrink_ratio b > 1 و input_size n ≥ 1. تسير API في مستويات بـ a^i عُقد بحجم n/b^i حتى size ≤ 1 وتعيد الإجماليات ومصفوفات لكل مستوى.
ما الفرق بين level_count و tree_height؟
level_count هو عدد المستويات بما فيها الجذر (واحد على الأقل). tree_height هو level_count ناقص 1، أي عدد الحواف على مسار من الجذر إلى ورقة.
كيف يُحسب توزيع العمل؟
node_fraction_per_level هو عدد عُقد كل مستوى على total_nodes. size_work_fraction_per_level توزّن كل مستوى بالعُقد × حجم المسألة الجزئية بما يوافق عملاً غير استدعائي Θ(size) لكل استدعاء.
متى ترفض الحاسبة الإدخال؟
الحقول الناقصة أو غير المنتهية، و branching_factor غير الصحيح أو دون الواحد، و shrink_ratio ≤ 1، و input_size < 1، أو الأشجار التي تتجاوز السقف الآمن للمستويات أو العُقد تفشل بـ invalid_input دون فوترة.
كم تكلفة حاسبة عُقد شجرة الاستدعاء؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقاً بمبلغ $0.002 لكل مكالمة ناجحة؛ ولا تُفوتر المدخلات غير الصالحة.