خوارزمية البحث (Graph Search) في الرسم البياني Java

تعد خوارزمية Graph Search تقنية أساسية في Java البرمجة تستخدم للبحث عن القمم أو الحواف داخل الرسم البياني. الرسم البياني عبارة عن مجموعة من القمم المتصلة بحواف. غالبًا ما يتم تطبيق هذه الخوارزمية على مشكلات مثل العثور على أقصر مسار، والبحث عن الاتصالات بين العناصر، وتحليل الشبكات.

كيف تعمل خوارزمية بحث الرسم البياني

تشتمل خوارزمية بحث الرسم البياني على طرق مختلفة، مثل البحث بالعرض أولًا(BFS) والبحث بالعمق أولًا(DFS). تتضمن كلتا الطريقتين اجتياز القمم والحواف داخل الرسم البياني للعثور على الهدف أو الحالة المطلوبة.

  • يجتاز بحث العرض الأول(BFS) قمة الجذر أولاً ثم يستكشف القمم المجاورة قبل الانتقال إلى القمم الأبعد.
  • يستكشف بحث العمق الأول(DFS) كل قمة ويقوم بإجراء بحث العمق أولاً حتى يتم العثور على الوجهة أو يتعذر إجراء المزيد من الاستكشاف.

مزايا وعيوب خوارزمية بحث الرسم البياني

مزايا:

  • البحث عن الاتصالات: تساعد هذه الخوارزمية في تحديد الاتصالات بين القمم في الرسم البياني، وهو أمر مفيد للعثور على أقصر المسارات أو العلاقات بين العناصر.
  • إمكانية البحث السريع: اعتمادًا على بنية الرسم البياني، يمكن للخوارزمية البحث بسرعة عن الهدف.

سلبيات:

  • عرضة للضياع: في حالات الرسوم البيانية الكبيرة والمعقدة، قد تصبح الخوارزمية مفقودة أو مشوشة، مما يؤدي إلى عمليات بحث تستغرق وقتًا طويلاً.

المثال والشرح

قم بتوضيح خوارزمية بحث الرسم البياني باستخدام Java مثال يستخدم طريقة البحث عن العرض الأول(BFS) للعثور على أقصر مسار بين القمم في الرسم البياني.

import java.util.*;  
  
public class GraphSearchExample {  
    // Class implementation of the graph and BFS here...  
}  
  
public static void main(String[] args) {  
    Graph g = new Graph(4);  
    g.addEdge(0, 1);  
    g.addEdge(0, 2);  
    g.addEdge(1, 2);  
    g.addEdge(2, 0);  
    g.addEdge(2, 3);  
    g.addEdge(3, 3);  
  
    System.out.println("BFS search from vertex 2:");  
    g.BFS(2);  
}  

في هذا المثال، نقوم بإنشاء رسم بياني ونستخدم طريقة البحث بالعرض أولاً(BFS) للبحث عن القمم المتصلة من الرأس 2. وستكون النتيجة سلسلة من القمم التي يتم اجتيازها بطريقة العرض أولاً من الرأس 2. وهذا أمر أساسي طريقة البحث داخل الرسم البياني باستخدام خوارزمية بحث الرسم البياني في Java.