خوارزمية البحث A*
| فصل | خوارزمية البحث |
|---|---|
| هيكل البيانات | الرسم البياني |
| الأداء في أسوأ الأحوال | |
| أسوأ حالة تعقيد الفضاء |
A* (تُلفظ "A-star") هي خوارزمية لاجتياز الرسم البياني وتحديد المسار ، تُستخدم في العديد من مجالات علوم الكمبيوتر نظرًا لاكتمالها ومثاليتها وكفاءتها المثلى. [1] بالنظر إلى الرسم البياني المرجح وعقدة المصدر وعقدة الهدف، تجد الخوارزمية أقصر مسار (بالنسبة للأوزان المحددة) من المصدر إلى الهدف.
أحد العيوب العملية الرئيسية هو تعقيد المساحة حيث d هو عمق الحل (طول أقصر مسار) و b هو عامل التفرع (متوسط عدد الخلفاء لكل حالة)، حيث يخزن جميع العقد المولدة في الذاكرة. وبالتالي، في أنظمة التوجيه والسفر العملية ، يتفوق عليه بشكل عام الخوارزميات التي يمكنها معالجة الرسم البياني مسبقًا لتحقيق أداء أفضل، [2] وكذلك الأساليب المحدودة بالذاكرة؛ ومع ذلك، لا يزال A* هو الحل الأفضل في كثير من الحالات. [3]
نشر بيتر هارت ونيلز نيلسون وبرتراند رافائيل من معهد ستانفورد للأبحاث (الآن معهد ستانفورد للأبحاث الدولي ) الخوارزمية لأول مرة في عام 1968. [4] ويمكن اعتبارها امتدادًا لخوارزمية ديكسترا . تحقق A* أداءً أفضل باستخدام القواعد الاستدلالية لتوجيه بحثها.
بالمقارنة مع خوارزمية ديكسترا، فإن خوارزمية A* لا تجد سوى أقصر مسار من مصدر محدد إلى هدف محدد، وليس شجرة أقصر مسار من مصدر محدد إلى جميع الأهداف المحتملة. وهذا تنازل ضروري لاستخدام طريقة استدلالية موجهة نحو هدف محدد. بالنسبة لخوارزمية ديكسترا، نظرًا لأن شجرة أقصر مسار بالكامل يتم إنشاؤها، فإن كل عقدة هي هدف، ولا يمكن أن يكون هناك طريقة استدلالية موجهة نحو هدف محدد.
تاريخ

تم إنشاء A* كجزء من مشروع Shakey ، والذي كان هدفه بناء روبوت متحرك يمكنه التخطيط لأفعاله الخاصة. اقترح نيلز نيلسون في الأصل استخدام خوارزمية Graph Traverser [5] لتخطيط مسار Shakey. [6] يتم توجيه Graph Traverser بواسطة دالة استدلالية h ( n ) ، المسافة المقدرة من العقدة n إلى العقدة المستهدفة: تتجاهل تمامًا g ( n ) ، المسافة من العقدة الأولية إلى n . اقترح بيرترام رافائيل استخدام المجموع، g (n) + h (n). [7] اخترع بيتر هارت المفاهيم التي نسميها الآن مقبولية واتساق الوظائف الاستدلالية . تم تصميم A * في الأصل لإيجاد المسارات الأقل تكلفة عندما تكون تكلفة المسار هي مجموع تكاليفه، ولكن ثبت أنه يمكن استخدام A* لإيجاد مسارات مثالية لأي مشكلة تلبي شروط جبر التكلفة. [8]
احتوت ورقة A* الأصلية لعام 1968 [4] على نظرية تنص على أنه لا يمكن لأي خوارزمية شبيهة بـ A* [a] أن توسع عددًا أقل من العقد من A* إذا كانت الدالة الاستدلالية متسقة وتم اختيار قاعدة كسر التعادل الخاصة بـ A* بشكل مناسب. نُشر "تصحيح" بعد بضع سنوات [9] يزعم أن الاتساق غير مطلوب، ولكن ثبت خطأ هذا في عام 1985 في الدراسة النهائية التي أجراها ديشتر وبيرل حول مثالية A* (والتي تسمى الآن الكفاءة المثلى)، والتي أعطت مثالاً لـ A* مع خوارزمية استدلالية كانت مقبولة ولكنها غير متسقة في التوسع بشكل تعسفي لعدد أكبر من العقد من خوارزمية بديلة شبيهة بـ A*. [10]
وصف

A* هي خوارزمية بحث مستنيرة ، أو بحث الأفضل أولاً ، مما يعني أنها صيغت من حيث الرسوم البيانية المرجحة : بدءًا من عقدة بداية محددة في الرسم البياني، تهدف إلى إيجاد مسار إلى عقدة الهدف المحددة ذات التكلفة الأقل (أقل مسافة مقطوعة، أقصر وقت، إلخ). وهي تفعل ذلك من خلال الحفاظ على شجرة من المسارات التي تنشأ في عقدة البداية وتمديد تلك المسارات حافة واحدة في كل مرة حتى يتم الوصول إلى عقدة الهدف.
في كل تكرار لحلقته الرئيسية، يحتاج A* إلى تحديد أي من مساراته سيتم تمديدها. ويفعل ذلك بناءً على تكلفة المسار وتقدير التكلفة المطلوبة لتمديد المسار حتى الهدف. على وجه التحديد، يختار A* المسار الذي يقلل من
حيث n هي العقدة التالية على المسار، و g ( n ) هي تكلفة المسار من عقدة البداية إلى n ، و h ( n ) هي دالة استدلالية تقدر تكلفة أرخص مسار من n إلى الهدف. تكون الدالة الاستدلالية خاصة بالمشكلة. إذا كانت الدالة الاستدلالية مقبولة - بمعنى أنها لا تبالغ أبدًا في تقدير التكلفة الفعلية للوصول إلى الهدف - فمن المؤكد أن A* ستعيد مسارًا أقل تكلفة من البداية إلى الهدف.
تستخدم التنفيذات النموذجية لـ A* قائمة انتظار أولوية لإجراء التحديد المتكرر للعقد ذات التكلفة الدنيا (المقدرة) للتوسع. تُعرف قائمة الانتظار ذات الأولوية هذه باسم المجموعة المفتوحة أو الهامش أو الحدود . في كل خطوة من خطوات الخوارزمية، تتم إزالة العقدة ذات أقل قيمة f ( x ) من قائمة الانتظار، ويتم تحديث قيم f و g لجيرانها وفقًا لذلك، ويتم إضافة هؤلاء الجيران إلى قائمة الانتظار. تستمر الخوارزمية حتى تصبح العقدة التي تمت إزالتها (وبالتالي العقدة ذات أقل قيمة f من بين جميع العقد الهامشية) عقدة هدف. [ب] تكون قيمة f لهذا الهدف أيضًا هي تكلفة أقصر مسار، حيث أن h عند الهدف تساوي صفرًا في قاعدة تقديرية مقبولة.
لا تقدم الخوارزمية الموصوفة حتى الآن سوى طول أقصر مسار. وللعثور على التسلسل الفعلي للخطوات، يمكن تعديل الخوارزمية بسهولة بحيث يتتبع كل عقدة على المسار سابقتها. وبعد تشغيل هذه الخوارزمية، ستشير العقدة النهائية إلى سابقتها، وهكذا، حتى تصبح العقدة السابقة لبعض العقد هي العقدة الأولية.
على سبيل المثال، عند البحث عن أقصر طريق على الخريطة، قد يمثل h ( x ) المسافة المستقيمة إلى الهدف، حيث إنها أصغر مسافة ممكنة فعليًا بين أي نقطتين. بالنسبة لخريطة شبكية من لعبة فيديو، يصبح استخدام مسافة سيارة الأجرة أو مسافة تشيبيشيف أفضل اعتمادًا على مجموعة الحركات المتاحة (4 اتجاهات أو 8 اتجاهات).
إذا كانت القاعدة h تلبي الشرط الإضافي h ( x ) ≤ d ( x , y ) + h ( y ) لكل حافة ( x , y ) من الرسم البياني (حيث يشير d إلى طول تلك الحافة)، فإن h تسمى رتيبة أو متسقة . مع القاعدة المتسقة، من المؤكد أن A* ستجد مسارًا مثاليًا دون معالجة أي عقدة أكثر من مرة وA* تعادل تشغيل خوارزمية ديكسترا بتكلفة مخفضة d' ( x , y ) = d ( x , y ) + h ( y ) − h ( x ) . [11]
الكود الزائف
يصف الكود الزائف التالي الخوارزمية:
دالة reconstruct_path ( cameFrom , current ) total_path := {current} بينما current في cameFrom . المفاتيح : current := cameFrom [ current ] total_path . prepend ( current ) return total_path
// A* يجد مسارًا من البداية إلى الهدف.
// h هي الدالة الإرشادية. h(n) تقدر التكلفة للوصول إلى الهدف من العقدة n.
function A_Star ( start , goal , h ) // مجموعة العقد المكتشفة التي قد تحتاج إلى (إعادة) التوسع. // في البداية، تكون عقدة البداية فقط معروفة. // يتم تنفيذ هذا عادةً كقائمة كومة صغيرة أو قائمة أولوية بدلاً من مجموعة تجزئة. openSet := {start}
// بالنسبة للعقدة n، cameFrom[n] هي العقدة التي تسبقها مباشرة على المسار الأرخص من البداية
إلى n المعروف حاليًا. cameFrom : = خريطة فارغة
// بالنسبة للعقدة n، gScore[n] هي تكلفة المسار الأرخص من البداية إلى n المعروف حاليًا. gScore := خريطة بقيمة افتراضية لا نهائية gScore [ start ] : = 0
// بالنسبة للعقدة n، fScore[n] := gScore[n] + h(n). يمثل fScore[n] أفضل تخمين لدينا حاليًا فيما يتعلق
بمدى رخص مسار من البداية إلى النهاية إذا مر عبر n. fScore : = خريطة بقيمة افتراضية لا نهائية fScore [ start ] := h ( start )
بينما openSet ليس فارغًا // يمكن أن تحدث هذه العملية في وقت O(Log(N)) إذا كانت openSet عبارة عن كومة صغيرة أو قائمة انتظار ذات أولوية current : = العقدة في openSet التي لها أقل قيمة fScore [ ] if current = goal return reconstruct_path ( cameFrom , current )
openSet . إزالة ( الحالي )
لكل جار للتيار // d(الحالي، الجار) هو وزن الحافة من الحالي إلى الجار // tentative_gScore هي المسافة من البداية إلى الجار عبر التيار tentative_gScore : = gScore [ الحالي ] + d ( الحالي ، الجار ) إذا كان tentative_gScore < gScore [ الجار ] // هذا المسار إلى الجار أفضل من أي مسار سابق. سجله! cameFrom [ الجار ] := current gScore [ الجار ] := tentative_gScore fScore [ الجار ] : = tentative_gScore + h ( الجار ) إذا لم يكن الجار في openSet openSet . إضافة ( الجار )
// المجموعة المفتوحة فارغة ولكن لم يتم الوصول إلى الهدف مطلقًا،
مما أدى إلى فشل الإرجاع
ملاحظة: في هذا الكود الزائف، إذا تم الوصول إلى عقدة من خلال مسار واحد، وإزالتها من openSet، ثم الوصول إليها لاحقًا من خلال مسار أرخص، فسيتم إضافتها إلى openSet مرة أخرى. هذا ضروري لضمان أن المسار الذي تم إرجاعه هو المسار الأمثل إذا كانت الدالة الإرشادية مقبولة ولكنها غير متسقة . إذا كانت الدالة الإرشادية متسقة، فعند إزالة عقدة من openSet، يتم ضمان أن المسار إليها هو المسار الأمثل، وبالتالي فإن الاختبار ' tentative_gScore < gScore[neighbor]' سيفشل دائمًا إذا تم الوصول إلى العقدة مرة أخرى.

مثال
مثال على خوارزمية A* في العمل حيث تكون العقد عبارة عن مدن متصلة بالطرق وh(x) هي المسافة في خط مستقيم إلى نقطة الهدف:
المفتاح: أخضر: البداية؛ أزرق: الهدف؛ برتقالي: تمت الزيارة
تتضمن خوارزمية A* تطبيقات في العالم الحقيقي. في هذا المثال، تكون الحواف عبارة عن خطوط سكك حديدية وh(x) هي مسافة الدائرة العظمى (أقصر مسافة ممكنة على الكرة) إلى الهدف. تبحث الخوارزمية عن مسار بين واشنطن العاصمة ولوس أنجلوس.
تفاصيل التنفيذ
هناك عدد من التحسينات البسيطة أو تفاصيل التنفيذ التي يمكن أن تؤثر بشكل كبير على أداء تنفيذ A*. أول تفصيل يجب ملاحظته هو أن الطريقة التي تتعامل بها قائمة الأولوية مع العلاقات يمكن أن يكون لها تأثير كبير على الأداء في بعض المواقف. إذا تم كسر العلاقات بحيث تتصرف قائمة الانتظار بطريقة LIFO ، فسوف تتصرف A* مثل البحث المتعمق أولاً بين مسارات التكلفة المتساوية (تجنب استكشاف أكثر من حل واحد متساوي الأمثل).
عندما يكون المسار مطلوبًا في نهاية البحث، فمن الشائع الاحتفاظ بكل عقدة بمرجع إلى العقدة الأصلية لتلك العقدة. في نهاية البحث، يمكن استخدام هذه المراجع لاستعادة المسار الأمثل. إذا تم الاحتفاظ بهذه المراجع، فقد يكون من المهم ألا تظهر نفس العقدة في قائمة الأولويات أكثر من مرة (كل إدخال يتوافق مع مسار مختلف للعقدة، وكل منها بتكلفة مختلفة). النهج القياسي هنا هو التحقق مما إذا كانت العقدة التي سيتم إضافتها تظهر بالفعل في قائمة الأولويات. إذا حدث ذلك، فسيتم تغيير مؤشرات الأولوية والأصل لتتوافق مع المسار الأقل تكلفة. لا تدعم قائمة الأولويات القياسية القائمة على الكومة الثنائية بشكل مباشر عملية البحث عن أحد عناصرها، ولكن يمكن زيادتها باستخدام جدول تجزئة يطابق العناصر إلى موضعها في الكومة، مما يسمح بإجراء عملية تقليل الأولوية هذه في وقت لوغاريتمي. بدلاً من ذلك، يمكن لكومة فيبوناتشي إجراء نفس عمليات تقليل الأولوية في وقت ثابت مستهلك .
حالات خاصة
يمكن اعتبار خوارزمية ديكسترا ، كمثال آخر لخوارزمية البحث ذات التكلفة الموحدة، حالة خاصة من A* حيث لجميع x . [12] [13] يمكن تنفيذ البحث العام أولاً بالعمق باستخدام A* من خلال مراعاة وجود عداد عالمي C تم تهيئته بقيمة كبيرة جدًا. في كل مرة نعالج فيها عقدة، نعين C لجميع جيرانها المكتشفين حديثًا. بعد كل تعيين واحد، نقوم بتقليل العداد C بمقدار واحد. وبالتالي، كلما تم اكتشاف العقدة مبكرًا، زادت قيمتها . يمكن تنفيذ كل من خوارزمية ديكسترا والبحث أولاً بالعمق بكفاءة أكبر دون تضمين قيمة في كل عقدة.
ملكيات
الإنهاء والاكتمال
في الرسوم البيانية المحدودة ذات أوزان الحواف غير السلبية، من المؤكد أن A* ستنتهي وستكون كاملة ، أي أنها ستجد دائمًا حلًا (مسار من البداية إلى الهدف) إذا كان موجودًا. في الرسوم البيانية غير المحدودة ذات عامل التفرع المحدود وتكاليف الحواف المحدودة بعيدًا عن الصفر ( لبعض الثوابت )، من المؤكد أن A* ستنتهي فقط إذا كان هناك حل. [1]
القبول
يقال إن خوارزمية البحث مقبولة إذا كان من المضمون أن تعيد الحل الأمثل. إذا كانت الدالة الاستدلالية المستخدمة بواسطة A* مقبولة ، فإن A* مقبولة. "الدليل" البديهي على ذلك هو كما يلي:
عندما ينهي A* بحثه، يكون قد وجد مسارًا من البداية إلى الهدف تكون تكلفته الفعلية أقل من التكلفة المقدرة لأي مسار من البداية إلى الهدف عبر أي عقدة مفتوحة (قيمة العقدة ) . عندما يكون الاستدلال مقبولًا، تكون هذه التقديرات متفائلة (ليست تمامًا - انظر الفقرة التالية)، لذلك يمكن لـ A* تجاهل هذه العقد بأمان لأنها لا يمكن أن تؤدي بأي حال من الأحوال إلى حل أرخص من الحل الذي لديه بالفعل. بعبارة أخرى، لن يتجاهل A* أبدًا إمكانية وجود مسار أقل تكلفة من البداية إلى الهدف وبالتالي سيستمر في البحث حتى لا توجد مثل هذه الاحتمالات.
الإثبات الفعلي أكثر تعقيدًا بعض الشيء لأن قيم العقد المفتوحة لا يُضمن أنها متفائلة حتى لو كانت القاعدة مقبولة. وذلك لأن قيم العقد المفتوحة لا يُضمن أنها مثالية، وبالتالي لا يُضمن أن يكون المجموع متفائلًا .
الأمثلية والاتساق
الخوارزمية A فعالة بشكل مثالي فيما يتعلق بمجموعة من الخوارزميات البديلة Alts في مجموعة من المشكلات P إذا كانت مجموعة العقد الموسعة بواسطة A في حل P لكل مشكلة P وكل خوارزمية A′ في Alts هي مجموعة فرعية (ربما مساوية) من مجموعة العقد الموسعة بواسطة A′ في حل P. الدراسة النهائية للكفاءة المثلى لـ A* ترجع إلى رينا ديختر وجوديا بيرل. [10] لقد نظروا في مجموعة متنوعة من التعريفات لـ Alts و P بالاقتران مع كون الاستدلال A* مقبولًا فحسب أو متسقًا ومقبولًا . النتيجة الإيجابية الأكثر إثارة للاهتمام التي أثبتوها هي أن A*، مع الاستدلال المتسق، فعالة بشكل مثالي فيما يتعلق بجميع خوارزميات البحث المشابهة لـ A* المقبولة في جميع مشكلات البحث "غير المرضية". وبشكل تقريبي، فإن مفهومهم للمشكلة غير المرضية هو ما نعنيه الآن بـ "حتى كسر التعادل". لا تصمد هذه النتيجة إذا كانت الخوارزمية A* مقبولة ولكنها غير متسقة. في هذه الحالة، أظهر ديشتر وبيرل وجود خوارزميات مقبولة شبيهة بخوارزمية A* يمكنها توسيع عدد أقل من العقد بشكل تعسفي مقارنة بخوارزمية A* في بعض المشكلات غير المرضية.
تتعلق الكفاءة المثلى بمجموعة العقد الموسعة، وليس عدد توسعات العقد (عدد تكرارات الحلقة الرئيسية لـ A*). عندما تكون القاعدة المستخدمة مقبولة ولكنها غير متسقة، فمن الممكن أن يتم توسيع العقدة بواسطة A* عدة مرات، وهو عدد أسي من المرات في أسوأ الحالات. [14] في مثل هذه الظروف، يمكن لخوارزمية ديكسترا أن تتفوق على A* بهامش كبير. ومع ذلك، وجدت الأبحاث الأحدث أن هذه الحالة المرضية تحدث فقط في بعض المواقف المصطنعة حيث يكون وزن حافة الرسم البياني للبحث أسيًا في حجم الرسم البياني وأن بعض القواعد غير المتسقة (ولكن المقبولة) يمكن أن تؤدي إلى انخفاض عدد توسعات العقد في عمليات البحث A*. [15] [16]
الاسترخاء المحدود

في حين يضمن معيار القبول مسار الحل الأمثل، فإنه يعني أيضًا أن A* يجب أن يفحص جميع المسارات الجديرة بالثناء على قدم المساواة للعثور على المسار الأمثل. لحساب أقصر المسارات التقريبية، من الممكن تسريع البحث على حساب المثالية من خلال تخفيف معيار القبول. في كثير من الأحيان نريد تقييد هذا التخفيف، حتى نتمكن من ضمان أن مسار الحل ليس أسوأ من (1 + ε ) مضروبًا في مسار الحل الأمثل. يشار إلى هذا الضمان الجديد باسم ε -admissible.
هناك عدد من الخوارزميات المقبولة ε :
- الترجيح A*/الترجيح الثابت. [17] إذا كانت h a ( n ) دالة استدلالية مقبولة، ففي النسخة المرجحة من بحث A*، يستخدم المرء h w ( n ) = ε h a ( n ) ، ε > 1 كدالة استدلالية، وينفذ بحث A* كالمعتاد (والذي يحدث في النهاية بشكل أسرع من استخدام h a نظرًا لأن عدد العقد المتوسعة أقل). وبالتالي، يمكن أن يكون للمسار الذي تم العثور عليه بواسطة خوارزمية البحث تكلفة لا تزيد عن ε مرة تكلفة المسار الأقل تكلفة في الرسم البياني. [18]
- يستخدم الترجيح الديناميكي [19] دالة التكلفة ، حيث ، وحيث هو عمق البحث و N هو الطول المتوقع لمسار الحل.
- يستخدم الترجيح الديناميكي للعينات [20] أخذ عينات من العقد لتقدير الخطأ الاستدلالي وإزالة التحيز منه بشكل أفضل.
- [21] يستخدم دالتين استدلاليتين . الأولى هي قائمة FOCAL، والتي تستخدم لاختيار العقد المرشحة، والثانية h F تستخدم لاختيار العقدة الأكثر وعدًا من قائمة FOCAL.
- يختار A ε [22] العقد باستخدام الدالة ، حيث A و B ثابتان. إذا لم يكن من الممكن تحديد أي عقد، فستعود الخوارزمية إلى الوراء باستخدام الدالة ، حيث C و D ثابتان.
- تحاول AlphA* [23] تعزيز استغلال العمق أولاً من خلال تفضيل العقد الموسعة حديثًا. تستخدم AlphA* دالة التكلفة ، حيث ، حيث λ و Λ ثابتان مع ، و π ( n ) هو الأصل لـ n ، و ñ هي العقدة الموسعة مؤخرًا.
تعقيد
تعتمد التعقيد الزمني لـ A* على الخوارزمية. في أسوأ حالة لمساحة بحث غير محدودة، يكون عدد العقد الموسعة أسيًا في عمق الحل (أقصر مسار) d : O ( b d ) ، حيث b هو عامل التفرع (متوسط عدد الخلفاء لكل حالة). [24] يفترض هذا أن حالة الهدف موجودة على الإطلاق، ويمكن الوصول إليها من حالة البداية؛ إذا لم تكن كذلك، وكانت مساحة الحالة غير محدودة، فلن تنتهي الخوارزمية.
إن الدالة الاستدلالية لها تأثير كبير على الأداء العملي للبحث A*، حيث تسمح الدالة الاستدلالية الجيدة لـ A* بإزالة العديد من العقد b d التي قد يتوسعها البحث غير المستنير. ويمكن التعبير عن جودتها من حيث عامل التفرع الفعال b * ، والذي يمكن تحديده تجريبيًا لحالة مشكلة من خلال قياس عدد العقد الناتجة عن التوسع، N ، وعمق الحل، ثم حل [25]
تعتبر الطرق الجيدة هي تلك التي تحتوي على عامل تفرع فعال منخفض (يكون الأمثل هو b * = 1 ).
تكون التعقيدات الزمنية متعددة الحدود عندما تكون مساحة البحث عبارة عن شجرة، وتوجد حالة هدف واحدة، وتلبي الدالة الاستدلالية h الشرط التالي:
حيث h * هي الطريقة المثلى، وهي التكلفة الدقيقة للوصول من x إلى الهدف. بعبارة أخرى، لن ينمو خطأ h بشكل أسرع من لوغاريتم "الطريقة المثالية" h * التي تعيد المسافة الحقيقية من x إلى الهدف. [18] [24]
إن تعقيد الفضاء لـ A* هو تقريبًا نفس تعقيد جميع خوارزميات البحث البياني الأخرى، حيث يحتفظ بجميع العقد المولدة في الذاكرة. [1] في الممارسة العملية، تبين أن هذا هو أكبر عيب في بحث A*، مما أدى إلى تطوير عمليات بحث استدلالية محدودة بالذاكرة، مثل التعميق التكراري A* ، وA* المحدودة بالذاكرة، و SMA* .
التطبيقات
غالبًا ما يتم استخدام A* لمشكلة تحديد المسار الشائعة في التطبيقات مثل ألعاب الفيديو، ولكن تم تصميمها في الأصل كخوارزمية عامة لاجتياز الرسم البياني. [4] تجد تطبيقات في مشاكل متنوعة، بما في ذلك مشكلة التحليل باستخدام القواعد النحوية العشوائية في معالجة اللغة الطبيعية . [26] تشمل الحالات الأخرى البحث المعلوماتي مع التعلم عبر الإنترنت. [27]
العلاقات مع الخوارزميات الأخرى
ما يميز A* عن خوارزمية البحث الجشعة التي تعتمد على الأفضل أولاً هو أنها تأخذ في الاعتبار التكلفة/المسافة التي تم قطعها بالفعل، g ( n ) .
يمكن اعتبار بعض المتغيرات الشائعة لخوارزمية ديكسترا حالة خاصة من A* حيث تكون القاعدة لجميع العقد؛ [12] [13] في المقابل، يعتبر كل من ديكسترا وA* حالات خاصة من البرمجة الديناميكية . [28] A* نفسها حالة خاصة من تعميم الفرع والحد . [29]
A* يشبه البحث الشعاعي إلا أن البحث الشعاعي يحافظ على حد لعدد المسارات التي يتعين عليه استكشافها. [30]
المتغيرات
- في أي وقت أ* [31]
- كتلة أ*
- د*
- الحقل د*
- هامش
- هامش الادخار A* (FSA*)
- A* التكيفي المعمم (GAA*)
- البحث التدريجي الاستدلالي
- A* مخفضة [32]
- التعميق التكراري A* (IDA*)
- البحث عن نقطة القفز
- التخطيط مدى الحياة أ* (LPA*)
- ثنائي الاتجاه الجديد A* (NBA*) [33]
- الذاكرة المبسطة المحدودة A* (SMA*)
- ثيتا*
يمكن أيضًا تكييف A* مع خوارزمية بحث ثنائية الاتجاه ، ولكن يلزم توخي عناية خاصة لمعيار التوقف. [34]
انظر أيضا
- تخطيط مسار أي زاوية ، البحث عن مسارات لا تقتصر على التحرك على طول حواف الرسم البياني بل يمكنها أن تأخذ أي زاوية
- البحث أولاً بالعرض
- البحث المتعمق أولاً
- خوارزمية ديكسترا – خوارزمية للعثور على أقصر المسارات
ملحوظات
- ^ "مثل A*" تعني أن الخوارزمية تبحث عن طريق توسيع المسارات التي تبدأ عند عقدة البداية حافة واحدة في كل مرة، تمامًا كما تفعل A*. وهذا يستبعد، على سبيل المثال، الخوارزميات التي تبحث للخلف من الهدف أو في كلا الاتجاهين في وقت واحد. بالإضافة إلى ذلك، يجب أن تكون الخوارزميات التي تغطيها هذه النظرية مقبولة، و"ليست أكثر إعلامًا" من A*.
- ^ من الممكن تمرير عقد الهدف عدة مرات إذا بقيت عقد أخرى بقيم f أقل ، حيث قد تؤدي إلى مسار أقصر إلى الهدف.
مراجع
- ^ abc Russell, Stuart J .; Norvig, Peter (2018). الذكاء الاصطناعي نهج حديث (الطبعة الرابعة). بوسطن: بيرسون. ISBN 978-0134610993. OCLC 1021874142.
- ^ Delling, D.; Sanders, P .; Schultes, D.; Wagner, D. (2009). "Engineering Route Planning Algorithms". Algorithmics of Large and Complex Networks: Design, Analysis, and Simulation . Lecture Notes in Computer Science. المجلد 5515. سبرينغر. ص 117-139. doi :10.1007/978-3-642-02094-0_7. ISBN 978-3-642-02093-3.
- ^ Zeng, W.; Church, RL (2009). "إيجاد أقصر المسارات على شبكات الطرق الحقيقية: حالة A*". المجلة الدولية لعلوم المعلومات الجغرافية . 23 (4): 531-543. Bibcode :2009IJGIS..23..531Z. doi :10.1080/13658810801949850. S2CID 14833639.
- ^ abc Hart, PE ; Nilsson, NJ ; Raphael, B. (1968). "أساس رسمي لتحديد مسارات التكلفة الدنيا باستخدام الاستدلالات". معاملات معهد مهندسي الكهرباء والإلكترونيات في علوم الأنظمة والسيبرنطيقا . 4 (2): 100–7. doi :10.1109/TSSC.1968.300136.
- ^ Doran, JE; Michie, D. (1966-09-20). "Experiments with the Graph Traverser program". Proc. R. Soc. Lond. A. 294 ( 1437): 235–259. Bibcode :1966RSPSA.294..235D. doi :10.1098/rspa.1966.0205. S2CID 21698093.
- ^ نيلسون، نيلز ج . (2009-10-30). السعي وراء الذكاء الاصطناعي (PDF) . كامبريدج: مطبعة جامعة كامبريدج. ISBN 9780521122931كانت إحدى المشكلات الأولى التي ناقشناها هي كيفية التخطيط لتسلسل "نقاط الطريق" التي يمكن لشايكي استخدامها في التنقل من مكان إلى آخر. […] مشكلة الملاحة التي يعاني منها شايكي هي مشكلة بحث ،
تشبه المشكلات التي ذكرتها سابقًا.
- ^ نيلسون، نيلز ج . (2009-10-30). السعي وراء الذكاء الاصطناعي (PDF) . كامبريدج: مطبعة جامعة كامبريدج. ISBN 9780521122931لاحظ بيرترام رافائيل
، الذي كان يشرف على العمل على شايكي في ذلك الوقت، أن القيمة الأفضل للنتيجة ستكون مجموع المسافة المقطوعة حتى الآن من الموضع الأولي بالإضافة إلى تقديري الاستدلالي للمسافة التي يتعين على الروبوت أن يقطعها.
- ^ Edelkamp, Stefan; Jabbar, Shahid; Lluch-Lafuente, Alberto (2005). "Cost-Algebraic Heuristic Search" (PDF) . وقائع المؤتمر الوطني العشرين للذكاء الاصطناعي (AAAI) : 1362–7. ISBN 978-1-57735-236-5.
- ^ هارت، بيتر إي.؛ نيلسون، نيلز جيه .؛ رافائيل، بيرترام (1972-12-01). "تصحيح لـ "أساس رسمي لتحديد مسارات التكلفة الدنيا بطريقة استدلالية"" (PDF) . نشرة ACM SIGART (37): 28–29. doi :10.1145/1056777.1056779. S2CID 6386648.
- ^ ab Dechter, Rina; Judea Pearl (1985). "استراتيجيات البحث العامة الأفضل أولاً وأفضلية A*". مجلة ACM . 32 (3): 505–536. doi : 10.1145/3828.3830 . S2CID 2092415.
- ^ Nannicini, Giacomo; Delling, Daniel; Schultes, Dominik; Liberti, Leo (2012). "البحث ثنائي الاتجاه A* على شبكات الطرق المعتمدة على الوقت" (PDF) . الشبكات . 59 (2): 240–251. doi :10.1002/NET.20438.
- ^ ab De Smith, Michael John; Goodchild, Michael F.; Longley, Paul (2007), Geospatial Analysis: A Comprehensive Guide to Principles, Techniques and Software Tools, Troubadour Publishing Ltd, p. 344, ISBN 9781905886609.
- ^ ab Hetland, Magnus Lie (2010), Python Algorithms: Mastering Basic Algorithms in the Python Language, Apress, p. 214, ISBN 9781430232377.
- ^ مارتيلي، ألبرتو (1977). "حول تعقيد خوارزميات البحث المقبولة". الذكاء الاصطناعي . 8 (1): 1-13. doi :10.1016/0004-3702(77)90002-9.
- ^ Felner, Ariel; Uzi Zahavi (2011). "Inconsistent heuristics in theory and practice". الذكاء الاصطناعي . 175 (9-10): 1570-1603. doi : 10.1016/j.artint.2011.02.001 .
- ^ Zhang, Zhifu; NR Sturtevant (2009). استخدام الأساليب غير المتسقة في البحث باستخدام A*. المؤتمر الدولي المشترك الحادي والعشرون حول الذكاء الاصطناعي. ص 634-639.
- ^ Pohl, Ira (1970). "First Results on the effect of error in heuristic search". Machine Intelligence 5. Edinburgh University Press: 219–236. ISBN 978-0-85224-176-9. OCLC 1067280266.
- ^ ab Pearl, Judea (1984). Heuristics: Intelligent Search Strategies for Computer Problem Solving. Addison-Wesley. ISBN 978-0-201-05594-8.
- ^ Pohl, Ira (أغسطس 1973). "تجنب الكارثة (النسبية)، والكفاءة الاستدلالية، والترجيح الديناميكي الحقيقي، والقضايا الحسابية في حل المشكلات الاستدلالية" (PDF) . وقائع المؤتمر الدولي الثالث المشترك حول الذكاء الاصطناعي (IJCAI-73) . المجلد 3. كاليفورنيا، الولايات المتحدة الأمريكية. ص 11-17.
- ^ كول، أندرياس؛ هيرمان كيندل (أغسطس 1992). "نهج جديد للترجيح الديناميكي". وقائع المؤتمر الأوروبي العاشر للذكاء الاصطناعي (ECAI-92) . فيينا، النمسا: وايلي. ص 16-17. ISBN 978-0-471-93608-4.
- ^ Pearl, Judea; Jin H. Kim (1982). "Studies in semi-admissible heuristics". IEEE Transactions on Pattern Analysis and Machine Intelligence . 4 (4): 392–399. doi :10.1109/TPAMI.1982.4767270. PMID 21869053. S2CID 3176931.
- ^ غلاب، مالك؛ دينيس ألارد (أغسطس 1983). "Aε – خوارزمية بحث استدلالية فعّالة ومقبولة تقريبًا" (PDF) . وقائع المؤتمر الدولي الثامن المشترك حول الذكاء الاصطناعي (IJCAI-83) . المجلد 2. كارلسروه، ألمانيا. ص 789-791. مؤرشف من الأصل (PDF) في 2014-08-06.
- ^ Reese, Bjørn (1999). AlphA*: An ε-admissible heuristic search algorithm (Report). معهد تكنولوجيا الإنتاج، جامعة جنوب الدنمارك. مؤرشف من الأصل في 2016-01-31 . تم الاسترجاع في 2014-11-05 .
- ^ ab Russell, Stuart ; Norvig, Peter (2003) [1995]. Artificial Intelligence: A Modern Approach (الطبعة الثانية). Prentice Hall. ص 97-104. ISBN 978-0137903955.
- ^ راسل، ستيوارت ؛ نورفيج، بيتر (2009) [1995]. الذكاء الاصطناعي: نهج حديث (الطبعة الثالثة). برنتيس هول. ص. 103. ISBN 978-0-13-604259-4.
- ^ كلاين، دان؛ مانينج، كريستوفر د. (2003). "تحليل A*: اختيار تحليل فيتربي الدقيق والسريع" (PDF) . وقائع مؤتمر تكنولوجيا اللغة البشرية لعام 2003 للفصل الأمريكي الشمالي لجمعية اللغويات الحاسوبية . ص 119-126. doi :10.3115/1073445.1073461.
- ^ Kagan E.; Ben-Gal I. (2014). "A Group-Testing Algorithm with Online Informational Learning" (PDF) . IIE Transactions . 46 (2): 164–184. doi :10.1080/0740817X.2013.803639. S2CID 18588494. مؤرشف من الأصل (PDF) في 2016-11-05 . تم الاسترجاع في 2016-02-12 .
- ^ فيرجسون، ديف؛ ليخاتشيف، ماكسيم؛ ستينتز، أنتوني (2005). "دليل التخطيط للمسار القائم على الاستدلال" (PDF) . وقائع ورشة العمل الدولية حول التخطيط في ظل عدم اليقين للأنظمة المستقلة، المؤتمر الدولي حول التخطيط والجدولة الآلية (ICAPS) . ص 9-18. مؤرشف من الأصل (PDF) في 29 يونيو 2016.
- ^ Nau, Dana S.; Kumar, Vipin; Kanal, Laveen (1984). "الفرع العام والحد، وعلاقته بـ A∗ وAO∗" (PDF) . الذكاء الاصطناعي . 23 (1): 29–58. doi :10.1016/0004-3702(84)90004-3. مؤرشف من الأصل (PDF) في 2012-10-04.
- ^ "متغيرات A*". theory.stanford.edu . تم الاسترجاع في 2023-06-09 .
- ^ هانسن، إيريك أ.؛ تشو، رونغ (2007). "البحث الاستدلالي في أي وقت". مجلة أبحاث الذكاء الاصطناعي . 28 : 267-297. arXiv : 1110.2737 . doi : 10.1613/jair.2096 . S2CID 9832874.
- ^ فرح، رؤوف؛ بزياد، محمد؛ رحمان، محمد ح؛ ربيع، تامر؛ بالطيب، معمر (2019-05-14). "التحقيق في استراتيجية تخطيط المسار المختصر للروبوت المتحرك ذي العجلات التفاضلية". روبوتيكا . 38 (2): 235-255. doi :10.1017/S0263574719000572. ISSN 0263-5747. S2CID 181849209.
- ^ Pijls, Wim; Post, Henk. Yet another bidirectional algorithm for shortest paths (PDF) (تقرير فني). معهد القياس الاقتصادي، جامعة إيراسموس روتردام. EI 2009-10. مؤرشف من الأصل (PDF) في 11 يونيو 2014.
- ^ جولدبرج، أندرو ف.؛ هارلسون، كريس؛ كابلان، هايم؛ ويرنيك، ريناتو ف. "خوارزميات المسار الأقصر الفعّالة من نقطة إلى نقطة" (PDF) . جامعة برينستون . مؤرشف من الأصل (PDF) في 18 مايو 2022.
قراءة إضافية
- نيلسون، نيوجيرسي (1980). مبادئ الذكاء الاصطناعي. بالو ألتو، كاليفورنيا: شركة تيوجا للنشر. رقم ISBN 978-0-935382-01-3.
روابط خارجية
- تنوع في A* يسمى المسار الهرمي لإيجاد A* (HPA*)
- بريان جرينستيد. "خوارزمية البحث A* في JavaScript (محدثة)". مؤرشف من الأصل في 15 فبراير 2020. تم الاسترجاع في 8 فبراير 2021 .
