البحث العميق التكراري أولاً

في علوم الحاسوب ، يُعدّ البحث التكراري المُعمّق ، أو تحديدًا البحث التكراري المُعمّق في العمق أولًا [ 1 ] (IDS أو IDDFS)، استراتيجية بحث في فضاء الحالة /الرسم البياني، حيث تُنفّذ نسخة محدودة العمق من البحث في العمق أولًا بشكل متكرر مع زيادة حدود العمق حتى يتم العثور على الهدف. يُعتبر IDDFS مثاليًا، أي أنه يجد الهدف بأقل عمق ممكن. [ 2 ] نظرًا لأنه يزور جميع العقد في شجرة البحث وصولًا إلى العمق المطلوب.د{\displaystyle d}قبل زيارة أي عقدة في العمقد+1{\displaystyle d+1}إن الترتيب التراكمي الذي تتم به زيارة العقد أولاً هو نفسه فعلياً كما هو الحال في البحث بالعرض أولاً . ومع ذلك، فإن IDDFS يستخدم ذاكرة أقل بكثير. [ 1 ]

خوارزمية للرسوم البيانية الموجهة

يوضح الكود الزائف التالي تطبيق خوارزمية البحث العمقي المحدود العمق (IDDFS) باستخدام خوارزمية البحث العمقي المحدود العمق المتكررة (DLS) للرسوم البيانية الموجهة . ولا يأخذ هذا التطبيق لخوارزمية IDDFS في الاعتبار العقد التي تمت زيارتها مسبقًا.

الدالة IDDFS ( root) مخصصة للعمق من 0 إلى ∞ . تم العثور على، المتبقي ← DLS(الجذر، العمق) إذا كانت النتيجة ≠ null ، فأرجع " تم العثور عليه"، وإلا إذا لم تكن هناك نتائج متبقية، فأرجع "null" .دالة DLS(node, depth) هي: إذا كان العمق = 0 ، فإذا كانت العقدة هدفًا ، فأرجع (node, trueوإلا فأرجع ( null , true ) (لم يتم العثور عليها، ولكن قد يكون لها أبناء).وإلا إذا كان العمق > 0 فإن أي_متبقي ← خطأ لكل ابن من أبناء العقدة نفّذ تم العثور على، المتبقي ← DLS(child, depth−1) إذا تم العثور على عقدة واحدة على الأقل، فسيتم إرجاع (تم العثور على عقدة، صحيح ). إذا كان هناك عقدة متبقية ، فسيتم إرجاع (تم العثور على عقدة واحدة على الأقل في العمق، دع IDDFS يتعمق). سيتم إرجاع ( لا شيء ، أي عقدة متبقية).

إذا عثرت خوارزمية البحث العميق (DLS) على العقدة المستهدفة ، فستعيدها خوارزمية البحث المتكامل (IDDFS) دون البحث بشكل أعمق. وإلا، إذا وُجدت عقدة واحدة على الأقل عند ذلك المستوى من العمق، فسيسمح المؤشر المتبقي لخوارزمية البحث المتكامل (IDDFS) بالاستمرار.

تُعدّ الثنائيات مفيدة كقيمة مُعادة لإشارة نظام البحث المتكامل (IDDFS) لمواصلة التعميق أو التوقف، في حال كان عمق الشجرة وانتماء الهدف غير معروفين مسبقًا . ويمكن استخدام قيم المراقبة كحل بديل لتمثيل النتائج غير الموجودة أو نتائج المستوى المتبقي .

ملكيات

تحقق خوارزمية البحث العميق أولاً (IDDFS) اكتمال البحث العرضي (عندما يكون عامل التفرع محدودًا) باستخدام كفاءة المساحة للبحث العميق أولاً. إذا وُجد حل، فستجد مسار الحل بأقل عدد من الأقواس. [ 2 ]

قد يبدو التعميق التكراري للحالات عدة مرات مضيعة للموارد. ومع ذلك، إذا استكشف نظام IDDFS شجرة بحث بعمقد{\displaystyle d}معظم الجهد الإجمالي ينصب على استكشاف الولايات بعمقد{\displaystyle d}نسبةً إلى عدد الحالات في العمقد{\displaystyle d}[ 3 ] إن تكلفة زيارة الولايات الواقعة فوق هذا العمق بشكل متكرر تكون ضئيلة دائماً.

تتمثل الميزة الرئيسية لخوارزمية البحث المتكامل أولاً (IDDFS) في البحث عن شجرة اللعبة في أن عمليات البحث المبكرة تُحسّن من فعالية الطرق الاستدلالية الشائعة الاستخدام، مثل طريقة "القاتل" الاستدلالية وتقنية تقليم ألفا-بيتا ، مما يُتيح تقديرًا أدق لقيمة مختلف العقد في البحث النهائي، ويُسرّع من إتمام البحث نظرًا لترتيبه الأمثل. على سبيل المثال، تكون تقنية تقليم ألفا-بيتا أكثر كفاءة عند البحث عن أفضل الحركات أولاً. [ 3 ]

تتمثل الميزة الثانية في سرعة استجابة الخوارزمية. لأن التكرارات المبكرة تستخدم قيمًا صغيرة لـد{\displaystyle d}فهي تُنفذ بسرعة فائقة. وهذا يسمح للخوارزمية بتقديم مؤشرات مبكرة للنتيجة على الفور تقريبًا، تليها تحسينات مع مرور الوقت.د{\displaystyle d}تزداد هذه الميزة. عند استخدامها في بيئة تفاعلية، كبرنامج لعب الشطرنج مثلاً ، تُمكّن البرنامج من اللعب في أي وقت باستخدام أفضل نقلة تم التوصل إليها في البحث الذي أنجزه حتى الآن. يمكن صياغة ذلك على أنه مع كل عمق للبحث، يتم إنتاج تقريب أفضل للحل بشكل متكرر ، على الرغم من أن العمل المنجز في كل خطوة هو عملية تكرارية. هذا غير ممكن مع البحث التقليدي في العمق أولاً، الذي لا يُنتج نتائج وسيطة.

التحليل التقاربي

تعقيد الخطة

يُصبح التعقيد الزمني لخوارزمية البحث المتكامل أولاً (IDDFS) في شجرة (متوازنة جيدًا) مماثلاً للبحث بالعرض أولاً، أييا(بد){\displaystyle O(b^{d})}، [ 1 ] : 5 حيثب{\displaystyle b}هو عامل التفرع ود{\displaystyle d}هو عمق الهدف.

دليل

في عملية بحث التعمق التكرارية، تكون العقد الموجودة في العمقد{\displaystyle d}يتم توسيعها مرة واحدة، تلك الموجودة في العمقد-1{\displaystyle d-1}يتم توسيعها مرتين، وهكذا حتى جذر شجرة البحث، الذي يتم توسيعهد+1{\displaystyle d+1}مرات. [ 1 ] : 5 لذا فإن العدد الإجمالي للتوسعات في بحث التعمق التكراري هو

بد+2بد-1+3بد-2++(د-1)ب2+دب+(د+1)=أنا=0د(د+1-أنا)بأنا{\displaystyle b^{d}+2b^{d-1}+3b^{d-2}+\cdots +(d-1)b^{2}+db+(d+1)=\sum _{i=0}^{d}(d+1-i)b^{i}}

أينبد{\displaystyle b^{d}}هو عدد التوسعات في العمقد{\displaystyle d}،2بد-1{\displaystyle 2b^{d-1}}هو عدد التوسعات في العمقد-1{\displaystyle d-1}وهكذا. الاستبعادبد{\displaystyle b^{d}}أعطِ

بد(1+2ب-1+3ب-2++(د-1)ب2-د+دب1-د+(د+1)ب-د){\displaystyle b^{d}(1+2b^{-1}+3b^{-2}+\cdots +(d-1)b^{2-d}+db^{1-d}+(d+1)b^{-d})}

والآن لنبدأx=1ب=ب-1{\displaystyle x={\frac {1}{b}}=b^{-1}}ثم لدينا

بد(1+2x+3x2++(د-1)xد-2+دxد-1+(د+1)xد){\displaystyle b^{d}(1+2x+3x^{2}+\cdots +(d-1)x^{d-2}+dx^{d-1}+(d+1)x^{d})}

هذا أقل من المتسلسلة اللانهائية

بد(1+2x+3x2+4x3+)=بد(ن=1نxن-1){\displaystyle b^{d}(1+2x+3x^{2}+4x^{3}+\cdots )=b^{d}\left(\sum _{n=1}^{\infty }nx^{n-1}\right)}

والتي تتقارب إلى

بد(1-x)-2=بد1(1-x)2{\displaystyle b^{d}(1-x)^{-2}=b^{d}{\frac {1}{(1-x)^{2}}}}، لأبs(x)<1{\displaystyle abs(x)<1}

أي أننا نمتلك

بد(1+2x+3x2++(د-1)xد-2+دxد-1+(د+1)xد)بد(1-x)-2{\displaystyle b^{d}(1+2x+3x^{2}+\cdots +(d-1)x^{d-2}+dx^{d-1}+(d+1)x^{d})\leq b^{d}(1-x)^{-2}}، لأبs(x)<1{\displaystyle abs(x)<1}

منذ(1-x)-2{\displaystyle (1-x)^{-2}}أو(1-1ب)-2{\displaystyle \left(1-{\frac {1}{b}}\right)^{-2}}ثابت مستقل عند{\displaystyle d}(العمق)، إذاب>1{\displaystyle b>1}(أي، إذا كان عامل التفرع أكبر من 1)، فإن وقت تشغيل البحث التكراري العميق أولاً هويا(بد){\displaystyle O(b^{d})}.

مثال

لب=10{\displaystyle b=10}ود=5{\displaystyle d=5}الرقم هو

أنا=05(5+1-أنا)10أنا=6+50+400+3000+20000+100000=123456{\displaystyle \sum _{i=0}^{5}(5+1-i)10^{i}=6+50+400+3000+20000+100000=123456}

بشكل عام، بحث متكرر ومتعمق من العمق1{\displaystyle 1}وصولاً إلى العمقد{\displaystyle d}يتوسع فقط حول11%{\displaystyle 11\%}عدد أكبر من العقد مقارنةً بعملية بحث واحدة بالعرض أولاً أو البحث المحدود بالعمق إلى العمقد{\displaystyle d}، متىب=10{\displaystyle b=10}[ 4 ]

كلما زاد عامل التفرع، انخفضت تكلفة توسيع الحالات بشكل متكرر، [ 1 ] : 6 ولكن حتى عندما يكون عامل التفرع 2، فإن البحث التعميقي التكراري يستغرق ضعف الوقت تقريبًا الذي يستغرقه البحث الكامل بالعرض أولاً. هذا يعني أن التعقيد الزمني للبحث التعميقي التكراري لا يزاليا(بد){\displaystyle O(b^{d})}.

تعقيد المساحة

التعقيد المكاني لخوارزمية IDDFS هويا(د){\displaystyle O(d)}، [ 1 ] : 5 حيثد{\displaystyle d}هو عمق الهدف.

دليل

بما أن خوارزمية البحث العمقي المتكامل (IDDFS) تُجري بحثًا في العمق أولًا في أي مرحلة، فإنها تحتاج فقط إلى تخزين مجموعة من العقد التي تُمثل فرع الشجرة التي تُوسعها. وبما أنها تجد حلًا بطول أمثل، فإن أقصى عمق لهذه المجموعة هود{\displaystyle d}وبالتالي فإن أقصى مساحة هييا(د){\displaystyle O(d)}.

بشكل عام، يُعد التعميق التكراري هو أسلوب البحث المفضل عندما تكون مساحة البحث كبيرة وعمق الحل غير معروف. [ 3 ]

مثال

بالنسبة للرسم البياني التالي:

سيبدأ البحث العميق أولاً من النقطة A، بافتراض أن الحواف اليسرى في الرسم البياني الموضح يتم اختيارها قبل الحواف اليمنى، وبافتراض أن البحث يتذكر العقد التي تمت زيارتها سابقًا ولن يكررها (نظرًا لأن هذا رسم بياني صغير)، وسيزور العقد بالترتيب التالي: A، B، D، F، E، C، G. تشكل الحواف التي تم اجتيازها في هذا البحث شجرة Trémaux ، وهي بنية لها تطبيقات مهمة في نظرية الرسم البياني .

إن إجراء نفس البحث دون تذكر العقد التي تمت زيارتها سابقًا يؤدي إلى زيارة العقد بالترتيب A، B، D، F، E، A، B، D، F، E، إلخ إلى الأبد، عالقًا في دورة A، B، D، F، E ولا يصل أبدًا إلى C أو G.

يمنع التعميق التكراري هذه الحلقة وسيصل إلى العقد التالية على الأعماق التالية، بافتراض أنه يسير من اليسار إلى اليمين كما هو موضح أعلاه:

  • العمق 0: أ
  • العمق 1: أ، ب، ج، هـ

(لقد تمكن التعميق التكراري الآن من رؤية C، في حين أن البحث التقليدي في العمق أولاً لم يتمكن من ذلك.)

  • العمق 2: أ، ب، د، و، ج، ز، هـ، و

(لا يزال يرى C، لكنه جاء لاحقًا. كما أنه يرى E عبر مسار مختلف، ويعود إلى F مرتين.)

  • العمق 3: أ، ب، د، و، هـ، ج، ز، هـ، و، ب

بالنسبة لهذا الرسم البياني، مع إضافة المزيد من العمق، ستصبح الدورتان "ABFE" و "AEFB" أطول ببساطة قبل أن تتخلى الخوارزمية عن المحاولة وتجرب فرعًا آخر.

على غرار التعميق التكراري، توجد استراتيجية بحث تُسمى البحث التطويلي التكراري ، تعمل بحدود متزايدة لتكلفة المسار بدلاً من حدود العمق. تُوسّع هذه الاستراتيجية العُقد بترتيب تصاعدي لتكلفة المسار؛ لذا فإن أول هدف تصادفه هو الهدف ذو أقل تكلفة مسار. إلا أن البحث التطويلي التكراري يُكبّد تكلفة إضافية كبيرة تجعله أقل فائدة من التعميق التكراري. [ 3 ]

التعمق التكراري A* هو بحث أفضل أولاً يقوم بالتعمق التكراري بناءً على قيم " f " المشابهة لتلك المحسوبة في خوارزمية A* .

IDFS ثنائي الاتجاه

لخوارزمية IDDFS نظير ثنائي الاتجاه، [ 1 ] : 6 ، حيث تُجري عمليتي بحث بالتناوب: الأولى تبدأ من عقدة المصدر وتتحرك على طول الأقواس الموجهة، والثانية تبدأ من عقدة الهدف وتتحرك على طول الأقواس الموجهة في الاتجاه المعاكس (من عقدة رأس القوس إلى عقدة ذيله). تتحقق عملية البحث أولًا من تطابق عقدة المصدر مع عقدة الهدف، وإذا كان الأمر كذلك، تُعيد المسار البسيط المكون من عقدة مصدر/هدف واحدة. وإلا، فإن عملية البحث الأمامي تُوسّع العقد الفرعية لعقدة المصدر (المجموعة ).أ{\displaystyle A}تقوم عملية البحث العكسي بتوسيع العقد الأبوية للعقدة المستهدفة (مجموعةب{\displaystyle B}ويتم التحقق مما إذاأ{\displaystyle A}وب{\displaystyle B}إذا تقاطعت المسارات، يتم العثور على أقصر مسار. وإلا، يتم زيادة عمق البحث وتُجرى نفس العملية الحسابية.

من عيوب هذه الخوارزمية أنها لا تكتشف أقصر مسار يتكون من عدد فردي من الأقواس. لنفترض أن لدينا أقصر مسارs،u،v،ت.{\displaystyle \langle s,u,v,t\rangle .}عندما يصل العمق إلى قفزتين على طول الأقواس، سيبدأ البحث الأمامي منu{\displaystyle u}لv{\displaystyle v}وسيبدأ البحث العكسي منv{\displaystyle v}لu{\displaystyle u}. من الناحية التصويرية، ستتقاطع حدود البحث، وسيتم إرجاع مسار غير مثالي يتكون من عدد زوجي من الأقواس. يوضح ذلك المخططات أدناه:

IDFS ثنائي الاتجاه

أما فيما يتعلق بتعقيد المساحة، فإن الخوارزمية تلون أعمق العقد في عملية البحث الأمامي من أجل اكتشاف وجود العقدة الوسطى حيث تلتقي عمليتا البحث.

تكمن الصعوبة الإضافية لتطبيق خوارزمية IDDFS ثنائية الاتجاه في أنه إذا كانت عقد المصدر والهدف في مكونات مختلفة ذات اتصال قوي، على سبيل المثال،sS،تتي{\displaystyle s\in S,t\in T}، إذا لم يكن هناك قوس ناشئS{\displaystyle S}والدخولتي{\displaystyle T}لن ينتهي البحث أبداً.

تعقيدات الزمان والمكان

يُعطى زمن تشغيل IDDFS ثنائي الاتجاه بواسطة

2ك=0ن/2بك{\displaystyle 2\sum _{k=0}^{n/2}b^{k}}

ويُعطى تعقيد المساحة بواسطة

بن/2،{\displaystyle b^{n/2},}

أينن{\displaystyle n}عدد العقد في أقصرs،ت{\displaystyle s,t}-المسار. بما أن تعقيد وقت التشغيل للبحث العميق التكراري هوك=0نبك{\displaystyle \sum _{k=0}^{n}b^{k}}، يكون التسارع تقريبًا

ك=0نبك2ك=0ن/2بك=1-بن+11-ب21-بن/2+11-ب=1-بن+12(1-بن/2+1)=بن+1-12(بن/2+1-1)بن+12بن/2+1=Θ(بن/2).{\displaystyle {\frac {\sum _{k=0}^{n}b^{k}}{2\sum _{k=0}^{n/2}b^{k}}}={\frac {\frac {1-b^{n+1}}{1-b}}{2{\frac {1-b^{n/2+1}}{1-b}}}}={\frac {1-b^{n+1}}{2(1-b^{n/2+1})}}={\frac {b^{n+1}-1}{2(b^{n/2+1}-1)}}\approx {\frac {b^{n+1}}{2b^{n/2+1}}}=\Theta (b^{n/2}).}

الشفرة الزائفة

دالة Find-Shortest-Path(s, t) هي: إذا كان s = t، فأرجع <s> ( B , F , Vf , Vb ) : = (مكدس فارغ،  ,  ,  ) ( Δ , lf , lb ) := (0, 0, 0) كرر (F, Vf ) := (  ,  )إذا كانت قيمة |V f | تساوي l f ، فسيتم إرجاع قيمة فارغة (l f , V b ) : = (|V f |, ) μ := Depth-Limited-Search-Backward(t, Δ , B, F, V b ) إذا كانت μ{\displaystyle \neq }إذا كانت القيمة nil، فقم بإرجاع Build-Path(s, μ , B, G) V b := μ := Depth-Limited-Search-Backward(t, Δ + 1, B, F, V b ) if μ{\displaystyle \neq }nil ثم قم بإرجاع Build-Path(s, μ , B, G) إذا |B b | = l b ثم يُرجع nil (l b , Δ ) := (|V b |, Δ + 1)
دالة Build-Path(s, μ , B) هي π := Find-Shortest-Path(s, μ ) (تحسب بشكل متكرر المسار إلى عقدة الترحيل) بوب (ب) إرجاع π{\displaystyle \circ }ب (أضف المجموعة بدءًا من أعلاها.)
دالة البحث الأمامي المحدود العمق (u, Δ , F, V) هي: إذا كان u  V ، فأرجع V := V  {u}، وإذا كان Δ = 0 ، فأرجع F := F  {u} (ضع علامة على u كعقدة حدودية). ثم لكل ابن من أبناء u ، نفّذ دالة البحث الأمامي المحدود العمق (الابن، Δ − 1، F، V).
الدالة Depth-Limited-Search-Backward(u, Δ , B, F, V) هي: إذا كان u  V ، فأرجع nil Push(B, u) إذا كانت Δ = 0، فإذا كانت u  F ، فأرجع u ( تم الوصول إلى العقدة المحددة، استخدمها كعقدة ترحيل). بوب (ب) أرجع قيمة فارغة. V := V  {u} لكل عنصر أب لـ u ، قم بما يلي : μ := البحث العكسي المحدود العمق(العنصر الأب، Δ − 1، B، F، V) إذا كان μ{\displaystyle \neq }ثم أعد μ إذا كانت القيمة nil بوب (ب) إرجاع قيمة فارغة

مراجع

  1. 1 2 3 4 5 6 7 8 كورف، ريتشارد (1985). "البحث التكراري العميق أولاً: بحث شجري مقبول أمثل". الذكاء الاصطناعي . 27 : 97-109 . doi : 10.1016/0004-3702(85)90084-0 . S2CID 10956233 . 
  2. 1 2 ديفيد بول؛ آلان ماكوورث. "3.5.3 التعميق التكراري ‣ الفصل 3 البحث عن الحلول ‣ الذكاء الاصطناعي: أسس العوامل الحسابية، الطبعة الثانية" . artint.info . تم ​​الاطلاع عليه بتاريخ 29 نوفمبر 2018 .
  3. 1 2 3 4 راسل، ستيوارت جيهنورفيج، بيتر (2003)، الذكاء الاصطناعي: منهج حديث ( الطبعة الثانية)، أبر سادل ريفر، نيو جيرسي: برنتيس هول، ISBN  0-13-790395-2
  4. راسل؛ نورفيج (1994). الذكاء الاصطناعي: منهج حديث .