يخبر مثال هذه المقالة طريقة استخدام Java لاستخدام اجتياز أولوية العرض (BFS) لحساب المسار الأقصر. شاركه للجميع للرجوع إليه. التحليل المحدد هو كما يلي:
نستخدم سلاسل لتمثيل رؤوس الرسم البياني التمثيلي (Vertax) لمحاكاة الفصول الدراسية والمربع والمرحاض والمرحاض والبوابة الجنوبية والبوابة الشمالية في المدرسة ، ثم حساب أقصر مسار بين أي نقطتين.
كما هو مبين في الشكل أدناه:
على سبيل المثال ، أريد الانتقال من North Gate إلى Cateen ، يجب أن تكون نتيجة إخراج البرنامج:
BFS: من [البوابة الشمالية] إلى [المقصف]: North Gatesquarecanteen
أولاً ، حدد خوارزمية واجهة الخوارزمية:
خوارزمية الواجهة العامة { / *** تنفيذ خوارزمية* / voidثم خريطة التعريف:
/*** (غير مقاومة) الشكل*/الرسم البياني للطبقة العامة {// نقطة انطلاق السلسلة الخاصة Firstverax ؛ خوارزمية خوارزمية خوارزمية ؛ من نقطة البداية إلى {code vertex} أقصر مسار * param vertex * regurn */ public stack <String> findPathto (string vertex) {stack> stack = new stack <() ؛ Vertex) ؛ .push (firstvertax) ؛ إضافة (Tovertex) ؛ ) ؛} الخريطة العامة <سلسلة ، قائمة <string>> getAdj () {return adj ؛}}هنا نستخدم وضع التصميم الاستراتيجي لفصل الخوارزمية عن فئة الرسم البياني.
الرسم البياني العام (خوارزمية الخوارزمية) {this.algorithm = خوارزمية ؛}بنية التخزين للرسوم البيانية غير المقيدة هي جدول مجاور.
// الجدول الإداري الخريطة الخاصة <string ، قائمة <Tring>> adj = new HashMap <> () ؛
ثم ، تنفيذ BFS لواجهة الخوارزمية:
/*** حزمة BFS خوارزمية*/فئة عامة تنفذ الخوارزمية {// احفظ مكان القائمة الخاصة <String> VisterTertex ؛ SourceVertex) {if (null == visiteddvertex) {visitedvertex = new ArrayList <> () ؛} if (null == path) {path = new hashmap <> () ؛} fs (g ، sourcevertex) ؛ MAP <String> getPath () {return path ؛} bfs private (GRAPH G ، String SourceVertex) IST <> () ؛ Queue.Add (المصدر) ؛ ) ؛من بينها ، المسار هو نوع الخريطة ، مما يعني مسار من القيمة إلى المفتاح.
وصف خوارزمية BFS:
1. حدد نقطة البداية باعتبارها الوصول إلى قائمة الانتظار.
2. خذ قمة من قائمة الانتظار للحصول على جميع القمم التي تتواصل مع قمة الرأس.
3. اجتياز هذه القمم ، حدد أولاً ما إذا كان قد تم الوصول إلى قمة الرأس.
4. كرر 2 و 3 حتى يصبح قائمة الانتظار فارغة.
أمثلة اختبار:
String [] Vertex = {"Gate North" ، "Sound Gate" ، "Classroom" ، "Square" ، "Classroom" ) ، New Edge ("North Gate" ، "Square") ، New Edge ("Classroom" ، "Evalet") ، New Edge ("Square" ، "Evalet") ، New Edge ("Squrare" ، "Canteen" ) ، New Edge ("Evalet" ، "South Gate") ، New Edge ("Evalet" ، "South Gate") ،} ؛ G) ؛ ؛؛! result.isatic ()من المأمول أن يكون هذا المقال مفيدًا لتصميم برنامج Java للجميع.