حاسبة فهارس شجرة فينويك
أدخل فهرسًا وشاهد كيف تتحرك شجرة فينويك منه: العدد 13 بالنظام الثنائي هو 1101، وأدنى بت مضبوط فيه يساوي 1، وخطوة التحديث تنقلك إلى 14 وخطوة المجموع إلى 12. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الدليل
- 13
- الحجم
- 16
- أدنى بت مفعّل
- 1
- التالي في التحديث
- 14
- أب الاستعلام
- 12
- ثنائي
- 0b1101
شجرة فينويك، وتُسمى أيضًا binary indexed tree، تجيب عن مجاميع البادئة وتحديثات النقطة في زمن لوغاريتمي عبر تخزين نطاقات جزئية أطوالها قوى لاثنين. تعتمد كل خطوة تنقّل على خدعة بت واحدة: البت الأدنى المضبوط للفهرس الحالي المعتمد من 1، ويُكتب lsb مساويًا لـ i AND سالب i في مكمّل الاثنين. إضافة ذلك lsb تسير سلسلة التحديث؛ طرحه يسير سلسلة استعلام البادئة. يحتاج الطلاب ومبرمجو المسابقات ومؤلفو المكتبات إلى فهارس الأب والتالي دون إعادة اشتقاق الهويات تحت ضغط الامتحان. تقبل حاسبة فهارس شجرة فينويك فهرسًا موجبًا i وحجم شجرة اختياريًا n، وتعيد lsb وتالي التحديث وأب الاستعلام بخطوة واحدة والأشكال الثنائية للتعليم، وعند تعيين n المسار الكامل للتحديث والاستعلام في شيفرة BIT الكلاسيكية.
كيف تستخدم فهارس فينويك البت الأدنى المضبوط
في binary indexed tree بفهارس من 1، تكون الخلية عند الفهرس i مسؤولة عن مقطع متجاور من المصفوفة الأساسية طوله يساوي البت الأدنى المضبوط لـ i. يُحسب ذلك الطول كـ lsb يساوي i AND نفي i بمكمّل الاثنين، ويُكتب غالبًا i and minus i في لغات تستخدم حسابًا نمطيًا على أعداد صحيحة بعرض ثابت. هندسيًا، قلب كل البتات تحت الواحد الأقل أهمية يعزل تلك القوة لاثنين؛ وAND البتّي مع الفهرس الأصلي يعطي تلك القوة تمامًا.
تبدأ حلقة التحديث الكلاسيكية من الفهرس المعدَّل وتستبدل i بـ i زائد lsb بينما يبقى i ضمن حجم الشجرة n، فتقفز كل خطوة إلى الفهرس التالي الذي يجب أن يمتص الدلتا. تبدأ حلقة استعلام البادئة الكلاسيكية من الطرف الأيمن للبادئة وتستبدل i بـ i ناقص lsb بينما يبقى i موجبًا، جامعةً الخلايا المسؤولة التي تغطي المدى من واحد حتى الفهرس الأصلي. معًا تنفّذ هاتان المسيرتان مجاميع المدى عبر تضمين بادئتين.
فهم خطوة واحدة—تالي التحديث يساوي i زائد lsb، وأب الاستعلام يساوي i ناقص lsb—يكفي لتصحيح أخطاء off-by-one ورسم شجرة المسؤولية على السبورة والتحقق من أن التنفيذ يطابق هويات الكتاب قبل دمجه في قالب مسابقة أو خط أنابيب تحليلي إنتاجي.
أين تثبت واجهة فهارس فينويك قيمتها
يستخدم مدرّبو البرمجة التنافسية والقضاة عبر الإنترنت حاسبة فهارس شجرة فينويك ليتحقق المتعلمون من خطوات الأب والتالي أثناء كتابة حلقات التحديث والاستعلام يدويًا. تحتاج أدوات التحضير للمقابلات إلى وحي حتمي يوافق كل درس BIT قياسي على نفس المدخلات الصحيحة، بما في ذلك فهارس محرجة تقل بمقدار واحد عن قوة لاثنين. يتحقق مؤلفو المكتبات الذين يدمجون binary indexed tree في خدمات تحليلية من الشيفرة المنقولة مقابل مسارات ذهبية لأحجام تمثيلية دون إعادة تشغيل مجموعات مجموع كاملة.
تستفيد مواقع المحتوى التي تتصدر لحاسبة فهارس فينويك وbinary indexed tree lsb من ودجة حية يطابق مسارها المجاني في المتصفح مسار الأتمتة المدفوع مسبقًا على الوحدة الخالصة نفسها. فشل التحقق لا يستهلك الرصيد. أبقوا الفهارس ضمن المدى الموجب لاثنين وثلاثين بتًا، وثبّتوا مصفوفات المسار في الاختبارات عند تعيين size، لتحصلوا على تنقّل قابل لإعادة الإنتاج للواجبات ولقطات التوثيق وعُمّال الحافة دون إنشاء صندوق رمل كامل لهياكل البيانات.
حالات الاستخدام
التحقق من المقابلات والقوالب
قارنوا تنفيذات BIT المرشحة بوحي حتمي لتسلسلات فهارس التحديث واستعلام البادئة لأحجام ثابتة.
الأسئلة الشائعة
هل الفهارس من الأساس 0 أم 1؟
من الأساس 1 كما في صياغة فينويك / binary indexed tree القياسية. يجب أن يكون الفهرس عددًا صحيحًا من 1 إلى 2147483647.
لماذا يُستخدم i & -i للبت الأدنى المضبوط؟
في مكمّل الاثنين يقلب -i البتات تحت الواحد الأدنى لـ i؛ وAND البتّي يعزل تلك القوة لاثنين، وهي طول مسؤولية الخلية i تمامًا.
ما مسارا الفهرس 13 في شجرة حجمها 16؟
مع الحجم 16 يكون مسار التحديث 13 ثم 14 ثم 16، وهي الخلايا التي تستوعب تغييرًا عند 13. أما مسار المجموع فهو 13 ثم 12 ثم 8، وهي الخلايا التي تُجمع للحصول على المجموع التراكمي حتى 13.
فيمَ تُستخدم شجرة فينويك؟
تحسب المجاميع التراكمية وتحدّث قيمة واحدة في زمن لوغاريتمي. تخزن كل خلية نطاقًا جزئيًا طوله قوة من قوى العدد اثنين، لذلك لا يلمس الجمع أو التحديث إلا خلايا قليلة.
ما الفهارس التي يمكنني إدخالها؟
أي عدد صحيح من 1 إلى 2147483647، وهو أكبر قيمة موجبة في 32 بت. وإذا حددت حجم الشجرة أيضًا فيجب أن يساوي الفهرس على الأقل وألا يتجاوز الحد نفسه.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/fenwick-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"index":13}'const res = await fetch("https://api.kit.forhosting.com/dev/fenwick-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"index": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/fenwick-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"index": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/fenwick-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"index":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"index":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/fenwick-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"index": 13
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.fenwick_index",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
المنطق الخالص الحتمي يطابق استخدام المتصفح المجاني واستدعاءات API المدفوعة بايتًا ببايت.
عقد الإدخال وحقول الاستجابة والتحقق
مثال: الفهرس ثلاثة عشر له ثنائي zero-b one one zero one، بت أدنى مضبوط واحد، تالي تحديث أربعة عشر، أب استعلام اثنا عشر؛ مع size ستة عشر مسار التحديث ثلاثة عشر ثم أربعة عشر ثم ستة عشر، ومسار الاستعلام ثلاثة عشر ثم اثنا عشر ثم ثمانية. اقرن الاستجابة بعرض مصفوفاتكم الخاص إن احتجتم مخططًا؛ هذه النقطة تحسب حساب الفهارس فقط ولا تخزّن قيم الشجرة ولا تنفّذ استعلامات مجموع على مصفوفات المستخدم. أرسل جسم JSON عبر POST بالحقل الإلزامي index: عدد صحيح موجب في المجال المغلق من واحد إلى اثنين مرفوعًا إلى واحد وثلاثين ناقص واحد، وهو أقصى موجب موقَّع على اثنين وثلاثين بتًا حيث تظل عوامل JavaScript البتّية أمينة. تُقبل الأسماء البديلة i وidx وposition. الحقل الاختياري size (بدائل n وn_max وtree_size) هو أقصى فهرس للشجرة؛ عند وجوده يجب أن يكون عددًا صحيحًا لا يقل عن index ولا يزيد عن نفس الحد الأعلى. القيم الناقصة أو غير الصحيحة أو الصفر أو خارج المدى تفشل بـ invalid_input مع تسمية الحقل ولا تُفوتر. عند النجاح يتضمن الجسم دائمًا index وlowest_set_bit وupdate_next وquery_parent وسلاسل binary وlsb_binary ببادئة zero-b وسلسلة formula قصيرة تعيد الهويات. عند توفير size يتضمن الجسم أيضًا size وupdate_path قائمة مرتبة للفهارس التي تزورها حلقة التحديث وquery_path القائمة المرتبة لحلقة البادئة وupdate_next_in_range قيمة منطقية تبين هل جار التحديث بخطوة واحدة لا يزال داخل الشجرة.
أين تثبت واجهة فهارس فينويك قيمتها
ولأن التنفيذ pure parse من المستوى A، يكلف كل استدعاء ناجح السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة.
حالات التكامل
تمارين BIT للمسابقات والواجبات
قدّموا للطلاب الفهرس i وsize n الاختياري؛ وتحققوا من lowest_set_bit وupdate_next وquery_parent والمسارات الكاملة مقابل حلقات فينويك المكتوبة يدويًا.
مسارات ذهبية للتوثيق والمكتبات
ولّدوا ثوابت update_path وquery_path لتوثيق binary indexed tree واختبارات الوحدة وفحوص قابلية النقل عبر اللغات.
أسئلة تقنية
كيف أحسب فهارس الأب والتالي لشجرة فينويك؟
أرسلوا فهرسًا موجبًا i من الأساس 1. تعيد API القيم lsb = i & -i وupdate_next = i + lsb وquery_parent = i - lsb مع الأشكال الثنائية لـ i وlsb.
ماذا يفعل المعامل الاختياري size؟
عند تعيين size n (n >= index) تضيف الاستجابة update_path (i += lsb بينما i <= n) وquery_path (i -= lsb بينما i > 0) مطابقة لحلقات BIT الكلاسيكية.
كم تكلفة حاسبة فهارس شجرة فينويك؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ الإدخال غير الصالح لا يُفوتر.