جدول البحث
في علوم الحاسوب ، يُعدّ جدول البحث ( LUT ) مصفوفةً تستبدل عملية حساب دالة رياضية أثناء التشغيل بعملية فهرسة مصفوفة أبسط، في عملية تُعرف بالعنونة المباشرة . ويمكن أن يكون التوفير في وقت المعالجة كبيرًا، لأن استرجاع قيمة من الذاكرة غالبًا ما يكون أسرع من إجراء عملية حسابية "مكلفة" أو عملية إدخال/إخراج . [ 1 ] ويمكن حساب الجداول مسبقًا وتخزينها في وحدة تخزين البرنامج الثابتة ، أو حسابها (أو "جلبها مسبقًا" ) كجزء من مرحلة تهيئة البرنامج ( التخزين المؤقت )، أو حتى تخزينها في الأجهزة في منصات خاصة بالتطبيقات. كما تُستخدم جداول البحث على نطاق واسع للتحقق من صحة قيم الإدخال من خلال مطابقتها مع قائمة من العناصر الصالحة (أو غير الصالحة) في مصفوفة، وفي بعض لغات البرمجة، قد تتضمن دوال مؤشر (أو إزاحات إلى تسميات) لمعالجة الإدخال المطابق. وتستخدم مصفوفات البوابات المنطقية القابلة للبرمجة (FPGAs) أيضًا جداول بحث قابلة لإعادة التكوين ومنفذة على مستوى الأجهزة لتوفير وظائف أجهزة قابلة للبرمجة. تختلف جداول البحث (LUTs) عن جداول التجزئة في أنها، لاسترجاع قيمةمع المفتاح، سيقوم جدول التجزئة بتخزين القيمةفي الفتحةأينهي دالة تجزئة، أيتُستخدم لحساب الفتحة، بينما في حالة LUT، القيمةيتم تخزينها في الفتحةوبالتالي يمكن توجيهها مباشرة. [ 2 ] : 466
تاريخ

قبل ظهور أجهزة الكمبيوتر، كانت جداول البحث عن القيم تُستخدم لتسريع الحسابات اليدوية للدوال المعقدة، كما هو الحال في حساب المثلثات واللوغاريتمات ودوال الكثافة الإحصائية. [ 3 ]
في الهند القديمة (عام 499 ميلادي)، ابتكر أريابهاتا أحد أوائل جداول الجيب ، والتي قام بترميزها بنظام عددي قائم على الحروف السنسكريتية. وفي عام 493 ميلادي، كتب فيكتوريوس الأكيتاني جدول ضرب مكونًا من 98 عمودًا، يُعطي ( بالأرقام الرومانية ) ناتج ضرب كل عدد من 2 إلى 50 مرة، وكانت الصفوف عبارة عن "قائمة أعداد تبدأ من ألف، وتتناقص بالمئات حتى مئة، ثم بالعشرات حتى عشرة، ثم بالآحاد حتى واحد، ثم الكسور حتى 1/144" [ 4 ]. غالبًا ما يُعلَّم أطفال المدارس الحديثة حفظ " جداول الضرب " لتجنب إجراء العمليات الحسابية على الأعداد الأكثر استخدامًا (حتى 9 × 9 أو 12 × 12).
في بدايات تاريخ الحواسيب، كانت عمليات الإدخال والإخراج بطيئة للغاية، حتى بالمقارنة بسرعات المعالجات في ذلك الوقت. لذا، كان من المنطقي تقليل عمليات القراءة المكلفة عن طريق التخزين المؤقت اليدوي ، وذلك بإنشاء جداول بحث ثابتة (مدمجة في البرنامج) أو مصفوفات ديناميكية مُحمّلة مسبقًا تحتوي فقط على عناصر البيانات الأكثر شيوعًا. ورغم ظهور التخزين المؤقت على مستوى النظام الذي يُؤتمت هذه العملية، إلا أن جداول البحث على مستوى التطبيق لا تزال قادرة على تحسين أداء عناصر البيانات التي نادرًا ما تتغير، إن لم يكن أبدًا.
كانت جداول البحث من أوائل الوظائف التي طُبقت في جداول البيانات الحاسوبية ، حيث تضمنت النسخة الأولى من برنامج VisiCalc (1979) LOOKUPوظيفةً ضمن وظائفها العشرين الأصلية. [ 5 ] يتضمن برنامج Microsoft ExcelVLOOKUP العديد من وظائف البحث المتخصصة، منها وظيفة للبحث الرأسي (كما في دفتر البحث التقليدي)، HLOOKUPووظيفة للبحث الأفقي، ووظيفة (منذ عام 2019) XLOOKUPلإخراج أعمدة متعددة في آن واحد. [ 6 ]
القيود
على الرغم من أن أداء LUT مضمونفي عملية البحث، لا يمكن أن يكون لكيانين أو قيمتين نفس المفتاحعندما يكون حجم الكونإذا كان حجم البيانات التي تُحدد فيها المفاتيح كبيرًا، فقد يكون من غير العملي أو المستحيل تخزينها في الذاكرة . هناك عدة طرق للتغلب على هذه المشكلة، بما في ذلك استخدام جدول تجزئة [ 2 ] : 468. إذا كانت العديد من المفاتيح تشترك في قيمة واحدة، أو إذا كانت المفاتيح تمثل قيمة عددية بدقة معينة، فإن تقليل هذه الدقة قد يُقلل حجم البيانات بشكل كافٍ، ومن ثم يمكن استخدام الاستيفاء لتصحيح الخطأ الناتج عن فقدان الدقة.
أمثلة
دالة تجزئة بسيطة
في عملية بحث بسيطة باستخدام دالة التجزئة ، تُستخدم قيمة البيانات الأولية غير الموقعة مباشرةً كمؤشر لجدول أحادي البعد لاستخراج النتيجة. بالنسبة للنطاقات الصغيرة، قد تكون هذه الطريقة من بين أسرع عمليات البحث، حتى أنها تتجاوز سرعة البحث الثنائي بدون أي تفرعات وتُنفذ في وقت ثابت . [ 7 ]
عدّ البتات في سلسلة من البايتات
إحدى المشكلات المنفصلة التي تُعدّ مكلفة الحل على العديد من أجهزة الحاسوب هي مسألة حساب عدد البتات التي قيمتها 1 في عدد ثنائي، والتي تُسمى أحيانًا دالة التوزيع . على سبيل المثال، العدد العشري "37" يُكتب "00100101" في النظام الثنائي، لذا فهو يحتوي على ثلاث بتات قيمتها 1 في النظام الثنائي. [ 8 ] : 282
مثال بسيط لبرنامج مكتوب بلغة C ، مصمم لحساب عدد البتات التي قيمتها 1 في عدد صحيح ، قد يبدو كالتالي: [ 8 ] : 283
دالة ` count_ones` تأخذ عددًا صحيحًا غير مُوقّع ` x` كمدخل ، وتُعيد النتيجة .يتطلب التنفيذ المذكور أعلاه 32 عملية لتقييم قيمة 32 بت، وهو ما قد يستغرق عدة دورات ساعة بسبب التفرع . يمكن " فك " هذا التنفيذ إلى جدول بحث يستخدم بدوره دالة تجزئة بسيطة لتحسين الأداء. [ 8 ] : 282-283
يتم إنشاء مصفوفة البتات bits_set ، التي تحتوي على 256 عنصرًا، بتحديد عدد البتات التي قيمتها 1 في كل قيمة بايت ممكنة (مثل 0x00 = 0، 0x01 = 1، 0x02 = 1، وهكذا). على الرغم من إمكانية استخدام خوارزمية وقت التشغيل لإنشاء مصفوفة bits_set ، إلا أن ذلك يُعد استخدامًا غير فعال لدورات الساعة عند مراعاة حجم المصفوفة، لذا يُستخدم جدول مُحسَب مسبقًا - مع إمكانية استخدام نص برمجي في وقت الترجمة لإنشاء الجدول ديناميكيًا وإضافته إلى ملف المصدر . يمكن حساب مجموع الآحاد في كل بايت من العدد الصحيح من خلال بحث بسيط باستخدام دالة التجزئة على كل بايت؛ مما يُجنّب التفرعات بشكل فعال، ويؤدي إلى تحسين كبير في الأداء. [ 8 ] : 284
دالة `count_ones` تأخذ مُدخلًا من نوع `int` وتُمرر إليه قيمة الإدخال `input_value` . تُعرّف الدالة `union` على النحو التالي: `four_bytes` ، حيث `int` عدد صحيح كبير ، و`char` عدد بايتات من أربعة . ثم تُعيّن قيمة `operand` إلى قيمة الإدخال `input_value` . const int bits_set [ 256 ] = { 0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , } ٤ ، ٤ ، ٥ ، ٤ ، ٥ ، ٥ ، ٦ ، ١ ، ٢ ، ٢ ، ٣ ، ٢ ، ٣ ، ٣ ، ٤ ، ٢ ، ٣ ، ٣ ، ٤ ، ٣ ، ٤ ، ٤ ، ٥ ، ٢ ، ٣ ، ٣ ، ٤ ، ٣ ، ٤ ، ٤ ، ٥ ، ٣، 4 ، 4 ، 5 ، 4 ، 5 ، 5 ، 6 ، 2 ، 3 ، 3 ، 4 ، 3 ، 4 ، 4 ، 5 ، 3 ، 4 ، 4 ، 5 ، 4 ، 5 ، 5 ، 6 ، 4 ، 5 ، 5 ، 6 ، 5 ، 6 ، 6 ، 7 ، 1 ، 2 ، 2 ، 3 ، 2 ، 3 ، 3 ، 4 ، 2 ، 3 ، 3 ، 4 ، 3 ، 4 ، 4 ، 5 ، 2 ، 3 ، 3 ، 4 ، 3 ، 4 ،٤ ، ٥ ، ٣ ، ٤ ، ٤ ، ٥ ، ٤ ، ٥ ، ٥ ، ٦ ، ٢ ، ٣ ، ٣ ، ٤ ، ٣ ، ٤ ، ٤ ، ٥ ، ٣ ، ٤ ، ٤ ، ٥ ، ٤ ، ٥ ، ٥ ، ٦ ، ٣ ، ٤ ، ٤ ، ٥ ، ٤ ، ٥ ، ٥ ، ٦ ، ٤ ، ٥ ، ٥ ، ٦ ، ٥ ، ٦ ، ٦ ، ٧ ، ٢ ، ٣ ، ٣ ، ٤, 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 5 , 6 , 6 , 7 , 6 , 7 , 7 , 8 } ; return ( bits_set [ operand . each_byte [ 0 ]] + bits_set [ operand . each_byte [ 1 ]] + bits_set [ operand . each_byte [ 2 ]] + bits_set [ operand . each_byte [ 3 ]]); }}جداول البحث في معالجة الصور

تُعدّ جداول البحث (LUTs) تقنية ممتازة لتحسين تقييم الدوال التي تتطلب حسابًا مكلفًا وتخزينًا مؤقتًا غير مكلف. ... بالنسبة لطلبات البيانات التي تقع بين عينات الجدول، يمكن لخوارزمية الاستيفاء توليد تقريبات معقولة عن طريق حساب متوسط العينات القريبة. [ 9 ]
في تطبيقات تحليل البيانات، مثل معالجة الصور ، يمكن استخدام جدول بحث (LUT) لتحويل بيانات الإدخال إلى تنسيق إخراج أكثر ملاءمة. على سبيل المثال، يمكن تحويل صورة رمادية لكوكب زحل إلى صورة ملونة لإبراز الاختلافات في حلقاته.
في معالجة الصور، تُعرف جداول البحث عادةً باسم LUT (أو 3DLUT)، وتُعطي قيمة إخراج لكل قيمة من نطاق قيم الفهرس. يُستخدم أحد جداول البحث الشائعة، والذي يُسمى خريطة الألوان أو لوحة الألوان ، لتحديد الألوان وقيم الشدة التي ستُعرض بها صورة معينة. في التصوير المقطعي المحوسب ، يُشير مصطلح "التحديد المكاني" إلى مفهوم ذي صلة لتحديد كيفية عرض شدة الإشعاع المقاس.
مناقشة
من الأمثلة الكلاسيكية على تقليل وقت الحساب باستخدام جداول البحث، الحصول على نتيجة عملية حسابية مثلثية ، مثل جيب قيمة معينة. [ 10 ] قد يؤدي حساب الدوال المثلثية إلى إبطاء تطبيق حاسوبي بشكل ملحوظ. يمكن للتطبيق نفسه أن ينهي عمله بشكل أسرع بكثير إذا قام مسبقًا بحساب جيب عدد من القيم، على سبيل المثال لكل عدد صحيح من الدرجات (يمكن تعريف الجدول كمتغيرات ثابتة في وقت الترجمة، مما يقلل من تكاليف وقت التشغيل المتكررة). عندما يحتاج البرنامج إلى جيب قيمة ما، يمكنه استخدام جدول البحث لاسترجاع أقرب قيمة جيب من عنوان ذاكرة، وقد يقوم أيضًا بالاستيفاء للوصول إلى جيب القيمة المطلوبة، بدلًا من الحساب باستخدام صيغة رياضية. وبالتالي، يمكن استخدام جداول البحث بواسطة المعالجات المساعدة الرياضية في أنظمة الحاسوب. كان خطأ في جدول البحث مسؤولًا عن خطأ قسمة الأعداد العشرية الشهير في شركة إنتل .
يمكن تمثيل الدوال التي تستخدم متغيرًا واحدًا (مثل الجيب وجيب التمام) باستخدام مصفوفة بسيطة. أما الدوال التي تستخدم متغيرين أو أكثر، فتتطلب تقنيات فهرسة متعددة الأبعاد. في هذه الحالة، يمكن استخدام مصفوفة ثنائية الأبعاد من نوع power[x][y] بدلاً من دالة لحساب x و y لنطاق محدود من قيم x و y. ويمكن تمثيل الدوال التي لها أكثر من نتيجة واحدة باستخدام جداول بحث عبارة عن مصفوفات من هياكل البيانات.
كما ذُكر، توجد حلول وسيطة تستخدم الجداول مع قدر ضئيل من العمليات الحسابية، وغالبًا ما تستخدم الاستيفاء . يمكن للحساب المسبق مع الاستيفاء أن يُحسّن دقة القيم الواقعة بين قيمتين محسوبتين مسبقًا. تتطلب هذه التقنية وقتًا أطول قليلًا، لكنها تُحسّن الدقة بشكل كبير في التطبيقات التي تتطلب ذلك. اعتمادًا على القيم المحسوبة مسبقًا، يمكن أيضًا استخدام الحساب المسبق مع الاستيفاء لتقليص حجم جدول البحث مع الحفاظ على الدقة.
على الرغم من فعالية استخدام جداول البحث في كثير من الأحيان، إلا أنه قد يؤدي إلى تكلفة باهظة إذا كانت العملية الحسابية التي يحل محلها جدول البحث بسيطة نسبيًا. إذ يمكن أن يؤدي وقت استرجاع البيانات من الذاكرة وتعقيد متطلباتها إلى زيادة وقت تشغيل التطبيق وتعقيد النظام مقارنةً بما يتطلبه حساب الصيغ مباشرةً. كما قد يُشكل احتمال تلوث ذاكرة التخزين المؤقت مشكلةً أيضًا، حيث أن الوصول إلى الجداول الكبيرة سيؤدي حتمًا إلى عدم العثور على البيانات في ذاكرة التخزين المؤقت . وتزداد هذه الظاهرة حدةً مع تفوق سرعة المعالجات على سرعة الذاكرة. وتظهر مشكلة مماثلة في إعادة التجسيد ، وهي إحدى تقنيات تحسين المُصرّف . في بعض بيئات البرمجة، مثل لغة جافا ، قد تكون عمليات البحث في الجداول أكثر تكلفةً نظرًا لضرورة التحقق من الحدود، والذي يتضمن مقارنةً وتفرعًا إضافيين لكل عملية بحث.
هناك قيدان أساسيان على إمكانية إنشاء جدول بحث لعملية مطلوبة. الأول هو مقدار الذاكرة المتاحة: لا يمكن إنشاء جدول بحث أكبر من المساحة المتاحة له، مع أنه من الممكن إنشاء جداول بحث على القرص، ولكن على حساب وقت البحث. أما الثاني فهو الوقت اللازم لحساب قيم الجدول في البداية؛ مع أن هذا عادةً ما يُجرى مرة واحدة فقط، إلا أنه إذا استغرق وقتًا طويلاً جدًا، فقد يجعل استخدام جدول البحث حلاً غير مناسب. وكما ذُكر سابقًا، يمكن تعريف الجداول بشكل ثابت في كثير من الحالات.
حساب الجيب
معظم أجهزة الكمبيوتر لا تُجري سوى العمليات الحسابية الأساسية، ولا تستطيع حساب جيب قيمة معينة مباشرةً. بدلاً من ذلك، تستخدم خوارزمية CORDIC أو صيغة معقدة مثل متسلسلة تايلور التالية لحساب قيمة الجيب بدقة عالية: [ 11 ] : 5
- (عندما تكون قيمة x قريبة من الصفر)
مع ذلك، قد تكون هذه العملية مكلفة حسابيًا، خاصةً على المعالجات البطيئة، وهناك العديد من التطبيقات، لا سيما في رسومات الحاسوب التقليدية ، التي تتطلب حساب آلاف قيم الجيب كل ثانية. يتمثل الحل الشائع في حساب جيب العديد من القيم الموزعة بالتساوي في البداية، ثم لإيجاد جيب x، نختار جيب القيمة الأقرب إلى x من خلال عملية فهرسة المصفوفة. ستكون هذه القيمة قريبة من القيمة الصحيحة لأن الجيب دالة متصلة ذات معدل تغير محدود. [ 11 ] : 6 على سبيل المثال: [ 12 ] : 545-548
مصفوفة حقيقية sine_table [ -1000 .. 1000 ] لكل x من -1000 إلى 1000 sine_table [ x ] = sine ( pi * x / 1000 )دالة lookup_sine ( x ) تُرجع جدول_الجيب [ تقريب ( 1000 * x / π )]
لسوء الحظ، يتطلب الجدول مساحة تخزين كبيرة: فإذا استخدمنا أرقام الفاصلة العائمة ذات الدقة المزدوجة وفقًا لمعيار IEEE، فسنحتاج إلى أكثر من 16000 بايت. يمكننا استخدام عدد أقل من العينات، لكن دقة النتائج ستتراجع بشكل ملحوظ. أحد الحلول الجيدة هو الاستيفاء الخطي ، الذي يرسم خطًا بين النقطتين في الجدول على جانبي القيمة، ويحدد موقع الإجابة على هذا الخط. لا يزال هذا الحل سريعًا في الحساب، وأكثر دقة بكثير للدوال السلسة مثل دالة الجيب. إليك مثال على استخدام الاستيفاء الخطي:
دالة lookup_sine ( x ) x1 = floor ( x * 1000 / pi ) y1 = sine_table [ x1 ] y2 = sine_table [ x1 + 1 ] return y1 + ( y2 - y1 ) * ( x * 1000 / pi - x1 )يُتيح الاستيفاء الخطي الحصول على دالة مُستوفاة متصلة، ولكنها لا تمتلك، بشكل عام، مشتقات متصلة . وللحصول على استيفاء أكثر سلاسة لبيانات البحث في الجداول، بحيث تكون متصلة ولها مشتقة أولى متصلة ، يُنصح باستخدام دالة هيرميت التكعيبية .
عند استخدام الاستيفاء، يمكن تقليل حجم جدول البحث باستخدام أخذ عينات غير منتظمة ، ما يعني أنه عندما تكون الدالة قريبة من الخط المستقيم، نستخدم عددًا قليلًا من نقاط العينة، بينما عندما تتغير قيمتها بسرعة، نستخدم عددًا أكبر من نقاط العينة للحفاظ على التقريب قريبًا من المنحنى الحقيقي. لمزيد من المعلومات، انظر الاستيفاء .
استخدامات أخرى لجداول البحث
مخابئ
تعمل ذاكرات التخزين المؤقتة (بما في ذلك ذاكرات التخزين المؤقتة للقرص للملفات، أو ذاكرات التخزين المؤقتة للمعالج للتعليمات البرمجية أو البيانات) كجدول بحث. يُبنى هذا الجدول باستخدام ذاكرة فائقة السرعة بدلاً من تخزينه على ذاكرة خارجية أبطأ، ويحتفظ بجزأين من البيانات لنطاق فرعي من البتات التي تُكوّن عنوان ذاكرة خارجية (أو قرص) (وخاصةً البتات الأدنى لأي عنوان خارجي ممكن):
- يحتوي جزء واحد (العلامة) على قيمة البتات المتبقية من العنوان؛ إذا تطابقت هذه البتات مع تلك الموجودة في عنوان الذاكرة المراد قراءته أو كتابته، فإن الجزء الآخر يحتوي على القيمة المخزنة مؤقتًا لهذا العنوان.
- أما الجزء الآخر فيحتفظ بالبيانات المرتبطة بذلك العنوان.
يتم إجراء بحث سريع واحد لقراءة الوسم في جدول البحث عند الفهرس المحدد بواسطة البتات الأدنى من عنوان التخزين الخارجي المطلوب، ولتحديد ما إذا كان عنوان الذاكرة موجودًا في ذاكرة التخزين المؤقت. عند العثور على عنوان موجود، لا يلزم الوصول إلى الذاكرة الخارجية (باستثناء عمليات الكتابة، حيث قد يلزم تحديث القيمة المخزنة مؤقتًا بشكل غير متزامن إلى الذاكرة الأبطأ بعد فترة من الزمن، أو إذا كان يجب استبدال الموضع في ذاكرة التخزين المؤقت لتخزين عنوان آخر).
جداول البحث للأجهزة
في الدوائر المنطقية الرقمية ، يمكن تنفيذ جدول البحث باستخدام مُضاعِف إشارات ، حيث تُشغَّل خطوط الاختيار فيه بإشارة العنوان، وتكون مدخلاته هي قيم العناصر الموجودة في المصفوفة. يمكن أن تكون هذه القيم ثابتة، كما هو الحال في الدوائر المتكاملة الخاصة بالتطبيقات (ASIC) التي يكون غرضها محددًا لوظيفة معينة، أو يمكن توفيرها بواسطة دوائر D التي تسمح بقيم قابلة للتهيئة (مثل ذاكرة القراءة فقط ROM ، أو ذاكرة القراءة فقط القابلة للمسح والبرمجة EPROM ، أو ذاكرة القراءة فقط القابلة للمسح والبرمجة كهربائيًا EEPROM ، أو ذاكرة الوصول العشوائي RAM ).
يمكن لجدول بحث (LUT) ذي n بت أن يُشفّر أي دالة منطقية ذات n مدخلات عن طريق تخزين جدول الحقيقة الخاص بالدالة في جدول البحث. تُعد هذه طريقة فعّالة لتشفير الدوال المنطقية ، وتُعتبر جداول البحث ذات 4-6 بتات من المدخلات في الواقع المكون الرئيسي لمصفوفات البوابات المنطقية القابلة للبرمجة الميدانية (FPGAs) الحديثة التي توفر إمكانيات إعادة تكوين منطق الأجهزة.
أنظمة جمع البيانات والتحكم بها
في أنظمة جمع البيانات والتحكم بها ، تُستخدم جداول البحث بشكل شائع لإجراء العمليات التالية في:
- تطبيق بيانات المعايرة ، وذلك لإجراء تصحيحات على القياسات غير المعايرة أو قيم نقاط الضبط ؛ و
- إجراء تحويل وحدات القياس ؛ و
- إجراء عمليات حسابية عامة يحددها المستخدم.
في بعض الأنظمة، يمكن أيضًا تعريف كثيرات الحدود بدلاً من جداول البحث لهذه الحسابات.
انظر أيضاً
- المصفوفة الترابطية
- جدول التفرع
- جداول غال الدقيقة
- التخزين المؤقت
- دالة مرتبطة بالذاكرة
- الاستيفاء باستخدام أقرب جار
- جدول بحث سجل الإزاحة
- لوحة الألوان ، والمعروفة أيضًا باسم جدول البحث عن الألوان أو CLUT - للاستخدام في رسومات الحاسوب
- جدول بحث ثلاثي الأبعاد - استخدامه في صناعة الأفلام
مراجع
- ↑ ماكنامي، بول (21 أغسطس 1998). "التخزين المؤقت الآلي في لغة C++" . مؤرشف من الأصل في 16 أبريل 2019.
- 1 2 كوك، و.؛ حقيقي، ك.؛ كانغ، إ. (1995). "بنية بيانات فعالة لتقنية توليد الشبكة المثلثية ذات الجبهة المتقدمة" . مجلة الاتصالات في الطرق العددية في الهندسة . 11 (5). وايلي وأولاده: 465-473 . doi : 10.1002/cnm.1640110511 .
- ↑ كامبل-كيلي، مارتن ؛ كرواركن، ماري ؛ روبسون، إليانور ، محرران. (2003). تاريخ الجداول الرياضية: من سومر إلى جداول البيانات . مطبعة جامعة أكسفورد.
- ↑ ماهر، ديفيد. دبليو جيه وجون إف. ماكوفسكي. " أدلة أدبية على الحساب الروماني مع الكسور "، "فقه اللغة الكلاسيكي" (2001) المجلد 96 العدد 4 (2001) الصفحات 376-399. (انظر الصفحة 383.)
- ↑ بيل جيلين: "من عام 1979 - VisiCalc و LOOKUP"!، بقلم السيد إكسل إيست، 31 مارس 2012
- ↑ "دالة XLOOKUP - دعم مايكروسوفت" . support.microsoft.com . تم الاطلاع عليه بتاريخ 19 يناير 2026 .
- ↑ كورمن، توماس هـ. (2009). مقدمة في الخوارزميات ( الطبعة الثالثة). كامبريدج، ماساتشوستس: مطبعة معهد ماساتشوستس للتكنولوجيا. الصفحات 253-255 . ISBN 9780262033848تم الاطلاع عليه بتاريخ 26 نوفمبر 2015 .
- 1 2 3 4 جونغك، ب.؛ دينكان، ر.؛ مولكاهي، د. (2011). التطوير من أجل الأداء. في: برمجة packetC . أبريس. doi : 10.1007/978-1-4302-4159-1_26 . ISBN 978-1-4302-4159-1.
- ↑ nvidia gpu gems2 : using-lookup-tables-accelerate-color
- ↑ ساساو، ت.؛ بتلر، ج. ت.؛ ريدل، م. د. "تطبيق سلاسل جداول البحث على مولدات الدوال العددية" . مركز المعلومات التقنية للدفاع . كلية الدراسات العليا البحرية، مونتيري، كاليفورنيا، قسم الهندسة الكهربائية وهندسة الحاسوب . تاريخ الاسترجاع: ١٧ مايو ٢٠٢٤ .
{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - 1 2 شريف، حيدر (2014). "دوال رياضية عالية الأداء لبنى أحادية النواة" . مجلة الدوائر والأنظمة والحواسيب . 23 (4). وورلد ساينتيفيك. doi : 10.1142/S0218126614500510 .
- ↑ راندال هايد (1 مارس 2010). فن لغة التجميع، الطبعة الثانية (ملف PDF) . دار نشر نو ستارش. رقم ISBN 978-1593272074– عبر معهد الحوسبة بجامعة كامبيناس.
روابط خارجية
- بحث سريع في الجدول باستخدام حرف الإدخال كمؤشر لجدول الفرع
- فن التجميع: الحساب عبر البحث في الجداول
- "حيل التلاعب بالبتات" (تتضمن جداول بحث) بقلم شون إيرون أندرسون من جامعة ستانفورد
- التخزين المؤقت في لغة C++ بقلم بول ماكنامي، جامعة جونز هوبكنز ، يوضح التوفير
- "السعي لتحقيق تعداد سكاني متسارع" بقلم هنري إس. وارين الابن.
- المصفوفات
- المصفوفات الترابطية
- أداء الحاسوب
- تحسين البرمجيات
